﻿$(document).ready(function() {


  // custom non-future date method
  $.validator.addMethod(
  "pastDate", // name of the validation rule
  function(value, element) {
    var booleanTest = true;
    var currentTime = new Date();
    var month = currentTime.getMonth() + 1;
    var day = currentTime.getDate();
    var year = currentTime.getFullYear();
    var fullCurrentDate = month + "/" + day + "/" + year;

    //alert(fullCurrentDate);


    if (element.valueOf == "none") {
      booleanTest = false
    } else {
      var selectedDate = document.getElementById('ctl00_ContentPlaceHolder1_txtDateOfPurchase');
      var curDate = new Date(fullCurrentDate);
      var selDate = new Date(selectedDate.value);
      //alert(selDate);
      if (selDate > curDate) {
        booleanTest = false;
      }
    }
    return booleanTest;
  },
  "Date of Purchase must be in the past."
  );



  //custom validator method
  $.validator.addMethod(
    "regex",
    function(value, element, regexp) {
      var check = false;
      return this.optional(element) || regexp.test(value);
    },
    "Date incorrect. Use format: MM/DD/YYYY (08/29/2010)."
  );

  $.validator.addMethod(
    "regexSerialNumber",
    function(value, element, regexp) {
      var check = false;
      return this.optional(element) || regexp.test(value);
    },
    "Serial Number format is incorrect."
  );


  // custom required message
  jQuery.extend(jQuery.validator.messages, {
    required: '* - Required Field',
    remote: '* - Required Field'
  });

  // custom validator running reg ex
  // following are valid formats
  // ab12345678
  // b12345678
  // a1234abc12345

  $.validator.addMethod(
    "valSerialNumber", // name of the validation rule
    function(value, element) {
      var booleanTest = false;
      if (/^[A-Za-z]{1,2}\d{8}$/.test(value) == true) {
        return true;
      }
      if (/^[A-Za-z]{1}\d{4}[A-Za-z]{3}\d{5}$/.test(value) == true) {
        return true;
      }
      return booleanTest;
    },
    "Incorrect serial number format"
  );


  // call validate
  $("#aspnetForm").validate({
    rules: {
      // compound rule
      ctl00$ContentPlaceHolder1$txtSerialNumber1: {
        required: true,
        valSerialNumber: true
      }, //txtSerialNumber1

      ctl00$ContentPlaceHolder1$txtSerialNumber2: {
        required: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList2").val() !== "");
          } //depends
        }, //required
        valSerialNumber: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList2").val() !== "");
          } //depends
        }
      }, //textField

      ctl00$ContentPlaceHolder1$txtSerialNumber3: {
        required: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList3").val() !== "");
          } //depends
        }, //required
        valSerialNumber: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList3").val() !== "");
          } //depends
        }
      }, //textField

      ctl00$ContentPlaceHolder1$txtSerialNumber4: {
        required: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList4").val() !== "");
          } //depends
        }, //required
        valSerialNumber: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList4").val() !== "");
          } //depends
        }
      }, //textField


      ctl00$ContentPlaceHolder1$txtSerialNumber5: {
        required: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList5").val() !== "");
          } //depends
        }, //required
        valSerialNumber: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList5").val() !== "");
          } //depends
        }
      }, //textField


      ctl00$ContentPlaceHolder1$txtSerialNumber6: {
        required: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList6").val() !== "");
          } //depends
        }, //required
        valSerialNumber: {
          depends: function(element) {
            return ($("#ctl00_ContentPlaceHolder1_lstProductList6").val() !== "");
          } //depends
        }
      }, //textField


      ctl00$ContentPlaceHolder1$txtProductInstalledBy: {
        required: true
      },
      ctl00$ContentPlaceHolder1$txtDateOfPurchase: {
        required: true,
        regex: /^(\d{2})(\/\d{2})(\/\d{4})$/,
        pastDate: true
      },
      ctl00$ContentPlaceHolder1$txtPurchasedFrom: {
        required: true
      }
    }
  })


});
  
