String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, "");
};

function personal_validator() {
    var errMessage = "";
    if(document.getElementById("mainform:enquiryTypeOpt") != null){
        var enquiry = document.getElementById("mainform:enquiryTypeOpt").value;
        if(enquiry == ""){
            errMessage = errMessage + "<li>Please select your <b>Enquiry</b> from the dropdown list</li>";
        }
    }
    if(salutation == "") {
        errMessage = errMessage + "<li>Please select your <b>Salutation</b> from the dropdown list</li>";
    }
    var salutation = document.getElementById("mainform:salutaionInputId").value;
    if(salutation == "") {
        errMessage = errMessage + "<li>Please select your <b>Salutation</b> from the dropdown list</li>";
    }
                                        
    var firstName = document.getElementById("mainform:firstNameInputId").value;
    if(firstName.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>First Name</b></li>";
    }

    var lastName = document.getElementById("mainform:lastNameInputId").value;
    if(lastName.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Last Name</b></li>";
    }

    var email = document.getElementById("mainform:emailInputId").value;
    if(email.trim().length == 0) {
        errMessage = errMessage + "<li>Please provide your <b>Email</b></li>";
    }
    else
    {
        var emailRe = /^(.)+@(.)+\.(.)+$/;
        if(emailRe.test(email.trim()) == false)
        {
            errMessage = errMessage + "<li>Please provide right format of your <b>Email</b>. For example, yourname@yourdomain.com</li>";
        }
    }
    if(errMessage != "") {
        document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><b>Please ensure that all the appropriate areas of the page are filled in correctly.</b><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";
        jQuery(document).ready(function(){
            tb_show("<b>Personal Details - Error:</b>",
                "#TB_inline?height=220&width=350&inlineId=hiddenDynamicMessagePopup","");
        });
        return false;
    }
    return true;
}

function model_selection_validator(min)
{
    var hiddenCounter = document.getElementById('mainform:hiddenCounter');
    if(min != undefined && parseInt(hiddenCounter.value) < min) {
        var errMessage = "<li>Please select minimum <b>" + min + " Model" + (min>1?"s":"") + "</b></li>";
        document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><strong>Please ensure that all the appropriate areas of the page are filled in correctly.</strong><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";

        jQuery(document).ready(function(){
            tb_show("<strong>Model selection - Error:</strong>",
                "#TB_inline?height=220&width=350&inlineId=hiddenDynamicMessagePopup","");
        });
        return false;
    }
    return true;
}

function contact_validator()
{
    var errMessage = "";

    var mobileNumber = document.getElementById("mainform:mobilephoneNumberid").value;
    var homeCode = document.getElementById("mainform:homeCodeid").value;
    var homePhoneNumber = document.getElementById("mainform:homephoneNumberid").value;
    var workCode = document.getElementById("mainform:workCodeid").value;
    var workPhoneNumber = document.getElementById("mainform:workphoneNumberid").value;


    if(
        mobileNumber.trim().length == 0 &&
        (homeCode.trim().length == 0 || homePhoneNumber.trim().length == 0) &&
        (workCode.trim().length == 0 || workPhoneNumber.trim().length == 0)
        )
        {
        errMessage += "<li>Please provide <b>mobile/home/work</b> number.</li>";
    }
    else
    {
        //mobile number is provided.
        if(mobileNumber.trim().length > 0)
        {
            if(!validateMobileNumber(mobileNumber))
            {
                errMessage += "<li>Invalid <b>mobile number</b> provided. For example 031234567</li>";
            }
        }

        //home code or number provided.
        if(homeCode.trim().length > 0 || homePhoneNumber.trim().length > 0)
        {
            if(homeCode.trim().length <= 0)
            {
                errMessage += "<li>Please enter <b>home phone 's area code</b></li>";
            }
            if(homePhoneNumber.trim().length <= 0)
            {
                errMessage += "<li>Please enter <b>home phone number</b></li>";
            }
            if(!(validatePhoneArea(homeCode) && validatePhoneNumber(homePhoneNumber)))
            {
                errMessage += "<li>Invalid <b>home phone number</b> provided. For example, 03 for code, 1234567 for number</li>";
            }
        }

        //work code or number provided.
        if(workCode.trim().length > 0 || workPhoneNumber.trim().length > 0)
        {
            if(workCode.trim().length <= 0)
            {
                errMessage += "<li>Please enter <b>work phone 's area code</b></li>";
            }
            if(workPhoneNumber.trim().length <= 0)
            {
                errMessage += "<li>Please enter <b>work phone number</b></li>";
            }
            if(!(validatePhoneArea(workCode) && validatePhoneNumber(workPhoneNumber)))
            {
                errMessage += "<li>Invalid <b>work phone number</b> provided. For example, 03 for code, 1234567 for number</li>";
            }
        }
        jQuery(".balloon").each(function() {
            var confirmPhoneType = jQuery(this).attr('for');
            if(confirmPhoneType.indexOf('mobile') >= 0){
                errMessage += "<li>Please confirm your <b>mobile phone number</b></li>";
                jQuery(jq('mainform:mobiletab_shifted')).click();
            } else if(confirmPhoneType.indexOf('home') >= 0){
                errMessage += "<li>Please confirm your <b>home phone number</b></li>";
                jQuery(jq('mainform:hometab_shifted')).click();
            }else if(confirmPhoneType.indexOf('work') >= 0){
                errMessage += "<li>Please confirm your <b>work phone number</b></li>";
                jQuery(jq('mainform:worktab_shifted')).click();
            }
        });
    }


    //home/work address
    var homeAddress1 = document.getElementById("mainform:homeaddressoneid").value;
    var homeAddress2 = document.getElementById("mainform:homeaddresstwoid").value;
    var homePostCode = document.getElementById("mainform:homepostCode").value;
    var homeSuburb = "";
    if(document.getElementById("mainform:homeSuburbList") != null)
        homeSuburb = document.getElementById("mainform:homeSuburbList").value;
    else
        homeSuburb = "(Other)";
    var homeState = document.getElementById("mainform:homeStateId").value;
    var homeDeflt = document.getElementById("mainform:homedefmailaddid");

    var workAddress1 = document.getElementById("mainform:workaddressoneid").value;
    var workAddress2 = document.getElementById("mainform:workaddresstwoid").value;
    var workPostCode = document.getElementById("mainform:workpostCode").value;
    var workSuburb = "";
    if(document.getElementById("mainform:workSuburbList") != null)
        workSuburb = document.getElementById("mainform:workSuburbList").value;
    else
        workSuburb = "(Other)";
    var workState = document.getElementById("mainform:workStateId").value;
    var workDeflt = document.getElementById("mainform:workdefmailaddid");

    if(	homeAddress1.trim().length == 0 &&
        homePostCode.trim().length == 0 &&
        workAddress1.trim().length == 0 &&
        workPostCode.trim().length == 0
        )
        {
        errMessage += "<li>Please provide <b>home/work</b> address.</li>";

    }
    else
    {
        if(	homeAddress1.trim().length > 0 || homeAddress2.trim().length > 0 ||
            homePostCode.trim().length > 0)
            {
            if(homeAddress1.trim().length==0)
            {
                errMessage += "<li>Please provide <b>home - address1.</b></li>";
            }


            if(homePostCode.trim().length == 0 || homePostCode.trim().length < 4)
            {
                errMessage += "<li>Please provide a valid <b>home - post code</b> with 4 digits. If your postcode has only 3 digits, please add 0 at the beginning. For example: 0200</li>";
            }


            if(homeSuburb.trim() == "")
            {
                errMessage += "<li>Please provide <b>home - suburb.</b></li>";
            }

            if(homeState.trim() == "-Please enter your postcode-")
            {
                errMessage += "<li>Please provide <b>home - state.</b></li>";
            }
            if(document.getElementById("mainform:homedpid").value == "")
            {
                errMessage += "<li>Please select a validated <b>home address.</b></li>";
            }
        }

        if(	workAddress1.trim().length > 0 || workAddress2.trim().length > 0 ||
            workPostCode.trim().length > 0)
            {
            if(workAddress1.trim().length==0)
            {
                errMessage += "<li>Please provide <b>work - address1.</b></li>";
            }


            if(workPostCode.trim().length == 0 || workPostCode.trim().length < 4)
            {
                errMessage += "<li>Please provide a valid <b>work - post code</b> with 4 digits. If your postcode has only 3 digits, please add 0 at the beginning. For example: 0200</li>";
            }


            if(workSuburb.trim() == "")
            {
                errMessage += "<li>Please provide <b>work - suburb.</b></li>";
            }

            if(workState.trim() == "-Please enter your postcode-")
            {
                errMessage += "<li>Please provide <b>work - state.</b></li>";
            }
            if(document.getElementById("mainform:workdpid").value == "")
            {
                errMessage += "<li>Please select a validated <b>work address.</b></li>";
            }
        }

        if(    homeAddress1.trim().length > 0 && homePostCode.trim().length > 0
            && workAddress1.trim().length > 0 && workPostCode.trim().length > 0
            && !homeDeflt.checked && !workDeflt.checked)
            {
            errMessage += "<li>Please select either <b>Home</b> or <b>Work</b> address as the default mailing address</li>";
        }
    }

    if(errMessage.length > 0)
    {
        document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><strong>Please ensure that all the appropriate areas of the page are filled in correctly.</strong><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";
        jQuery(document).ready(function(){
            tb_show("<strong>Contact Details - Error:</strong>",
                "#TB_inline?height=230&width=350&inlineId=hiddenDynamicMessagePopup","");
        });
        return false;
    }
    return true;
}

function dynamic_form_validator(){
    var errMessage = "";
    var index = 0;

    for(columnNo = 1; columnNo <= 2; columnNo++){
        var dynTablId = "mainform:dynqntableid" + columnNo + ":";
        var noOfElements;
        if(columnNo == 1)
            noOfElements = jQuery('.firstDynElemtCol input[type=hidden]').filter(function() {
                return this.id.match(/.+hiddenrequired[0-9]*/);
            }).size();
        else
            noOfElements += jQuery('.secondDynElemtCol input[type=hidden]').filter(function() {
                return this.id.match(/.+hiddenrequired[0-9]*/);
            }).size();

        while(index < noOfElements){
            var formElementNameId = dynTablId + index + ":qntext" + columnNo;
            var formElementName = document.getElementById(formElementNameId).innerHTML;
            //Remove the "*" in form element name
            formElementName = formElementName.replace('*', '');
            var formElementRequired = document.getElementById(dynTablId + index + ":hiddenrequired"  + columnNo).value;
            var formElementValue = "";
            if(formElementRequired == 'true'){
                if(document.getElementById(dynTablId + index + ":answertext"  + columnNo) != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":answertext" + columnNo).value;
                }
                else if(document.getElementById(dynTablId + index + ":answertextarea"  + columnNo) != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":answertextarea" + columnNo).value;
                }
                else if(document.getElementById(dynTablId + index + ":answerpassword"  + columnNo) != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":answerpassword" + columnNo).value;
                }
                else if(document.getElementById(dynTablId + index + ":datecalendar"  + columnNo + "Popup") != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":datecalendar" + columnNo + "InputDate").value;
                }
                else if(document.getElementById(dynTablId + index + ":datetimecalendar"  + columnNo + "Popup") != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":datetimecalendar" + columnNo + "InputDate").value;
                }
                else if(document.getElementById(dynTablId + index + ":answerselectonemenu"  + columnNo) != null){
                    formElementValue =  document.getElementById(dynTablId + index + ":answerselectonemenu" + columnNo).value;
                }
                else if(document.getElementById(dynTablId + index + ":answerradiomenu"  + columnNo) != null){
                    formElementValue =  getSelectedValues(document.getElementsByName(dynTablId + index + ":answerradiomenu" + columnNo));
                }
                else if(document.getElementById(dynTablId + index + ":answercheckboxmenu"  + columnNo) != null){
                    formElementValue =  getSelectedValues(document.getElementsByName(dynTablId + index + ":answercheckboxmenu" + columnNo));
                }

                //Check user input and append error message.
                if(formElementValue.trim().length <= 0)
                {
                    errMessage += "<li>Please enter/select " + "<b>" + formElementName + "</b></li>" ;
                }
            }
            index++;
        }
    }
    if(errMessage.length > 0)
    {
        document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><strong>Please ensure that all the appropriate areas of the page are filled in correctly.</strong><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";
        jQuery(document).ready(function(){
            tb_show("<strong>Additional Details - Error:</strong>",
                "#TB_inline?height=230&width=350&inlineId=hiddenDynamicMessagePopup","");
        });
        return false;
    }
    return true;
}

function CheckBoxCounter(ele,max) {
    var hiddenCounter = document.getElementById('mainform:hiddenCounter');
    var counter = parseInt(hiddenCounter.value);
    if(max != undefined){
        if(ele.checked) {
            counter = counter + 1;
            hiddenCounter.value = counter;
            if(parseInt(hiddenCounter.value) > max) {
                var errMessage = "<li>Please select maximum <b>" + max + " Model" + (max>1?"s":"") + "</b>.</li>";
                document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><strong>Please ensure that all the appropriate areas of the page are filled in correctly.</strong><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";

                jQuery(document).ready(function(){
                    tb_show("<strong>Model selection - Error:</strong>",
                        "#TB_inline?height=220&width=350&inlineId=hiddenDynamicMessagePopup","");
                });
                ele.checked = false;
                hiddenCounter.value = counter - 1;
            }
        }
        else
        {
            if(counter > 0) {
                counter = counter - 1;
                hiddenCounter.value = counter;
            }
            else
                hiddenCounter.value = 0;
        }
    }
}

function getSelectedValues(selectionInput){
    var strOut = "";
    for (counter = 0; counter < selectionInput.length; counter++)
    {
        if (selectionInput[counter].checked)
        {
            strOut += selectionInput[counter].value + ",";
        }
    }
    return strOut;
}

function blurTabContent(){
    jQuery('div.tabContent').animate({
        opacity: "0.5",
        filter:"alpha(opacity = 50)"
    }, {
        duration:150
    });
}

function blurSwitchedTabContent(){
    jQuery('div.tabContent').animate({
        opacity: "0.5",
        filter:"alpha(opacity = 50)"
    }, {
        duration:150
    });
}

function showTabContent(){
    jQuery('div.tabContent').attr('style','-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";filter: alpha(opacity = 50);opacity: 0.5;');
    jQuery('div.tabContent').animate({
        opacity: "1",
        filter:"alpha(opacity = 100)"
    }, 600,"swing",function(){
        jQuery(this).removeAttr('style');
    });
}

function quick_serv_book_validator(){
    var errMessage = "";

    var fieldValue = document.getElementById("mainform:jHomeFragmentEx:customername").value;
    if(fieldValue == "") {
        errMessage = errMessage + "<li>Please enter your <b>Name</b></li>";
    }
    
    fieldValue = document.getElementById("mainform:jHomeFragmentEx:location").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please select your desired <b>Service Location</b></li>";
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:phonetype").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Phone Type</b></li>";
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:phonenumber").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Phone Number</b></li>";
    }
    else{
        if(!validatePhoneNumber(fieldValue))
        {
            errMessage += "<li>Invalid <b>Phone Number</b> provided. For example 031234567</li>";
        }
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:customeremail").value;
    if(fieldValue.trim().length == 0) {
        errMessage = errMessage + "<li>Please provide your <b>Email</b></li>";
    }
    else
    {
        var emailRe = /^(.)+@(.)+\.(.)+$/;
        if(emailRe.test(fieldValue.trim()) == false)
        {
            errMessage = errMessage + "<li>Please provide right format of your <b>Email</b>. For example, yourname@yourdomain.com</li>";
        }
    }
    fieldValue = document.getElementById("mainform:jHomeFragmentEx:registration").value;
    if(fieldValue == "") {
        errMessage = errMessage + "<li>Please enter your <b>Vehicle Registration</b></li>";
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:milage").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Milage</b></li>";
    }
    else{
        if(!validateNumber(fieldValue))
        {
            errMessage += "<li>Invalid <b>Milage</b> provided. For example 65,500</li>";
        }
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:servicetype").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Service Type</b></li>";
    }
    fieldValue = document.getElementById("mainform:jHomeFragmentEx:servicebookingtimeInputDate").value;
    if(fieldValue == "") {
        errMessage = errMessage + "<li>Please select your <b>Booking Time</b></li>";
    }

    fieldValue = document.getElementById("mainform:jHomeFragmentEx:transport").value;
    if(fieldValue.trim() == "") {
        errMessage = errMessage + "<li>Please provide your <b>Transport</b></li>";
    }

    if(errMessage != "") {
        document.getElementById("hiddenDynamicMessagePopup").innerHTML = "<span class='thickbox'><p><b>Please ensure that all the appropriate areas of the page are filled in correctly.</b><br><br> <ul>" + errMessage + "</ul></p>"+"<p style='text-align:center'><input type='submit' id='Login' value='&nbsp;&nbsp;Ok&nbsp;&nbsp;' onclick='tb_remove();' /></p></span>";
		tb_show("<b>Service Booking - Error:</b>",
                "#TB_inline?height=220&width=350&inlineId=hiddenDynamicMessagePopup","");
        return false;
    }
    return true;
}

function reset_home_tab(){
    document.getElementById("mainform:homeaddressoneid").value = "";
    document.getElementById("mainform:homeaddresstwoid").value = "";
    document.getElementById("mainform:homepostCode").value = "";
    document.getElementById("mainform:homeSuburbList").value = "";
    document.getElementById("mainform:homeStateId").value = "";
    document.getElementById("mainform:homedefmailaddid").checked = false;
    document.getElementById("home_valid_address").style.display = "none";
    document.getElementById("mainform:homedpid").value = "";
}

function reset_work_tab(){
    document.getElementById("mainform:workaddressoneid").value = "";
    document.getElementById("mainform:workaddresstwoid").value = "";
    document.getElementById("mainform:workpostCode").value = "";
    document.getElementById("mainform:workSuburbList").value = "";
    document.getElementById("mainform:workStateId").value = "";
    document.getElementById("mainform:workdefmailaddid").checked = false;
    document.getElementById("work_valid_address").style.display = "none";
    document.getElementById("mainform:workdpid").value = "";
}
