(function(n,t){"function"==typeof define&&define.amd?define(t):"object"==typeof module&&module.exports?module.exports=t():n.H5F=t()})(this,function(){var w,b,k,r,n,d,h,c,t,g,l,nt,a,tt,v,o,ft,s,i,it,rt,y,e,f,u,ut,et=document,p=et.createElement("input"),ot=/^[a-zA-Z0-9.!#$%&'*+-\/=?\^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,st=/[a-z][\-\.+a-z]*:\/\//i,ht=/^(input|select|textarea)$/i;return d=function(t,i){var o=!t.nodeType||!1,f={validClass:"valid",invalidClass:"error",requiredClass:"required",placeholderClass:"placeholder",onSubmit:Function.prototype,onInvalid:Function.prototype},r,u,e;if("object"==typeof i)for(r in f)i[r]===void 0&&(i[r]=f[r]);if(n=i||f,o)for(u=0,e=t.length;e>u;u++)h(t[u]);else h(t)},h=function(r){var e,u=r.elements,f=u.length,o=!!r.attributes.novalidate;if(i(r,"invalid",t,!0),i(r,"blur",t,!0),i(r,"input",t,!0),i(r,"keyup",t,!0),i(r,"focus",t,!0),i(r,"change",t,!0),i(r,"click",g,!0),i(r,"submit",function(t){return w=!0,b||o||r.checkValidity()?(n.onSubmit.call(r,t),void 0):(rt(t),void 0)},!1),!a())for(r.checkValidity=function(){return l(r)};f--;)e=!!u[f].attributes.required,"fieldset"!==u[f].nodeName.toLowerCase()&&c(u[f])},c=function(n){var t=n,u=s(t),i={type:t.getAttribute("type"),pattern:t.getAttribute("pattern"),placeholder:t.getAttribute("placeholder")},y=/^(email|url)$/i.test(i.type)?i.type:i.pattern?i.pattern:!1,f=tt(t,y),e=o(t,"step"),h=o(t,"min"),c=o(t,"max"),a=!(""===t.validationMessage||void 0===t.validationMessage);t.checkValidity=function(){return l.call(this,t)};t.setCustomValidity=function(n){nt.call(t,n)};t.validity={valueMissing:u,patternMismatch:f,rangeUnderflow:h,rangeOverflow:c,stepMismatch:e,customError:a,valid:!(u||f||e||h||c||a)};i.placeholder&&!/^(input|keyup)$/i.test(r)&&v(t)},t=function(i){var u=y(i)||i,o=/^(submit|image|button|reset)$/i,s=!0;!ht.test(u.nodeName)||o.test(u.type)||o.test(u.nodeName)||(r=i.type,a()||c(u),u.validity.valid&&(""!==u.value||/^(checkbox|radio)$/i.test(u.type))||u.value!==u.getAttribute("placeholder")&&u.validity.valid?(f(u,[n.invalidClass,n.requiredClass]),e(u,n.validClass)):/^(input|keyup|focusin|focus|change)$/i.test(r)?u.validity.valueMissing&&f(u,[n.requiredClass,n.invalidClass,n.validClass]):u.validity.valueMissing?(f(u,[n.invalidClass,n.validClass]),e(u,n.requiredClass)):u.validity.valid||(f(u,[n.validClass,n.requiredClass]),e(u,n.invalidClass)),"input"===r&&s&&(it(u.form,"keyup",t,!0),s=!1))},l=function(i){var f,r,s,e,h,o=!1,u,c;if("form"===i.nodeName.toLowerCase()){for(f=i.elements,u=0,c=f.length;c>u;u++)r=f[u],s=!!r.attributes.disabled,e=!!r.attributes.required,h=!!r.attributes.pattern,"fieldset"!==r.nodeName.toLowerCase()&&!s&&(e||h&&e)&&(t(r),r.validity.valid||o||(w&&r.focus(),o=!0,n.onInvalid.call(i,r)));return!o}return t(i),i.validity.valid},nt=function(n){var t=this;t.validationMessage=n},g=function(n){var t=y(n);t.attributes.formnovalidate&&"submit"===t.type&&(b=!0)},a=function(){return u(p,"validity")&&u(p,"checkValidity")},tt=function(n,t){if("email"===t)return!ot.test(n.value);if("url"===t)return!st.test(n.value);if(t){var r=n.getAttribute("placeholder"),i=n.value;return k=RegExp("^(?:"+t+")$"),i===r?!1:""===i?!1:!k.test(n.value)}return!1},v=function(t){var u={placeholder:t.getAttribute("placeholder")},o=/^(focus|focusin|submit)$/i,s=!!("placeholder"in p);s||!/^(input|textarea)$/i.test(t.nodeName)||/^password$/i.test(t.type)||(""!==t.value||o.test(r)?t.value===u.placeholder&&o.test(r)&&(t.value="",f(t,n.placeholderClass)):(t.value=u.placeholder,i(t.form,"submit",function(){r="submit";v(t)},!0),e(t,n.placeholderClass)))},o=function(n,t){var r=parseInt(n.getAttribute("min"),10)||0,u=parseInt(n.getAttribute("max"),10)||!1,f=parseInt(n.getAttribute("step"),10)||1,i=parseInt(n.value,10),e=(i-r)%f;return s(n)||isNaN(i)?"number"===n.getAttribute("type")?!0:!1:"step"===t?n.getAttribute("step")?0!==e:!1:"min"===t?n.getAttribute("min")?r>i:!1:"max"===t?n.getAttribute("max")?i>u:!1:void 0},ft=function(n){var t=!!n.attributes.required;return t?s(n):!1},s=function(n){var t=n.getAttribute("placeholder"),i=!!n.attributes.required;return!(!i||""!==n.value&&n.value!==t&&(!/^(checkbox|radio)$/i.test(n.type)||ut(n)))},i=function(n,t,i,r){u(window,"addEventListener")?n.addEventListener(t,i,r):u(window,"attachEvent")&&window.event!==void 0&&("blur"===t?t="focusout":"focus"===t&&(t="focusin"),n.attachEvent("on"+t,i))},it=function(n,t,i,r){u(window,"removeEventListener")?n.removeEventListener(t,i,r):u(window,"detachEvent")&&window.event!==void 0&&n.detachEvent("on"+t,i)},rt=function(n){n=n||window.event;n.stopPropagation&&n.preventDefault?(n.stopPropagation(),n.preventDefault()):(n.cancelBubble=!0,n.returnValue=!1)},y=function(n){return n=n||window.event,n.target||n.srcElement},e=function(n,t){var i;n.className?(i=RegExp("(^|\\s)"+t+"(\\s|$)"),i.test(n.className)||(n.className+=" "+t)):n.className=t},f=function(n,t){var r,i,u="object"==typeof t?t.length:1,f=u;if(n.className)if(n.className===t)n.className="";else for(;u--;)r=RegExp("(^|\\s)"+(f>1?t[u]:t)+"(\\s|$)"),i=n.className.match(r),i&&3===i.length&&(n.className=n.className.replace(r,i[1]&&i[2]?" ":""))},u=function(n,t){var i=typeof n[t],r=RegExp("^function|object$","i");return!!(r.test(i)&&n[t]||"unknown"===i)},ut=function(n){for(var i=document.getElementsByName(n.name),t=0;i.length>t;t++)if(i[t].checked)return!0;return!1},{setup:d}})