$(function() {
    getFormDetails();

    $('.error').hide();

    $('input.text-input').css({ backgroundColor: "#FFFFFF" });

    $('input.text-input').focus(function() {
        $(this).css({ backgroundColor: "#FFDDAA" });
    });

    $('input.text-input').blur(function() {
        $(this).css({ backgroundColor: "#FFFFFF" });
    });

    // Form validation & bind to AJAX form
    $("form#contact").validate({
        rules: { email_again: { equalTo: "#EMAIL"} },
        messages: { email_again: "Please ensure both emails are the same." },
        submitHandler: function(form) {
            $(form).ajaxSubmit({                
                type: 'GET',
                dataType: 'json',
                contentType: "application/json; charset=utf-8",
                beforeSubmit: registerSendRequest,
                success: registerShowResponse
            });
        }
    });
});

function registerSendRequest(formData, jqForm, options) {
    storeFormDetails(); 
}

function registerShowResponse(responseText, statusText) {    
    // Some error thats not just dup registration
    if (responseText.result == "error") {
        if (responseText.msg.indexOf("is already subscribed to list") == -1) {
            $('#errorResponse').append(responseText.msg);
            $('#errorResponse').show();
        }
        else {
            pageTracker._trackPageview(document.location.href + "?alreadyRegistered");
            window.top.location = $('a#justDownload').attr('href');
        }
    }
    else {
        $('#contact').hide();
        $('#thanksForRegistering').show();
        pageTracker._trackPageview(document.location.href + "?register");
    }
}

function storeFormDetails() {
    storeFormFieldInCookie("FNAME");
    storeFormFieldInCookie("LNAME");
    storeFormFieldInCookie("ORG");
    storeFormFieldInCookie("EMAIL");
}

function getFormDetails() {
    setFormFieldFromCookie("FNAME");
    setFormFieldFromCookie("LNAME");
    setFormFieldFromCookie("ORG");
    setFormFieldFromCookie("EMAIL");
    $("#email_again").val(readCookie("EMAIL"));
}

function storeFormFieldInCookie(id) {
    createCookie(id, $("#" + id).val(), 180);
}

function setFormFieldFromCookie(id) {
    $("#" + id).val(readCookie(id));
}

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
    return "";
}