

var yuiDom = YAHOO.util.Dom;
var yuiEvent = YAHOO.util.Event;
var errors = false;
addLoadEvent( function() {
    var emailForm = document.emailForm;
	var disc = document.getElementById('disclaimer');
    emailForm.onsubmit = function() {
        clearError(disc); // clear errors from page
        validateEmailUsForm(emailForm); // create error list
        if(errors) {
            clearError(disc); // clear errors from page
            displayError(disc); // display errors*/
            return false;
        }
        return true;
    }
});                       
function validateEmailUsForm(emailForm) {
	removeErrorClass(emailForm);
    if(errors) errors = false; // clear errors; form has been resubmitted and still contains errors..
    /* Check each required field in the form and set error flag if necessary */
    if(emailForm.firstName.value == "") {
    	errors = true;
    	yuiDom.addClass(yuiDom.get("firstNameLabel"),"error");
    }              // Check if first name field is empty
    
    if(emailForm.lastName.value == "") {
    	errors = true;
    	yuiDom.addClass(yuiDom.get("lastNameLabel"),"error");
    }               // Check if last name field is empty
    if(emailForm.telephone) {
	    if(emailForm.telephone.value == "") {
	    	errors = true;
	    	yuiDom.addClass(yuiDom.get("telephoneLabel"),"error");
	    } 
    }              // Check if telephone field is empty
    
    if((emailForm.emailAddress.value == "") || (!isValidEmail(emailForm.emailAddress.value))) {
    	yuiDom.addClass(yuiDom.get("emailAddressLabel"),"error");
    	errors = true;
    }	           // Check if email field is empty
    
    if(emailForm.contactUsSubject.value == "") {
    	errors = true;
    	yuiDom.addClass(yuiDom.get("contactUsSubjectLabel"),"error");
       }	// Check if subject not selected
    
    if(emailForm.contactUsComments.value == "") {
    	errors = true;
    	yuiDom.addClass(yuiDom.get("contactUsCommentsLabel"),"error");
    }				// Check if comment field is empty
        
    if(emailForm.contactUsSubject.value != "" || emailForm.contactUsSubject.value != null) { // a subject is selected
        var selected = emailForm.contactUsSubject.value.match(/(Information|Reservation|Availability|Feedback|Technical|Preferred|Recent)/);
        // if null is returned, subject value was set via hidden input, no need for checking.
        if(selected != null){
            switch(selected[1]) {
                case "Information": case "Availability" : case "Feedback" :
                    if(!isValidEntry(emailForm.hotelNameCity, "alpha") || emailForm.hotelNameCity.value == "") // Check if hotel name field is empty
                        errors = true;
                        yuiDom.addClass(yuiDom.get("hotelNameCityLabel"),"error");
                    break;
                case "Reservation" :
                    if(!isValidEntry(emailForm.confirmationNumber, "numeric") || emailForm.confirmationNumber.value == "") // Check if confirmation number field is empty
                        errors = true;
                        yuiDom.addClass(yuiDom.get("confirmationNumberLabel"),"error");
                    break;
                case "Preferred" :
                    if(emailForm.memberNumber.value == "") // Check if member number field is empty
                        errors = true;
                        yuiDom.addClass(yuiDom.get("memberNumber"),"error");
                    break;
                default: break;
            }
        }
    }
}

function removeErrorClass(emailForm) {
	yuiDom.removeClass(yuiDom.get("firstNameLabel"),"error");
	yuiDom.removeClass(yuiDom.get("lastNameLabel"),"error");
	yuiDom.removeClass(yuiDom.get("emailAddressLabel"),"error");
	yuiDom.removeClass(yuiDom.get("contactUsSubjectLabel"),"error");
	yuiDom.removeClass(yuiDom.get("contactUsCommentsLabel"),"error");
	yuiDom.removeClass(yuiDom.get("confirmationNumberLabel"),"error");
	yuiDom.removeClass(yuiDom.get("hotelNameCityLabel"),"error");
	yuiDom.removeClass(yuiDom.get("memberNumber"),"error");
	if(emailForm.telephone)
	yuiDom.removeClass(yuiDom.get("telephoneLabel"),"error");
}

function displayError(target) {
    var err = document.createElement("span");
    err.id                  = "errorList";
    err.style.fontSize      = "11px";
    err.style.fontWeight    = "bold";
    err.style.color         = "#FF0000";
    err.innerHTML = '<br/>* ' + 'Please fill in the mandatory fields before submitting';
    target.appendChild(err);
}
function clearError(target) {
    var el = document.getElementById('errorList')
    if(el){
        target.removeChild(el)
    }
}
function addLoadEvent(func) {
    var curOnLoad = window.onload;
    window.onload = typeof window.onload != 'function' ? func : function() { curOnLoad(); func(); };
}
function isValidEntry(element, type){
    if(type == 'numeric'){
        var regExpFilter = /(^\d\d*$)/;
        return regExpFilter.test(element.value);
    }
    else if(type == 'alpha'){
        var regExpFilter = /^\D*$/;
        return regExpFilter.test(element.value);
    }
    return true
}

