function validate_form(f){
	if((f.state.value == "") || (f.state.value == null)){
		alert("Please choose a state");
		return false;
		}

	if(f.userchecked != true){
		alert("Please choose a user");
		return false;
		}
} 

var whitespace = " \t\n\r";

function splitDate(s,s1)
{
	var sd = s.split("\/");
	if (sd.length!=3)
	{
		return false;
	}else
	{
		Smonth = sd[0];
		Sday = sd[1];
		Syear = sd[2];
	}
	var sd = s1.split("\/");
	if (sd.length!=3)
	{
		return false;
	} else
	{
		Emonth = sd[0];
		Eday = sd[1];
		Eyear = sd[2];
		
	}
	return true;
}

function isPassword(s)
{

	var invalid = " "; // Invalid character is a space

	if ((s.length < 6) || (s.length > 30)) 
		return true;

	if (isWhitespace(s))
	 {
		return true;
	}
	var INvalid = "~`!@#$%^&*()-+={}[]\|:;'<>,.?/ ";
	
	for (var i=0; i < s.length; i++) 
	{
		var c = s.charAt(i);
		
		 if(!(INvalid.indexOf(c) == -1))
		  {
				 return true;
		  }
	}
	return false;	
}

function isDDMMValid(s)
{
	return ((s == null) || (s.length == 0) || (s.length > 2))
}

function isYYValid(s)
{
	return ((s == null) || (s.length == 0) || (s.length > 4))
}

function isEqual(s1,s2)
{
      return ((s1 == s2))
}

function isLetter (c)
{   
       return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isLetterOrDigit (c)
{  
	for (var i=0; i < s.length; i++) 
	{
		var ch = s.charAt(i);
		if( ((ch >= "a") && (ch <= "z")) || ((ch >= "A") && (ch <= "Z")) || ((ch >= "0") && (ch <= "9")))
		{
		}
		else
		{
			return false;
		}

		}

		return true;
       //return (isLetter(c) || isDigit(c))

}

function isEmpty(s)
{   
      return ((s == null) || (s.length == 0))
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isGradeScore(s)
{
     return ((s >= "1") && (s <= "6"))
}

function isGradeScoreCorrect(start,end)
{
     return ((start > end))
}


function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return false; //previous value defaultEmptyOK changed to false, had discussion with mohit
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}

function isZip(s)
{
	var valid = "0123456789";

	for (var i=0; i < s.length; i++) 
	{
		temp = "" + s.substring(i, i+1);
		if (valid.indexOf(temp) == "-1") 
			return false;
	}
	return true;
}

function isWhitespace (s)

{   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}

function isLeapYear(argYear) {
	return ((argYear % 4 == 0) && (argYear % 100 != 0)) || (argYear % 400 == 0) 
}


function isAlphabets(s)
{ 
	var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_";
	var temp;
	for (var i=0;i<s.length;i++)
	{
		temp=s.substring(i,i+1);
		if (chars.indexOf(temp)==-1)
		{
			return false;
		}
	}
	return true;
}


function isAlphaNumeric(s)
{
	var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ 0123456789";
	var temp;
	for (var i=0;i<s.length;i++)
	  {
		temp=s.substring(i,i+1);
		if (chars.indexOf(temp)==-1)
		 {
			 return false;
		}
	  }
		return true;
}

function isEmailAlpha(s)
{
	var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789@.-";
	var temp;
	for (var i=0;i<s.length;i++)
	  {
		temp=s.substring(i,i+1);
		if (chars.indexOf(temp)==-1)
		 {
			 return false;
		}
	  }
		return true;
}

function isUserID(s)
{
	var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789";
	var temp;
	for (var i=0;i<s.length;i++)
	  {
		temp=s.substring(i,i+1);
		if (chars.indexOf(temp)==-1)
		 {
			 return false;
		}
	  }
		return true;
}

function isKeyboardChars(s)
{
	var chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=~!@#$%^&*()_+[];'./{}:\">?,<| \\";
	var temp;
	for (var i=0;i<s.length;i++)
	  {
		temp=s.substring(i,i+1);
		if (chars.indexOf(temp)==-1)
		 {
			 return false;
		}
	  }
		return true;
}

// U.S. phone numbers have 10 digits.
// They are formatted as 123 456 7890 or (123) 456-7890.
var digitsInUSPhoneNumber = 10;
var phoneNumberDelimiters = "()- ";
var totalPhoneCount = 0;
function checkUSPhone (theField)
{   
	var normalizedPhone = stripCharsInBag(theField.value, phoneNumberDelimiters)
	if (!isUSPhoneNumber(normalizedPhone, false)) 
		return false;
	else if (totalPhoneCount == 0)
		return false;
	else 
	{  // if you don't want to reformat as (123) 456-789, comment next line out
		theField.value = reformatUSPhone(normalizedPhone)
		return true;
	}
}

// takes USPhone, a string of 10 digits
// and reformats as (123) 456-789

function reformatUSPhone (USPhone)
{
	return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
}

function reformat (s)
{
	var arg;
	var sPos = 0;
	var resultString = "";

	for (var i = 1; i < reformat.arguments.length; i++) {
		arg = reformat.arguments[i];
		if (i % 2 == 1) resultString += arg;
		else {
			resultString += s.substring(sPos, sPos + arg);
			sPos += arg;
		}
	}
	return resultString;
}

function isInteger(s)

{   var i;

    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
	totalPhoneCount  += parseInt(c);
    }

    // All characters are numbers.
    return true;
}

function isUSPhoneNumber(s)
{   if (isEmpty(s)) 
       if (isUSPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isUSPhoneNumber.arguments[1] == true);
    return (isInteger(s) && s.length == digitsInUSPhoneNumber)
}

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++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }

    return returnString;
}

// function parese string to contain all numberic values
//
function isUnsignedNumber(s) 
{
	var strToSearch = "0123456789";
	for (var i=0; i < s.length; i++)
	{
		if (strToSearch.indexOf(s.charAt(i)) == -1)
		{
			return false
		}
	}
	return true;
}

function strTrim(passedStr) {
	var str = passedStr ;
	var len = str.length ;
	var count = 0 ;
	for (var i = 0; i < len; i++){
		if (str.charAt(i) == " "){
			count ++ 
		} else {
			break ;
		}
	}

	var str = str.substring(count, len) ;
	var len = str.length ;
	var count = 0 ;
	for (var i = len - 1; i >= 0; i--){
		if (str.charAt(i) == " "){
			count ++ 
		} else {
			break ;
		}		
	}
	str = str.substring(0, len - count) ;
	return str;
}

function autoSlashUp(f)
{
	
	var str = f.value;
	var lastString = str.substring((str.length-1),str.length);
	count=0;
	for (var i=0;i < str.length;i++)
	{
		var c = str.charAt(i);
		if (c == '/')
		{
			count++;
		}
	}
	if ((str.length==3)&&(lastString!='/'))
	{
		var newstr = str.substring(0,2);
		newstr += "/" + str.substring((str.length-1),str.length);
		f.value=newstr;
	}
	if ((str.length==6)&&(lastString!='/'))
	{
		if ((count >2)||(count<2))
		{
			var newstr = str.substring(0,5);
			newstr += "/" + str.substring((str.length-1),str.length);
			f.value=newstr;
		}
	}
}



function checkCheckAll(e)
{
	if(e.checked)
	{
		checkAll();
	}
	else
	{
		uncheckAll();
	}

}

function checkAll()
{
	
	var noticeForm = document.theForm;

	for(var i=0; i<noticeForm.elements.length; i++)
	{
		var formElement = noticeForm.elements[i];
				
		var formElementType = formElement.getAttribute("type");

		if(formElementType == 'checkbox')
		{
			formElement.checked = true;
		}

	}	
}

function uncheckAll()
{
	
	var noticeForm = document.theForm;

	for(var i=0; i<noticeForm.elements.length; i++)
	{
		var formElement = noticeForm.elements[i];
				
		var formElementType = formElement.getAttribute("type");

		if(formElementType == 'checkbox')
		{
			formElement.checked = false;
		}

	}	
}

function individualCheck(e,selectAllName)
{
	var e1 = null;
	var noticeForm = document.theForm;
	var count = 0;
	var countChecked = 0;
	for(var i=0; i<noticeForm.elements.length; i++)
	{
		var formElement = noticeForm.elements[i];
				
		var formElementType = formElement.getAttribute("type");

		if(formElementType == 'checkbox')
		{

			if(formElement.name == selectAllName)
			{
				e1 = formElement;
			}else
			{
				count = count+1;

				if(formElement.checked)
				{
					countChecked = countChecked + 1;
				}
			}
		}
	}
	
	if(!e.checked)
	{
		
		if(e1 != null && e1.checked)
		{
			e1.checked = false;
		}
	}else
	{
		if(count == countChecked)
		{
			e1.checked = true;
		}
	}
}



function isAllowedSpecialCharacter(s)
{ 
	var chars="_-*.'~\"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789";
	var flag = true;
	var temp;
	for (var i=0;i<s.length;i++)
	{
		temp=s.substring(i,i+1);
		if ( (chars.indexOf(temp)==-1) && (String.fromCharCode(161, 191, 193, 201, 205, 211, 218, 225, 233, 237, 241, 243, 250, 252).indexOf(temp)==-1) )
		{
			flag = false;
		}
	}
	return (flag);
}
