$(document).ready(function () {

    function validateEmail(strValue) {
        var objRegExp  = /^[a-z0-9]([a-z0-9_\-\.]*)@([a-z0-9_\-\.]*)(\.[a-z]{2,3}(\.[a-z]{2}){0,2})$/i;
        return objRegExp.test(strValue);
    }

    function validatePhone(strValue) {
        var objRegExp  = /^[0-9+\.\(\) -]+$/;
        return objRegExp.test(strValue);
    }



    /*** Only show 'agency' contact fields when 'thirdparty' organizer selected ***/
    function updateOrganizerDisplay()
    {
        if ($('#organizer-thirdpartyorganizer').attr("checked") == true)
        {
            $('#thirdpartyorganizercontact').show();
        }
        else
        {
            $('#thirdpartyorganizercontact').hide();
        }
    }

    // Register event handlers (IE doesn't handle 'change' properly)
    $('#organizerselect :radio').click( updateOrganizerDisplay );
    $('#organizerselect :radio').keypress( updateOrganizerDisplay );

    // hide by default
    updateOrganizerDisplay();



    /*** Only display "alternative language" fields when 'other' language selected ***/
    function updateAltLanguageDisplay() {

        if($('#primarylanguage :selected').val() == "other") {
            $('#alternativelanguage').prev().show();	//select box label
            $('#alternativelanguage').show();
            $('#primaryotherlanguage').show();
        }
        else {
            $('#alternativelanguage').prev().hide();	//select box label
            $('#alternativelanguage').hide();
            $('#primaryotherlanguage').hide();
        }
    }

    // Register event handlers (Firefox doesn't handle 'change' properly)
    $('#primarylanguage').change( updateAltLanguageDisplay );
    $('#primarylanguage').keypress( updateAltLanguageDisplay );

    // hide by default
    updateAltLanguageDisplay();





    /**** Hide default text in 'other' language' on element focus ****/
    var otherLanguageDefaultText = $('#primaryotherlanguage').val();

    // on focus: erase default text
    $('#primaryotherlanguage').focus( function() {
        if ( $('#primaryotherlanguage').val() == otherLanguageDefaultText )
        {
            $('#primaryotherlanguage').val('');
        }
    });
    // on blur: restore default text
    $('#primaryotherlanguage').blur( function() {
        if ( $('#primaryotherlanguage').val() == "" )
        {
            $('#primaryotherlanguage').val(otherLanguageDefaultText);
        }
    });


    /*** Tour date calendar ***/
    for(i = 1; i <= 3; i++) {
        $('#preferedtourddate' +i+ '').datepicker({
            rangeSelect: false,
            //dateFormat: "D dd/mm/yy",
            dateFormat: "dd M yy',' D",
            firstDay: 0,
            minDate: 7,
            maxDate: 1825,
            changeMonth: false,
            changeYear: false,
            showOn: "both",
            duration: 10,
            buttonImage: "/images/calendar.gif",
            buttonImageOnly: true
        });
    }

    /*** Performing form validations on submit ***/

    var formErrors;    // to check whether the alert pop-up is required or not

    $("input[@name='submit']").click(function() {

        formErrors = false;      // to reset the formErrors variable
        $('html').find('.error').removeClass('error'); // to clear all previous assigned error class

        for(i = 1; i <= 3; i++) {
            if($('#preferedtourddate' +i+ '').val() == '') {
                $('#preferedtourddate' +i+ '').addClass('error');
            	formErrors = true;
            }
        }

        // If no choice was selected
        organizerselected = false;
        $('#organizerselect :radio').each(function(i) {
            if(this.checked){
            	organizerselected = true;
            }
        });
        if(organizerselected == false) {
            $('#organizerselect').addClass('error');
        	formErrors = true;
        }
        
        labelArray = ["primaryfirstname", "primarylastname", "primaryemail", "primaryphone1"];
        
        if($('#organizer-thirdpartyorganizer').attr("checked")) {
        	
            labelArray = ["agencyfirstname", "agencylastname", "agencyemail", "agencyphone1",
                              "primaryfirstname", "primarylastname", "primaryemail", "primaryphone1"];

            if (!validateEmail($('#agencyemail').val())) {
                $('#agencyemail').addClass('error');
                formErrors = true;
            }
            if( !validatePhone($("#agencyphone1").val()) ) {
                $("#agencyphone1").addClass('error');
                formErrors = true;
            }
        }       
       
        
        $.each(labelArray, function() {
            if($("#" + this).val() == '') {
                $("#" + this).addClass('error');
                formErrors = true;
            }
        });


        if (!validateEmail($('#primaryemail').val())) {
                $('#primaryemail').addClass('error');
                formErrors = true;
        }

       /* if( !validatePhone($("#primaryphone1").val()) ) {
            $("#primaryphone1").addClass('error');
            formErrors = true;
        }
       */ 
   
       if( $('#visitorsnumber').val() == '' ||  isNaN($("#visitorsnumber").val()) ) {
            $('#visitorsnumber').addClass('error');
            formErrors = true;
        }

        /*** Tour location select validation ***/
        tourselected = false;
        $('#tourselect :radio').each(function(i) {
            if(this.checked){
                    tourselected = 'true';
            }
        });
        if(tourselected == false) {
            $('#tourselect legend').addClass('error');
            formErrors = true;
        }

        /*** Preferred language validation  ***/
        if($('#primarylanguage :selected').val() == "select") {
            $('#primarylanguage').addClass('error');
            formErrors = true;
        }
        // Only validate alternative if primary is "other"
        if($('#primarylanguage :selected').val() == "other") {
        	
            // Verify 'other' language is not the default text
            if ($('#primaryotherlanguage').val() == otherLanguageDefaultText)
            {
            	$('#primaryotherlanguage').addClass('error');
            	formErrors = true;
            }

        	if($('#alternativelanguage :selected').val() == "select") {
                $('#alternativelanguage').addClass('error');
                formErrors = true;
            }
        }
        
        if(formErrors) {
        	if (document.location.href.match('/he/')) {
        	  alert('מידע נדרש כלשהו חסר או לא מדוייק. נא להשלים את כל השדות המסומנים ב- (*) לפני לחיצה על הכפתור "שלח"');          
        	}
        	else {
        	  alert('Some required information is missing or incorrect.\nPlease complete all "*" fields before clicking the Submit button');
        	}
        	return false;
            
        }
        else {
            return true;
        }
    });

});
