'+wc_add_to_cart_params.i18n_view_cart+""),o(document.body).trigger("wc_cart_button_updated",[e]))},t.prototype.updateFragments=function(t,a){a&&(o.each(a,function(t){o(t).addClass("updating").fadeTo("400","0.6").block({message:null,overlayCSS:{opacity:.6}})}),o.each(a,function(t,a){o(t).replaceWith(a),o(t).stop(!0).css("opacity","1").unblock()}),o(document.body).trigger("wc_fragments_loaded"))},new t});
(function(){}());
jQuery(function(){
jQuery(":input")
.on("focus", function(){
var input=jQuery(this);
var inputID=input.attr("id")||"(no input ID)";
var inputName=input.attr("name")||"(no input name)";
var inputClass=input.attr("class")||"(no input class)";
var form=jQuery(this.form);
var formID=form.attr("id")||"(no form ID)";
var formName=form.attr("name")||"(no form name)";
var formClass=form.attr("class")||"(no form class)";
window[ gtm4wp_datalayer_name ].push({
'event':'gtm4wp.formElementEnter',
'inputID':inputID,
'inputName':inputName,
'inputClass': inputClass,
'formID':formID,
'formName':formName,
'formClass': formClass
});
})
.on("blur", function(){
var input=jQuery(this);
var inputID=input.attr("id")||"(no input ID)";
var inputName=input.attr("name")||"(no input name)";
var inputClass=input.attr("class")||"(no input class)";
var form=jQuery(this.form);
var formID=form.attr("id")||"(no form ID)";
var formName=form.attr("name")||"(no form name)";
var formClass=form.attr("class")||"(no form class)";
window[ gtm4wp_datalayer_name ].push({
'event':'gtm4wp.formElementLeave',
'inputID':inputID,
'inputName':inputName,
'inputClass': inputClass,
'formID':formID,
'formName':formName,
'formClass': formClass
});
});
});
window.jQuery(document).ready(function($){
$('body').on('adding_to_cart', function(event, $button, data){
$button&&$button.hasClass('vc_gitem-link')&&$button
.addClass('vc-gitem-add-to-cart-loading-btn')
.parents('.vc_grid-item-mini')
.addClass('vc-woocommerce-add-to-cart-loading')
.append($(''));
}).on('added_to_cart', function(event, fragments, cart_hash, $button){
if('undefined'===typeof($button)){
$button=$('.vc-gitem-add-to-cart-loading-btn');
}
$button&&$button.hasClass('vc_gitem-link')&&$button
.removeClass('vc-gitem-add-to-cart-loading-btn')
.parents('.vc_grid-item-mini')
.removeClass('vc-woocommerce-add-to-cart-loading')
.find('.vc_wc-load-add-to-loader-wrapper').remove();
});
});
var jqobjPrime=null;
var show_error_combined=true;
var lv_offset=function(currentOffset){
return currentOffset;
};
var LiveValidation=function(element, optionsObj){
this.initialize(element, optionsObj);
}
function checkDay(day, month, year){
var valid=false;
if(day >=1){
if((month==4||month==6||month==9||month==11)&&day <=30){
valid=true;
}
if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day <=31){
valid=true;
}
if(month==2){
if(day <=28){
valid=true;
}else if(day==29){
if((year % 4==0&&year % 100!=0)||year % 400==0){
valid=true;
}}
}}
return valid;
}
LiveValidation.VERSION='1.4 standalone';
LiveValidation.TEXTAREA=1;
LiveValidation.TEXT=2;
LiveValidation.PASSWORD=3;
LiveValidation.CHECKBOX=4;
LiveValidation.SELECT=5;
LiveValidation.FILE=6;
LiveValidation.CHECKBOX_GF=9;
LiveValidation.RADIO=7;
LiveValidation.massValidate=function(validations){
var returnValue=true;
for (var i=0, len=validations.length; i < len; ++i){
var valid=validations[i].validate();
if(returnValue)
returnValue=valid;
}
return returnValue;
}
function hasClass(element, cls){
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
LiveValidation.prototype={
validClass: 'LV_valid',
invalidClass: 'LV_invalid',
messageClass: 'LV_validation_message',
validFieldClass: 'LV_valid_field',
invalidFieldClass: 'LV_invalid_field',
initialize: function(element, optionsObj){
var self=this;
if(!element)
throw new Error("LiveValidation::initialize - No element reference or element id has been provided!");
this.element=element.nodeName ? element:document.getElementById(element);
if(!this.element)
throw new Error("LiveValidation::initialize - No element with reference or id of '" + element + "' exists!");
this.validations=[];
this.elementType=this.getElementType();
this.form=this.element.form;
var options=optionsObj||{};
if(options.jqObj&&!jqobjPrime){
jqobjPrime=options.jqObj;
}
this.fieldType=options.fieldType;
if(typeof this.form=="undefined"){
var Forms=jqobjPrime(this.element).parents("form");
this.form=Forms[0];
}
this.element.onfocus=function(e){
var elems=document.getElementsByClassName("LV_validation_message");
if(elems.length > 0){
for (var i=0; i < elems.length; i++){
var classes=elems[i].className;
elems[i].className=classes + " hide_validation";
}}
if(!jqobjPrime(this).hasClass("hasDatepicker")){
e.target.className.replace(/\bhide_validation\b/, '');
}}
this.validMessage=options.validMessage||" ";
var node=options.insertAfterWhatNode||this.element;
this.insertAfterWhatNode=node.nodeType ? node:document.getElementById(node);
this.onlyOnBlur=options.onlyOnBlur||false;
this.wait=options.wait||0;
this.onlyOnSubmit=options.onlyOnSubmit||false;
this.beforeValidation=options.beforeValidation||function(){
};
this.beforeValid=options.beforeValid||function(){
};
this.onValid=options.onValid||function(){
this.insertMessage(this.createMessageSpan());
this.addFieldClass();
};
this.afterValid=options.afterValid||function(){
};
this.beforeInvalid=options.beforeInvalid||function(){
};
this.onInvalid=options.onInvalid||function(){
this.insertMessage(this.createMessageSpan());
this.addFieldClass();
};
this.afterInvalid=options.afterInvalid||function(){
};
this.afterValidation=options.afterValidation||function(){
};
if(this.form){
this.formObj=LiveValidationForm.getInstance(this.form);
this.formObj.addField(this);
}
this.oldOnFocus=this.element.onfocus||function(){
};
this.oldOnBlur=this.element.onblur||function(){
};
if(this.fieldType=="checkbox"){
this.oldOnClick_check={};
var radioUL=this.element;
var len=radioUL.childNodes.length;
for (var i=0; i < radioUL.childNodes.length; i++){
this.oldOnClick_check[radioUL.childNodes[i].querySelector('input').id]=(radioUL.childNodes[i].querySelector('input').onclick||function(){
});
}}else{
this.oldOnClick_check=[];
this.oldOnClick=this.element.onclick||function(){
};}
this.oldOnChange=this.element.onchange||function(){
};
this.oldOnKeyup=this.element.onkeyup||function(){
};
this.element.onfocus=function(e){
self.doOnFocus(e);
jqobjPrime(document).trigger("lv_field_on_focus", e);
return self.oldOnFocus.call(this, e);
}
if(!this.onlyOnSubmit){
switch (this.elementType){
case LiveValidation.CHECKBOX_GF:
var radioUL=this.element;
var len=radioUL.childNodes.length;
for (var i=0; i < radioUL.childNodes.length; i++){
radioUL.childNodes[i].querySelector('input').onclick=function(e, i){
self.validate();
return self.oldOnClick_check[this.id].call(this, e);
}
radioUL.childNodes[i].querySelector('input').onblur=function(e){
return self.doOnBlur(e);
}
radioUL.childNodes[i].querySelector('input').onfocus=function(e){
self.doOnFocus(e);
jqobjPrime(document).trigger("lv_field_on_focus", e);
return self.oldOnFocus.call(this, e);
}}
break;
case LiveValidation.CHECKBOX:
case LiveValidation.RADIO:
case LiveValidation.SELECT:
this.element.onblur=function(e){
if(hasSubFields.indexOf(self.fieldType)==-1){
return self.doOnBlur(e);
}else{
var elemLI=jqobjPrime(self.element).parents("li.gfield");
elemLI.find("input , select").each(function(k, v){
var str=jQuery(this).attr("id");
var getConfig=str.split("_");
var separator='input_' + getConfig[1] + "_";
var get_match=str.split(separator).pop();
if(typeof all_validations[getConfig[1]][getConfig[2] + "_" + getConfig[3]]!=="undefined"){
all_validations[getConfig[1]][getConfig[2] + "_" + getConfig[3]].validate();
}});
}}
break;
case LiveValidation.FILE:
this.element.onchange=function(e){
self.validate();
return self.oldOnChange.call(this, e);
}
break;
default:
this.element.onblur=function(e){
if(hasSubFields.indexOf(self.fieldType)==-1){
return self.doOnBlur(e);
}else{
var elemLI=jqobjPrime(self.element).parents("li.gfield");
elemLI.find("input , select").each(function(k, v){
var str=jQuery(this).attr("id");
var getConfig=str.split("_");
var separator='input_' + getConfig[1] + "_";
var get_match=str.split(separator).pop();
if(typeof all_validations[getConfig[1]]!=="undefined"&&typeof all_validations[getConfig[1]][getConfig[2] + "_" + getConfig[3]]!=="undefined"){
all_validations[getConfig[1]][getConfig[2] + "_" + getConfig[3]].validate();
}});
}}
}}
},
destroy: function(){
if(this.formObj){
this.formObj.removeField(this);
this.formObj.destroy();
}
this.element.onfocus=this.oldOnFocus;
if(!this.onlyOnSubmit){
switch (this.elementType){
case LiveValidation.CHECKBOX:
this.element.onclick=this.oldOnClick;
case LiveValidation.SELECT:
case LiveValidation.FILE:
this.element.onchange=this.oldOnChange;
break;
default:
if(!this.onlyOnBlur)
this.element.onkeyup=this.oldOnKeyup;
this.element.onblur=this.oldOnBlur;
}}
this.validations=[];
this.removeMessageAndFieldClass();
},
add: function(validationFunction, validationParamsObj){
this.validations.push({
type: validationFunction,
params: validationParamsObj||{}});
return this;
},
remove: function(validationFunction, validationParamsObj){
var victimless=[];
for (var i=0, len=this.validations.length; i < len; i++){
var v=this.validations[i];
if(v.type!=validationFunction&&v.params!=validationParamsObj)
victimless.push(v);
}
this.validations=victimless;
return this;
},
deferValidation: function(e){
if(this.wait >=300)
this.removeMessageAndFieldClass();
var self=this;
if(this.timeout)
clearTimeout(self.timeout);
this.timeout=setTimeout(function(){
self.validate()
}, self.wait);
},
doOnBlur: function(e){
this.focused=false;
this.validate(e);
},
doOnFocus: function(e){
this.focused=true;
this.removeMessageAndFieldClass();
},
getElementType: function(){
var nn=this.element.nodeName.toUpperCase();
var nt=this.element.type.toUpperCase();
switch (true){
case (nn=='TEXTAREA'):
return LiveValidation.TEXTAREA;
case (nn=='INPUT'&&nt=='TEXT'):
return LiveValidation.TEXT;
case (nn=='INPUT'&&nt=='EMAIL'):
return LiveValidation.TEXT;
case (nn=='INPUT'&&nt=='URL'):
return LiveValidation.TEXT;
case (nn=='INPUT'&&nt=='TEL'):
return LiveValidation.TEXT;
case (nn=='INPUT'&&nt=='NUMBER'):
return LiveValidation.TEXT;
case (nn=='INPUT'&&nt=='PASSWORD'):
return LiveValidation.PASSWORD;
case (nn=='INPUT'&&nt=='CHECKBOX'):
return LiveValidation.CHECKBOX;
case (nn=='INPUT'&&nt=='RADIO'):
return LiveValidation.RADIO;
case (nn=='INPUT'&&nt=='FILE'):
return LiveValidation.FILE;
case (nn=='SELECT'):
return LiveValidation.SELECT;
case (nn=='UL'):
return LiveValidation.CHECKBOX_GF;
case (nn=='INPUT'):
throw new Error('LiveValidation::getElementType - Cannot use LiveValidation on an ' + nt.toLowerCase() + ' input!');
default:
throw new Error('LiveValidation::getElementType - Element must be an input, select, or textarea - ' + nn.toLowerCase() + ' was given!');
}},
doValidations: function(){
this.validationFailed=false;
for (var i=0, len=this.validations.length; i < len; ++i){
this.validationFailed = !this.validateElement(this.validations[i].type, this.validations[i].params);
if(this.validationFailed)
return false;
}
this.message=this.validMessage;
return true;
},
validateElement: function(validationFunction, validationParamsObj){
switch (validationFunction){
case Validate.Presence:
case Validate.Confirmation:
case Validate.Acceptance:
this.displayMessageWhenEmpty=true;
break;
case Validate.Custom:
if(validationParamsObj.displayMessageWhenEmpty)
this.displayMessageWhenEmpty=true;
break;
}
if(this.elementType==LiveValidation.RADIO){
value=this.element.checked;
}else{
if(this.element.selectedIndex==-1&&this.elementType==LiveValidation.SELECT){
var value="";
}else{
var value=(this.elementType==LiveValidation.SELECT) ? this.element.options[this.element.selectedIndex].value:this.element.value;
}
if(validationFunction==Validate.Acceptance||validationFunction==Validate.AcceptanceCheckbox){
if(this.elementType!=LiveValidation.CHECKBOX)
throw new Error('LiveValidation::validateElement - Element to validate acceptance must be a checkbox!');
value=this.element.checked;
}}
var isValid=true;
try {
validationFunction(value, validationParamsObj);
} catch (error){
if(error instanceof Validate.Error){
if(value!==''||(value===''&&this.displayMessageWhenEmpty)){
this.validationFailed=true;
this.message=error.message.split('\n')[0];
isValid=false;
}}else{
throw error;
}} finally {
return isValid;
}},
validate: function(){
if(!this.checkIfDisable(this.element)){
this.beforeValidation();
var isValid=this.doValidations();
if(isValid){
this.beforeValid();
this.onValid();
this.afterValid(this.element);
return true;
}else{
this.beforeInvalid();
this.onInvalid();
this.afterInvalid(this.element);
return false;
}
this.afterValidation();
}else{
return true;
}},
enable: function(){
this.element.removeAttribute("data-disabled");
return this;
},
disable: function(){
this.element.setAttribute("data-disabled", "yes");
this.removeMessageAndFieldClass();
return this;
},
checkIfDisable: function(element){
if(element.hasAttribute("data-disabled")){
return true;
}
return false;
},
createMessageSpan: function(){
var span=document.createElement('span');
var textNode=document.createTextNode(this.message);
span.appendChild(textNode);
return span;
},
insertMessage: function(elementToInsert){
this.removeMessage();
if(!this.validationFailed&&!this.validMessage)
return;
if((this.displayMessageWhenEmpty
&& (this.elementType==LiveValidation.CHECKBOX||this.element.value==''))
|| this.element.value!=''){
var className=this.validationFailed ? this.invalidClass:this.validClass;
elementToInsert.className +=' ' + this.messageClass + ' ' + className;
var parent=this.insertAfterWhatNode.parentNode;
if(this.insertAfterWhatNode.nextSibling){
parent.insertBefore(elementToInsert, this.insertAfterWhatNode.nextSibling);
}else{
parent.appendChild(elementToInsert);
}}
},
addFieldClass: function(){
this.removeFieldClass();
if(!this.validationFailed){
if(this.displayMessageWhenEmpty||this.element.value!=''){
if(this.element.className.indexOf(this.validFieldClass)==-1)
this.element.className +=' ' + this.validFieldClass;
}}else{
if(this.element.className.indexOf(this.invalidFieldClass)==-1)
this.element.className +=' ' + this.invalidFieldClass;
}},
removeMessage: function(){
var nextEl;
var el=this.insertAfterWhatNode;
while (el.nextSibling){
if(el.nextSibling.nodeType===1){
nextEl=el.nextSibling;
break;
}
el=el.nextSibling;
}
if(nextEl&&nextEl.className.indexOf(this.messageClass)!=-1)
this.insertAfterWhatNode.parentNode.removeChild(nextEl);
},
removeFieldClass: function(){
var cn=this.element.className;
if(cn.indexOf(this.invalidFieldClass)!=-1)
this.element.className=cn.split(this.invalidFieldClass).join('');
if(cn.indexOf(this.validFieldClass)!=-1)
this.element.className=cn.split(this.validFieldClass).join(' ');
},
removeMessageAndFieldClass: function(){
this.removeMessage();
this.removeFieldClass();
}}
var LiveValidationForm=function(element){
this.initialize(element);
}
LiveValidationForm.instances={};
LiveValidationForm.getInstance=function(element){
if(!element)
throw new Error("LiveValidationForm::getInstance - No element reference or element id has been provided!");
var el=element.nodeName ? element:document.getElementById(element);
var rand=Math.random() * Math.random();
if(!el.id)
el.id='formId_' + rand.toString().replace(/\./, '') + new Date().valueOf();
if(!LiveValidationForm.instances[el.id])
LiveValidationForm.instances[el.id]=new LiveValidationForm(el);
return LiveValidationForm.instances[el.id];
}
LiveValidationForm.prototype={
beforeValidation: function(){
},
onValid: function(){
},
onInvalid: function(){
},
afterValidation: function(){
},
initialize: function(element){
this.name=element.id;
this.element=element;
this.fields=[];
this.oldOnSubmit=this.element.onsubmit||function(){
};
var self=this;
this.element.setAttribute("onsubmit", "return false;");
var submitbutton=jQuery(this.element).find(':submit').attr('id');
this.element.onsubmit=function(e){
var moveTo=0;
var elem_form=e.currentTarget;
if("undefined"===typeof elem_form){
return true;
}
if(hasClass(elem_form, "back_bt_press")){
return true;
}
if(hasClass(elem_form, "save_bt_press")){
return true;
}
var ret=false;
self.beforeValidation(),
self.valid=LiveValidation.massValidate(self.fields);
self.valid ? self.onValid():self.onInvalid();
self.afterValidation();
if(self.valid)
ret=self.oldOnSubmit.call(this, e||window.event)!==false;
var parent=document.querySelector(".gform_body");
var child=document.querySelector(".errorMessages");
if(child){
parent.removeChild(child);
}
if(show_error_combined==true){
var d=document.getElementsByClassName("LV_invalid_field");
if(d.length > 0){
var formIDConfig=self.name.split("_");
var ul=document.createElement('ul');
var section=document.querySelector(".gform_body");
ul.className="errorMessages";
var contain_names=new Array();
var containe_checks=new Array();
section.insertBefore(ul, section.firstChild);
for (var i=0; i < d.length; i++){
var ID=d[i].id;
if(contain_names.indexOf(d[i].name)==-1){
contain_names.push(d[i].name);
}else{
continue;
}
if(d[i].type=="checkbox"){
var a=d[i].name;
var name=a.split(".")[0];
if(containe_checks.indexOf(name)==-1){
containe_checks.push(name);
}else{
continue;
}}
if(d[i].tagName=="UL"){
continue;
}
var error_message_elem=d[i].nextSibling;
var label_elem=document.querySelector(".gfield_label[for='" + ID + "']");
if(!label_elem){
label_elem=document.getElementById(ID + "_label");
}
if(!label_elem){
label_elem=document.querySelector("label[for='" + ID + "']");
}
if(d[i].type=="radio"){
var get_mainLI="field_" + formIDConfig[1] + "_" + d[i].name.substr(6);
label_elem=document.querySelector("#" + get_mainLI + " .gfield_label");
}
if(d[i].type=="checkbox"){
var a=d[i].name;
var name=a.split(".")[0];
var get_mainLI="field_" + formIDConfig[1] + "_" + name.substr(6);
label_elem=document.querySelector("#" + get_mainLI + " .gfield_label");
}
var li_elem=label_elem.parentNode;
if(moveTo==0){
moveTo=jqobjPrime(li_elem).offset().top;
}
var li=document.createElement('li');
if(label_elem&&error_message_elem){
var error_message_text=(error_message_elem.textContent||error_message_elem.innerText);
var label_text1=(label_elem.textContent||label_elem.innerText);
if(label_text1==""||label_text1=="*"){
label_elem=document.querySelector("#" + ID + "_container label[for='" + ID + "']");
var label_text1=(label_elem.textContent||label_elem.innerText);
}
li.innerHTML="" + label_text1 + " " + error_message_text + " ";
}}
var ul_j=jqobjPrime('.errorMessages');
moveTo=window.lv_offset(moveTo);
jqobjPrime('body,html').animate({
scrollTop: moveTo
}, 500);
}
var elems=document.getElementsByClassName("LV_validation_message");
}
var getFormIDconfig=self.name.split("_");
if(false===ret){
window['gf_submitting_' + getFormIDconfig[1]]=false;
}
if(!ret){
if(lv_gf_is_ajax=="yes"){
jqobjPrime(".gform_ajax_spinner").remove();
}
return ret;
}}
},
addField: function(newField){
this.fields.push(newField);
},
removeField: function(victim){
var victimless=[];
for (var i=0, len=this.fields.length; i < len; i++){
if(this.fields[i]!==victim)
victimless.push(this.fields[i]);
}
this.fields=victimless;
},
destroy: function(force){
if(this.fields.length!=0&&!force)
return false;
this.element.onsubmit=this.oldOnSubmit;
LiveValidationForm.instances[this.name]=null;
return true;
}}
var Validate={
Presence: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Can't be empty!";
if(typeof paramsObj.mask!=="undefined"){
if(paramsObj.mask==value){
Validate.fail(message);
}else{
setTimeout(function(){
if(!hasClass(all_validations[paramsObj.form_id][paramsObj.livevalidkey].element, "LV_invalid_field")){
all_validations[paramsObj.form_id][paramsObj.livevalidkey].validate();
}}, 300);
}}
if(value===''||value===null||value===undefined||value=="First Name"||value=="Last Name"||value=="Middle Name")
Validate.fail(message);
return true;
},
Numericality: function(value, paramsObj){
var suppliedValue=value;
var value=Number(value);
var paramsObj=paramsObj||{};
var minimum=((paramsObj.minimum)||(paramsObj.minimum==0)) ? paramsObj.minimum:null;
;
var maximum=((paramsObj.maximum)||(paramsObj.maximum==0)) ? paramsObj.maximum:null;
var is=((paramsObj.is)||(paramsObj.is==0)) ? paramsObj.is:null;
var notANumberMessage=paramsObj.notANumberMessage||"Must be a number!";
var notAnIntegerMessage=paramsObj.notAnIntegerMessage||"Must be an integer!";
var wrongNumberMessage=paramsObj.wrongNumberMessage||"Must be " + is + "!";
var tooLowMessage=paramsObj.tooLowMessage||"Must not be less than " + minimum + "!";
var tooHighMessage=paramsObj.tooHighMessage||"Must not be more than " + maximum + "!";
if(!isFinite(value))
Validate.fail(notANumberMessage);
if(paramsObj.onlyInteger&&(/\.0+$|\.$/.test(String(suppliedValue))||value!=parseInt(value)))
Validate.fail(notAnIntegerMessage);
switch (true){
case (is!==null):
if(value!=Number(is))
Validate.fail(wrongNumberMessage);
break;
case (minimum!==null&&maximum!==null):
Validate.Numericality(value, {
tooLowMessage: tooLowMessage,
minimum: minimum
});
Validate.Numericality(value, {
tooHighMessage: tooHighMessage,
maximum: maximum
});
break;
case (minimum!==null):
if(value < Number(minimum))
Validate.fail(tooLowMessage);
break;
case (maximum!==null):
if(value > Number(maximum))
Validate.fail(tooHighMessage);
break;
}
return true;
},
Format: function(value, paramsObj){
var value=String(value);
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Looks like an invalid pattern.";
var pattern=paramsObj.pattern||/./;
var negate=paramsObj.negate||false;
var patternRes=pattern.test(value);
if(!negate&&!patternRes){
Validate.fail(message);
}
if(negate&&patternRes){
Validate.fail(message);
}
return true;
},
Email: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be a valid email address!";
Validate.Format(value, {
failureMessage: message,
pattern: /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i
});
return true;
},
Website: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be a valid url!";
Validate.Format(value, {
failureMessage: message,
pattern: /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
});
return true;
},
Name: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"only characters!";
Validate.Format(value, {
failureMessage: message,
pattern: /^[a-zA-Z]*$/
});
return true;
},
Phone: function(value, paramsObj){
var paramsObj=paramsObj||{};
var formate=paramsObj.phoneFormate||"";
if(formate=='standard'){
var message=paramsObj.failureMessage||"Phone format:(###)###-####";
var phonefield=paramsObj.phonefield;
var newnumber="";
for (place=0; place <=value.length; place++)
newnumber=newnumber + value.charAt(place).replace(/\D*/, '');
if(newnumber.length==10){
return true;
}
else if(newnumber.length==0){
Validate.fail(message);
return false;
}else{
Validate.fail(message);
return false;
}}else{
var message=paramsObj.failureMessage||"only numbers!";
Validate.Format(value, {
failureMessage: message,
pattern: /^[0-9()-]*$/
});
}
return true;
},
Length: function(value, paramsObj){
var value=String(value);
var paramsObj=paramsObj||{};
var minimum=((paramsObj.minimum)||(paramsObj.minimum==0)) ? paramsObj.minimum:null;
var maximum=((paramsObj.maximum)||(paramsObj.maximum==0)) ? paramsObj.maximum:null;
var is=((paramsObj.is)||(paramsObj.is==0)) ? paramsObj.is:null;
var wrongLengthMessage=paramsObj.wrongLengthMessage||"Must be " + is + " characters long!";
var tooShortMessage=paramsObj.tooShortMessage||"Must not be less than " + minimum + " characters long!";
var tooLongMessage=paramsObj.tooLongMessage||"Must not be more than " + maximum + " characters long!";
switch (true){
case (is!==null):
if(value.length!=Number(is))
Validate.fail(wrongLengthMessage);
break;
case (minimum!==null&&maximum!==null):
Validate.Length(value, {
tooShortMessage: tooShortMessage,
minimum: minimum
});
Validate.Length(value, {
tooLongMessage: tooLongMessage,
maximum: maximum
});
break;
case (minimum!==null):
if(value.length < Number(minimum))
Validate.fail(tooShortMessage);
break;
case (maximum!==null):
if(value.length > Number(maximum))
Validate.fail(tooLongMessage);
break;
default:
throw new Error("Validate::Length - Length(s) to validate against must be provided!");
}
return true;
},
Inclusion: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be included in the list!";
var caseSensitive=(paramsObj.caseSensitive===false) ? false:true;
if(paramsObj.allowNull&&value==null)
return true;
if(!paramsObj.allowNull&&value==null)
Validate.fail(message);
var within=paramsObj.within||[];
if(!caseSensitive){
var lowerWithin=[];
for (var j=0, length=within.length; j < length; ++j){
var item=within[j];
if(typeof item=='string')
item=item.toLowerCase();
lowerWithin.push(item);
}
within=lowerWithin;
if(typeof value=='string')
value=value.toLowerCase();
}
var found=false;
for (var i=0, length=within.length; i < length; ++i){
if(within[i]==value)
found=true;
if(paramsObj.partialMatch){
if(value.indexOf(within[i])!=-1)
found=true;
}}
if((!paramsObj.negate&&!found)||(paramsObj.negate&&found))
Validate.fail(message);
return true;
},
Exclusion: function(value, paramsObj){
var paramsObj=paramsObj||{};
paramsObj.failureMessage=paramsObj.failureMessage||"Must not be included in the list!";
paramsObj.negate=true;
Validate.Inclusion(value, paramsObj);
return true;
},
Confirmation: function(value, paramsObj){
if(!paramsObj.match)
throw new Error("Validate::Confirmation - Error validating confirmation: Id of element to match must be provided!");
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Does not match!";
var match=paramsObj.match.nodeName ? paramsObj.match:document.getElementById(paramsObj.match);
if(!match)
throw new Error("Validate::Confirmation - There is no reference with name of, or element with id of '" + paramsObj.match + "'!");
if(value!=match.value)
Validate.fail(message);
return true;
},
Acceptance: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
if(!value)
Validate.fail(message);
return true;
},
ConfirmEmail: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
console.log('runs');
var ParentValue=document.getElementById(paramsObj.parentField).value;
console.log(value);
console.log(ParentValue);
if(value!==ParentValue){
Validate.fail(message);
}
return true;
},
AcceptanceCheckbox: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
var get_mainUL="input_" + paramsObj.form_id + "_" + paramsObj.field_id;
var radioUL=document.getElementById(get_mainUL);
var len=radioUL.childNodes.length;
for (var i=0; i < radioUL.childNodes.length; i++){
if(radioUL.childNodes[i].querySelector('input').checked){
if(typeof radioUL.classList=="undefined"){
removeClass(radioUL, 'LV_invalid_field');
}else{
radioUL.classList.remove("LV_invalid_field");
}
for (var j=0; j < radioUL.childNodes.length; j++){
removeClass(radioUL.childNodes[j].querySelector('input'), 'LV_invalid_field');
}
return true;
}}
if(!value){
if(typeof radioUL.classList=="undefined"){
addClass(radioUL, 'LV_invalid_field');
}else{
radioUL.classList.add("LV_invalid_field");
}
Validate.fail(message);
}else{
if(typeof radioUL.classList=="undefined"){
removeClass(radioUL, 'LV_invalid_field');
}else{
radioUL.classList.remove("LV_invalid_field");
}}
return true;
},
AcceptanceRadio: function(value, paramsObj){
var returnVar=false;
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
var get_mainUL="input_" + paramsObj.form_id + "_" + paramsObj.name_field.substr(6);
var radioUL=document.getElementById(get_mainUL);
if(paramsObj.name_field){
var inps=document.getElementsByName(paramsObj.name_field);
for (var i=0; i < inps.length; i++){
if(inps[i].checked){
if(typeof radioUL.classList=="undefined"){
removeClass(radioUL, 'LV_invalid_field');
}else{
radioUL.classList.remove("LV_invalid_field");
}
if(typeof radioUL.classList=="undefined"){
removeClass(radioUL, 'LV_invalid_field');
var inps=document.getElementsByName(paramsObj.name_field);
for (var i=0; i < inps.length; i++){
removeClass(inps[i], 'LV_invalid_field');
}}else{
radioUL.classList.remove("LV_invalid_field");
}
var inps=document.getElementsByName(paramsObj.name_field);
for (var i=0; i < inps.length; i++){
removeClass(inps[i], 'LV_invalid_field');
}
return true;
}}
}
if(!value){
if(typeof radioUL.classList=="undefined"){
addClass(radioUL, 'LV_invalid_field');
}else{
radioUL.classList.add("LV_invalid_field");
}
Validate.fail(message);
}else{
if(typeof radioUL.classList=="undefined"){
removeClass(radioUL, 'LV_invalid_field');
var inps=document.getElementsByName(paramsObj.name_field);
for (var i=0; i < inps.length; i++){
removeClass(inps[i], 'LV_invalid_field');
}}else{
radioUL.classList.remove("LV_invalid_field");
}
var inps=document.getElementsByName(paramsObj.name_field);
for (var i=0; i < inps.length; i++){
removeClass(inps[i], 'LV_invalid_field');
}}
return true;
},
/**
* validates against a custom function that returns true or false (or throws a Validate.Error) when passed the value
*
* @param value {mixed} - value to be checked
* @param paramsObj {Object} - parameters for this particular validation, see below for details
*
* paramsObj properties:
* failureMessage {String} - the message to show when the field fails validation
* (DEFAULT: "Not valid!")
* against {Function} - a function that will take the value and object of arguments and return true or false
* (DEFAULT: function(value, argsObj){ return true; })
* args {Object} - an object of named arguments that will be passed to the custom function so are accessible through this object within it
* (DEFAULT: {})
*/
Custom: function(value, paramsObj){
var paramsObj=paramsObj||{};
var against=paramsObj.against||function(){
return true;
};
var args=paramsObj.args||{};
var message=paramsObj.failureMessage||"Not valid!";
if(!against(value, args))
Validate.fail(message);
return true;
},
GFCheckboxes: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
var isValidated=false;
var radioUL=document.getElementById(paramsObj.field_name);
var len=radioUL.childNodes.length;
for (var i=0; i < radioUL.childNodes.length; i++){
if(radioUL.childNodes[i].querySelector('input').checked){
isValidated=true;
return true;
}}
if(!isValidated){
Validate.fail(message);
}},
Date: function(value, paramsObj){
var paramsObj=paramsObj||{};
var message=paramsObj.failureMessage||"Must be accepted!";
if(!value)
Validate.fail(message);
var d=new Date(value);
var current=new Date();
if(Object.prototype.toString.call(d)==="[object Date]"){
if(isNaN(d.getTime())){
Validate.fail(message);
}else{
var re=/^(\d{1,2})\/(\d{1,2})\/(\d{4})$/;
var regs=new Array();
if(regs=value.match(re)){
if(regs[3] < (current.getFullYear() - 100)){
Validate.fail(message);
}
if(checkDay(regs[2], regs[1], regs[3])){
return true;
}else{
Validate.fail(message);
}}
Validate.fail(message);
}}else{
Validate.fail(message);
}
return true;
},
now: function(validationFunction, value, validationParamsObj){
if(!validationFunction)
throw new Error("Validate::now - Validation function must be provided!");
var isValid=true;
try {
validationFunction(value, validationParamsObj||{});
} catch (error){
if(error instanceof Validate.Error){
isValid=false;
}else{
throw error;
}} finally {
return isValid
}},
fail: function(errorMessage){
throw new Validate.Error(errorMessage);
},
Error: function(errorMessage){
this.message=errorMessage;
this.name='ValidationError';
}}
function phoneformat(fld){
var newnumber="";
phonenumber=fld.val();
for (place=0; place <=fld.val().length; place++)
newnumber=newnumber + phonenumber.charAt(place).replace(/\D*/, '');
if(newnumber.length==10){
fld.val('(' + newnumber.substring(0, 3) + ')' + newnumber.substring(3, 6) + '-' + newnumber.substring(6, newnumber.length));
alert(phonenumber);
return true;
}
else if(newnumber.length==0){
fld.val('');
return false;
}else{
fld.select();
return false;
}}
function hasClass(ele, cls){
return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)'));
}
function addClass(ele, cls){
if(!hasClass(ele, cls))
ele.className +=" " + cls;
}
function removeClass(ele, cls){
if(hasClass(ele, cls)){
var reg=new RegExp('(\\s|^)' + cls + '(\\s|$)');
ele.className=ele.className.replace(reg, ' ');
}};
(function($){
"use strict";
var handle_conditional_logic=false;
jQuery(document).bind('gform_post_render', function(event, formID){
if(typeof all_validations!=="undefined"&&typeof window.lv_formIDs!=="undefined"&&window.lv_formIDs.length > 0){
setTimeout(function(){
for (var key in all_validations[formID]){
if(hasSubFields.indexOf(all_validations[formID][key].fieldType)==-1&&jQuery("#field_" + formID + "_" + key).length > 0&&!jQuery("#field_" + formID + "_" + key).is(":visible")&&jQuery("#gform_wrapper_" + formID).is(":visible")){
if(all_validations[formID][key].fieldType=="radio"){
var radios=document.getElementsByName('input_' + key);
for (var i=0; i < radios.length; i++){
radios[i].setAttribute("data-disabled","yes");
}
handle_conditional_logic=true;
}else{
all_validations[formID][key].disable();
handle_conditional_logic=true;
}}
if(hasSubFields.indexOf(all_validations[formID][key].fieldType)!==-1&&jQuery("#input_" + formID + "_" + key).length > 0&&(!jQuery("#input_" + formID + "_" + key).is(":visible")&&jQuery("#gform_wrapper_" + formID).is(":visible"))){
all_validations[formID][key].disable();
handle_conditional_logic=true;
}}
var defaualt_on_click=jQuery(".gform_previous_button:visible").attr("onclick");
var defaualt_save_click=jQuery(".gform_save_link:visible").attr("onclick");
jQuery(".gform_previous_button").attr("onclick", " jQuery('#gform_" + formID + "').addClass('back_bt_press'); " + defaualt_on_click);
jQuery(".gform_save_link").attr("onclick", " jQuery('#gform_" + formID + "').addClass('save_bt_press'); " + defaualt_save_click);
}, 100);
}});
jQuery(document).bind('gform_post_conditional_logic', function(a, b, c, d){
if(typeof all_validations!=="undefined"&&typeof window.lv_formIDs!=="undefined"&&window.lv_formIDs.length > 0){
for (var key in all_validations[b]){
if(jQuery("#field_" + b + "_" + key).length > 0&&(!jQuery("#input_" + b + "_" + key).is(":visible")&&(jQuery("#gform_wrapper_" + b).is(":visible")))){
if(all_validations[b][key].fieldType=="radio"){
var radios=document.getElementsByName('input_' + key);
for (var i=0; i < radios.length; i++){
radios[i].setAttribute("data-disabled","yes");
}
handle_conditional_logic=true;
}else{
all_validations[b][key].disable();
handle_conditional_logic=true;
}}
else if(hasSubFields.indexOf(all_validations[b][key].fieldType)!==-1&&jQuery("#input_" + b + "_" + key).length > 0&&!jQuery("#input_" + b + "_" + key).is(":visible")){
all_validations[b][key].disable();
handle_conditional_logic=true;
}else{
if(all_validations[b][key].fieldType=="radio"){
var radios=document.getElementsByName('input_' + key);
for (var i=0; i < radios.length; i++){
radios[i].removeAttribute("data-disabled");
}}else{
all_validations[b][key].enable();
}}
}}
});
}(jQuery));
var hasSubFields=new Array("name", "date", "time", "address");
additional_data={};
var additional_data={
afterValid: function(elem){
var elemLi=jQuery(elem).parents("li");
if(elemLi.find(".LV_invalid_field").length > 0){
return;
}
if(elemLi.length > 0){
elemLi.removeClass("gfield_error");
elemLi.find(".validation_message").remove();
}
jQuery(document).trigger("lv_after_field_valid", elem);
},
afterInvalid: function(elem){
var elemLi=jQuery(elem).parents("li.gfield");
if((elemLi.length > 0&&!jQuery(elemLi[0]).hasClass("gfield_error"))){
var htML="";
var $thiss=jQuery(elem).next(".LV_validation_message");
if($thiss.text().trim().length > 0){
$thiss.addClass("showed");
htML +='' + get_error_label($thiss, elem) + "" + $thiss.text() + '
';
}
jQuery(elemLi[0]).append(htML);
}else{
var str=jQuery(elem).attr("id");
var getConfig=str.split("_");
var separator='input_' + getConfig[1] + "_";
var get_match=str.split(separator).pop();
if(typeof all_validations[getConfig[1]][get_match]!=="undefined"){
if(hasSubFields.indexOf(all_validations[getConfig[1]][get_match].fieldType) > -1&&jQuery(elemLi[0]).find(".message_id_" + jQuery(elem).attr("id")).length==0){
var htML="";
var $thiss=jQuery(elem).next(".LV_validation_message");
if($thiss.text().trim().length > 0){
htML +='' + get_error_label($thiss, elem) + "" + $thiss.text() + '
';
}
jQuery(elemLi[0]).append(htML);
}}
}
elemLi.addClass("gfield_error");
jQuery(document).trigger("lv_after_field_invalid", elem);
}};
function get_error_label(elem, field){
if(jQuery(field).attr("type")=="radio"){
return "";
}
if(jQuery(elem).siblings("label").length==0){
return "";
}
return jQuery(elem).siblings("label").text() + ": ";
}
jQuery(document).on("lv_field_on_focus", function(event, elem){
var src=elem.srcElement||elem.target;
var elemLi=jQuery(src).parents("li.gfield");
elemLi.removeClass("gfield_error");
jQuery(elemLi[0]).find(".validation_message").remove();
});
jQuery(document).on("focus", ".gform_wrapper .address_line_2", function(event){
var src=event.srcElement||event.target;
var elemLi=jQuery(src).parents("li.gfield");
elemLi.removeClass("gfield_error");
jQuery(elemLi[0]).find(".validation_message").remove();
});
;window.Modernizr=function(a,b,c){function C(a){j.cssText=a}function D(a,b){return C(n.join(a+";")+(b||""))}function E(a,b){return typeof a===b}function F(a,b){return!!~(""+a).indexOf(b)}function G(a,b){for(var d in a){var e=a[d];if(!F(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function H(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:E(f,"function")?f.bind(d||b):f}return!1}function I(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return E(b,"string")||E(b,"undefined")?G(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),H(e,b,c))}function J(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},z=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=E(e[d],"function"),E(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),A={}.hasOwnProperty,B;!E(A,"undefined")&&!E(A.call,"undefined")?B=function(a,b){return A.call(a,b)}:B=function(a,b){return b in a&&E(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=w.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(w.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(w.call(arguments)))};return e}),s.flexbox=function(){return I("flexWrap")},s.flexboxlegacy=function(){return I("boxDirection")},s.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},s.canvastext=function(){return!!e.canvas&&!!E(b.createElement("canvas").getContext("2d").fillText,"function")},s.webgl=function(){return!!a.WebGLRenderingContext},s.touch=function(){var c;return"ontouchstart"in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:y(["@media (",n.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9}),c},s.geolocation=function(){return"geolocation"in navigator},s.postmessage=function(){return!!a.postMessage},s.websqldatabase=function(){return!!a.openDatabase},s.indexedDB=function(){return!!I("indexedDB",a)},s.hashchange=function(){return z("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},s.history=function(){return!!a.history&&!!history.pushState},s.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},s.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},s.rgba=function(){return C("background-color:rgba(150,255,150,.5)"),F(j.backgroundColor,"rgba")},s.hsla=function(){return C("background-color:hsla(120,40%,100%,.5)"),F(j.backgroundColor,"rgba")||F(j.backgroundColor,"hsla")},s.multiplebgs=function(){return C("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},s.backgroundsize=function(){return I("backgroundSize")},s.borderimage=function(){return I("borderImage")},s.borderradius=function(){return I("borderRadius")},s.boxshadow=function(){return I("boxShadow")},s.textshadow=function(){return b.createElement("div").style.textShadow===""},s.opacity=function(){return D("opacity:.55"),/^0.55$/.test(j.opacity)},s.cssanimations=function(){return I("animationName")},s.csscolumns=function(){return I("columnCount")},s.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return C((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),F(j.backgroundImage,"gradient")},s.cssreflections=function(){return I("boxReflect")},s.csstransforms=function(){return!!I("transform")},s.csstransforms3d=function(){var a=!!I("perspective");return a&&"webkitPerspective"in g.style&&y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},s.csstransitions=function(){return I("transition")},s.fontface=function(){var a;return y('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},s.generatedcontent=function(){var a;return y(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},s.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},s.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},s.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},s.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},s.webworkers=function(){return!!a.Worker},s.applicationcache=function(){return!!a.applicationCache},s.svg=function(){return!!b.createElementNS&&!!b.createElementNS(r.svg,"svg").createSVGRect},s.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML=" ",(a.firstChild&&a.firstChild.namespaceURI)==r.svg},s.smil=function(){return!!b.createElementNS&&/SVGAnimate/.test(m.call(b.createElementNS(r.svg,"animate")))},s.svgclippaths=function(){return!!b.createElementNS&&/SVGClipPath/.test(m.call(b.createElementNS(r.svg,"clipPath")))};for(var K in s)B(s,K)&&(x=K.toLowerCase(),e[x]=s[K](),v.push((e[x]?"":"no-")+x));return e.input||J(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)B(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},C(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b}function n(a,c,f){c||(c=b);if(j)return c.createElement(a);f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g}function o(a,c){a||(a=b);if(j)return a.createDocumentFragment();c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e",f="hidden"in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){f=!0,j=!0}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.hasEvent=z,e.testProp=function(a){return G([a])},e.testAllProps=I,e.testStyles=y,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+v.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f