var whitespace = " \t\n\r";

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

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 isLetter (c)
{   return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isDate(intYear,intMonth,intDay) {
	var months = new Array(12);
	months[0]=31;months[1]=28;months[2]=31;months[3]=30;months[4]=31;months[5]=30;months[6]=31;months[7]=31;months[8]=30;months[9]=31;months[10]=30;months[11]=31;
	if ((parseInt(intYear) % 4) == 0) months[1]=29;
	if (parseInt(intDay) > months[parseInt(intMonth)-1]) {
		return false;
	} else {
		return true;
	}
}

function isEmailChar (c)
{
	return ((c == ".") || (c == "_") || (c == "@") || (c == "-"))
}

function hasValidChars (s)

{   var i;

    // Search through string's characters one by one
    // until we find a non-alphanumeric 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 or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) || isEmailChar(c)) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

function isEmail (s)
{
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    if (!hasValidChars(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 check(e)
{
	e.checked = true;
}

function clear(e)
{
	e.checked = false;
}

function checkAll(pFormName, pFormElement){
	var len = eval("document." + pFormName + ".elements.length");
	for (var i = 0; i < len; i++) {
	    var e = eval("document." + pFormName + ".elements[i]");
	    if (e.name == pFormElement) {
		check(e);
	    }
	}
}

function clearAll(pFormName, pFormElement){
	var len = eval("document." + pFormName + ".elements.length");
	for (var i = 0; i < len; i++) {
	    var e = eval("document." + pFormName + ".elements[i]");
	    if (e.name == pFormElement) {
		clear(e);
	    }
	}
}