var form_errors = 0;
var form_fields = {
    required: [
		'txtFirstName',
		'txtLastName',
		'txtCompany',
		'txtCompanyAddress',
		'txtCity',
		'txtCity',
		'txtState',
		 
		'txtPhone',
		'DropDownCountry',
		'txtPassport',
		'txtDob',
		'DropDownListGender'
	]
};

function form_valid(field) {
    var value = field.attr('value').trim();
    var title = field.attr('title').trim();
    if (value == '' || value == title || value == '0') {
        return false;
    }
    return true;
}

function form_error_handle(field, name, title, value) {
    var msgs = [];
    var cls = '';
    var msg = '';
    var enter = true;
    if (field.attr('name') == 'txtFirstName' || field.attr('name') == 'txtLastName') {
        cls = 'errorName';
        if (!form_valid($('input[name=txtFirstName]'))) {
            msgs.push('First Name');
        }
        if (!form_valid($('input[name=txtLastName]'))) {
            msgs.push('Last Name');
        }
    }
    if (field.attr('name') == 'txtCompany') {
        cls = 'errorCompany';
        if (!form_valid(field)) {
            msgs.push('Company Name');
        }
    }
    if (field.attr('name') == 'txtCompanyAddress') {
        cls = 'errorAddress';
        if (!form_valid(field)) {
            msgs.push('Company Address');
        }
    }
    if (field.attr('name') == 'txtCity' || field.attr('name') == 'txtState' || field.attr('name') == 'txtZip') {
        cls = 'errorAddress3';
        msg = 'Company\'s';
        if (!form_valid($('input[name=txtCity]'))) {
            msgs.push('City');
        }
        
        ////////////////////////////////////////////IF NOT CANADA AND USA  , STATE IS NOT REQUIRED
        if (document.getElementById('DropDownCountry').value == 13 | document.getElementById('DropDownCountry').value == 90) {
            if (!form_valid($('input[name=txtState]'))) {
                msgs.push('State');
            }

            if (!form_valid($('input[name=txtZip]'))) 
            {
                msgs.push('Zip');
            }
            

        }
        
                
      
    }
    if (field.attr('name') == 'txtPhone') {
        cls = 'errorPhone';
        if (!form_valid(field)) {
            msgs.push('Company Phone');
        }
    }
    if (field.attr('name') == 'DropDownCountry') {
        cls = 'errorCountry';
        enter = false;
        if (!form_valid(field)) {
            msgs.push('Country');
        }
    }
    if (field.attr('name') == 'txtPassport') {
        cls = 'errorPassport';
        if (!form_valid(field)) {
            msgs.push('Passport');
        }
    }
    if (field.attr('name') == 'txtDob') {
        cls = 'errorDob';
        if (!form_valid(field)) {
            msgs.push('Date of Birth');
        }
    }
    if (field.attr('name') == 'DropDownListGender') {
        cls = 'errorGender';
        enter = false;
        if (!form_valid(field)) {
            msgs.push('Gender');
        }
    }
    if (cls == '') return;
    if (msgs.length == 1) {
        msg = 'Please ' + (enter ? 'enter' : 'select') + ' your ' + msg + ' <b>' + msgs[0] + '</b>';
    } else if (msgs.length == 2) {
        msg = 'Please ' + (enter ? 'enter' : 'select') + ' your ' + msg + ' <b>' + msgs.join('</b> and <b>') + '</b>';
    } else if (msgs.length > 0) {
        msg = 'Please ' + (enter ? 'enter' : 'select') + ' your ' + msg + ' ';
        for (var i = 0; i < msgs.length; i++) {
            if (i > 0) msg += ', ';
            if (i == msgs.length - 1) msg += 'and ';
            msg += '<b>' + msgs[i] + '</b>';
        }
    }
    if (msgs.length > 0) {
        $('.' + cls).show().html(msg);
        if (window.submitting && !window.scrolled) {
            window.scrolled = true;
            var offset = $('div.container').scrollTop() + $('.' + cls).position().top - $('div.container').position().top;
            $('div.container').scrollTop(offset - 10);
        }
    } else {
        $('.' + cls).hide();
    }
}

function form_error_hide(field, name, title, value) {

}

function form_validate(field) {
    if (jQuery.inArray(field.attr('name'), form_fields.required) != -1) {
        if (!form_valid(field)) {
            form_errors++;
        }
        form_error_handle(field);
    }
};

$(document).ready(function(e) {
    $('form').submit(function(e) {
        window.submitting = true;
        window.scrolled = false;
        form_errors = 0;
        $('input, select').trigger('blur');
        if (form_errors > 0) {
            e.preventDefault();
            window.submitting = false;
            return false;
        } else {
            $('input, select').each(function() {
                var field = $(this);
                if (field.val() == field.attr('title')) field.val('');
            });
        }
        window.submitting = false;
    });
    $('input[class!=submit], select').each(function() {
        var field = $(this);
        if (field.attr('name').substring(0, 1) == '_') return;
        field.blur(function(e, validate) {
            var field = $(this);
            if ((field.attr('value').trim() == '' || (field.attr('value').trim() == field.attr('title').trim() && field.attr('title').trim() != '')) && field.attr('nodeName').toLowerCase() == 'input') {

                if (field.attr('name') == 'txtState') {
                    if (document.getElementById('DropDownCountry').value == 13 | document.getElementById('DropDownCountry').value == 90) {
                        validate = true;
                    }
                    else
                        validate = false;
                }

                if (document.getElementById('DropDownCountry').value == 13 | document.getElementById('DropDownCountry').value == 90)
                 {
                    if (field.attr('name') == 'txtZip') {
                        validate = true;
                    }
                 }
                field.attr('value', field.attr('title'));
                field.removeClass('focused');
            } else if (field.attr('nodeName').toLowerCase() == 'input') {
                field.addClass('focused');
            }
            if (validate != false) {
                form_validate(field);
            }
        });
        field.focus(function() {
            var field = $(this);
            if (field.attr('value') == field.attr('title')) {
                field.attr('value', '');
                field.addClass('focused');
            }
        });
        field.trigger('blur', false);
    });
});
