$.fn.serializeObject = function() {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function() {
        if(o[this.name] !== undefined) {
            if(!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

jQuery(function() {
    jQuery('.error').hide();
    jQuery('.contactSuccessMessage').hide();
    jQuery(".contactButton").click(function() {
        // validate and process form
        // first hide any error messages
        jQuery('.error').hide();
		
        var name = jQuery("input#contactName").val();
        if (name == "") {
            jQuery("span#nameError").fadeIn(500);
            jQuery("input#contactName").focus();
            return false;
        }
        var email = jQuery("input#contactEmail").val();
        if (email == "") {
            jQuery("span#emailError").fadeIn(500);
            jQuery("input#contactEmail").focus();
            return false;
        }
	
        var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
        if(!emailReg.test(email)) {
            jQuery("span#emailError2").fadeIn(500);
            jQuery("input#contactEmail").focus();
            return false;
        }
        var subject = jQuery("input#contactSubject").val();
	
        var msg = jQuery("textarea#contactMessage").val();
        if (msg == "") {
            jQuery("span#messageError").fadeIn(500);
            jQuery("textarea#contactMessage").focus();
            return false;
        }
		
        var dataString = JSON.stringify($('form').serializeObject());
		
        jQuery.ajax({
            url : appURL + 'module/api/contact/send',
            type : 'POST',
            dataType : 'json',
            data : dataString,
            cache : false,
            accepts: 'application/json',
            beforeSend : function(x) {
                if(x && x.overrideMimeType) {
                    x.overrideMimeType('application/json; charset=UTF-8');
                }
                jQuery('.error').hide();
            },
            success : function(data) {
                if(data.status == 'success'){
                    jQuery("#contactForm").hide();
                    jQuery(".contactSuccessMessage")
                    .fadeIn(1500);
                } else {
                    jQuery("span#nameError").html(data.message);
                    jQuery("span#nameError").fadeIn(500);
                }
            },
            error : function() {
                jQuery("span#nameError").html('Impossível carregar, verifique a conexão com a internet.');
                jQuery("span#nameError").fadeIn(500);
            }
        });
        return false;
    });
});


