function Cal_trimLeft(s) {
        var whitespaces = " \t\n\r";
        for(n = 0; n < s.length; n++) {
                if (whitespaces.indexOf(s.charAt(n)) == -1)
                        return (n > 0) ? s.substring(n, s.length) : s;
        }
        return("");
}
function Cal_trimRight(s){
        var whitespaces = " \t\n\r";
        for(n = s.length - 1; n  > -1; n--) {
                if (whitespaces.indexOf(s.charAt(n)) == -1)
                        return (n < (s.length - 1)) ? s.substring(0, n+1) : s;
        }
        return("");
}
function Cal_trim(s) {
        return ((s == null) ? "" : Cal_trimRight(Cal_trimLeft(s)));
}
function Cal_isBlank(field, strBodyHeader) {
        strTrimmed = Cal_trim(field.value);
        if (strTrimmed.length > 0) return false;
        alert("\"" + strBodyHeader + "\" is a required field. Please type in a value.");
        field.focus();
        return true;
}
function Cal_isBadURL(field, strBodyHeader) {
        strTrimmed = Cal_trim(field.value);
        if (strTrimmed.length == 0 ||
                strTrimmed.substring(0,7) == 'http://' ||
                strTrimmed.substring(0,6) == 'ftp://' ||
                strTrimmed.substring(0,7) == 'mailto:' ||
                strTrimmed.substring(0,8) == 'https://') return false;
        alert("\"" + strBodyHeader + "\" is an invalid url. Please remedy.");
        field.focus();
        return true;
}
function Cal_isNumber(field, strBodyHeader) {
        var strVal = Cal_trim(field.value);
        if (strVal.length == 0 || strVal.length > 999) return false;
        var         x = 0;
        for (i=0;i < strVal.length; i++) {
                if (strVal.charAt(i) > '0' && strVal.charAt(i) < '9') x++;
        }
        if (strVal.length > x) {
                alert("Invalid value for field \""+ strBodyHeader + "\". Please type in a valid integer.");
                field.focus();
                return true;
        } else {
                return true;
        }
}
function Cal_isEmail(field, strBodyHeader) {
        var strMsg = "";
        var chAt  = '@';
        var chDot = '.';
        var strEmailAddr = Cal_trim(field.value);
           if (strEmailAddr.length == 0) return true;
           if (strEmailAddr.indexOf(" ") == -1)
           {
               var iFirstAtPos = strEmailAddr.indexOf(chAt);
               var iLastAtPos = strEmailAddr.lastIndexOf(chAt);
               if (iFirstAtPos > 0 && iFirstAtPos < (strEmailAddr.length - 1) &&iFirstAtPos == iLastAtPos) {
                   // look for '.' there must be at least one char between '@' and '.'
                   var iDotPos = strEmailAddr.indexOf(chDot, iFirstAtPos + 1);
                   if (iDotPos > (iFirstAtPos + 1) && iDotPos < (strEmailAddr.length -1)) return true;
               }
           }
           alert("Invalid email address. Please type in a valid email address for field \"" + strBodyHeader + "\"");
           field.focus();
           return false;
}

function Cal_isBadHour(field1, field2, strBodyHeader) {
        hour = Cal_trim(field1.value);
        minute = Cal_trim(field2.value);
        if ( hour > 23 || minute > 59 ) {
            alert("\"" + strBodyHeader + "\" is invalid. Please remedy.");
            field1.focus();
            return true;
        }
        return false;
}
function Cal_isBadMinute(field, strBodyHeader) {
        minute = Cal_trim(field.value);
        if (minute.length == 0) return false;
        if (minute < 60) return false;
            alert("\"" + strBodyHeader + "\" is invalid. Please remedy.");
            field.focus();
            return true;
}


function Calconfirm() {
        if(confirm("Kill this item and any associated records?")) {
                return true;
        } else {
                return false;
        }
}

function validateEvent() {
           field = document.Event.Author;
           if (Cal_isBlank(field, "Name")) return false;

           field = document.Event.AuthorEmail;
           if (Cal_isBlank(field, "Email Address")) return false;
           if (!Cal_isEmail(field, "Email Address")) return false;

           field = document.Event.AuthorURL;
           if (Cal_isBadURL(field, "URL")) return false;

           field = document.Event.Heading;
           if (Cal_isBlank(field, "Subject")) return false;

           field = document.Event.Content;
           if (Cal_isBlank(field, "Event")) return false;

           field1 = document.Event.hour;
           field2 = document.Event.minute;
           if (Cal_isBadHour(field1, field2, "Hour")) return false;

           //field = document.EPreview.hour;
           //if (Cal_isNumber(field, "Hour")) return false;

           //field = document.EPreview.minute;
           //if (Cal_isNumber(field, "Minute")) return false;

        return true;
}

function validateEPreview() {
           field = document.EPreview.Heading;
           if (Cal_isBlank(field, "Subject")) return false;

           field = document.EPreview.Content;
           if (Cal_isBlank(field, "Event")) return false;

           field1 = document.EPreview.hour;
           field2 = document.EPreview.minute;
           if (Cal_isBadHour(field1, field2, "Hour")) return false;

           //field = document.EPreview.hour;
           //if (Cal_isNumber(field, "Hour")) return false;

           //field = document.EPreview.minute;
           //if (Cal_isNumber(field, "Minute")) return false;

        return true;
}
