$(document).ready(
    function() {
        if(document.getElementById("00N20000001ZqeM").value == '') {
            memberId = readCookie('memberId');
            if(memberId) {
                document.getElementById("00N20000001ZqeM").value = memberId;
            }
        }
        $("input").focus(
            function() {
                if(this.className == "error") {
                    $('#'+this.id).attr('class','');
                }
            }
        );
        $("textarea").focus(
            function() {
                if(this.className == "error") {
                    $('#'+this.id).attr('class','');
                }
            }
        );
        $("select").focus(
            function() {
                if(this.className == "error") {
                    $('#'+this.id).attr('class','');
                }
            }
        );
        $("#00N20000001ZqeM").change(
            function() {
                createCookie('memberId',this.value,365);
            }
        );
    }
);

checkForm = function(form)
{
    var error = false;
    var errorFields = new Array();
    errorFields["id"] = new Array();
    errorFields["message"] = new Array();
    var services = 0;
    var requiredFields = new Array();
    requiredFields["00N20000001ZqeM"] = "Member ID"; 
    requiredFields["first_name"] = "First Name"; 
    requiredFields["last_name"] = "Last Name";
    requiredFields["phone"] = "Home Phone";
    requiredFields["street"] = "Street Address";
    requiredFields["city"] = "City";
    requiredFields["Permission3"] = "Permission Checkbox";
    
    for(var i=0;i<form.elements.length;i++) {
        var element = form.elements[i];
        if(typeof element.className != 'undefined') {
            if(element.className == "service" && element.checked == true) {
                services++;
            }
        }
        if(requiredFields[element.id]) {
            switch(element.tagName) {
                case "INPUT":
                case "TEXTAREA":
                    switch(element.type) {
                        case "checkbox":
                            if(element.checked == false) {
                                errorFields["id"][errorFields["id"].length] = element.id;
                                errorFields["message"][errorFields["message"].length] = requiredFields[element.id] + " is a required checkbox and must be checked.";
                                error = true;
                            }
                            break;
                        case "text":
                        default:
                            if(element.value == "") {
                                errorFields["id"][errorFields["id"].length] = element.id;
                                errorFields["message"][errorFields["message"].length] = requiredFields[element.id] + " is a required field and cannot be left empty.";
                                error = true;
                            } else if(element.id == "phone") {
                                var phoneRegEx = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
                                str = element.value;
                                if(!str.match(phoneRegEx)){
                                    errorFields["id"][errorFields["id"].length] = element.id;
                                    errorFields["message"][errorFields["message"].length] = requiredFields[element.id] + " must be a valid phone number.";
                                    error=true;
                                }
                            }
                            break;
                    }
                    break;
                case "SELECT":
                    if(element.options[element.selectedIndex].value == "") {
                        errorFields["id"][errorFields["id"].length] = element.id;
                        errorFields["message"][errorFields["message"].length] = requiredFields[element.id] + " is a required field and you must select an option.";
                        error = true;
                    }
                    break;
            }
        }
        
        if(element.id == "mobile" && element.value != '') {
            var phoneRegEx = /^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$/;
            var str = element.value;
            if(!str.match(phoneRegEx)){
                errorFields["id"][errorFields["id"].length] = element.id;
                errorFields["message"][errorFields["message"].length] = "Mobile Phone must be a valid phone number.";
                error=true;
            }
        } else if(element.id == "email" && element.value != '') {
            var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
            var str = element.value;
            if(!str.match(emailRegEx)){
                errorFields["id"][errorFields["id"].length] = element.id;
                errorFields["message"][errorFields["message"].length] = "Email must be a valid email address.";
                error=true;
            }
        }
    }
    
    if(services==0) {
        errorFields["message"][errorFields["message"].length] = "You must select at least <strong>1</strong> service.<br />";
        error=true;
    }
    
    
    if(error) {
        var ids = errorFields["id"];
        for(var i=0;i<ids.length;i++) {
            var theClass = $('#'+ids[i]).attr('class');
            if(theClass && theClass != 'error') {
                $('#'+ids[i]).attr('class', theClass+' error');
            } else {
                $('#'+ids[i]).attr('class', 'error');
            }
        }
        
        var messages = errorFields["message"];
        var errorMessage = "<strong>The following errors have occurred:</strong><br /><br />";
        for(var i=0;i<messages.length;i++) {
            errorMessage += (parseInt(i)+1) + ". " + messages[i] + "<br />";
        }
        
        $('#errorMessage').html(errorMessage);
        $('#errorMessage').css('display','block');
        location.href='#error';
        return false;
    }
    
    return true;
    
}

