$(document).ready(function() {
    var options = {
        beforeSubmit: validate,
        success:      response
    };
    $('#contactForm').submit(function() { 
        $(this).ajaxSubmit(options);
        return false; 
    }); 
});

function validate() {
    removeHelpers($('#contactForm'));
    $('#contactForm .error').removeClass('error');
    var error = Array();
    if ($('#contactName').fieldValue()[0].length < 2) {
        error.push({"id":"contactName","msg":"You must supply your name."});
    }

    if (!emailCheck($('#contactEmail').fieldValue()[0])) {
        error.push({"id":"contactEmail","msg":"You must supply a valid email address."});
    }
    if ($('#contactEnquiry').fieldValue()[0].length < 10) {
        error.push({"id":"contactEnquiry","msg":"You must supply your enquiry."});
    }
    if (error.length > 0) {
        processErrors(error); 
        return false;
    } else {
        var marginTop = $('#contactSubmit').css("margin-top");
        var marginLeft = $('#contactSubmit').css("margin-left");
        $('#contactSubmit').hide();
        $('#contactSubmit').after('<img src="./img/indicator.gif" alt="loading..." id="contactLoading" style="margin-top:'+marginTop+';margin-left:'+marginLeft+';" />');
        return true;    
    }
}

function response(returnData) {
    myJ = eval('('+returnData+')');
    if (myJ.success) {
        $('.formContainer').slideUp("slow", function() {
            $('.formContainer').html(myJ.success);
            $('.formContainer').slideDown();
        });
    } else {
        $('#contactLoading').remove();
        $('#contactSubmit').show();
        removeHelpers($('#contactForm'));
        $('#contactForm .error').removeClass('error');
        var error = Array();
        if (myJ.name) {
            error.push({"id":"contactName","msg":myJ.name});
        }
        if (myJ.email) {
            error.push({"id":"contactEmail","msg":myJ.email});
        }
        if (myJ.enquiry) {
            error.push({"id":"contactEnquiry","msg":myJ.enquiry});
        }
        processErrors(error); 
    }
}