//  -------------------------------------------------------------------------
//  (C) Copyright Stuart Jensen 2002.  All rights reserved.
//  Not to be reproduced in any form or by any means without prior written
//  permission of 
//  Stuart Jensen
//  27 Broadleaf Cir
//  Windsor, CT 06095
//  (860) 285-8404
//  -------------------------------------------------------------------------
//  Creation Date       : 11/08/2002
//  -------------------------------------------------------------------------
/// <reference path="jquery-1.3.2-vsdoc.js"/>

//----------------------------------------------------------------------
// Procedure: ValEmail
// Notes:
//
//----------------------------------------------------------------------
function ValEmail(InField, bRequired)
{
try
   {      
   var checkstr = "abcdefghijklmnopqrstuvwxyz0123456789_-.";
   var EmailValue = "";
   var EmailField = InField;
   var err = 0;
   var i;
   var sLeft="";
   var sRight="";
   var sByte="";
   
   err = 0;
   
   // Nothing is input and it's not required
   if (EmailField.value == "" && bRequired != 1)
      return(0);

   EmailValue = EmailField.value;
   EmailValue = EmailValue.toLowerCase();

   // must have @ char
   i = EmailValue.indexOf("@");
   if (i < 0)
      return(1);
      
   sLeft = EmailValue.substr(0,i);
   sRight = EmailValue.substr(i+1);      

   if (sLeft.length == 0 || sRight.length == 0)
      return(1);
   
   for (i = 0; i < sLeft.length; i++)
      {
	   // Get byte to compare
	   sByte = sLeft.substr(i,1)
	   
      if (checkstr.indexOf(sByte) < 0) 
         return(1)
      }

   for (i = 0; i < sRight.length; i++)
      {
	   // Get byte to compare
	   sByte = sRight.substr(i,1)
	   
      if (checkstr.indexOf(sByte) < 0) 
         return(1)
      }

   return(0);   

   }
catch(e)
   {
   catchRoutine(e);
   return(1);
   }	   
   
}

//----------------------------------------------------------------------
// Procedure: ValPhone
// Notes:
//
//----------------------------------------------------------------------
function ValPhone(InField, sMask, bRequired)
{
try
   {      
   var checkstr = "0123456789";
   var PhoneValue = "";
   var PhoneField = InField;
   var err = 0;
   var i;
   var sByte1="";
   var sByte2=""
   
   err = 0;
   
   // Nothing is input and it's not required
   if (PhoneField.value == "" && bRequired != 1)
      return(0);

   PhoneValue = PhoneField.value;

   // Must be the length of the specified mask
   if (PhoneValue.length != sMask.length)
      return(1);
   
   for (i = 0; i < PhoneValue.length; i++)
      {
      	
	   // Get bytes to compare
	   sByte1 = sMask.substr(i,1)
	   sByte2 = PhoneValue.substr(i,1)
	   
	   // Must match the mask char if not a number
	   if (sByte1 != "#")
	      {
	      if (sByte1 != sByte2)
	         return(1);
	      }
      else
         {
         if (checkstr.indexOf(sByte2) < 0) 
            return(1)
         }	      
      }

   return(0);   

   }
catch(e)
   {
   catchRoutine(e);
   return(1);
   }	   
}

//----------------------------------------------------------------------
// Procedure: ValDate
// Notes:
//
//----------------------------------------------------------------------
function ValDate(InField, Required)
{
try
   {      
   var checkstr = "0123456789/-";
   var delimiters = "/-";
   var DelCnt=0;
   var DateValue = "";
   var DateField = InField;
   var day;
   var month;
   var year;
   var leap = 0;
   var err = 0;
   var i;
   var sByte="";
   var sBuff="";
   
   err = 0;
   
   // Nothing is input and it's not required
   if (DateField.value == "" && Required != 1)
      return(err);
   
   DateValue = DateField.value + "/";
   
   for (i = 0; i < DateValue.length; i++)
      {
      	
	   // Get next byte
	   sByte = DateValue.substr(i,1)

      // Not a valid char, exit with error
	   if (checkstr.indexOf(sByte) < 0) 
	      {
	      err=1;
	      break;
	      }

      // Hit a delimiter, incr count
      if (delimiters.indexOf(sByte) >= 0) 
         {
         DelCnt++;

         switch (DelCnt)
            {

            // Processing month
            case 1:
               month = sBuff;
               sBuff="";
               
               if (month.length > 2 || month.length==0)
	               err=1;

               if ((month < 1) || (month > 12)) 
                  {
	               err=1;
	               break;
                  }

               if (month.length == 1)
                  month = "0" + month;
               
            break;
            
            // Processing Day
            case 2:
               day = sBuff;
               sBuff="";
            
               if (day.length > 2 || day.length==0 || day < 1)
	               err=1;

               // always allow leap year, well catch that in the year edit
               if ((month == 2) && (day > 29)) 
                  err = 1;
               
               if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) 
                  err = 1;
               
               if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) 
                  err = 1;
                  
               if (day.length == 1)
                  day = "0" + day;
            
            break;

            // Processing Year
            case 3:
               year = sBuff;
               sBuff="";
               
               if (year.length != 2 && year.length !=4)
	               err=1;

               if (year.length == 2)
                  {
                  if (year < 50)
                     year = "20" + year;
                  else
                     year = "19" + year;
                  }
                     
               // check if leap year
               if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) 
                  leap = 1;
               
               if ((month == 2) && (leap == 0) && (day > 28)) 
                  err = 1;
	               
            break;
            
            default:
	            err=1;
	         break;
            }
         }            
      else
         {
         sBuff = (sBuff + sByte);
         }

      // Already got an error, exit loop         
      if (err !=0)
         break;
      }     
      
   if (err == 0) 
      {
      DateField.value = month + "/" + day  + "/" + year;
      }

   return(err);
      
   }
catch(e)
   {
   catchRoutine(e);
   return(1);
   }	   
}






