/* ==================================================================

DESCR:  Valitation code for Date.

================================================================== */
/*  Check for a valid Date it will check for leap year also
    Code modified by jaspal for the check date method
	new code added for the validation of month
	return false if month >12 or month < 1......jaspal.
     Note :- Month starts from 1
     
     Modification history:
	 20/04/07 1-functions checkDateRange1() and checkDateRange2() were
	 			written. They work when used with DateField1.jsp and
	 			DateRange1.jsp respectively.
																-Ajay.
*/
var today = new Date();
var months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
function checkDate(dd,mm,yyyy)
{
      dd = eval(dd); // 10/01/05 parseInt -> eval
      mm = eval(mm);
      yyyy = eval(yyyy);   
      var leapflag = eval('yyyy%4');
      // alert ("dd="+dd+", mm="+mm+", yyyy="+yyyy+", leapflag="+leapflag);
    if(mm > 12 || mm < 1)
    {
        alert("Invalid month ,enter month between 1-12\n ");
        return (false);          
    }
     if(leapflag == 0)
     {
        if(mm==2 && dd > 29)   
        {
             alert("Invalid date \n In leap Year February contain only 29 days");
             return (false);
        }    
    }
    else
    {
        if(mm==2 && dd > 28)   
        {
             alert("Invalid date \n February contain only 28 days");
             return (false);
        }    
    }
   if(mm == 4 && dd>30)
   {
          alert("Invalid date \n April contain only 30 days");
          return (false);          
   }
  if(mm == 6 && dd>30)
   {
          alert("Invalid date \n June contain only 30 days");
          return (false);          
   } 
 if(mm == 9 && dd>30)
   {
          alert("Invalid date \n September contain only 30 days");
          return (false);          
   }
if(mm == 11 && dd>30)
   {
          alert("Invalid date \n November contain only 30 days");
          return (false);          
   }   
   if((mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) && ( dd > 31 || dd < 1))
   {
       alert("Invalid date ,enter date between 1-31\n ");
       return (false);          
   }
   return (true);
}

/*  Check for a Date Before today */ 

function checkBefore(dd,mm,yyyy)
{
      today = new Date();      
      dd = eval(dd);
      mm = eval(mm);
      yyyy = eval(yyyy);   

      checkBrower();
       var year = today.getFullYear();
       if(browser == 'IE')
       year = today.getFullYear();
       return(compareGreater(dd,mm-1,yyyy,today.getDate(),today.getMonth(),year,1));   
}


/*  Check for a Date After today */

function checkAfter(dd,mm,yyyy)
{
      dd = eval(dd);
      mm = eval(mm);
      yyyy = eval(yyyy);   
   
   checkBrower();
   var year = today.getFullYear();
   if(browser == 'IE')
   year = today.getFullYear();
   return (compareGreater(dd,mm-1,yyyy,today.getDate(),today.getMonth(),year,2));
}

/*  For checking Browser */
function checkBrower()
{   
   var br = navigator.appName;
   if(br == 'Netscape')
   {
      browser = "N";
   }
   else if(br == 'Microsoft Internet Explorer')
   {
      browser = "IE";
   }   
   else if(navigator.userAgent.indexOf('Opera') != -1)	
   browser ="Opera";
   return browser;   
}      

/* For comparing 2 dates
 *   1 < 2 if flag = 1
 *   1 > 2 if flag = 2
 */

function compareGreater(dd1,mm1,yy1,dd2,mm2,yy2,flag)
{	
	var mesg="";
	var correctValue=0;
	return compareGreaterMessage(dd1,mm1,yy1,dd2,mm2,yy2,flag,mesg,correctValue);
}
function compareGreaterMessage(dd1,mm1,yy1,dd2,mm2,yy2,flag,mesg,correctValue)
{
      dd1 = eval(dd1);
      mm1 = eval(mm1);
      yy1 = eval(yy1);   
      dd2 = eval(dd2);
      mm2 = eval(mm2);
      yy2 = eval(yy2);   

      var mesgUse = 0;
   if(yy1 > yy2 && flag == 1)
  {
        checkBrower();
        if (mesg=="") {
	       alert("Invalid Year \n Enter a year before "+yy2+" not "+yy1);
	       return(false);
	}
	else
		mesgUse=1;
  } 		
  else if(yy1 == yy2)
  {
        if(mm1 > mm2 && flag == 1)
        {
        	if (mesg=="") {
        		    // 22/12/04  1-  Similar change is made in entire file dateValitation.js.
		            // alert("Invalid month \n Enter a month before ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		            alert("Invalid month \n Enter a month before ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		            return(false);
	        }
	        else
	        	mesgUse=1;
        }
        else if(mm1 == mm2)
        {
	   if(dd1 > dd2 && flag == 1) 
           {	       	      
        	if (mesg=="") {
        		    // alert ("mm1/2="+mm1+"/"+mm2);
		       alert("Invalid Date \n Enter a date  before ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		       return(false);
	        }
	        else
	        	mesgUse=1;
           }
           else if(dd1 < dd2 && flag == 2) 
           {
        	if (mesg=="") {
		       alert("Invalid Date \n Enter a date  after ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		       return(false);
	        }
	        else
	        	mesgUse=2;
           }
        }               
        else if(mm1 < mm2 && flag == 2)
	{
        	if (mesg=="") {
		     alert("Invalid month \n Enter a month after ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		     return(false);  
	        }
	        else
	        	mesgUse=2;
  	}
  }
  else if(yy1 < yy2 && flag == 2)
  {
	if (mesg=="") {
		alert("Invalid year \n Enter a year after ("+dd2+"-"+months[mm2]+"-"+yy2+") not ("+dd1+"-"+months[mm1]+"-"+yy1+")");
		return(false);  
        }
        else
		mesgUse=2;
  }
  // alert ("mesgUse="+mesgUse);
  if (mesgUse==0)
	  return(true);
  if (mesgUse==1)
  	if (correctValue==1)
	  alert (mesg+"\nPlease enter a date "+dd1+"-"+months[mm1]+"-"+yy1
  		+" OR HIGHER instead of "+dd2+"-"+months[mm2]+"-"+yy2+".");
  	else
	  alert (mesg+"\nPlease enter a date "+dd2+"-"+months[mm2]+"-"+yy2
  		+" OR LOWER instead of "+dd1+"-"+months[mm1]+"-"+yy1+".");
  else
  	if (correctValue==1)
	  alert (mesg+"\nPlease enter a date "+dd1+"-"+months[mm1]+"-"+yy1
  		+" OR LOWER instead of "+dd2+"-"+months[mm2]+"-"+yy2+".");
  	else
	  alert (mesg+"\nPlease enter a date "+dd2+"-"+months[mm2]+"-"+yy2
  		+" OR HIGHER instead of "+dd1+"-"+months[mm1]+"-"+yy1+".");
  return false;
}

/* For checking Date Range */

function checkDateInRange(dd1,mm1,yy1,dd2,mm2,yy2,dd,mm,yy)
{
     dd1 = eval(dd1);
      mm1 = eval(mm1);
      yy1 = eval(yy1);   
      dd2 = eval(dd2);
      mm2 = eval(mm2);
      yy2 = eval(yy2);   
     dd1 = eval(dd1);
      mm1 = eval(mm1);
      yy1 = eval(yy1);   
      dd = eval(dd);
      mm = eval(mm);
      yy = eval(yy);   

   /* Checking lower limit */
   if(!compareGreater(dd1,mm1,yy1,dd,mm,yy,1))
   {
      return (false);
   }
   /* Checking upper limit */
   if(!compareGreater(dd,mm,yy,dd2,mm2,yy2,2))
   {
      return (false);
   } 
return (true);
}

/* For geting no of Days between 2 Dates 
   d1 - Start Date
   d2 - End Date
*/

function getDates(d1,d2)
{      
    var  tt = eval(d2.getTime()-d1.getTime());     
    return eval(tt/86400000);
}
function checkWithIn(d1,d2,d3,d4)
{  
  if(d3 >= d1 && d3 < d2)
  return (true);
  else if(d4 > d1 && d4 <= d2)
  return (true);
  else if(d3 <= d1 && d4 >= d2)
    return (true); 
  else
    return (false);	
}
function addDys(dtCt)
{  
  today = new Date();
  dt = addDays(eval(today.getDate()),eval(today.getMonth())+1,eval(today.getFullYear()),eval(dtCt));
  return dt;
}
function addDays(dd,mm,yyyy,dtCt)
{
      dd = dd+dtCt;
      var flag = true;

      while(flag)
      {

      lp = (yyyy%4 == 0 ? true : false);

      if(mm == 2 && dd > 29 && lp)
      {
        mm = mm +1;
        dd = dd - 29;
        if(dd > 31)
        flag = true;
        else
        flag = false;
      }
      else if(mm == 2 && dd > 28 && !lp)
      {
        mm = mm +1;
        dd = dd - 28;
        if(dd > 31)
	flag = true;
	else
	flag = false;
      }
      else if((mm == 1 || mm == 3 || mm == 5 || mm == 7 || mm == 8 || mm == 10 || mm == 12) && dd > 31)
      {
        mm = mm +1;
        dd = dd - 31;
        if(dd > 30 && mm != 2)
	flag = true;
	else if(dd > 29 && mm == 2 && lp)
	flag = true;
	else if(dd > 28 && mm == 2 && !lp)
	flag = true;
	else
	flag = false;
      }
      else  if((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30)
      {
        mm = mm +1;
        dd = dd - 30;
        if(dd > 31)
	flag = true;
	else
	flag = false;
      }
      else
      flag = false;
      }
      return new Date(yyyy,mm - 1,dd,0,0,0);
}
function checkDateRange1()
{
	if (document.form1.DD1.value=="DD"){
		alert("Day must be selected");
		document.form1.DD1.focus();
		return false;
	}
	if (document.form1.MM1.value=="MM"){
		alert("Month must be selected");
		document.form1.MM1.focus();
		return false;
	}
	if (document.form1.YY1.value=="YYYY"){
		alert("Year must be selected");
		document.form1.YY1.focus();
		return false;
	}
	return true;
}
function checkDateRange2()
{
	if (document.form1.DD2.value=="DD"){
		alert("Day must be selected");
		document.form1.DD2.focus();
		return false;
	}
	if (document.form1.MM2.value=="MM"){
		alert("Month must be selected");
		document.form1.MM2.focus();
		return false;
	}
	if (document.form1.YY2.value=="YYYY"){
		alert("Year must be selected");
		document.form1.YY2.focus();
		return false;
	}
	return true;
}