function checkEmail(str) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str)){
		return (true)
	}
	alert("Invalid E-mail Address! Please re-enter.")
	return (false)
}

function checkNumeric(){	
	
	if(event.keyCode>47 && event.keyCode<58)
		return true;
	else if(event.keyCode==46)		
		return true;
	else if(event.keyCode==45)		
		return true;
	else
		return false;
}
function addOption (selectbox,text,value ){
	var id,optn;
	id=getElement(selectbox);
	optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	id.options.add(optn);
}
function addOptionById(selectbox,text,value ){
	var optn;
	optn = document.createElement("OPTION");
	optn.text = text;
	optn.value = value;
	selectbox.options.add(optn);
}

function deleteOption (selectbox,Index){
	var id,siz;
	id=getElement(selectbox);
	siz=id.length;
	for ( var i = Index; i <siz; i++ ){
		id.removeChild(id[Index]);
	}
}	
function selectOption (selectbox,val){
	var id=getElement(selectbox);	
	var siz=id.length;
	for ( var i = 0; i <siz; i++ ){
		if (id[i].value==val){
			id.options(i).selected = true;
		}
	}
}
function selectOptionById (selectbox,val){
	var id=selectbox;	
	var siz=id.length;
	for ( var i = 0; i <siz; i++ ){
		if (id[i].value==val){
			id.options(i).selected = true;
		}
	}
}
function deleteRows(Table,Index){
	var Rows = Table.rows.length;
	if (Rows > Index ){
		for (var j=Index;j<Rows;j++){
			Table.deleteRow(Index);
		}
	}
}
function getOptionText(control){
	var id=document.getElementById(control).options[getElement(control).selectedIndex].text;
	return id;
}
function checkCaps(){
	event.keyCode=(String.fromCharCode(event.keyCode).toUpperCase()).charCodeAt(0);
	return true;
}

function getElement(control){
	var Id=document.getElementById(control);
	return Id;
}

function getValue(control){
	var Id=document.getElementById(control).value;
	return Id;
}
function setValue(control,mValue){
	document.getElementById(control).value=mValue;
}

function getXmlHttpReq() {
	var req;
	var ElmId;
	if(window.XMLHttpRequest && !(window.ActiveXObject)) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}				
	return req;
}

function getXML(url,param){	
	var xml;
	var Req = getXmlHttpReq();	
	Req.open("Post", url, false);
	Req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	Req.setRequestHeader("Content-length", param.length);
	Req.setRequestHeader("Connection", "close");	
	Req.onreadystatechange = function(){
		if (Req.readyState == 4 ){			
			xml = Req.responseXML;				
		}
	};
   Req.send(param);
   return xml;
}
function isDate(me) {	
	var dateStr=me.value;	
	if (dateStr.length==0) return true;
	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	if (matchArray == null) {
		alert("Please enter date as either DD/MM/YYYY.");
		me.focus();
		me.select();
		return false;
	}
	day= matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		me.focus();
		me.select();
		return false;
	}
	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		me.focus();
		me.select();
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		me.focus();
		me.select();
		return false;
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		
		if (day > 29 || (day==29 && !isleap)){
			alert("Day can't be 29,This year is not a leap year.");
			me.focus();
			me.select();
			return false;
		}
	}
	return true; // date is valid
}
function addDate(prmDate,prmDtPart,prmValue){
var mTempDay,mTempMonth,mTempYear,mDaysOfMonth=0,mNewDate;
var mDay = GetDays(prmDate);
var mMonth = GetMonths(prmDate);
var mYear = GetYears(prmDate);
if(prmDtPart.toUpperCase() == "D" || prmDtPart.toUpperCase()=="DAY") {
   	mDay=eval(mDay)+ eval(prmValue);
	mTempDay=mDay;
   while(mTempDay>=mDaysOfMonth){
		if (mMonth == 4 || mMonth == 6 || mMonth == 9 || mMonth == 11){
			mDaysOfMonth=30;    	   
		}
		else if(mMonth==1||mMonth==3||mMonth==5||mMonth==7||mMonth==8||mMonth==10||mMonth==12){
			mDaysOfMonth=31;
		}
		else if(mMonth == 2){
			var isleap = (mYear % 4 == 0 && (mYear % 100 != 0 || mYear % 400 == 0));
			 if(isleap==true) mDaysOfMonth=29;
		  else mDaysOfMonth=28;
		}
		if(mTempDay > mDaysOfMonth){
			mTempDay = mTempDay - mDaysOfMonth;
			mMonth=mMonth+1;
		}
		if(mMonth>12){
		   mMonth=(mMonth%12);
		   mYear=mYear+1;
		}
	 }
	 mDay=mTempDay;
 }
 else if(prmDtPart.toUpperCase() == "M" || prmDtPart.toUpperCase()=="MONTH" || prmDtPart.toUpperCase()=="MON"){
	mMonth=eval(mMonth)+ eval(prmValue);
	mTempMonth=mMonth;	
	if(mMonth>12){
		mMonth=(mMonth%12);
		mYear=mYear+eval((mTempMonth-mMonth)/12);
	}
 }
 else if(prmDtPart.toUpperCase() == "Y" || prmDtPart.toUpperCase()=="YEAR"){
	mYear=eval(mYear)+ eval(prmValue);
	mTempYear=mYear;
 }
 if (mDay<10) mDay ='0'+mDay;
 if (mMonth<10) mMonth ='0'+mMonth;	 
 mNewDate=mDay + '/' + mMonth + '/'+ mYear;
 //alert(mNewDate);
 return mNewDate;
}
function GetHour(Mtime){
	var Hour="";
	var mpos=0;	
	mpos=Mtime.indexOf(":");
	Hour=Mtime.substring(0,mpos);
	return eval(Hour);
}
function GetMin(Mtime){
	var Mint="";
	var mpos=0;	
	mpos=Mtime.indexOf(":");
	Mint=Mtime.substring(mpos+1);
	return eval(Mint);
}
function GetDays(Mdate){
	var Day="";
	var mpos=0;	
	mpos=Mdate.indexOf("/");
	Day=Mdate.substring(0,mpos);
	return eval(Day);
}
function GetMonths(Mdate){
	var year="";
	var mon="";
	var Day="";
	var mpos=0;
	var mstr1="";
	var Month="0";
	
	mpos=Mdate.indexOf("/");
	Day=Mdate.substring(0,mpos);
	Mdate=Mdate.substring(mpos+1);
	mpos=Mdate.indexOf("/");
	mon=Mdate.substring(0,mpos) ;		
	return eval(mon);
}
function GetYears(Mdate){
	var year="";
	var mon="";
	var Day="";
	var mpos=0;
	var mstr1="";
	var Month="";
	
	mpos=Mdate.indexOf("/");
	Day=Mdate.substring(0,mpos);
	Mdate=Mdate.substring(mpos+1);
	mpos=Mdate.indexOf("/");
	mon=Mdate.substring(0,mpos) ;	
	year= Mdate.substring(mpos+1);
	return  eval(year);
}
function calculate (Date1,Date2){
	var date1 = new Date(Date1);
	var date2 = new Date(Date2);
	var sec = date2.getTime() - date1.getTime();
	if (isNaN(sec)){
		//alert("Input data is incorrect!");
		return "";
	}
	if (sec < 0){
		//alert("The second date ocurred earlier than the first one!");
		return "";
	}
	var second = 1000, minute = 60 * second, hour = 60 * minute, day = 24 * hour;
	var days = Math.floor(sec / day);
	sec -= days * day;
	var hours = Math.floor(sec / hour);
	sec -= hours * hour;
	var minutes = Math.floor(sec / minute);
	sec -= minutes * minute;
	var seconds = Math.floor(sec / second);
	hr=eval(days) *24;
	hr=(eval(hr) + eval(hours))*60;
	minutes=eval(hr)+eval(minutes);
	hr=custRound((eval(minutes)/60),2);
	//alert(hr);
	return (hr);
	//alert( days + " day" + (days != 1 ? "s" : "") + ", " + hours + " hour" + (hours != 1 ? "s" : "") + ", " + minutes + " minute" + (minutes != 1 ? "s" : "") + ", " + seconds + " second" + (seconds != 1 ? "s" : ""));
}
function choose(index,itemArr){
	var ChoosingVal;
	for(i=0;i<itemArr.length;i++){
		if(i+1==index){
			ChoosingVal=itemArr[i];
			break;
		}
	}
	return ChoosingVal;
}
function checkDateEntry(ctrlName){
	var keyCode=event.keyCode;
	var inival;
	if (keyCode>=48 && keyCode <=57){
			keyCode=keyCode+48;
		}
	if(keyCode>=96 && keyCode <= 108){
		inival=getValue(ctrlName);
		if(inival.length==2){
			setValue(ctrlName,getValue(ctrlName)+'/');
		}
		if(inival.length==5){
			setValue(ctrlName,getValue(ctrlName)+'/');
		}		
	}
	if(keyCode==8){
		var val=getValue(ctrlName).length;
		var index=getValue(ctrlName).lastIndexOf('/');
		if(index<0){
			if(val==2){
				var xxx=getValue(ctrlName);
				var yyy=xxx.substring(0,1);
				setValue(ctrlName,yyy);
			}
			if(val>2){
				setValue(ctrlName,getValue(ctrlName).substring(0,2)+':' + getValue(ctrlName).substring(2,val));
			}
		}
	}
	if (keyCode==46){
		var val=getValue(ctrlName).length;
		var index=getValue(ctrlName).lastIndexOf('/');
		if(val==6 && index==5){
			setValue(ctrlName,getValue(ctrName).substring(0,5));
		}
	}
}
function checkDateEntryByObj(me){
	var keyCode=event.keyCode;
	var inival;
	if (keyCode>=48 && keyCode <=57){
			keyCode=keyCode+48;
		}
	if(keyCode>=96 && keyCode <= 108){
		inival=me.value;
		if(inival.length==2) me.value=me.value+'/';
		if(inival.length==5) me.value=me.value+'/';
	}
	if(keyCode==8){
		var val=me.value.length;
		var index=me.value.lastIndexOf('/');
		if(index<0){
			if(val==2){
				var xxx=me.value;
				var yyy=xxx.substring(0,1);
				me.value=yyy;
			}
			if(val>2){
				me.value=me.value.substring(0,2)+'/' +me.value.substring(2,val);
			}
		}
	}
	if (keyCode==46){
		var val=me.value.length;
		var index=me.value.lastIndexOf('/');
		if(val==6 && index==5){
			me.value=me.value.substring(0,5);
		}
	}
}
function checkTimeEntry(ctrlName){
	var keyCode=event.keyCode;	
	var inival;	
	if (keyCode>=48 && keyCode <=57){
			keyCode=keyCode+48;
		}
	if(keyCode>=96 && keyCode <= 108){
		inival=getValue(ctrlName);
		if(inival.length==2){
			setValue(ctrlName,getValue(ctrlName)+':');
		}
	}
	if(keyCode==8){
		var val=getValue(ctrlName).length;
		var colonindex=getValue(ctrlName).indexOf(':');
		if(colonindex<0){
			if(val==2){
				var xxx=getValue(ctrlName);
				var yyy=xxx.substring(0,1);
				setValue(ctrlName,yyy);
			}
			if(val>2){
				setValue(ctrlName,getValue(ctrlName).substring(0,2)+':' + getValue(ctrlName).substring(2,val));
			}
		}
	}
	if (keyCode==46){
		var val=getValue(ctrlName).length;
		var colonindex=getValue(ctrlName).indexOf(':');
		if(colonindex < 0 ){
			if(val>2){				
				setValue(ctrlName,getValue(ctrlName).substring(0,2)+':' + getValue(ctrlName).substring(2,val));
			}
			else{
				//setValue(ctrlName,getValue(ctrlName)+':');
			}
		}
		if(val==1){
			setValue(ctrlName,"");
		}
	}
}
function trim(str, chars){
	str=rtrim(ltrim(str, chars),chars);
    return str;
}
function checkTimeEntryByObj(me){
	var keyCode=event.keyCode;
	var inival;	
	if (keyCode>=48 && keyCode <=57){
			keyCode=keyCode+48;
		}
	if(keyCode>=96 && keyCode <= 108){
		inival=me.value;
		if(inival.length==2){
			me.value=me.value+':';
		}
	}
	if(keyCode==8){
		var val=me.value.length;
		var colonindex=me.value.indexOf(':');
		if(colonindex<0){
			if(val==2){
				var xxx=me.value;
				var yyy=xxx.substring(0,1);
				me.value=yyy;
			}
			if(val>2){
				me.value=me.value.substring(0,2)+':'+me.value.substring(2,val);
			}
		}
	}
	if (keyCode==46){
		var val=me.value.length;
		var colonindex=me.value.indexOf(':');
		if(colonindex < 0 ){
			if(val>2){				
				me.value=me.value.substring(0,2)+':'+me.value.substring(2,val);
			}
			else{
				//me.value=me.value+':';
			}
		}
		if(val==1){
			me.value="";
		}
	}
}
function ltrim(str, chars){
   var charlen = chars.length;
   var strlen = str.length;
   var mstr="";
   if ((str != null) && (strlen > charlen)){
      while (charlen <= str.length){
         if(str.substr(0, charlen) == chars){
            str = str.substr(charlen);
         }
         else break;
      }
   }
   return str;
}
function rtrim(str, chars){
   var charlen = chars.length;
   var strlen = str.length;
   var mstr="";
   var i=strlen-charlen;
   if ((str != null) && (strlen > charlen)){
      while (charlen <= str.length){
         if(str.substr(i, charlen) == chars){
            str = str.substr(0,i);
            i=str.length-charlen;
         }
         else break;
      }
   }
   return str;
}
function custRound(x,places) {
	return (Math.round(x*Math.pow(10,places)))/Math.pow(10,places)
}
function checkNum(data){ // checks if all characters
	var valid = "0123456789."; // are valid numbers or a "."
	var ok = 1; var checktemp;
	for (var i=0; i<data.length; i++) {
	checktemp = "" + data.substring(i, i+1);
	if (valid.indexOf(checktemp) == "-1") return 0; }
		return 1;
}
function formatNumber(prmNum) { // idea by David Turley
	var Num=prmNum;
	dec = Num.indexOf(".");
	end = ((dec > -1) ? "" + Num.substring(dec,Num.length) : ".00");
	Num = "" + parseInt(Num);
	var temp1 = "";
	var temp2 = "";
	if (checkNum(Num) == 0) {
		alert("This does not appear to be a valid number.  Please try again.");
	}
	else { 
		if (end.length == 2) end += "0";
		if (end.length == 1) end += "00";
		if (end == "") end += ".00";
		var count = 0;
		for (var k = Num.length-1; k >= 0; k--) {
			var oneChar = Num.charAt(k);
			if (count == 3) {
				temp1 += ",";
				temp1 += oneChar;
				count = 1;
				continue;
			}
			else {
				temp1 += oneChar;
				count ++;
			}
		}	
		for (var k = temp1.length-1; k >= 0; k--) {
			var oneChar = temp1.charAt(k);
			temp2 += oneChar;
		}
		temp2 = temp2 + end;
		return temp2;
	}
}
function transferValue(prmTarget,prmSource){
	setValue(prmTarget,getValue(prmSource));
}
function IsValidTime(me){
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.
timeStr=me.value;
var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
var matchArray = timeStr.match(timePat);
if (matchArray != null) {
	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];
	ampm = matchArray[6];
	
	if (second=="") { second = null; }
	if (ampm=="") { ampm = null }
	if (hour < 0  || hour > 23) {
		alert("Hour must be between 0 and 23.)");
		me.focus();
		me.select();
		return false;
	}
	if (minute<0 || minute > 59) {
		alert ("Minute must be between 0 and 59.");
		me.focus();
		me.select();
		return false;
	}
	if (second != null && (second < 0 || second > 59)) {
		alert ("Second must be between 0 and 59.");
		me.focus();
		me.select();
		return false;
	}
	//me.focus();
	//me.select();
}
/*else if (matchArray == null) {
	alert("Enter time in HH:MI format");
	me.focus();
	me.select();
	return false;
}*/
return false;
}
function getWindowHeight(){
	if(document.all) return (document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.clientHeight;
	else return window.innerHeight;
}

function getWindowWidth(){
	if(document.all) return (document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.clientWidth;
	else return window.innerWidth;
}

function calculateNextDate(prmFromTime,prmToDate,prmToTime){
	var totMinFromTime,totMinToTime;
	if(prmFromTime.length>0) totMinFromTime=(eval(GetHour(prmFromTime)) * 60) + eval(GetMin(prmFromTime));
	else totMinFromTime=0;	
	if(prmToTime.length>0) totMinToTime=(eval(GetHour(prmToTime)) * 60) + eval(GetMin(prmToTime));
	else totMinToTime=0;
	if(totMinToTime < totMinFromTime){
		prmToDate=addDate(prmToDate,'d',1);
	}
	return prmToDate;
}
