//Start Time Functions	
	function isTime(strTime)
	{
		var arrTime = strTime.split(":")
		var hh = parseInt(arrTime[0], 10)
		var mm = parseInt(arrTime[1],10)
		var ss = parseInt(arrTime[2],10)
	    if(!isInteger(String(hh))) return false
	    if(hh<0 || hh > 23) return false
	    if(!isInteger(String(mm))) return false
	    if(mm<0 || mm > 59) return false
	    if(!isInteger(String(ss))) return false
	    if(ss<0 || ss > 59) return false
	    return true
	}
	
	
	function getTime()
	{
		var dtToday = new Date()
		return (dtToday.getHours() + ":" + dtToday.getMinutes())
	}
	
	function CheckTime(obj)
	{
		try
		{
			if(obj)
			{
				var arrTime = String(obj.value).split(":")
				if(isHour(arrTime[0])==false || isMinute(arrTime[1]) == false)
				{
					alert("Please enter time in (HH:MM) format.\n Like for example (18:30)")
					obj.focus();
					return false;
				}
			}
		}
		catch(e)
		{
			alert("Error" + e.description)
		}
		return true;
	}
//End Time Functions

//---------------------Start Information Functions------------------------------

	function isHour(val){	return isInRange(val,0,23) }
	function isMinute(val){	return isInRange(val,0,59) }

	function isName(val)
	{
		var alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
		var num = "0123456789"
		var alphanum = alpha + num
		val = String(val)
		if(isEmpty(val)) return false
		if(alpha.indexOf(val.charAt(0))==-1) return false
		for(var i = 1; i < val.length; i++)
		{
			if(alphanum.indexOf(val.charAt(i))==-1) return false
		}
		return true
	}

	function isInRange(val,minval,maxval)
	{
		if(!isInteger(val)) return false
		val = parseInt(val)
		if(val<minval || val>maxval) return false
		return true
	}

	function isPassword(val)
	{
		return val.length>3
	}

	function isPhoneNumber(TheNumber) 
	{
		var GoodChars = "0123456789()-+ "
		if (TheNumber.length < 6) return false
		if (TheNumber=="")	return true
		
		for (i =0; i < TheNumber.length; i++) 
		{
			if (GoodChars.indexOf(TheNumber.charAt(i)) == -1) 
			return false
		}
		return true
	}

	function isEmail (emailStr) 
	{
		var emailPat=/^(.+)@(.+)$/
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
		var validChars="\[^\\s" + specialChars + "\]"
		var quotedUser="(\"[^\"]*\")"
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		var atom=validChars + '+'
		var word="(" + atom + "|" + quotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) {
			alert(EMAIL_INVALID)
			return false
		}
		var user=matchArray[1]
		var domain=matchArray[2]

		if (user.match(userPat)==null){
		    alert(EMAIL_USERNAME_INVALID)
		    return false
		}

		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
			  for (var i=1;i<=4;i++) {
			    if (IPArray[i]>255) {
			        alert(EMAIL_DESTIP_INLVAID)
				return false
			    }
		    }
		    return true
		}

		var domainArray=domain.match(domainPat)
		if (domainArray==null) {
			alert(EMAIL_DOMAIN_INVALID)
		    return false
		}
		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || 
		    domArr[domArr.length-1].length>3) {
		   alert(EMAIL_HOSTDOMAIN_REQ)
		   return false
		}

		if (len<2) {
		   alert(EMAIL_HOST_REQ)
		   return false
		}
		return true;
	}
	
	function hasSpace(s)
	{
		var nPos = 0;
		nPos = s.search(/ /);
		if(nPos>0)
			return true;
		else
			return false;
	}

	function isEmpty(s)
	{   
		if (s==null)
			return true;
		else {
			s = '' + s;
			return ((s.length == 0) || (s.replace(/^ */g, '').length == 0));
		}
	}

	function isDigit (c)
	{
	   return ((c >= "0") && (c <= "9"))
	}
	function isNumber(s)
	{
	    for (i = 0; i < s.length; i++) {
	    // Check that current character is number.
	       if (!isDigit(s.charAt(i))) return false;
	    }
	    // All characters are numbers.    
	    return isFinite(parseFloat(s));
	}
	
	function isPosInteger(s)
	{
		return isInteger(s) && parseInt(s)>0
	}

	function isWholeNumber(s)
	{
		return isInteger(s) && parseInt(s)>=0
	}

	function isInteger (s)
	{
		var i;
	    if (isEmpty(s)) 
	       if (isInteger.arguments.length == 1) return false;
	       else return (isInteger.arguments[1] == true);
		// Remove commas
		s = s.replace(/,/g, "");
		if (s.length == 0) return false;
	    return isNumber(s);
	}

	function isPosFloat(s)
	{
		return isFloat(s) && parseFloat(s)>0
	}

	function isFloat(s, max_int_digits)
	{
		var i;
	    var seenDecimalPoint = false;
		if (isEmpty(s)) {
			return false;
		}
		if (s == ".") {
			return false;
		}
		// Remove commas
		s = s.replace(/,/g, "");
		if (s.length == 0) {
			return false;
		}
		var int_digits = 0;
		for (i = 0; i < s.length; i++) {
			// Check that current character is number.
			var c = s.charAt(i);
			if ((c == ".") && !seenDecimalPoint) {
				seenDecimalPoint = true;
			}
			else if (!isDigit(c)) {
				return false;
			}
	    }
	    return true;
	}

	function isGreaterThan(s,max_value)
	{
		s = s.replace(/,/g, "");
		if (s > max_value)
			return true;
		else
			return false;
	}
//---------------------End Information Functions------------------------------


//---------------------Start String Functions---------------------------------

	function InStr(strSearch, charSearchFor){
		for (i=0; i < Len(strSearch); i++){
		    if (charSearchFor == Mid(strSearch, i, 1)){
				return i;
		    }
		}
		return -1;
	}

	function Mid(str, start, len){
	    if (start < 0 || len < 0) return "";
	    var iEnd, iLen = String(str).length;
	    if (start + len > iLen)
			iEnd = iLen;
	    else
	        iEnd = start + len;
	    return String(str).substring(start,iEnd);
	}

	function Left(str, n){
	    if (n <= 0)
			return "";
	    else if (n > String(str).length)
			return str;
	    else
			return String(str).substring(0,n);
	}

	function Right(str, n){
	    if (n <= 0)
	       return "";
	    else if (n > String(str).length)
	       return str;
	    else{
	       var iLen = String(str).length;
	       return String(str).substring(iLen, iLen - n);
	    }
	}

	function Replace(StrSource, StrFind, StrReplace)
	{
		var StrReplacedContent="";
		var FindPos;
		var StrOriginal=new String(StrSource).toString();
		var StrOriginalSource=new String(StrSource);
		var FindPos=StrOriginalSource.toString().indexOf(StrFind);
		while(FindPos>-1)
		{				
				StrReplacedContent+=StrOriginal.substring(0,FindPos) + StrReplace;
				StrOriginalSource=StrOriginalSource.substring(FindPos+StrFind.length);
				StrOriginal=StrOriginal.substring(FindPos+StrFind.length);
				FindPos=StrOriginalSource.indexOf(StrFind);
		}
		StrReplacedContent+=StrOriginalSource;
		return StrReplacedContent;
	}
	
	function Ucase(s){
		var str = new String(s);
		return str.toUpperCase();
	}

	function Lcase(s){
		var str = new String(s);
		return str.toLowerCase();
	}

	function Len(str){
	  return String(str).length;
	}

	function removeAllSpaces(s){
		var tmp;
		tmp= s.replace(/\s/g, '');
		return tmp;
	}

	function Trim(s){
		s=String(s);
		if (s=="undefined")
			return "";
		else{
			var tmp;
			tmp = s.replace(/^\s+/,"").replace(/\s+$/,"");
			return tmp;
		}
	}

	function RTrim(s){
		s = String(s)
		if (s=="undefined"){
			return "";
		}
		return s.replace(/\s+$/,"")
	}

	function LTrim(s){
		s = String(s)
		if (s=="undefined"){
			return "";
		}
		return s.replace(/^\s+/,"")
	}


	function RemoveComma(s){
		s = s.replace(/,/g, "");
		if (s.length == 0) {
			return false;
		}
		return s;
	}

	function LPad(strToPad,padLen,padChar)
	{
		strToPad = new String(strToPad)
		if(strToPad.length >= padLen) return strToPad
		
		for(i = 1; i <= padLen - strToPad.length; i++)
			strToPad = padChar + strToPad

		return strToPad
	}

	function RPad(strToPad,padChar,padLen)
	{
		strToPad = new String(strToPad)
		if(strToPad.length >= padLen) return strToPad
		for(i = 1; i <= padLen - strToPad.length; i++)
			strToPad = strToPad + padChar
		return strToPad
	}

	function CleanComma(ValueToClean)
	{	
		while(ValueToClean.indexOf(",,") > - 1)	ValueToClean = Replace(ValueToClean,",,",",")		
		if(ValueToClean.substring(0,1)==",") ValueToClean = ValueToClean.substring(1)
		if(ValueToClean.substring(ValueToClean.length-1 ,ValueToClean.length)==",") ValueToClean = ValueToClean.substring(0,ValueToClean.length-1)
		return ValueToClean 
	}
	//End Of String Functions

	//Validation Function Start
	//Generic Function to Validate All Forms
	function FormValidation(formNameToValidate)
	{
		this.FormName = formNameToValidate
		this.Controls = new Array()
		this.AddControl = _AddControl
		this.Validate = _Validate
	}

	function _Control(controlNameToValidate,validationFunction,errorMessage,controlNameToFocus)
	{
		this.ControlName = controlNameToValidate
		if(controlNameToFocus)
			this.FocusControlName = controlNameToFocus
		else
			this.FocusControlName = this.ControlName

		this.ValidationFunction = validationFunction
		this.ErrorMessage = errorMessage
	}

	function _AddControl(controlNameToValidate,validationFunction,errorMessage,controlNameToFocus)
	{
		this.Controls[this.Controls.length] = new _Control(controlNameToValidate,validationFunction,errorMessage,controlNameToFocus)
	}

	function _Validate(startFrom,endAt,focusCallBackFunction)
	{
		var objForm = document.forms[this.FormName]
		var objVC,objFC,controlValue	
		if(parseInt(endAt)>=this.Controls.length-1) endAt = this.Controls.length
		else
			endAt+=1
		if(objForm)
		{
			for(var i = startFrom; i < endAt; i++)
			{			
				if(objForm.elements[this.Controls[i].ControlName])
				{		
					objVC = objForm.elements[this.Controls[i].ControlName]
					objFC = objForm.elements[this.Controls[i].FocusControlName]
					if(objVC.type=="select-one")
						controlValue = "objVC.selectedIndex==-1?'':'0'"
					else if(objVC.type=="select-multiple")
						controlValue = "objVC.selectedIndex==-1?'':'0'"
					else
						controlValue = "objVC.value"
					if(eval(this.Controls[i].ValidationFunction + "(" + controlValue + ")"))
					{
						if(this.Controls[i].ValidationFunction!="!isEmail")
						{ 
							if(this.Controls[i].ErrorMessage != "") alert(this.Controls[i].ErrorMessage);
						}
						if(focusCallBackFunction) eval(focusCallBackFunction)
						if(objFC && objFC.type!="hidden") 
						{
							objFC.focus();
							if(objVC.type=="text") objVC.select()
						}
						return false;
					}
				}
			}
		}
		return true;
	}

	function ChgCase(obj)
	{
		obj.value=Ucase(obj.value)
	}	
	
	
	//Validation Function End---------------------------------------

	//UI Functions Start---------------------------------------

	function onBusChange(sQrystr)
	{
		var strCurBusGID = document.frmleft.Buslist.options[document.frmleft.Buslist.selectedIndex].value;
		window.location.href = "../Admin/Home.asp?" + sQrystr + "&CBSU=" + strCurBusGID
	}


	//Checkbox Functions
	function SelAllCHKByName(objCheckbox,isChecked)
	{
		if(objCheckbox)
		{
			if(objCheckbox.length)
			{
				for(var i = 0; i < objCheckbox.length; i++)
					objCheckbox[i].checked = isChecked
			}
			else
			{
				objCheckbox.checked = isChecked
			}		
		}
	}

	function SelAllCHKByIndex(objForm,cbPrefix,isChecked,startIndex,endIndex)
	{
		startIndex = parseInt(startIndex)
		endIndex = parseInt(endIndex)
		for(var i =  startIndex; i <= endIndex; i++)
		{
			if(objForm.elements[cbPrefix + i])
				objForm.elements[cbPrefix + i].checked = isChecked
		}
	}

	function IsCHKSelectedByName(objCheckbox)
	{
		if(objCheckbox)
		{
			if(objCheckbox.length)
			{
				for(var i = 0; i < objCheckbox.length; i++)
				{
					if(objCheckbox[i].checked) return true
				}
			}
			else
				return objCheckbox.checked
		}
		return false;
	}


	function IsCHKSelectedByIndex(objForm,cbPrefix,startIndex,endIndex)
	{
		for(var i =  startIndex; i <= endIndex; i++)
		{
			if(objForm.elements[cbPrefix + i] && objForm.elements[cbPrefix + i].checked) return true
		}
		return false
	}
	
	function IsCheckboxSelectedInGrid(cbPrefix, chkboxName, startIndex, endIndex)
	{
		var objForm = document.forms[0]
		for(var i =  startIndex; i <= endIndex; i++)
		{
			if(objForm.elements[cbPrefix  + "_" + i + "_" + chkboxName] && objForm.elements[cbPrefix  + "_" + i + "_" + chkboxName].checked) return true
		}
		return false
	}

	function ChkAllByIndex(objForm,cbPrefix,isChecked,startIndex,endIndex)
	{
		startIndex = parseInt(startIndex)
		endIndex = parseInt(endIndex)
		for(var i =  startIndex; i <= endIndex; i++)
		{
			if(objForm.elements[cbPrefix + i])
				objForm.elements[cbPrefix + i].checked = isChecked
		}
	}

	function GetCheckBoxValuesByName(objCheckbox,isChecked,delimiter)
	{
		var strCheckedValues = ""
		if(arguments.length==1) delimiter = ","
		if(objCheckbox)
		{
			if(objCheckbox.length)
			{
				for(var i = 0; i < objCheckbox.length; i++)
				{
					if(objCheckbox[i].checked == isChecked)
						strCheckedValues += objCheckbox[i].value + delimiter
				}
				if(strCheckedValues.length > 0) strCheckedValues = strCheckedValues.substring(0,strCheckedValues.length - delimiter.length)
			}
			else
				strCheckedValues =  objCheckbox.value
		}
		return strCheckedValues;
	}

	function GetCheckBoxValuesByIndex(objForm,cbPrefix,startIndex,endIndex,isChecked,delimiter)
	{
		var strCheckedValues = ""
		if(arguments.length==4) delimiter = ","
		for(var i =  startIndex; i <= endIndex; i++)
		{
			if(objForm.elements[cbPrefix + i] && objForm.elements[cbPrefix + i].checked==isChecked) 
			strCheckedValues += objForm.elements[cbPrefix + i].value + delimiter
		}
		if(strCheckedValues.length > 0) strCheckedValues = strCheckedValues.substring(0,strCheckedValues.length - delimiter.length)
		return strCheckedValues;
	}

	//ListBox Functions
	function MoveItem(objSrc,objDest,isSelectedOnly) 
	{
		for(var i=objSrc.options.length-1;i>=0;i--) 
		{
			if(isSelectedOnly || objSrc.options[i].selected) 
			{
				objDest.options[objDest.options.length]=new Option(objSrc.options[i].text,objSrc.options[i].value) 
				objSrc.options[i]=null 
			}
		}
	}

	//objPos 1 means move down
	function SwapItem(objList,objPos)
	{
		if(objList.selectedIndex != - 1)
		{		
			var objTempText = objList.options[objList.selectedIndex].text
			var objTempValue = objList.options[objList.selectedIndex].value
			var selIndex = objList.selectedIndex
			if(objPos < 0 && selIndex ==0) return;
			if(objPos >0 && selIndex==objList.options.length-1) return;
			objList.options[selIndex] = new Option(objList.options[selIndex + objPos].text,objList.options[selIndex + objPos].value)
			objList.options[selIndex + objPos] = new Option(objTempText,objTempValue)				
			objList.selectedIndex = selIndex + objPos
		}
	}

	//Clear all Items in ListBox
	function ClearListItems(objList)
	{
		while(objList.Count > 0) objList.options[0] = null
	}

	//Get SelectedItems
	function GetSelectedListItems(objList,delimiter)
	{
		var strValue="",strText=""
		if(!delimiter) delimiter = ","
		for(var i = 0; i < objList.options.length; i++)
		{
			strValue+= objList.options[i].value + delimiter
			strText+= objList.options[i].text + delimiter
		}
		if(strValue.length>0)
		{
			strValue=strValue.substring(0,strValue.length - delimiter.length)
			strText=strText.substring(0,strValue.length - delimiter.length)
		}
		return new Array(strValue,strText)
	}


	//Key board Functions
	function isNumericKey(objTextBox,e,allowFloat)
	{
		var keyAscii = document.all?e.keyCode:e.which;
		if(keyAscii < 32) return true
		if(keyAscii>=48 && keyAscii<=57) 		
			return true
		else if(keyAscii==46)
		{
			if(allowFloat)
				return objTextBox.value.indexOf(".")==-1
			else 
				return false
		}
		return false;			
	}

	//Collection Class
	function NameValueCollection()
	{
		//Array to Hold Elements
		this.Elements = new Array()
		
		
		//Methods
		this.AddElement	= _AddNameValue
		this.RemoveElement = _RemoveNameValue
		this.GetValues		= _GetNameValueCollectionValues	
		this.GetKeys		= _GetNameValueCollectionKeys
	}


	function _NameValueElement(Key, Value, MarkedAsDelete)
	{
		this.Key				=	Key
		this.Value				=	Value
		this.MarkedAsDelete		=	MarkedAsDelete
	}

	function _AddNameValue(Key,Value)
	{
		if(String(Key)!="" && String(Key)!="undefined")
			this.Elements[Key] = new _NameValueElement(Key, Value, false)
	}

	function _RemoveNameValue(Key)
	{
		if(this.Elements[Key])
			this.Elements[Key].MarkedAsDelete = true
	}

	function _GetNameValueCollectionValues(Delimiter)
	{
	  var strValues = ""
		for(var a in this.Elements)
		{
		   if(!this.Elements[a].MarkedAsDelete)	
			   strValues +=this.Elements[a].Value + Delimiter
		}
		if(strValues.length > 0) strValues = strValues.substring(0,strValues.length - Delimiter.length)
		return strValues
	}	

	function _GetNameValueCollectionKeys(Delimiter)
	{
	  var strValues = ""
		for(var a in this.Elements)
		{
		   if(!this.Elements[a].MarkedAsDelete)	
			   strValues +=this.Elements[a].Key + Delimiter
		}
		if(strValues.length > 0) strValues = strValues.substring(0,strValues.length - Delimiter.length)
		return strValues
	}
	
	
	//UI Functions End---------------------------------------
	
	//List Select Edit Add Functions Start-------------------
	var curRow;
	var curEntity;
	var prevRowCss;

	function selectRow(obj, entityid)
	{
		if (curRow)
		{
			curRow.className = prevRowCss;
		}
		
		if(obj)
		{
		    prevRowCss = obj.className
			curRow = obj;
			curEntity = Trim(String(entityid));
			obj.className="SelectedRow";
		}		
		return;
	}

	function deleteRec(targetPage, querystr,message){
		var msg = "Are you sure you want to delete the selected record?"
		if(message)
			msg = message
		var rtnValue=false;
		if (curRow){
			rtnValue = window.confirm(msg)
			if (rtnValue==true){
				window.location.href=targetPage+"?m=d"+querystr+"&GID="+curEntity;
				return;
			}
		}
		else
			alert(GRID_ROWSELECT_REQ)
	}

	function editRec(targetPage, querystr,mode){
		if (curRow){
			if(!mode)
				window.location.href=targetPage+"?m=e"+querystr+"&GID="+curEntity;
			else
				window.location.href=targetPage+"?m=" + mode +querystr+"&GID="+curEntity;
			return;
		}
		else
			alert(GRID_ROWSELECT_REQ)
	}

	function addRec(targetPage, querystr){
		window.location.href=targetPage+"?m=a"+querystr;
		return;
	}
	
	function DoSort(argTargetPage, argQueryStr, argretValue,argPostType,argFormName){		
		if (argPostType == "Submit"){
			var frmName = eval("document." + argFormName)			
			frmName.Sort.value = argretValue
			frmName.submit();					
		}else{
			window.location.href=argTargetPage+"?"+argQueryStr+"&Sort="+argretValue;		
		}	
	}

	function ShowListDialog(w, h, targetPage, querystr, wName) {
		var l= (screen.width - w) / 2;
		var t = (screen.height - h) / 2;
		if (curRow){
			var windowprops="";
			windowprops = "top="+t+",left="+l+",width="+w+",height="+h+",";
			windowprops += "resizable=yes,status=yes,scrollbars=yes"
			var hWnd = window.open(targetPage+"?GID="+curEntity+querystr, "", windowprops);
		}
		else
			alert("Please make a selection");
	}
	
	//List Select Edit Add Functions End--------------------------
	
	//Pop up Dialog Function start--------------------------

	function ShowPrintDialog(w, h, targetPage, querystr, wName)
	{
		l= (screen.width - w) / 2;
		t = (screen.height - h) / 2;
		var windowprops = ("top="+t+",left="+l+",width="+w+",height="+h+","
			+ "resizable=yes,menubar=yes,status=yes,scrollbars=yes");
		var hWnd = window.open(targetPage+"?"+querystr, "", windowprops);
	}

	function ShowDialog(w, h, targetPage, querystr, wName)
	{
		if(targetPage.toUpperCase() == "SHOWVALUES.ASP")
		{
			targetPage = "../Windows/ShowRuleValues.aspx"
			wName = "RuleValueWin"
			w = 500
			h = 500
		}
		if(!wName)
			wName = ""
		var l= (screen.width - w) / 2;
		var t = (screen.height - h) / 2;
		var windowprops = ("top="+t+",left="+l+",width="+w+",height="+h+","
			+ "resizable=yes,status=yes,scrollbars=yes");
			
		var hWnd = window.open(targetPage+"?"+querystr, wName, windowprops);
	}
	
	function ShowCal(DateVal, targetPage, querystr, wName)
	{
		var w=220, h=230;
		var l = (screen.width - w) / 2;
		var t = (screen.height - h) / 2;
		if(DateVal!="" && isDateEx(DateVal))
		{
			var arrDate = getDate(DateVal)
			//querystr += ("&Mon=" + arrDate[1] + "&yr=" + arrDate[0] + "&dd=" + arrDate[2]);
			querystr +="&DateVal=" + DateVal
		}
		var windowprops = ("top="+t+",left="+l+",width="+w+",height="+h+","
			+ "resizable=no,status=no,scrollbars=no");
		var hWnd = window.open(targetPage+"?"+querystr, wName, windowprops);
	}

	//Pop up Dialog Function End--------------------------
	
	//Windows Location Change Function Start--------------
	
	function goBack(targetPage, querystr){
		window.location.href=targetPage + "?" + querystr;	
		return;
	}

	function goPage(selNameValue, targetPage, querystr){
		if(querystr.charAt(0) != "&")
			querystr = "&" + querystr
		if (curRow)	{
			window.location.href=targetPage+"?"+selNameValue+"="+curEntity+querystr;
			return;
		}
		else
			alert("Please make a selection");	
	}
	
	//Windows Location Change Function End--------------
	
	//Right Nav Bar Function Start--------------------------
	
	function HelpWindow(url,w,h,t,l)
	{
		var name = "help"
		l= (screen.width - w) / 2;
		t = (screen.height - h) / 2;
		args="width="+w+",height="+h+",top="+t+",left="+l+",resizable=Yes,scrollbars=Yes,status=0";
		window.open(url,name,args)
		hideHelpItem()
	}

	function AddToFavorite(PPage, queryStr)
	{
	  window.location.href = "../Admin/Favorites.aspx?" + queryStr + "&PPage=" + PPage + "&FavM=ADD"
	}
		
	function DeleteFavorite(PPage, queryStr)
	{
		window.location.href = "../Admin/Favorites.aspx?" + queryStr + "&PPage=" + PPage + "&FavM=DELETE"
	}
	
	
function showHideHelp(helpElementID, helpURL)
{
    return
    if(arguments.length == 1)
    {
        helpURL = ""
    }
    
    if(helpURL == "")
    {
        if(!helpElementID)
        {
            helpElementID = "dvHelp"
        }
        var objHelp = document.getElementById(helpElementID)
        if(objHelp)
        {
	        if (objHelp.style.display=='')
	        {
		        objHelp.style.display='none';
	        }
	        else
	        {
		        objHelp.style.display='';
	        }
	    }
    }
    else
    {
        HelpWindow(helpURL, 700, 500)
    }        	    
}

function ShowHideFilter(objImage)
{    
    
    if (objImage.src.toLowerCase().indexOf("maximize.gif") > -1)
    {
	    objImage.src = "../images/TopNavBar60/Minimize.gif"
	    objImage.title = "Maximize"
	    document.getElementById("dvFilter").style.display='none';
    }
    else
    {
	    objImage.src = "../images/TopNavBar60/Maximize.gif"		
	    objImage.title = "Minimize"
	    document.getElementById("dvFilter").style.display='';
    }    	    
}


//	// Page Help Function Start---------------------------
//	//Show Hide help
//	var objHHelpImage = new Image()
//	var objSHelpImage = new Image()
//	objHHelpImage.src = "../images/help/hhelp.gif"
//	objSHelpImage.src = "../images/help/shelp.gif"

//	function ShowHelp(SImageName,HImageName)
//	{
//		var objImage = document.images["imgHelp"]
//		var objHelp = document.getElementById("dvHelp")	
//		if(objImage.src.toLowerCase().indexOf("shelp")==-1)
//		{
//			objImage.src = SImageName
//			objImage.title = "Hide Help"
//			objHelp.style.display=""
//		}
//		else
//		{
//			objImage.src = HImageName
//			objImage.title = "Show Help"
//			objHelp.style.display="none"
//		}	
//	}
	// Page Help Function End---------------------------	

	//Start Date Check functions
	function y2k(number)
	{ 
		return (number < 1000) ? number + 1900 : number; 
	}

	function isDate(year, month, day)
	{
		if (!day) return false;
		var today = new Date();
		year = ((!year) ? y2k(today.getYear()):year);
		month = ((!month) ? today.getMonth():month-1);
		
		var test = new Date(year, month, day);
		if ((y2k(test.getYear()) == year) &&
		     (month == test.getMonth()) && (day == test.getDate()))
		{
		    return true;
		}
		else
		{
		    return false
		}
	}

	function isDateEx(strDate)
	{		
		var arrDate = getDate(strDate)
		return isDate(arrDate[0], parseInt(arrDate[1]) + 1, arrDate[2])
	}
	
	function isDateAfter(dateVal)
	{
		var objToday = new Date();
		var arrDate = getDate(dateVal);
		var prodDate = new Date(arrDate[0], arrDate[1], arrDate[2]);
		var currentDate = new Date(objToday.getFullYear(), objToday.getMonth(), objToday.getDate());
		return (prodDate > currentDate)
	}
	
	function getDate(dateVal)
	{
		return new Array(dateVal.substring(6,10), dateVal.substring(0,2) -1, dateVal.substring(3,5))
	}
//Cutomization Functions
function AddItem(lstAvail,lstSort)
	{
		var objRadioButton = lstSort.form.SortOrder
		if(lstAvail.selectedIndex !=-1)
		{
			for(var i = 0; i < lstSort.options.length; i++)
			{
				if(lstSort.options[i].value == lstAvail.options[lstAvail.selectedIndex].value)				
				return;	
			}
			lstSort.options[lstSort.options.length] = new Option(objRadioButton[1].value + "-" + lstAvail.options[lstAvail.selectedIndex].text,lstAvail.options[lstAvail.selectedIndex].value)
		}
	}
	function RemoveItem(lstSort)
	{
		if(lstSort.selectedIndex != -1)
			lstSort.options[lstSort.selectedIndex] = null
	}
	
	function SetSortOrder(objList,objRadioButton)
	{
		if(objList.selectedIndex != -1)
		{
			for(var i = 0; i < objRadioButton.length; i++)
			{
				if(objList.options[objList.selectedIndex].text.substring(0,objRadioButton[i].value.length)==objRadioButton[i].value)
					objRadioButton[i].checked = true
			}
		}
	}
	
	function ChangeSortOrder(objList,objRadioButton)
	{
		if(objList.selectedIndex !=-1)
		{			
			objList.options[objList.selectedIndex].text = objRadioButton.value + objList.options[objList.selectedIndex].text.substring(objRadioButton.value.length)
		}
	}
	
	function DataGrid(FieldText,FieldKey,IsSortable,IsSorted,SortOrder,Visible)
	{
		this.FieldText = FieldText
		this.FieldKey = FieldKey
		this.IsSortable = IsSortable
		this.IsSorted = IsSorted
		this.SortOrder = SortOrder
		this.Visible = Visible
	}
	
	
	function DateDiff(dtStart, dtEnd, interval, rounding) 
	{
		var iOut = 0;
		var startMsg = "Check the Start Date and End Date must be a valid date format."
		var intervalMsg = "Sorry the dateDiff function only acceptsd, h, m OR s intervals."

		var bufferA = Date.parse( dtStart ) ;
		var bufferB = Date.parse( dtEnd ) ;
				
		// check that the start parameter is a valid Date. 
		if ( isNaN (bufferA) || isNaN (bufferB) ) {
		    alert(startMsg);
		    return null
		}
		
		// check that an interval parameter was not numeric. 
		if (String(interval) == "undefined" ) {
		    alert(intervalMsg);
		    return null
		}
	    
		var number = bufferB-bufferA ;
	    if(interval=="MXDT")
			interval = "B"
		else if(interval=="HXDT")
			interval = "X"

		switch (interval.charAt(0).toUpperCase()){
		    case "D": case "Q": case "B": case "W": case "Y": 
		    case "DXDT": case "WXDT": case "QXDT": case "HXDT": case "YXDT":
		    case "X":
		        iOut = parseInt(number / 86400000) ;
		        if(rounding) iOut += parseInt((number % 86400000)/43200001) ;
		        if (interval.charAt(0).toUpperCase()=="X")
					iOut/=183;
		        if (interval.charAt(0).toUpperCase()=="Q")
					iOut/=92;
		        if (interval.charAt(0).toUpperCase()=="B")
					iOut/=30;
				if (interval.charAt(0).toUpperCase()=="W")
					iOut/=7;
				if (interval.charAt(0).toUpperCase()=="Y")
					iOut/=365;
		        break ;
		    case "H":
		        iOut = parseInt(number / 3600000 ) ;
		        if(rounding) iOut += parseInt((number % 3600000)/1800001) ;
		        break ;
		    case "M":
		        iOut = parseInt(number / 60000 ) ;
		        if(rounding) iOut += parseInt((number % 60000)/30001) ;
		        break ;
		    case "S":
		        iOut = parseInt(number / 1000 ) ;
		        if(rounding) iOut += parseInt((number % 1000)/501) ;
		        break ;
		    default:
				alert(intervalMsg);
				return null
		}
	    return iOut ;
	}

/* DataGrid Functions */ 
function IsGridComboSelected(StartRow, EndRow, gridControlName, checkboxName, comboName, errorMessage)
{
	var frm = document.forms[0]
	for(var i = StartRow,j = 1; i <= EndRow; i++)
	{
		if(frm.elements[gridControlName + "_" + i + "_" + checkboxName])
		{
			if(frm.elements[gridControlName + "_" + i + "_" + checkboxName].checked)
			{
				var objList = frm.elements[gridControlName + "_" + i + "_"  + comboName]
				if(isEmpty(objList.options[objList.selectedIndex].value))
				{
					alert(Replace(errorMessage,"{0}",j))
					objList.focus()
					return false
				}				
			}
			j++
		}
	}
	return true
}

/*Checkbox List Function */ 
function ChkAllCheckboxList(controlID, checkedValue)
{
	var frm = document.forms[0]
	var i = 0
	while(frm.elements[controlID + ":" +i])
	{
		frm.elements[controlID + ":" +i].checked = checkedValue 
		i++
	}
}

function SetDefaultSearchValue(objTextbox, defaultValue)
{
    if(isEmpty(objTextbox.value))
    {
        document.forms[0].elements[objTextbox.name].value = defaultValue
        document.forms[0].elements[objTextbox.name].className = "DefaultSearch"
    }
}

function ClearDefaultSearchValue(objTextbox, defaultValue)
{
    if(objTextbox.value == defaultValue)
    {
        document.forms[0].elements[objTextbox.name].value = ""
        document.forms[0].elements[objTextbox.name].className = ""
    }
}

/* Help Tooltip Functionality */
function getRealPos(i,which) 
{
	iPos = 0
	while (i!=null) 
	{
	 	iPos += i["offset" + which]
		i = i.offsetParent
	}
	return iPos
}


function ShowHelpTip(obj, helpText)
{
    if (document.getElementById) 
	{
	    var i = obj
	    
		if (i.tagName.toUpperCase() != "IMG")
		    return;
		    				
		dest = document.getElementById("dvHelpTip");
		if (dest) 
		{
		    dest.style.left = getRealPos(i,"Left") + 2
		    var xPos = parseInt(dest.style.left) + 400
		    var screenWidth = 1024
		    if(xPos > 1024)
		    {		        
		        dest.style.left  = xPos - 700
		    }
			dest.style.top = getRealPos(i,"Top") + i.offsetHeight  + 2
			dest.style.display = "block"	
		}		
		dest.innerHTML = helpText
	}
	if(document.layers)
	{
		dest=document.layers["dvHelpTip"]
		dest.x=e.x + 2
		dest.y=e.y + 2
		dest.document.write(sDest);
		dest.document.close();
		dest.visibility="visible"
		oLastItem=dest;
	}
}

function HideHelpTip()
{
    var obj = document.getElementById("dvHelpTip")
    if(obj)
    {
        obj.style.display = "none";
    }
}

function ClosestatusMsg(elementID)
{
    var obj = document.getElementById(elementID)
    if(obj)
    {
        obj.style.display = "none"
    }

}

function WizardCancel_Click(objButton, errorMessage)
{
    var retValue = window.confirm(errorMessage)
    var frm = document.forms[0]
    if(retValue)
    {
        DisableWizardButton(frm, "ctl00$MainContent$cmdPrev")
        DisableWizardButton(frm, "ctl00$MainContent$cmdNext")
        DisableWizardButton(frm, "ctl00$MainContent$cmdFinish")
    }
    return retValue
}

function DisableWizardButton(frm, btnPrefix)
{
    if(frm.elements[btnPrefix + "Top"])
    {
        frm.elements[btnPrefix + "Top"].disabled = true
    }
    
    if(frm.elements[btnPrefix + "Bottom"])
    {
        frm.elements[btnPrefix + "Bottom"].disabled = true
    }
    
}

function ShowSupportDialog(pPage)
{
   ShowDialog(825, 425, pPage, '');        
   hideHelpItem()
}

function ShowPrintCardDialog(CardID)
{
    var frmPrint = document.frmPrintCards
    frmPrint.CardGID.value = CardID 
    frmPrint.submit()
}


var processTimer = null

function OnDataLoadComplete()
{
    clearTimeout(processTimer)
    document.getElementById('lblDataLoadProgress').innerHTML = "Data Load Completed"
}

function UpdateProgress(processName, tableID)
{
    clearTimeout(processTimer)
    var progressValues = RunAJAXPage("Admin/GetProcessStatus.aspx", "ProcessName=" + processName, false)
    UpdateProgressUI(tableID, progressValues)
    if(parseInt(progressValues, 10) < 100)
    {
        processTimer = setTimeout("UpdateProgress('" + processName + "','" + tableID + "')", 200)
        document.getElementById('lblDataLoadProgress').innerHTML = "In Progess"
    }    
    else
    {
        OnDataLoadComplete()
    }    
}



var ajaxReq = null
function RunAJAXPage(url, qryString, asyncMode)
{
    if (window.XMLHttpRequest) 
    {
        ajaxReq = new XMLHttpRequest();        
    } 
    else if (window.ActiveXObject) 
    {
      ajaxReq = new ActiveXObject("Msxml2.XMLHTTP");
    }              
    if (ajaxReq) 
    {
      ajaxReq.open("GET", strKanBanPath + url + "?" + qryString, asyncMode);
      ajaxReq.onreadystatechange = onajaxComplete
      ajaxReq.send();
      
      if(!asyncMode)
      {
        return ajaxReq.responseText
      }
    }
}

function onajaxComplete()
{
    
}


function NUD_MouseDown(obj, e, imgWidth, imgHeight, imgOffset, incControl, allowNegative)
{
    if(!isNaN(obj.value))
    { 
      var curValue = parseInt(obj.value, 10)
      var incValue = 1
      var multiplier = 1
      var isInRegion = false
      if(incControl != null && !isNaN(incControl.value)) incValue = parseInt(incControl.value, 10)
      var tw = obj.offsetWidth
      if(obj.offsetWidth - e.offsetX <= imgWidth)
      {
	    if(e.offsetY >=0 && e.offsetY <=imgHeight)  isInRegion = true	        	    
	    if(e.offsetY >=imgHeight + imgOffset && e.offsetY <= 2 * imgHeight) 
	    {
	        isInRegion =true
	        multiplier = -1
        }	        
        if(isInRegion)
        {
            var diffValue = curValue + (multiplier * incValue)
            if(!allowNegative && diffValue < 0 ) diffValue = 0 
            obj.value = diffValue
        }            
      }  
    }      
}
