function checkrequired(which)
{    
	if(which.elements['Username'])
	{
//Sample for calling checkLength and checkURL function
//		var length	= 3;
//		var error	= 'Error Message for Username';
//		if(checkLength(which.elements['Username'].value,error,length)==false)
//			return false;
//		if(checkURL(which.elements['Username'].value)==false)
//			return false;
	
		if(which.elements['Username'].value=='')
		{
			alert("Please enter a USERNAME(0-20 characters).");
			return false;
		}  
		
	}
	
	if(which.elements['Password'])
	{
		if(which.elements['Password'].value=='')
		{
			alert("Please enter a PASSWORD(0-15 characters).");
			return false;
		}  
	}	
}


//Check for length of string, return false if to long
function checkLength(str, len)
{
	if(str.length>len)
	{
		return false;	
	}	
}

//Check for valid URL
function checkURL(str)
{
	if(str.length==0)
	{
		return true;
	}

	if((str.substring(0,7)=="http://") | (str.substring(0,7)=="HTTP://"))
	{
		alert("Please remove protocol information (http://) from the entered URL");
		return false;
	}
	if((str.indexOf(" ")>-1) | (str.indexOf(".")==-1) | (str.indexOf(".")>(str.length-3)))
	{
		alert("Please Enter A Valid URL");
		return false;		
	}
}


//Check to see if the zip is numeric and 5 or more digits
function checkZip(zipcode)
{
	var Chars = "-0123456789";
    for (var i = 0; i<zipcode.length; i++) {
       if (Chars.indexOf(zipcode.charAt(i)) == -1) {
		  alert("You have entered an invalid Zip Code, please re-enter.");
          return false;
       }
       if (zipcode.length<5) {
		  alert("Your Zip Code Entry appears to be incorrect, please re-enter.");
		  return false;
	   }
    }	
	return true	
}

//Check to see if the variable is a numeric value
function isnumeric(sVar)
{
	var Chars = "0123456789";
    for (var i = 0; i<sVar.length; i++) {
       if (Chars.indexOf(sVar.charAt(i)) == -1) {
		  alert("You have entered an invalid number.");
          return false;
       }
    }	
	return true	
}

// Function to validate email addresses, will return false if not right

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail Address, Please re-enter it.")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail Address, Please re-enter it.")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail Address, Please re-enter it.")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail Address, Please re-enter it.")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail Address, Please re-enter it.")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail Address, Please re-enter it.")
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail Address, Please re-enter it.")
		    return false
		 }
		 return true		
	}


 
//Function to Check for a valid phone number and returns
//reformatted number in the (111) 111-1111 style.

function telephoneCheck(phoneNumber)  
{
	var digits = "0123456789";	
	var Chars = "()- 0123456789";

    for (var i = 0; i<phoneNumber.length; i++) {
       if (Chars.indexOf(phoneNumber.charAt(i)) == -1) {
		  alert("You have entered an invalid Telephone Number, please re-enter using only ()- and/or numbers.");
          return false;
       }
       phoneNumber = stripCharsNotInBag (phoneNumber, digits);
       if (phoneNumber.length<10) {
		  alert("Your Telephone Number Entry appears to be incorrect, please re-enter. \n Make sure you enter an area code.");
		  return false;
	   }
    }	
	
	phoneNumber = reformatUSPhone (phoneNumber);
	
	return phoneNumber;

}

//Functions for reformatting and whatnot

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 reformatUSPhone (USPhone)   {   
	return (reformat (USPhone, "(", 3, ") ", 3, "-", 4))
}

function stripCharsNotInBag (s, bag)  {   
	var i;
    var returnString = "";

    // Search through string's characters one by one.
    // If character is 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 isDate(dateStr) {

    
    var Chars = "-/0123456789";
    for (var i = 0; i<dateStr.length; i++) {
       if (Chars.indexOf(dateStr.charAt(i)) == -1) {
          return false;
       }
    }	
    
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if (matchArray == null) {
        return false;
    }

    month = matchArray[1]; // parse date into variables
    day = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        return false;
    }

    if (day < 1 || day > 31) {
        return false;
    }

    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }

    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            return false;
        }
    }
    return true; // date is valid
}
