{"payload":{"allShortcutsEnabled":false,"fileTree":{"src/js":{"items":[{"name":"l10n","path":"src/js/l10n","contentType":"directory"},{"name":"validatr.js","path":"src/js/validatr.js","contentType":"file"}],"totalCount":2},"src":{"items":[{"name":"js","path":"src/js","contentType":"directory"},{"name":"index.html","path":"src/index.html","contentType":"file"}],"totalCount":2},"":{"items":[{"name":"dist","path":"dist","contentType":"directory"},{"name":"docs","path":"docs","contentType":"submodule","submoduleUrl":"/jaymorrow/validatr/tree/030fe3c739c0a47aa9d502ed9071b9a657b60cd9","submoduleDisplayName":"docs @ 030fe3c"},{"name":"libs","path":"libs","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".gitmodules","path":".gitmodules","contentType":"file"},{"name":"Gruntfile.js","path":"Gruntfile.js","contentType":"file"},{"name":"LICENSE-MIT","path":"LICENSE-MIT","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"package.json","path":"package.json","contentType":"file"},{"name":"validatr.jquery.json","path":"validatr.jquery.json","contentType":"file"}],"totalCount":12}},"fileTreeProcessingTime":20.667606000000003,"foldersToFetch":[],"repo":{"id":8115450,"defaultBranch":"master","name":"validatr","ownerLogin":"jaymorrow","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2013-02-09T21:35:06.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/445684?v=4","public":true,"private":false,"isOrgOwned":false},"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"master","listCacheKey":"v0:1613527988.4389062","canEdit":false,"refType":"branch","currentOid":"f177fc034146575fb633bfab15cd5284f9c73cdf"},"path":"src/js/validatr.js","currentUser":null,"blob":{"rawLines":["/*"," * Validatr"," * https://github.com/morrowj/validatr"," *"," * Copyright (c) 2013 Jay Morrow"," * Licensed under the MIT license."," */","","(function(window, document, $, undefined) {"," \"use strict\";",""," /*! Inspired by Modernizr 2.6.2| MIT & BSD"," * Build: http://modernizr.com/download/#-input-inputtypes"," */"," var Support = (function() {",""," var Support = {},",""," docElement = document.documentElement,",""," inputElem = document.createElement('input'),",""," selectElem = document.createElement('select'),",""," textareaElem = document.createElement('textarea'),",""," smile = ':)',",""," tests = {},",""," inputs = {},",""," attrs = {},",""," testElem;",""," Support.attributes = (function( props ) {"," for ( var i = 0, len = props.length; i < len; i++ ) {"," attrs[ props[i] ] = !!(props[i] in inputElem);"," }"," return attrs;"," })('max min multiple pattern required step'.split(' '));","",""," Support.inputtypes = (function(props) {",""," for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {"," inputElem.setAttribute('type', inputElemType = props[i]);"," bool = inputElem.type !== 'text';",""," if ( bool ) {",""," inputElem.value = smile;"," inputElem.style.cssText = 'position:absolute;visibility:hidden;';",""," if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {",""," docElement.appendChild(inputElem);"," defaultView = document.defaultView;",""," bool = defaultView.getComputedStyle &&"," defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&"," (inputElem.offsetHeight !== 0);",""," docElement.removeChild(inputElem);",""," } else if ( /^(search|tel)$/.test(inputElemType) ){"," } else if ( /^(url|email)$/.test(inputElemType) ) {"," bool = inputElem.checkValidity && inputElem.checkValidity() === false;"," } else {"," bool = inputElem.value !== smile;"," }"," }",""," inputs[ props[i] ] = !!bool;"," }",""," return inputs;"," })('search tel url email datetime date month week time datetime-local number range color'.split(' '));",""," (function(props) {"," for ( var i = 0, len = props.length; i < len; i++ ) {"," testElem = inputElem;",""," try {"," testElem.setAttribute('type', props[i]);"," } catch (e) {"," testElem = document.createElement('');"," }",""," testElem.style.cssText = 'position:absolute;visibility:hidden;';"," Support.inputtypes[ props[i] ] = !!testElem.checkValidity;"," }"," })('text password radio checkbox'.split(' '));",""," Support.inputtypes.select = !!selectElem.checkValidity;"," Support.inputtypes.textarea = !!textareaElem.checkValidity;",""," inputElem = null;"," testElem = null;"," selectElem = null;"," textareaElem = null;",""," return Support;"," }()),",""," /*"," * Really simple date/time logic"," * Mostly taken from moment.js version : 2.0.0"," * author : Tim Wood"," * license : MIT"," * momentjs.com"," */"," Format = (function () {"," var tokens = /(d?d|w?w|m?m|(?:yy)?yy|M?M)/g,",""," tokenOneTwo = /\\d{1,2}/,"," tokenTwo = /\\d{2}/,"," tokenFour = /\\d{4}/,",""," _monthFullNames = 'January|February|March|April|May|June|July|August|September|October|November|December',"," _monthShortNames = 'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec',",""," monthFullNames = new RegExp(_monthFullNames, 'i'),"," monthShortNames = new RegExp(_monthShortNames, 'i'),",""," fullMonths = _monthFullNames.toLowerCase().split('|'),"," shortMonths = _monthShortNames.toLowerCase().split('|'),",""," formatParts = {"," d: function () {"," return this.getDate();"," },"," dd: function () {"," return pad(this.getDate());"," },"," w: function () {"," return getWeek(this);"," },"," ww: function () {"," return pad(getWeek(this));"," },"," m: function () {"," return this.getMonth() + 1;"," },"," mm: function () {"," return pad(this.getMonth() + 1);"," },"," yy: function () {"," return this.getFullYear().toString().substr(2);"," },"," yyyy: function () {"," return this.getFullYear();"," },"," M: function () {"," return proper(shortMonths[this.getMonth()]);"," },"," MM: function () {"," return proper(fullMonths[this.getMonth()]);"," }"," };",""," function proper(m) {"," return m.substr(0,1).toUpperCase() + m.substr(1);"," }",""," function pad(n) {"," return n < 10 ? '0' + n : n;"," }",""," function indexOf(array, value) {"," var index = -1,"," length = array ? array.length : 0;",""," while (++index < length) {"," if (array[index] === value) {"," return index;"," }"," }",""," return -1;"," }",""," function getParts(token) {"," switch(token) {"," case 'd' :"," case 'w' :"," case 'm' :"," return tokenOneTwo;"," case 'dd':"," case 'ww':"," case 'mm':"," case 'yy':"," return tokenTwo;"," case 'M':"," return monthShortNames;"," case 'MM':"," return monthFullNames;"," case 'yyyy':"," return tokenFour;"," }"," }",""," function createDateArray(token, input, dateArray) {"," if (input === undefined) {"," return;"," }",""," switch(token) {"," case 'd' :"," case 'dd':"," dateArray[2] = ~~input;"," break;"," case 'w' :"," case 'ww':"," dateArray[3] = ~~input;"," break;"," case 'm' :"," case 'mm':"," dateArray[1] = ~~input - 1;"," break;"," case 'M':"," dateArray[1] = indexOf(shortMonths, input.toLowerCase());"," break;"," case 'MM':"," dateArray[1] = indexOf(fullMonths, input.toLowerCase());"," break;"," case 'yy' :"," dateArray[0] = ~~('20' + input);"," break;"," case 'yyyy':"," dateArray[0] = ~~input;"," break;"," }"," }",""," function getWeek(date) {"," var first = new Date(date.getFullYear(), 0, 1, 0, 0, 0);",""," return Math.ceil((((date - first) / 86400000) + first.getDay() + 1) / 7);"," }",""," function createDateFromWeek(dateArray) {"," var date = dayOfWeek(dateArray[0]),"," weekTime = 1000 * 60 * 60 * 24 * 7 * (dateArray[3] - 1),"," targetTime = date.getTime() + weekTime - (86400000 * (date.getDay() - $.fn.validatr.defaultOptions.weekStart)),"," result = new Date(targetTime);"," result.setHours(0);",""," return result;"," }",""," function dayOfWeek(year) {"," var date = new Date(year, 0, 1, 0, 0, 0),"," day = ($.fn.validatr.defaultOptions.yearStart - date.getDay()) + date.getDate();",""," date.setDate(day);"," return date;"," }",""," function createDate(dateArray) {"," var i = 0,"," date = [],"," isNum = false;",""," for (i; i < 7; i += 1) {"," isNum = typeof dateArray[i] === 'number';",""," if (!isNum && i < 2) {"," return false;"," }",""," date[i] = !isNum ? (i === 2 ? 1 : 0) : dateArray[i];"," }",""," return new Date(date[0], date[1], date[2], date[3], date[4], date[5], date[6]);"," }",""," function parseDate(string, format) {"," var parts = format.match(tokens) || [],"," dateArray = [],"," length = parts.length,"," i = 0,"," input;",""," if (!length) {"," throw new Error('Ivalid date format.');"," }"," for (i; i < length; i += 1) {"," input = (getParts(parts[i]).exec(string) || [])[0];",""," if (!input) {"," continue;"," }",""," string = string.slice(string.indexOf(input) + input.length);"," createDateArray(parts[i], input, dateArray);"," }",""," if (/w?w/.test(format)) {"," return createDateFromWeek(dateArray);"," }",""," if (dateArray.length && dateArray.length === length) {"," return createDate(dateArray);"," }"," }",""," function formatDate(dateObj, format) {"," if (dateObj === false) {"," return false;"," }",""," if (format === undefined) {"," format = 'yyyy-mm-dd';"," }",""," var parts = format.match(tokens) || [],"," length = parts.length,"," i = 0;",""," if (!length) {"," throw new Error('Ivalid date format.');"," }",""," for (i; i < length; i += 1) {"," if ( formatParts[ parts[i] ]) {"," format = format.replace(parts[i], formatParts[ parts[i] ].call(dateObj));"," }"," }",""," return format;"," }",""," return {"," date: parseDate,"," isoDate: function (string) {"," return parseDate(string, 'yyyy-mm-dd');"," },"," toString: formatDate"," };"," }()),",""," Tests = (function () {"," var rules = {"," color: /^#[0-9A-F]{6}$/i,"," email: /^[a-zA-Z0-9.!#$%&’*+\\/=?\\^_`{|}~\\-]+@[a-zA-Z0-9\\-]+(?:\\.[a-zA-Z0-9\\-]+)*$/,"," number: /^-?\\d*\\.?\\d*$/,"," url: /^\\s*https?:\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?\\s*$/"," },",""," utils = {"," boxes: /checkbox|radio/i,"," spaces: /,\\s*/"," },",""," minMax = function (value, min, max, step) {"," var result = true,"," msg = $.validatr.messages.range.base;",""," if (value !== false) {"," if (step !== false) {"," result = step === 'any' ? true : (value - min) % step === 0;"," msg = $.validatr.messages.range.invalid;"," }",""," if (result) {"," if (min !== false && max !== false) {"," result = value >= min && value <= max;"," msg = $.validatr.messages.range.overUnder;"," } else if (min !== false) {"," result = value >= min;"," msg = $.validatr.messages.range.overflow;"," } else if (max !== false) {"," result = value <= max;"," msg = $.validatr.messages.range.underflow;"," }"," }"," }",""," return {"," valid: value !== false && result,"," message: msg"," };"," },",""," getFormat = function (element, type) {"," type += 'Format';"," return element.getAttribute('data-format') || ( $.data(element.form, 'validatr').options[type] || $.fn.validatr.defaultOptions[type] );"," },",""," formatMessage = function (message, type, min, max) {"," message = message.replace('{{type}}', type);",""," if (min) {"," message = message.replace('{{min}}', min);"," }",""," if (max) {"," message = message.replace('{{max}}', max);"," }",""," return message;"," };",""," return {"," checkbox: function (element) {"," return {"," valid: element.checked,"," message: $.validatr.messages.checkbox"," };"," },",""," color: function (element) {"," return {"," valid: rules.color.test(element.value),"," message: $.validatr.messages.color"," };"," },",""," date: function (element) {"," var $element = $(element),"," format = getFormat(element, 'date'),"," value = Format.date(element.value, format) || false,"," min = $element.attr('min') ? Format.isoDate($element.attr('min')) : false,"," max = $element.attr('max') ? Format.isoDate($element.attr('max')) : false,"," step = false,"," result = minMax(value, min, max, step);",""," if (!result.valid) {"," result.message = formatMessage(result.message, 'date', Format.toString(min, format), Format.toString(max, format));"," }"," return result;"," },",""," email: function (element) {"," var valid = true,"," msg = $.validatr.messages.email.single,"," multiple = Support.attributes.multiple ? element.multiple : $(element).is('[multiple]');",""," if (multiple) {"," var values = element.value.split(utils.spaces);",""," $.each(values, function (i, value) {"," if (!rules.email.test(value)) {"," valid = false;"," msg = $.validatr.messages.email.multiple;"," return;"," }"," });"," } else {"," valid = rules.email.test(element.value);"," }",""," return {"," valid: valid,"," message: msg"," };"," },",""," month: function (element) {"," var $element = $(element),"," format = getFormat(element, 'month'),"," value = Format.date(element.value, format) || false,"," min = $element.attr('min') ? Format.isoDate($element.attr('min') + '01') : false,"," max = $element.attr('max') ? Format.isoDate($element.attr('max') + '01') : false,"," step = false,"," result = minMax(value, min, max, step);",""," if (!result.valid) {"," result.message = formatMessage(result.message, 'month', Format.toString(min, format), Format.toString(max, format));"," }"," return result;"," },",""," number: function (element) {"," var value = element.value.replace(',', ''),"," num = rules.number.test(value) ? parseFloat(value) : false,"," min = rules.number.test( element.getAttribute('min') ) ? parseFloat( element.getAttribute('min') ) : false,"," max = rules.number.test( element.getAttribute('max') ) ? parseFloat( element.getAttribute('max') ) : false,"," step = rules.number.test( element.getAttribute('step') ) ? parseFloat( element.getAttribute('step') ) : element.getAttribute('step') === 'any' ? 'any' : false,"," result;",""," if (step === false || step <= 0) {"," step = 1;"," }",""," result = minMax(value, min, max, step, 'number');",""," if (!result.valid) {"," result.message = formatMessage(result.message, 'number', min, max);"," }"," return result;"," },",""," pattern: function (element) {"," return {"," valid: new RegExp(element.getAttribute('pattern')).test(element.value),"," message: $.validatr.messages.pattern"," };"," },",""," radio: function (element) {"," return {"," valid: $(document.getElementsByName(element.name)).is(':checked'),"," message: $.validatr.messages.radio"," };"," },",""," range: function (element) {"," return this.number(element);"," },",""," required: function (element) {"," if (utils.boxes.test(element.type)) {"," return this[element.type](element);"," }",""," return {"," valid: !!element.value.length,"," message: element.nodeName.toLowerCase() === 'select' ? $.validatr.messages.select : $.validatr.messages.required"," };"," },",""," url: function (element) {"," return {"," valid: rules.url.test(element.value),"," message: $.validatr.messages.url"," };"," }"," };"," }()),",""," CustomTests = (function () {"," function as(element) {"," if (element.type !== 'text') {"," throw new Error('element must have a type of text');"," }",""," var type = element.getAttribute('data-as');",""," if (Tests[type]) {"," return Tests[type](element);"," }"," }",""," function match(element) {"," var value = element.getAttribute('data-match'),"," source = document.getElementById(value) || document.getElementsByName(value)[0];",""," if (!source) {"," return {"," valid: false,"," message: \"'\" + value + \"' can not be found\""," };"," }",""," $(source)"," .off('valid.validatrinput')"," .on('valid.validatrinput', function () {"," if (element.value === source.value) {"," validateElement(element);"," }"," });",""," return {"," valid: element.value === source.value,"," message: \"'\" + element.name + \"' does not equal '\" + source.name +\"'\""," };"," }",""," return {"," as: as,"," match: match"," };"," }()),",""," filters = {"," boxes: /checkbox|radio/i,"," leftright: /left|right/i,"," notInput: /select|textarea/i,"," topbottom: /top|bottom/i"," },",""," keyCodes = ["," 16, // shift"," 17, // control"," 18, // alt"," 19, // pause/break"," 20, // caps lock"," 33, // page up"," 34, // page down"," 35, // end"," 36, // home"," 37, // left arrow"," 39 //right arrow"," ],",""," theme = {"," bootstrap: 'alert alert-error',"," jqueryui: 'ui-state-error ui-corner-all'"," },",""," inlineStyles = {"," color: '#f0444d',"," backgroundColor: '#ffcbcb',"," border: '1px solid #e4a6af',"," padding: '2px 6px',"," borderRadius: '2px'"," },",""," supressError = false,",""," // Validatr"," Validatr = function () {};",""," Validatr.prototype = {"," addTest: function (name) {"," var isObject = typeof name !== 'string',"," args = Array.prototype.slice.call(arguments, 1)[0];",""," if (isObject) {"," $.extend(CustomTests, name);"," } else {"," if (!args) {"," throw new Error(\"You must include a callback function\");"," }"," CustomTests[name] = args;"," }"," },",""," getElements: function (form) {"," if (this.formElements) {"," return this.formElements;"," }",""," var elements = $(form).map(function () {"," return $.makeArray(this.elements);"," })"," .not('fieldset, button, input[type=submit], input[type=button], input[type=reset]');",""," if (form.id) {"," elements = elements.add($('[form=\"' + form.id + '\"]'));"," }",""," return elements;"," },",""," validateElement: function (element) {"," if (!element) {"," throw new Error('method requires an element');"," }",""," supressError = true;"," var valid = validateElement(element[0] || element);"," supressError = false;",""," return valid;"," },",""," validateForm: function (form) {"," var element = this.el || (form instanceof jQuery ? form[0] : form),"," valid;",""," if (element.nodeName.toLowerCase() !== 'form') {"," throw new Error('you must pass a form to this method');"," }",""," supressError = true;"," valid = validateForm(this.formElements || this.getElements(element));"," supressError = false;",""," return valid;"," }"," };",""," function init (el, options) {"," /*jshint validthis:true */",""," this.el = el;"," this.$el = $(el);",""," if (!this.$el.length || !this.$el.is('form')) {"," throw new Error('validatr' + ' needs a form to work.');"," }",""," this.isSubmit = false;"," this.firstError = false;",""," this.options = $.extend({}, $.fn.validatr.defaultOptions, options);",""," this.template = (function (options) {"," var template = $(options.template).addClass('validatr-message');",""," if (options.theme.length) {"," template.addClass(theme[options.theme] || options.theme);"," } else {"," template.css(inlineStyles);"," }",""," return template[0].outerHTML;"," }(this.options));",""," this.option = function (key, value) {"," if (!arguments.length) {"," return $.extend({}, this.options);"," }",""," if (value === undefined) {"," return this.options[key] === undefined ? null : this.options[key];"," }",""," this.options[key] = value;"," };",""," this.formElements = this.getElements(this.el)"," .on('valid.' + 'validatr', $.proxy(validElement, this))"," .on('invalid.' + 'validatr', $.proxy(invalidElement, this));",""," this.el.noValidate = true;"," this.$el.on('submit.' + 'validatr', $.proxy(submitForm, this));"," this.$el.on('reset.' + 'validatr', $.proxy(resetForm, this));"," }",""," function bindElements() {"," /*jshint validthis:true */",""," this.formElements.on({"," 'focus.validatrelement': bindEvents,"," 'blur.validatrelement': unbindEvents"," });",""," $('input[type=radio], input[type=checkbox]').on('click.validatrelement', function (e) {"," validateElement(e.target);"," });"," }",""," function unbindElements() {"," /*jshint validthis:true */",""," this.formElements.off('.validatrelement');"," }",""," function bindEvents (e) {"," var target = e.target,"," $target = $(target);",""," if (target.nodeName.toLowerCase() === 'select') {"," $target.on('change.validatrinput', function () {"," setTimeout(function () {"," validateElement(target);"," }, 1);"," });"," }",""," $target.on({"," 'blur.validatrinput': function () {"," validateElement(target);"," },"," 'keyup.validatrinput': function (event) {"," if (target.value.length && $.inArray(event.keyCode, keyCodes) === -1) {"," validateElement(target);"," }"," }"," });"," }",""," function unbindEvents(e) {"," $(e.target).off('.validatrinput');"," }",""," function validateElement(element) {"," if (element.type === 'radio') {"," var radio = $(document.getElementsByName(element.name)).filter('[required]');"," if (radio.length) {"," element = radio[0];"," }"," }",""," var $element = $(element),"," type = filters.notInput.test(element.nodeName) ? element.nodeName.toLowerCase() : element.getAttribute('type'),"," required = Support.attributes.required ? element.required : $(element).is('[required]'),"," check = {"," valid: true,"," message: ''"," };",""," if (Support.inputtypes[type]) {"," check.valid = element.validity.valid;"," check.message = element.validationMessage;"," } else {"," if (required) {"," check = Tests.required(element);"," }",""," if (check.valid && element.value.length && !filters.boxes.test(type)) {"," if (element.pattern) {"," type = 'pattern';"," }",""," if (Tests[type]) {"," check = Tests[type](element);"," }"," }"," }",""," if (check.valid) {"," for (var test in CustomTests) {"," if (CustomTests.hasOwnProperty(test) && $element.is('[data-' + test + ']')) {"," check = CustomTests[test](element);"," if (!check.valid) {"," break;"," }"," }"," }"," }",""," if (check.valid) {"," $element.trigger('valid');"," return true;"," }",""," $.data(element, 'validationMessage', check.message);"," $element.trigger('invalid');",""," return false;"," }",""," function validateForm (elements) {"," var valid = true;",""," elements.each(function (i, element) {"," if (!validateElement(element)) {"," valid = false;"," }"," });",""," return valid;"," }",""," function submitForm() {"," /*jshint validthis:true */",""," this.isSubmit = true;"," resetForm.call(this);"," var valid = validateForm(this.formElements);",""," if (valid) {"," return this.options.valid.call(this.el, this.el);"," } else {"," bindElements.call(this);"," }",""," this.isSubmit = false;"," return valid;"," }",""," function resetForm() {"," /*jshint validthis:true */",""," unbindElements.call(this);"," this.firstError = false;"," this.formElements.next('.validatr-message').remove();"," }",""," function invalidElement(e) {"," /*jshint validthis:true */",""," if (supressError) {"," return;"," }",""," e.preventDefault();",""," var target = e.target,"," $target = $(target),"," options = this.options,"," msg = target.getAttribute('data-message') || $.data(target, 'validationMessage'),"," error = $(this.template.replace('{{message}}', msg));","",""," if (this.isSubmit && !this.firstError) {"," this.firstError = $target.after(error);"," options.position.call(this, error, $target);"," return;"," }",""," if (!this.isSubmit || options.showall) {"," validElement(e);"," $target.after(error);"," options.position.call(this, error, $target);"," }"," }",""," function validElement(e) {"," if (supressError) {"," return;"," }",""," $(e.target).next('.validatr-message').remove();"," }",""," function position(error, $target) {"," /*jshint validthis:true */"," error.css('position', 'absolute');",""," var offset = $target.offset(),"," location = $target[0].getAttribute('data-location') || this.options.location;",""," if (filters.topbottom.test(location)) {"," error.offset({left: offset.left});",""," if (location === 'top') {"," error.offset({top: offset.top - error.outerHeight() - 2});"," }",""," if (location === 'bottom') {"," error.offset({top: offset.top + error.outerHeight()});"," }"," } else if (filters.leftright.test(location)) {"," error.offset({top: (offset.top + $target.outerHeight() / 2) - (error.outerHeight() / 2)});",""," if (location === 'left') {"," error.offset({left: offset.left - error.outerWidth() - 2});"," }",""," if (location === 'right') {"," error.offset({left: offset.left + $target.outerWidth() + 2});"," }"," }"," }",""," /*! Inspired by jQuery UI - v1.9.2 - 2012-12-04"," * http://jqueryui.com"," * Copyright (c) 2012 jQuery Foundation and other contributors Licensed MIT"," */"," $.fn.validatr = function(options) {"," var isMethod = typeof options === 'string',"," args = Array.prototype.slice.call(arguments, 1),"," returnValue = this,"," instance;",""," if (isMethod) {"," this.each(function() {"," var methodValue;",""," instance = $.data(this, 'validatr');"," if (!instance) {"," throw new Error(\"cannot call methods on validatr prior to initialization; attempted to call method '\" + options + \"'\" );"," }"," if (!$.isFunction(instance[options])) {"," throw new Error( \"no such method '\" + options + \"' for validatr instance\" );"," }",""," methodValue = instance[options].apply(instance, args);"," if (methodValue !== instance && methodValue !== undefined) {"," returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue;"," return false;"," }"," });"," } else {"," var widget;"," this.each(function() {"," instance = $.data(this, 'validatr');"," if (!instance) {"," widget = new Validatr();"," init.call(widget, this, options || {});"," $.data(this, 'validatr', widget);"," }"," });"," }",""," return returnValue;"," };",""," $.fn.validatr.defaultOptions = {"," dateFormat: 'yyyy-mm-d',"," location: 'right',"," monthFormat: 'yyyy-mm',"," position: position,"," showall: false,"," template: '