var LastValue;
var daysInMonth = new Array(12) ;
daysInMonth[1]	= 31 ;
daysInMonth[2]	= 29 ;  // must programmatically check this
daysInMonth[3]	= 31 ;
daysInMonth[4]	= 30 ;
daysInMonth[5]	= 31 ;
daysInMonth[6]	= 30 ;
daysInMonth[7]	= 31 ;
daysInMonth[8]	= 31 ;
daysInMonth[9]	= 30 ;
daysInMonth[10]	= 31 ;
daysInMonth[11]	= 30 ;
daysInMonth[12]	= 31 ;

function Validate(Value,dataType)
{
	var BackValue;
 
 	switch(dataType)
  	{
  		case('E'):
  		BackValue = ValidateForEmail(Value); 
            	break;
            	
  		case('A'):
  		BackValue = ValidateForAlphaNumeric(Value);
            	break; 
  		
  		case('N'):
  		BackValue = ValidateForNumber(Value); 
            	break;
            	
  		case('P'):
  		BackValue = ValidateForPhone(Value); 
            	break;
  		
  		case('S'):
  		BackValue = ValidateForString(Value); 
            	break;
  
  		case('UN'):
  		BackValue = ValidateForUN(Value); 
            	break;
  
  		case('PN'):
  		BackValue = ValidateForPN(Value); 
            	break;
  	}
 
 	return BackValue;
} 

function ValidateForPN(Value)
{
 var i;
 var j;
 var Result;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890-";

 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     if ((CurrentChar=='|') || (CurrentChar=='^'))
        {
         ForbiddenChar=true;
         Result = 2;
         break;
        }
        
     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
}  
 
 
  function ValidateForUN(Value)
{
 var i;
 var j;
 var Result;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_";

 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     if ((CurrentChar=='|') || (CurrentChar=='^'))
        {
         ForbiddenChar=true;
         Result = 2;
         break;
        }
        
     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
} 
 
//***********************************************************************************************
 function ValidateForString(Value)
{
 var i;
 var j;
 var Result;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÇÐÖÜÝÞçðöüýþ ";

 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     if ((CurrentChar=='|') || (CurrentChar=='^'))
        {
         ForbiddenChar=true;
         Result = 2;
         break;
        }
        
     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
} 
 

//***********************************************************************************************

function ValidateForEmail(Value)
{
 var i;
 var j;
 var Result;
 var AtFound;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_.";

 AtFound = false;
 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     if ((CurrentChar=='|') || (CurrentChar=='^'))
        {
         ForbiddenChar=true;
         Result = 2;
         break;
        }

     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
} 
 

//***********************************************************************************************

function ValidateForAlphaNumeric(Value)
{
 var i;
 var j;
 var Result;
 var CurrentChar;
 var ForbiddenChar;
 
 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     if ((CurrentChar=='|') || (CurrentChar=='^'))
        {
         ForbiddenChar=true;
         Result = 2;
         break;
        }

     }
return Result;
} 


//***********************************************************************************************

function ValidateForNumber(Value)
{
 var i;
 var j;
 var Result;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="0123456789"
 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
} 


//***********************************************************************************************

function ValidateForPhone(Value)
{
 var i;
 var j;
 var Result;
 var ValidSet;
 var CurrentChar;
 var ForbiddenChar;
 
 ValidSet="0123456789"
 Result = 1;
 for (i = 0;  i < Value.length;  i++)
     {
     CurrentChar = Value.charAt(i);
     for (j = 0;  j < ValidSet.length;  j++)
         if (CurrentChar == ValidSet.charAt(j))
             break;
     if (j == ValidSet.length)
        {
        Result = 0;
        break;
        }
     }
return Result;
}  
 
 
 
 
 
 
 




//--------------------------------------------------------------------------------------------------------------

function CheckForDate(Value)
{
 var i;
 var j;
 var Passed;
 var ValidSet;
 var TempValue;
 var CurrentChar;
 var ArrangedValue;
 var SeparatorCharFound;

 Passed=true;
 SeparatorCharFound = false;
 ValidSet="0123456789/."
  for (i = 0;  i < Value.length;  i++)
     {
      CurrentChar = Value.charAt(i);
      for (j = 0;  j < ValidSet.length;  j++)
           if (CurrentChar == ValidSet.charAt(j))
               break;
      if (j == ValidSet.length)
          {
           Passed = false;
           break;
           }
      }

  if (Passed)
     {
      ArrangedValue="";
      for (i = 0;  i < Value.length;  i++)
           {
            if (Value.charAt(i)!=".")
               ArrangedValue+=Value.charAt(i);   
               else
                  ArrangedValue+="/";   
            if (Value.charAt(i)=="/")  
               SeparatorCharFound = true;   
           }
     
      if(!SeparatorCharFound)
        {
        Value = "";
        for (i = 0;  i < ArrangedValue.length;  i++)
           {
            Value += ArrangedValue.charAt(i);
            if ((i==1) || (i==3))
                Value += "/";
           }
        }
         
      Passed=isDate(Value);

      }
return Passed;
     }
//--------------------------------------------------------------------------------------------------------------
//**************************************************************************************************************

// AUTHOR:       Serdar S. Kacar, mailto:sskacar@hotmail.com
// COMPANY:      SFSDEV/Ankara, http://www.sfs.com.tr
function isDate (inDate)
{   
	myDateExtractor = /[\D0]*(\d+)[\D0]+(\d+)[\D0]*(\d*).*/ ;
	if ( ! myDateExtractor.test(inDate) ) return false ;
	var day		= parseInt(inDate.replace(myDateExtractor, "$1")) ;
	var month	= parseInt(inDate.replace(myDateExtractor, "$2")) ;
	var year	= parseInt(inDate.replace(myDateExtractor, "$3")) ;
	if ( isNaN(year) ) year = 0 ;
    if (year<100) {
		if (year>20) {
		year += 1900 ;
		}
		else {
		year += 2000 ;
		}
    }
    if ( year < 1900 || year > 2100 ) return false ;
    if ( month < 1 || month > 12 ) return false ;
    // catch invalid days, except for February
    if ( day < 1 || day > daysInMonth[month]) return false ;
    // check for February 29
    if ((month == 2) && (day > daysInFebruary(year))) return false ;
    
    if ((""+month).length == 1)
    {
        month="0"+month;
    }
    if ((""+day).length == 1)
    {
        day="0"+day;
    }
    
    LastValue = day + "/" + month + "/" + year ;
    return true ;
}
//--------------------------------------------------------------------------------------------------------------
function daysInFebruary (year)
{
// February has 29 days in any year evenly divisible by four,
// EXCEPT for centurial years which are not also divisible by 400.
    return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 ) ;
}

//*********************************************************************************************************
