//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 isTrackingURLValid(val)
	{
	    if(isEmpty(val)) return true
	    val = val.toLowerCase()
	    if(val.charAt(val.length -1) != "=") return false;
	    var arrInvalidValues = ["script", "javascript", "<", ">", "\""]
	    
	    for(var i = 0; i < arrInvalidValues.length; i++)
	    {
	        if(val.indexOf(arrInvalidValues[i]) >-1)
	        {
	            return false
	        }
	    }
	    return true
	}

	//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" || objVC.type=="select-multiple")
					{
						if(objVC.selectedIndex > -1)
						    controlValue = "objVC.options[objVC.selectedIndex].value"
						else
						    controlValue = "";   
					}
					else
						controlValue = "objVC.value"
					if(eval(this.Controls[i].ValidationFunction + "(" + controlValue + ")"))
					{
						if(this.Controls[i].ValidationFunction!="!isEmail") 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 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;

	function selectRow(obj, entityid)
	{
		if (curRow)
		{
			curRow.className = "";
		}
		if(obj)
		{
			curRow = obj;
			curEntity = Trim(String(entityid));
			obj.className="curRow";
		}
		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 ShowHiddenDialog(w, h, targetPage, querystr)
	{
		var windowprops = ("top=0,left=0,width="+w+",height="+h+","
			+ "resizable=no,status=no,scrollbars=no,titlebar=no,toolbar=no,menubar=no");
			
		var hWnd = window.open(targetPage+"?"+querystr, "", windowprops);
	}

	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(!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=200, h=206;
		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]);
		}
		var windowprops = ("top="+t+",left="+l+",width="+w+",height="+h+","
			+ "resizable=no,status=no,scrollbars=no");
		var hWnd = window.open(targetPage + "?" + querystr + "&win=dialog", 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 (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, bShowModal)
	{
		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";
		if(bShowModal == true)
		{
			window.showModalDialog(url,"About", "dialogHeight:" + h + "px; dialogWidth:" + w + "px; dialogTop:" + t + "px; dialogLeft: " + l + "px; edge: Raised; center: Yes; help: No; resizable: No; status: No;");		
		}
		else
		{
			window.open(url,name,args)
		}
	}

	function AddToFavorite(PPage, queryStr)
	{
	  window.location.href = "../Admin/Favorites.asp?" + queryStr + "&PPage=" + PPage + "&FavM=ADD"
	}
		
	function DeleteFavorite(PPage, queryStr)
	{
		var strFeatures  = "top=" + (screen.height - 300) / 2 + ",left=" + (screen.width - 250) / 2;
			strFeatures += ",width=250,height=300,resizable=1,scrollbars=1";
		window.open ("../Admin/Favorites.asp?" + queryStr + "&PPage=" + PPage + "&FavM=DELETE", "win", strFeatures,"")
	}
	
	//'RightNav Expand and Collapse
	
	var objImageUp = new Image()
	objImageUp.src = "../images/RightNavBar/BarUp.gif"
	function SwapBarImage(objImage,divName)
	{
		if(objImage.src.toUpperCase().indexOf("UP") == -1)
		{
			objImage.src = objImageUp.src
			document.all(divName).style.display = ""
		}
		else
		{
			objImageUp.src = objImage.src
			objImage.src = "../images/RightNavBar/BarDown.gif"
			document.all(divName).style.display = "none"
		}
	}
	
	function ShowHideRBar(displayStr)
	{
		document.getElementById("ScreenMiddle").style.display=displayStr
		document.getElementById("ScreenRight").style.display=displayStr
		if(displayStr=="none")
			document.getElementById("ScreenLeft").style.width="100%"
		else
			document.getElementById("ScreenLeft").style.width="84%"
	}
	function ToggleRBar()
	{
		var objImage = document.images["imgRBar"] 
		var filenameSuffix = ""
		if(objImage.src.toLowerCase().indexOf("green") != -1) filenameSuffix = "Green"
		if(objImage.src.toLowerCase().indexOf("red") != -1) filenameSuffix = "Red"
		
		if(objImage.src.toLowerCase().indexOf("open2")==-1)
		{
			objImage.src = "../images/RightNavBar/WOpen2" + filenameSuffix + ".jpg"
			ShowHideRBar('')
			objImage.title = "Hide Options"
		}
		else
		{
			objImage.src = "../images/RightNavBar/WOpen" + filenameSuffix + ".jpg"
			ShowHideRBar('none')
			objImage.title = "Show Options"
		}	
	}
	
	//Right Nav Bar Function End--------------------------


	// 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; 
	}

    // all parameters are 1 based numbers
	function isDate(year, month, day)
	{
		var today = new Date();
		if(day <= 0 || day > 31) return false;
		if(month <= 0 || month > 12) return false;
		if(year < 1899 || year > 9000) return false;
		month = month - 1; // 0 based month is needed by Date object
		var test = new Date(year, month, day);
		if ((y2k(test.getYear()) == year) &&
		     (month == test.getMonth()) && (day == test.getDate()))
		{
		    return true;
		}
		else
		{
		    return false
		}
	}
	
	function doParseDate(val)
	{
		var arrDate = getDate(val);
		return new Date(arrDate[0], arrDate[1], arrDate[2]);
	}

	function isDateEx(dateVal)
	{
	    var arrRaw = new Array();
	    var nTmp;
		arrRaw = dateVal.split(dtSeparator)
		for(var i=0; i < arrRaw.length; i++)
		{
			if(!isInteger(arrRaw[i]))
			{
				return false;
			}
		}
		
		var arrDate = getDate(dateVal, true)
		return isDate(arrDate[0], parseInt(arrDate[1], 10) + parseInt(1, 10), 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)
	}

	//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, IsMandatory, IsUIControl)
	{
		this.FieldText = FieldText
		this.FieldKey = FieldKey
		this.IsSortable = IsSortable
		this.IsSorted = IsSorted
		this.SortOrder = SortOrder
		this.Visible = Visible
		this.IsMandatory = IsMandatory
		this.IsUIControl = IsUIControl
	}
	
	
	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 "X":
		        iOut = parseInt(number / 86400000) ;
		        if(rounding) iOut += parseInt((number % 86400000)/43200001) ;
		        if (interval.charAt(0).toUpperCase()=="Q")
					iOut/=90;
		        if (interval.charAt(0).toUpperCase()=="B")
					iOut/=30;
				if (interval.charAt(0).toUpperCase()=="W")
					iOut/=7;
				if (interval.charAt(0).toUpperCase()=="Y")
					iOut/=365;
				if (interval.charAt(0).toUpperCase()=="X")
					iOut/=180;
		        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 ;
	}
	
	function FormatNumber(nNum, nDecimal)
	{
		if (isNaN(parseInt(nNum))) return "0";
		nNum *= Math.pow(10,nDecimal);
		nNum = Math.round(Math.abs(nNum))
		nNum /= Math.pow(10,nDecimal);
		return nNum
	}