
var BrowserDetect = {init:function () {
	this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
	this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version";
	this.OS = this.searchString(this.dataOS) || "an unknown OS";
}, searchString:function (data) {
	for (var i = 0; i < data.length; i++) {
		var dataString = data[i].string;
		var dataProp = data[i].prop;
		this.versionSearchString = data[i].versionSearch || data[i].identity;
		if (dataString) {
			if (dataString.indexOf(data[i].subString) != -1) {
				return data[i].identity;
			}
		} else {
			if (dataProp) {
				return data[i].identity;
			}
		}
	}
}, searchVersion:function (dataString) {
	var index = dataString.indexOf(this.versionSearchString);
	if (index == -1) {
		return;
	}
	return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
}, dataBrowser:[{string:navigator.userAgent, subString:"OmniWeb", versionSearch:"OmniWeb/", identity:"OmniWeb"}, {string:navigator.vendor, subString:"Apple", identity:"Safari"}, {prop:window.opera, identity:"Opera"}, {string:navigator.vendor, subString:"iCab", identity:"iCab"}, {string:navigator.vendor, subString:"KDE", identity:"Konqueror"}, {string:navigator.userAgent, subString:"Firefox", identity:"Firefox"}, {string:navigator.vendor, subString:"Camino", identity:"Camino"}, {string:navigator.userAgent, subString:"Netscape", identity:"Netscape"}, {string:navigator.userAgent, subString:"MSIE", identity:"Internet Explorer", versionSearch:"MSIE"}, {string:navigator.userAgent, subString:"Gecko", identity:"Mozilla", versionSearch:"rv"}, {string:navigator.userAgent, subString:"Mozilla", identity:"Netscape", versionSearch:"Mozilla"}], dataOS:[{string:navigator.platform, subString:"Win", identity:"Windows"}, {string:navigator.platform, subString:"Mac", identity:"Mac"}, {string:navigator.platform, subString:"Linux", identity:"Linux"}]};
function trim(str) {
	if (str == null) {
		str = "";
	}
	while (str.substr(0, 1) == " ") {
		str = str.substr(1, 100);
	}
	while (str.substr(str.length - 1, 1) == " ") {
		str = str.substr(0, str.length - 1);
	}
	return str;
}

// set disableFlag = true to disable entire form
function DisableEnableForm(aForm, disableFlag) {
	objElems = aForm.elements;
	for (i = 0; i < objElems.length; i++) {
		objElems[i].disabled = disableFlag;
	}
}
function disableSubmit(frm) {
	var inputs = frm.getElementsByTagName("INPUT");

        // Use a decremental loop because the submit
        // button is typically at the end of the form
	for (var i = inputs.length - 1; i > -1; i--) {
		var elem = inputs[i];
		if (elem.type == "submit") {
			var btn = document.createElement("button");
			btn.disabled = true;
			btn.innerHTML = "Please Wait...";
			elem.parentNode.insertBefore(btn, elem);
			elem.style.display = "none";
		}
	}
		// submit the form
	return true;
}
function selectOption(sel, val) {
	var opts = sel.options;
	for (var i = 0; i < opts.length; i++) {
		if (opts[i].value == val) {
			opts[i].selected = true;
		}
	}
}
function notEmpty(elem, label) {
	var str = elem.value;
	if (str.length == 0) {
		alert("Please enter a valid value for " + label + ".");
		return false;
	} else {
		return true;
	}
}
function isNumber(x) {
	return parseInt(x, 10) == x;
}
function isNumber(x, label) {
	if (parseInt(x, 10) == x) {
		return true;
	} else {
		alert("Please enter a valid value for " + label + ".");
		return false;
	}
}
function isFloat(x, label) {
	if (parseFloat(x, 10) == x) {
		if (x >= 0) {
			return true;
		}
	}
	alert("Please enter a valid value for " + label + ".");
	return false;
}
function isNumber(x, label, blanksAllowed) {
	if (blanksAllowed && isEmpty(x)) {
		return true;
	}
	if (parseInt(trim(x), 10) == x) {
		return true;
	}
	alert("Please enter a valid value for " + label + ".");
	return false;
}
function toggle_visibility(id) {
	var e = document.getElementById(id);
	if (e.style.display == "none") {
		e.style.display = "block";
	} else {
		e.style.display = "none";
	}
}
function jsEscapeString(s) {
	s = s.replace(/\r\n|\r/g, "\n");
	s = s.replace(/\\/g, "\\\\");
	s = s.replace(/'/g, "\\'");
	s = s.replace(/\n/g, "\\n");
//return ''' + s + ''';
	return s;
}
function toggleCheckAll(aForm, prefix, state) {
	objElems = aForm.elements;
	for (i = 0; i < objElems.length; i++) {
		if ((objElems[i].type == "checkbox") && ((objElems[i].name.indexOf(prefix) == 0) || (objElems[i].id.indexOf(prefix) == 0))) {
			objElems[i].checked = state;
		}
	}
}
function formatFloat(value, decs) {
	var m = Math.pow(10, decs);
	return parseInt(value * m, 10) / m;
}
function formatMoney(value) {
	num = formatFloat(value, 2);
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100 + 0.50000000001);
	cents = num % 100;
	num = Math.floor(num / 100).toString();
	if (cents < 10) {
		cents = "0" + cents;
	}
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++) {
		num = num.substring(0, num.length - (4 * i + 3)) + "," + num.substring(num.length - (4 * i + 3));
	}
	return (((sign) ? "" : "-") + num + "." + cents);
}

// correctly handle PNG transparency in Win IE 5.5 & 6.
function correctPNG() {
	var arVersion = navigator.appVersion.split("MSIE");
	var version = parseFloat(arVersion[1]);
	if ((version >= 5.5) && (document.body.filters)) {
		for (var i = 0; i < document.images.length; i++) {
			var img = document.images[i];
			var imgName = img.src.toUpperCase();
			if (imgName.substring(imgName.length - 3, imgName.length) == "PNG") {
				var imgID = (img.id) ? "id='" + img.id + "' " : "";
				var imgClass = (img.className) ? "class='" + img.className + "' " : "";
				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
				var imgStyle = "display:inline-block;" + img.style.cssText;
				if (img.align == "left") {
					imgStyle = "float:left;" + imgStyle;
				}
				if (img.align == "right") {
					imgStyle = "float:right;" + imgStyle;
				}
				if (img.parentElement.href) {
					imgStyle = "cursor:hand;" + imgStyle;
				}
				var strNewHTML = "<span " + imgID + imgClass + imgTitle + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";" + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader" + "(src='" + img.src + "', sizingMethod='scale');\"></span>";
				img.outerHTML = strNewHTML;
				i = i - 1;
			}
		}
	}
}
window.attachEvent("onload", correctPNG);
function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else {
		var expires = "";
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(";");
	for (var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == " ") {
			c = c.substring(1, c.length);
		}
		if (c.indexOf(nameEQ) == 0) {
			return c.substring(nameEQ.length, c.length);
		}
	}
	return null;
}

