var emailFormValidator = {
    form:null,
    errorBlock:null,
    fields:[],
    init:function(){
        this.form = yuiDom.get("emailForm");
        this.errorBlock = yuiDom.get("emailErrorBlock");
        this.getElements();
        yuiEvent.addListener(this.form,"submit",this.isFormValidBridge);
    },
    getElements:function(){
        var self = this;
        yuiDom.getElementsByClassName("required","tr",self.form).forEach(function(container){
            var label = yuiDom.getElementsByClassName("fieldLabel","td",container);
            yuiDom.getElementsBy(function(el){
                if(el.type && (el.type.toLowerCase() == "text" || el.type.toLowerCase() == "select-one" || el.type.toLowerCase() == "textarea")){
                    self.fields.push({label:label,field:el});
                }
            },null,container);
        });
    },
    isFormValid:function(){
        var i;
        var isValid = true;
        this.hideAllErrors();
        for(i=0;i<this.fields.length;i++){
            if(!this.isFieldValid(this.fields[i])){
                isValid = false;
            }
        }
        return isValid;
    },
    isFieldValid:function(fieldParams){
        if(fieldParams.field.value == ""){
            this.showError(fieldParams);
            return false;
        }
        return true;
    },
    hideAllErrors:function(){
        yuiDom.addClass(this.errorBlock,"hide");
        this.fields.forEach(function(fieldParams){
            yuiDom.removeClass(fieldParams.label,"error");
        });
    },
    showError:function(fieldParams){
        this.showGenericError();
        yuiDom.addClass(fieldParams.label,"error");
    },
    showGenericError:function(){
        yuiDom.removeClass(this.errorBlock,"hide");
    },
    isFormValidBridge:function(e){
        var self = emailFormValidator;
        if(!self.isFormValid()){
            yuiEvent.preventDefault(e);
        }
    },
    initBridge:function(){
        var self = emailFormValidator;
        self.init();
    }

};
yuiEvent.onDOMReady(emailFormValidator.initBridge);