{"version":3,"sources":["MvcFoolproofJQueryValidation.min.js","mvcfoolproof.unobtrusive.min.js","jq.carousel.js","jquery.validate.js","jquery.validate.unobtrusive.js"],"names":["foolproof","__MVC_ApplyValidator_RequiredIf","$","undefined","Carousel","parent","conf","this","namespace","init","prototype","self","extend","vertical","loop","easing","start","group","duration","indicator","$elem","$carousel_wrap","_build","_setIndicator","_eventify","start_pos","offset_prop","float","position","prop","view_size","total_size","current","$items","children","$items_original","clone","items_length","length","items_len_hidden","html","css","each","i","item","carousel_id","data_size","orig_size","item_size","eq","_groupSetup","_cloneGroup","_cloneItem","overflow","current_pos","default_pos","offsetWidth","offsetHeight","max_point","min_point","move_size","find","_setSize","trigger","$indicator","data","bind","active","k","l","division","group_length","Math","ceil","Array","group_size","append","len","flexnth","state","n","nth","push","reverse","elems","$item","unshift","$first","call","$last","after","before","_getSize","index","_moveState","_getNext","_getPrev","_setCurrent","direction","num","_toNext","animate","queue","complete","_toPrev","hidden_len","total_length","items_size","_getIndicator","Indicator","$elems","refresh","_callAPI","api","arguments","test","getCurrent","getMoveState","prev","next","reset","empty","carousel","arr","func","apply","concat","indi","_setActive","removeClass","addClass","remove","jQuery","fn","carousel2","factory","define","amd","validate","options","validator","attr","settings","onsubmit","validateDelegate","event","submitHandler","submitButton","target","hasClass","cancelSubmit","submit","handle","hidden","result","name","val","appendTo","currentForm","debug","preventDefault","form","pendingRequest","formSubmitted","focusInvalid","window","console","warn","valid","is","element","removeAttrs","attributes","$element","split","value","removeAttr","rules","command","argument","staticRules","existingRules","param","filtered","normalizeRule","messages","method","normalizeRules","classRules","attributeRules","dataRules","required","remote","expr","blank","a","trim","filled","unchecked","defaults","format","source","params","args","makeArray","constructor","slice","replace","RegExp","groups","errorClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","lastElement","onclick","parentNode","highlight","type","findByName","setDefaults","email","url","date","dateISO","number","digits","creditcard","equalTo","maxlength","minlength","rangelength","range","max","min","autoCreateRanges","labelContainer","errorContext","containers","add","valueCache","pending","invalid","delegate","eventType","key","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","cleanElement","clean","checkElement","validationTargetFor","prepareElement","numberOfInvalids","toHide","errors","errorList","message","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","objectLength","obj","count","not","text","addWrapper","hide","size","findLastActive","rulesCache","filter","error","selector","join","toShow","validity","badInput","rule","rulesCount","map","dependencyMismatch","parameters","methods","formatAndAdd","e","log","id","customDataMessage","charAt","toUpperCase","substring","toLowerCase","customMessage","m","String","findDefined","defaultMessage","title","theregex","toToggle","wrapper","showLabel","success","validElements","show","invalidElements","place","errorID","elementID","idOrName","describedBy","wrap","errorPlacement","insertAfter","parents","match","testgroup","describer","getLength","nodeName","depend","dependTypes","boolean","string","function","startRequest","stopRequest","previousValue","old","classRuleSettings","addClassRules","className","classes","getAttribute","Number","depends","keepRule","parameter","isFunction","parts","isArray","transformed","addMethod","Date","toString","cDigit","nCheck","nDigit","bEven","parseInt","unbind","previous","originalMessage","ajax","mode","port","dataType","context","response","pendingRequests","ajaxPrefilter","_","xhr","abort","ajaxSettings","handler","adapters","$jQval","data_validation","setValidationValues","ruleName","escapeAttributeValue","getModelPrefix","fieldName","substr","lastIndexOf","appendModelPrefix","prefix","indexOf","onError","inputElement","container","replaceAttrValue","parseJSON","onErrors","list","onSuccess","onReset","$form","validationInfo","onResetProxy","proxy","defaultOptions","unobtrusive","execInContext","attachValidation","off","on","parseElement","skipAttach","valInfo","paramValues","adapt","__dummy__","parse","$selector","$forms","has","info","adapterName","addBool","addMinMax","minRuleName","maxRuleName","minMaxRuleName","minAttribute","maxAttribute","addSingleVal","attribute","exec","nonalphamin","extension","fullOtherName","other","tagName","splitAndTrim","additionalfields","paramName","regex","document","h","b","f","c","d","j","g","parseFloat","getId","getName","__MVC_ApplyValidator_Unknown","dependentproperty","operator","passonnull","getElementById","dependentvalue","pattern","getElementsByName","checked"],"mappings":"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","file":"dependencies-events.js","sourcesContent":["var foolproof=function(){};foolproof.is=function(a,h,b,f){if(f){var e=function(a){return a==null||a==undefined||a==\"\"},c=e(a),d=e(b);if(c&&!d||d&&!c)return true}var g=function(a){return a-0==a&&a.length>0},j=function(b){var a=new RegExp(/(?=\\d)^(?:(?!(?:10\\D(?:0?[5-9]|1[0-4])\\D(?:1582))|(?:0?9\\D(?:0?[3-9]|1[0-3])\\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\\/31)(?!-31)(?!\\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\\d\\d)(?:[02468][048]|[13579][26])(?!\\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\\x20BC))))))|(?:0?2(?=.(?:(?:\\d\\D)|(?:[01]\\d)|(?:2[0-8])))))([-.\\/])(0?[1-9]|[12]\\d|3[01])\\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\\d)\\x20BC)|(?:\\d{4}(?!\\x20BC)))\\d{4}(?:\\x20BC)?)(?:$|(?=\\x20\\d)\\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\\d){0,2}(?:\\x20[aApP][mM]))|(?:[01]\\d|2[0-3])(?::[0-5]\\d){1,2})?$/);return a.test(b)},i=function(a){return a===true||a===false||a===\"true\"||a===\"false\"};if(j(a)){a=Date.parse(a);b=Date.parse(b)}else if(i(a)){if(a==\"false\")a=false;if(b==\"false\")b=false;a=!!a;b=!!b}else if(g(a)){a=parseFloat(a);b=parseFloat(b)}switch(h){case\"EqualTo\":if(a==b)return true;break;case\"NotEqualTo\":if(a!=b)return true;break;case\"GreaterThan\":if(a>b)return true;break;case\"LessThan\":if(a=b)return true;break;case\"LessThanOrEqualTo\":if(a<=b)return true;break;case\"RegExMatch\":return(new RegExp(b)).test(a);break;case\"NotRegExMatch\":return!(new RegExp(b)).test(a)}return false};foolproof.getId=function(a,b){var c=a.id.lastIndexOf(\"_\")+1;return a.id.substr(0,c)+b.replace(/\\./g,\"_\")};foolproof.getName=function(a,b){var c=a.name.lastIndexOf(\".\")+1;return a.name.substr(0,c)+b};function __MVC_ApplyValidator_RequiredIf(){}__MVC_ApplyValidator_Unknown=function(b,c,a){b[c]=a};jQuery.validator.addMethod(\"is\",function(g,f,a){var b=foolproof.getId(f,a.dependentproperty),e=a.operator,d=a.passonnull,c=document.getElementById(b).value;return foolproof.is(g,e,c,d)?true:false});jQuery.validator.addMethod(\"requiredif\",function(e,j,c){var h=foolproof.getName(j,c.dependentproperty),g=c.dependentvalue,i=c.operator,f=c.pattern,a=document.getElementsByName(h),b=null;if(a.length>1){for(var d=0;d!=a.length;d++)if(a[d].checked){b=a[d].value;break}if(b==null)b=false}else b=a[0].value;if(foolproof.is(b,i,g))if(f==null){if(e!=null&&e.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return(new RegExp(f)).test(e);else return true;return false});jQuery.validator.addMethod(\"requiredifempty\",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a==null||a.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")==\"\"){if(b!=null&&b.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return true;return false});jQuery.validator.addMethod(\"requiredifnotempty\",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a!=null&&a.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\"){if(b!=null&&b.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return true;return false});","var foolproof=function(){};foolproof.is=function(a,h,b,f){if(f){var e=function(a){return a==null||a==undefined||a==\"\"},c=e(a),d=e(b);if(c&&!d||d&&!c)return true}var g=function(a){return a-0==a&&a.length>0},j=function(b){var a=new RegExp(/(?=\\d)^(?:(?!(?:10\\D(?:0?[5-9]|1[0-4])\\D(?:1582))|(?:0?9\\D(?:0?[3-9]|1[0-3])\\D(?:1752)))((?:0?[13578]|1[02])|(?:0?[469]|11)(?!\\/31)(?!-31)(?!\\.31)|(?:0?2(?=.?(?:(?:29.(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:(?:\\d\\d)(?:[02468][048]|[13579][26])(?!\\x20BC))|(?:00(?:42|3[0369]|2[147]|1[258]|09)\\x20BC))))))|(?:0?2(?=.(?:(?:\\d\\D)|(?:[01]\\d)|(?:2[0-8])))))([-.\\/])(0?[1-9]|[12]\\d|3[01])\\2(?!0000)((?=(?:00(?:4[0-5]|[0-3]?\\d)\\x20BC)|(?:\\d{4}(?!\\x20BC)))\\d{4}(?:\\x20BC)?)(?:$|(?=\\x20\\d)\\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\\d){0,2}(?:\\x20[aApP][mM]))|(?:[01]\\d|2[0-3])(?::[0-5]\\d){1,2})?$/);return a.test(b)},i=function(a){return a===true||a===false||a===\"true\"||a===\"false\"};if(j(a)){a=Date.parse(a);b=Date.parse(b)}else if(i(a)){if(a==\"false\")a=false;if(b==\"false\")b=false;a=!!a;b=!!b}else if(g(a)){a=parseFloat(a);b=parseFloat(b)}switch(h){case\"EqualTo\":if(a==b)return true;break;case\"NotEqualTo\":if(a!=b)return true;break;case\"GreaterThan\":if(a>b)return true;break;case\"LessThan\":if(a=b)return true;break;case\"LessThanOrEqualTo\":if(a<=b)return true;break;case\"RegExMatch\":return(new RegExp(b)).test(a);break;case\"NotRegExMatch\":return!(new RegExp(b)).test(a)}return false};foolproof.getId=function(a,b){var c=a.id.lastIndexOf(\"_\")+1;return a.id.substr(0,c)+b.replace(/\\./g,\"_\")};foolproof.getName=function(a,b){var c=a.name.lastIndexOf(\".\")+1;return a.name.substr(0,c)+b};(function(){jQuery.validator.addMethod(\"is\",function(g,f,a){var b=foolproof.getId(f,a.dependentproperty),e=a.operator,d=a.passonnull,c=document.getElementById(b).value;return foolproof.is(g,e,c,d)?true:false});jQuery.validator.addMethod(\"requiredif\",function(e,j,c){var h=foolproof.getName(j,c.dependentproperty),g=c.dependentvalue,i=c.operator,f=c.pattern,a=document.getElementsByName(h),b=null;if(a.length>1){for(var d=0;d!=a.length;d++)if(a[d].checked){b=a[d].value;break}if(b==null)b=false}else b=a[0].value;if(foolproof.is(b,i,g))if(f==null){if(e!=null&&e.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return(new RegExp(f)).test(e);else return true;return false});jQuery.validator.addMethod(\"requiredifempty\",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a==null||a.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")==\"\"){if(b!=null&&b.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return true;return false});jQuery.validator.addMethod(\"requiredifnotempty\",function(b,d,e){var c=foolproof.getId(d,e.dependentproperty),a=document.getElementById(c).value;if(a!=null&&a.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\"){if(b!=null&&b.toString().replace(/^\\s\\s*/,\"\").replace(/\\s\\s*$/,\"\")!=\"\")return true}else return true;return false});var a=function(a,b,c){a.rules[b]=c;if(a.message)a.messages[b]=a.message},b=$.validator.unobtrusive;b.adapters.add(\"requiredif\",[\"dependentproperty\",\"dependentvalue\",\"operator\",\"pattern\"],function(b){var c={dependentproperty:b.params.dependentproperty,dependentvalue:b.params.dependentvalue,operator:b.params.operator,pattern:b.params.pattern};a(b,\"requiredif\",c)});b.adapters.add(\"is\",[\"dependentproperty\",\"operator\",\"passonnull\"],function(b){a(b,\"is\",{dependentproperty:b.params.dependentproperty,operator:b.params.operator,passonnull:b.params.passonnull})});b.adapters.add(\"requiredifempty\",[\"dependentproperty\"],function(b){a(b,\"requiredifempty\",{dependentproperty:b.params.dependentproperty})});b.adapters.add(\"requiredifnotempty\",[\"dependentproperty\"],function(b){a(b,\"requiredifnotempty\",{dependentproperty:b.params.dependentproperty})})})();","/*! jq.carousel / jQuery plugin - v2.4.3 - 2012-11-08 1:11:07\r\n* http://5509.github.com/jq.carousel/\r\n* Copyright (c) 2012 Kazunori Tokuda; Licensed MIT */\r\n\r\n; (function ($, undefined) {\r\n\r\n var Carousel = function (parent, conf) {\r\n this.namespace = 'Carousel';\r\n if (this instanceof Carousel) {\r\n return this.init(parent, conf);\r\n }\r\n return new Carousel(parent, conf);\r\n };\r\n Carousel.prototype = {\r\n\r\n init: function (parent, conf) {\r\n var self = this;\r\n\r\n self.conf = $.extend({\r\n vertical: false, // boolean\r\n loop: true, // boolean\r\n easing: 'swing', // or custom easing\r\n start: 1, // int\r\n group: 1, // int\r\n duration: 0.2, // int or float, 0.2 => 0.2s\r\n indicator: false // boolean\r\n }, conf);\r\n\r\n self.$elem = parent;\r\n self.$carousel_wrap = $('
');\r\n\r\n self._build();\r\n self._setIndicator();\r\n self._eventify();\r\n\r\n return self;\r\n },\r\n\r\n _build: function () {\r\n var self = this,\r\n conf = self.conf,\r\n start_pos = 0,\r\n box_total_size = 0;\r\n\r\n self.offset_prop = self.conf.vertical ? 'offsetHeight' : 'offsetWidth';\r\n self.float = conf.vertical ? 'none' : 'left';\r\n self.position = conf.vertical ? 'top' : 'left';\r\n self.prop = conf.vertical ? 'height' : 'width';\r\n\r\n self.view_size = self.$elem[0][self.offset_prop];\r\n self.total_size = 0;\r\n self.current = conf.start;\r\n\r\n self.$items = self.$elem.children();\r\n self.$items_original = self.$items.clone();\r\n self.items_length = self.$items.length;\r\n self.items_len_hidden = 0;\r\n\r\n self.$elem.html(\r\n self.$carousel_wrap\r\n .html(\r\n self.$items\r\n )\r\n );\r\n\r\n box_total_size = self.items_length * self.$items[0][self.offset_prop];\r\n\r\n // setup\r\n self.$items.css({\r\n float: self.float\r\n });\r\n each(self.$items, function (i) {\r\n var item = this;\r\n\r\n item.carousel_id = i;\r\n item.$elem = $(this);\r\n item.data_size = item[self.offset_prop];\r\n item.orig_size = item.$elem.css(self.prop);\r\n\r\n if (self.items_len_hidden > self.view_size) return;\r\n self.items_len_hidden = self.items_len_hidden + item.data_size;\r\n });\r\n self.item_size = self.$items.eq(0)[0].data_size;\r\n self.items_len_hidden = self.items_len_hidden / self.item_size;\r\n\r\n if (conf.group !== 1) {\r\n self._groupSetup();\r\n if (conf.loop) {\r\n self._cloneGroup();\r\n }\r\n } else {\r\n // clone nodes\r\n if (conf.loop) {\r\n self._cloneItem();\r\n }\r\n }\r\n\r\n self.$elem.css({\r\n overflow: 'hidden',\r\n position: 'relative'\r\n });\r\n\r\n // carousel width and height\r\n if (conf.loop) {\r\n start_pos = self.items_len_hidden + self.current - 1;\r\n self.current_pos = -start_pos * self.item_size;\r\n self.default_pos = -self.items_len_hidden * self.item_size;\r\n } else {\r\n start_pos = self.items_length < conf.start ? 1 : conf.start;\r\n self.current_pos = -(start_pos - 1) * self.item_size;\r\n self.default_pos = 0;\r\n }\r\n self.$carousel_wrap.css({\r\n position: 'relative'\r\n })\r\n .css(self.position, self.current_pos);\r\n\r\n if (self.vertical) {\r\n self.$carousel_wrap.css('width', self.$items.eq(0)[0].offsetWidth);\r\n } else {\r\n self.$carousel_wrap.css('height', self.$items.eq(0)[0].offsetHeight);\r\n }\r\n\r\n // max and min point\r\n self.max_point = self.default_pos - (self.item_size * self.items_length);\r\n self.min_point = self.default_pos;\r\n\r\n // move size\r\n self.move_size = self.item_size;\r\n\r\n if (conf.group === 1) {\r\n self.$items = self.$carousel_wrap.children();\r\n } else {\r\n self.$items = self.$carousel_wrap.find('.carousel_group_inner');\r\n }\r\n self._setSize();\r\n self.$elem.trigger('carousel.ready');\r\n },\r\n\r\n _eventify: function () {\r\n var self = this,\r\n conf = self.conf,\r\n indicator = undefined;\r\n\r\n if (!conf.indicator) {\r\n return;\r\n }\r\n indicator = self.$indicator.data('indicator');\r\n self.$elem.bind({\r\n 'Carousel.prev': function () {\r\n indicator.active();\r\n },\r\n 'Carousel.next': function () {\r\n indicator.active();\r\n }\r\n });\r\n },\r\n\r\n _groupSetup: function () {\r\n var self = this,\r\n i = 0, k = 0,\r\n l = self.items_length,\r\n conf = self.conf,\r\n division = l / conf.group,\r\n group_length = Math.ceil(division),\r\n group = new Array(group_length),\r\n group_size = self.item_size * conf.group;\r\n\r\n for (; i < l; i++) {\r\n if (i !== 0 && i % conf.group === 0) {\r\n k = k + 1;\r\n }\r\n if (!group[k]) {\r\n group[k] = $('
');\r\n group[k]\r\n .css('float', self.float)\r\n .css(self.prop, group_size);\r\n }\r\n group[k].append(self.$items.eq(i));\r\n }\r\n for (i = 0; i < group_length; i++) {\r\n self.$carousel_wrap.append(group[i]);\r\n }\r\n self.$items = self.$carousel_wrap.find('.carousel_group_inner');\r\n self.items_length = self.$items.length;\r\n self.items_len_hidden = 1;\r\n self.item_size = self.item_size * conf.group;\r\n },\r\n\r\n // returns first and last items\r\n _cloneItem: function () {\r\n var self = this,\r\n len = self.items_len_hidden,\r\n flexnth = function (state, n) {\r\n var i, $elems = this, nth = [];\r\n for (i = 0; i < n; i++) {\r\n if (i === n) break;\r\n nth.push(\r\n $elems.eq(\r\n state !== '<' ? $elems.length - (1 + i) : i\r\n ).clone()\r\n );\r\n }\r\n return $(nth);\r\n },\r\n reverse = function () {\r\n var elems = [];\r\n $.each(this, function (i, $item) {\r\n elems.unshift($item.clone());\r\n });\r\n return $(elems);\r\n },\r\n $first = reverse.call(flexnth.call(self.$items, '<', len)),\r\n $last = reverse.call(flexnth.call(self.$items, '>', len));\r\n\r\n each($first, function () {\r\n self.$items.eq(self.$items.length - 1).after(this);\r\n });\r\n each($last, function () {\r\n self.$items.eq(0).before(this);\r\n });\r\n },\r\n\r\n _cloneGroup: function () {\r\n var self = this,\r\n len = self.items_len_hidden,\r\n $first = self.$items.eq(0).clone(),\r\n $last = self.$items.eq(self.items_length - 1).clone();\r\n\r\n self.$items.eq(0).before($last);\r\n self.$items.eq(self.$items.length - 1).after($first);\r\n },\r\n\r\n // refresh totalWitdh\r\n _getSize: function (index) {\r\n var self = this,\r\n $items = undefined;\r\n\r\n if (self.conf.group === 1) {\r\n $items = self.$carousel_wrap.children();\r\n } else {\r\n $items = self.$elem.find('.carousel_group_inner');\r\n }\r\n\r\n self.total_size = 0;\r\n each($items, function (i) {\r\n var item = this;\r\n\r\n item.data_size = item[self.offset_prop];\r\n // set total_width\r\n self.total_size = self.total_size + item.data_size;\r\n });\r\n },\r\n\r\n _setSize: function () {\r\n var self = this;\r\n self._getSize();\r\n self.$carousel_wrap\r\n .css(self.prop, self.total_size);\r\n },\r\n\r\n _moveState: function () {\r\n var self = this,\r\n view_size = self.view_size,\r\n items_block_size = self.items_length * self.item_size;\r\n\r\n if (items_block_size <= view_size) {\r\n return false;\r\n } else\r\n if (self.current === self.items_length) {\r\n return 'max';\r\n } else\r\n if (self.current === 1) {\r\n return 'min';\r\n } else {\r\n return true;\r\n }\r\n },\r\n\r\n _getNext: function (current) {\r\n var self = this,\r\n conf = self.conf;\r\n if (current + 1 > self.items_length) {\r\n current = 1;\r\n } else {\r\n current = current + 1;\r\n }\r\n return current;\r\n },\r\n\r\n _getPrev: function (current) {\r\n var self = this,\r\n conf = self.conf;\r\n if (current - 1 === 0) {\r\n current = self.items_length;\r\n } else {\r\n current = current - 1;\r\n }\r\n return current;\r\n },\r\n\r\n _setCurrent: function (direction) {\r\n var self = this,\r\n num = undefined,\r\n current = self.current;\r\n // direction: true => next, false => prev\r\n if (direction) {\r\n num = self._getNext(current);\r\n } else {\r\n num = self._getPrev(current);\r\n }\r\n self.current = num;\r\n },\r\n\r\n _toNext: function () {\r\n var self = this,\r\n conf = self.conf,\r\n hidden_len = self.items_len_hidden,\r\n prop = {};\r\n\r\n if (!self.conf.loop && self.current === self.items_length) {\r\n return;\r\n }\r\n self._setCurrent(true);\r\n\r\n self.current_pos = self.current_pos - self.move_size;\r\n if (self.current_pos < self.max_point) {\r\n self.$carousel_wrap.css(self.position, self.default_pos);\r\n self.current_pos = self.default_pos - self.move_size;\r\n }\r\n\r\n prop[self.position] = self.current_pos;\r\n\r\n self.$carousel_wrap\r\n .animate(prop, {\r\n queue: false,\r\n easing: conf.easing,\r\n duration: conf.duration * 1000,\r\n complete: function () {\r\n self.$elem.trigger('Carousel.next');\r\n }\r\n });\r\n },\r\n\r\n _toPrev: function () {\r\n var self = this,\r\n conf = self.conf,\r\n hidden_len = self.items_len_hidden,\r\n total_length = self.items_length + hidden_len,\r\n items_size = self.item_size * self.items_length,\r\n prop = {};\r\n\r\n if (!self.conf.loop && self.current === 1) {\r\n return;\r\n }\r\n self._setCurrent(false);\r\n\r\n self.current_pos = self.current_pos + self.move_size;\r\n if (self.default_pos < self.current_pos) {\r\n self.$carousel_wrap.css(self.position, -self.item_size * total_length);\r\n self.current_pos = self.default_pos - items_size + self.move_size;\r\n }\r\n\r\n prop[self.position] = self.current_pos;\r\n\r\n self.$carousel_wrap\r\n .animate(prop, {\r\n queue: false,\r\n easing: conf.easing,\r\n duration: conf.duration * 1000,\r\n complete: function () {\r\n self.$elem.trigger('Carousel.prev');\r\n }\r\n });\r\n\r\n },\r\n\r\n _getIndicator: function (num) {\r\n var self = this,\r\n indicator = Indicator(self, num),\r\n $indicator = $('
');\r\n\r\n $indicator.data('indicator', indicator);\r\n $indicator.append(indicator.$elems);\r\n\r\n return $indicator;\r\n },\r\n\r\n _setIndicator: function (num) {\r\n var self = this,\r\n indicator = undefined;\r\n if (!self.conf.indicator) {\r\n return;\r\n }\r\n if (!self.$indicator) {\r\n self.$indicator = self._getIndicator(num);\r\n self.$elem.after(self.$indicator);\r\n } else {\r\n indicator = self.$indicator.data('indicator');\r\n self.$indicator.append(\r\n indicator.refresh()\r\n );\r\n }\r\n },\r\n\r\n _callAPI: function (api, arguments) {\r\n var self = this;\r\n if (typeof self[api] !== 'function') {\r\n throw api + ' does not exist of Carousel methods.';\r\n } else\r\n if (/^_/.test(api) && typeof self[api] === 'function') {\r\n throw 'Method begins with an underscore are not exposed.';\r\n }\r\n return self[api](arguments);\r\n },\r\n\r\n indicator: function (num) {\r\n var self = this;\r\n return self._getIndicator(num);\r\n },\r\n\r\n getCurrent: function () {\r\n var self = this;\r\n return self.current - 1;\r\n },\r\n\r\n getMoveState: function () {\r\n var self = this;\r\n return self._moveState();\r\n },\r\n\r\n prev: function () {\r\n var self = this;\r\n self._toPrev();\r\n\r\n return self.$elem;\r\n },\r\n\r\n next: function () {\r\n var self = this;\r\n self._toNext();\r\n\r\n return self.$elem;\r\n },\r\n\r\n reset: function (conf) {\r\n var self = this;\r\n self.$elem\r\n .empty()\r\n .append(self.$items_original);\r\n\r\n if (conf) {\r\n self.conf = $.extend(self.conf, conf);\r\n }\r\n self.$elem.trigger('Carousel.reset');\r\n return self.$elem;\r\n },\r\n\r\n refresh: function () {\r\n var self = this;\r\n self.total_size = 0;\r\n self._build();\r\n self._setIndicator();\r\n\r\n self.$elem.trigger('Carousel.refresh');\r\n return self.$elem;\r\n }\r\n };\r\n\r\n var Indicator = function (carousel, num) {\r\n this.namespace = 'Indicator';\r\n if (this instanceof Indicator) {\r\n return this.init(carousel, num);\r\n }\r\n return new Indicator(carousel, num);\r\n };\r\n Indicator.prototype = {\r\n init: function (carousel, num) {\r\n var self = this;\r\n self.carousel = carousel;\r\n self._build(num);\r\n },\r\n\r\n _build: function (num) {\r\n var self = this,\r\n carousel = self.carousel,\r\n current = carousel.getCurrent(),\r\n i = 0, l = carousel.items_length,\r\n indi = '',\r\n active = '';\r\n for (; i < l; i++) {\r\n if (i === current) {\r\n active = ' class=\"active\"';\r\n } else {\r\n active = '';\r\n }\r\n indi = indi + '';\r\n indi = indi + (num ? i : '');\r\n indi = indi + '';\r\n }\r\n self.$elems = $(indi);\r\n },\r\n\r\n _setActive: function () {\r\n var self = this,\r\n carousel = self.carousel;\r\n\r\n self.$elems.removeClass('active');\r\n self.$elems.eq(carousel.getCurrent()).addClass('active');\r\n },\r\n\r\n refresh: function () {\r\n var self = this;\r\n self.$elems.remove();\r\n self._build();\r\n return self.$elems;\r\n },\r\n\r\n active: function () {\r\n var self = this;\r\n self._setActive();\r\n }\r\n };\r\n\r\n function each(arr, func) {\r\n var i = 0,\r\n l = undefined;\r\n\r\n // arr === number\r\n if (/^\\d+$/.test(arr)) {\r\n arr = new Array(arr);\r\n }\r\n l = arr.length;\r\n\r\n for (; i < l; i = i + 1) {\r\n func.apply(arr[i], ([i]).concat(arguments));\r\n }\r\n }\r\n\r\n // $.fn extend\r\n jQuery.fn.carousel2 = function (conf, arguments) {\r\n var carousel = this.data('carousel-jq');\r\n\r\n if (carousel) {\r\n return carousel._callAPI(conf, arguments);\r\n } else {\r\n carousel = Carousel(this, conf);\r\n this.data('carousel-jq', carousel);\r\n return this;\r\n }\r\n };\r\n\r\n}(jQuery));\r\n","/*!\r\n * jQuery Validation Plugin v1.13.1\r\n *\r\n * http://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2014 Jörn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend($.fn, {\r\n\t// http://jqueryvalidation.org/validate/\r\n\tvalidate: function( options ) {\r\n\r\n\t\t// if nothing is selected, return nothing; can't chain anyway\r\n\t\tif ( !this.length ) {\r\n\t\t\tif ( options && options.debug && window.console ) {\r\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// check if a validator for this form was already created\r\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\r\n\t\tif ( validator ) {\r\n\t\t\treturn validator;\r\n\t\t}\r\n\r\n\t\t// Add novalidate tag if HTML5.\r\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\r\n\r\n\t\tvalidator = new $.validator( options, this[ 0 ] );\r\n\t\t$.data( this[ 0 ], \"validator\", validator );\r\n\r\n\t\tif ( validator.settings.onsubmit ) {\r\n\r\n\t\t\tthis.validateDelegate( \":submit\", \"click\", function( event ) {\r\n\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\tvalidator.submitButton = event.target;\r\n\t\t\t\t}\r\n\t\t\t\t// allow suppressing validation by adding a cancel class to the submit button\r\n\t\t\t\tif ( $( event.target ).hasClass( \"cancel\" ) ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\r\n\t\t\t\tif ( $( event.target ).attr( \"formnovalidate\" ) !== undefined ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// validate the form on submit\r\n\t\t\tthis.submit( function( event ) {\r\n\t\t\t\tif ( validator.settings.debug ) {\r\n\t\t\t\t\t// prevent form submit to be able to see console output\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t\tfunction handle() {\r\n\t\t\t\t\tvar hidden, result;\r\n\t\t\t\t\tif ( validator.settings.submitHandler ) {\r\n\t\t\t\t\t\tif ( validator.submitButton ) {\r\n\t\t\t\t\t\t\t// insert a hidden input as a replacement for the missing submit button\r\n\t\t\t\t\t\t\thidden = $( \"\" )\r\n\t\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\r\n\t\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\r\n\t\t\t\t\t\t\t\t.appendTo( validator.currentForm );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\r\n\t\t\t\t\t\tif ( validator.submitButton ) {\r\n\t\t\t\t\t\t\t// and clean up afterwards; thanks to no-block-scope, hidden can be referenced\r\n\t\t\t\t\t\t\thidden.remove();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( result !== undefined ) {\r\n\t\t\t\t\t\t\treturn result;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// prevent submit for invalid forms or custom submit handlers\r\n\t\t\t\tif ( validator.cancelSubmit ) {\r\n\t\t\t\t\tvalidator.cancelSubmit = false;\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t}\r\n\t\t\t\tif ( validator.form() ) {\r\n\t\t\t\t\tif ( validator.pendingRequest ) {\r\n\t\t\t\t\t\tvalidator.formSubmitted = true;\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn handle();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tvalidator.focusInvalid();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn validator;\r\n\t},\r\n\t// http://jqueryvalidation.org/valid/\r\n\tvalid: function() {\r\n\t\tvar valid, validator;\r\n\r\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\r\n\t\t\tvalid = this.validate().form();\r\n\t\t} else {\r\n\t\t\tvalid = true;\r\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvalid = validator.element( this ) && valid;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn valid;\r\n\t},\r\n\t// attributes: space separated list of attributes to retrieve and remove\r\n\tremoveAttrs: function( attributes ) {\r\n\t\tvar result = {},\r\n\t\t\t$element = this;\r\n\t\t$.each( attributes.split( /\\s/ ), function( index, value ) {\r\n\t\t\tresult[ value ] = $element.attr( value );\r\n\t\t\t$element.removeAttr( value );\r\n\t\t});\r\n\t\treturn result;\r\n\t},\r\n\t// http://jqueryvalidation.org/rules/\r\n\trules: function( command, argument ) {\r\n\t\tvar element = this[ 0 ],\r\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\r\n\r\n\t\tif ( command ) {\r\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\r\n\t\t\tstaticRules = settings.rules;\r\n\t\t\texistingRules = $.validator.staticRules( element );\r\n\t\t\tswitch ( command ) {\r\n\t\t\tcase \"add\":\r\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\r\n\t\t\t\t// remove messages from rules, but allow them to be set separately\r\n\t\t\t\tdelete existingRules.messages;\r\n\t\t\t\tstaticRules[ element.name ] = existingRules;\r\n\t\t\t\tif ( argument.messages ) {\r\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\r\n\t\t\t\t}\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"remove\":\r\n\t\t\t\tif ( !argument ) {\r\n\t\t\t\t\tdelete staticRules[ element.name ];\r\n\t\t\t\t\treturn existingRules;\r\n\t\t\t\t}\r\n\t\t\t\tfiltered = {};\r\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\r\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\r\n\t\t\t\t\tdelete existingRules[ method ];\r\n\t\t\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\t\t\t$( element ).removeAttr( \"aria-required\" );\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\treturn filtered;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tdata = $.validator.normalizeRules(\r\n\t\t$.extend(\r\n\t\t\t{},\r\n\t\t\t$.validator.classRules( element ),\r\n\t\t\t$.validator.attributeRules( element ),\r\n\t\t\t$.validator.dataRules( element ),\r\n\t\t\t$.validator.staticRules( element )\r\n\t\t), element );\r\n\r\n\t\t// make sure required is at front\r\n\t\tif ( data.required ) {\r\n\t\t\tparam = data.required;\r\n\t\t\tdelete data.required;\r\n\t\t\tdata = $.extend( { required: param }, data );\r\n\t\t\t$( element ).attr( \"aria-required\", \"true\" );\r\n\t\t}\r\n\r\n\t\t// make sure remote is at back\r\n\t\tif ( data.remote ) {\r\n\t\t\tparam = data.remote;\r\n\t\t\tdelete data.remote;\r\n\t\t\tdata = $.extend( data, { remote: param });\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\t}\r\n});\r\n\r\n// Custom selectors\r\n$.extend( $.expr[ \":\" ], {\r\n\t// http://jqueryvalidation.org/blank-selector/\r\n\tblank: function( a ) {\r\n\t\treturn !$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\t// http://jqueryvalidation.org/filled-selector/\r\n\tfilled: function( a ) {\r\n\t\treturn !!$.trim( \"\" + $( a ).val() );\r\n\t},\r\n\t// http://jqueryvalidation.org/unchecked-selector/\r\n\tunchecked: function( a ) {\r\n\t\treturn !$( a ).prop( \"checked\" );\r\n\t}\r\n});\r\n\r\n// constructor for validator\r\n$.validator = function( options, form ) {\r\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\r\n\tthis.currentForm = form;\r\n\tthis.init();\r\n};\r\n\r\n// http://jqueryvalidation.org/jQuery.validator.format/\r\n$.validator.format = function( source, params ) {\r\n\tif ( arguments.length === 1 ) {\r\n\t\treturn function() {\r\n\t\t\tvar args = $.makeArray( arguments );\r\n\t\t\targs.unshift( source );\r\n\t\t\treturn $.validator.format.apply( this, args );\r\n\t\t};\r\n\t}\r\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\r\n\t\tparams = $.makeArray( arguments ).slice( 1 );\r\n\t}\r\n\tif ( params.constructor !== Array ) {\r\n\t\tparams = [ params ];\r\n\t}\r\n\t$.each( params, function( i, n ) {\r\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\r\n\t\t\treturn n;\r\n\t\t});\r\n\t});\r\n\treturn source;\r\n};\r\n\r\n$.extend( $.validator, {\r\n\r\n\tdefaults: {\r\n\t\tmessages: {},\r\n\t\tgroups: {},\r\n\t\trules: {},\r\n\t\terrorClass: \"error\",\r\n\t\tvalidClass: \"valid\",\r\n\t\terrorElement: \"label\",\r\n\t\tfocusCleanup: false,\r\n\t\tfocusInvalid: true,\r\n\t\terrorContainer: $( [] ),\r\n\t\terrorLabelContainer: $( [] ),\r\n\t\tonsubmit: true,\r\n\t\tignore: \":hidden\",\r\n\t\tignoreTitle: false,\r\n\t\tonfocusin: function( element ) {\r\n\t\t\tthis.lastActive = element;\r\n\r\n\t\t\t// Hide error label and remove error class on focus if enabled\r\n\t\t\tif ( this.settings.focusCleanup ) {\r\n\t\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonfocusout: function( element ) {\r\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonkeyup: function( element, event ) {\r\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" ) {\r\n\t\t\t\treturn;\r\n\t\t\t} else if ( element.name in this.submitted || element === this.lastElement ) {\r\n\t\t\t\tthis.element( element );\r\n\t\t\t}\r\n\t\t},\r\n\t\tonclick: function( element ) {\r\n\t\t\t// click on selects, radiobuttons and checkboxes\r\n\t\t\tif ( element.name in this.submitted ) {\r\n\t\t\t\tthis.element( element );\r\n\r\n\t\t\t// or option elements, check parent select in that case\r\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\r\n\t\t\t\tthis.element( element.parentNode );\r\n\t\t\t}\r\n\t\t},\r\n\t\thighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\r\n\t\t\t}\r\n\t\t},\r\n\t\tunhighlight: function( element, errorClass, validClass ) {\r\n\t\t\tif ( element.type === \"radio\" ) {\r\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t} else {\r\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// http://jqueryvalidation.org/jQuery.validator.setDefaults/\r\n\tsetDefaults: function( settings ) {\r\n\t\t$.extend( $.validator.defaults, settings );\r\n\t},\r\n\r\n\tmessages: {\r\n\t\trequired: \"This field is required.\",\r\n\t\tremote: \"Please fix this field.\",\r\n\t\temail: \"Please enter a valid email address.\",\r\n\t\turl: \"Please enter a valid URL.\",\r\n\t\tdate: \"Please enter a valid date.\",\r\n\t\tdateISO: \"Please enter a valid date ( ISO ).\",\r\n\t\tnumber: \"Please enter a valid number.\",\r\n\t\tdigits: \"Please enter only digits.\",\r\n\t\tcreditcard: \"Please enter a valid credit card number.\",\r\n\t\tequalTo: \"Please enter the same value again.\",\r\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\r\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\r\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\r\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\r\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\r\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" )\r\n\t},\r\n\r\n\tautoCreateRanges: false,\r\n\r\n\tprototype: {\r\n\r\n\t\tinit: function() {\r\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\r\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\r\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.valueCache = {};\r\n\t\t\tthis.pendingRequest = 0;\r\n\t\t\tthis.pending = {};\r\n\t\t\tthis.invalid = {};\r\n\t\t\tthis.reset();\r\n\r\n\t\t\tvar groups = ( this.groups = {} ),\r\n\t\t\t\trules;\r\n\t\t\t$.each( this.settings.groups, function( key, value ) {\r\n\t\t\t\tif ( typeof value === \"string\" ) {\r\n\t\t\t\t\tvalue = value.split( /\\s/ );\r\n\t\t\t\t}\r\n\t\t\t\t$.each( value, function( index, name ) {\r\n\t\t\t\t\tgroups[ name ] = key;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\trules = this.settings.rules;\r\n\t\t\t$.each( rules, function( key, value ) {\r\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\r\n\t\t\t});\r\n\r\n\t\t\tfunction delegate( event ) {\r\n\t\t\t\tvar validator = $.data( this[ 0 ].form, \"validator\" ),\r\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\r\n\t\t\t\t\tsettings = validator.settings;\r\n\t\t\t\tif ( settings[ eventType ] && !this.is( settings.ignore ) ) {\r\n\t\t\t\t\tsettings[ eventType ].call( validator, this[ 0 ], event );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t$( this.currentForm )\r\n\t\t\t\t.validateDelegate( \":text, [type='password'], [type='file'], select, textarea, \" +\r\n\t\t\t\t\t\"[type='number'], [type='search'] ,[type='tel'], [type='url'], \" +\r\n\t\t\t\t\t\"[type='email'], [type='datetime'], [type='date'], [type='month'], \" +\r\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], \" +\r\n\t\t\t\t\t\"[type='range'], [type='color'], [type='radio'], [type='checkbox']\",\r\n\t\t\t\t\t\"focusin focusout keyup\", delegate)\r\n\t\t\t\t// Support: Chrome, oldIE\r\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\r\n\t\t\t\t.validateDelegate(\"select, option, [type='radio'], [type='checkbox']\", \"click\", delegate);\r\n\r\n\t\t\tif ( this.settings.invalidHandler ) {\r\n\t\t\t\t$( this.currentForm ).bind( \"invalid-form.validate\", this.settings.invalidHandler );\r\n\t\t\t}\r\n\r\n\t\t\t// Add aria-required to any Static/Data/Class required fields before first validation\r\n\t\t\t// Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html\r\n\t\t\t$( this.currentForm ).find( \"[required], [data-rule-required], .required\" ).attr( \"aria-required\", \"true\" );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.form/\r\n\t\tform: function() {\r\n\t\t\tthis.checkForm();\r\n\t\t\t$.extend( this.submitted, this.errorMap );\r\n\t\t\tthis.invalid = $.extend({}, this.errorMap );\r\n\t\t\tif ( !this.valid() ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\tcheckForm: function() {\r\n\t\t\tthis.prepareForm();\r\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\r\n\t\t\t\tthis.check( elements[ i ] );\r\n\t\t\t}\r\n\t\t\treturn this.valid();\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.element/\r\n\t\telement: function( element ) {\r\n\t\t\tvar cleanElement = this.clean( element ),\r\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\r\n\t\t\t\tresult = true;\r\n\r\n\t\t\tthis.lastElement = checkElement;\r\n\r\n\t\t\tif ( checkElement === undefined ) {\r\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\r\n\t\t\t} else {\r\n\t\t\t\tthis.prepareElement( checkElement );\r\n\t\t\t\tthis.currentElements = $( checkElement );\r\n\r\n\t\t\t\tresult = this.check( checkElement ) !== false;\r\n\t\t\t\tif ( result ) {\r\n\t\t\t\t\tdelete this.invalid[ checkElement.name ];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Add aria-invalid status for screen readers\r\n\t\t\t$( element ).attr( \"aria-invalid\", !result );\r\n\r\n\t\t\tif ( !this.numberOfInvalids() ) {\r\n\t\t\t\t// Hide error containers on last error\r\n\t\t\t\tthis.toHide = this.toHide.add( this.containers );\r\n\t\t\t}\r\n\t\t\tthis.showErrors();\r\n\t\t\treturn result;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.showErrors/\r\n\t\tshowErrors: function( errors ) {\r\n\t\t\tif ( errors ) {\r\n\t\t\t\t// add items to error list and map\r\n\t\t\t\t$.extend( this.errorMap, errors );\r\n\t\t\t\tthis.errorList = [];\r\n\t\t\t\tfor ( var name in errors ) {\r\n\t\t\t\t\tthis.errorList.push({\r\n\t\t\t\t\t\tmessage: errors[ name ],\r\n\t\t\t\t\t\telement: this.findByName( name )[ 0 ]\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t// remove items from success list\r\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\r\n\t\t\t\t\treturn !( element.name in errors );\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\tif ( this.settings.showErrors ) {\r\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\r\n\t\t\t} else {\r\n\t\t\t\tthis.defaultShowErrors();\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/Validator.resetForm/\r\n\t\tresetForm: function() {\r\n\t\t\tif ( $.fn.resetForm ) {\r\n\t\t\t\t$( this.currentForm ).resetForm();\r\n\t\t\t}\r\n\t\t\tthis.submitted = {};\r\n\t\t\tthis.lastElement = null;\r\n\t\t\tthis.prepareForm();\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.elements()\r\n\t\t\t\t\t.removeClass( this.settings.errorClass )\r\n\t\t\t\t\t.removeData( \"previousValue\" )\r\n\t\t\t\t\t.removeAttr( \"aria-invalid\" );\r\n\t\t},\r\n\r\n\t\tnumberOfInvalids: function() {\r\n\t\t\treturn this.objectLength( this.invalid );\r\n\t\t},\r\n\r\n\t\tobjectLength: function( obj ) {\r\n\t\t\t/* jshint unused: false */\r\n\t\t\tvar count = 0,\r\n\t\t\t\ti;\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tcount++;\r\n\t\t\t}\r\n\t\t\treturn count;\r\n\t\t},\r\n\r\n\t\thideErrors: function() {\r\n\t\t\tthis.hideThese( this.toHide );\r\n\t\t},\r\n\r\n\t\thideThese: function( errors ) {\r\n\t\t\terrors.not( this.containers ).text( \"\" );\r\n\t\t\tthis.addWrapper( errors ).hide();\r\n\t\t},\r\n\r\n\t\tvalid: function() {\r\n\t\t\treturn this.size() === 0;\r\n\t\t},\r\n\r\n\t\tsize: function() {\r\n\t\t\treturn this.errorList.length;\r\n\t\t},\r\n\r\n\t\tfocusInvalid: function() {\r\n\t\t\tif ( this.settings.focusInvalid ) {\r\n\t\t\t\ttry {\r\n\t\t\t\t\t//$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])\r\n\t\t\t\t\t//.filter( \":visible\" )\r\n\t\t\t\t\t//.focus()\r\n\t\t\t\t\t// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\r\n\t\t\t\t\t//.trigger( \"focusin\" );\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t// ignore IE throwing errors when focusing hidden elements\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tfindLastActive: function() {\r\n\t\t\tvar lastActive = this.lastActive;\r\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\r\n\t\t\t\treturn n.element.name === lastActive.name;\r\n\t\t\t}).length === 1 && lastActive;\r\n\t\t},\r\n\r\n\t\telements: function() {\r\n\t\t\tvar validator = this,\r\n\t\t\t\trulesCache = {};\r\n\r\n\t\t\t// select all valid inputs inside the form (no submit or reset buttons)\r\n\t\t\treturn $( this.currentForm )\r\n\t\t\t.find( \"input, select, textarea\" )\r\n\t\t\t.not( \":submit, :reset, :image, [disabled], [readonly]\" )\r\n\t\t\t.not( this.settings.ignore )\r\n\t\t\t.filter( function() {\r\n\t\t\t\tif ( !this.name && validator.settings.debug && window.console ) {\r\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// select only the first element for each name, and only those with rules specified\r\n\t\t\t\tif ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\trulesCache[ this.name ] = true;\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tclean: function( selector ) {\r\n\t\t\treturn $( selector )[ 0 ];\r\n\t\t},\r\n\r\n\t\terrors: function() {\r\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\r\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\r\n\t\t},\r\n\r\n\t\treset: function() {\r\n\t\t\tthis.successList = [];\r\n\t\t\tthis.errorList = [];\r\n\t\t\tthis.errorMap = {};\r\n\t\t\tthis.toShow = $( [] );\r\n\t\t\tthis.toHide = $( [] );\r\n\t\t\tthis.currentElements = $( [] );\r\n\t\t},\r\n\r\n\t\tprepareForm: function() {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errors().add( this.containers );\r\n\t\t},\r\n\r\n\t\tprepareElement: function( element ) {\r\n\t\t\tthis.reset();\r\n\t\t\tthis.toHide = this.errorsFor( element );\r\n\t\t},\r\n\r\n\t\telementValue: function( element ) {\r\n\t\t\tvar val,\r\n\t\t\t\t$element = $( element ),\r\n\t\t\t\ttype = element.type;\r\n\r\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\r\n\t\t\t\treturn $( \"input[name='\" + element.name + \"']:checked\" ).val();\r\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\r\n\t\t\t\treturn element.validity.badInput ? false : $element.val();\r\n\t\t\t}\r\n\r\n\t\t\tval = $element.val();\r\n\t\t\tif ( typeof val === \"string\" ) {\r\n\t\t\t\treturn val.replace(/\\r/g, \"\" );\r\n\t\t\t}\r\n\t\t\treturn val;\r\n\t\t},\r\n\r\n\t\tcheck: function( element ) {\r\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\r\n\r\n\t\t\tvar rules = $( element ).rules(),\r\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\r\n\t\t\t\t\treturn i;\r\n\t\t\t\t}).length,\r\n\t\t\t\tdependencyMismatch = false,\r\n\t\t\t\tval = this.elementValue( element ),\r\n\t\t\t\tresult, method, rule;\r\n\r\n\t\t\tfor ( method in rules ) {\r\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\r\n\t\t\t\ttry {\r\n\r\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\r\n\r\n\t\t\t\t\t// if a method indicates that the field is optional and therefore valid,\r\n\t\t\t\t\t// don't mark it as valid when there are no other rules\r\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\r\n\t\t\t\t\t\tdependencyMismatch = true;\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdependencyMismatch = false;\r\n\r\n\t\t\t\t\tif ( result === \"pending\" ) {\r\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( !result ) {\r\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\r\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( dependencyMismatch ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( this.objectLength( rules ) ) {\r\n\t\t\t\tthis.successList.push( element );\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t// return the custom message for the given element and validation method\r\n\t\t// specified in the element's HTML5 data attribute\r\n\t\t// return the generic message if present and no method specific message is present\r\n\t\tcustomDataMessage: function( element, method ) {\r\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\r\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\r\n\t\t},\r\n\r\n\t\t// return the custom message for the given element name and validation method\r\n\t\tcustomMessage: function( name, method ) {\r\n\t\t\tvar m = this.settings.messages[ name ];\r\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ]);\r\n\t\t},\r\n\r\n\t\t// return the first defined argument, allowing empty strings\r\n\t\tfindDefined: function() {\r\n\t\t\tfor ( var i = 0; i < arguments.length; i++) {\r\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\r\n\t\t\t\t\treturn arguments[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn undefined;\r\n\t\t},\r\n\r\n\t\tdefaultMessage: function( element, method ) {\r\n\t\t\treturn this.findDefined(\r\n\t\t\t\tthis.customMessage( element.name, method ),\r\n\t\t\t\tthis.customDataMessage( element, method ),\r\n\t\t\t\t// title is never undefined, so handle empty string as undefined\r\n\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\r\n\t\t\t\t$.validator.messages[ method ],\r\n\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\r\n\t\t\t);\r\n\t\t},\r\n\r\n\t\tformatAndAdd: function( element, rule ) {\r\n\t\t\tvar message = this.defaultMessage( element, rule.method ),\r\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\r\n\t\t\tif ( typeof message === \"function\" ) {\r\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\r\n\t\t\t} else if ( theregex.test( message ) ) {\r\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\r\n\t\t\t}\r\n\t\t\tthis.errorList.push({\r\n\t\t\t\tmessage: message,\r\n\t\t\t\telement: element,\r\n\t\t\t\tmethod: rule.method\r\n\t\t\t});\r\n\r\n\t\t\tthis.errorMap[ element.name ] = message;\r\n\t\t\tthis.submitted[ element.name ] = message;\r\n\t\t},\r\n\r\n\t\taddWrapper: function( toToggle ) {\r\n\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\r\n\t\t\t}\r\n\t\t\treturn toToggle;\r\n\t\t},\r\n\r\n\t\tdefaultShowErrors: function() {\r\n\t\t\tvar i, elements, error;\r\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\r\n\t\t\t\terror = this.errorList[ i ];\r\n\t\t\t\tif ( this.settings.highlight ) {\r\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t\tthis.showLabel( error.element, error.message );\r\n\t\t\t}\r\n\t\t\tif ( this.errorList.length ) {\r\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\r\n\t\t\t}\r\n\t\t\tif ( this.settings.success ) {\r\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\r\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( this.settings.unhighlight ) {\r\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\r\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\r\n\t\t\tthis.hideErrors();\r\n\t\t\tthis.addWrapper( this.toShow ).show();\r\n\t\t},\r\n\r\n\t\tvalidElements: function() {\r\n\t\t\treturn this.currentElements.not( this.invalidElements() );\r\n\t\t},\r\n\r\n\t\tinvalidElements: function() {\r\n\t\t\treturn $( this.errorList ).map(function() {\r\n\t\t\t\treturn this.element;\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\tshowLabel: function( element, message ) {\r\n\t\t\tvar place, group, errorID,\r\n\t\t\t\terror = this.errorsFor( element ),\r\n\t\t\t\telementID = this.idOrName( element ),\r\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\r\n\t\t\tif ( error.length ) {\r\n\t\t\t\t// refresh error/success class\r\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\r\n\t\t\t\t// replace message on existing label\r\n\t\t\t\terror.html( message );\r\n\t\t\t} else {\r\n\t\t\t\t// create error element\r\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\r\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\r\n\t\t\t\t\t.addClass( this.settings.errorClass )\r\n\t\t\t\t\t.html( message || \"\" );\r\n\r\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\r\n\t\t\t\tplace = error;\r\n\t\t\t\tif ( this.settings.wrapper ) {\r\n\t\t\t\t\t// make sure the element is visible, even in IE\r\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\r\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\r\n\t\t\t\t}\r\n\t\t\t\tif ( this.labelContainer.length ) {\r\n\t\t\t\t\tthis.labelContainer.append( place );\r\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\r\n\t\t\t\t\tthis.settings.errorPlacement( place, $( element ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tplace.insertAfter( element );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Link error back to the element\r\n\t\t\t\tif ( error.is( \"label\" ) ) {\r\n\t\t\t\t\t// If the error is a label, then associate using 'for'\r\n\t\t\t\t\terror.attr( \"for\", elementID );\r\n\t\t\t\t} else if ( error.parents( \"label[for='\" + elementID + \"']\" ).length === 0 ) {\r\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\r\n\t\t\t\t\t// to explicitly apply aria-describedby\r\n\r\n\t\t\t\t\terrorID = error.attr( \"id\" ).replace( /(:|\\.|\\[|\\])/g, \"\\\\$1\");\r\n\t\t\t\t\t// Respect existing non-error aria-describedby\r\n\t\t\t\t\tif ( !describedBy ) {\r\n\t\t\t\t\t\tdescribedBy = errorID;\r\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + errorID + \"\\\\b\" ) ) ) {\r\n\t\t\t\t\t\t// Add to end of list if not already present\r\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\r\n\r\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\r\n\t\t\t\t\tgroup = this.groups[ element.name ];\r\n\t\t\t\t\tif ( group ) {\r\n\t\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\r\n\t\t\t\t\t\t\tif ( testgroup === group ) {\r\n\t\t\t\t\t\t\t\t$( \"[name='\" + name + \"']\", this.currentForm )\r\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( !message && this.settings.success ) {\r\n\t\t\t\terror.text( \"\" );\r\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\r\n\t\t\t\t\terror.addClass( this.settings.success );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.settings.success( error, element );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.toShow = this.toShow.add( error );\r\n\t\t},\r\n\r\n\t\terrorsFor: function( element ) {\r\n\t\t\tvar name = this.idOrName( element ),\r\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\r\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\r\n\r\n\t\t\t// aria-describedby should directly reference the error element\r\n\t\t\tif ( describer ) {\r\n\t\t\t\tselector = selector + \", #\" + describer.replace( /\\s+/g, \", #\" );\r\n\t\t\t}\r\n\t\t\treturn this\r\n\t\t\t\t.errors()\r\n\t\t\t\t.filter( selector );\r\n\t\t},\r\n\r\n\t\tidOrName: function( element ) {\r\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\r\n\t\t},\r\n\r\n\t\tvalidationTargetFor: function( element ) {\r\n\r\n\t\t\t// If radio/checkbox, validate first element in group instead\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\telement = this.findByName( element.name );\r\n\t\t\t}\r\n\r\n\t\t\t// Always apply ignore filter\r\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\r\n\t\t},\r\n\r\n\t\tcheckable: function( element ) {\r\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\r\n\t\t},\r\n\r\n\t\tfindByName: function( name ) {\r\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + name + \"']\" );\r\n\t\t},\r\n\r\n\t\tgetLength: function( value, element ) {\r\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\r\n\t\t\tcase \"select\":\r\n\t\t\t\treturn $( \"option:selected\", element ).length;\r\n\t\t\tcase \"input\":\r\n\t\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn value.length;\r\n\t\t},\r\n\r\n\t\tdepend: function( param, element ) {\r\n\t\t\treturn this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;\r\n\t\t},\r\n\r\n\t\tdependTypes: {\r\n\t\t\t\"boolean\": function( param ) {\r\n\t\t\t\treturn param;\r\n\t\t\t},\r\n\t\t\t\"string\": function( param, element ) {\r\n\t\t\t\treturn !!$( param, element.form ).length;\r\n\t\t\t},\r\n\t\t\t\"function\": function( param, element ) {\r\n\t\t\t\treturn param( element );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\toptional: function( element ) {\r\n\t\t\tvar val = this.elementValue( element );\r\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\r\n\t\t},\r\n\r\n\t\tstartRequest: function( element ) {\r\n\t\t\tif ( !this.pending[ element.name ] ) {\r\n\t\t\t\tthis.pendingRequest++;\r\n\t\t\t\tthis.pending[ element.name ] = true;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tstopRequest: function( element, valid ) {\r\n\t\t\tthis.pendingRequest--;\r\n\t\t\t// sometimes synchronization fails, make sure pendingRequest is never < 0\r\n\t\t\tif ( this.pendingRequest < 0 ) {\r\n\t\t\t\tthis.pendingRequest = 0;\r\n\t\t\t}\r\n\t\t\tdelete this.pending[ element.name ];\r\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\r\n\t\t\t\t$( this.currentForm ).submit();\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t} else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) {\r\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ]);\r\n\t\t\t\tthis.formSubmitted = false;\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tpreviousValue: function( element ) {\r\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\r\n\t\t\t\told: null,\r\n\t\t\t\tvalid: true,\r\n\t\t\t\tmessage: this.defaultMessage( element, \"remote\" )\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclassRuleSettings: {\r\n\t\trequired: { required: true },\r\n\t\temail: { email: true },\r\n\t\turl: { url: true },\r\n\t\tdate: { date: true },\r\n\t\tdateISO: { dateISO: true },\r\n\t\tnumber: { number: true },\r\n\t\tdigits: { digits: true },\r\n\t\tcreditcard: { creditcard: true }\r\n\t},\r\n\r\n\taddClassRules: function( className, rules ) {\r\n\t\tif ( className.constructor === String ) {\r\n\t\t\tthis.classRuleSettings[ className ] = rules;\r\n\t\t} else {\r\n\t\t\t$.extend( this.classRuleSettings, className );\r\n\t\t}\r\n\t},\r\n\r\n\tclassRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tclasses = $( element ).attr( \"class\" );\r\n\r\n\t\tif ( classes ) {\r\n\t\t\t$.each( classes.split( \" \" ), function() {\r\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\r\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tattributeRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\t$element = $( element ),\r\n\t\t\ttype = element.getAttribute( \"type\" ),\r\n\t\t\tmethod, value;\r\n\r\n\t\tfor ( method in $.validator.methods ) {\r\n\r\n\t\t\t// support for in both html5 and older browsers\r\n\t\t\tif ( method === \"required\" ) {\r\n\t\t\t\tvalue = element.getAttribute( method );\r\n\t\t\t\t// Some browsers return an empty string for the required attribute\r\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\r\n\t\t\t\tif ( value === \"\" ) {\r\n\t\t\t\t\tvalue = true;\r\n\t\t\t\t}\r\n\t\t\t\t// force non-HTML5 browsers to return bool\r\n\t\t\t\tvalue = !!value;\r\n\t\t\t} else {\r\n\t\t\t\tvalue = $element.attr( method );\r\n\t\t\t}\r\n\r\n\t\t\t// convert the value to a number for number inputs, and for text for backwards compability\r\n\t\t\t// allows type=\"date\" and others to be compared as strings\r\n\t\t\tif ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\r\n\t\t\t\tvalue = Number( value );\r\n\t\t\t}\r\n\r\n\t\t\tif ( value || value === 0 ) {\r\n\t\t\t\trules[ method ] = value;\r\n\t\t\t} else if ( type === method && type !== \"range\" ) {\r\n\t\t\t\t// exception: the jquery validate 'range' method\r\n\t\t\t\t// does not test for the html5 'range' type\r\n\t\t\t\trules[ method ] = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\r\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\r\n\t\t\tdelete rules.maxlength;\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tdataRules: function( element ) {\r\n\t\tvar method, value,\r\n\t\t\trules = {}, $element = $( element );\r\n\t\tfor ( method in $.validator.methods ) {\r\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\r\n\t\t\tif ( value !== undefined ) {\r\n\t\t\t\trules[ method ] = value;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tstaticRules: function( element ) {\r\n\t\tvar rules = {},\r\n\t\t\tvalidator = $.data( element.form, \"validator\" );\r\n\r\n\t\tif ( validator.settings.rules ) {\r\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\r\n\t\t}\r\n\t\treturn rules;\r\n\t},\r\n\r\n\tnormalizeRules: function( rules, element ) {\r\n\t\t// handle dependency check\r\n\t\t$.each( rules, function( prop, val ) {\r\n\t\t\t// ignore rule when param is explicitly false, eg. required:false\r\n\t\t\tif ( val === false ) {\r\n\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif ( val.param || val.depends ) {\r\n\t\t\t\tvar keepRule = true;\r\n\t\t\t\tswitch ( typeof val.depends ) {\r\n\t\t\t\tcase \"string\":\r\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"function\":\r\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t\tif ( keepRule ) {\r\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdelete rules[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// evaluate parameters\r\n\t\t$.each( rules, function( rule, parameter ) {\r\n\t\t\trules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter;\r\n\t\t});\r\n\r\n\t\t// clean number parameters\r\n\t\t$.each([ \"minlength\", \"maxlength\" ], function() {\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\trules[ this ] = Number( rules[ this ] );\r\n\t\t\t}\r\n\t\t});\r\n\t\t$.each([ \"rangelength\", \"range\" ], function() {\r\n\t\t\tvar parts;\r\n\t\t\tif ( rules[ this ] ) {\r\n\t\t\t\tif ( $.isArray( rules[ this ] ) ) {\r\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ];\r\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\r\n\t\t\t\t\tparts = rules[ this ].replace(/[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\r\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif ( $.validator.autoCreateRanges ) {\r\n\t\t\t// auto-create ranges\r\n\t\t\tif ( rules.min != null && rules.max != null ) {\r\n\t\t\t\trules.range = [ rules.min, rules.max ];\r\n\t\t\t\tdelete rules.min;\r\n\t\t\t\tdelete rules.max;\r\n\t\t\t}\r\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\r\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\r\n\t\t\t\tdelete rules.minlength;\r\n\t\t\t\tdelete rules.maxlength;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn rules;\r\n\t},\r\n\r\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\r\n\tnormalizeRule: function( data ) {\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tvar transformed = {};\r\n\t\t\t$.each( data.split( /\\s/ ), function() {\r\n\t\t\t\ttransformed[ this ] = true;\r\n\t\t\t});\r\n\t\t\tdata = transformed;\r\n\t\t}\r\n\t\treturn data;\r\n\t},\r\n\r\n\t// http://jqueryvalidation.org/jQuery.validator.addMethod/\r\n\taddMethod: function( name, method, message ) {\r\n\t\t$.validator.methods[ name ] = method;\r\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\r\n\t\tif ( method.length < 3 ) {\r\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\r\n\t\t}\r\n\t},\r\n\r\n\tmethods: {\r\n\r\n\t\t// http://jqueryvalidation.org/required-method/\r\n\t\trequired: function( value, element, param ) {\r\n\t\t\t// check if dependency is met\r\n\t\t\tif ( !this.depend( param, element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\r\n\t\t\t\t// could be an array for select-multiple or a string, both are fine this way\r\n\t\t\t\tvar val = $( element ).val();\r\n\t\t\t\treturn val && val.length > 0;\r\n\t\t\t}\r\n\t\t\tif ( this.checkable( element ) ) {\r\n\t\t\t\treturn this.getLength( value, element ) > 0;\r\n\t\t\t}\r\n\t\t\treturn $.trim( value ).length > 0;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/email-method/\r\n\t\temail: function( value, element ) {\r\n\t\t\t// From http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#e-mail-state-%28type=email%29\r\n\t\t\t// Retrieved 2014-01-14\r\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\r\n\t\t\t// Or use custom methods to implement your own email validation\r\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/url-method/\r\n\t\turl: function( value, element ) {\r\n\t\t\t// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/\r\n\t\t\treturn this.optional( element ) || /^(https?|s?ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/date-method/\r\n\t\tdate: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/dateISO-method/\r\n\t\tdateISO: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/number-method/\r\n\t\tnumber: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/digits-method/\r\n\t\tdigits: function( value, element ) {\r\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/creditcard-method/\r\n\t\t// based on http://en.wikipedia.org/wiki/Luhn/\r\n\t\tcreditcard: function( value, element ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\t\t\t// accept only spaces, digits and dashes\r\n\t\t\tif ( /[^0-9 \\-]+/.test( value ) ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar nCheck = 0,\r\n\t\t\t\tnDigit = 0,\r\n\t\t\t\tbEven = false,\r\n\t\t\t\tn, cDigit;\r\n\r\n\t\t\tvalue = value.replace( /\\D/g, \"\" );\r\n\r\n\t\t\t// Basing min and max length on\r\n\t\t\t// http://developer.ean.com/general_info/Valid_Credit_Card_Types\r\n\t\t\tif ( value.length < 13 || value.length > 19 ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tfor ( n = value.length - 1; n >= 0; n--) {\r\n\t\t\t\tcDigit = value.charAt( n );\r\n\t\t\t\tnDigit = parseInt( cDigit, 10 );\r\n\t\t\t\tif ( bEven ) {\r\n\t\t\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\r\n\t\t\t\t\t\tnDigit -= 9;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tnCheck += nDigit;\r\n\t\t\t\tbEven = !bEven;\r\n\t\t\t}\r\n\r\n\t\t\treturn ( nCheck % 10 ) === 0;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/minlength-method/\r\n\t\tminlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length >= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/maxlength-method/\r\n\t\tmaxlength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || length <= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/rangelength-method/\r\n\t\trangelength: function( value, element, param ) {\r\n\t\t\tvar length = $.isArray( value ) ? value.length : this.getLength( value, element );\r\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/min-method/\r\n\t\tmin: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value >= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/max-method/\r\n\t\tmax: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || value <= param;\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/range-method/\r\n\t\trange: function( value, element, param ) {\r\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/equalTo-method/\r\n\t\tequalTo: function( value, element, param ) {\r\n\t\t\t// bind to the blur event of the target in order to revalidate whenever the target field is updated\r\n\t\t\t// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead\r\n\t\t\tvar target = $( param );\r\n\t\t\tif ( this.settings.onfocusout ) {\r\n\t\t\t\ttarget.unbind( \".validate-equalTo\" ).bind( \"blur.validate-equalTo\", function() {\r\n\t\t\t\t\t$( element ).valid();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\treturn value === target.val();\r\n\t\t},\r\n\r\n\t\t// http://jqueryvalidation.org/remote-method/\r\n\t\tremote: function( value, element, param ) {\r\n\t\t\tif ( this.optional( element ) ) {\r\n\t\t\t\treturn \"dependency-mismatch\";\r\n\t\t\t}\r\n\r\n\t\t\tvar previous = this.previousValue( element ),\r\n\t\t\t\tvalidator, data;\r\n\r\n\t\t\tif (!this.settings.messages[ element.name ] ) {\r\n\t\t\t\tthis.settings.messages[ element.name ] = {};\r\n\t\t\t}\r\n\t\t\tprevious.originalMessage = this.settings.messages[ element.name ].remote;\r\n\t\t\tthis.settings.messages[ element.name ].remote = previous.message;\r\n\r\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\r\n\r\n\t\t\tif ( previous.old === value ) {\r\n\t\t\t\treturn previous.valid;\r\n\t\t\t}\r\n\r\n\t\t\tprevious.old = value;\r\n\t\t\tvalidator = this;\r\n\t\t\tthis.startRequest( element );\r\n\t\t\tdata = {};\r\n\t\t\tdata[ element.name ] = value;\r\n\t\t\t$.ajax( $.extend( true, {\r\n\t\t\t\turl: param,\r\n\t\t\t\tmode: \"abort\",\r\n\t\t\t\tport: \"validate\" + element.name,\r\n\t\t\t\tdataType: \"json\",\r\n\t\t\t\tdata: data,\r\n\t\t\t\tcontext: validator.currentForm,\r\n\t\t\t\tsuccess: function( response ) {\r\n\t\t\t\t\tvar valid = response === true || response === \"true\",\r\n\t\t\t\t\t\terrors, message, submitted;\r\n\r\n\t\t\t\t\tvalidator.settings.messages[ element.name ].remote = previous.originalMessage;\r\n\t\t\t\t\tif ( valid ) {\r\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\r\n\t\t\t\t\t\tvalidator.prepareElement( element );\r\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\r\n\t\t\t\t\t\tvalidator.successList.push( element );\r\n\t\t\t\t\t\tdelete validator.invalid[ element.name ];\r\n\t\t\t\t\t\tvalidator.showErrors();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terrors = {};\r\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, \"remote\" );\r\n\t\t\t\t\t\terrors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;\r\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\r\n\t\t\t\t\t\tvalidator.showErrors( errors );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tprevious.valid = valid;\r\n\t\t\t\t\tvalidator.stopRequest( element, valid );\r\n\t\t\t\t}\r\n\t\t\t}, param ) );\r\n\t\t\treturn \"pending\";\r\n\t\t}\r\n\r\n\t}\r\n\r\n});\r\n\r\n$.format = function deprecated() {\r\n\tthrow \"$.format has been deprecated. Please use $.validator.format instead.\";\r\n};\r\n\r\n// ajax mode: abort\r\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\r\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\r\n\r\nvar pendingRequests = {},\r\n\tajax;\r\n// Use a prefilter if available (1.5+)\r\nif ( $.ajaxPrefilter ) {\r\n\t$.ajaxPrefilter(function( settings, _, xhr ) {\r\n\t\tvar port = settings.port;\r\n\t\tif ( settings.mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[port] ) {\r\n\t\t\t\tpendingRequests[port].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[port] = xhr;\r\n\t\t}\r\n\t});\r\n} else {\r\n\t// Proxy ajax\r\n\tajax = $.ajax;\r\n\t$.ajax = function( settings ) {\r\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\r\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\r\n\t\tif ( mode === \"abort\" ) {\r\n\t\t\tif ( pendingRequests[port] ) {\r\n\t\t\t\tpendingRequests[port].abort();\r\n\t\t\t}\r\n\t\t\tpendingRequests[port] = ajax.apply(this, arguments);\r\n\t\t\treturn pendingRequests[port];\r\n\t\t}\r\n\t\treturn ajax.apply(this, arguments);\r\n\t};\r\n}\r\n\r\n// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation\r\n// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target\r\n\r\n$.extend($.fn, {\r\n\tvalidateDelegate: function( delegate, type, handler ) {\r\n\t\treturn this.bind(type, function( event ) {\r\n\t\t\tvar target = $(event.target);\r\n\t\t\tif ( target.is(delegate) ) {\r\n\t\t\t\treturn handler.apply(target, arguments);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n});\r\n\r\n}));\r\n\r\n","/* NUGET: BEGIN LICENSE TEXT\r\n *\r\n * Microsoft grants you the right to use these script files for the sole\r\n * purpose of either: (i) interacting through your browser with the Microsoft\r\n * website or online service, subject to the applicable licensing or use\r\n * terms; or (ii) using the files as included with a Microsoft product subject\r\n * to that product's license terms. Microsoft reserves all other rights to the\r\n * files not expressly granted by Microsoft, whether by implication, estoppel\r\n * or otherwise. Insofar as a script file is dual licensed under GPL,\r\n * Microsoft neither took the code under GPL nor distributes it thereunder but\r\n * under the terms set out in this paragraph. All notices and licenses\r\n * below are for informational purposes only.\r\n *\r\n * NUGET: END LICENSE TEXT */\r\n/*!\r\n** Unobtrusive validation support library for jQuery and jQuery Validate\r\n** Copyright (C) Microsoft Corporation. All rights reserved.\r\n*/\r\n\r\n/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, plusplus: true, bitwise: true, regexp: true, newcap: true, immed: true, strict: false */\r\n/*global document: false, jQuery: false */\r\n\r\n(function ($) {\r\n var $jQval = $.validator,\r\n adapters,\r\n data_validation = \"unobtrusiveValidation\";\r\n\r\n function setValidationValues(options, ruleName, value) {\r\n options.rules[ruleName] = value;\r\n if (options.message) {\r\n options.messages[ruleName] = options.message;\r\n }\r\n }\r\n\r\n function splitAndTrim(value) {\r\n return value.replace(/^\\s+|\\s+$/g, \"\").split(/\\s*,\\s*/g);\r\n }\r\n\r\n function escapeAttributeValue(value) {\r\n // As mentioned on http://api.jquery.com/category/selectors/\r\n return value.replace(/([!\"#$%&'()*+,./:;<=>?@\\[\\\\\\]^`{|}~])/g, \"\\\\$1\");\r\n }\r\n\r\n function getModelPrefix(fieldName) {\r\n return fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n }\r\n\r\n function appendModelPrefix(value, prefix) {\r\n if (value.indexOf(\"*.\") === 0) {\r\n value = value.replace(\"*.\", prefix);\r\n }\r\n return value;\r\n }\r\n\r\n function onError(error, inputElement) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-for='\" + escapeAttributeValue(inputElement[0].name) + \"']\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) !== false : null;\r\n\r\n container.removeClass(\"field-validation-valid\").addClass(\"field-validation-error\");\r\n error.data(\"unobtrusiveContainer\", container);\r\n\r\n if (replace) {\r\n container.empty();\r\n error.removeClass(\"input-validation-error\").appendTo(container);\r\n }\r\n else {\r\n error.hide();\r\n }\r\n }\r\n\r\n function onErrors(event, validator) { // 'this' is the form element\r\n var container = $(this).find(\"[data-valmsg-summary=true]\"),\r\n list = container.find(\"ul\");\r\n\r\n if (list && list.length && validator.errorList.length) {\r\n list.empty();\r\n container.addClass(\"validation-summary-errors\").removeClass(\"validation-summary-valid\");\r\n\r\n $.each(validator.errorList, function () {\r\n $(\"
  • \").html(this.message).appendTo(list);\r\n });\r\n }\r\n }\r\n\r\n function onSuccess(error) { // 'this' is the form element\r\n var container = error.data(\"unobtrusiveContainer\"),\r\n replaceAttrValue = container.attr(\"data-valmsg-replace\"),\r\n replace = replaceAttrValue ? $.parseJSON(replaceAttrValue) : null;\r\n\r\n if (container) {\r\n container.addClass(\"field-validation-valid\").removeClass(\"field-validation-error\");\r\n error.removeData(\"unobtrusiveContainer\");\r\n\r\n if (replace) {\r\n container.empty();\r\n }\r\n }\r\n }\r\n\r\n function onReset(event) { // 'this' is the form element\r\n var $form = $(this);\r\n $form.data(\"validator\").resetForm();\r\n $form.find(\".validation-summary-errors\")\r\n .addClass(\"validation-summary-valid\")\r\n .removeClass(\"validation-summary-errors\");\r\n $form.find(\".field-validation-error\")\r\n .addClass(\"field-validation-valid\")\r\n .removeClass(\"field-validation-error\")\r\n .removeData(\"unobtrusiveContainer\")\r\n .find(\">*\") // If we were using valmsg-replace, get the underlying error\r\n .removeData(\"unobtrusiveContainer\");\r\n }\r\n\r\n function validationInfo(form) {\r\n var $form = $(form),\r\n result = $form.data(data_validation),\r\n onResetProxy = $.proxy(onReset, form),\r\n defaultOptions = $jQval.unobtrusive.options || {},\r\n execInContext = function (name, args) {\r\n var func = defaultOptions[name];\r\n func && $.isFunction(func) && func.apply(form, args);\r\n }\r\n\r\n if (!result) {\r\n result = {\r\n options: { // options structure passed to jQuery Validate's validate() method\r\n errorClass: defaultOptions.errorClass || \"input-validation-error\",\r\n errorElement: defaultOptions.errorElement || \"span\",\r\n errorPlacement: function () {\r\n onError.apply(form, arguments);\r\n execInContext(\"errorPlacement\", arguments);\r\n },\r\n invalidHandler: function () {\r\n onErrors.apply(form, arguments);\r\n execInContext(\"invalidHandler\", arguments);\r\n },\r\n messages: {},\r\n rules: {},\r\n success: function () {\r\n onSuccess.apply(form, arguments);\r\n execInContext(\"success\", arguments);\r\n }\r\n },\r\n attachValidation: function () {\r\n $form\r\n .off(\"reset.\" + data_validation, onResetProxy)\r\n .on(\"reset.\" + data_validation, onResetProxy)\r\n .validate(this.options);\r\n },\r\n validate: function () { // a validation function that is called by unobtrusive Ajax\r\n $form.validate();\r\n return $form.valid();\r\n }\r\n };\r\n $form.data(data_validation, result);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n $jQval.unobtrusive = {\r\n adapters: [],\r\n\r\n parseElement: function (element, skipAttach) {\r\n /// \r\n /// Parses a single HTML element for unobtrusive validation attributes.\r\n /// \r\n /// The HTML element to be parsed.\r\n /// [Optional] true to skip attaching the\r\n /// validation to the form. If parsing just this single element, you should specify true.\r\n /// If parsing several elements, you should specify false, and manually attach the validation\r\n /// to the form when you are finished. The default is false.\r\n var $element = $(element),\r\n form = $element.parents(\"form\")[0],\r\n valInfo, rules, messages;\r\n\r\n if (!form) { // Cannot do client-side validation without a form\r\n return;\r\n }\r\n\r\n valInfo = validationInfo(form);\r\n valInfo.options.rules[element.name] = rules = {};\r\n valInfo.options.messages[element.name] = messages = {};\r\n\r\n $.each(this.adapters, function () {\r\n var prefix = \"data-val-\" + this.name,\r\n message = $element.attr(prefix),\r\n paramValues = {};\r\n\r\n if (message !== undefined) { // Compare against undefined, because an empty message is legal (and falsy)\r\n prefix += \"-\";\r\n\r\n $.each(this.params, function () {\r\n paramValues[this] = $element.attr(prefix + this);\r\n });\r\n\r\n this.adapt({\r\n element: element,\r\n form: form,\r\n message: message,\r\n params: paramValues,\r\n rules: rules,\r\n messages: messages\r\n });\r\n }\r\n });\r\n\r\n $.extend(rules, { \"__dummy__\": true });\r\n\r\n if (!skipAttach) {\r\n valInfo.attachValidation();\r\n }\r\n },\r\n\r\n parse: function (selector) {\r\n /// \r\n /// Parses all the HTML elements in the specified selector. It looks for input elements decorated\r\n /// with the [data-val=true] attribute value and enables validation according to the data-val-*\r\n /// attribute values.\r\n /// \r\n /// Any valid jQuery selector.\r\n\r\n // $forms includes all forms in selector's DOM hierarchy (parent, children and self) that have at least one\r\n // element with data-val=true\r\n var $selector = $(selector),\r\n $forms = $selector.parents()\r\n .filter(\"form\")\r\n .add($selector.find(\"form\"))\r\n .has(\"[data-val=true]\");\r\n\r\n $selector.find(\"[data-val=true]\").each(function () {\r\n $jQval.unobtrusive.parseElement(this, true);\r\n });\r\n\r\n $forms.each(function () {\r\n var info = validationInfo(this);\r\n if (info) {\r\n info.attachValidation();\r\n }\r\n });\r\n }\r\n };\r\n\r\n adapters = $jQval.unobtrusive.adapters;\r\n\r\n adapters.add = function (adapterName, params, fn) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] An array of parameter names (strings) that will\r\n /// be extracted from the data-val-nnnn-mmmm HTML attributes (where nnnn is the adapter name, and\r\n /// mmmm is the parameter name).\r\n /// The function to call, which adapts the values from the HTML\r\n /// attributes into jQuery Validate rules and/or messages.\r\n /// \r\n if (!fn) { // Called with no params, just a function\r\n fn = params;\r\n params = [];\r\n }\r\n this.push({ name: adapterName, params: params, adapt: fn });\r\n return this;\r\n };\r\n\r\n adapters.addBool = function (adapterName, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has no parameter values.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, function (options) {\r\n setValidationValues(options, ruleName || adapterName, true);\r\n });\r\n };\r\n\r\n adapters.addMinMax = function (adapterName, minRuleName, maxRuleName, minMaxRuleName, minAttribute, maxAttribute) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation has three potential rules (one for min-only, one for max-only, and\r\n /// one for min-and-max). The HTML parameters are expected to be named -min and -max.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute (where nnnn is the adapter name).\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a minimum value.\r\n /// The name of the jQuery Validate rule to be used when you only\r\n /// have a maximum value.\r\n /// The name of the jQuery Validate rule to be used when you\r\n /// have both a minimum and maximum value.\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the minimum value. The default is \"min\".\r\n /// [Optional] The name of the HTML attribute that\r\n /// contains the maximum value. The default is \"max\".\r\n /// \r\n return this.add(adapterName, [minAttribute || \"min\", maxAttribute || \"max\"], function (options) {\r\n var min = options.params.min,\r\n max = options.params.max;\r\n\r\n if (min && max) {\r\n setValidationValues(options, minMaxRuleName, [min, max]);\r\n }\r\n else if (min) {\r\n setValidationValues(options, minRuleName, min);\r\n }\r\n else if (max) {\r\n setValidationValues(options, maxRuleName, max);\r\n }\r\n });\r\n };\r\n\r\n adapters.addSingleVal = function (adapterName, attribute, ruleName) {\r\n /// Adds a new adapter to convert unobtrusive HTML into a jQuery Validate validation, where\r\n /// the jQuery Validate validation rule has a single value.\r\n /// The name of the adapter to be added. This matches the name used\r\n /// in the data-val-nnnn HTML attribute(where nnnn is the adapter name).\r\n /// [Optional] The name of the HTML attribute that contains the value.\r\n /// The default is \"val\".\r\n /// [Optional] The name of the jQuery Validate rule. If not provided, the value\r\n /// of adapterName will be used instead.\r\n /// \r\n return this.add(adapterName, [attribute || \"val\"], function (options) {\r\n setValidationValues(options, ruleName || adapterName, options.params[attribute]);\r\n });\r\n };\r\n\r\n $jQval.addMethod(\"__dummy__\", function (value, element, params) {\r\n return true;\r\n });\r\n\r\n $jQval.addMethod(\"regex\", function (value, element, params) {\r\n var match;\r\n if (this.optional(element)) {\r\n return true;\r\n }\r\n\r\n match = new RegExp(params).exec(value);\r\n return (match && (match.index === 0) && (match[0].length === value.length));\r\n });\r\n\r\n $jQval.addMethod(\"nonalphamin\", function (value, element, nonalphamin) {\r\n var match;\r\n if (nonalphamin) {\r\n match = value.match(/\\W/g);\r\n match = match && match.length >= nonalphamin;\r\n }\r\n return match;\r\n });\r\n\r\n if ($jQval.methods.extension) {\r\n adapters.addSingleVal(\"accept\", \"mimtype\");\r\n adapters.addSingleVal(\"extension\", \"extension\");\r\n } else {\r\n // for backward compatibility, when the 'extension' validation method does not exist, such as with versions\r\n // of JQuery Validation plugin prior to 1.10, we should use the 'accept' method for\r\n // validating the extension, and ignore mime-type validations as they are not supported.\r\n adapters.addSingleVal(\"extension\", \"extension\", \"accept\");\r\n }\r\n\r\n adapters.addSingleVal(\"regex\", \"pattern\");\r\n adapters.addBool(\"creditcard\").addBool(\"date\").addBool(\"digits\").addBool(\"email\").addBool(\"number\").addBool(\"url\");\r\n adapters.addMinMax(\"length\", \"minlength\", \"maxlength\", \"rangelength\").addMinMax(\"range\", \"min\", \"max\", \"range\");\r\n adapters.addMinMax(\"minlength\", \"minlength\").addMinMax(\"maxlength\", \"minlength\", \"maxlength\");\r\n adapters.add(\"equalto\", [\"other\"], function (options) {\r\n var prefix = getModelPrefix(options.element.name),\r\n other = options.params.other,\r\n fullOtherName = appendModelPrefix(other, prefix),\r\n element = $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(fullOtherName) + \"']\")[0];\r\n\r\n setValidationValues(options, \"equalTo\", element);\r\n });\r\n adapters.add(\"required\", function (options) {\r\n // jQuery Validate equates \"required\" with \"mandatory\" for checkbox elements\r\n if (options.element.tagName.toUpperCase() !== \"INPUT\" || options.element.type.toUpperCase() !== \"CHECKBOX\") {\r\n setValidationValues(options, \"required\", true);\r\n }\r\n });\r\n adapters.add(\"remote\", [\"url\", \"type\", \"additionalfields\"], function (options) {\r\n var value = {\r\n url: options.params.url,\r\n type: options.params.type || \"GET\",\r\n data: {}\r\n },\r\n prefix = getModelPrefix(options.element.name);\r\n\r\n $.each(splitAndTrim(options.params.additionalfields || options.element.name), function (i, fieldName) {\r\n var paramName = appendModelPrefix(fieldName, prefix);\r\n value.data[paramName] = function () {\r\n return $(options.form).find(\":input\").filter(\"[name='\" + escapeAttributeValue(paramName) + \"']\").val();\r\n };\r\n });\r\n\r\n setValidationValues(options, \"remote\", value);\r\n });\r\n adapters.add(\"password\", [\"min\", \"nonalphamin\", \"regex\"], function (options) {\r\n if (options.params.min) {\r\n setValidationValues(options, \"minlength\", options.params.min);\r\n }\r\n if (options.params.nonalphamin) {\r\n setValidationValues(options, \"nonalphamin\", options.params.nonalphamin);\r\n }\r\n if (options.params.regex) {\r\n setValidationValues(options, \"regex\", options.params.regex);\r\n }\r\n });\r\n\r\n $(function () {\r\n $jQval.unobtrusive.parse(document);\r\n });\r\n}(jQuery));"]}