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: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			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"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			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"
		}
	]

};
BrowserDetect.init();


function checkRequired(value, msg){
	if (value == ''){
		alert(msg);
		return false;
	}
	return true;
}

function checkInteger(value, msg){
	if(!isInteger(value)){
		alert(msg);
		return false;
	}
	return true;
}

function setFormAction(form, action){
	form.formAction.value = action;
}

function changeLanguageWithPrevAction(form, lang){
	setPrevAction(form,'chgLang_');
	changeLanguage(form, lang);
}

function changeLanguage(form, lang){
//alert(form.formAction.value.match('chgLang_'));
	
	setFormAction(form, 'chgLang_'+lang);
	//form.lan.value = lang;
	form.submit();
}

function setPrevAction(form, ignoreAction){
//alert(form.formAction.value.match(ignoreAction));
	if (form.formAction.value.match(ignoreAction) == null){
		form.prevAction.value = form.formAction.value;
	}
}

function confirmMsg(form, msg){
	if(confirm(msg)){
		form.prevAction.value = form.formAction.value;
		form.formAction.value = 'cancel';
		return true;
	}else{
		return false;
	}
}

var currentID;

function alertDiv(elementID, msgWidth, msgHeight, msgContent){

	idDiv = document.getElementById("alertDiv");
	currentID = elementID;
	
	
	
	var winW = 0, winH = 0;

	//if (parseInt(navigator.appVersion)>3) {
	 if (navigator.appName=="Netscape") {
	  winW = window.innerWidth;
	  winH = window.innerHeight;
	  //alert('parseInt(navigator.appVersion)>3:'+winH);
	 }
	 //if (navigator.appName.indexOf("Microsoft")!=-1) {
	 if(BrowserDetect.browser == "Explorer" || BrowserDetect.browser == "Firefox"){
	  winW = document.body.offsetWidth;
	  winH = document.body.scrollHeight;
	  //alert('navigator.appName.indexOf("Microsoft")!=-1:'+winH);
	 }
	//}

	 var viewportwidth;
	 var viewportheight;
	 
	 // the more standards compliant browsers (mozilla/netscape/opera/IE7) use window.innerWidth and window.innerHeight
	 
	 if (typeof window.innerWidth != 'undefined')
	 {
		  viewportwidth = window.innerWidth,
		  viewportheight = window.innerHeight
	 }
	 
	// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
	
	 else if (typeof document.documentElement != 'undefined'
		 && typeof document.documentElement.clientWidth !=
		 'undefined' && document.documentElement.clientWidth != 0)
	 {
		   viewportwidth = document.documentElement.clientWidth,
		   viewportheight = document.documentElement.clientHeight
	 }
	 
	 // older versions of IE
	 
	 else
	 {
		   viewportwidth = document.getElementsByTagName('body')[0].clientWidth,
		   viewportheight = document.getElementsByTagName('body')[0].clientHeight
	 }


	 if (winH < viewportheight){
		winH = viewportheight;
	 }
	 
	 
	//alert(viewportwidth+","+viewportheight);
	
	idDiv.style.width = screen.width + "px";
	idDiv.style.height = winH + "px";
	
	idDiv.style.visibility = "visible";
	
	
	var offsetX = 0;
	var offsetY = 0;
	
	if(!window.pageYOffset)
	{
		//strict mode
		if(!(document.documentElement.scrollTop == 0))
		{
			offsetY = document.documentElement.scrollTop;
			offsetX = document.documentElement.scrollLeft;
		}
		//quirks mode
		else
		{
			offsetY = document.body.scrollTop;
			offsetX = document.body.scrollLeft;
		}
	}
	//w3c
	else
	{
		offsetX = window.pageXOffset;
		offsetY = window.pageYOffset;
	}
	
	//alert(offsetX+","+offsetY);
	
	var fr = document.getElementById("alertFrame");

	if (document.all){ //IE
		fr.document.body.focus();
	}else{ //Firefox
		fr.contentDocument.body.focus();
	}
	
	var doc = fr.contentDocument;
	if (doc == undefined || doc == null)
		doc = fr.contentWindow.document;
	msgDiv = doc.getElementById("msgDiv");
	msgInnerDiv = doc.getElementById("msgInnerDiv");
	//alert(msgDiv.style.width+","+msgDiv.style.height);
	
	msgDiv.style.width = msgWidth + 'px';
	msgInnerDiv.style.width = (msgWidth-4) + 'px';
	msgDiv.style.height = msgHeight + 'px';
	msgInnerDiv.style.height = (msgHeight-4) + 'px';
	
	//alert(msgDiv.style.width+","+msgDiv.style.height);
	
	msgW = msgDiv.style.width.replace('px','') - 0;
	msgH = msgDiv.style.height.replace('px','') - 0;
	
	msgDiv.style.left = Math.round((viewportwidth - msgW)/2) + 'px';
	msgDiv.style.top = offsetY + Math.round((viewportheight - msgH)/2) + 'px';
	
	
	pContent = doc.getElementById("pContent");
	pContent.innerHTML = msgContent;
	
	var nodes = document.getElementsByTagName("select");
	for (i=0; i<nodes.length; i++){
		nodes[i].disabled = true;
	}

}

// Build Tree Map
function handleTreeMap(imgID, tblID, linksStr, linkStyle){
	img = document.getElementById(imgID);
	tbl = document.getElementById(tblID);
	
	//alert(img.src);
	//alert(tbl.rows.length);
	
	if(tbl.rows.length > 0){
		len = tbl.rows.length;
		for(i=0; i<len; i++){
			tbl.deleteRow(0);
		}
		img.src='images/close.gif';
	}else{
		links = linksStr.split(',');
		for(i=0; i<links.length; i++){
			row = tbl.insertRow(tbl.rows.length);
			cell0 = row.insertCell(0);
			cell1 = row.insertCell(1);
			if (i == links.length - 1){
				cell0.innerHTML = '<img src="images/child2.gif">';
			}else{
				cell0.innerHTML = '<img src="images/child1.gif">';
			}
			cell1.innerHTML = '<a href="dummy.html" target="_blank" class="'+linkStyle+'">'+links[i]+'</a>';
		}
		img.src='images/open.gif';
	}
}

function isInteger(sText){
	var validChars = "0123456789";
	var isInt = true;
	
	for (i=0; i<sText.length && isInt; i++){
		if (validChars.indexOf(sText.charAt(i)) == -1){
			isInt = false;
		}
	}
	
	return isInt;
}

function isValidEmail(str) {
   return (str.indexOf(".") > 0) && (str.indexOf("@") > 0);
 
}

function checkExDate(year, month, day){
	isValid = true;
	if(!(year=='--' && month=='--' && day=='--')){
		if(year == '--'){
			isValid = false;
		}
		if(month == '--'){
			isValid = false;
		}
		if(day == '--'){
			isValid = false;
		}
	}
	return isValid;
}

function changeAction(form, action){
	form.prevAction.value = form.formAction.value;
	form.formAction.value = action;
	form.submit();
}

function spaceTrim(str){
	if(str != null){
		str = str.replace(/(^\s*)/g, "");
		str = str.replace(/(\s*$)/g, "");
		str = str.replace(/(\s{2,})/g, " ");
	}
	return str;
}