// JavaScript Document

function is_date(objDate)
 {
	//Date Variable, get the Value from Object
	var strDate = new String(objDate.value);

	//Change the Delimeter i.e. / Or - 
	var strDateDelimeter = "/";
	// No. of Delimeter found
	var countDelimeter = 0;
	
	//Loop Variable
	var i = 0;
	var j = 0;
	
	//Flag variables
	var flgDay   = false;
	var flgMonth = false;
	
	var flgMonthFormat = -1;
	
	var curYear ;
		
	//Array for Holding Day for Months
	var arrDays    = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	//String Array for Months
	var arrSMonths = new Array("01","02","03","04","05","06","07","08","09","10","11","12"); 
	var arrIMonths = new Array(1,2,3,4,5,6,7,8,9,10,11,12);
	
	var arrValues;
	var cntNoDays;
			
	//When Compulsory

		
	//When Date Exists
	if(strDate != "")
	{
		//Split the Date into Parts i.e day,month and year
		arrValues = strDate.split(strDateDelimeter);

		if(arrValues.length == 1)
		{
			strDateDelimeter = "-";
			arrValues = strDate.split(strDateDelimeter);
		}	
	
		if(arrValues.length!=3)
		{
			alert("Invalid Date ");
			objDate.select();
			objDate.focus();
			return false;
		}
		
		//Check for Year
		if(arrValues[0].length==2 || arrValues[0].length==4)
		{
			flgDay=false;
			for(i=0;i<arrValues[0].length;i++)
			{
				if(arrValues[0].substring(i,1)>="0" && arrValues[0].substring(i,1)<="9")
				{
					flgDay = true;
				}
			}
				
			if(flgDay==false)
			{
				objDate.select();
				alert("Invalid Year ");
				objDate.focus();
				return false;	
			}	
		}
		else
		{
				alert("Invalid Year ");
				objDate.select();
				objDate.focus();
				return false;	
		}
	
		//Two Digited Year
		//Turn On Century
		if(arrValues[0].length==2)
		{  
		  if (arrValues[0]<50)
			curYear = "20" + arrValues[0];
		  else
		     curYear="19"+arrValues[0];
		}     
	
		else
		  curYear = arrValues[0];

		if(curYear > new Date().getFullYear())
		{
			alert("Year cannot exceed " + new Date().getFullYear());
			objDate.focus();
			objDate.select();
			return false;
		}
		//Check the Month
		//Ensure that given month lies between 1 and 12
		//	alert(arrValues[1]);
	
		for(i=0;i<arrIMonths.length;i++)
		{
			if(parseInt(arrValues[1],10)==parseInt(arrIMonths[i],10))
			{
				flgMonth  = true;
				cntNoDays = arrDays[i];			
				flgMonthFormat = i;
				if(curYear%4==0 || curYear%100==0)
					cntNoDays++;
						
				break;	
			}
		}
	
		//Probably  Check, whether user has type 3-char date i.e jan etc.
		if(flgMonth==false)
		{
			for(i=0;i<arrIMonths.length;i++)
			{
				if(arrValues[1].toLowerCase()==arrSMonths[i])
				{
					flgMonth  = true;
					cntNoDays = arrDays[i];			
					if(curYear%4==0 || curYear%100==0)
						cntNoDays++;
							
					break;	
				}
			}
		}
	
		if(flgMonth==false)
		{
			alert("Invalid Month ");
			objDate.focus();
			objDate.select();
			return false;
		}
	
		//Check for Valid No. of Days for the specified month
		if(arrValues[2].length>2)
		{
			alert("Invalid Day ");
			objDate.focus();
			objDate.select();
			return false;
		}
	
		flgDay=false;
		for(i=0;i<arrValues[2].length;i++)
		{
			if(arrValues[2].substring(i,1)>="0" && arrValues[2].substring(i,1)<="9")
			{
				flgDay = true;
			}
		}
	
	
		if((flgDay==false) || parseInt(arrValues[2],10) > cntNoDays)
		{
			alert("Invalid No. of Days ");
			objDate.focus();
			return false;
		}
	
		if(flgMonthFormat>=0)
			arrValues[1] = arrSMonths[flgMonthFormat];
				
//		objDate.value= arrValues.join("/");
	
	}
 }

function CompareDates(oDate1,oDate2)
	{
		
		var pDate1 = oDate1.value;
		var pDate2 = oDate2.value;
		
		var vD1 = new String(pDate1);
		var vD2 = new String(pDate2);
		
		var flgDGt = false;
		var flgMGt = false;
		var flgYGt = false;
		
		var monPos1 = 0;
		var monPos2 = 0;
				
		var arrD1 = vD1.split("/");
		var arrD2 = vD2.split("/");
		
		var pD1 = arrD1[2];
		var pM1 = arrD1[1];
		var pY1 = arrD1[0];

		var pD2 = arrD2[2];
		var pM2 = arrD2[1];
		var pY2 = arrD2[0];
		
		var i;
		
		var monArr = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
		
		if (parseInt(pY1,10) < parseInt(pY2,10))			return true;
		if (parseInt(pY1,10) > parseInt(pY2,10)) 
		{
			alert("Year1 Exceeds Year2");
			oDate1.focus();
			oDate1.select();
			return false;
		}
		
		monPos1 = 0;		
		//alert(pM1.toUpperCase()+" "+pM2.toUpperCase());
		for(i=0;i<=11;i++)
		  {
			if(pM1.toUpperCase() == monArr[i])
				{
				 	monPos1 = i+1;
					break;
				}
		  }					
		
		monPos2 = 0;		
		for(i=0;i<=11;i++)
		  {
			if(pM2.toUpperCase() == monArr[i])
				{
					monPos2 = i+1;
					break;
				}
		  }					
		
		//alert (monPos1+' ' +monPos2);
		if (parseInt(monPos1,10)<parseInt(monPos2,10)) 			return true;
		if (parseInt(monPos1,10)>parseInt(monPos2,10)) 			
		{
			alert("Month11 Exceeds Month2 "+ monPos1+" "+monPos2);
			oDate1.focus();
			oDate1.select();
			return false;
		}
		
//		alert(pD1);
//		alert(pD2);
		
//		alert(parseInt(pD1));
//		alert(parseInt(pD2));
//		alert(parseInt("08"));
		
		if(parseInt(pD1,10) <= parseInt(pD2,10)) 		
			return true;
		else
		{
			alert("Start Date Exceeds End Date");
			oDate1.focus();
			oDate1.select();
			return false;
		}
	}

function isEmail (s)
{   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);

    if (isWhitespace(s)) return false;
    if (!isvalidEmailChar(s)) return false;

    atOffset = s.lastIndexOf('@');

    if ( atOffset < 1 )
        return false;
    else {
 	dotOffset = s.indexOf('.', atOffset);

      if ( dotOffset < atOffset + 2 ||
         dotOffset > s.length - 2 ) {
         return false;
      }
   }
   return true;
}

function CompareDOB(oDate1,oDate2)
	{
		
		var pDate1 = oDate1.value;
		var pDate2 = oDate2.value;
		
		var vD1 = new String(pDate1);
		var vD2 = new String(pDate2);
		
		var flgDGt = false;
		var flgMGt = false;
		var flgYGt = false;
		
		var monPos1 = 0;
		var monPos2 = 0;
				
		var arrD1 = vD1.split("/");
		var arrD2 = vD2.split("/");
		
		var pD1 = arrD1[2];
		var pM1 = arrD1[1];
		var pY1 = arrD1[0];

		var pD2 = arrD2[2];
		var pM2 = arrD2[1];
		var pY2 = arrD2[0];
		
		var i;
		
		var monArr = new Array("01","02","03","04","05","06","07","08","09","10","11","12");
		
		if (parseInt(pY1,10) < parseInt(pY2,10))			return true;
		if (parseInt(pY1,10) > parseInt(pY2,10)) 
		{
			//alert("Year1 Exceeds Year2");
			oDate1.focus();
			oDate1.select();
			return false;
		}
		
		monPos1 = 0;		
		//alert(pM1.toUpperCase()+" "+pM2.toUpperCase());
		for(i=0;i<=11;i++)
		  {
			if(pM1.toUpperCase() == monArr[i])
				{
				 	monPos1 = i+1;
					break;
				}
		  }					
		
		monPos2 = 0;		
		for(i=0;i<=11;i++)
		  {
			if(pM2.toUpperCase() == monArr[i])
				{
					monPos2 = i+1;
					break;
				}
		  }					
		
		//alert (monPos1+' ' +monPos2);
		if (parseInt(monPos1,10)<parseInt(monPos2,10)) 			return true;
		if (parseInt(monPos1,10)>parseInt(monPos2,10)) 			
		{
			//alert("Month11 Exceeds Month2 "+ monPos1+" "+monPos2);
			oDate1.focus();
			oDate1.select();
			return false;
		}
		
//		alert(pD1);
//		alert(pD2);
		
//		alert(parseInt(pD1));
//		alert(parseInt(pD2));
//		alert(parseInt("08"));
		
		if(parseInt(pD1,10) <= parseInt(pD2,10)) 		
			return true;
		else
		{
			//alert("Start Date Exceeds End Date");
			oDate1.focus();
			oDate1.select();
			return false;
		}
	}

function pincode() 
{
	if ((event.keyCode >=48 && event.keyCode <= 57) ||  event.keyCode == 8 )
			event.keyCode=event.keyCode;
	else
			event.keyCode=0;	
				

}
function isFloat(objFloat)
{
					
					if (isNaN(objFloat.value) == true)
					{
						alert ("Please Enter Valid Number");
						objFloat.select();
						objFloat.focus();
						return false;
					}
						return true;					
}	
function floatOnkeypress()
{
		if ((event.keyCode >=48 && event.keyCode <= 57) || event.keyCode == 8 || event.keyCode == 46)
				event.keyCode=event.keyCode;
		else
				event.keyCode=0;	
}
function is_number()
 	{

		if ((event.keyCode >=48 && event.keyCode <= 57) || event.keyCode == 8 )
				event.keyCode=event.keyCode;
		else
				event.keyCode=0;	
	
	}
<!-- Original:  Sandeep V. Tamhankar (stamhankar@hotmail.com) -->

<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! http://javascript.internet.com -->

<!-- Begin
function emailCheck(emailStr) {
// checks if the e-mail address is valid
var emailPat = /^(\".*\"|[A-Za-z]\w*)@(\[\d{1,3}(\.\d{1,3}){3}]|[A-Za-z]\w*(\.[A-Za-z]\w*)+)$/;
var matchArray = emailStr.match(emailPat);
if (matchArray == null) {
alert("Your email address seems incorrect.  Please try again (check the '@' and '.'s in the email address)");
return false;
}
// make sure the IP address domain is valid
var IPArray = matchArray[2].match(/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/);
if (IPArray != null) {
for (var i=1;i<=4;i++) {
if (IPArray[i]>255) {
alert("Destination IP address is invalid!")
return false;
      }
   }
}
return true;
}
function isAlphabetic (s) {   
    var i;
    if (isEmpty(s))
       if (isAlphabetic.arguments.length == 1) 
           return defaultEmptyOK;
       else 
           return (isAlphabetic.arguments[1] == true);

    for (i = 0; i < s.length; i++) {
        // Check that current character is letter.
        var c = s.charAt(i);

        if (!isLetter(c))
            return false;
    }

    // All characters are letters.
    return true;
}

function isAlphanumeric (s) {   
    var i;
    if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}

//  End -->

