var runMeOnLoadFirst = Array();
var runMeOnLoadLast = Array();

var fcount = -1;
var lcount = -1;

var runMeOnUnLoadFirst = Array();
var runMeOnUnLoadLast = Array();

var ufcount = -1;
var ulcount = -1;

var agt = navigator.userAgent.toLowerCase();
var browserVersion = 0;
var isWin = 0;
var isIE = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
var isNav = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                    && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                    && (agt.indexOf('webtv')==-1) && (agt.indexOf('hotjava')==-1));
var isOpera = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") != -1));
var isNavMac = false;
var hasJavaScript = true;

var isMozillaCompatible = (agt.indexOf('mozilla')!=-1);

var skip_home_page = 1;

var hasJava = isJavaAvailable();

var hasCookies = checkForCookies();

// causes problems in ie 4
//var hasActiveX = checkForActiveX();

if (isIE) {
        var re = /msie ([^;]*);/;
        var matches = re.exec(agt);
        if (matches != null)
            browserVersion = parseFloat(matches[1]);
} else if (isOpera) {
        var re = /opera ([^ ]*) /;
        var matches = re.exec(agt);
        if (matches != null)
            browserVersion = parseFloat(matches[1]);
} else {
        browserVersion = parseFloat(navigator.appVersion);
}

if (isNav && browserVersion >= 5)
    {
        var re = /netscape6\/([\d\.]*)/;
        var matches = re.exec(agt);
        if (matches != null)
            browserVersion = parseFloat(matches[1]);
        else
            browserVersion = 6;
    }

    if (isNav && navigator.platform.substring(0,1) == "M")
    {
        isNav = false;
        isNavMac = true;
    }

isWin = (navigator.appVersion.indexOf("Windows") != -1);

function isJavaAvailable() {
	if (isIE) {
		var hasJava = (navigator.javaEnabled());
	} else {
		var hasJava = (navigator.javaEnabled && navigator.javaEnabled());
	}

	return (hasJava);
}

function checkForActiveX() {
	var hasActiveX = false;
	if (isIE) {
		hasActiveX = true;
		eval("try {var xmlHttp = new ActiveXObject(\"Microsoft.XMLHTTP\");} catch(e){ hasActiveX = false; }");
	}
	return hasActiveX;
}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0)
			return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

function setCookie(name, value, seconds) {
	// fourth argument of domain can be passed if necessary

	var today = new Date();
	var expires = null;
	var domain = null;

	if (arguments.length > 3) {
		domain = arguments[3];
		var first_letter = domain.substr(0,1);
		if (first_letter != ".") {
			domain = "." + domain;
		}
	}

	if (typeof(seconds) != "undefined") {
		expires = new Date();
		expires.setTime(today.getTime() + (seconds * 1000));
	}
	thisCookie = name + "=" + escape(value) + "; path=/"
		+ ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((domain == null) ? "" : ("; domain=" + domain));
	document.cookie = thisCookie;
}

function checkForCookies() {
	var bHasCookies = false;

	setCookie('temp_test_cookies', '1', 3600);
	var cookie_val = getCookie('temp_test_cookies');

	if (cookie_val == '1') {
	    bHasCookies = true;
	}
	return bHasCookies;
}

function setRunMeFirst(function_ref) {
	fcount++;
	runMeOnLoadFirst[fcount] = function_ref;
}

function setRunMeLast(function_ref) {
	lcount++;
	runMeOnLoadLast[lcount] = function_ref;
}

function setRunMeOnUnloadFirst(function_ref) {
	ufcount++;
	runMeOnUnLoadFirst[ufcount] = function_ref;
}

function setRunMeOnUnloadLast(function_ref) {
	ulcount++;
	runMeOnUnLoadLast[ulcount] = function_ref;
}

function runMeOnLoad() {
	for (i=0;i<runMeOnLoadFirst.length;i++) {
		runMeOnLoadFirst[i]();
	}
	for (i=0;i<runMeOnLoadLast.length;i++) {
		runMeOnLoadLast[i]();
	}
}
window.onload = runMeOnLoad;

function runMeOnUnLoad() {
	for (i=0;i<runMeOnUnLoadFirst.length;i++) {
		runMeOnUnLoadFirst[i]();
	}
	for (i=0;i<runMeOnUnLoadLast.length;i++) {
		runMeOnUnLoadLast[i]();
	}
}
window.onunload = runMeOnUnLoad;
