
/* UserAgent Information */

var theNavUA = navigator.userAgent.toLowerCase();

/* Detect OS */
if (theNavUA.indexOf('windows') > -1 || theNavUA.indexOf('win') > -1) {
	var os = 'Microsoft Windows';
	if (theNavUA.indexOf('windows xp') > -1 || theNavUA.indexOf('win xp') > -1 || theNavUA.indexOf('nt 5.1') > -1) {
		var os_ver = 'XP';
	} else if (theNavUA.indexOf('windows 2000') > -1 || theNavUA.indexOf('win 2000') > -1 || theNavUA.indexOf('nt 5.0') > -1) {
		var os_ver = '2000';
	} else if (theNavUA.indexOf('windows me') > -1 || theNavUA.indexOf('win 9x 4.90') > -1) {
		var os_ver = 'ME';
	} else if (theNavUA.indexOf('windows 98') > -1 || theNavUA.indexOf('win 98') > -1) {
		var os_ver = '98';
	} else if (theNavUA.indexOf('windows 95') > -1 || theNavUA.indexOf('win 95') > -1) {
		var os_ver = '95';
	} else if (theNavUA.indexOf('windows ce') > -1 || theNavUA.indexOf('win ce') > -1 || theNavUA.indexOf('windowsce') > -1 || theNavUA.indexOf('wince') > -1) {
		var os_ver = 'CE';
	}
} else if (theNavUA.indexOf('linux') > -1) {
	var os = 'Linux';
} else if (theNavUA.indexOf('mac os x') > -1) {
	var os = 'Mac OS X';
} else if (theNavUA.indexOf('free bsd') > -1) {
	var os = 'Free BSD';
} else if (theNavUA.indexOf('sun os') > -1) {
	var os = 'Sun OS';
} else if (theNavUA.indexOf('irix') > -1) {
	var os = 'Irix';
} else if (theNavUA.indexOf('open bsd') > -1) {
	var os = 'Open BSD';
} else if (theNavUA.indexOf('macintosh') > -1 || theNavUA.indexOf('powerpc') > -1) {
	var os = 'Mac Classic';
} else if (theNavUA.indexOf('openvms') > -1) {
	var os = 'Open VMS';
} else if (theNavUA.indexOf('amigaos') > -1) {
	var os = 'Amiga';
} else if (theNavUA.indexOf('hurd') > -1) {
	var os = 'Hurd';
} else if (theNavUA.indexOf('hp-ux') > -1) {
	var os = 'HP-UX';
} else if (theNavUA.indexOf('unix') > -1 || theNavUA.indexOf('x11') > -1) {
	var os = 'UNIX';
} else if (theNavUA.indexOf('cygwin') > -1) {
	var os = 'Cygwin';
} else if (theNavUA.indexOf('java') > -1) {
	var os = 'Java';
} else if (theNavUA.indexOf('palmos') > -1) {
	var os = 'Palm OS';
} else if (theNavUA.indexOf('symbian') > -1) {
	var os = 'Symbian';
}

/* Simplified ID variables */
var isWin = (os == 'Microsoft Windows') ? true : false;
var isMac = (os == 'Mac OS X' || os == 'Mac Classic') ? true : false;
var isLinux = (os == 'Linux') ? true : false;
var isUNIX = (os == 'UNIX') ? true : false;

var isDOM1 = (document.getElementById) ? true : false;
var isDOM2 = (document.addEventListener && document.removeEventListener) ? true : false;
var isOp = (theNavUA.indexOf("opera") > -1) ? true : false;
var isOp5 = (theNavUA.indexOf("opera 5") > -1 || theNavUA.indexOf("opera/5") > -1) ? true : false;
var isOp6 = (theNavUA.indexOf("opera 6") > -1 || theNavUA.indexOf("opera/6") > -1) ? true : false;
var isOp7 = (theNavUA.indexOf("opera 7") > -1 || theNavUA.indexOf("opera/7") > -1) ? true : false;
var isIE = (theNavUA.indexOf("msie") > -1 && !isOp) ? true : false;
var isIE5 = (theNavUA.indexOf("msie 5") > -1 && !isOp) ? true : false;
var isIE50 = (theNavUA.indexOf("msie 5.0") > -1 && !isOp) ? true : false;
var isIE52 = (theNavUA.indexOf("msie 5.2") > -1 && !isOp) ? true : false;
var isIE6 = (theNavUA.indexOf("msie 6" && !isOp) > -1) ? true : false;
var isFFox = (theNavUA.indexOf("firefox") > -1) ? true : false;
var isFFox08 = (theNavUA.indexOf("firefox/0.8") > -1) ? true : false;
var isFFox09 = (theNavUA.indexOf("firefox/0.9") > -1) ? true : false;
var isFFox010 = (theNavUA.indexOf("firefox/0.10") > -1) ? true : false;

var isNN6 = (theNavUA.indexOf("Netscape6") > -1) ? true : false;
var isNN7 = (theNavUA.indexOf("Netscape7") > -1) ? true : false;

/* Still to be completed MR */


function findObj(n, d) {
	var p, i, x;
	if (!d) {
		d = document;
	}
	if ((p = n.indexOf('?')) > 0 && parent.frames.length) {
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0, p);
	}
	if (!(x = d[n]) && d.all) {
		x = d.all[n];
	}
	for (i = 0; !x && i < d.forms.length; i++) {
		x = d.forms[i][n];
	}
	for (i = 0; !x && d.layers && i < d.layers.length; i++) {
		x = findObj(n, d.layers[i].document);
	}
	if (!x && d.getElementById) {
		x = d.getElementById(n);
	}
	return x;
} /* end function findObj */


function regExpTest(pat, str) {
	var regExpSupported = false;
	if (window.RegExp) {
		var tmpStr = 'a';
		var tmpReg = new RegExp(tmpStr);
		if (tmpReg.test(tmpStr)) {
			regExpSupported = true;
		}
	}
	if (regExpSupported) {
		var ret = new RegExp(pat);
		return (!ret.test(str));
	}
}


/* this function is needed to work around 
   a bug in IE related to element attributes */
function hasClass(obj) {
	var result = false;
	if (obj.getAttributeNode('class') != null) {
		result = obj.getAttributeNode('class').value;
	}
	return result;
} /* function hasClass ends */

/* this function adds 'Zebra' effect to table */
function stripeTable(id) {
	if (document.getElementById) {
		var even = false;
		var evenColor = arguments[1] ? arguments[1] : '#fff';
		var oddColor = arguments[2] ? arguments[2] : '#eee';
		var table = document.getElementById(id);
		if (!table)	{
			return;
		}
		var tbodies = table.getElementsByTagName('tbody');
		for (var h = 0; h < tbodies.length; h++) {
			var trs = tbodies[h].getElementsByTagName('tr');
			for (var i = 0; i < trs.length; i++) {
				if (!hasClass(trs[i]) && !trs[i].style.backgroundColor) {
					var tds = trs[i].getElementsByTagName('td');
					for (var j = 0; j < tds.length; j++) {
						var mytd = tds[j];
						if (!hasClass(mytd) && !mytd.style.backgroundColor) {
							mytd.style.backgroundColor = even ? evenColor : oddColor;
						}
					}
				}
				even =  !even;
			}
		}
	}
} /* function stripeTable ends */


/**************************************************************************
 * Set external links in open in new window (standards compliant)
 * Makes use of "rel" attribute.
 * e.g. <a href="" title="" rel="external"></a>
 */
function setExtLinkTarget() {
	if (document.getElementsByTagName) {
		var anchors = document.getElementsByTagName('a');
		for (var i = 0; i < anchors.length; i++) {
			var anchor = anchors[i];
			if (anchor.getAttribute('href') && anchor.getAttribute('rel') == 'external') {
				anchor.target = '_blank';
			}
		}
	}
}



function detectPlugin(pluginName, pluginMimeType, pluginActiveXName) {
	var r = new Array(false, false);
	if (!isIE) {
		if (navigator.plugins && navigator.plugins.length > 0) {
			for (i = 0; i < navigator.plugins.length; i++) {
				var x = navigator.plugins[i];
				if (x.name.indexOf(pluginName) > -1) {
					r[0] = true;
					if (x.description) {
						y = x.description;
						try {
							r[1] = y.match(/(\d+(\.?\d*)*)/)[1];
						} catch (e) { }
						try {
							r[1] = x.name.match(/(\w?\d+(\.?\d*)*)/)[1];
						} catch (e) { }
						return r;
					}
				}
			}
		} else if (navigator.mimeTypes) {
			var x = navigator.mimeTypes[pluginMimeType];
			if (x && x.enabledPlugin) {
				r[0] = true;
				return r;
			}
		}
	} else {
		for (var i = 10; i > 0; i--) {
			try {
				var x = new ActiveXObject(pluginActiveXName+'.'+i);
				r[1] = i;
				break;
			} catch (e) { }
		}
		if (r[1] > 0) {
			r[0] = true;
			return r;
		}
	}
	return false;
}


/**************************************************************************
 * Browser sniffer (in progress - not used yet)
 */
function getBrowser(obj) {
	var rt = new Array('unknown', 'unknown', 'unknown', 'unknown');
	theNav = ((obj == null || obj == '') ? navigator.userAgent.toLowerCase() : obj);

	if (theNav.search(/myie2/) != -1) {
		rt[0] = 'myie2';
		rt[2] = 'msie';
		rt[3] = theNav.match(/msie\s(\d+(\.?\d)*)/)[1];
		return rt;
	} else if (theNav.search(/msn\s(\d+(\.?\d)*)/) != -1) {
		rt[0] = 'msn';
		rt[1] = theNav.match(/msn\s(\d+(\.?\d)*)/)[1];
		rt[2] = 'msie';
		rt[3] = theNav.match(/msie\s(\d+(\.?\d)*)/)[1];
		return rt;
	} else if (theNav.search(/msie\s(\d+(\.?\d)*)/) != -1) {
		rt[0] = 'msie';
		rt[1] = theNav.match(/msie\s(\d+(\.?\d)*)/)[1];
		rt[2] = 'msie';
		rt[3] = rt[1];
		return rt;
	} else if (theNav.search(/firefox[\/\s](\d+([\.-]\d)*)/) != -1) {
		rt[0] = 'firefox';
		rt[1] = theNav.match(/firefox[\/\s](\d+([\.-]\d)*)/)[1];
		rt[2] = 'gecko';
		rt[3] = theNav.match(/gecko\/([0-9]+)/)[1];
		return rt;
	} else if (theNav.search(/opera[\/\s](\d+(\.?\d)*)/) != -1) {
		rt[0] = 'opera';
		rt[1] = theNav.match(/opera[\/\s](\d+(\.?\d)*)/)[1];
		rt[2] = 'opera';
		rt[3] = rt[1];
		return rt;
	} else if (theNav.search(/konqueror[\/\s](\d+([\.-]\d)*)/) != -1) {
		rt[0] = 'konqueror';
		rt[1] = theNav.match(/konqueror[\/\s](\d+([\.-]\d)*)/)[1];
		rt[2] = 'khtml';
		return rt;
	} else if (theNav.search(/safari\/(\d)*/) != -1) {
		rt[0] = 'safari';
		rt[1] = theNav.match(/safari\/(\d+(\.?\d*)*)/)[1];
		rt[2] = 'khtml';
		rt[3] = theNav.match(/applewebkit\/(\d+(\.?\d*)*)/)[1];
		return rt;
	} else if (theNav.search(/omniweb[\/\s]v?(\d+([\.-]\d)*)/) != -1) {
		rt[0] = 'omniweb';
		rt[1] = theNav.match(/omniweb[\/\s]v?(\d+([\.-]\d)*)/)[1];
		(rt[1] > 4.5 ? rt[2] = 'khtml' : rt[2] = 'omniweb');
		(theNav.search(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/) == -1 ? rt[3] = theNav.match(/omniweb[\/\s](\d+([\.-]\d)*)/)[1] : rt[3] = theNav.match(/omniweb[\/\s]((\d+([\.-]\d)*)-)?v(\d+([\.-]\d)*)/)[4]);
		return rt;
	} else {
		rt[0] = 'unknown';
		return rt;
	}
}


