//////////////////////////////////////////////////////////////////////////////////////////////////
// File            : validate.js
// Description     : validating user input according to the locale setting
// Version         : 1.0
// Created         :
// Author (s)      : Sachin Doke
// History		   : 
//					 25-Sep-2002 : added function to validate postal code and telephone number.
//					 26-Sep-2002 : added function to check the end date and start date.
//					 04-Dec-2002 : added a code for checking date format like ddmmyyyy/mmddyyyy	
// Copyright Illusion, Licensed by Imre Ltd

/////////////////////////////////////////////////////////////////////////////////////////////////

var ErrStr='';
var dateFormat,timeFormat,decimalSeparator,digitSeparator;
var countryCode;
var nretVal=true;
var isProcitDate=false;
var isProcitTime=false;

//Error message variables for Dutch and English error messages according to the country code
var cLeapYearMsg;
var cNonLeapYearMsg;
var cInvalidDateMsg;
var cInvalidDateSeparatorMsg;

var cInvalidDayMsg;
var cInvalidMonthMsg;
var cInvalidYearMsg;

var cInvalidTimeMsg;
var cInvalidTimeSeparatorMsg;

var cInvalidHourMsg;
var cInvalidMinuteMsg;
var cInvalidSecondMsg;

var cInvalidNumberMsg;
var cNotANumberMsg;
var cInvalidDecimalSeparator;

var cRequiredFieldMsg;
var cGeneralInvalidMsg;

var cZipCodeErrMsg;
var cTelNumErrMsg;

var cStartEndDateErrMsg;

var cQuoteErrMsg;

var TwoDaysCheckErrMsg;

var arrSDate='';
var arrEDate='';

var temp2Day='';

function validateAll(objform,cCode)
{
	var i, obj,retval;
	var cType;
	retval=true;
	switch(cCode) 
	{ 
		case 1043:  //Dutch
			dateFormat='dmy';
			timeFormat='hms';
			decimalSeparator=',';
			digitSeparator='.';
			countryCode=1043;

			cLeapYearMsg = "Deze datum is niet toegestaan." + '\n';
			cNonLeapYearDay31Msg="De dag moet tussen de 1 en 31 vallen voor deze maand" + '\n';
			cNonLeapYearDay30Msg="De dag moet tussen de 1 en 30 vallen voor deze maand." + '\n';
			cNonLeapYearDay28Msg="De dag moet tussen de 1 en 28 vallen voor de maand februari." + '\n';
					
			cInvalidDateMsg="Datumformaat is ongeldig" + '\n';
			cInvalidDateSeparatorMsg="Datum scheidingsteken is ongeldig" + '\n';

			cInvalidDayMsg="Ongeldige dag in de volgende datum: " + '\n';
			cInvalidMonthMsg="Ongeldige maand in de volgende datum: " + '\n';
			cInvalidYearMsg="Ongeldig jaar in de volgende datum: " + '\n'; 

			cInvalidTimeMsg="Tijdformaat is ongeldig" + '\n';
			cInvalidTimeSeparatorMsg="Tijd scheidingsteken is ongeldig" + '\n';

			cInvalidHourMsg="Ongeldig uur in de volgende tijd: " + '\n';
			cInvalidMinuteMsg="Ongeldige minuut in de volgende tijd:  " + '\n';
			cInvalidSecondMsg="Ongeldige seconde in de volgende tijd: " + '\n';

			cInvalidNumberMsg="Nummerformaat is ongeldig" + '\n';
			cNotANumberMsg="Het volgende veld heeft een ongeldig nummer: " + '\n';
			cInvalidDecimalSeparator="Ongeldig getal scheidingsteken." + '\n';

			cRequiredFieldMsg="Het volgende veld is verplicht: " + '\n';
			
			cZipCodeErrMsg="Ongeldige postcode:" + '\n';
			cTelNumErrMsg="Ongeldig telefoonnummer" + '\n';
			
			cStartEndDateErrMsg="Einddatum dient na de startdatum te liggen." + '\n';
			
			cQuoteErrMsg="Waarde bevat dubbele quote." + '\n';
			TwoDaysCheckErrMsg="Datum verschil moet kleiner of gelijk zijn aan 2."  + '\n';
		break;
		
		case 1033:	//English 
			dateFormat='mdy';
			timeFormat='hms';
			decimalSeparator='.';
			digitSeparator=',';
			countryCode=1033;

			cLeapYearMsg="Description: Day must be between 1 to 29 for the month of February in Leap Year." + '\n';
			cNonLeapYearDay31Msg="Description: Day must be between 1 to 31 for this month." + '\n';
			cNonLeapYearDay30Msg="Description: Day must be between 1 to 30 for this month." + '\n';
			cNonLeapYearDay28Msg="Description: Day must be between 1 to 28 for the month of February." + '\n';
					
			cInvalidDateMsg="Date format is invalid!" + '\n';
			cInvalidDateSeparatorMsg="Date separator is invalid!" + '\n';

			cInvalidDayMsg="Invalid Day in following Date field: " + '\n';
			cInvalidMonthMsg="Invalid Month in following Date field: " + '\n';
			cInvalidYearMsg="Invalid Year in following Date field: " + '\n';

			cInvalidTimeMsg="Time format is invalid!" + '\n';
			cInvalidTimeSeparatorMsg="Time separator is invalid." + '\n';

			cInvalidHourMsg="Invalid Hour in following Time field: " + '\n';
			cInvalidMinuteMsg="Invalid Minute in following Time field: " + '\n';
			cInvalidSecondMsg="Invalid Second in following Time field: " + '\n';

			cInvalidNumberMsg="Number format is invalid" + '\n';
			cNotANumberMsg="Following field contains invalid number: " + '\n';
			cInvalidDecimalSeparator="The decimal separator is Invalid." + '\n';

			cRequiredFieldMsg="Following field must be filled: " + '\n';

			cZipCodeErrMsg="Following field contains invalid PostCode:" + '\n';
			cTelNumErrMsg="Invalid Telephone Number!!" + '\n';
			
			cStartEndDateErrMsg="End date is less then Start Date." + '\n';
			
			cQuoteErrMsg="Value contains Single/Double Quote." + '\n';
			TwoDaysCheckErrMsg="Date Difference must be less than equals to 2"  + '\n';
		break;
	}
	for(i=0;i<objform.elements.length;i++)
	{	
		obj=objform.elements[i];
		
		if(obj.controlType)
		{	
			cType=obj.controlType
			cType=cType.toLowerCase();
			
			switch(cType) 
			{ 
				case 'date': 
					var cVal;
					cVal=checkRequired(obj);
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkExtDate(obj,countryCode);
						if(tempStr!=true)
						{
							if(tempStr!=true && tempStr!='') 
							{
								ErrStr = ErrStr + tempStr + '\n';
							}
						}
					}
				break;

				case 'time': 
					var cVal;
					cVal=checkRequired(obj);
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkExtTime(obj,countryCode);
						if(tempStr!=true)
						{
							ErrStr = ErrStr + tempStr + '\n';
						}
					}
					break;

				case 'number': 
					cVal=checkRequired(obj);
					if(checkSigns(obj)!=0)
					{
						ErrStr = ErrStr + cQuoteErrMsg  + '\n';
					}
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkExtNumber(obj,countryCode);
						if(tempStr!=true)
						{
							ErrStr = ErrStr + tempStr + '\n';
						}
					}
				break;
	
				case 'text': 
					cVal=checkRequired(obj);
					if(checkSigns(obj)!=0)
					{
						ErrStr = ErrStr + cQuoteErrMsg  + '\n';
					}

					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
				break;
	
				case 'postalcode': 
					cVal=checkRequired(obj);
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkPostalCode(obj);
						if(tempStr!=true)
						{
							ErrStr = ErrStr + tempStr + '\n';
						}
					}
				break;

				case 'phonenumber': 
					cVal=checkRequired(obj);
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkTelNumber(obj,countryCode);
						if(tempStr!=true)
						{
							ErrStr = ErrStr + tempStr + '\n';
						}
					}
				break;

				case 'email': 
					cVal=checkRequired(obj);
					if(cVal!=1 && cVal!=2)
					{
						ErrStr=ErrStr + cVal + '\n';
					}
					else if(cVal==2)
					{
						var tempStr;
						tempStr=checkemail(obj,countryCode);
						if(tempStr!=true)
						{
							ErrStr =ErrStr + "Invalid Email ID" + '\n';
						}
					}
				break;


/*				case 'OptionalNumber': 
						var tempStr;
						tempStr=OptionalNumericFields(obj);
						if(tempStr!=true)
						{
							ErrStr = ErrStr + tempStr + '\n';
						}
				break;*/


			} 
		}
	 }

		if (ErrStr!='')
		{
			alert(ErrStr);
			ErrStr='';
			nretVal=true;
			retval=false;
		}
		else
		{
			retval =true;
		}
		
return retval;
}

function checkSigns(obj)
{
	var tempData;
	tempData = obj.value;
	//alert(tempData);
	if(tempData.indexOf('"')==-1 && tempData.indexOf("'")==-1)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}

function checkExtNumber(objElement,countryCode)
{
		var tempArray;
		var tempData;
		var tempPos;
		
		tempData = '' + objElement.value;
		
		if (tempData != '')
		{						
			if(countryCode==1033)
			{
				if(tempData.indexOf('.')!=-1 && tempData.indexOf(',')!=-1)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption ;
					else
						nretVal = objElement.caption;
				}

				if(tempData.indexOf(',')!=-1)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption;
					else
						nretVal = objElement.caption;
				}
				
				tempArray = tempData.split(".");
				
				if(tempArray.length>2)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption;
					else
						nretVal = objElement.caption;
				}
				
				if(tempArray.length ==1)
				{
					if(isNaN(tempArray[0]))
					{
						//return cNotANumberMsg + objElement.caption;
						if(nretVal==true)
							nretVal = cNotANumberMsg + objElement.caption;
						else
							nretVal = objElement.caption;

					}
					else
					{
						objElement.value = '' + objElement.value //+ "." + '00';
						return true;
					}
				}
				
				if(tempArray.length ==2)
				{
					if(isNaN(tempArray[0]) || isNaN(tempArray[1])||(tempArray[0].indexOf('e')!==-1) || (tempArray[0].indexOf('E')!==-1) ||  (tempArray[1].indexOf('e')!==-1) || (tempArray[1].indexOf('E')!==-1))
					{
						if(nretVal==true)
							nretVal = cNotANumberMsg + objElement.caption;
						else
							nretVal = objElement.caption;
					}
					else
					{
						objElement.value =  tempArray[0] + "." + tempArray[1]; 			
						return true;
					}
				}
			}
			else if(countryCode==1043)
			{
				if(tempData.indexOf('.')!=-1 && tempData.indexOf(',')!=-1)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption;
					else
						nretVal =  objElement.caption;
				}
				
				if(tempData.indexOf('.')!=-1)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption;
					else
						nretVal = objElement.caption
				}
				
				tempArray = tempData.split(",");
				
				if(tempArray.length > 2)
				{
					if(nretVal==true)
						nretVal = cNotANumberMsg + objElement.caption ;
					else
						nretVal = objElement.caption;
				}
				
				if(tempArray.length ==1)
				{
					if(isNaN(tempArray[0]))
					{
						if(nretVal==true)
							nretVal = cNotANumberMsg + objElement.caption;
						else
							nretVal =  objElement.caption;
					}
					else
					{
						objElement.value = '' + (objElement.value).replace('.', ',') //+ "," + '00';
						return true;
					}
				}
				
				if(tempArray.length ==2)
				{
					if(isNaN(tempArray[0]) || isNaN(tempArray[1])|| (tempArray[0].indexOf('e')!==-1) || (tempArray[0].indexOf('E')!==-1) || (tempArray[1].indexOf('e')!==-1) || (tempArray[1].indexOf('E')!==-1))
					{
						if(nretVal==true)
							nretVal = cNotANumberMsg + objElement.caption;
						else
							nretVal =  objElement.caption;
					}
					else
					{
						objElement.value =  tempArray[0] + "," + tempArray[1]; 			
						return true;
					}
				}
			}
		}
	
		return nretVal;
}


function checkExtDate(objElement,countryCode)
{
		var retVal =true;
		var strSeparator;
		var dateArray;
		var strDate = objElement.value;
		var tempRetVal='';	  
		if(strDate.length > 10)
		{
			retVal = cInvalidDateMsg + '\n';
			return retVal;
		}
		strSeparator = "";

		if(strDate.indexOf("-")!=-1)
			strSeparator = "-";
		else if(strDate.indexOf("/")!=-1)
			strSeparator = "/";
		else
		{
			strSeparator = "";
			//retVal = cInvalidDateSeparatorMsg + '\n';
			//return retVal;
		}

		if(strSeparator=="") 
		{
			if (strDate.length == 8)
			{
				if(countryCode==1033)//english(mdy)
				strDate = strDate.substr(4,2) + '-' + strDate.substr(6,2) + '-'+ strDate.substr(0,4) 
				else if(countryCode==1043)//dutch(dmy)
				strDate = strDate.substr(6,2) + '-' + strDate.substr(4,2) + '-'+ strDate.substr(0,4) 
				strSeparator='-';
				isProcitDate=true;
				dateArray = strDate.split('-');
			}
			else
			{
				retVal = cInvalidDateMsg + '\n';
				return retVal;
				dateArray = new Array(); // simply make array to avoid error, while checking length
			}
		}		
		if(strSeparator=='-' || strSeparator=='/')
		{	
				dateArray = strDate.split(strSeparator);
		}
		
			if(dateArray.length <3)
			{ 
				retVal = cInvalidDateMsg + '\n';
			}
			else
			{
				if(countryCode==1043)
				{
					//check for day
					if((parseInt(dateArray[0],10)>31)||(parseInt(dateArray[0],10)==0)||(dateArray[0]=='00')||(isNaN(parseInt(dateArray[0],10))))
						tempRetVal = tempRetVal + cInvalidDayMsg + objElement.caption + '\n';

					//check for month
					if((parseInt(dateArray[1],10)<1 || parseInt(dateArray[1],10)>12)||(parseInt(dateArray[1],10)==0)||(dateArray[1]=='00')||(isNaN(parseInt(dateArray[1],10))))
						tempRetVal = tempRetVal + cInvalidMonthMsg + objElement.caption + '\n';

					//check for year
					if((parseInt(dateArray[2],10)>9999)||(parseInt(dateArray[2],10)<1900)||(isNaN(parseInt(dateArray[2],10))))
						tempRetVal = tempRetVal + cInvalidYearMsg + objElement.caption + '\n';

					var temp;
					temp=parseInt(dateArray[1],10);
					if((temp==1 || temp==3 || temp==5|| temp==7|| temp==8|| temp==10|| temp==12) && (parseInt(dateArray[0],10)<1 || parseInt(dateArray[0],10)>31))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay31Msg + '\n';
					else if((temp==4 || temp==6 || temp==9|| temp==11) && (parseInt(dateArray[0],10)<1 || parseInt(dateArray[0],10)>30))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay30Msg + '\n';
					else if((temp==2) && (parseInt(dateArray[0],10)<1 || parseInt(dateArray[0],10)>28) && (parseInt(dateArray[2],10)%4!=0 && parseInt(dateArray[2],10)%100!=0 && parseInt(dateArray[2],10)%400!=0))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay28Msg + '\n';
					else if((temp==2) && (parseInt(dateArray[0],10)<1 || parseInt(dateArray[0],10)>29) && (parseInt(dateArray[2],10)%4==0 && parseInt(dateArray[2],10)%100==0 && parseInt(dateArray[2],10)%400==0))
						tempRetVal = tempRetVal + '\n' + cLeapYearMsg + '\n';
				}
				else if(countryCode==1033)
				{
					//check for month
					if((parseInt(dateArray[0],10)>12)||(parseInt(dateArray[0],10)==0)||(dateArray[0]=='00')||(isNaN(parseInt(dateArray[0],10))))
						tempRetVal = tempRetVal + cInvalidMonthMsg + objElement.caption  + '\n';
					
					//check for day
					if((parseInt(dateArray[1],10)>31)||(parseInt(dateArray[1],10)==0)||(dateArray[1]=='00')||(isNaN(parseInt(dateArray[1],10))))
						tempRetVal = tempRetVal + cInvalidDayMsg + objElement.caption  + '\n';

					//check for year
					if((parseInt(dateArray[2],10)>9999)||(parseInt(dateArray[2],10)<1900)||(isNaN(parseInt(dateArray[2],10))))
						tempRetVal = tempRetVal + cInvalidYearMsg + objElement.caption + '\n';

					var temp;
					temp=parseInt(dateArray[0],10);
					if((temp==1 || temp==3 || temp==5|| temp==7|| temp==8|| temp==10|| temp==12) && (parseInt(dateArray[1],10)<1 || parseInt(dateArray[1],10)>31))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay31Msg + '\n';
					else if((temp==4 || temp==6 || temp==9|| temp==11) && (parseInt(dateArray[1],10)<1 || parseInt(dateArray[1],10)>30))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay30Msg + '\n';
					else if((temp==2) && (parseInt(dateArray[1],10)<1 || parseInt(dateArray[1],10)>28) && (parseInt(dateArray[2],10)%4!=0 && parseInt(dateArray[2],10)%100==0 && parseInt(dateArray[2],10)%400==0))
						tempRetVal = tempRetVal + '\n' + cNonLeapYearDay28Msg + '\n';
					else if((temp==2) && (parseInt(dateArray[1],10)<1 || parseInt(dateArray[1],10)>29) && (parseInt(dateArray[2],10)%4==0 && parseInt(dateArray[2],10)%100==0 && parseInt(dateArray[2],10)%400==0))
						tempRetVal = tempRetVal + '\n' + cLeapYearMsg + '\n';
				}
		
				var tempCaption;
				tempCaption = objElement.caption;
				tempCaption=tempCaption.toLowerCase();
				if(tempCaption.indexOf("start date")!=-1 || tempCaption.indexOf("end date")!=-1)
				{
					var tempRVal;
					tempRVal = checkStartEndDate(objElement,dateArray,countryCode);
					if(tempRVal!=true)
						tempRetVal = tempRetVal + tempRVal;
					//else
					//	tempRetVal = true;		
				}

				tempName=objElement.altCaption
				if(tempName)
				{
				tempName=tempName.toLowerCase();
				if(tempName=='sdate' || tempName=='edate')
				{
					var tVal;
					tVal=check2Day(objElement,countryCode,dateArray);
					
					if(tVal!=true)
					{
						tempRetVal = tempRetVal + tVal;
					}
					else
					{
						tempRetVal=tempRetVal;
					}
				}
				} 

				if (tempRetVal!='')
				{
					retVal= tempRetVal;
				}

			}
		
		if (retVal==true)
		{
			if (dateArray[0].length==1 && isProcitDate==false) 
				dateArray[0]= "0" + dateArray[0];
			if (dateArray[1].length==1 && isProcitDate==false) 
				dateArray[1]= "0" + dateArray[1]	
			if(isProcitDate==false)
				objElement.value=dateArray[0] + strSeparator + dateArray[1]+ strSeparator + dateArray[2] 
		}
		return retVal;
}
function daysInAMonth(intMonth,intYear)
{
	if((intMonth==1) || (intMonth==3) || (intMonth==5) || (intMonth==7) || (intMonth==8) || (intMonth==10) || (intMonth==12))
		return 31
	if((intMonth==4) || (intMonth==6) || (intMonth==9) || (intMonth==11))
		return 30
	if((intYear % 400 == 0) || ((intYear % 4 == 0) && (intYear % 100 != 0)))
		return 29
	else
		return 28
	
}

function check2Day(obj,cCode,dArray)
{
	var startdate,enddate;
	var returnVal=true;
	var tempenddate,tempendmonth,tempendyear;
	var tempstartdate,tempstartmonth,tempstartyear
	var tempCap,tName;
	var temp1=new Array();		
	tempCap=obj.caption;
	tempCap=tempCap.toLowerCase();
	if(cCode==1033)
	{
		temp1 = dArray;
	}
	else if(cCode==1043)
	{
		temp1[0]=dArray[1];
		temp1[1]=dArray[0];
		temp1[2]=dArray[2];
	}
	temp1[0]=MakeTwo(temp1[0]);
	temp1[1]=MakeTwo(temp1[1]);
	temp1[2]=MakeTwo(temp1[2]);
	if(tempCap.indexOf("end date")!=-1)					
	tName=obj.name;
	var tDate;
	if(temp2Day=='' && tempCap.indexOf("start date")!=-1)
	{
		temp2Day=temp1[0] + '/' + temp1[1] + '/' + temp1[2];
	}
	else if(temp2Day!=tDate && tempCap.indexOf("start date")!=-1)
	{
		tDate=MakeTwo(temp1[0]) + '/' + MakeTwo(temp1[1]) + '/' + temp1[2];
		temp2Day=tDate;
	}
	else if(tempCap.indexOf("end date")!=-1)
	{
		startdate=temp2Day;
		enddate=MakeTwo(temp1[0]) + '/' + MakeTwo(temp1[1]) + '/' + temp1[2];
		var enddatearr=new Date(parseInt(temp1[2]),parseInt(temp1[0]),parseInt(temp1[1]));
		var startdatearr = new Date(parseInt(startdate.substr(6)),parseInt(startdate.substr(0,2)),parseInt(startdate.substr(3,2)))
		var addDate = new Date(parseInt(startdate.substr(6)),parseInt(startdate.substr(0,2)),2)
		if((enddatearr-startdatearr)>172800000)
		{
			document.all(tName).value='';
			returnVal=TwoDaysCheckErrMsg;
			temp2Day='';
		}
		else
		{
			returnVal=true;
		}
	}
	return returnVal;
}


function checkStartEndDate(obj,dArray,ccode)
{
	var retVal=true;
	var tempCap,temp1;
	tempCap = obj.caption;
	tempCap=tempCap.toLowerCase();
	temp1 = new Array();
	
	if(ccode==1033)
	{
		temp1 = dArray;
	}
	else if(ccode==1043)
	{
		temp1[0]=dArray[1];
		temp1[1]=dArray[0];
		temp1[2]=dArray[2];
	}
	//alert('darray=' + dArray[0] + dArray[1] + dArray[2]+ ccode + '\n' + temp1[0] + temp1[1] + temp1[2])
	temp1[0]=MakeTwo(temp1[0]);
	temp1[1]=MakeTwo(temp1[1]);
	temp1[2]=MakeTwo(temp1[2]);
	
	if(arrSDate=='')
	{
		if(tempCap.indexOf("start date")!=-1)
			arrSDate=tempCap.substring(0,(tempCap.indexOf("start date"))) + '_' + temp1[0] + '/' + temp1[1] + '/' + temp1[2];
		else if(tempCap.indexOf("end date")!=-1)
			arrEDate=tempCap.substring(0,(tempCap.indexOf("end date"))) + '_' + temp1[0] + '/' + temp1[1] + '/' + temp1[2];
	}
	else
	{
		var tDate;
		if(tempCap.indexOf("start date")!=-1)
			tDate=MakeTwo(temp1[0]) + '/' + MakeTwo(temp1[1]) + '/' + temp1[2];
		else
			tDate=arrSDate.substring(arrSDate.indexOf("_")+1,arrSDate.length)
		//alert('tttttdate=' + tDate + '=' + arrSDate.substring(arrSDate.indexOf("_")+1,arrSDate.length));
  		
  		if(arrSDate.substring(arrSDate.indexOf("_")+1,arrSDate.length)!=tDate)
		{
		   	if(tempCap.indexOf("start date")!=-1)
		   		arrSDate=tempCap.substring(0,(tempCap.indexOf("start date"))) + '_' + MakeTwo(temp1[0]) + '/' + MakeTwo(temp1[1]) + '/' + temp1[2];
		}

		if(tempCap.indexOf("end date")!=-1)
		{
			
			var temp;
			temp = tempCap.indexOf("end date");
			var tempFirst;
			tempFirst = tempCap.substring(0,temp);
			
			if(tempFirst == arrSDate.substring(0,(arrSDate.indexOf("_"))))
			{
				var sd,ed,aDate;
				sd = MakeTwo(temp1[0]) + '/' + MakeTwo(temp1[1]) + '/' + temp1[2];
				aDate = arrSDate.substring(arrSDate.indexOf("_")+1,arrSDate.length);
				if(aDate.indexOf('/')!=-1)
					sd = aDate.split('/');
				else if(aDate.indexOf(':')!=-1)
					sd = aDate.split(':');

				if(temp1[2]<sd[2])						
				{
					retVal = cStartEndDateErrMsg + '\n';
				}
				else if(temp1[2]==sd[2])						
				{
					if(MakeTwo(temp1[0])<sd[0])
					{
						retVal = cStartEndDateErrMsg + '\n';
					}
					else if(MakeTwo(temp1[0])==sd[0])
					{
						if(MakeTwo(temp1[1])<sd[1])
						{
							retVal = cStartEndDateErrMsg + '\n';
						}
					}
				}
			}
		}
	}
	return retVal;
}	

function MakeTwo(valNumber)
{
	var temp;
	if(valNumber.length<2)
		temp='0' + valNumber;
	else
		temp=valNumber;
	return temp;
}

function checkExtTime(objElement,countryCode)
{
		var retVal = true;
		var strSeparator;
		var timeArray = new Array();
		var strTime = objElement.value;
		var tempRetVal='';
		
		if(strTime.length < 2 || strTime.length > 8)
		{
			retVal = cInvalidTimeMsg + '\n';
			return retVal;
		}
		strSeparator = '';
		
		if(strTime.indexOf(":")!=-1)
		{
			strSeparator = ':';
		}
		else
		{
			if(strTime.indexOf('')!=-1 && (strTime.length==4 || strTime.length==6))
			{
				strSeparator='';
				isProcitTime=true;
			}
			else
			{
				retVal = cInvalidTimeMsg + '\n';
				return retVal;
			}
		}
		
		if(strSeparator=='') 
		{
			if(strTime.length==4)
				strTime=strTime.substring(0,2) + ':' + strTime.substring(2,4)
			else if(strTime.length==6 )
				strTime=strTime.substring(0,2) + ':' + strTime.substring(2,4)+ ':' + strTime.substring(4,6)
			strSeparator=":"
			//return retVal;
		}
		
		if(strSeparator==':')				
		{
			timeArray[2]="00";
			timeArray = strTime.split(strSeparator);
		}
			
		if(timeArray.length < 2 || timeArray.length >3)
		{ 
			retVal = cInvalidTimeMsg + '\n';
		}
		else if(timeArray.length==3) 
		{
			if(countryCode==1043 || countryCode==1033)
			{
				//check for hour
				if((parseInt(timeArray[0],10)<0 || parseInt(timeArray[0],10)>23)||(isNaN(parseInt(timeArray[0],10))))
					tempRetVal = tempRetVal + cInvalidHourMsg + objElement.caption  + '\n';
				//check for minute
				if((parseInt(timeArray[1],10)<0 || parseInt(timeArray[1],10)>60)||(isNaN(parseInt(timeArray[1],10))))
					tempRetVal = tempRetVal + cInvalidMinuteMsg + objElement.caption  + '\n';
				//check for second
				if((parseInt(timeArray[2],10)>59)||(parseInt(timeArray[2],10)<0)||(isNaN(parseInt(timeArray[2],10))))
					tempRetVal = tempRetVal + cInvalidSecondMsg + objElement.caption  + '\n';
			}	
		}	
		else if(timeArray.length==2) 
		{
			
			if(countryCode==1043 || countryCode==1033)
			{		
				//check for hour
				if((parseInt(timeArray[0],10)<0 || parseInt(timeArray[0],10)>23)||(isNaN(parseInt(timeArray[0],10))))
					tempRetVal = cInvalidHourMsg + objElement.caption + '\n';
				//check for minute
				if((parseInt(timeArray[1],10)<0 || parseInt(timeArray[1],10)>60)||(isNaN(parseInt(timeArray[1],10))))
					tempRetVal = tempRetVal + cInvalidMinuteMsg + objElement.caption + '\n';
			}
		}
		else if(timeArray.length==1 && timeArray[0].length!=4)
		{
			tempRetVal=tempRetVal + cInvalidTimeMsg + '\n';
		}
		else if(timeArray.length==1 && timeArray[0].length==4)
		{
			var temp,temp1;
			temp= timeArray.substr(1,2);
			temp1=timeArray.substr(3,2);
			timeArray[0]=temp;
			timeArray[1]=temp1;
		}
		
		if (retVal==true)
		{
			if (timeArray[0].length==1) 
				timeArray[0]= "0" + timeArray[0];
			if (timeArray[1].length==1) 
				timeArray[1]= "0" + timeArray[1];	
			if(timeArray.length==2)
				timeArray[2]= "00";
			if(timeArray.ubound > 2)
			{
				if (timeArray[2].length!=0 && timeArray[2].length==1) 
					timeArray[2]= "0" + timeArray[2];
				//if (timeArray[2].length==0)
				//	timeArray[2]= "00";
			}
			if(isProcitTime==false)
			objElement.value=timeArray[0] + strSeparator + timeArray[1]+ strSeparator + timeArray[2]; 
			else
			objElement.value=timeArray[0] + strSeparator + timeArray[1]+ strSeparator + timeArray[2]; 
			//objElement.value=timeArray[0] + timeArray[1]+ timeArray[2]; 
		}
		
		if (tempRetVal!='')
		{
			retVal=tempRetVal;
		}

		return retVal;
}

function checkRequired(objElement)
{
	var cType;
	cType=objElement.isRequired
	cType=cType.toLowerCase();

	if(cType=='yes' && objElement.value=='')
	{
		return cRequiredFieldMsg + objElement.caption;
	}
	else if(cType=='no' && objElement.value=='')
	{
		return 1;
	}
	else
	{
		return 2;
	}
}

function checkPostalCode(obj)
{
	var x;
	var ret;
	var objValue;
	objValue=obj.value;
	re= /(^(\d{4}))(\s)?(([a-z|A-Z]{2})$)/;
	x= objValue.match(re)
	if (x!= null)
	{
		ret=true;
	}
	else
	{
		ret = true;
	}
	
	if (ret==false)
	{
		//ret = cZipCodeErrMsg + obj.caption;
	}
	return ret;
	
	
}

function checkemail(obj,countryCode)
{
	var at="@"
	var dot="."
	var str;
		
	if (obj.value!="") 
	{	
		 str = obj.value;
		var lat=str.indexOf(at);
		var lstr=str.length;
		
		var ldot=str.indexOf(dot);
		
		if (str.indexOf(at)==-1){
//		   alert("Invalid E-mail ID , Please insert @ ");
	//	   obj.focus();
		//   obj.select();
		return false;
		}
		else
		{
			if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
//				alert("Invalid E-mail ID ,Please insert @ ");
	//		   obj.focus();
		//	   obj.select();
				return false;
			}
			else
			{
				if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
//					alert("Invalid E-mail ID,Please insert '.' ");
	//				obj.focus();
		//			obj.select();
				return false;
				}
				else
				{
					if (str.indexOf(at,(lat+1))!=-1){
//					   alert("Invalid E-mail ID ");
	//				   obj.focus();
		//			   obj.select();
				return false;
					}
					else
					{
						if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
//						   alert("Invalid E-mail ID");
	//					   obj.focus();
		//				   obj.select();
				return false;
						}
						else
						{

							if (str.indexOf(dot,(lat+2))==-1){
//							   alert("Invalid E-mail ID");
	//						   obj.focus();
		//					   obj.select();
				return false;
							}
							else
							{
								if (str.indexOf(" ")!=-1){
//									alert("Invalid E-mail ID");
	//								obj.focus();
		//							obj.select();
				return false;
								}
							}
						}
					}
				}
			}
		}
 		 
 	} 
	return true;		
}

	



function checkTelNumber(obj,countryCode)
{
		var retVal = true;
		var strTelNumber = obj.value;
		var tempRetVal='';
		var tSign,tCCode,tAreaCode,tNum;
		
		return retVal;
		
		if(countryCode==1043)
		{
			if(strTelNumber.length<10)
			{
				retVal = cTelNumErrMsg + '\n';
				return retVal;
			}
			var tempLen;
			tempLen = strTelNumber.length;

			if(tempLen==15)
			{
				tSign=strTelNumber.substring(0,1);
				tCCode=strTelNumber.substring(1,3);
				tAreaCode=strTelNumber.substring(3,6);
				tNum=strTelNumber.substring(6,(strTelNumber.length));
			
				if(tSign!='+')
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
				}
			
				if(tCCode.length!=2 && isNaN(tCCode))
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
				}

				if(tAreaCode.length!=3 || (tAreaCode.substring(0,1)!='(') || (tAreaCode.substring(2,tAreaCode.length)!=')') || (isNaN(tAreaCode.substring(1,2))))
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
				}
			
				if((isNaN(tNum)) || (tNum.indexOf('e')!==-1) || (tNum.indexOf('E')!==-1))
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
				}
			}
			else if(tempLen>=10 && tempLen<12)
			{
				var tempSeparator,tempArray;

				if(strTelNumber.indexOf('-')==-1)
					tempSeparator = ' ';
				else
					tempSeparator = '-';
				if(tempSeparator==' ')
				{
				if(isNaN(strTelNumber) || (strTelNumber.indexOf('e')!==-1) || (strTelNumber.indexOf('E')!==-1))
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
					return tempRetVal;
				}
				}	
				else
				{
					tempArray = strTelNumber.split(tempSeparator);
					if(tempArray.length<2)
					{
						tempRetVal = cTelNumErrMsg + '\n'; 
						return tempRetVal;
					}
				
					if((tempArray[0].length<2 || tempArray[0].length>4) || isNaN(tempArray[0]) || (tempArray[0].indexOf('e')!==-1) || (tempArray[0].indexOf('E')!==-1))
					{
						tempRetVal = cTelNumErrMsg + '\n'; 
					}
					if(isNaN(tempArray[1]) || (tempArray[1].indexOf('e')!==-1) || (tempArray[1].indexOf('E')!==-1))
					{
						tempRetVal = cTelNumErrMsg + '\n'; 
					}
				}
			}
			else
			{
				tempRetVal = cTelNumErrMsg + '\n'; 
			}
			if(tempRetVal!='')
			{
				retVal=tempRetVal;
			}
		}
		
		else if(countryCode==1033)
		{
			if(strTelNumber.length<13)
			{
				retVal = cTelNumErrMsg + '\n';
				return retVal;
			}

			tCCode=strTelNumber.substring(0,5);
			tAreaCode=strTelNumber.substring(5,8);
			tSeparator=strTelNumber.substring(8,9);
			tNum=strTelNumber.substring(9,(strTelNumber.length));

			if(tCCode.length!=5 || tCCode.substring(0,1)!='(' || tCCode.substring(4,5)!=')' || isNaN(tCCode.substring(1,4)))
			{
				tempRetVal = cTelNumErrMsg + '\n'; 
			}
			
			if(tSeparator!='-')
			{
				if(tSeparator!=' ')
				{
					tempRetVal = cTelNumErrMsg + '\n'; 
				}
			}

			if(tAreaCode.length!=3 || isNaN(tAreaCode) || (tAreaCode.indexOf('e')!==-1) || (tAreaCode.indexOf('E')!==-1))
			{
				tempRetVal = cTelNumErrMsg + '\n'; 
			}
			
			if(isNaN(tNum) || (tNum.indexOf('e')!==-1) || (tNum.indexOf('E')!==-1))
			{
				tempRetVal = cTelNumErrMsg + '\n'; 
			}
			
			if(tempRetVal!='')
			{
				retVal=tempRetVal;
			}
		}
		return retVal;
}

function checkUA() 
{
    var UAversion = parseFloat(navigator.appVersion);
    var UA = (navigator.appName);
    var IEua = (UA == "Microsoft Internet Explorer");
    var Netscapeua = (UA == "Netscape");
    var UAok = false;
    var isIE = false;
    var author = 'Sachin Doke';
    var newMsg = '';
    var isNS = false;
    var other = false;
    // Add the latest builds of IE & Netscap
    //     e Here
    var curIEbuild = parseFloat("6.0");
    var curNSbuild = parseFloat("6.2.1");
    var msg = '';
    var UAwarn = false;
    var valid = false;
    IEmajor = '';


        if (IEua && UAversion >= 4) {
        (UAok = true);
        (isIE = true);
    }
    else if (Netscapeua && UAversion >= 4.08) {(UAok = true);
    (isNS = true);
}



    if (IEua) {
    // IE Returns 4, even if it's 5 so we ha
    //     ve to snoop the real
    // version from the headers.


        if (navigator.appVersion.indexOf("MSIE") != -1) {
        IEmajorStart = navigator.appVersion.indexOf("MSIE") + 4;
        IEmajorEnd = (IEmajorStart + 5);
        theMajor = navigator.appVersion.substring(IEmajorStart, IEmajorEnd);
        (UAversion = theMajor); 
    }


        if (isNaN(UAversion)) {
        		(UAversion = (UAversion.substring(0, (UAversion.length - 1))));
        	}
        
    }
    	 


        if (author == 'Sachin Doke') {
        (valid = true);
    }
    	 


        if (IEua & UAversion < curIEbuild) {
        UAwarn = true;
        // IE Warning Message ------------------
        //     --------------------------
        warning = ("<BR><B>FREE Upgrade Available!</B><BR>"
        + "This is an old Browser version! You can take advantage of the newest features<BR> by"
        + "upgrading to " + UA + " " + curIEbuild + "<BR><A href='http://www.microsoft.com/windows/ie'>Upgrade to " + curIEbuild + " FREE!</A>");
    }


        if (Netscapeua & UAversion < curNSbuild) {
        // Netscape Warning --------------------
        //     ---------------------------
        UAwarn = true;
        warning = ("<BR><B>FREE Upgrade Available!</B><BR>"
        + "TThis is an old Browser version! You can take advantage of the newest features by<BR>"
        + "upgrading to " + UA + " " + curNSbuild) + " <A href='http://www.netscape.com/download'>Upgrade to " + UA + " " + curNSbuild + " FREE!</A>";
    }


        if (UAok == true) {
        // Supported MSG -----------------------
        //     ----------------------------------
        msg = (" You are Running " + UA + " " + UAversion + "<BR>");


        } else {
        // Unsupported MSG ---------------------
        //     -----------------------------------
        msg = ("MNB does not support this Browser (" + UA + " " + UAversion + ")<BR>");
    }


        if (Netscapeua & UAok == false) {
        // Netscape Upgrade MSG ----------------
        //     ----------------------------------------
        //     --------------
        (msg = msg + "<B>Please Upgrade to Netscape " + curNSbuild + "</B><BR>"
        + "<A href='http://www.netscape.com/download'>Netscape Downloads</A>");
    }


        else if (IEua & UAok == false) {
        // IE Upgrade MSG ----------------------
        //     ----------------------------------------
        //     ------------
        (msg = msg + "<B>Please Upgrade to Internet Explorer " + curIEbuild + "</B><BR>"
        + "<A href='http://www.microsoft.com/windows/ie'>Download IE</A>");
    }


        else {
        (other = true);
    }
    
    // If they have the latest build:


        if (Netscapeua & UAversion >= curNSbuild) {
        (newMsg = "Congratulations! You Have the Latest Netscape Release.");
    }
    


        if (IEua & UAversion >= curIEbuild) {
        (newMsg = "Congratulations! You Have the Latest Internet Explorer Release.");
    }


        if (valid != true) {
        alert('Author Creds are Required!\n Jbrowse v1.1'
        + ' - Sachin Doke');
    }


        else {
        document.write (msg + '<P>');
    }


        if (newMsg != '') {
        document.write (newMsg + '<P>');
    }


        if (UAwarn & UAok == true) {
        document.write (warning + '<P>');
    }
}
/*	
function JStrim(strVal)
{
	var i;
	if(strVal != '')
		while(strVal.charAt(0)== ' ')
		{
			strVal = strVal.substr(1); 
		}
	return strVal;
}


function OptionalNumericFields(obj)
	{	
	// PURPOSE:	validate the optional Numeric fields before subbmittin
	// IN:		myform - the current form to validate
	// OUT:		Boolean (validation = OK)
	
	var retVal = true;
	
	var err = '';
				
			if(JStrim(eval(obj.value)!='')
				{
					if (!validNumber(eval(obj.value))
						{
						retVal = false;	 	
						err = err + "Field - " + obj.Caption + " must be numeric.\n";
						}
				}
											
		if(err!= '')
			{
				alert(err);
				retVal = false;
			}
		return retVal;
	}

	function validNumber(value)
		{
			// PURPOSE:	validate the Numeric field
			// IN:		value
			// OUT:		true/false
			
			if(value =='')
		      return false;
		    if(isNaN(value))
			  return false;
			
		return true;
		}

*/