function BirthDate(obj)
{
    var IsDay = true;
    var IsMonth = true;
    var IsYear = true;
		           
   if(obj.value == ""){return false;}
         
   if(!IsNumeric(obj.value))
    {obj.value = "";return false;}
		           
		           
   if(obj.value.length >= 6)
   {
												
    if(parseInt(obj.value.substring(0,2)) > 31){IsDay = false;}
				           
	if(parseInt(obj.value.substring(2,4)) > 12){IsMonth = false;}
				           
	if(1900 + parseInt(obj.value.substring(4)) < 1900){IsYear = false;}
				        
	if(IsDay && IsMonth && IsYear){IsFutureDate(obj);}
  } 
  
  else if(obj.value.length >= 4)
  {
     if(parseInt(obj.value.substring(0,2)) > 12){IsMonth = false;}
				           
	 if(1900 + parseInt(obj.value.substring(2)) < 1900){IsYear = false;}
						
	 if(IsMonth && IsYear)
	 {
	     var yyyy = parseInt(obj.value.substring(2));
	     if (yyyy < 100)
	  	 {
		   if (yyyy >= 30){yyyy += 1900;}
		   else
	        {yyyy += 2000;}
	     }
		
		var now = new Date();
        
        if(yyyy > now.getFullYear() || obj.value.substring(0,2) > (now.getMonth() + 1))
		{alert("Invalid Date"); obj.value = ""; return false;}
							
		obj.value = obj.value.substring(0,2) + "/" + yyyy;
    }
 }
}
function chkBirthDate(obj)
{
	chkDateValid(obj);

	var IsDay = true;
    var IsMonth = true;
    var IsYear = true;
		           
   if(obj.value == ""){return false;}
   		           
   if(obj.value.length >= 6)
   {
												
    if(parseInt(obj.value.substring(0,2)) > 31){IsDay = false;}
				           
	if(parseInt(obj.value.substring(2,4)) > 12){IsMonth = false;}
				           
	if(1900 + parseInt(obj.value.substring(4)) < 1900){IsYear = false;}
				        
	if(IsDay && IsMonth && IsYear){IsFutureDate(obj);}
  } 
  
  else if(obj.value.length >= 4)
  {
     if(parseInt(obj.value.substring(0,2)) > 12){IsMonth = false;}
				           
	 if(1900 + parseInt(obj.value.substring(2)) < 1900){IsYear = false;}
						
	 if(IsMonth && IsYear)
	 {
	     var yyyy = parseInt(obj.value.substring(2));
	     if (yyyy < 100)
	  	 {
		   if (yyyy >= 30){yyyy += 1900;}
		   else
	        {yyyy += 2000;}
	     }
		
		var now = new Date();
        
        if(yyyy > now.getFullYear() || obj.value.substring(0,2) > (now.getMonth() + 1))
		{alert("Invalid Birth Date"); obj.value = ""; return false;}
							
		obj.value = obj.value.substring(0,2) + "/" + yyyy;
    }
 }
}
		   
function chkDateValid(obj)
{
  if(obj.value!="")
  {
	var boolFlagDate = isDate(obj);
	if(! boolFlagDate)
	{									
		obj.focus();
		obj.select();
		return false;
	}
	else{return true;}			
  }
}

function IsFutureDate(obj)
{
   if(chkDateValid(obj))
   {
	isValidDate_DD(obj);
  }
}

function IsPastDate(obj)
{
   if(chkDateValid(obj))
   {
	isValidDate_LT(obj);
  }
}

function isDate(gField)
{

     var inputStr = gField.value;
     // convert hyphen delimiters to slashes
     while (inputStr.indexOf("-") != -1)
     {
          inputStr = replaceString(inputStr,"-","/");
     }
     while (inputStr.indexOf(" ") != -1)
     {
          inputStr = replaceString(inputStr," ","/");
     }
     var delim1 = inputStr.indexOf("/");
     var delim2 = inputStr.lastIndexOf("/");
     if (delim1 != -1 && delim1 == delim2)
     {
          // there is only one delimiter in the string
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (delim1 != -1)
     {
          // there are delimiters; extract component values
          var dd = parseInt(inputStr.substring(0,delim1),10);
          var mm = parseInt(inputStr.substring(delim1 + 1,delim2),10);
          var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10);
     }
     else
     {
          // there are no delimiters; extract component values
          var dd = parseInt(inputStr.substring(0,2),10);
          var mm = parseInt(inputStr.substring(2,4),10);
          var yyyy = parseInt(inputStr.substring(4,inputStr.length),10);
     }
     if (isNaN(mm) || isNaN(dd) || isNaN(yyyy))
     {
          // there is a non-numeric character in one of the component values
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (mm < 1 || mm > 12)
     {
          // month value is not 1 thru 12
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (dd < 1 || dd > 31)
     {
          // date value is not 1 thru 31
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }

     // validate year, allowing for checks between year ranges
     // passed as parameters from other validation functions
     if (yyyy < 100)
     {
          // entered value is two digits, which we allow for 1930-2029
          if (yyyy >= 30)
          {
               yyyy += 1900;
          }
          else
          {
               yyyy += 2000;
          }
     }

     var today = new Date();
//	 var test=new Date(gField.value)
//		 alert(test)
//	 var tmpDD=today.getDate();
//	 var tmpMM=today.getMonth();
//	 tmpMM++;
     var tmpYYYY = today.getFullYear();
//	 var tmpToday=tmpDD + "/" + tmpMM + "/" + tmpYYYY
     var minYear = tmpYYYY - 100;
     var maxYear = tmpYYYY + 60;
     //alert (minYear);
     //alert (maxYear);
     // function called with specific year range parameters
	 
	 if (gField.name!="pass_iss_date" && gField.name!="pass_iss_exp_date" && gField.name!="txt_arr_date" && gField.name!="txt_int_date")
	 {
		if (yyyy <= minYear || yyyy >= maxYear)
	     {
			  // entered year is outside of range passed from calling function
			  alert("Enter a Valid Date");
	          gField.focus();
		      gField.select();
			  return false;
	     }
	 }
	 else
	{
		yyyystring=yyyy.toString();
		 if(yyyystring.length!=4)
		{
			  alert("Enter a Valid Date");
	          gField.focus();
		      gField.select();
			  return false;	
		}
	}
	 
     if (!checkMonthLength(mm,dd))
     {
          gField.focus();
          gField.select();
          return false;
     }
     if (mm == 2)
     {
          if (!checkLeapMonth(mm,dd,yyyy))
          {
               gField.focus();
               gField.select();
               return false;
          }
     }
     // put the Informix-friendly format back into the field
     gField.value = monthDayFormat(dd) + "/" + monthDayFormat(mm) + "/" +  yyyy ;
     return true;
}

function ToDateComparison(gField1, gField2)
{
	 if(parseInt(yymmdd(gField2.value)) < parseInt(yymmdd(gField1.value)))
     {
          alert("Date entered cannot be lesser than from date...!");
          gField2.focus();
          gField2.select();
          return false;     
     }
     return true;
}

function isDatenew(gField)
{

     var inputStr = gField.value;
     // convert hyphen delimiters to slashes
     while (inputStr.indexOf("-") != -1)
     {
          inputStr = replaceString(inputStr,"-","/");
     }
     while (inputStr.indexOf(" ") != -1)
     {
          inputStr = replaceString(inputStr," ","/");
     }
     var delim1 = inputStr.indexOf("/");
     var delim2 = inputStr.lastIndexOf("/");
     if (delim1 != -1 && delim1 == delim2)
     {
          // there is only one delimiter in the string
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (delim1 != -1)
     {
          // there are delimiters; extract component values
          var mm = parseInt(inputStr.substring(0,delim1),10);
          var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10);
          var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10);
     }
     else
     {
          // there are no delimiters; extract component values
          var dd = parseInt(inputStr.substring(0,2),10);
          var mm = parseInt(inputStr.substring(2,4),10);
          var yyyy = parseInt(inputStr.substring(4,inputStr.length),10);
     }
     if (isNaN(mm) || isNaN(dd) || isNaN(yyyy))
     {
          // there is a non-numeric character in one of the component values
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (mm < 1 || mm > 12)
     {
          // month value is not 1 thru 12
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }
     if (dd < 1 || dd > 31)
     {
          // date value is not 1 thru 31
          alert("Enter a Valid Date");
          gField.focus();
          gField.select();
          return false;
     }

     // validate year, allowing for checks between year ranges
     // passed as parameters from other validation functions
     if (yyyy < 100)
     {
          // entered value is two digits, which we allow for 1930-2029
          if (yyyy >= 30)
          {
               yyyy += 1900;
          }
          else
          {
               yyyy += 2000;
          }
     }

     var today = new Date();
//	 var test=new Date(gField.value)
//		 alert(test)
//	 var tmpDD=today.getDate();
//	 var tmpMM=today.getMonth();
//	 tmpMM++;
     var tmpYYYY = today.getFullYear();
//	 var tmpToday=tmpDD + "/" + tmpMM + "/" + tmpYYYY
     var minYear = tmpYYYY - 100;
     var maxYear = tmpYYYY + 3;
     //alert (minYear);
     //alert (maxYear);
     // function called with specific year range parameters
	 
	 if (gField.name!="pass_iss_date" && gField.name!="pass_iss_exp_date" && gField.name!="txt_arr_date" && gField.name!="txt_int_date")
	 {
		if (yyyy <= minYear || yyyy >= maxYear)
	     {
			  // entered year is outside of range passed from calling function
			  alert("Enter a Valid Date");
	          gField.focus();
		      gField.select();
			  return false;
	     }
	 }
	 else
	{
		yyyystring=yyyy.toString();
		 if(yyyystring.length!=4)
		{
			  alert("Enter a Valid Date");
	          gField.focus();
		      gField.select();
			  return false;	
		}
	}
	 
     if (!checkMonthLength(mm,dd))
     {
          gField.focus();
          gField.select();
          return false;
     }
     if (mm == 2)
     {
          if (!checkLeapMonth(mm,dd,yyyy))
          {
               gField.focus();
               gField.select();
               return false;
          }
     }
     // put the Informix-friendly format back into the field
     gField.value = monthDayFormat(dd) + "/" + monthDayFormat(mm) + "/" +  yyyy ;
     return true;
}

function monthDayFormat(str)
{
     while (str.length <=2)
     {
          str = "0" + str;
     }
     return str;
}
// check the entered month for too high a value
function checkMonthLength(mm,dd)
{
     var months = new Array("","January","February","March","April","May","June","July","August","September","October","November","December")
     if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
     {
          alert(months[mm] + " has only 30 days.");
          return false;
     }
     else
     {
          if (dd > 31)
          {
          alert(months[mm] + " has only 31 days.");
          return false;
          }
     }
     return true;
}

// check the entered February date for too high a value 
function checkLeapMonth(mm,dd,yyyy)
{
     if (yyyy % 4 > 0 && dd > 28)
     {
          alert("February of " + yyyy + " has only 28 days.");
          return false;
     }
     else
     {
          if (dd > 29)
          {
               alert("February of " + yyyy + " has only 29 days.");
               return false;
          }
     }
     return true;
}

//     Valid date
function isValidDate(gField)
{
     var today = new Date();
     var tmpDD = today.getDate();
     var tmpMM = today.getMonth();
     tmpMM++ ;
     var tmpYYYY = today.getFullYear();
     var tmpToday = tmpDD + "/" + tmpMM + "/" + tmpYYYY ;
     if(yymmdd(gField.value) > yymmdd(tmpToday));
     {
          alert("Cannot Enter date in the past");
		  alert(yymmdd(gField.value));
          alert(yymmdd(tmpToday));
          gField.focus();
          gField.select();
          return false;     
     }
     return true;
}

function isValidDate_DD(gField)
{
     var today = new Date();
     var tmpDD = today.getDate();
     var tmpMM = today.getMonth();
     tmpMM++ ;
     var tmpYYYY = today.getFullYear();
     var tmpToday = tmpDD + "/" + tmpMM + "/" + tmpYYYY ;
	// alert(parseInt(yymmdd(gField.value)));
	// alert(parseInt(yymmdd(tmpToday)));
     if(parseInt(yymmdd(gField.value)) > parseInt(yymmdd(tmpToday)))
     {
          alert("Date entered cannot be of future...!");
          gField.focus();
          gField.select();
          return false;     
     }
     return true;
}

function isValidDate_LT(gField)
{
     var today = new Date();
     var tmpDD = today.getDate();
     var tmpMM = today.getMonth();
     tmpMM++ ;
     var tmpYYYY = today.getFullYear();
     var tmpToday = tmpDD + "/" + tmpMM + "/" + tmpYYYY ;
	 if(parseInt(yymmdd(gField.value)) < parseInt(yymmdd(tmpToday)))
     {
          alert("Date entered cannot be past date...!");
          gField.focus();
          gField.select();
          return false;     
     }
     return true;
}

function monthdayfix(olddate)
{
     var yearpos = olddate.lastIndexOf("/");
     var yy = olddate.substring(yearpos+1);
     var tempmmdd = olddate.substring(0,yearpos);
     var mmpos = tempmmdd.indexOf("/");
     var mm = tempmmdd.substring(0, mmpos);
     var dd = tempmmdd.substring(mmpos+1);
     
return dd + "/" + mm + "/" + yy;
}
function yymmdd(tmpDate)
{
     var yearpos = tmpDate.lastIndexOf("/");
     var year = tmpDate.substring(yearpos+1,tmpDate.length);
     var tempddmm = tmpDate.substring(0,yearpos);
     year = parseInt(year,10);
     if (year < 90)
     {
          year = year + 2000;
     }
     else
     {
          if (year < 100)
          {
               year = year + 1900;
          }
     }
     var tempddmmpos = tempddmm.lastIndexOf("/");
     var month = tempddmm.substring(tempddmmpos+1,tempddmm.length);
     if (month.length == 1)
     {
          month = "0" + month;
     }
     var day = tempddmm.substr(0,tempddmmpos)
     if (day.length == 1)
     {
          day = "0" + day;
     }
return year + month + day;
}
function getDateString()
{
     var dateStr;
     dateStr = "" + this.getFullYear();
     if (this.getMonth() < 9)
          dateStr += "0";
     dateStr += (this.getMonth() + 1);
     if (this.getDate() < 10)
          dateStr += "0";
     dateStr += this.getDate();
     return dateStr;
}
Date.prototype.getDateString = getDateString;
function getFullYear()
{
     var year = this.getYear();
     if (year < 1000)
     {
          year += 1900;
     }
     return year;
}
Date.prototype.getFullYear = getFullYear;
// extract front part of string prior to searchString
function getFront(mainStr,searchStr)
{
     foundOffset = mainStr.indexOf(searchStr);
     if (foundOffset == -1)
     {
          return null;
     }
     return mainStr.substring(0,foundOffset);
}

// extract back end of string after searchString
function getEnd(mainStr,searchStr)
{
     foundOffset = mainStr.indexOf(searchStr);
     if (foundOffset == -1)
     {
          return null;
     }
     return mainStr.substring(foundOffset+searchStr.length,mainStr.length);
}

// insert insertString immediately before searchString
function insertString(mainStr,searchStr,insertStr)
{
     var front = getFront(mainStr,searchStr);
     var end = getEnd(mainStr,searchStr);
     if (front != null && end != null)
     {
          return front + insertStr + searchStr + end;
     }
     return null;
}
// remove deleteString
function deleteString(mainStr, deleteStr)
{
     return replaceString(mainStr,deleteStr,"");
}
// replace searchString with replaceString
function replaceString(mainStr, searchStr, replaceStr)
{
     var front = getFront(mainStr, searchStr);
     var end = getEnd(mainStr,searchStr);
     if (front != null && end != null)
     {
          return front + replaceStr + end;
     }
     else
     {
          return mainStr;
     }
     return null;
}
 

// function to check Passport Expiried for the given period

function IsPassportExipred(gfield,period)
{
	 var tmpdate;
	 var today    = new Date();
	 var yearpos     = gfield.value.lastIndexOf("/");
	 var year        = gfield.value.substring(yearpos+1,gfield.length);
	 var tempddmm    = gfield.value.substring(0,yearpos);				
	 var tempddmmpos = tempddmm.lastIndexOf("/");
	 var month       = tempddmm.substring(tempddmmpos+1,tempddmm.length);			
	 var day         = tempddmm.substring(0,tempddmmpos);								
	
     var ExpDate = new Date(year,month,day);
     var ExpDate = ExpDate.getDate() + "/" + ExpDate.getMonth() + "/" + ExpDate.getFullYear();   
     today.setDate(today.getDate()+period);	 
     tmpdate = today.getDate() + "/" + (today.getMonth()+1) + "/" + today.getFullYear() 
     
      if(parseInt(yymmdd(ExpDate)) < parseInt(yymmdd(tmpdate)))
      {
          alert("Passport Expiry date must be more than " + period + " days..!");
          gfield.focus();
          gfield.select();
          return false;     
      }
     
   return false;
}


