Ext.namespace('TA.Validator');

/**
 *  The validation function for validating an Email address
 *  Param: value - The value to be validated
 */
TA.Validator.isValidEmail = function (value) {
    return value.match(/^([\w-\.]+)@((\[\d{1,3}\.\d{1,3}\.\d{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|\d{1,3})(\]?)$/);
};

/**
 *  The validation function for validating a Phone number
 *  Param: value - The value to be validated
 */
TA.Validator.isValidPhoneNumber = function (value) {
    return value.match(/^1?[-. ]?\(?\d{3}\)?[-. ]?\d{3}[-. ]?\d{4}$/) && value != "555-555-5555" && value != "555.555.5555" && value != "555 555 5555";
};

function showError (obj) {
    obj.className = 'error';
}

function hideError (obj) {
    obj.className = '';
}

var groups = new Array();
//var layers = new Array();
Ext.onReady( function () {
    if (window.config != undefined && config != null) {
        if (config.inputs != undefined && config.inputs != null) {
            Ext.getDom('FRM').onsubmit = function () {
                var valid = true;
                for (var i = 0 ; i < config.inputs.length ; i++) {
                    var input = Ext.getDom(config.inputs[i].id);
                    if (config.inputs[i].required) {
                        if (input.value == '') {
                            showError(input);
                            valid = false;
                            continue;
                        } else {
                            hideError(input);
                        }
                    }

                    switch (config.inputs[i].type.toLowerCase()) {
                        case 'phone':
                            if (!TA.Validator.isValidPhoneNumber(input.value)) {
                                showError(input);
                                valid = false;
                            } else {
                                hideError(input);
                            }
                            continue;
                        case 'email':
                            if (!TA.Validator.isValidEmail(input.value)) {
                                showError(input);
                                valid = false;
                            } else {
                                hideError(input);
                            }
                            continue;
                        default:
                            continue;
                    }
                }

                if (!valid) {
                    Ext.get('Error').update('Please correct the errors highlighted below');
                    location.href = '#';
                } else {
                    Ext.get('Error').update('');

                    var FORM = Ext.get('FRM');

                    Ext.Ajax.request({
                        url:'core/workers/ContactAjax.php?action=submitContact',
                        method:FORM.dom.method,
                        success: function (r) {
                            if (r.responseText == 'true') {
                                Ext.get('Error').update('');
                                //Ext.get('form').update(r.responseText);
                                Ext.get('form').update('Thank you for contacting us. We will contact you as soon as possible.');
                            } else {
                                Ext.get('Error').update(r.responseText);
                            }
                        },
                        form:FORM
                    });
                }

                return false;
            };
        }
    }
});
