/* MSDS/Sample Request Form JS */

/* Add custom form validation method to disallow default text */
/* Param: string you want to disallow */
jQuery.validator.addMethod("disallowedValue", function(value, element, params) {
    return this.optional(element) || !value.match(params);
}, jQuery.validator.format("This field is required."));

/* Support clearing and re-populating default field values */
$.fn.clearValue = function() {
    return this.focus(function() {
        if( this.value == this.defaultValue ) {
            this.value = "";
        }
    }).blur(function() {
        if( !this.value.length ) {
            this.value = this.defaultValue;
        }
    });
};


$(document).ready(function() {
var sample = 1;
/* Toggle unneeded fields based on request type */
$("input[name=request_type]").change( function() {
    if ($(this).val() == "MSDS Only") {
    sample = 0;
    $("select.quantity").hide();
        $("div.size").hide();
    $("select.quantity:visible").removeClass("required");
    $("div.size input:visible").removeClass("required");
    $("#products label.error").remove();
    $("select.quantity").removeClass("required");
    $("div.size input").removeClass("required");
     } else {
    sample = 1;
    $("select.quantity").show();
    $("div.size").show();
    $("select.quantity:visible").addClass("required");
    $("div.size input:visible").addClass("required");
     }
});

/* Handle "Add Product" button */
        /* Hide extra product fields */
        var product_fields= $(".product_sample");
        product_fields.not(".product_sample:first").hide();

       /* Show additional product fields */
        var request_number = 1;
        $("select[name=product" + request_number + "]").addClass("required");
    if (sample == '1') {
        $("input[name=sample_size_" + request_number + "]").addClass("required");
        $("select[name=sample_qty_" + request_number + "]").addClass("required");
    }

    $("#add_product").click(function () {
        if (!$(".product_sample:hidden").length) { alert("Sorry, you cannot request MSDS or samples for any additional products."); }
        else {
        if(
        ($("#msds-sample-request form").validate().element("select[name=product" + request_number + "]") == true) &&
        ($("#msds-sample-request form").validate().element("select[name=sample_qty_" + request_number + "]") == true) &&
        ($("#msds-sample-request form").validate().element("input[name=sample_size_" + request_number + "]") == true)
        ) {
                /* Add fields for the new product */
                request_number += 1;
            $("select[name=product" + request_number + "]").addClass("required");
        if (sample == '1') {
            $("input[name=sample_size_" + request_number + "]").addClass("required");
            $("select[name=sample_qty_" + request_number + "]").addClass("required");
        }

        $(".product_sample:hidden:first").show();
        }
        }
    });

/* Remove product fields and clear out values */
$(".product-remove input").click(function() {
    var product_container = $(this).closest("div.product_sample");
    $(product_container).hide();
    $(product_container).children("select").removeClass("required");
    $(product_container).children("select").children("option").removeAttr("selected");
    $(product_container).children("select").children("optgroup").children("option").removeAttr("selected");
    $(product_container).children("div.radio-area").children("input[type=radio]").removeAttr("checked");
    $(product_container).children("div.radio-area").children("input[type=radio]").removeClass("required");
    request_number -= 1;
});

/* Clear values for pre-populated fields */
$("input#first_name_formId").clearValue();
$("input#last_name_formId").clearValue();
$("input#st_address_formId").clearValue();
$("input#st_address_2_formId").clearValue();
$("input#city_formId").clearValue();
$("input#zip_formId").clearValue();

/* Validate form */
$("#msds-sample-request form").validate({
    groups: {
        product1_fields: "product1 sample_qty_1 sample_size_1",
        product2_fields: "product2 sample_qty_2 sample_size_2",
        product3_fields: "product3 sample_qty_3 sample_size_3",
        product4_fields: "product4 sample_qty_4 sample_size_4",
        product5_fields: "product5 sample_qty_5 sample_size_5"
    },

    errorPlacement: function(error, element) {
    if (
    element.attr("name") == "product1" ||
    element.attr("name") == "sample_qty_1" ||
    element.attr("name") == "sample_size_1"
    )
        error.insertAfter("#product1_fields");
    else if (
        element.attr("name") == "product2" ||
        element.attr("name") == "sample_qty_2" ||
        element.attr("name") == "sample_size_2"
    )
        error.insertAfter("#product2_fields");
    else if (
        element.attr("name") == "product3" ||
        element.attr("name") == "sample_qty_3" ||
        element.attr("name") == "sample_size_3"
    )
        error.insertAfter("#product3_fields");
    else if (
        element.attr("name") == "product4" ||
        element.attr("name") == "sample_qty_4" ||
        element.attr("name") == "sample_size_4"
    )
        error.insertAfter("#product4_fields");
    else if (
        element.attr("name") == "product5" ||
        element.attr("name") == "sample_qty_5" ||
        element.attr("name") == "sample_size_5"
    )
        error.insertAfter("#product5_fields");
    else if (
        element.attr("name") == "st_address"
    )
        error.insertAfter("div.st-address-container div.input-right");
    else
        error.insertAfter(element);
    },

    rules: {
        first_name: { required: true, disallowedValue: "First Name" },
        last_name: { required: true, disallowedValue: "Last Name" },
        email_address: { required: true, email: true },
        company_name: "required",
        phone_number: "required",
        st_address: { required: true, disallowedValue: "Street Address" },
        city: { required: true, disallowedValue: "City" },
        zip: { required: true, disallowedValue: "Zip" },
        captcha: "required"

    },
    messages: {
        product1: "Please select a product.",
        product2: "Please select a product.",
        product3: "Please select a product.",
        product4: "Please select a product.",
        product5: "Please select a product.",
        sample_qty_1: "Please specify a quantity.",
        sample_qty_2: "Please specify a quantity.",
        sample_qty_3: "Please specify a quantity.",
        sample_qty_4: "Please specify a quantity.",
        sample_qty_5: "Please specify a quantity.",
        sample_size_1: "Please specify a size.",
        sample_size_2: "Please specify a size.",
        sample_size_3: "Please specify a size.",
        sample_size_4: "Please specify a size.",
        sample_size_5: "Please specify a size."
    },
    submitHandler: function(form) {
        /* Reset field value for non-required field that uses value as label
           so we aren't sending emails that say Street Address 2: Street Address 2 */
        if ($("input#st_address_2_formId").val() == "Street Address 2") {
            $("input#st_address_2_formId").val("");
        }

        /* Track MSDS/Sample Requests separately in Google Analytics using event tracking */
        var _request_type = $("input[name=request_type]").val();

        _gaq.push(['_trackEvent', 'MSDS/Sample Request Form', 'Request', _request_type]);


        /* Track Newsletter Subscriptions through Analytics */
        if ($('#subscribe1').is(':checked')) {
           _gaq.push(['_trackEvent', 'Email List Subscription', 'Subscribe', 'MSDS/Sample Request']);
        }

    	form.submit();
   }
});

});


/* Set nicer CAPTCHA theme */
var RecaptchaOptions = {
   theme : 'clean'
};
