var sMissingErrMsg = "";
var sInvalidErrMsg = "";

function matchValues(objFirst, objSecond)
{
	var e = document.getElementById(objFirst);
	var f = document.getElementById(objSecond);
	if(e && f){
		if(e.value!=f.value){
			alert("Password do not match");
			return false;
		}
	}
	return true;
}

function AttachKeyEvents(objForm){
	var arrElements = objForm.getElementsByTagName("input");
	for(n=0;n<arrElements.length;n++){
		if(arrElements[n].attachEvent){
			arrElements[n].attachEvent("onkeydown",function (){
				if(event.keyCode==13){
					event.keyCode=9;
					return event.keyCode;
				}
			});
		}else{
			arrElements[n].addEventListener("keyup",function (){
				if(event.keyCode==13){
					event.keyCode=9;
					return event.keyCode;
				}
			},false);
		}
	}

}

function attachInputEvents(objForm)
{
	attachInputEventsElements(objForm,"input");
	attachInputEventsElements(objForm,"select");
	attachInputEventsElements(objForm,"textarea");
}
function validInput(evt)
{
	sElement = evt["srcElement"]["obj"];
	if(sElement){
		if(sElement.value!=""){
			sElement.className = sElement.className.replace("invalidInput","");
		}
	}
}
function attachInputEventsElements(objForm,sTagNames)
{
	var arrElements = objForm.getElementsByTagName(sTagNames);
	for(n=0;n<arrElements.length;n++){
		if(arrElements[n].attachEvent){
			arrElements[n].attachEvent("onkeyup",validInput);
			arrElements[n].obj = arrElements[n];
		}else{
			arrElements[n].addEventListener("keyup",function (){
				if(this.value!=""){
					this.className = this.className.replace("invalidInput","");
				}
			},false);
		}
	}
}
var bSetFocus = false;
function checkAll(bChecked)
{
	for(n=1;n<=100;n++){
		var e = document.getElementById("chkRow_"+n);
		if(e){
			e.checked =  bChecked;
		}
	}
}
function validatePage(objForm)
{
	sMissingErrMsg = "";
	sInvalidErrMsg = "";
	var sErrMsg = ""
	bSetFocus = false;
	validateElements(objForm,"input");
	validateElements(objForm,"select");
	validateElements(objForm,"textarea");
	if(sMissingErrMsg!=""){
		sErrMsg = sErrMsg + "Following information(s) is missing: \n" + sMissingErrMsg;
	}
	if(sInvalidErrMsg!=""){
		sErrMsg = sErrMsg + "Following information(s) is invalid: \n" + sInvalidErrMsg;
	}
	if(sErrMsg!==""){
		sErrMsg = replaceAll(sErrMsg, "_", " ")
		alert(sErrMsg);
		return false;
	}
	return true;
}


function replaceAll(sMainStr, sReplaceWhat, sReplaceWith)
{
	while(sMainStr.indexOf(sReplaceWhat)>-1){
		sMainStr = sMainStr.replace(sReplaceWhat,sReplaceWith);
	}
	return sMainStr;
}
function validateListCheckbox(objForm, sTableName, sColName, sDivID){
	sRetValue = false;
	var arrElements = objForm.getElementsByTagName("input");
	var nElementLength = arrElements.length
	j = 0
	n = 0
	while(n<50 && j<10){
		if(arrElements[n]){
			if(arrElements[n].type=="checkbox"){
				if(arrElements[n].checked){
					sRetValue = true;
					DeleteTableRow(arrElements[n].name, arrElements[n].value, sTableName, sColName, sDivID)
				}
				n=n + 1
				j = 0
			}else{
				j = j  + 1
			}			
		}else{
			j = j  + 1
		}
	}
	return sRetValue;
	
}
function DeleteTableRow(nRowIndex, nID, sTableName, sColName, sDivID){
	if (nID > 0 ) {
		document.getElementById("ListRow_" +nRowIndex).style.display='none';
		SendAjaxRequestByURL("AjaxRequest.asp?action=delRow&tbl="+sTableName+"&col="+sColName+"&sKey="+nID,sDivID)
	}
}
function validateElements(objForm,sElementName)
{	
	var arrElements = objForm.getElementsByTagName(sElementName);
	for(n=0;n<arrElements.length;n++){
		if(arrElements[n].className.indexOf("required")>-1 && arrElements[n].value==""){
			sMissingErrMsg = sMissingErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("Num")>-1 && arrElements[n].value!="" && fSafeNum(arrElements[n].value)==0 && isNaN(arrElements[n].value)){
			sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("Email")>-1 && arrElements[n].value!="" && (arrElements[n].value.indexOf("@")==-1 ||arrElements[n].value.indexOf(".")==-1)){
			sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
			arrElements[n].className = arrElements[n].className + " invalidInput";
			attachInputEvents(arrElements[n]);
		}
		if(arrElements[n].className.indexOf("MobilePhone")>-1 && arrElements[n].value!=""){
			var sPhoneNumber = arrElements[n].value;
			sPhoneNumber = replaceAll(sPhoneNumber , ",", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "+", "")
			sPhoneNumber = replaceAll(sPhoneNumber , " ", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "(", "")
			sPhoneNumber = replaceAll(sPhoneNumber , ")", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "-", "")
			if(isNaN(sPhoneNumber) || sPhoneNumber.length<10){
				sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
				arrElements[n].className = arrElements[n].className + " invalidInput";
				attachInputEvents(arrElements[n]);
			}
		}
		if(arrElements[n].className.indexOf("HomePhone")>-1 && arrElements[n].value!=""){
			var sPhoneNumber = arrElements[n].value;
			sPhoneNumber = replaceAll(sPhoneNumber , ",", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "+", "")
			sPhoneNumber = replaceAll(sPhoneNumber , " ", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "(", "")
			sPhoneNumber = replaceAll(sPhoneNumber , ")", "")
			sPhoneNumber = replaceAll(sPhoneNumber , "-", "")
			if(isNaN(sPhoneNumber) || sPhoneNumber.length<6){
				sInvalidErrMsg = sInvalidErrMsg + "      " + arrElements[n].name +"\n";
				arrElements[n].className = arrElements[n].className + " invalidInput";
				attachInputEvents(arrElements[n]);
			}
		}
		if((sMissingErrMsg!="" || sInvalidErrMsg!="") && !bSetFocus){
			arrElements[n].focus();
			bSetFocus = true;
		}
		
	}
}
function attachInputEvents(sObj)
{
	if(sObj.attachEvent){
		sObj.attachEvent("onkeyup",validInput);
		sObj.obj = sObj;
	}else{
		sObj.addEventListener("keyup",function (){
			if(this.value!=""){
				this.className = this.className.replace("invalidInput","");
			}
		},false);
	}
}


var gsDivID="";

function getElementsVals(objForm,sTagNames)
{
	var sAjaxParams = ""
	var arrElements = objForm.getElementsByTagName(sTagNames);
	for(n=0;n<arrElements.length;n++){
		if(sTagNames=="select"){
			for(i=0;i<arrElements[n].length;i++){
				if(arrElements[n].options[i].selected){
					sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].options[i].value);	
				}
			}
		}
		else if(arrElements[n].type=="checkbox"){
			if(arrElements[n].checked){
				sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
			}
		}
		else if(arrElements[n].type=="radio"){
			if(arrElements[n].checked){
				sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
			}		
		}
		else{
			sAjaxParams = sAjaxParams + "&" + arrElements[n].name + "=" + escape(arrElements[n].value);
		}
	}
	return sAjaxParams;
}
function getFormElements(objForm)
{
	var sAjaxParams1 = getElementsVals(objForm,"input");
	var sAjaxParams2 = getElementsVals(objForm,"select");
	var sAjaxParams3 = getElementsVals(objForm,"textarea");
	var retParams = sAjaxParams1 + sAjaxParams2 + sAjaxParams3;
	retParams = replaceAll(retParams,"&&","&"); 
	if(retParams.indexOf("&")==0){
		retParams = retParams.substring(1);
	}
	if(retParams.indexOf("&")==retParams.length){
		retParams = retParams.substring(0,retParams.length-1);
	}
	return retParams;
}

function SendAjaxRequest(sRequestFile, objForm, sDivID)
{
	var sURL = sRequestFile
	sParams = getFormElements(objForm);
	sParams  = sParams + "&ref="+Math.floor(Math.random()*10001)
	sURL = sURL + "?" + sParams;
	SendAjaxRequestByURL(sURL, sDivID)
}
function SendAjaxRequestByURL(sURL, sDivID)
{
	gsDivID = sDivID;
	var e = document.getElementById(gsDivID);
	if(e){
		e.style.display='';
		e.innerHTML = "<br/><br/><center><img src=\"imgs/loading.gif\" border=\"0\"></center>";
		xmlHTTP=GetXmlHttpObject();
		if (xmlHTTP==null){
		  alert ("Your browser does not support XMLHTTP!");
		  return;
		}
		nPOS = sURL.indexOf("?");
		if(nPOS>-1){
			sParams = sURL.substring(nPOS+1);
			sURL = sURL.substring(0,nPOS);
		}
		xmlHTTP.open("POST",sURL,true);
		xmlHTTP.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHTTP.setRequestHeader("Content-length", sParams.length);
		xmlHTTP.setRequestHeader("Connection", "close");
		xmlHTTP.onreadystatechange=UpdateAjaxRequest;
		xmlHTTP.send(sParams);
	}
}
function UpdateAjaxRequest()
{
	if (xmlHTTP.readyState==4){
		var e = document.getElementById(gsDivID);
		if(e){
			var sResponseText = xmlHTTP.responseText; 
			e.innerHTML =  sResponseText;
			nRedirectPOS = sResponseText.indexOf("<!--Redirect:")
			if(nRedirectPOS>-1){
				sResponseText = sResponseText.substring(nRedirectPOS)
				sResponseText = sResponseText.replace("<!--Redirect:","");
				sResponseText = sResponseText.replace("-->","");
				window.location.href = sResponseText;
			}
			nFillPOS = sResponseText.indexOf("<!--Fill:")
			if(nFillPOS>-1){
				sResponseText = sResponseText.substring(nFillPOS)
				sResponseText = sResponseText.replace("<!--Fill:","");
				sResponseText = sResponseText.replace("-->","");
				sResponseTextArr = sResponseText.split("~~");
				document.getElementById(sResponseTextArr[2]).value = sResponseTextArr[0];
				document.getElementById(sResponseTextArr[3]).value = sResponseTextArr[1];
				hs.close();
			}
		}
	}
}
function GetXmlHttpObject()
{
	if (window.XMLHttpRequest){
	  // code for IE7+, Firefox, Chrome, Opera, Safari
	  return new XMLHttpRequest();
	}
	if (window.ActiveXObject){
	  // code for IE6, IE5
	  return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

function forceNumber(eventObj, obj)
{
	var keyCode

	if (document.all){
		keyCode=eventObj.keyCode
	}
	else{
		keyCode=eventObj.which
	}
	var str=obj.value
	if(keyCode==8 || keyCode==0 || keyCode==190 || keyCode==37 || keyCode==39 || keyCode==16 || keyCode==9 || keyCode==46 || keyCode==35 || keyCode==36){
		return true;
	}
	if(keyCode>95 && keyCode <106) { 
		return true;
	}
	if((keyCode<48 || keyCode >57)  ) { // Allow only integers and decimal points &&   (keyCode != 46)
		return false;
	}
	return true;
}

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
{ 
        if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	if(tmpNumStr.indexOf(".")==-1){
		tmpNumStr=tmpNumStr+".00"; 
	}
	if(tmpNumStr.indexOf(".")==tmpNumStr.length-2){
		tmpNumStr=tmpNumStr+"0"; 
	}
	return tmpNumStr;		// Return our formatted string!
	
}
function fSafeNum(str){
	str = str + "";
	str = replaceAll(str,",","");
	if(isNaN(str) || str==""){
		return 0;
	} else {
		return parseFloat(str);
	}
}


