var m_DataChanged=false;
var m_codeWindow=null;
var m_dateWindow=null;
var m_sFieldName=null;
var m_InjuredAdded=false;

function pageLoaded()
{
document.dateSelected=dateSelected;
document.onCodeClose=onCodeClose;
document.OnFormSubmit=OnFormSubmit;
}

function submitForm(i)
{			
	if(OnFormSubmit(i))
	{
		document.frmData.submit();
	}
}
function OnFormSubmit(i)
{
	document.frmData.formaction.value=i;
	//do not enforce required fields if submitting to temp storage
	if (i==1)
		return true;
	var ret = validateForm();
	return ret;
}

function validateForm()
{
	var v=null;
	var sElemName='';
	v=eval("document.frmData.sys_notreqnew");
	var sNotReqNew=new String("");
	if(v!=null)
		sNotReqNew=new String(document.frmData.sys_notreqnew.value);
	var arrNR=sNotReqNew.split("|");
	var sReq=new String(document.frmData.sys_required.value);
	var bIsNew=false;
	//if(getCurrentID()==0)
		//bIsNew=true;
	var obj;
	
	var arr=sReq.split("|");
	var c=arr.length;
	var objElem=null;
	for(var i=0;i<=c;i++)
	{
		var objElem=null;
		if(arr[i]!="")
			objElem=eval('document.frmData.'+arr[i]);
			
		if(objElem!=null && !objElem.disabled && objElem.style.display!='none')
		{			
			//go to next iteration if the div or row this control is in has been turned invisible,
			//meaning it cannot get focus
			try{objElem.focus();}
			catch (ex) {continue;}

			var s=new String(objElem.value);
			if(replace(s," ","")=="" || arr[i].substring(arr[i].length-4,arr[i].length)=="_cid" && s=="0" || arr[i].substring(arr[i].length-4,arr[i].length)=="_lst" && s=="0" || objElem.type=='select-one' && s=="0")
			{
				if(!bIsNew || (bIsNew && !isInArray(arrNR,arr[i])))
				{
					if(arr[i].substring(arr[i].length-4,arr[i].length)=="_cid" || arr[i].substring(arr[i].length-4,arr[i].length)=="_lst")
					{
						objElem=eval('document.frmData.'+arr[i].substring(0,arr[i].length-4));					
					}
					//if this is code or codelist identify the input and see if it is disabled
					if (!objElem.disabled)
						{
						if(objElem!=null && haveProperty(objElem,"title"))
							sElemName=objElem.title;
							
						if(sElemName.length>0)
							alert(sElemName+' is a required field, please enter a value for '+sElemName);
						else
							alert("Not all required fields contain a value. Please enter data into all required fields.");
						if(objElem!=null && (objElem.type=="textarea" || objElem.type=="text" || objElem.type=="select-one"))
						{
							objElem.focus();
							objElem.style.backgroundColor="lightsalmon";
						}
						//document.frmData.sysCmdConfirmSave.value=0;
						//document.frmData.sysCmdQueue.value='';
						return false;
						}
				}
			}
			else
				objElem.style.backgroundColor="lightyellow"
			
		}
		objElem=null;
	}
	return true;

}

function setDataChanged(b)
{
	m_DataChanged=b;
	
	return b;
}

function haveProperty(obj, sPropName)
{
	for(p in obj)
	{
		if(p==sPropName)
			return true;
	}
	return false;
}

function selectCode(sCodeTable,sFieldName)
{
	if(m_codeWindow!=null)
		m_codeWindow.close();
	
	m_sFieldName=sFieldName;
	
	self.lookupCallback="lookupCallback_Code";
	var s = "quicklookup.asp?find=" + sCodeTable + "&type=code";
		
	m_codeWindow=window.open(s,'codeWnd',
		'width=500,height=350'+',top='+(screen.availHeight-350)/2+',left='+(screen.availWidth-500)/2+',resizable=yes,scrollbars=yes');
	
	return false;
}

function lookupCallback_Code(arr)
{
	arr=arr.split(fld);
	var objCtrl=eval("document.frmData."+m_sFieldName);
	var bAdd=true;
	var lId=arr[0];
	var sText=arr[1];
	
	for(var i=0;i<objCtrl.length;i++)
	{
		if(objCtrl.options[i].value==lId)
			bAdd=false;
	}
	if(bAdd)
	{
		var objOption = new Option(sText, lId, false, false);
		objCtrl.options[objCtrl.length] = objOption;
		objCtrl=null;
		objCtrl=eval("document.frmData." + m_sFieldName+"_lst");
		if(objCtrl!=null)
		{
			if(objCtrl.value!="" && objCtrl.value.substring(objCtrl.value.length,1)!=",")
				objCtrl.value=objCtrl.value+",";
			objCtrl.value=objCtrl.value+lId;
		}

	}
	

}

function deleteSelCode(sFieldName)
{
	var objCtrl=null;
	if(m_codeWindow!=null)
		m_codeWindow.close();
	objCtrl=eval('document.frmData.'+sFieldName);
	if(objCtrl==null)
		return false;
	if(objCtrl.selectedIndex<0)
		return false;
	
	var bRepeat=true;
	while(bRepeat)
	{
		bRepeat=false;
		for(var i=0;i<objCtrl.length;i++)
		{
			// remove selected elements
			if(objCtrl.options[i].selected)
			{
				objCtrl.options[i]=null;
				bRepeat=true;
				break;
			}
		}
	}
	// Now create ids list
	var sId="";
	for(var i=0;i<objCtrl.length;i++)
	{
			if(sId!="")
				sId=sId+",";
			sId=sId+objCtrl.options[i].value;
	}
	objCtrl=null;
	objCtrl=eval("document.frmData." + sFieldName+"_lst");
	if(objCtrl!=null)
		objCtrl.value=sId;
	
	setDataChanged(true);

	return true;
}

function onCodeClose()
{
	m_codeWindow=null;
	m_dateWindow=null;
	return true;
}

function phoneLostFocus(objCtrl)
{
	if(objCtrl.value.length==0)
			return false;
	
	var sValue=new String(objCtrl.value);
	sValue=stripNonDigits(sValue);
	
	if(sValue.length<10)
	{
		// Invalid phone number
		objCtrl.value="";
		alert("Invalid phone number. Please enter valid phone number. Example: (734) 462-5800 or (734) 462-580 Ext:9999");
		objCtrl.focus();
		return false;
	}
	
	// Reformat (###) ###-####  Ext:#####
	var sExt=sValue.substr(10);
	if(sExt!="")
		sExt=" Ext:" + sExt;
	sValue="("+sValue.substr(0,3)+")"+" "+sValue.substr(3,3)+"-"+sValue.substr(6,4)+sExt;
	
	objCtrl.value=sValue;
	return true;
}

function phoneGotFocus(objCtrl)
{
	if(objCtrl.value.length==0)
			return false;
	
	var sValue=new String(objCtrl.value);
	sValue=stripNonDigits(sValue);
	var sExt=sValue.substr(10);
	if(sExt!="")
		sExt=" Ext:" + sExt;
	objCtrl.value=sValue.substr(0,10)+sExt;
	objCtrl.select();

}

function stripNonDigits(str) {
	return str.replace(/[^0-9]/g,"")
}

function zipLostFocus(objCtrl)                                                                                                                                       
{                                                                                                                                                                    
	// #####-#### or A#A-#A#(canada) Zip Format	   edited by ravi on 5/2/3                                                                                           
	                                                                                                                                                                 
	if(objCtrl.value.length==0)                                                                                                                                      
			return false;                                                                                                                                            
	if(canadaZip(objCtrl)==true)                                                                                                                                     
	{                                                                                                                                                                
		return true;                                                                                                                                                 
	}                                                                                                                                                                
	                                                                                                                                                                 
	var sValue=new String(objCtrl.value);                                                                                                                            
	var sLetter="";                                                                                                                                                  
	if(sValue.substr(0,1)<'0' || sValue.substr(0,1)>'9')                                                                                                             
		sLetter=sValue.substr(0,1);                                                                                                                                  
		                                                                                                                                                             
		                                                                                                                                                             
	sValue=stripNonDigits(sValue);                                                                                                                                   
	//edited by ravi 05/02/03                                                                                                                                        
	if(((sValue.length==5 || sValue.length==9) && sLetter==""))                                                                                
	{                                                                                                                                                                
		if(sValue.length>5)                                                                                                                                          
		{                                                                                                                                                            
			if(sLetter=="")                                                                                                                                          
				sValue=sValue.substr(0,5)+"-"+sValue.substr(5);                                                                                                      
			//else	ravi                                                                                                                                             
			//sValue=sLetter+sValue.substr(0,4)+"-"+sValue.substr(4);                                                                                                
		}                                                                                                                                                            
		else                                                                                                                                                         
		{                                                                                                                                                            
			if(sLetter!="")                                                                                                                                          
				sValue=sLetter+sValue;                                                                                                                               
		}                                                                                                                                                            
		objCtrl.value=sValue;                                                                                                                                        
		return true;                                                                                                                                                 
	}                                                                                                                                                                
	else                                                                                                                                                             
	{                                                                                                                                                                
		alert("Invalid ZIP code entry. Please enter valid ZIP code.");                                                                                               
		objCtrl.value="";                                                                                                                                            
		objCtrl.focus();                                                                                                                                             
		return false;                                                                                                                                                
	}                                                                                                                                                                
}   
function canadaZip(obj)                                                                                                                                              
{                                                                                                                                                                    
	if(obj.value.length==0)                                                                                                                                          
	return false;                                                                                                                                                    
	var str=obj.value;                                                                                                                                               
	                                                                                                                                                                 
	if(str.replace(/[a-z][0-9][a-z]-[0-9][a-z][0-9]/i,"")=="")                                                                                                       
		{                                                                                                                                                            
		                                                                                                                                                             
		return true;                                                                                                                                                 
		                                                                                                                                                             
		}                                                                                                                                                            
	else                                                                                                                                                             
		{return false;}                                                                                                                                              
}  
                          
function dateSelected(sDay, sMonth, sYear)
{
	var objCtrl=null;
	if(m_dateWindow!=null)
		m_dateWindow.close();
	objCtrl=eval('document.frmData.'+m_sFieldName);
	if(objCtrl!=null)
	{
		sDay=new String(sDay);
		if(sDay.length==1)
			sDay="0"+sDay;
		sMonth=new String(sMonth);
		if(sMonth.length==1)
			sMonth="0"+sMonth;
		sYear=new String(sYear);
			
		objCtrl.value=formatDate(sYear+sMonth+sDay);
		//A Virendra so that lossfocus will be called
		objCtrl.focus();
	}
	m_sFieldName="";
	m_dateWindow=null;
	setDataChanged(true);
	return true;
}

function selectDate(sFieldName)
{
	if(m_dateWindow!=null)
		m_dateWindow.close();
		
	m_sFieldName=sFieldName;
	m_dateWindow=window.open('calendar.html','dateWnd',
		'width=230,height=230'+',top='+(screen.availHeight-230)/2+',left='+(screen.availWidth-230)/2+',resizable=yes,scrollbars=no');
	
	return false;
}

function formatDate(sParamDate)
{
	var sDateSeparator;
	var iDayPos=0, iMonthPos=0;
	var d=new Date(1999,11,22);
	var s=d.toLocaleString();
	var sRet="";
	var sDate=new String(sParamDate);
	if(sDate=="")
		return "";
	iDayPos=s.indexOf("22");
	iMonthPos=s.indexOf("11");
	//if(IE4)
	//	sDateSeparator=s.charAt(iDayPos+2);
	//else
		sDateSeparator="/";
	if(iDayPos<iMonthPos)
		sRet=sDate.substr(6,2) + sDateSeparator + sDate.substr(4,2) + sDateSeparator + sDate.substr(0,4);
	else
		sRet=sDate.substr(4,2) + sDateSeparator + sDate.substr(6,2) + sDateSeparator + sDate.substr(0,4);
	return sRet;
}

function formatTime(sParamTime)
{
	if(sParamTime=="")
		return "";
	var sTime=new String(sParamTime);
	return sTime.substr(0,2) + ":" + sTime.substr(2,2);
}

function getdbDate(sDate)
{
	if(sDate=="")
		return "";
	var d=new Date(sDate);
	var sYear=new String(d.getFullYear());
	var sMonth=new String(d.getMonth()+1);
	var sDay=String(d.getDate());
	if(sMonth.length==1)
		sMonth="0" + sMonth;
	if(sDay.length==1)
		sDay="0" + sDay;
	
	return sYear+sMonth+sDay;
}

function getdbTime(sTime)
{
	if(sTime=="")
		return "";
	var arr=sTime.split(":");
	if(arr.length!=2)
		return "";
	
	return arr[0]+""+arr[1]+"00";
}

function dateLostFocus(sCtrlName)
{
	var t=new Date();
	//Virendra y-year, m-month,d-day
	var y,m,d 
	var sDateSeparator;
	var iDayPos=0, iMonthPos=0;
	var d=new Date(1999,11,22);
	var s=d.toLocaleString();
	var sRet="";
	var objFormElem=eval('document.frmData.'+sCtrlName);
	var sDate=new String(objFormElem.value);
	var iMonth=0, iDay=0, iYear=0;
	var monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	if(sDate=="")
		return "";
	iDayPos=s.indexOf("22");
	iMonthPos=s.indexOf("11");
	//if(IE4)
	//	sDateSeparator=s.charAt(iDayPos+2);
	//else
		sDateSeparator="/";
	var sArr=sDate.split(sDateSeparator);
	if(sArr.length==3)
	{
		sArr[0]=new String(parseInt(sArr[0],10));
		sArr[1]=new String(parseInt(sArr[1],10));
		sArr[2]=new String(parseInt(sArr[2],10));
		// Classic leap year calculation
		if (((parseInt(sArr[2],10) % 4 == 0) && (parseInt(sArr[2],10) % 100 != 0)) || (parseInt(sArr[2],10) % 400 == 0))
			monthDays[1] = 29;
		if(iDayPos<iMonthPos)
		{
			// Date should be as dd/mm/yyyy
			if(parseInt(sArr[1],10)<1 || parseInt(sArr[1],10)>12 ||  parseInt(sArr[0],10)<0 || parseInt(sArr[0],10)>monthDays[parseInt(sArr[1],10)-1])
				objFormElem.value="";
		}
		else
		{
			// Date is something like mm/dd/yyyy
			if(parseInt(sArr[0],10)<1 || parseInt(sArr[0],10)>12 ||  parseInt(sArr[1],10)<0 || parseInt(sArr[1],10)>monthDays[parseInt(sArr[0],10)-1])
				objFormElem.value="";
		}
		// Check the year
		if(parseInt(sArr[2],10)<10 || (sArr[2].length!=4 && sArr[2].length!=2))
			objFormElem.value="";
		// If date has been accepted
		if(objFormElem.value!="")
		{
			// Format the date
			if(sArr[0].length==1)
				sArr[0]="0" + sArr[0];
			if(sArr[1].length==1)
				sArr[1]="0" + sArr[1];
			if(sArr[2].length==2)
				sArr[2]="19"+sArr[2];
			if(iDayPos<iMonthPos)
				objFormElem.value=formatDate(sArr[2] + sArr[1] + sArr[0]);
			else
				objFormElem.value=formatDate(sArr[2] + sArr[0] + sArr[1]);
				
			//Virendra Selected date cann't be greater than current date
			var y=t.getYear()+'';
			var m=t.getMonth()+1+'';
			if(m.length==1) m='0'+m;
			var d=t.getDate()+'';
			if(d.length==1)d='0'+d;
			var dd = getdbDate(objFormElem.value)
			var ss = y+m+d
			if (dd > ss) 
			{
				alert("selected date cannot be later than today");
				objFormElem.value = ""
				objFormElem.focus();
			}
				
		}
	}
	else
		objFormElem.value="";
	return true;
}

function timeLostFocus(sCtrlName)
{
	var objFormElem=eval('document.frmData.'+sCtrlName);
	var sTime=new String(objFormElem.value);
	if(sTime=="")
		return true;
	sTime=sTime.toUpperCase();
	var sArr=sTime.split(":");
	if(sArr.length!=2)
	{
		alert("Time should be in hh:mm format");
		objFormElem.value="";
		return true;
	}
	if(sArr[0]=="" || sArr[1]=="" || isNaN(parseInt(sArr[0])) || isNaN(parseInt(sArr[1])))
	{
		objFormElem.value="";
		return true;
	}
	sArr[0]=new String(parseInt(sArr[0],10));
	sArr[1]=new String(parseInt(sArr[1],10));

	
		if(parseInt(sArr[0],10)<0 || parseInt(sArr[0],10)>12 || parseInt(sArr[1],10)<0 || parseInt(sArr[1],10)>59)
		{
			objFormElem.value="";
			return true;
		}
		if(sArr[0].length==1)
			sArr[0]="0" + sArr[0];
		if(sArr[1].length==1)
			sArr[1]="0" + sArr[1];
		objFormElem.value=formatTime(sArr[0]+sArr[1]);

	return true;
}

function numLostFocus(objCtrl)
{
	if(objCtrl.value.length==0)
			return false;
	if(isNaN(parseFloat(objCtrl.value)))
		objCtrl.value="";
	else
		objCtrl.value=parseFloat(objCtrl.value);
		//Virendra if vehicle year then take first 4 character only
		if (objCtrl.name == "vehvehicleyear")
		{
			if (objCtrl.value.length >4)
			{
				alert("invalid year") 
				objCtrl.value=""
			}
		}	
		
		//objCtrl.value=parseFloat(objCtrl.value);
	return true;
}

function currencyLostFocus(objCtrl)
{
	var dbl=objCtrl.value;
	if(dbl.length==0)
			return false;
			
	if(isNaN(parseFloat(dbl))){
		objCtrl.value="";
		return false;
	}
	
	//round to 2 places
	
	dbl=parseFloat(dbl);
	dbl=dbl.toFixed(2);
	objCtrl.value=dbl;
	return true;
}

function replace(sSource, sSearchFor, sReplaceWith)
{
	var arr = new Array();
	arr=sSource.split(sSearchFor);
	return arr.join(sReplaceWith);
}

function ssnLostFocus(objCtrl)
{
	// ###-##-####
	/* 
	if(objCtrl.value.length==0)
			return false;
	var sValue=new String(objCtrl.value);
	sValue=stripNonDigits(sValue);
	if(sValue.length!=9)
	{
		alert("Please enter valid SSN number.");
		objCtrl.value="";
		objCtrl.focus();
		return false;
	}
	objCtrl.value=sValue.substr(0,3)+"-"+sValue.substr(3,2)+"-"+sValue.substr(5,4);
	return true;
	*/
	if(objCtrl.value.length==0)
			return false;
	var sValue=new String(objCtrl.value);
	var sCheck=new String();
	//check is 9 digits
	sCheck=stripNonDigits(sValue);
	if(sCheck.length!=9)
	{
		alert("Please enter valid SSN (###-##-####) or TaxID (##-#######).");
		objCtrl.value="";
		objCtrl.focus();
		return false;
	}
	//user entered SSN with dashes
	if(sValue.length==11)
	{
		if(sValue.charAt(3)!="-" || sValue.charAt(6)!="-")
		{
			alert("Please enter valid SSN (###-##-####) or TaxID (##-#######).");
			objCtrl.value="";
			objCtrl.focus();
			return false;
		}
		return true;	
	}		
	
	//user entered a tax id with dashes
	if(sValue.length==10)
	{
		if(sValue.charAt(2)!="-")
		{
			alert("Please enter valid SSN (###-##-####) or TaxID (##-#######).");
			objCtrl.value="";
			objCtrl.focus();
			return false;
		}
		return true;
	}
	//fall through:  if user did not add dashes, default to SSN ###-##-####
	objCtrl.value=sCheck.substr(0,3)+"-"+sCheck.substr(3,2)+"-"+sCheck.substr(5,4);
	return true;
	
}

