// Home Entertainment Support form validation script

    $(document).ready(function() {
							   
	// hides dynamic fields
	jQuery(".hidden").hide();
	
	// functions for title field
    jQuery( jQuery("select[name='title']") ).change( function()
{
  if ( jQuery("select[name='title']" ).val() == "Other" )
  {
    jQuery("#titleother").rules("add", "required");
    jQuery("#titleother-wrapper").slideDown("fast");
  }
  else
  {
    jQuery("#titleother").val('').rules("remove", "required");
    jQuery("#titleother-wrapper").slideUp("fast");
  }
});
	
	// functions for purchase date
    $(function() {
        $("#purchasedate").datepicker({ showAnim: 'fadeIn', minDate: '-1y', maxDate: '+0d' });
    });
	
	// functions for retailer field
    jQuery( jQuery("select[name='retailer']") ).change( function()
{
  if ( jQuery("select[name='retailer']" ).val() == "Other" )
  {
    jQuery("#retailerother").rules("add", "required");
    jQuery("#retailerother-wrapper").slideDown("fast");
  }
  else
  {
    jQuery("#retailerother").val('').rules("remove", "required");
    jQuery("#retailerother-wrapper").slideUp("fast");
  }
});
	// functions for playermanufacturer field
    jQuery( jQuery("select[name='player']") ).change( function()
{
  if ( jQuery("select[name='player']" ).val() == "Other" )
  {
    jQuery("#playerother").rules("add", "required");
    jQuery("#playerother-wrapper").slideDown("fast");
  }
  else
  {
    jQuery("#playerother").val('').rules("remove", "required");
    jQuery("#playerother-wrapper").slideUp("fast");
  }
});    
    
    // validation rule for select fields
    jQuery.validator.addMethod(
  "selectNone",
  function(value, element) {
    if (element.value == "")
    {
      return false;
    }
    else return true;
  },
  "Please select an option."
);
	
	// validation rule to disallow Amazon and IndieFlix
    jQuery.validator.addMethod(
  "invalidRetailer",
  function(value, element) {
    if (element.value == "Amazon.com")
    {
      return false;
    }
    if (element.value == "IndieFlix.com")
    {
      return false;
    }
    else return true;
  },
  "You cannot use this form to contact Ten Thirty-One Pictures for assistance with your title."
);
	
	// validation rule for phone
    jQuery.validator.addMethod("phoneUS", function(phone_number, element) {
    phone_number = phone_number.replace(/\s+/g, "");
    return this.optional(element) || phone_number.length > 9 &&
        phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
}, "Please enter a valid U.S. phone number.");
	
	
      $("#hesupport").validate({
        rules: {
            name: "required",
              emailfrom: {
                  required: true,
                  email: true
            },
            phone: {
                required: true,
                phoneUS: true
            },
            title: {
                selectNone: true
            },
            purchasedate: {
                required: true,
                date: true
            },
            retailer: {
                selectNone: true,
                invalidRetailer: true
            },
            player: {
                selectNone: true
            },
            playermodel: {
                required: true,
            },
            reason: {
                selectNone: true
            },
            message: "required",
        },
        messages: {
            name: "Please enter your name.",
            emailfrom: "Please enter a valid email address.",
            phone: "Please enter a valid U.S. phone number.",
            title: "Please select a title.",
            titleother: "Please enter a title not listed above.",
            purchasedate: "Please enter the date (MM/DD/YYYY) of purchase.",
            retailer: { selectNone: "Please select a retailer.", invalidRetailer: "You cannot use this form to contact Ten Thirty-One Pictures for assistance with your title." },
            retailerother: "Please enter a retailer not listed above.",
            player: "Please select a manufacturer.",
            playerother: "Please enter a manufacturer not listed above.",
            playermodel: "Please enter the player model.",
            message: "Please enter a description of the problem.",
        }
      });
    });
