var dtCh= "/";
var minYear=1900;
var maxYear=2100;

//function to validate email

function IsEmailValid(str)	{

	var retval=true;
	var AtSym=str.indexOf('@');				
	var Period=str.lastIndexOf('.');		
	var Space=str.indexOf(' ');				
	var Length=str.length-1;
	var index = str.indexOf('@');
   	var substr = str.substring(index+1);
   	var index2 = substr.indexOf('@');

	if ((AtSym<1)||(str.charAt(0)=='_')||(str.charAt(Length)=="_")||				//'@' can't be in first position
		/*(str.indexOf(".")<=AtSym+1)||*/
		(str.indexOf("_")==AtSym+1)||(str.charAt(AtSym-1)=="_")||
		(Period<=AtSym+1)||					//Must be atleast one valid char between '@' and '.'
		(Period==Length)||					//Must be atleast one valid char after '.'
		((Space>0) && (Space!=Length))||
		(index2 != -1)){                       //No empty spaces permitted
		 retval=false; 
		 alert("Invalid email address");
	 }
		 return retval;
}


function valCheck(form)
{

  for(i=0;i<form.elements.length;i++)
  {
    if(form.elements[i].type=="text" || form.elements[i].type=="password")
	{
      if(form.elements[i].value=="")
	  {	
	  	str=form.elements[i].name;
        alert("Please enter the "+str);
		form.elements[i].focus();
		return false;
      }
    }
 }

  //return true;
}



//function to validate price input

function check_price()
{
   if ((event.keyCode < 48 || event.keyCode > 57) && (event.keyCode != 46) ) 
  {
  	alert("Invalid input only numeric values accepted");
	event.returnValue = false;
  }

}

function check_alpha()
{
	if ((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65) || (event.keyCode > 90 && event.keyCode < 97))
    {
  		alert("Invalid input no special characters allowed");
		event.returnValue = false;
    }

}

//function to validate telepone number input

function check_telephone()
{
	if ((event.keyCode < 48 || event.keyCode > 57)&&(event.keyCode != 45))
	{
	  	alert("Invalid input only numeric values and '-' accepted");
		event.returnValue = false;
	}

}

function check_number()
{
	if (event.keyCode < 48 || event.keyCode > 57)
	{
	  	alert("Invalid input only numeric values accepted");
		event.returnValue = false;
	}
}

//function to validate character input

function check_char()
{
if ((event.keyCode >96  && event.keyCode <123) ||(event.keyCode >64  && event.keyCode <91) ||event.keyCode==32)	{
		event.returnValue = true;
	}else{
	  	alert("Invalid input only alphabetic values accepted");		
		event.returnValue = false;
	}

}

//function to validate date input
function check_date()
{
	if (event.keyCode < 47 || event.keyCode > 57)
	{
		event.returnValue = false;
	  	alert("Invalid input only date accepted in mm/dd/yyyy format");
	}

}

//function to trim the whitespaces form a given string
function rem_spaces(inputString) {
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { 
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }

   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { 
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }

   while (retValue.indexOf("  ") != -1) { 
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); 
   }
   return retValue; 

}

//functions to check for valid date
function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;

}



function stripCharsInBag(s, bag){

	var i;

    var returnString = "";

    // Search through string's characters one by one.

    // If character is not in bag, append to returnString.

    for (i = 0; i < s.length; i++){   

        var c = s.charAt(i);

        if (bag.indexOf(c) == -1) returnString += c;

    }

    return returnString;

}



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 );

}

function DaysArray(n) {

	for (var i = 1; i <= n; i++) {

		this[i] = 31

		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}

		if (i==2) {this[i] = 29}

   } 

   return this

}



function isDate(dtStr){

	var daysInMonth = DaysArray(12)

	var pos1=dtStr.indexOf(dtCh)

	var pos2=dtStr.indexOf(dtCh,pos1+1)

	var strMonth=dtStr.substring(0,pos1)

	var strDay=dtStr.substring(pos1+1,pos2)

	var strYear=dtStr.substring(pos2+1)

	strYr=strYear

	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)

	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)

	for (var i = 1; i <= 3; i++) {

		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)

	}

	month=parseInt(strMonth)

	day=parseInt(strDay)

	year=parseInt(strYr)

	if (pos1==-1 || pos2==-1){

		alert("The date format should be : mm/dd/yyyy")

		return false

	}

	if (strMonth.length<1 || month<1 || month>12){

		alert("Please enter a valid month")

		return false

	}

	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){

		alert("Please enter a valid day")

		return false

	}

	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){

		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)

		return false

	}

	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){

		alert("Please enter a valid date")

		return false

	}

return true

}


