function CheckFrmElm(elm){
    if(elm.getAttribute('isHidden') != 'true'){
        var ErrBackColor = "#BBD9F2";
        var OKBackColor = "";
        var elmOK = true;
        for (var i=0;i<elm.attributes.length;i++){
            switch(elm.attributes[i].name){
                case "required":
                    if(elm.attributes[i].value == "true"){
                        switch (elm.type){
                            case "text":
                                if(elm.value.length == 0){
                                    elm.style.backgroundColor = ErrBackColor;
                                    elmOK = false;
                                }else{
                                    if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                                }
                                break;
                            
                            case "password":
                                if(elm.value.length == 0){
                                    elm.style.backgroundColor = ErrBackColor;
                                    elmOK = false;
                                }else{
                                    if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                                }
                                break;
                            
                            case "select-one":
                                if(elm.options[elm.selectedIndex].text.length ==0){
                                    elm.style.backgroundColor = ErrBackColor;
                                    elmOK = false;
                                }else{
                                    if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                                }
                                break;
                            
                            case "select-multiple":
                                ItemSelected = false;
                                for (var j = 0; j < elm.options.length; j++) {
                                    if (elm.options[j].selected) {
                                        ItemSelected = true;
                                        break;
                                    }
                                } // End For Each
                                if(!ItemSelected){
                                    elm.style.backgroundColor = ErrBackColor;
                                    elmOK = false;
                                }else{
                                    if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                                }
                                break;
							
														case "checkbox":
															alert("hi");
																if(!elm.checked){
                                    elm.style.backgroundColor = ErrBackColor;
                                    elmOK = false;
                                }else{
                                    if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                                }
																break;
																
                        }//End Switch elm type
                    } // End Value Check IF
                    break;
                
                case "matchfield":
                    MatchElm = document.getElementById(elm.attributes[i].value)
                    if(MatchElm != undefined){
                        if(elm.value != MatchElm.value){
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor};
                        } // End Match If
                    } // End Undefined If
                    break;  
                    
                case "datatype":
                    // Check Number DataType
                    if(elm.attributes[i].value == "Number" && elm.value.length != 0){
                        //if(elm.value.match(/^\d+$/) == null){
                        if(elm.value.match(/^\d*\.?\d+$/) == null){
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                        }
                    } // End Check Number
                    
                    // Check Date Data Type
                    if(elm.attributes[i].value == "Date" && elm.value.length != 0){
                        //var objRegExp = /^\d{1,2}(|\/)\d{1,2}\1\d{4}$/
                        //check to see if in correct format
                        //if(!objRegExp.test(elm.value)){   
                        if(isNaN(Date.parse(elm.value))){
                            //if(elm.value.match("/^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/") == null){
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                        }
                    } // End Check Date
                                    
                    // Check Date MySQLData Type
                    if(elm.attributes[i].value == "MySqlDate" && elm.value.length != 0){
                        var objRegExp = /(19|20)\d\d([- /.])(0[1-9]|1[012])\2(0[1-9]|[12][0-9]|3[01])/
                        if(!objRegExp.test(elm.value)){ 
                        //if(elm.value.match("") == null){
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                        }
                    } // End Check Date
                    
                    // Check Money Data Type
                    if(elm.attributes[i].value == "Money" && elm.value.length != 0){
                        var objRegExp = /^((\$\d*)|(\$\d*\.\d{2}))$/
                        //check to see if in correct format
                        if(!objRegExp.test(elm.value)){   
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                        }
                    } // End Check Date
                    
                    // Check Email DataType
                    if(elm.attributes[i].value == "Email" && elm.value.length != 0){
                        if(echeck(elm.value)){
                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                        }else{
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }
                    } // End Check Email
                    
					// Check Phone Data Type
                    if(elm.attributes[i].value == "Phone" && elm.value.length != 0){
                        var objRegExp = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,3})|(\(?\d{2,3}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/
                        //check to see if in correct format
                        if(!objRegExp.test(elm.value)){   
                            elm.style.backgroundColor = ErrBackColor;
                            elmOK = false;
                        }else{
							badNums = '111-111-1111,222-222-2222,333-333-3333,444-444-4444,555-555-5555,666-666-6666,777-777-7777,888-888-8888,999-999-999,000-000-0000,';
							BadNums += '1111111111,2222222222,3333333333,4444444444,5555555555,6666666666,7777777777,8888888888,9999999999,0000000000';
							if(badNums.indexOf(elm.value) == -1){
	                            if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
							}else{
								elm.style.backgroundColor = ErrBackColor;
	                            elmOK = false;
							}
                        }
                    } // End Check Phone
					
					break; // End Data Type


                case "minlength":
                // Check Length
                    if(elm.value.length < elm.attributes[i].value && elm.value.length != 0){
                        elm.style.backgroundColor = ErrBackColor;
                        elmOK = false;
                    }else{
                        if(elmOK == true){elm.style.backgroundColor = OKBackColor;}
                    } // End Length
                    break;  
            
            } //  End Switch 
            
        }// End for
        if(elmOK == true){elm.style.backgroundColor = OKBackColor;}        
        return elmOK
    }else{
        return true;
    } // ENd is Hidden IF
} // Check Frm Elm

function echeck(str) {
    var at="@"
    var dot="."
    var lat=str.indexOf(at)
    var lstr=str.length
    var ldot=str.indexOf(dot)
    
    if (str.indexOf(at)==-1){return false;}
    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){return false;}
    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){return false;}
    if (str.indexOf(at,(lat+1))!=-1){return false;}
    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){return false;}
    if (str.indexOf(dot,(lat+2))==-1){return false;}
    if (str.indexOf(" ")!=-1){return false;}
    if (str.indexOf(dot)==lstr-1){return false;}

    return true                 
} // ENd echeck

function SetupForm(frm,setfocus){
    frm.onsubmit = function onsubmit(event){return CheckForm(this,true);}
    for (var i=0;i<frm.length;i++){
        if(frm[i].attributes.required != undefined || frm[i].attributes.datatype != undefined || frm[i].attributes.minlength != undefined || frm[i].type=="submit"){
			switch (frm[i].type){
                case "text":
                    frm[i].onkeydown = function onkeydown(event){CheckFrmElm(this);}
                    frm[i].onchange = function onchange(event){CheckFrmElm(this);}
                    break;
                    
                case "password":
                    frm[i].onkeydown = function onkeydown(event){CheckFrmElm(this);}
                    frm[i].onchange = function onchange(event){CheckFrmElm(this);}
                    break;
                    
                case "select-one":
                    frm[i].onchange = function onchange(event){CheckFrmElm(this);}
                    break;
                    
                case "select-multiple":
                    frm[i].onchange = function onchange(event){CheckFrmElm(this);}
                    break;
					
				case "submit":
					frm[i].onclick = function onclick(event){if(CheckForm(this.form,false)){this.disabled = true;this.form.submit();}}
					break;
            }//End Switch elm type
        } //  End Filter IF
    } //  End for each Form Elm
	CheckForm(frm,false);
	if(setfocus != false){
		setFocus(frm);
	}
} // end SetupForm

function CheckForm(frm,alertProb){
    var frmOK = true;
    for (var i=0;i<frm.length;i++){
        if(frmOK){
            frmOK = CheckFrmElm(frm[i]);
            if(!frmOK){ badElm = frm[i];}
        }else{
            CheckFrmElm(frm[i]);
        }
    } //  End for each Form Elm
    
    if(alertProb && !frmOK){
        alert("There is a problem with the field '"+badElm.name+"'. Please Correct.");
        badElm.focus();
    }
    return frmOK;
    
} // end CheckForm

function SubmitForm(frm){
    if(CheckForm(document.frm,true) == true){
        frm.submit();
    } // end if
    
} // End Submit frm

function setFocus(frm){
    for (var i=0;i<frm.length;i++){
        if(frm[i].name.indexOf("_")!=0 && frm[i].type != "hidden"){
            frm[i].focus();
            break;
        }
    }
}