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 = '';
}

function toggle (group, checked) {
    for ( var i = 0 ; i < groups.length ; i++ ) {
        if (groups[i].name == group) {
            for ( var c = 0 ; c < groups[i].associatedboxes.length ; c++ ) {
                Ext.getDom(groups[i].associatedboxes[c].value).checked = checked;
            }
        }
    }
}

var groups = new Array();
//var layers = new Array();
Ext.onReady( function () {
    if (window.config != undefined && config != null) {
        if (config.checkboxgroup != undefined && config.checkboxgroup != null) {
            for ( var i = 0 ; i < config.checkboxgroup.length ; i++ ) {
                groups.push (config.checkboxgroup[i]);
            }
        }
        //if (config.dropdownlayer != undefined && config.dropdownlayer != null) {
            //for ( var i = 0 ; i < config.dropdownlayer.length ; i++ ) {
                //var layer = new Array();

                //layer.push (config.dropdownlayer[i].id);
                //layer.push (config.dropdownlayer[i].layerid);
                //layer.push (config.dropdownlayer[i].dependentid);
                //layer.push (config.dropdownlayer[i].setup);

                //layers.push (layer);

                //Ext.getDom (config.dropdownlayer[i].id).onchange = function () {
                    //var layer = new Array();

                    //for ( var c = 0 ; c < layers.length ; c++ ) {
                        //if (layers[c][0] == this.id) {
                            //layer = layers[c];
                            //continue;
                        //}
                    //}

                    //if (this.value == '' || layer.length == 0) {
                        //if (layer.length > 2) {
                            //Ext.getDom(layer[2]).length = 0;
                            //Ext.getDom(layer[1]).className = 'hidden';
                        //}
                        //return;
                    //}

                    //Ext.getDom(layer[1]).className = '';

                    //var dependent = Ext.getDom(layer[2]);

                    //dependent.length = 0;

                    //for ( var c = 0 ; c < layer[3].length ; c++ ) {
                        //if (layer[3][c].value == this.value) {
                            //if (layer[3][c].defaultvalue != undefined && layer[3][c].defaultvalue != null && layer[3][c].defaultvalue != '') {
                                //dependent.options[dependent.length] = new Option(layer[3][c].defaultvalue, layer[3][c].defaultvalue, true, true);
                            //}

                            //for ( var ii = 0 ; ii < layer[3][c].newvalues.length ; ii++ ) {
                                //dependent.options[dependent.length] = new Option(layer[3][c].newvalues[ii].value, layer[3][c].newvalues[ii].value, false, false);
                            //}
                            //continue;
                        //}
                    //}
                //};
            //}
        //}

        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':
														console.log()
                            if ( !TA.Validator.isValidEmail(input.value) ) {
                                showError(input);
                                valid = false;
                            } else {
                                hideError(input);
                            }
                            continue;
                        default:
                            continue;
                    }
                }

								var em1 = Ext.get('Email').dom;
								var em2 = Ext.get('VEmail').dom;

								if( em1.value != em2.value )
								{
									showError(em1);
									showError(em2);
									valid = false;
								}
								//console.log();

                if (!valid) {
                    Ext.get('Error').update('Please correct the errors highlighted below');
                    location.href = '#';
                } else {
                    Ext.get('Error').update('');

                    var FORM = Ext.get('FRM');
										//return false;
                    Ext.Ajax.request({
                        url:'core/workers/ContactAjax.php?action=submit',
                        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 your interest. We will contact you as soon as possible.');
                            } else {
                                Ext.get('Error').update(r.responseText);
                            }
                        },
                        form:FORM
                    });
                }

                return false;
            };
        }
    }

    var hearAbout = Ext.getDom('Hear');

    hearAbout.onchange = function () {
        var other = Ext.getDom('Other');
        if (this.value == 'Other') {
            other.className = '';
        } else {
            other.className = 'hidden';
        }
    };
});