var DaysOfMonth = [31,28,31,30,31,30,31,31,30,31,30,31];
var saveClicked = false;
var whitespace = " \t\n\r";

// function to enforce a maximum character length for a field
function CheckLength(oField,intMaxLength){
  if(!oField || !intMaxLength) return;

  var strValue = new String();
  strValue = oField.value;
  if(strValue.length > intMaxLength){
    oField.value = strValue.substr(0,intMaxLength);
  }else{
    return;
  }
}

function hasCheckBox(frm, fieldname) {
    for (var i = 0; i < frm.length; i++) {
        var e = frm[i];
        if ((e.name == fieldname) && (e.checked)) {
            return true;
        }
    }
    showerror('nocheckerror');
    window.location.href = '#';
    return false;
}


function setCheckNumber(form, elementstr) {

        var element = eval('document.all.'+ elementstr);

        if (element) {
                element.numericerrorblock = element.name + '_verifyNumber';
                element.numeric = true;
        }
}

function setCheckEmail(form, elementstr) {

        var element = eval('document.all.'+ elementstr);

        if (element) {
                element.emailerrorblock = element.name + '_verifyEmail';
                element.email = true;
        }
}


function setCheckDate(form, elementstr, requried, dateerrorblock, requirederrorblock) {

        var element = eval('document.all.'+ elementstr);

        if (element) {
                element.dateerrorblock = dateerrorblock ;
                if (requried) {
                        element.requirederrorblock = requirederrorblock;
                }
        }

}

function setRequired(form, elementstr) {
        var element = eval('document.all.'+ elementstr);
        if (element) {
                element.requirederrorblock = element.name + '_required';
                element.required = true;
        }
}

function showerror(errorobj)
{
        display(errorobj, "");
        window.location.href = "#";

}

function display(textobj, display)
{

        //var elemnt = eval('document.all.'+ textobj);
        var elemnt = document.getElementById(textobj);

        if(elemnt) {

                elemnt.style.display = display;
        }
}

function clearError(f) {
    display("servererror", "none");

        for(var i = 0; i < f.length; i++) {

                var e = f.elements[i];
                display(e.requirederrorblock, "none");
                display(e.numericerrorblock, "none");
                display(e.dateerrorblock, "none");
                display(e.emailerrorblock, "none");

        }
}

function verifyDate(dayElement, monthElement, yearElement, errorblock, required, requirederrorblock)
{

        if (!dayElement || !monthElement || !yearElement) {
                return true;
        }

        var day =  dayElement.value;
        var month =  monthElement.value;
        var year = yearElement.value;
        var lastDayofMonth = DaysOfMonth[month];


        if (day != "" && (month == "" || year == "")) {
                showerror(errorblock);
                return false;
        } else if (month != "" && (day == "" || year == "")) {
                showerror(errorblock);
                return false;
        } else if (year != "" && (month == "" || day == "")) {
                showerror(errorblock);
                return false;
        } else if (!required && day == "" && month == "" && year == "") {
                return true;
        } else if (required && day == "" && month == "" && year == "") {
                showerror(requirederrorblock);
                return false;
        }

        if(month == 1) {
             if (isLeapYear(year)) {
                if (day < 1 || day > 29) {
                        showerror(errorblock);
                        return false;
                }
             } else {
                if (day < 1 || day > 28) {
                        showerror(errorblock);
                        return false;
                }
             }
         } else {
                if ((day < 1) || (day > lastDayofMonth)) {
                        showerror(errorblock);
                        return false;
                }
         }

        return true;

}

function verifyGeneral(f) {
        //go thru it four times because we want the error to show in order
        if (verifyRequired(f) && verifyNumber(f) && verifyEmail(f)) {
                return true;
        } else {
                return false;
        }
}

function verifyRequired(f)
{
        var valid = true;
        for(var i = 0; i < f.length; i++) {
                var e = f.elements[i];
                if (valid && e.required && isblank(e) &&
                        (e.type == "hidden" || e.type == "text" || e.type == "textarea" || e.type == "select-one" || e.type == "checkbox" || e.type == "password")) {
                        showerror(e.requirederrorblock);
                        valid = false;
                        e.focus();
                }

        }
        return valid;
}

function verifyNumber(f)
{
        var valid = true;
        for(var i = 0; i < f.length; i++) {
                var e = f.elements[i];
                if (valid && e.numeric && !isblank(e)) {
                        if (isNaN(e.value)) {
                                showerror(e.numericerrorblock);
                                valid = false;
                                e.focus();
                        }
                }

        }
        return valid;
}

function verifyEmail(f)
{
        var valid = true;
        for(var i = 0; i < f.length; i++) {
                var e = f.elements[i];
                if (valid && e.email && !isblank(e)) {
                        if (!isEmail (e.value)) {
                                showerror(e.emailerrorblock);
                                valid = false;
                                e.focus();
                        }

                }

        }
        return valid;
}

function isLeapYear(year)
{
        if ( year % 4 == 0 ) {
            if ( year % 100 == 0 ) {
                if ( year % 400 == 0 ) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return true;
            }
        } else {
            return false;
        }
}

//check if the input value is not blank
function isblank(element)
{

        if (element.type == "checkbox") {
                if (!element.checked) {
                        return true;
                } else {
                        return false;
                }
        }

        if (element.value == null) {
                return true;
        } else if (element.value == "") {
                return true;
        } else {
                var s = element.value;

                for (var i = 0; i< s.length; i++) {
                        var c = s.charAt(i);
                        if (( c != ' ') && (c != '\n') && (c != '\t')) return false;
                }
                return true;
        }
}

/***************************************************/
/*  The following section checks the string values */
/***************************************************/


function isLetter (c)
{
        //don't allow blanks as well as letters
        return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) )
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

function isInteger (s)
{
    var i;
    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return false;
       else return (isInteger.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (!isDigit(c)) return false;
    }

    return true;
}


function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)

{   var i;

    if (isEmpty(s)) return true;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (whitespace.indexOf(c) == -1) return false;
    }

    return true;
}

function isvalidEmailChar (s)
{   var i;

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) || (c=='@') || (c=='.') || (c=='_') || (c=='-') || (c=='+')) ) {
                return false;
        }
    }

    return true;
}

function isEmail (s)
{

        if (isEmpty(s))
                if (isEmail.arguments.length == 1)
                        return false;
                else
                        return (isEmail.arguments[1] == true);


        if (isWhitespace(s))
                return false;

        if (!isvalidEmailChar(s))
                return false;

        var atOffset = s.lastIndexOf('@');


        if (atOffset < 1 ) {
                return false;
        } else {
                var dotOffset = s.indexOf('.', atOffset);

                if ( dotOffset < atOffset + 2 || dotOffset > s.length - 2 ) {
                        return false;
                }
        }


        return true;
}

function checkPassword(s) {
    //a valid password is between 4 to 10 letters with no spalce double quote

        if(s.length < 4 || s.length > 10 ) {
        return "wrongnumchar";
    }

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) )) {
                return "wrongchar";
            }
    }

    return "";
}

function checkLogin(s) {
    //a valid password is between 4 to 10 letters with no spalce double quote

        if(s.length < 4 || s.length > 10 ) {
        return "wrongnumchar";
    }

    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) )) {
                return "wrongchar";
            }
    }

    return "";
}