var gform=window.gform||{};
if(typeof jQuery.fn.prop==='undefined'){
jQuery.fn.prop=jQuery.fn.attr;
}
jQuery(document).on('gform_post_render', announceAJAXValidationErrors);
function announceAJAXValidationErrors(){
if(! jQuery('.gform_validation_errors').length){
return;
}
const focusableEl=document.querySelector('[data-js="gform-focus-validation-error"]');
if(focusableEl){
focusableEl.setAttribute('tabindex', '-1');
focusableEl.focus();
}
setTimeout(function(){
wp.a11y.speak(jQuery('.gform_validation_errors > h2').text());
}, 1000);
}
jQuery(document).on('gform_post_render', gformBindFormatPricingFields);
function gformBindFormatPricingFields(){
jQuery(".ginput_amount, .ginput_donation_amount").off('change.gform').on("change.gform", function(){
gformFormatPricingField(this);
});
jQuery(".ginput_amount, .ginput_donation_amount").each(function(){
gformFormatPricingField(this);
});
}
gform.instances={};
gform.console={
error: function(message){
if(window.console){
console.error(message);
}},
info: function(message){
if(window.console){
console.info(message);
}},
log: function(message){
if(window.console){
console.log(message);
}},
};
gform.adminUtils={
handleUnsavedChanges: function(elemId){
var hasUnsavedChanges=null;
jQuery(elemId).find('input, select, textarea').on('change keyup', function(){
if(jQuery(this).attr('onChange')===undefined&&jQuery(this).attr('onClick')===undefined){
hasUnsavedChanges=true;
}
if(( jQuery(this).next().data("jsButton")||jQuery(this).data("jsButton"))==='enable-api'){
hasUnsavedChanges=null;
}});
if(this.getUrlParameter('subview')==='gravityformswebapi'){
if(gf_webapi_vars.api_enabled!==gf_webapi_vars.enable_api_checkbox_checked){
hasUnsavedChanges=true;
}}
jQuery(elemId).on('submit', function(){
hasUnsavedChanges=null;
});
window.onbeforeunload=function(){
return hasUnsavedChanges;
};},
getUrlParameter: function(param){
var url=window.location.search.substring(1);
var urlVariables=url.split('&');
for(var i=0; i < urlVariables.length; i++){
var parameterName=urlVariables[i].split('=');
if(parameterName[0]==param){
return parameterName[1];
}}
},
handleIEDisplay: function(){
var isIE = ! gform.tools.isIE();
var ieShow=gform.tools.getNodes('show-if-ie', true);
var ieHide=gform.tools.getNodes('hide-if-ie', true);
var otherShow=gform.tools.getNodes('show-if-not-ie', true);
var otherHide=gform.tools.getNodes('hide-if-not-ie', true);
if(isIE){
ieShow.forEach(function(el){
el.classList.add('active');
});
ieHide.forEach(function(el){
el.classList.remove('active');
});
}else{
otherShow.forEach(function(el){
el.classList.add('active');
});
otherHide.forEach(function(el){
el.classList.remove('active');
});
}},
}
window.HandleUnsavedChanges=gform.adminUtils.handleUnsavedChanges;
gform.tools={
debounce: function(fn, debounceLength, isImmediate){
var timeout;
var lastArgs;
var lastFn;
return function(){
var callbackContext=this;
var args=arguments;
var deferredCallback=function(){
timeout=null;
if(! isImmediate){
fn.apply(callbackContext, args);
}};
var callNow=isImmediate&&! timeout;
if(args===lastArgs&&(''+lastFn==''+fn) ){
clearTimeout(timeout);
}
var cachePreviousCall=function(fn, args){
lastFn=fn;
lastArgs=args;
}
timeout=setTimeout(deferredCallback, debounceLength);
cachePreviousCall(fn, args);
if(! callNow){
return;
}
fn.apply(callbackContext, args);
};},
defaultFor: function(arg, val){
return typeof arg!=='undefined' ? arg:val;
},
getFocusable: function(container){
container=this.defaultFor(container, document);
var focusable=this.convertElements(container.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
)
);
return focusable.filter(function(item){
return this.visible(item);
}.bind(this) );
},
htmlToElement: function(html){
var template=document.createElement('template');
html=html.trim();
template.innerHTML=html;
return template.content.firstChild;
},
elementToHTML: function(el){
return el.outerHTML;
},
convertElements: function(elements){
var converted=[];
var i=elements.length;
for(i; i--; converted.unshift(elements[ i ]) ) ;
return converted;
},
delegate: function(selector, event, childSelector, handler){
var is=function(el, selector){
return(el.matches||el.msMatchesSelector).call(el, selector);
};
var elements=document.querySelectorAll(selector);
[].forEach.call(elements, function(el, i){
el.addEventListener(event, function(e){
if(is(e.target, childSelector) ){
handler(e);
}});
});
},
getClosest: function(el, selector){
var matchesFn;
var parent;
[ 'matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector' ]
.some(function(fn){
if(typeof document.body[ fn ]==='function'){
matchesFn=fn;
return true;
}
return false;
});
while(el){
parent=el.parentElement;
if(parent&&parent[ matchesFn ](selector) ){
return parent;
}
el=parent;
}
return null;
},
getNodes: function(selector, convert, node, custom){
if(! selector){
gform.console.error('Please pass a selector to gform.tools.getNodes');
return [];
}
node=this.defaultFor(node, document);
var selectorString=custom ? selector:'[data-js="' + selector + '"]';
var nodes=node.querySelectorAll(selectorString);
if(convert){
nodes=this.convertElements(nodes);
}
return nodes;
},
mergeObjects: function(){
var resObj={};
for(var i=0; i < arguments.length; i +=1){
var obj=arguments[ i ]
var keys=Object.keys(obj);
for(var j=0; j < keys.length; j +=1){
resObj[ keys[ j ] ]=obj[ keys[ j ] ];
}}
return resObj;
},
setAttr: function(selector, attr, value, container, delay){
if(! selector||! attr||! value){
gform.console.error('Please pass a selector, attribute and value to gform.tools.setAttr');
return [];
}
container=this.defaultFor(container, document);
delay=this.defaultFor(delay, 0);
setTimeout(function(){
gform.tools.getNodes(selector, true, container, true)
.forEach(function(node){
node.setAttribute(attr, value);
});
}, delay);
},
isRtl: function(){
if(jQuery('html').attr('dir')==='rtl'){
return true;
}},
isIE: function(){
return window.document.documentMode;
},
trigger: function(eventName, el, native, data){
var event;
eventName=this.defaultFor(eventName, '');
el=this.defaultFor(el, document);
native=this.defaultFor(native, false);
data=this.defaultFor(data, {});
if(native){
event=document.createEvent('HTMLEvents');
event.initEvent(eventName, true, false);
}else{
try {
event=new CustomEvent(eventName, { detail: data });
} catch(e){
event=document.createEvent('CustomEvent');
event.initCustomEvent(eventName, true, true, data);
}}
el.dispatchEvent(event);
},
uniqueId: function(prefix){
prefix=this.defaultFor(prefix, 'id');
return prefix + '-' + Math.random().toString(36).substr(2, 9);
},
visible: function(elem){
return !!(elem.offsetWidth||elem.offsetHeight||elem.getClientRects().length);
},
stripSlashes: function(str){
return (str + '').replace(/\\(.?)/g, function (s, n1){
switch (n1){
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}});
},
getCookie: function(name){
var cookieArr=document.cookie.split(";");
for(var i=0; i < cookieArr.length; i++){
var cookiePair=cookieArr[i].split("=");
if(name==cookiePair[0].trim()){
return decodeURIComponent(cookiePair[1]);
}}
return null;
},
setCookie: function(name, value, daysToExpire, updateExistingValue){
var expirationDate='';
var cookieValue=value;
if(daysToExpire){
var date=new Date();
date.setTime(date.getTime() +(daysToExpire * 24 * 60 * 60 * 1000) );
expirationDate=' expires=' + date.toUTCString();
}
if(updateExistingValue){
var currentValue=gform.tools.getCookie(name);
cookieValue=currentValue!==''&&currentValue!==null ? currentValue + ',' + value:value;
}
document.cookie=encodeURIComponent(name) + '=' + encodeURIComponent(cookieValue) + ';' + expirationDate;
},
removeCookie: function(name){
gform.tools.setCookie(name, '', -1);
}};
gform.a11y={};
gform.options={
jqEditorAccordions: {
header: 'button.panel-block-tabs__toggle',
heightStyle: 'content',
collapsible: true,
animate: false,
create: function(event){
gform.tools.setAttr('.ui-accordion-header', 'tabindex', '0', event.target, 100);
},
activate: function(event){
gform.tools.setAttr('.ui-accordion-header', 'tabindex', '0', event.target, 100);
},
beforeActivate: function(event){
if(event.currentTarget.id==='advanced_tab_toggle'){
if(window.field&&window.field.type&&window.field.type==='address'){
CreateAutocompleteUI(window.field);
}}
}},
jqAddFieldAccordions: {
heightStyle: 'content',
collapsible: true,
animate: false,
create: function(event){
gform.tools.setAttr('.ui-accordion-header', 'tabindex', '0', event.target, 100);
},
activate: function(event){
gform.tools.setAttr('.ui-accordion-header', 'tabindex', '0', event.target, 100);
},
},
};
function Currency(currency){
this.currency=currency;
this.toNumber=function(text){
if(this.isNumeric(text)){
return parseFloat(text);
}
return gformCleanNumber(text, this.currency["symbol_right"], this.currency["symbol_left"], this.currency["decimal_separator"]);
};
this.toMoney=function(number, isNumeric){
isNumeric=isNumeric||false;
if(! isNumeric){
number=gformCleanNumber(number, this.currency["symbol_right"], this.currency["symbol_left"], this.currency["decimal_separator"]);
}
if(number===false){
return "";
}
number=number + "";
negative="";
if(number[0]=="-"){
number=parseFloat(number.substr(1));
negative='-';
}
money=this.numberFormat(number, this.currency["decimals"], this.currency["decimal_separator"], this.currency["thousand_separator"]);
if(money=='0.00'){
negative='';
}
var symbol_left=this.currency["symbol_left"] ? this.currency["symbol_left"] + this.currency["symbol_padding"]:"";
var symbol_right=this.currency["symbol_right"] ? this.currency["symbol_padding"] + this.currency["symbol_right"]:"";
money=negative + this.htmlDecode(symbol_left) + money + this.htmlDecode(symbol_right);
return money;
};
this.numberFormat=function(number, decimals, dec_point, thousands_sep, padded){
padded=typeof padded=='undefined' ? true:padded;
number=(number+'').replace(',', '').replace(' ', '');
var n = !isFinite(+number) ? 0:+number,
prec = !isFinite(+decimals) ? 0:Math.abs(decimals),
sep=(typeof thousands_sep==='undefined') ? ',':thousands_sep, dec=(typeof dec_point==='undefined') ? '.':dec_point,
s='',
toFixedFix=function (n, prec){
var k=Math.pow(10, prec);
return '' + Math.round(n * k) / k;
};
if(decimals=='0'){
n=n + 0.0000000001;
s=('' + Math.round(n)).split('.');
} else
if(decimals==-1){
s=('' + n).split('.');
}else{
n=n + 0.0000000001;
s=toFixedFix(n, prec).split('.');
}
if(s[0].length > 3){
s[0]=s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
}
if(padded){
if((s[1]||'').length < prec){
s[1]=s[1]||'';
s[1] +=new Array(prec - s[1].length + 1).join('0');
}}
return s.join(dec);
}
this.isNumeric=function(number){
return gformIsNumber(number);
};
this.htmlDecode=function(text){
var c,m,d=text;
var arr=d.match(/&#[0-9]{1,5};/g);
if(arr!=null){
for(var x=0;x<arr.length;x++){
m=arr[x];
c=m.substring(2,m.length-1);
if(c >=-32768&&c <=65535){
d=d.replace(m, String.fromCharCode(c));
}else{
d=d.replace(m, "");
}}
}
return d;
};
this.getCode=function(){
return 'code' in this.currency&&this.currency.code!=='' ? this.currency.code:false;
}}
function gformCleanNumber(text, symbol_right, symbol_left, decimal_separator){
var clean_number='',
float_number='',
digit='',
is_negative=false;
text=text + " ";
text=text.replace(/&.*?;/g, "");
text=text.replace(symbol_right, "");
text=text.replace(symbol_left, "");
for(var i=0; i<text.length; i++){
digit=text.substr(i,1);
if((parseInt(digit,10) >=0&&parseInt(digit,10) <=9)||digit==decimal_separator)
clean_number +=digit;
else if(digit=='-')
is_negative=true;
}
for(var i=0; i<clean_number.length; i++){
digit=clean_number.substr(i,1);
if(digit >='0'&&digit <='9')
float_number +=digit;
else if(digit==decimal_separator){
float_number +=".";
}}
if(is_negative)
float_number="-" + float_number;
return gformIsNumber(float_number) ? parseFloat(float_number):false;
}
function gformGetDecimalSeparator(numberFormat){
var s;
switch (numberFormat){
case 'currency' :
var currency=new Currency(gf_global.gf_currency_config);
s=currency.currency["decimal_separator"];
break;
case 'decimal_comma' :
s=',';
break;
default :
s="."
}
return s;
}
function gformIsNumber(n){
return !isNaN(parseFloat(n))&&isFinite(n);
}
function gformIsNumeric(value, number_format){
switch(number_format){
case "decimal_dot" :
var r=new RegExp("^(-?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]+)?)$");
return r.test(value);
break;
case "decimal_comma" :
var r=new RegExp("^(-?[0-9]{1,3}(?:\.?[0-9]{3})*(?:,[0-9]+)?)$");
return r.test(value);
break;
}
return false;
}
function gformDeleteUploadedFile(formId, fieldId, deleteButton){
var parent=jQuery("#field_" + formId + "_" + fieldId);
var fileIndex=jQuery(deleteButton).parent().index();
parent.find(".ginput_preview").eq(fileIndex).remove();
parent.find('input[type="file"],.validation_message,#extensions_message_' + formId + '_' + fieldId).removeClass("gform_hidden");
parent.find(".ginput_post_image_file").show();
parent.find("input[type=\"text\"]").val('');
var filesJson=jQuery('#gform_uploaded_files_' + formId).val();
if(filesJson){
var files=jQuery.secureEvalJSON(filesJson);
if(files){
var inputName="input_" + fieldId;
var $multfile=parent.find("#gform_multifile_upload_" + formId + "_" + fieldId);
if($multfile.length > 0){
files[inputName].splice(fileIndex, 1);
var settings=$multfile.data('settings');
var max=settings.gf_vars.max_files;
jQuery("#" + settings.gf_vars.message_id).html('');
if(files[inputName].length < max)
gfMultiFileUploader.toggleDisabled(settings, false);
}else{
files[inputName]=null;
}
jQuery('#gform_uploaded_files_' + formId).val(jQuery.toJSON(files));
}}
}
var _gformPriceFields=new Array();
var _anyProductSelected;
function gformIsHidden(element){
return element.parents('.gfield').not(".gfield_hidden_product").css("display")=="none";
}
var gformCalculateTotalPrice=gform.tools.debounce(function(formId){
if(!_gformPriceFields[formId]){
return;
}
var price=0;
_anyProductSelected=false;
for(var i=0; i<_gformPriceFields[formId].length; i++){
price +=gformCalculateProductPrice(formId, _gformPriceFields[formId][i]);
}
if(_anyProductSelected){
var shipping=gformGetShippingPrice(formId)
price +=shipping;
}
if(window["gform_product_total"])
price=window["gform_product_total"](formId, price);
price=gform.applyFilters('gform_product_total', price, formId);
gformUpdateTotalFieldPrice(formId, price);
}, 50, false);
function gformUpdateTotalFieldPrice(formId, price){
var $totalElement=jQuery('.ginput_total_' + formId);
if(! $totalElement.length > 0){
return;
}
var priceHasChanged=function(priceData){
return isLegacy
? priceData.current!==priceData.new
: priceData.current!==priceData.newFormatted;
}
var isLegacy=document.querySelector('#gform_wrapper_' + formId + '.gform_legacy_markup_wrapper');
var $totalInput=isLegacy ? $totalElement.next():$totalElement;
var priceData={
current: String($totalInput.val()),
new: String(price),
newFormatted: gformFormatMoney(String(price), true),
}
if(! priceHasChanged(priceData) ){
return;
}
if(isLegacy){
$totalInput.val(priceData.new).trigger('change');
$totalElement.html(priceData.newFormatted);
return;
}
$totalInput.val(priceData.new).trigger('change');
$totalInput.val(priceData.newFormatted);
}
function gformGetShippingPrice(formId){
var shippingField=jQuery(".gfield_shipping_" + formId + " input[readonly], .gfield_shipping_" + formId + " select, .gfield_shipping_" + formId + " input:checked");
var shipping=0;
if(shippingField.length==1&&!gformIsHidden(shippingField)){
if(shippingField.attr("readonly"))
shipping=shippingField.val();
else
shipping=gformGetPrice(shippingField.val());
}
return gformToNumber(shipping);
}
function gformGetFieldId(element){
var id=jQuery(element).attr("id");
var pieces=id.split("_");
if(pieces.length <=0)
return 0;
var fieldId=pieces[pieces.length-1];
return fieldId;
}
function gformCalculateProductPrice(form_id, productFieldId){
var suffix='_' + form_id + '_' + productFieldId;
jQuery('.gfield_option' + suffix + ', .gfield_shipping_' + form_id).find('select').each(function(){
var dropdown_field=jQuery(this);
var selected_price=gformGetPrice(dropdown_field.val());
var field_id=dropdown_field.attr('id').split('_')[2];
dropdown_field.children('option').each(function(){
var choice_element=jQuery(this);
var label=gformGetOptionLabel(choice_element, choice_element.val(), selected_price, form_id, field_id);
choice_element.html(label);
});
});
jQuery('.gfield_option' + suffix).find('.gfield_checkbox').find('input:checkbox').each(function(){
var checkbox_item=jQuery(this);
var id=checkbox_item.attr('id');
var field_id=id.split('_')[2];
var label_id=id.replace('choice_', '#label_');
var label_element=jQuery(label_id);
var label=gformGetOptionLabel(label_element, checkbox_item.val(), 0, form_id, field_id);
label_element.html(label);
});
jQuery('.gfield_option' + suffix + ', .gfield_shipping_' + form_id).find('.gfield_radio').each(function(){
var selected_price=0;
var radio_field=jQuery(this);
var id=radio_field.attr('id');
var fieldId=id.split('_')[2];
var selected_value=radio_field.find('input:radio:checked').val();
if(selected_value)
selected_price=gformGetPrice(selected_value);
radio_field.find('input:radio').each(function(){
var radio_item=jQuery(this);
var label_id=radio_item.attr('id').replace('choice_', '#label_');
var label_element=jQuery(label_id);
if(label_element){
var label=gformGetOptionLabel(label_element, radio_item.val(), selected_price, form_id, fieldId);
label_element.html(label);
}});
});
var price=gformGetBasePrice(form_id, productFieldId);
var quantity=gformGetProductQuantity(form_id, productFieldId);
if(quantity > 0){
jQuery('.gfield_option' + suffix).find('input:checked, select').each(function(){
if(!gformIsHidden(jQuery(this)))
price +=gformGetPrice(jQuery(this).val());
});
_anyProductSelected=true;
}
price=price * quantity;
price=gformRoundPrice(price) ;
return price;
}
function gformGetProductQuantity(formId, productFieldId){
if(!gformIsProductSelected(formId, productFieldId)){
return 0;
}
var quantity,
quantityInput=jQuery('#ginput_quantity_' + formId + '_' + productFieldId),
numberFormat;
if(! quantityInput.length){
quantityInput=jQuery('#input_' + formId + '_' + productFieldId + '_1');
}
if(gformIsHidden(quantityInput)){
return 0;
}
if(quantityInput.length > 0){
quantity=quantityInput.val();
}else{
quantityInput=jQuery('.gfield_quantity_' + formId + '_' + productFieldId + ' :input');
quantity=1;
if(quantityInput.length > 0){
quantity=quantityInput.val();
var htmlId=quantityInput.attr('id'),
fieldId=gf_get_input_id_by_html_id(htmlId);
numberFormat=gf_get_field_number_format(fieldId, formId, 'value');
}}
if(!numberFormat)
numberFormat='currency';
var decimalSeparator=gformGetDecimalSeparator(numberFormat);
quantity=gformCleanNumber(quantity, '', '', decimalSeparator);
if(!quantity)
quantity=0;
return quantity;
}
function gformIsProductSelected(formId, productFieldId){
var suffix="_" + formId + "_" + productFieldId;
var productField=jQuery("#ginput_base_price" + suffix + ", .gfield_donation" + suffix + " input[type=\"text\"], .gfield_product" + suffix + " .ginput_amount");
if(productField.val()&&! gformIsHidden(productField)){
return true;
}else{
productField=jQuery(".gfield_product" + suffix + " select, .gfield_product" + suffix + " input:checked, .gfield_donation" + suffix + " select, .gfield_donation" + suffix + " input:checked");
if(productField.val()&&! gformIsHidden(productField)){
return true;
}}
return false;
}
function gformGetBasePrice(formId, productFieldId){
var suffix="_" + formId + "_" + productFieldId;
var price=0;
var productField=jQuery("#ginput_base_price" + suffix+ ", .gfield_donation" + suffix + " input[type=\"text\"], .gfield_product" + suffix + " .ginput_amount");
if(productField.length > 0){
price=productField.val();
if(gformIsHidden(productField)){
price=0;
}}else{
productField=jQuery(".gfield_product" + suffix + " select, .gfield_product" + suffix + " input:checked, .gfield_donation" + suffix + " select, .gfield_donation" + suffix + " input:checked");
var val=productField.val();
if(val){
val=val.split("|");
price=val.length > 1 ? val[1]:0;
}
if(gformIsHidden(productField))
price=0;
}
var c=new Currency(gf_global.gf_currency_config);
price=c.toNumber(price);
return price===false ? 0:price;
}
function gformFormatMoney(text, isNumeric){
if(!gf_global.gf_currency_config)
return text;
var currency=new Currency(gf_global.gf_currency_config);
return currency.toMoney(text, isNumeric);
}
function gformFormatPricingField(element){
if(gf_global.gf_currency_config){
var currency=new Currency(gf_global.gf_currency_config);
var price=currency.toMoney(jQuery(element).val());
jQuery(element).val(price);
}}
function gformToNumber(text){
var currency=new Currency(gf_global.gf_currency_config);
return currency.toNumber(text);
}
function gformGetPriceDifference(currentPrice, newPrice){
var diff=parseFloat(newPrice) - parseFloat(currentPrice);
price=gformFormatMoney(diff, true);
if(diff > 0)
price="+" + price;
return price;
}
function gformGetOptionLabel(element, selected_value, current_price, form_id, field_id){
element=jQuery(element);
var price=gformGetPrice(selected_value);
var current_diff=element.attr('price');
var original_label=element.html().replace(/<span(.*)<\/span>/i, "").replace(current_diff, "");
var diff=gformGetPriceDifference(current_price, price);
diff=gformToNumber(diff)==0 ? "":" " + diff;
element.attr('price', diff);
var price_label=element[0].tagName.toLowerCase()=="option" ? diff:"<span class='ginput_price'>" + diff + "</span>";
var label=original_label + price_label;
if(window["gform_format_option_label"])
label=gform_format_option_label(label, original_label, price_label, current_price, price, form_id, field_id);
return label;
}
function gformGetProductIds(parent_class, element){
var classes=jQuery(element).hasClass(parent_class) ? jQuery(element).attr("class").split(" "):jQuery(element).parents("." + parent_class).attr("class").split(" ");
for(var i=0; i<classes.length; i++){
if(classes[i].substr(0, parent_class.length)==parent_class&&classes[i]!=parent_class)
return {formId: classes[i].split("_")[2], productFieldId: classes[i].split("_")[3]};}
return {formId:0, fieldId:0};}
function gformGetPrice(text){
var val=text.split("|");
var currency=new Currency(gf_global.gf_currency_config);
if(val.length > 1&&currency.toNumber(val[1])!==false)
return currency.toNumber(val[1]);
return 0;
}
function gformRoundPrice(price){
var currency=new Currency(gf_global.gf_currency_config);
var roundedPrice=currency.numberFormat(price, currency.currency['decimals'], '.', '');
return parseFloat(roundedPrice);
}
function gformRegisterPriceField(item){
if(!_gformPriceFields[item.formId])
_gformPriceFields[item.formId]=new Array();
for(var i=0; i<_gformPriceFields[item.formId].length; i++)
if(_gformPriceFields[item.formId][i]==item.productFieldId)
return;
_gformPriceFields[item.formId].push(item.productFieldId);
}
function gformInitPriceFields(){
jQuery(".gfield_price").each(function(){
var productIds=gformGetProductIds("gfield_price", this);
gformRegisterPriceField(productIds);
jQuery(this).on('input change', 'input[type="text"], input[type="number"], select', function(){
var productIds=gformGetProductIds("gfield_price", this);
if(productIds.formId==0)
productIds=gformGetProductIds("gfield_shipping", this);
jQuery(document).trigger('gform_price_change', [productIds, this]);
gformCalculateTotalPrice(productIds.formId);
});
jQuery(this).on('click', 'input[type="radio"], input[type="checkbox"]', function(){
var productIds=gformGetProductIds("gfield_price", this);
if(productIds.formId==0)
productIds=gformGetProductIds("gfield_shipping", this);
jQuery(document).trigger('gform_price_change', [productIds, this]);
gformCalculateTotalPrice(productIds.formId);
});
});
for(formId in _gformPriceFields){
if(!_gformPriceFields.hasOwnProperty(formId))
continue;
gformCalculateTotalPrice(formId);
}}
function gformShowPasswordStrength(fieldId){
var password=document.getElementById(fieldId).value,
confirm=document.getElementById(fieldId + '_2') ? document.getElementById(fieldId + '_2').value:'';
var result=gformPasswordStrength(password, confirm),
text=window[ 'gf_text' ][ "password_" + result ],
resultClass=result==='unknown' ? 'blank':result;
jQuery("#" + fieldId + "_strength").val(result);
jQuery("#" + fieldId + "_strength_indicator").removeClass("blank mismatch short good bad strong").addClass(resultClass).html(text);
}
function gformPasswordStrength(password1, password2){
if(password1.length <=0){
return 'blank';
}
var disallowedList=wp.passwordStrength.hasOwnProperty('userInputDisallowedList') ? wp.passwordStrength.userInputDisallowedList():wp.passwordStrength.userInputBlacklist(),
strength=wp.passwordStrength.meter(password1, disallowedList, password2);
switch(strength){
case -1:
return 'unknown';
case 2:
return 'bad';
case 3:
return 'good';
case 4:
return 'strong';
case 5:
return 'mismatch';
default:
return 'short';
}}
function gformToggleShowPassword(fieldId){
var $password=jQuery('#' + fieldId),
$button=$password.parent().find('button'),
$icon=$button.find('span'),
currentType=$password.attr('type');
switch(currentType){
case 'password':
$password.attr('type', 'text');
$button.attr('aria-label', $button.attr('data-label-hide') );
$icon.removeClass('dashicons-hidden').addClass('dashicons-visibility');
break;
case 'text':
$password.attr('type', 'password');
$button.attr('aria-label', $button.attr('data-label-show') );
$icon.removeClass('dashicons-visibility').addClass('dashicons-hidden');
break;
}}
function gformToggleCheckboxes(toggleElement){
var checked,
$toggleElement=jQuery(toggleElement),
legacy=$toggleElement.is('input[type="checkbox"]'),
$toggle=legacy ? $toggleElement.parent():$toggleElement.prev(),
$toggleLabel=$toggle.find('label'),
$checkboxes=$toggle.parent().find('.gchoice:not(.gchoice_select_all)'),
formId=gf_get_form_id_by_html_id($toggle.parents('.gfield').attr('id') ),
calcObj=rgars(window, 'gf_global/gfcalc/' + formId);
if(legacy){
checked=toggleElement.checked;
}else{
var checkedData=$toggleElement.data('checked');
if(typeof checkedData==='boolean'){
checked = !checkedData;
}else{
checked = !(parseInt(checkedData)===1)
}}
$checkboxes.each(function(){
jQuery('input[type="checkbox"]', this).prop('checked', checked).trigger('change');
if(typeof jQuery('input[type="checkbox"]', this)[0].onclick==='function'){
jQuery('input[type="checkbox"]', this)[0].onclick();
}});
if(legacy){
$toggleLabel.html(checked ? $toggleLabel.data('label-deselect'):$toggleLabel.data('label-select') );
}else{
$toggleElement.html(checked ? $toggleElement.data('label-deselect'):$toggleElement.data('label-select') );
$toggleElement.data('checked', checked);
}
wp.a11y.speak(checked ? gf_field_checkbox.strings.selected:gf_field_checkbox.strings.deselected);
if(calcObj){
calcObj.runCalcs(formId, calcObj.formulaFields);
}}
function gformToggleRadioOther(radioElement){
var $other=radioElement.parentElement.parentElement.parentElement.lastChild.querySelector('input[type="text"]');
if($other){
$other.disabled=radioElement.value!=='gf_other_choice';
}}
function gformAddListItem(addButton, max){
var $addButton=jQuery(addButton);
if($addButton.hasClass('gfield_icon_disabled') ){
return;
}
var $group=$addButton.parents('.gfield_list_group'),
$clone=$group.clone(),
$container=$group.parents('.gfield_list_container'),
tabindex=$clone.find(':input:last').attr('tabindex');
$clone
.find('input, select, textarea').attr('tabindex', tabindex)
.not(':checkbox, :radio').val('');
$clone.find(':checkbox, :radio').prop('checked', false);
$clone=gform.applyFilters('gform_list_item_pre_add', $clone, $group);
$group.after($clone);
gformToggleIcons($container, max);
gformAdjustClasses($container);
gformAdjustRowAttributes($container);
gform.doAction('gform_list_post_item_add', $clone, $container);
wp.a11y.speak(window.gf_global.strings.newRowAdded);
}
function gformDeleteListItem(deleteButton, max){
var $deleteButton=jQuery(deleteButton),
$group=$deleteButton.parents('.gfield_list_group'),
$container=$group.parents('.gfield_list_container');
$group.remove();
gformToggleIcons($container, max);
gformAdjustClasses($container);
gformAdjustRowAttributes($container);
gform.doAction('gform_list_post_item_delete', $container);
wp.a11y.speak(window.gf_global.strings.rowRemoved);
}
function gformAdjustClasses($container){
var $groups=$container.find('.gfield_list_group');
$groups.each(function(i){
var $group=jQuery(this),
oddEvenClass=(i + 1) % 2==0 ? 'gfield_list_row_even':'gfield_list_row_odd';
$group.removeClass('gfield_list_row_odd gfield_list_row_even').addClass(oddEvenClass);
});
}
function gformAdjustRowAttributes($container){
if($container.parents('.gform_wrapper').hasClass('gform_legacy_markup_wrapper') ){
return;
}
$container.find('.gfield_list_group').each(function(i){
var $input=jQuery(this).find('input, select, textarea');
$input.each(function(index, input){
var $this=jQuery(input);
$this.attr('aria-label', $this.data('aria-label-template').gformFormat(i + 1) );
});
var $remove=jQuery(this).find('.delete_list_item');
$remove.attr('aria-label', $remove.data('aria-label-template').gformFormat(i + 1) );
});
}
function gformToggleIcons($container, max){
var groupCount=$container.find('.gfield_list_group').length,
$addButtons=$container.find('.add_list_item'),
isLegacy=typeof gf_legacy!=='undefined'&&gf_legacy.is_legacy;
$container.find('.delete_list_item').css('visibility', groupCount==1 ? 'hidden':'visible');
if(max > 0&&groupCount >=max){
$addButtons.data('title', $container.find('.add_list_item').attr('title') );
$addButtons.addClass('gfield_icon_disabled').attr('title', '');
if(! isLegacy){
$addButtons.prop('disabled', true);
}}else if(max > 0){
$addButtons.removeClass('gfield_icon_disabled');
if(! isLegacy){
$addButtons.prop('disabled', false);
}
if($addButtons.data('title') ){
$addButtons.attr('title', $addButtons.data('title') );
}}
}
function gformAddRepeaterItem(addButton, max){
var $addButton=jQuery(addButton);
if($addButton.hasClass('gfield_icon_disabled') ){
return;
}
var $item=$addButton.closest('.gfield_repeater_item'),
$clone=$item.clone(),
$container=$item.closest('.gfield_repeater_container'),
tabindex=$clone.find(':input:last').attr('tabindex');
$clone
.find('input[type!="hidden"], select, textarea').attr('tabindex', tabindex)
.not(':checkbox, :radio').val('');
$clone.find(':checkbox, :radio').prop('checked', false);
$clone.find('.validation_message').remove();
$clone.find('.gform-datepicker.initialized').removeClass('initialized');
$clone=gform.applyFilters('gform_repeater_item_pre_add', $clone, $item);
$item.after($clone);
var $cells=$clone.children('.gfield_repeater_cell');
$cells.each(function (){
var $subContainer=jQuery(this).find('.gfield_repeater_container').first();
if($subContainer.length > 0){
resetContainerItems=function ($c){
$c.children('.gfield_repeater_items').children('.gfield_repeater_item').each(function (i){
var $children=jQuery(this).children('.gfield_repeater_cell');
$children.each(function (){
var $subSubContainer=jQuery(this).find('.gfield_repeater_container').first();
if($subSubContainer.length > 0){
resetContainerItems($subSubContainer);
}})
})
$c.children('.gfield_repeater_items').children('.gfield_repeater_item').not(':first').remove();
}
resetContainerItems($subContainer);
}})
gformResetRepeaterAttributes($container);
if(typeof gformInitDatepicker=='function'){
$container.find('.ui-datepicker-trigger').remove();
$container.find('.hasDatepicker').removeClass('hasDatepicker');
gformInitDatepicker();
}
gformBindFormatPricingFields();
gformToggleRepeaterButtons($container, max);
gform.doAction('gform_repeater_post_item_add', $clone, $container);
}
function gformDeleteRepeaterItem(deleteButton, max){
var $deleteButton=jQuery(deleteButton),
$group=$deleteButton.closest('.gfield_repeater_item'),
$container=$group.closest('.gfield_repeater_container');
$group.remove();
gformResetRepeaterAttributes($container);
gformToggleRepeaterButtons($container, max);
gform.doAction('gform_repeater_post_item_delete', $container);
}
function gformResetRepeaterAttributes($container, depth, row){
var cachedRadioSelection=null;
if(typeof depth==='undefined'){
depth=0;
}
if(typeof row==='undefined'){
row=0;
}
$container.children('.gfield_repeater_items').children('.gfield_repeater_item').each(function (){
var $children=jQuery(this).children('.gfield_repeater_cell');
$children.each(function (){
var $cell=jQuery(this);
var $subContainer=jQuery(this).find('.gfield_repeater_container').first();
if($subContainer.length > 0){
var newDepth=depth + 1;
gformResetRepeaterAttributes($subContainer, newDepth, row);
return;
}
jQuery(this).find('input, select, textarea, :checkbox, :radio').each(function (){
var $this=jQuery(this);
var name=$this.attr('name');
if(typeof name=='undefined'){
return;
}
var regEx=/^(input_[^\[]*)((\[[0-9]+\])+)/,
parts=regEx.exec(name);
if(!parts){
return;
}
var inputName=parts[1],
arayParts=parts[2],
regExIndex=/\[([0-9]+)\]/g,
indexes=[],
match=regExIndex.exec(arayParts);
while (match!=null){
indexes.push(match[1]);
match=regExIndex.exec(arayParts);
}
var newNameIndex=parts[1];
indexes=indexes.reverse();
var newId='';
for (var n=indexes.length - 1; n >=0; n--){
if(n==depth){
newNameIndex +='[' + row + ']';
newId +='-' + row;
}else{
newNameIndex +='[' + indexes[n] + ']';
newId +='-' + indexes[n];
}}
var currentId=$this.attr('id');
var $label=$cell.find("label[for='" + currentId + "']");
if(currentId){
var matches=currentId.match(/((choice|input)_[0-9|_]*)-/);
if(matches&&matches[2]){
newId=matches[1] + newId;
$label.attr('for', newId);
$this.attr('id', newId);
}}
var newName=name.replace(parts[0], newNameIndex),
newNameIsChecked=jQuery('input[name="'+ newName +'"]').is(':checked');
if($this.is(':radio')&&$this.is(':checked')&&name!==newName&&newNameIsChecked){
if(cachedRadioSelection!==null){
cachedRadioSelection.prop('checked', true);
}
$this.prop('checked', false);
cachedRadioSelection=$this;
}
$this.attr('name', newName);
});
});
if(depth===0){
row++;
}});
if(cachedRadioSelection!==null){
cachedRadioSelection.prop('checked', true);
cachedRadioSelection=null;
}}
function gformToggleRepeaterButtons($container){
var max=$container.closest('.gfield_repeater_wrapper').data('max_items'),
groupCount=$container.children('.gfield_repeater_items').children('.gfield_repeater_item').length,
$buttonsContainer=$container.children('.gfield_repeater_items').children('.gfield_repeater_item').children('.gfield_repeater_buttons'),
$addButtons=$buttonsContainer.children('.add_repeater_item');
$buttonsContainer.children('.remove_repeater_item').css('visibility', groupCount==1 ? 'hidden':'visible');
if(max > 0&&groupCount >=max){
$addButtons.data('title', $buttonsContainer.children('.add_repeater_item').attr('title'));
$addButtons.addClass('gfield_icon_disabled').attr('title', '');
}else if(max > 0){
$addButtons.removeClass('gfield_icon_disabled');
if($addButtons.data('title')){
$addButtons.attr('title', $addButtons.data('title'));
}}
$container
.children('.gfield_repeater_items')
.children('.gfield_repeater_item')
.children('.gfield_repeater_cell').each(function (i){
var $subContainer=jQuery(this).find('.gfield_repeater_container').first();
if($subContainer.length > 0){
gformToggleRepeaterButtons($subContainer);
}});
}
function gformMatchCard(id){
var cardType=gformFindCardType(jQuery('#' + id).val());
var cardContainer=jQuery('#' + id).parents('.gfield').find('.gform_card_icon_container');
if(!cardType){
jQuery(cardContainer).find('.gform_card_icon').removeClass('gform_card_icon_selected gform_card_icon_inactive');
}else{
jQuery(cardContainer).find('.gform_card_icon').removeClass('gform_card_icon_selected').addClass('gform_card_icon_inactive');
jQuery(cardContainer).find('.gform_card_icon_' + cardType).removeClass('gform_card_icon_inactive').addClass('gform_card_icon_selected');
}}
function gformFindCardType(value){
if(value.length < 4)
return false;
var rules=window['gf_cc_rules'];
var validCardTypes=new Array();
for(type in rules){
if(!rules.hasOwnProperty(type))
continue;
for(i in rules[type]){
if(!rules[type].hasOwnProperty(i))
continue;
if(rules[type][i].indexOf(value.substring(0, rules[type][i].length))===0){
validCardTypes[validCardTypes.length]=type;
break;
}}
}
return validCardTypes.length==1 ? validCardTypes[0].toLowerCase():false;
}
function gformToggleCreditCard(){
if(jQuery("#gform_payment_method_creditcard").is(":checked"))
jQuery(".gform_card_fields_container").slideDown();
else
jQuery(".gform_card_fields_container").slideUp();
}
function gformInitChosenFields(fieldList, noResultsText){
return jQuery(fieldList).each(function(){
var element=jQuery(this);
var isConvoForm=typeof gfcf_theme_config!=='undefined' ?(gfcf_theme_config!==null&&typeof gfcf_theme_config.data!=='undefined' ? gfcf_theme_config.data.is_conversational_form:undefined):false;
if(jQuery('html').attr('dir')=='rtl'){
element.addClass('chosen-rtl chzn-rtl');
}
if(( element.is(':visible')||isConvoForm)&&element.siblings('.chosen-container').length==0){
var chosenOptions={ no_results_text: noResultsText };
if(isConvoForm){
chosenOptions.width=element.css('inline-size');
}
var options=gform.applyFilters('gform_chosen_options', chosenOptions, element);
element.chosen(options);
}});
}
function gformInitCurrencyFormatFields(fieldList){
jQuery(fieldList).each(function(){
var $this=jQuery(this);
$this.val(gformFormatMoney(jQuery(this).val()) );
}).change(function(event){
jQuery(this).val(gformFormatMoney(jQuery(this).val()) );
});
}
var GFMergeTag=function(){
GFMergeTag.getMergeTagValue=function(formId, inputId, modifier){
if(modifier===undefined){
modifier='';
}
modifier=modifier.replace(":", "");
var fieldId=parseInt(inputId,10);
var isCopyPreviousAddressChecked=jQuery('#input_' + formId + '_' + fieldId + '_copy_values_activated:checked').length > 0;
if(isCopyPreviousAddressChecked){
var sourceFieldId=jQuery('#input_' + formId + '_' + fieldId + '_copy_values_activated').data('source_field_id');
inputId=inputId==fieldId ? sourceFieldId:inputId.toString().replace(fieldId + '.', sourceFieldId + '.');
fieldId=sourceFieldId;
}
var field=jQuery('#field_' + formId + '_' + fieldId);
var inputSelector=fieldId==inputId ? 'input[name^="input_' + fieldId + '"]':'input[name="input_' + inputId + '"]';
var input=field.find(inputSelector + ', select[name^="input_' + inputId + '"], textarea[name="input_' + inputId + '"]');
var isVisible=window['gf_check_field_rule'] ? gf_check_field_rule(formId, fieldId, true, '')=='show':true,
val;
if(! isVisible){
return '';
}
if(field.find('.ginput_container_email').hasClass('ginput_complex') ){
input=input.first();
}
var value=gform.applyFilters('gform_value_merge_tag_' + formId + '_' + fieldId, false, input, modifier);
if(value!==false){
return value;
}
value='';
switch(modifier){
case 'label':
var label=field.find('.gfield_label');
label.find('.screen-reader-text').remove();
var labelText=label.text();
return labelText;
break;
case 'qty':
if(field.hasClass('gfield_price')){
val=gformGetProductQuantity(formId, fieldId);
return val===false||val==='' ? 0:val;
}
break;
}
if(input.prop('type')==='checkbox'||input.prop('type')==='radio'){
input=input.filter(':checked');
}
if(input.length===1){
if(( input.is('select')||input.prop('type')==='radio'||input.prop('type')==='checkbox')&&modifier===''){
if(input.is('select') ){
val=input.find('option:selected');
}else if(input.prop('type')==='radio'&&input.parent().hasClass('gchoice_button') ){
val=input.parent().siblings('.gchoice_label').find('label').clone();
}else{
val=input.next('label').clone();
}
val.find('span').remove();
if(val.length===1){
val=val.text();
}else{
var option=[];
for(var i=0; i<val.length; i++){
option[i]=jQuery(val[i]).text();
}
val=option;
}}else if(val===undefined){
val=input.val();
}
if(jQuery.isArray(val) ){
value=val.join(', ');
}else if(typeof val==='string'){
value=GFMergeTag.formatValue(val, modifier);
}else{
value='';
}}else if(input.length > 1){
val=[];
for(var i=0; i<input.length; i++){
if(( input.prop('type')==='checkbox')&&modifier===''){
var clone=jQuery(input[i]).next('label').clone();
clone.find('span').remove()
val[i]=GFMergeTag.formatValue(clone.text(), modifier);
clone.remove();
}else{
val[i]=GFMergeTag.formatValue(jQuery(input[i]).val(), modifier);
}}
value=val.join(', ');
}
return value;
}
GFMergeTag.replaceMergeTags=function(formId, text){
var mergeTags=GFMergeTag.parseMergeTags(text);
for(i in mergeTags){
if(! mergeTags.hasOwnProperty(i)){
continue;
}
var inputId=mergeTags[i][1];
var fieldId=parseInt(inputId,10);
var modifier=mergeTags[i][3]==undefined ? '':mergeTags[i][3].replace(":", "");
var value=GFMergeTag.getMergeTagValue(formId, inputId, modifier);
text=text.replace(mergeTags[i][0], value);
}
return text;
}
GFMergeTag.formatValue=function(value, modifier){
value=value.split('|');
var val='';
if(value.length > 1){
val=modifier==='price'||modifier==='currency' ? gformToNumber(value[1]):value[0];
}else{
val=value[0];
}
switch(modifier){
case 'price':
val=gformToNumber(val);
val=val===false ? '':val;
break;
case 'currency':
val=gformFormatMoney(val, false);
val=val===false ? '':val;
break;
case 'numeric':
val=gformToNumber(val);
return val===false ? 0:val;
break;
default:
val=val.trim();
break;
}
return val;
}
GFMergeTag.parseMergeTags=function(text, regEx){
if(typeof regEx==='undefined'){
regEx=/{[^{]*?:(\d+(\.\d+)?)(:(.*?))?}/i;
}
var matches=[];
while(regEx.test(text) ){
var i=matches.length;
matches[i]=regEx.exec(text);
text=text.replace('' + matches[i][0], '');
}
return matches;
}}
new GFMergeTag();
var GFCalc=function(formId, formulaFields){
this.formId=formId;
this.formulaFields=formulaFields;
this.exprPatt=/^[0-9 -/*\(\)]+$/i;
this.isCalculating={};
this.init=function(formId, formulaFields){
var calc=this;
jQuery(document)
.off("gform_post_conditional_logic.gfCalc_{0}".gformFormat(formId))
.on("gform_post_conditional_logic.gfCalc_{0}".gformFormat(formId), function(){
calc.runCalcs(formId, formulaFields);
});
for(var i=0; i<formulaFields.length; i++){
var formulaField=jQuery.extend({}, formulaFields[i]);
this.runCalc(formulaField, formId);
this.bindCalcEvents(formulaField, formId);
}}
this.runCalc=function(formulaField, formId){
var calcObj=this,
field=jQuery('#field_' + formId + '_' + formulaField.field_id),
formulaInput=field.hasClass('gfield_price') ? jQuery('#ginput_base_price_' + formId + '_' + formulaField.field_id):jQuery('#input_' + formId + '_' + formulaField.field_id),
previous_val=formulaInput.val(),
formula=gform.applyFilters('gform_calculation_formula', formulaField.formula, formulaField, formId, calcObj),
expr=calcObj.replaceFieldTags(formId, formula, formulaField).replace(/(\r\n|\n|\r)/gm,""),
result='';
if(calcObj.exprPatt.test(expr)){
try {
result=eval(expr);
} catch(e){ }}else{
return;
}
if(! isFinite(result) )
result=0;
if(window["gform_calculation_result"]){
result=window["gform_calculation_result"](result, formulaField, formId, calcObj);
if(window.console)
console.log('"gform_calculation_result" function is deprecated since version 1.8! Use "gform_calculation_result" JS hook instead.');
}
result=gform.applyFilters('gform_calculation_result', result, formulaField, formId, calcObj);
var formattedResult=gform.applyFilters('gform_calculation_format_result', false, result, formulaField, formId, calcObj);
var numberFormat=gf_get_field_number_format(formulaField.field_id, formId);
if(formattedResult!==false){
result=formattedResult;
}
else if(field.hasClass('gfield_price')||numberFormat=="currency"){
result=gformFormatMoney(result ? result:0, true);
}else{
var decimalSeparator=".";
var thousandSeparator=",";
if(numberFormat=="decimal_comma"){
decimalSeparator=",";
thousandSeparator=".";
}
result=gformFormatNumber(result, !gformIsNumber(formulaField.rounding) ? -1:formulaField.rounding, decimalSeparator, thousandSeparator);
}
if(result==previous_val)
return;
if(field.hasClass('gfield_price')){
jQuery('#input_' + formId + '_' + formulaField.field_id).text(result);
formulaInput.val(result).trigger('change');
if(jQuery('.gfield_label_product').length&&! jQuery('.ginput_total').length){
result=jQuery('label[ for=input_' + formId + '_' + formulaField.field_id + '_1 ]').find('.gfield_label_product').text() + ' ' + result;
wp.a11y.speak(result);
}
gformCalculateTotalPrice(formId);
}else{
formulaInput.val(result).trigger('change');
}};
this.runCalcs=function(formId, formulaFields){
for(var i=0; i<formulaFields.length; i++){
var formulaField=jQuery.extend({}, formulaFields[i]);
this.runCalc(formulaField, formId);
}}
this.bindCalcEvents=function(formulaField, formId){
var calcObj=this;
var formulaFieldId=formulaField.field_id;
var matches=GFMergeTag.parseMergeTags(formulaField.formula);
calcObj.isCalculating[formulaFieldId]=false;
for(var i in matches){
if(! matches.hasOwnProperty(i))
continue;
var inputId=matches[i][1];
var fieldId=parseInt(inputId,10);
var input=jQuery('#field_' + formId + '_' + fieldId).find('input[name="input_' + inputId + '"], select[name="input_' + inputId + '"]');
if(input.prop('type')=='checkbox'||input.prop('type')=='radio'){
jQuery(input).click(function(){
calcObj.bindCalcEvent(inputId, formulaField, formId, 0);
});
} else
if(input.is('select')||input.prop('type')=='hidden'){
jQuery(input).change(function(){
calcObj.bindCalcEvent(inputId, formulaField, formId, 0);
});
}else{
jQuery(input).keydown(function(){
calcObj.bindCalcEvent(inputId, formulaField, formId);
}).change(function(){
calcObj.bindCalcEvent(inputId, formulaField, formId, 0);
});
}
gform.doAction('gform_post_calculation_events', matches[i], formulaField, formId, calcObj);
}}
this.bindCalcEvent=function(inputId, formulaField, formId, delay){
var calcObj=this;
var formulaFieldId=formulaField.field_id;
delay=delay==undefined ? 345:delay;
if(calcObj.isCalculating[formulaFieldId][inputId])
clearTimeout(calcObj.isCalculating[formulaFieldId][inputId]);
calcObj.isCalculating[formulaFieldId][inputId]=window.setTimeout(function(){
calcObj.runCalc(formulaField, formId);
}, delay);
}
this.replaceFieldTags=function(formId, expr, formulaField){
var matches=GFMergeTag.parseMergeTags(expr);
for(i in matches){
if(! matches.hasOwnProperty(i))
continue;
var inputId=matches[i][1];
var fieldId=parseInt(inputId,10);
if(fieldId==formulaField.field_id&&fieldId==inputId){
continue;
}
var modifier='value';
if(matches[i][3]){
modifier=matches[i][3];
}else{
var is_product_radio=jQuery('.gfield_price input[name=input_' + fieldId + ']').is('input[type=radio]');
var is_product_dropdown=jQuery('.gfield_price select[name=input_' + fieldId + ']').length > 0;
var is_option_checkbox=jQuery('.gfield_price input[name="input_' + inputId + '"]').is('input[type=checkbox]');
if(is_product_dropdown||is_product_radio||is_option_checkbox){
modifier='price';
}}
var isVisible=window['gf_check_field_rule'] ? gf_check_field_rule(formId, fieldId, true, '')=='show':true;
var value=isVisible ? GFMergeTag.getMergeTagValue(formId, inputId, modifier):0;
value=gform.applyFilters('gform_merge_tag_value_pre_calculation', value, matches[i], isVisible, formulaField, formId);
value=this.cleanNumber(value, formId, fieldId, formulaField);
expr=expr.replace(matches[i][0], value);
}
return expr;
}
this.cleanNumber=function(value, formId, fieldId, formulaField){
var numberFormat=gf_get_field_number_format(fieldId, formId);
if(! numberFormat){
numberFormat=gf_get_field_number_format(formulaField.field_id, formId);
}
var decimalSeparator=gformGetDecimalSeparator(numberFormat);
value=gformCleanNumber(value, '', '', decimalSeparator);
if(! value)
value=0;
return value;
}
this.init(formId, formulaFields);
}
function gformFormatNumber(number, rounding, decimalSeparator, thousandSeparator){
if(typeof decimalSeparator=="undefined"){
if(window['gf_global']){
var currency=new Currency(gf_global.gf_currency_config);
decimalSeparator=currency.currency["decimal_separator"];
}else{
decimalSeparator=".";
}}
if(typeof thousandSeparator=="undefined"){
if(window['gf_global']){
var currency=new Currency(gf_global.gf_currency_config);
thousandSeparator=currency.currency["thousand_separator"];
}else{
thousandSeparator=",";
}}
var currency=new Currency();
return currency.numberFormat(number, rounding, decimalSeparator, thousandSeparator, false)
}
/**
* @deprecated. Use GFMergeTags.parseMergeTag() instead
*/
function getMatchGroups(expr, patt){
var matches=new Array();
while(patt.test(expr)){
var i=matches.length;
matches[i]=patt.exec(expr)
expr=expr.replace('' + matches[i][0], '');
}
return matches;
}
function gf_get_field_number_format(fieldId, formId, context){
var fieldNumberFormats=rgars(window, 'gf_global/number_formats/{0}/{1}'.gformFormat(formId, fieldId)),
format=false;
if(fieldNumberFormats===''){
return format;
}
if(typeof context=='undefined'){
format=fieldNumberFormats.price!==false ? fieldNumberFormats.price:fieldNumberFormats.value;
}else{
format=fieldNumberFormats[context];
}
return format;
}
gform.recaptcha={
renderRecaptcha: function(){
jQuery('.ginput_recaptcha:not(.gform-initialized)').each(function(){
var $elem=jQuery(this),
parameters={
'sitekey':  $elem.data('sitekey'),
'theme':    $elem.data('theme'),
'tabindex': $elem.data('tabindex')
};
if($elem.data('stoken') ){
parameters.stoken=$elem.data('stoken');
}
var callback=false;
if($elem.data('size')=='invisible'){
callback=function(token){
if(token){
$elem.closest('form').submit();
}}
}
callback=gform.applyFilters('gform_recaptcha_callback', callback, $elem);
if(callback){
parameters.callback=callback;
}
$elem.data('widget-id', grecaptcha.render(this.id, parameters) );
if(parameters.tabindex){
$elem.find('iframe').attr('tabindex', parameters.tabindex);
}
$elem.addClass('gform-initialized');
gform.doAction('gform_post_recaptcha_render', $elem);
});
},
gformIsRecaptchaPending: function(form){
var recaptcha=form.find('.ginput_recaptcha'),
recaptchaResponse;
if(!recaptcha.length||recaptcha.data('size')!=='invisible'){
return false;
}
recaptchaResponse=recaptcha.find('.g-recaptcha-response');
return !(recaptchaResponse.length&&recaptchaResponse.val());
},
needsRender: function(){
return document.querySelectorAll('.ginput_recaptcha:not(.gform-initialized)')[ 0 ];
},
renderOnRecaptchaLoaded: function(){
if(! gform.recaptcha.needsRender()){
return;
}
var gfRecaptchaPoller=setInterval(function(){
if(! window.grecaptcha||! window.grecaptcha.render){
return;
}
this.renderRecaptcha();
clearInterval(gfRecaptchaPoller);
}, 100);
}};
gform.initializeOnLoaded(gform.recaptcha.renderOnRecaptchaLoaded);
jQuery(document).on('gform_post_render', gform.recaptcha.renderOnRecaptchaLoaded);
window.renderRecaptcha=gform.recaptcha.renderRecaptcha;
window.gformIsRecaptchaPending=gform.recaptcha.gformIsRecaptchaPending;
function gformValidateFileSize(field, max_file_size){
var validation_element;
if(jQuery(field).closest('div').siblings('.validation_message').length > 0){
validation_element=jQuery(field).closest('div').siblings('.validation_message');
}else{
validation_element=jQuery(field).siblings('.validation_message');
}
if(! window.FileReader||! window.File||! window.FileList||! window.Blob){
return;
}
var file=field.files[0];
if(file&&file.size > max_file_size){
validation_element.text(file.name + " - " + gform_gravityforms.strings.file_exceeds_limit);
wp.a11y.speak(file.name + " - " + gform_gravityforms.strings.file_exceeds_limit);
}else{
validation_element.remove();
}}
(function (gfMultiFileUploader, $){
gfMultiFileUploader.uploaders={};
var strings=typeof gform_gravityforms!='undefined' ? gform_gravityforms.strings:{};
var imagesUrl=typeof gform_gravityforms!='undefined' ? gform_gravityforms.vars.images_url:"";
$(document).on('gform_post_render', function(e, formID){
$("form#gform_" + formID + " .gform_fileupload_multifile").each(function(){
setup(this);
});
var $form=$("form#gform_" + formID);
if($form.length > 0){
$form.on('submit', function(){
var pendingUploads=false;
$.each(gfMultiFileUploader.uploaders, function(i, uploader){
if(uploader.total.queued>0){
pendingUploads=true;
return false;
}});
if(pendingUploads){
alert(strings.currently_uploading);
window["gf_submitting_" + formID]=false;
$('#gform_ajax_spinner_' + formID).remove();
return false;
}});
}});
$(document).on("gform_post_conditional_logic", function(e,formID, fields, isInit){
if(!isInit){
$.each(gfMultiFileUploader.uploaders, function(i, uploader){
uploader.refresh();
});
}});
$(document).ready(function (){
if((typeof adminpage!=='undefined'&&adminpage==='toplevel_page_gf_edit_forms')||typeof plupload=='undefined'){
$(".gform_button_select_files").prop("disabled", true);
}else if(typeof adminpage!=='undefined'&&adminpage.indexOf('_page_gf_entries') > -1){
$(".gform_fileupload_multifile").each(function(){
setup(this);
});
}});
gfMultiFileUploader.setup=function (uploadElement){
setup(uploadElement);
};
function setup(uploadElement){
var settings=$(uploadElement).data('settings');
var uploader=new plupload.Uploader(settings);
formID=uploader.settings.multipart_params.form_id;
gfMultiFileUploader.uploaders[settings.container]=uploader;
var formID;
var uniqueID;
uploader.bind('Init', function(up, params){
if(! up.features.dragdrop){
$(".gform_drop_instructions").hide();
}
setFieldAccessibility(up.settings.container);
toggleLimitReached(up.settings);
});
gfMultiFileUploader.toggleDisabled=function (settings, disabled){
var button=typeof settings.browse_button=="string" ? $("#" + settings.browse_button):$(settings.browse_button);
button.prop("disabled", disabled);
};
function setFieldAccessibility(container){
var input=container.querySelectorAll('input[type="file"]')[ 0 ];
var button=container.querySelectorAll('.gform_button_select_files')[ 0 ];
var label=$(uploadElement).closest('.gfield').find('.gfield_label')[ 0 ];
if(! input||! label||! button){
return;
}
label.setAttribute('for', input.id);
button.setAttribute('aria-label', button.innerText.toLowerCase() + ', ' + label.innerText.toLowerCase());
input.setAttribute('tabindex', '-1');
input.setAttribute('aria-hidden', 'true');
}
function addMessage(messagesID, message){
$("#" + messagesID).prepend("<li class='gfield_description gfield_validation_message'>" + htmlEncode(message) + "</li>");
setTimeout(function (){
wp.a11y.speak($("#" + messagesID).text());
}, 1000);
}
function removeMessage(messagesID, message){
$("#" + messagesID + " li:contains('" + message + "')").remove();
}
function toggleLimitReached(settings){
var limit=parseInt(settings.gf_vars.max_files, 10);
if(limit > 0){
var totalCount=countFiles(settings.multipart_params.field_id),
limitReached=totalCount >=limit;
gfMultiFileUploader.toggleDisabled(settings, limitReached);
if(!limitReached){
removeMessage(settings.gf_vars.message_id, strings.max_reached);
}}
}
uploader.init();
uploader.bind('BeforeUpload', function(up, file){
up.settings.multipart_params.original_filename=file.name;
});
uploader.bind('FilesAdded', function(up, files){
var max=parseInt(up.settings.gf_vars.max_files,10),
fieldID=up.settings.multipart_params.field_id,
totalCount=countFiles(fieldID),
disallowed=up.settings.gf_vars.disallowed_extensions,
extension;
if(max > 0&&totalCount >=max){
$.each(files, function(i, file){
up.removeFile(file);
return;
});
return;
}
$.each(files, function(i, file){
extension=file.name.split('.').pop();
if($.inArray(extension, disallowed) > -1){
addMessage(up.settings.gf_vars.message_id, file.name + " - " + strings.illegal_extension);
up.removeFile(file);
return;
}
if((file.status==plupload.FAILED)||(max > 0&&totalCount >=max)){
up.removeFile(file);
return;
}
var size=typeof file.size!=='undefined' ? plupload.formatSize(file.size):strings.in_progress,
removeFileJs='$this=jQuery(this); var uploader=gfMultiFileUploader.uploaders.' + up.settings.container.id + ';uploader.stop();uploader.removeFile(uploader.getFile(\'' + file.id +'\'));$this.after(\'' + strings.cancelled + '\'); uploader.start();$this.remove();',
statusMarkup='<div id="{0}" class="ginput_preview"><span class="gfield_fileupload_filename">{1}</span><span class="gfield_fileupload_filesize">{2}</span><span class="gfield_fileupload_progress"><span class="gfield_fileupload_progressbar"><span class="gfield_fileupload_progressbar_progress"></span></span><span class="gfield_fileupload_percent"></span></span><a class="gfield_fileupload_cancel gform-theme-button gform-theme-button--simple" href="javascript:void(0)" title="{3}" onclick="{4}" onkeypress="{4}">{5}</a>';
statusMarkup=gform.applyFilters('gform_file_upload_status_markup', statusMarkup, file, size, strings, removeFileJs, up)
.gformFormat(file.id, htmlEncode(file.name), size, strings.cancel_upload, removeFileJs, strings.cancel);
$('#' + up.settings.filelist).prepend(statusMarkup);
totalCount++;
});
up.refresh();
var formElementID="form#gform_" + formID;
var uidElementID="input:hidden[name='gform_unique_id']";
var uidSelector=formElementID + " " + uidElementID;
var $uid=$(uidSelector);
if($uid.length==0){
$uid=$(uidElementID);
}
uniqueID=$uid.val();
if(''===uniqueID){
uniqueID=generateUniqueID();
$uid.val(uniqueID);
}
if(max > 0&&totalCount >=max){
gfMultiFileUploader.toggleDisabled(up.settings, true);
addMessage(up.settings.gf_vars.message_id, strings.max_reached)
}
up.settings.multipart_params.gform_unique_id=uniqueID;
up.start();
});
uploader.bind('UploadProgress', function(up, file){
var html=file.percent + "%";
$('#' + file.id + ' span.gfield_fileupload_percent').html(html);
$('#' + file.id + ' span.gfield_fileupload_progressbar_progress').css('width', file.percent + '%');
});
uploader.bind('Error', function(up, err){
if(err.code===plupload.FILE_EXTENSION_ERROR){
var extensions=typeof up.settings.filters.mime_types!='undefined' ? up.settings.filters.mime_types[0].extensions :up.settings.filters[0].extensions;
addMessage(up.settings.gf_vars.message_id, err.file.name + " - " + strings.invalid_file_extension + " " + extensions);
}else if(err.code===plupload.FILE_SIZE_ERROR){
addMessage(up.settings.gf_vars.message_id, err.file.name + " - " + strings.file_exceeds_limit);
}else{
var m="Error: " + err.code +
", Message: " + err.message +
(err.file ? ", File: " + err.file.name:"");
addMessage(up.settings.gf_vars.message_id, m);
}
$('#' + err.file.id).html('');
up.refresh();
});
uploader.bind('ChunkUploaded', function(up, file, result){
var response=$.secureEvalJSON(result.response);
if(response.status=="error"){
up.removeFile(file);
addMessage(up.settings.gf_vars.message_id, file.name + " - " + response.error.message);
$('#' + file.id).html('');
}else{
up.settings.multipart_params[file.target_name]=response.data;
}});
uploader.bind('FileUploaded', function(up, file, result){
if(!up.getFile(file.id)){
return;
}
var response=$.secureEvalJSON(result.response);
if(response.status=="error"){
addMessage(up.settings.gf_vars.message_id, file.name + " - " + response.error.message);
$('#' + file.id).html('');
toggleLimitReached(up.settings);
return;
}
var uploadedName=rgars(response, 'data/uploaded_filename');
var html='<span class="gfield_fileupload_filename">' + htmlEncode(uploadedName) + '</span><span class="gfield_fileupload_filesize">' + plupload.formatSize(file.size) + '</span>';
html +='<span class="gfield_fileupload_progress gfield_fileupload_progress_complete"><span class="gfield_fileupload_progressbar"><span class="gfield_fileupload_progressbar_progress"></span></span><span class="gfield_fileupload_percent">' + file.percent + '%</span></span>';
var formId=up.settings.multipart_params.form_id;
var fieldId=up.settings.multipart_params.field_id;
if(typeof gf_legacy!=='undefined'&&gf_legacy.is_legacy){
html="<img "
+ "class='gform_delete' "
+ "src='" + imagesUrl + "/delete.png' "
+ "onclick='gformDeleteUploadedFile(" + formId + "," + fieldId + ", this);' "
+ "onkeypress='gformDeleteUploadedFile(" + formId + "," + fieldId + ", this);' "
+ "alt='" + strings.delete_file + "' "
+ "title='" + strings.delete_file
+ "' /> "
+ html;
}else{
html=html + "<button class='gform_delete_file gform-theme-button gform-theme-button--simple' onclick='gformDeleteUploadedFile(" + formId + "," + fieldId + ", this);'><span class='dashicons dashicons-trash' aria-hidden='true'></span><span class='screen-reader-text'>" + strings.delete_file + ': ' + htmlEncode(uploadedName) + "</span></button>";
}
html=gform.applyFilters('gform_file_upload_markup', html, file, up, strings, imagesUrl, response);
$('#' + file.id).html(html);
$('#' + file.id + ' span.gfield_fileupload_progressbar_progress').css('width', file.percent + '%');
if(file.percent==100){
if(response.status&&response.status=='ok'){
addFile(fieldId, response.data);
}else{
addMessage(up.settings.gf_vars.message_id, strings.unknown_error + ': ' + file.name);
}}
});
uploader.bind('FilesRemoved', function (up, files){
toggleLimitReached(up.settings);
});
function getAllFiles(){
var selector='#gform_uploaded_files_' + formID,
$uploadedFiles=$(selector), files;
files=$uploadedFiles.val();
files=(typeof files==="undefined")||files==='' ? {}:$.parseJSON(files);
return files;
}
function getFiles(fieldID){
var allFiles=getAllFiles();
var inputName=getInputName(fieldID);
if(typeof allFiles[inputName]=='undefined')
allFiles[inputName]=[];
return allFiles[inputName];
}
function countFiles(fieldID){
var files=getFiles(fieldID);
return files.length;
}
function addFile(fieldID, fileInfo){
var files=getFiles(fieldID);
files.unshift(fileInfo);
setUploadedFiles(fieldID, files);
}
function setUploadedFiles(fieldID, files){
var allFiles=getAllFiles();
var $uploadedFiles=$('#gform_uploaded_files_' + formID);
var inputName=getInputName(fieldID);
allFiles[inputName]=files;
$uploadedFiles.val($.toJSON(allFiles));
}
function getInputName(fieldID){
return "input_" + fieldID;
}
$("#" + settings.drop_element).on({
"dragenter": ignoreDrag,
"dragover": ignoreDrag
});
function ignoreDrag(e){
e.preventDefault();
}}
function generateUniqueID(){
return 'xxxxxxxx'.replace(/[xy]/g, function (c){
var r=Math.random() * 16 | 0, v=c=='x' ? r:r & 0x3 | 0x8;
return v.toString(16);
});
}
function htmlEncode(value){
return $('<div/>').text(value).html();
}}(window.gfMultiFileUploader=window.gfMultiFileUploader||{}, jQuery));
function gformInitSpinner(formId, spinnerUrl, isLegacy=true){
var spinnerCheck=gform.applyFilters('gform_spinner_url', spinnerUrl, formId);
if(spinnerCheck!=spinnerUrl){
isLegacy=true;
}
jQuery('#gform_' + formId).on('submit', function (){
if(isLegacy){
gformAddSpinner(formId, spinnerUrl);
return;
}
var $spinnerTarget=gform.applyFilters('gform_spinner_target_elem', jQuery('#gform_submit_button_' + formId + ', #gform_wrapper_' + formId + ' .gform_next_button, #gform_send_resume_link_button_' + formId), formId);
gformInitializeSpinner(formId, $spinnerTarget);
});
}
function gformInitializeSpinner(formId, target, uniqId='gform-ajax-spinner'){
if(jQuery('#gform_ajax_spinner_' + formId).length==0){
var loaderHTML='<span data-js-spinner-id="' + uniqId + '" id="gform_ajax_spinner_' + formId + '" class="gform-loader"></span>';
var $spinnerTarget=target instanceof jQuery ? target:jQuery(target);
$spinnerTarget.after(loaderHTML);
}}
function gformRemoveSpinner(uniqId='gform-ajax-spinner'){
var spinner=document.querySelector('[data-js-spinner-id="' + uniqId + '"]');
if(! spinner){
return;
}
spinner.remove();
}
function gformAddSpinner(formId, spinnerUrl){
if(typeof spinnerUrl=='undefined'||!spinnerUrl){
spinnerUrl=gform.applyFilters('gform_spinner_url', gf_global.spinnerUrl, formId);
}
if(jQuery('#gform_ajax_spinner_' + formId).length==0){
var $spinnerTarget=gform.applyFilters('gform_spinner_target_elem', jQuery('#gform_submit_button_' + formId + ', #gform_wrapper_' + formId + ' .gform_next_button, #gform_send_resume_link_button_' + formId), formId);
$spinnerTarget.after('<img id="gform_ajax_spinner_' + formId + '"  class="gform_ajax_spinner" src="' + spinnerUrl + '" alt="" />');
}}
function gformReInitTinymceInstance(formId, fieldId){
if(! formId||! fieldId){
gform.console.error('gformReInitTinymceInstance requires a form and field id.');
return;
}
var tinymce=window.tinymce;
if(! tinymce){
gform.console.error('gformReInitTinymceInstance requires tinymce to be available.');
return;
}
var editor=tinymce.get('input_' + formId + '_' + fieldId);
if(! editor){
gform.console.error('gformReInitTinymceInstance did not find an instance for input_' + formId + '_' + fieldId + '.');
return;
}
var settings=jQuery.extend({}, editor.settings);
editor.remove();
tinymce.init(settings);
gform.console.log('gformReInitTinymceInstance reinitialized TinyMCE on input_' + formId + '_' + fieldId + '.');
}
var __gf_keyup_timeout;
jQuery(document).on('change keyup', '.gfield input, .gfield select, .gfield textarea', function(event){
gf_raw_input_change(event, this);
});
function gf_raw_input_change(event, elem){
clearTimeout(__gf_keyup_timeout);
var $input=jQuery(elem),
htmlId=$input.attr('id'),
fieldId=gf_get_input_id_by_html_id(htmlId),
formId=gf_get_form_id_by_html_id(htmlId),
fieldMeta=gform.applyFilters('gform_field_meta_raw_input_change', { fieldId: fieldId, formId: formId }, $input, event);
fieldId=fieldMeta.fieldId;
formId=fieldMeta.formId;
if(! fieldId){
return;
}
var isChangeElem=$input.is(':checkbox')||$input.is(':radio')||$input.is('select'),
isKeyupElem  = ! isChangeElem||$input.is('textarea');
if(event.type=='keyup'&&! isKeyupElem){
return;
}else if(event.type=='change'&&! isChangeElem&&! isKeyupElem){
return;
}
if(event.type=='keyup'){
__gf_keyup_timeout=setTimeout(function(){
gf_input_change(elem, formId, fieldId);
}, 300);
}else{
gf_input_change(elem, formId, fieldId);
}}
function gf_get_input_id_by_html_id(htmlId){
var ids=gf_get_ids_by_html_id(htmlId),
id=ids[ ids.length - 1 ];
if(ids.length==3){
ids.shift();
id=ids.join('.');
}
return id;
}
function gf_get_form_id_by_html_id(htmlId){
var ids=gf_get_ids_by_html_id(htmlId);
return ids[0];
}
function gf_get_ids_by_html_id(htmlId){
var ids=htmlId ? htmlId.split('_'):[];
for(var i=ids.length - 1; i >=0; i--){
if(! gformIsNumber(ids[ i ]) ){
ids.splice(i, 1);
}}
return ids;
}
function gf_input_change(elem, formId, fieldId){
gform.doAction('gform_input_change', elem, formId, fieldId);
}
function gformExtractFieldId(inputId){
var fieldId=parseInt(inputId.toString().split('.')[0],10);
return ! fieldId ? inputId:fieldId;
}
function gformExtractInputIndex(inputId){
var inputIndex=parseInt(inputId.toString().split('.')[1],10);
return ! inputIndex ? false:inputIndex;
}
jQuery(document).on('submit.gravityforms', '.gform_wrapper form', function(event){
var formWrapper=jQuery(this).closest('.gform_wrapper'),
formID=formWrapper.attr('id').split('_')[ 2 ],
hasPages=formWrapper.find('.gform_page').length > 0,
sourcePage=parseInt(formWrapper.find('input[name^="gform_source_page_number_"]').val(), 10),
targetPage=parseInt(formWrapper.find('input[name^="gform_target_page_number_"]').val(), 10),
isSubmit=targetPage===0,
isNextSubmit = ! isSubmit&&(targetPage > sourcePage),
isSave=jQuery('#gform_save_' + formID).val()==='1',
submitButton;
if(hasPages){
var visiblePage=formWrapper.find('.gform_page:visible'),
buttonType=isNextSubmit ? 'next':'submit';
submitButton=visiblePage.find('.gform_page_footer [id^="gform_' + buttonType + '_button_"]');
}else{
submitButton=formWrapper.find('#gform_submit_button_' + formID);
}
if(isSave){
wp.a11y.speak(window.gf_global.strings.formSaved);
}
var isButtonHidden = ! submitButton.is(':visible'),
isButtonDisabled=submitButton.is(':disabled'),
abortSubmission = ! isSave&&(isSubmit||isNextSubmit)&&(isButtonHidden||isButtonDisabled);
if(abortSubmission){
window[ 'gf_submitting_' + formID ]=false;
formWrapper.find('.gform_ajax_spinner').remove();
event.preventDefault();
}else if(isSubmit||isSubmit){
var $reCaptcha=formWrapper.find('.ginput_recaptcha');
if($reCaptcha.length!==0&&$reCaptcha.data('size')==='invisible'){
var $reCaptchaResponse=formWrapper.find('input[name="g-recaptcha-response"]');
if($reCaptchaResponse.length===0){
$reCaptchaResponse=$reCaptcha.find('.g-recaptcha-response');
}
var token=$reCaptchaResponse.val();
if(! token){
grecaptcha.execute($reCaptcha.data('widget-id'));
setTimeout(function(){
window['gf_submitting_' + formID]=false;
}, 4000);
event.preventDefault();
}}
}});
if(! window['rgars']){
function rgars(array, prop){
var props=prop.split('/'),
value=array;
for(var i=0; i < props.length; i++){
value=rgar(value, props[ i ]);
}
return value;
}}
if(! window['rgar']){
function rgar(array, prop){
if(typeof array[ prop ]!='undefined'){
return array[ prop ];
}
return '';
}}
if(! String.prototype.gformFormat){
String.prototype.gformFormat=function(){
var args=arguments;
return this.replace(/{(\d+)}/g, function(match, number){
return typeof args[ number ]!='undefined' ? args[ number ]:match;
});
};}
jQuery(document).ready(function(){
jQuery('#gform-form-toolbar__menu')
.on('mouseenter', '> li',function(){
jQuery(this).find('.gform-form-toolbar__submenu').toggleClass('open');
jQuery(this).find('.has_submenu').toggleClass('submenu-open');
});
jQuery('#gform-form-toolbar__menu')
.on('mouseleave', '> li',function(){
jQuery('.gform-form-toolbar__submenu.open').removeClass('open');
jQuery('.has_submenu.submenu-open').removeClass('submenu-open');
});
jQuery('#gform-form-toolbar__menu .has_submenu')
.on('click', function(e){
e.preventDefault();
});
});
jQuery(document).ready(function(){
var settingsFields=jQuery('.gform-settings-field');
settingsFields.each(function(){
if(jQuery(this).find('> .gform-settings-input__container').length > 1){
jQuery(this).addClass('gform-settings-field--multiple-inputs');
}});
});
jQuery(function(){
gform.tools.trigger('gform_main_scripts_loaded');
});
(function(factory){
"use strict";
if(typeof define==="function"&&define.amd){
define([ "jquery" ], factory);
}else{
factory(jQuery);
}}(function($){
"use strict";
$.ui=$.ui||{};
$.ui.version="1.13.3";
$.extend($.expr.pseudos, {
data: $.expr.createPseudo ?
$.expr.createPseudo(function(dataName){
return function(elem){
return !!$.data(elem, dataName);
};}) :
function(elem, i, match){
return !!$.data(elem, match[ 3 ]);
}});
$.fn.extend({
disableSelection:(function(){
var eventType="onselectstart" in document.createElement("div") ?
"selectstart" :
"mousedown";
return function(){
return this.on(eventType + ".ui-disableSelection", function(event){
event.preventDefault();
});
};})(),
enableSelection: function(){
return this.off(".ui-disableSelection");
}});
$.ui.focusable=function(element, hasTabindex){
var map, mapName, img, focusableIfVisible, fieldset,
nodeName=element.nodeName.toLowerCase();
if("area"===nodeName){
map=element.parentNode;
mapName=map.name;
if(!element.href||!mapName||map.nodeName.toLowerCase()!=="map"){
return false;
}
img=$("img[usemap='#" + mapName + "']");
return img.length > 0&&img.is(":visible");
}
if(/^(input|select|textarea|button|object)$/.test(nodeName) ){
focusableIfVisible = !element.disabled;
if(focusableIfVisible){
fieldset=$(element).closest("fieldset")[ 0 ];
if(fieldset){
focusableIfVisible = !fieldset.disabled;
}}
}else if("a"===nodeName){
focusableIfVisible=element.href||hasTabindex;
}else{
focusableIfVisible=hasTabindex;
}
return focusableIfVisible&&$(element).is(":visible")&&visible($(element) );
};
function visible(element){
var visibility=element.css("visibility");
while(visibility==="inherit"){
element=element.parent();
visibility=element.css("visibility");
}
return visibility==="visible";
}
$.extend($.expr.pseudos, {
focusable: function(element){
return $.ui.focusable(element, $.attr(element, "tabindex")!=null);
}});
$.fn._form=function(){
return typeof this[ 0 ].form==="string" ? this.closest("form"):$(this[ 0 ].form);
};
$.ui.formResetMixin={
_formResetHandler: function(){
var form=$(this);
setTimeout(function(){
var instances=form.data("ui-form-reset-instances");
$.each(instances, function(){
this.refresh();
});
});
},
_bindFormResetHandler: function(){
this.form=this.element._form();
if(!this.form.length){
return;
}
var instances=this.form.data("ui-form-reset-instances")||[];
if(!instances.length){
this.form.on("reset.ui-form-reset", this._formResetHandler);
}
instances.push(this);
this.form.data("ui-form-reset-instances", instances);
},
_unbindFormResetHandler: function(){
if(!this.form.length){
return;
}
var instances=this.form.data("ui-form-reset-instances");
instances.splice($.inArray(this, instances), 1);
if(instances.length){
this.form.data("ui-form-reset-instances", instances);
}else{
this.form
.removeData("ui-form-reset-instances")
.off("reset.ui-form-reset");
}}
};
$.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());
if(!$.expr.pseudos){
$.expr.pseudos=$.expr[ ":" ];
}
if(!$.uniqueSort){
$.uniqueSort=$.unique;
}
if(!$.escapeSelector){
var rcssescape=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
var fcssescape=function(ch, asCodePoint){
if(asCodePoint){
if(ch==="\0"){
return "\uFFFD";
}
return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
}
return "\\" + ch;
};
$.escapeSelector=function(sel){
return(sel + "").replace(rcssescape, fcssescape);
};}
if(!$.fn.even||!$.fn.odd){
$.fn.extend({
even: function(){
return this.filter(function(i){
return i % 2===0;
});
},
odd: function(){
return this.filter(function(i){
return i % 2===1;
});
}});
}
$.ui.keyCode={
BACKSPACE: 8,
COMMA: 188,
DELETE: 46,
DOWN: 40,
END: 35,
ENTER: 13,
ESCAPE: 27,
HOME: 36,
LEFT: 37,
PAGE_DOWN: 34,
PAGE_UP: 33,
PERIOD: 190,
RIGHT: 39,
SPACE: 32,
TAB: 9,
UP: 38
};
$.fn.labels=function(){
var ancestor, selector, id, labels, ancestors;
if(!this.length){
return this.pushStack([]);
}
if(this[ 0 ].labels&&this[ 0 ].labels.length){
return this.pushStack(this[ 0 ].labels);
}
labels=this.eq(0).parents("label");
id=this.attr("id");
if(id){
ancestor=this.eq(0).parents().last();
ancestors=ancestor.add(ancestor.length ? ancestor.siblings():this.siblings());
selector="label[for='" + $.escapeSelector(id) + "']";
labels=labels.add(ancestors.find(selector).addBack(selector) );
}
return this.pushStack(labels);
};
$.ui.plugin={
add: function(module, option, set){
var i,
proto=$.ui[ module ].prototype;
for(i in set){
proto.plugins[ i ]=proto.plugins[ i ]||[];
proto.plugins[ i ].push([ option, set[ i ] ]);
}},
call: function(instance, name, args, allowDisconnected){
var i,
set=instance.plugins[ name ];
if(!set){
return;
}
if(!allowDisconnected&&(!instance.element[ 0 ].parentNode ||
instance.element[ 0 ].parentNode.nodeType===11) ){
return;
}
for(i=0; i < set.length; i++){
if(instance.options[ set[ i ][ 0 ] ]){
set[ i ][ 1 ].apply(instance.element, args);
}}
}};
(function(){
var cachedScrollbarWidth,
max=Math.max,
abs=Math.abs,
rhorizontal=/left|center|right/,
rvertical=/top|center|bottom/,
roffset=/[\+\-]\d+(\.[\d]+)?%?/,
rposition=/^\w+/,
rpercent=/%$/,
_position=$.fn.position;
function getOffsets(offsets, width, height){
return [
parseFloat(offsets[ 0 ]) *(rpercent.test(offsets[ 0 ]) ? width / 100:1),
parseFloat(offsets[ 1 ]) *(rpercent.test(offsets[ 1 ]) ? height / 100:1)
];
}
function parseCss(element, property){
return parseInt($.css(element, property), 10)||0;
}
function isWindow(obj){
return obj!=null&&obj===obj.window;
}
function getDimensions(elem){
var raw=elem[ 0 ];
if(raw.nodeType===9){
return {
width: elem.width(),
height: elem.height(),
offset: { top: 0, left: 0 }};}
if(isWindow(raw) ){
return {
width: elem.width(),
height: elem.height(),
offset: { top: elem.scrollTop(), left: elem.scrollLeft() }};}
if(raw.preventDefault){
return {
width: 0,
height: 0,
offset: { top: raw.pageY, left: raw.pageX }};}
return {
width: elem.outerWidth(),
height: elem.outerHeight(),
offset: elem.offset()
};}
$.position={
scrollbarWidth: function(){
if(cachedScrollbarWidth!==undefined){
return cachedScrollbarWidth;
}
var w1, w2,
div=$("<div style=" +
"'display:block;position:absolute;width:200px;height:200px;overflow:hidden;'>" +
"<div style='height:300px;width:auto;'></div></div>"),
innerDiv=div.children()[ 0 ];
$("body").append(div);
w1=innerDiv.offsetWidth;
div.css("overflow", "scroll");
w2=innerDiv.offsetWidth;
if(w1===w2){
w2=div[ 0 ].clientWidth;
}
div.remove();
return(cachedScrollbarWidth=w1 - w2);
},
getScrollInfo: function(within){
var overflowX=within.isWindow||within.isDocument ? "" :
within.element.css("overflow-x"),
overflowY=within.isWindow||within.isDocument ? "" :
within.element.css("overflow-y"),
hasOverflowX=overflowX==="scroll" ||
(overflowX==="auto"&&within.width < within.element[ 0 ].scrollWidth),
hasOverflowY=overflowY==="scroll" ||
(overflowY==="auto"&&within.height < within.element[ 0 ].scrollHeight);
return {
width: hasOverflowY ? $.position.scrollbarWidth():0,
height: hasOverflowX ? $.position.scrollbarWidth():0
};},
getWithinInfo: function(element){
var withinElement=$(element||window),
isElemWindow=isWindow(withinElement[ 0 ]),
isDocument = !!withinElement[ 0 ]&&withinElement[ 0 ].nodeType===9,
hasOffset = !isElemWindow&&!isDocument;
return {
element: withinElement,
isWindow: isElemWindow,
isDocument: isDocument,
offset: hasOffset ? $(element).offset():{ left: 0, top: 0 },
scrollLeft: withinElement.scrollLeft(),
scrollTop: withinElement.scrollTop(),
width: withinElement.outerWidth(),
height: withinElement.outerHeight()
};}};
$.fn.position=function(options){
if(!options||!options.of){
return _position.apply(this, arguments);
}
options=$.extend({}, options);
var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
target=typeof options.of==="string" ?
$(document).find(options.of) :
$(options.of),
within=$.position.getWithinInfo(options.within),
scrollInfo=$.position.getScrollInfo(within),
collision=(options.collision||"flip").split(" "),
offsets={};
dimensions=getDimensions(target);
if(target[ 0 ].preventDefault){
options.at="left top";
}
targetWidth=dimensions.width;
targetHeight=dimensions.height;
targetOffset=dimensions.offset;
basePosition=$.extend({}, targetOffset);
$.each([ "my", "at" ], function(){
var pos=(options[ this ]||"").split(" "),
horizontalOffset,
verticalOffset;
if(pos.length===1){
pos=rhorizontal.test(pos[ 0 ]) ?
pos.concat([ "center" ]) :
rvertical.test(pos[ 0 ]) ?
[ "center" ].concat(pos) :
[ "center", "center" ];
}
pos[ 0 ]=rhorizontal.test(pos[ 0 ]) ? pos[ 0 ]:"center";
pos[ 1 ]=rvertical.test(pos[ 1 ]) ? pos[ 1 ]:"center";
horizontalOffset=roffset.exec(pos[ 0 ]);
verticalOffset=roffset.exec(pos[ 1 ]);
offsets[ this ]=[
horizontalOffset ? horizontalOffset[ 0 ]:0,
verticalOffset ? verticalOffset[ 0 ]:0
];
options[ this ]=[
rposition.exec(pos[ 0 ])[ 0 ],
rposition.exec(pos[ 1 ])[ 0 ]
];
});
if(collision.length===1){
collision[ 1 ]=collision[ 0 ];
}
if(options.at[ 0 ]==="right"){
basePosition.left +=targetWidth;
}else if(options.at[ 0 ]==="center"){
basePosition.left +=targetWidth / 2;
}
if(options.at[ 1 ]==="bottom"){
basePosition.top +=targetHeight;
}else if(options.at[ 1 ]==="center"){
basePosition.top +=targetHeight / 2;
}
atOffset=getOffsets(offsets.at, targetWidth, targetHeight);
basePosition.left +=atOffset[ 0 ];
basePosition.top +=atOffset[ 1 ];
return this.each(function(){
var collisionPosition, using,
elem=$(this),
elemWidth=elem.outerWidth(),
elemHeight=elem.outerHeight(),
marginLeft=parseCss(this, "marginLeft"),
marginTop=parseCss(this, "marginTop"),
collisionWidth=elemWidth + marginLeft + parseCss(this, "marginRight") +
scrollInfo.width,
collisionHeight=elemHeight + marginTop + parseCss(this, "marginBottom") +
scrollInfo.height,
position=$.extend({}, basePosition),
myOffset=getOffsets(offsets.my, elem.outerWidth(), elem.outerHeight());
if(options.my[ 0 ]==="right"){
position.left -=elemWidth;
}else if(options.my[ 0 ]==="center"){
position.left -=elemWidth / 2;
}
if(options.my[ 1 ]==="bottom"){
position.top -=elemHeight;
}else if(options.my[ 1 ]==="center"){
position.top -=elemHeight / 2;
}
position.left +=myOffset[ 0 ];
position.top +=myOffset[ 1 ];
collisionPosition={
marginLeft: marginLeft,
marginTop: marginTop
};
$.each([ "left", "top" ], function(i, dir){
if($.ui.position[ collision[ i ] ]){
$.ui.position[ collision[ i ] ][ dir ](position, {
targetWidth: targetWidth,
targetHeight: targetHeight,
elemWidth: elemWidth,
elemHeight: elemHeight,
collisionPosition: collisionPosition,
collisionWidth: collisionWidth,
collisionHeight: collisionHeight,
offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
my: options.my,
at: options.at,
within: within,
elem: elem
});
}});
if(options.using){
using=function(props){
var left=targetOffset.left - position.left,
right=left + targetWidth - elemWidth,
top=targetOffset.top - position.top,
bottom=top + targetHeight - elemHeight,
feedback={
target: {
element: target,
left: targetOffset.left,
top: targetOffset.top,
width: targetWidth,
height: targetHeight
},
element: {
element: elem,
left: position.left,
top: position.top,
width: elemWidth,
height: elemHeight
},
horizontal: right < 0 ? "left":left > 0 ? "right":"center",
vertical: bottom < 0 ? "top":top > 0 ? "bottom":"middle"
};
if(targetWidth < elemWidth&&abs(left + right) < targetWidth){
feedback.horizontal="center";
}
if(targetHeight < elemHeight&&abs(top + bottom) < targetHeight){
feedback.vertical="middle";
}
if(max(abs(left), abs(right) ) > max(abs(top), abs(bottom) )){
feedback.important="horizontal";
}else{
feedback.important="vertical";
}
options.using.call(this, props, feedback);
};}
elem.offset($.extend(position, { using: using }) );
});
};
$.ui.position={
fit: {
left: function(position, data){
var within=data.within,
withinOffset=within.isWindow ? within.scrollLeft:within.offset.left,
outerWidth=within.width,
collisionPosLeft=position.left - data.collisionPosition.marginLeft,
overLeft=withinOffset - collisionPosLeft,
overRight=collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
newOverRight;
if(data.collisionWidth > outerWidth){
if(overLeft > 0&&overRight <=0){
newOverRight=position.left + overLeft + data.collisionWidth - outerWidth -
withinOffset;
position.left +=overLeft - newOverRight;
}else if(overRight > 0&&overLeft <=0){
position.left=withinOffset;
}else{
if(overLeft > overRight){
position.left=withinOffset + outerWidth - data.collisionWidth;
}else{
position.left=withinOffset;
}}
}else if(overLeft > 0){
position.left +=overLeft;
}else if(overRight > 0){
position.left -=overRight;
}else{
position.left=max(position.left - collisionPosLeft, position.left);
}},
top: function(position, data){
var within=data.within,
withinOffset=within.isWindow ? within.scrollTop:within.offset.top,
outerHeight=data.within.height,
collisionPosTop=position.top - data.collisionPosition.marginTop,
overTop=withinOffset - collisionPosTop,
overBottom=collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
newOverBottom;
if(data.collisionHeight > outerHeight){
if(overTop > 0&&overBottom <=0){
newOverBottom=position.top + overTop + data.collisionHeight - outerHeight -
withinOffset;
position.top +=overTop - newOverBottom;
}else if(overBottom > 0&&overTop <=0){
position.top=withinOffset;
}else{
if(overTop > overBottom){
position.top=withinOffset + outerHeight - data.collisionHeight;
}else{
position.top=withinOffset;
}}
}else if(overTop > 0){
position.top +=overTop;
}else if(overBottom > 0){
position.top -=overBottom;
}else{
position.top=max(position.top - collisionPosTop, position.top);
}}
},
flip: {
left: function(position, data){
var within=data.within,
withinOffset=within.offset.left + within.scrollLeft,
outerWidth=within.width,
offsetLeft=within.isWindow ? within.scrollLeft:within.offset.left,
collisionPosLeft=position.left - data.collisionPosition.marginLeft,
overLeft=collisionPosLeft - offsetLeft,
overRight=collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
myOffset=data.my[ 0 ]==="left" ?
-data.elemWidth :
data.my[ 0 ]==="right" ?
data.elemWidth :
0,
atOffset=data.at[ 0 ]==="left" ?
data.targetWidth :
data.at[ 0 ]==="right" ?
-data.targetWidth :
0,
offset=-2 * data.offset[ 0 ],
newOverRight,
newOverLeft;
if(overLeft < 0){
newOverRight=position.left + myOffset + atOffset + offset + data.collisionWidth -
outerWidth - withinOffset;
if(newOverRight < 0||newOverRight < abs(overLeft) ){
position.left +=myOffset + atOffset + offset;
}}else if(overRight > 0){
newOverLeft=position.left - data.collisionPosition.marginLeft + myOffset +
atOffset + offset - offsetLeft;
if(newOverLeft > 0||abs(newOverLeft) < overRight){
position.left +=myOffset + atOffset + offset;
}}
},
top: function(position, data){
var within=data.within,
withinOffset=within.offset.top + within.scrollTop,
outerHeight=within.height,
offsetTop=within.isWindow ? within.scrollTop:within.offset.top,
collisionPosTop=position.top - data.collisionPosition.marginTop,
overTop=collisionPosTop - offsetTop,
overBottom=collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
top=data.my[ 1 ]==="top",
myOffset=top ?
-data.elemHeight :
data.my[ 1 ]==="bottom" ?
data.elemHeight :
0,
atOffset=data.at[ 1 ]==="top" ?
data.targetHeight :
data.at[ 1 ]==="bottom" ?
-data.targetHeight :
0,
offset=-2 * data.offset[ 1 ],
newOverTop,
newOverBottom;
if(overTop < 0){
newOverBottom=position.top + myOffset + atOffset + offset + data.collisionHeight -
outerHeight - withinOffset;
if(newOverBottom < 0||newOverBottom < abs(overTop) ){
position.top +=myOffset + atOffset + offset;
}}else if(overBottom > 0){
newOverTop=position.top - data.collisionPosition.marginTop + myOffset + atOffset +
offset - offsetTop;
if(newOverTop > 0||abs(newOverTop) < overBottom){
position.top +=myOffset + atOffset + offset;
}}
}},
flipfit: {
left: function(){
$.ui.position.flip.left.apply(this, arguments);
$.ui.position.fit.left.apply(this, arguments);
},
top: function(){
$.ui.position.flip.top.apply(this, arguments);
$.ui.position.fit.top.apply(this, arguments);
}}
};})();
$.ui.safeActiveElement=function(document){
var activeElement;
try {
activeElement=document.activeElement;
} catch(error){
activeElement=document.body;
}
if(!activeElement){
activeElement=document.body;
}
if(!activeElement.nodeName){
activeElement=document.body;
}
return activeElement;
};
$.ui.safeBlur=function(element){
if(element&&element.nodeName.toLowerCase()!=="body"){
$(element).trigger("blur");
}};
$.fn.scrollParent=function(includeHidden){
var position=this.css("position"),
excludeStaticParent=position==="absolute",
overflowRegex=includeHidden ? /(auto|scroll|hidden)/:/(auto|scroll)/,
scrollParent=this.parents().filter(function(){
var parent=$(this);
if(excludeStaticParent&&parent.css("position")==="static"){
return false;
}
return overflowRegex.test(parent.css("overflow") + parent.css("overflow-y") +
parent.css("overflow-x") );
}).eq(0);
return position==="fixed"||!scrollParent.length ?
$(this[ 0 ].ownerDocument||document) :
scrollParent;
};
$.extend($.expr.pseudos, {
tabbable: function(element){
var tabIndex=$.attr(element, "tabindex"),
hasTabindex=tabIndex!=null;
return(!hasTabindex||tabIndex >=0)&&$.ui.focusable(element, hasTabindex);
}});
$.fn.extend({
uniqueId:(function(){
var uuid=0;
return function(){
return this.each(function(){
if(!this.id){
this.id="ui-id-" + ( ++uuid);
}});
};})(),
removeUniqueId: function(){
return this.each(function(){
if(/^ui-id-\d+$/.test(this.id) ){
$(this).removeAttr("id");
}});
}});
var widgetUuid=0;
var widgetHasOwnProperty=Array.prototype.hasOwnProperty;
var widgetSlice=Array.prototype.slice;
$.cleanData=(function(orig){
return function(elems){
var events, elem, i;
for(i=0;(elem=elems[ i ])!=null; i++){
events=$._data(elem, "events");
if(events&&events.remove){
$(elem).triggerHandler("remove");
}}
orig(elems);
};})($.cleanData);
$.widget=function(name, base, prototype){
var existingConstructor, constructor, basePrototype;
var proxiedPrototype={};
var namespace=name.split(".")[ 0 ];
name=name.split(".")[ 1 ];
var fullName=namespace + "-" + name;
if(!prototype){
prototype=base;
base=$.Widget;
}
if(Array.isArray(prototype) ){
prototype=$.extend.apply(null, [ {} ].concat(prototype) );
}
$.expr.pseudos[ fullName.toLowerCase() ]=function(elem){
return !!$.data(elem, fullName);
};
$[ namespace ]=$[ namespace ]||{};
existingConstructor=$[ namespace ][ name ];
constructor=$[ namespace ][ name ]=function(options, element){
if(!this||!this._createWidget){
return new constructor(options, element);
}
if(arguments.length){
this._createWidget(options, element);
}};
$.extend(constructor, existingConstructor, {
version: prototype.version,
_proto: $.extend({}, prototype),
_childConstructors: []
});
basePrototype=new base();
basePrototype.options=$.widget.extend({}, basePrototype.options);
$.each(prototype, function(prop, value){
if(typeof value!=="function"){
proxiedPrototype[ prop ]=value;
return;
}
proxiedPrototype[ prop ]=(function(){
function _super(){
return base.prototype[ prop ].apply(this, arguments);
}
function _superApply(args){
return base.prototype[ prop ].apply(this, args);
}
return function(){
var __super=this._super;
var __superApply=this._superApply;
var returnValue;
this._super=_super;
this._superApply=_superApply;
returnValue=value.apply(this, arguments);
this._super=__super;
this._superApply=__superApply;
return returnValue;
};})();
});
constructor.prototype=$.widget.extend(basePrototype, {
widgetEventPrefix: existingConstructor ?(basePrototype.widgetEventPrefix||name):name
}, proxiedPrototype, {
constructor: constructor,
namespace: namespace,
widgetName: name,
widgetFullName: fullName
});
if(existingConstructor){
$.each(existingConstructor._childConstructors, function(i, child){
var childPrototype=child.prototype;
$.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor,
child._proto);
});
delete existingConstructor._childConstructors;
}else{
base._childConstructors.push(constructor);
}
$.widget.bridge(name, constructor);
return constructor;
};
$.widget.extend=function(target){
var input=widgetSlice.call(arguments, 1);
var inputIndex=0;
var inputLength=input.length;
var key;
var value;
for(; inputIndex < inputLength; inputIndex++){
for(key in input[ inputIndex ]){
value=input[ inputIndex ][ key ];
if(widgetHasOwnProperty.call(input[ inputIndex ], key)&&value!==undefined){
if($.isPlainObject(value) ){
target[ key ]=$.isPlainObject(target[ key ]) ?
$.widget.extend({}, target[ key ], value) :
$.widget.extend({}, value);
}else{
target[ key ]=value;
}}
}}
return target;
};
$.widget.bridge=function(name, object){
var fullName=object.prototype.widgetFullName||name;
$.fn[ name ]=function(options){
var isMethodCall=typeof options==="string";
var args=widgetSlice.call(arguments, 1);
var returnValue=this;
if(isMethodCall){
if(!this.length&&options==="instance"){
returnValue=undefined;
}else{
this.each(function(){
var methodValue;
var instance=$.data(this, fullName);
if(options==="instance"){
returnValue=instance;
return false;
}
if(!instance){
return $.error("cannot call methods on " + name +
" prior to initialization; " +
"attempted to call method '" + options + "'");
}
if(typeof instance[ options ]!=="function" ||
options.charAt(0)==="_"){
return $.error("no such method '" + options + "' for " + name +
" widget instance");
}
methodValue=instance[ options ].apply(instance, args);
if(methodValue!==instance&&methodValue!==undefined){
returnValue=methodValue&&methodValue.jquery ?
returnValue.pushStack(methodValue.get()) :
methodValue;
return false;
}});
}}else{
if(args.length){
options=$.widget.extend.apply(null, [ options ].concat(args) );
}
this.each(function(){
var instance=$.data(this, fullName);
if(instance){
instance.option(options||{});
if(instance._init){
instance._init();
}}else{
$.data(this, fullName, new object(options, this) );
}});
}
return returnValue;
};};
$.Widget=function(){};
$.Widget._childConstructors=[];
$.Widget.prototype={
widgetName: "widget",
widgetEventPrefix: "",
defaultElement: "<div>",
options: {
classes: {},
disabled: false,
create: null
},
_createWidget: function(options, element){
element=$(element||this.defaultElement||this)[ 0 ];
this.element=$(element);
this.uuid=widgetUuid++;
this.eventNamespace="." + this.widgetName + this.uuid;
this.bindings=$();
this.hoverable=$();
this.focusable=$();
this.classesElementLookup={};
if(element!==this){
$.data(element, this.widgetFullName, this);
this._on(true, this.element, {
remove: function(event){
if(event.target===element){
this.destroy();
}}
});
this.document=$(element.style ?
element.ownerDocument :
element.document||element);
this.window=$(this.document[ 0 ].defaultView||this.document[ 0 ].parentWindow);
}
this.options=$.widget.extend({},
this.options,
this._getCreateOptions(),
options);
this._create();
if(this.options.disabled){
this._setOptionDisabled(this.options.disabled);
}
this._trigger("create", null, this._getCreateEventData());
this._init();
},
_getCreateOptions: function(){
return {};},
_getCreateEventData: $.noop,
_create: $.noop,
_init: $.noop,
destroy: function(){
var that=this;
this._destroy();
$.each(this.classesElementLookup, function(key, value){
that._removeClass(value, key);
});
this.element
.off(this.eventNamespace)
.removeData(this.widgetFullName);
this.widget()
.off(this.eventNamespace)
.removeAttr("aria-disabled");
this.bindings.off(this.eventNamespace);
},
_destroy: $.noop,
widget: function(){
return this.element;
},
option: function(key, value){
var options=key;
var parts;
var curOption;
var i;
if(arguments.length===0){
return $.widget.extend({}, this.options);
}
if(typeof key==="string"){
options={};
parts=key.split(".");
key=parts.shift();
if(parts.length){
curOption=options[ key ]=$.widget.extend({}, this.options[ key ]);
for(i=0; i < parts.length - 1; i++){
curOption[ parts[ i ] ]=curOption[ parts[ i ] ]||{};
curOption=curOption[ parts[ i ] ];
}
key=parts.pop();
if(arguments.length===1){
return curOption[ key ]===undefined ? null:curOption[ key ];
}
curOption[ key ]=value;
}else{
if(arguments.length===1){
return this.options[ key ]===undefined ? null:this.options[ key ];
}
options[ key ]=value;
}}
this._setOptions(options);
return this;
},
_setOptions: function(options){
var key;
for(key in options){
this._setOption(key, options[ key ]);
}
return this;
},
_setOption: function(key, value){
if(key==="classes"){
this._setOptionClasses(value);
}
this.options[ key ]=value;
if(key==="disabled"){
this._setOptionDisabled(value);
}
return this;
},
_setOptionClasses: function(value){
var classKey, elements, currentElements;
for(classKey in value){
currentElements=this.classesElementLookup[ classKey ];
if(value[ classKey ]===this.options.classes[ classKey ] ||
!currentElements ||
!currentElements.length){
continue;
}
elements=$(currentElements.get());
this._removeClass(currentElements, classKey);
elements.addClass(this._classes({
element: elements,
keys: classKey,
classes: value,
add: true
}) );
}},
_setOptionDisabled: function(value){
this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!value);
if(value){
this._removeClass(this.hoverable, null, "ui-state-hover");
this._removeClass(this.focusable, null, "ui-state-focus");
}},
enable: function(){
return this._setOptions({ disabled: false });
},
disable: function(){
return this._setOptions({ disabled: true });
},
_classes: function(options){
var full=[];
var that=this;
options=$.extend({
element: this.element,
classes: this.options.classes||{}}, options);
function bindRemoveEvent(){
var nodesToBind=[];
options.element.each(function(_, element){
var isTracked=$.map(that.classesElementLookup, function(elements){
return elements;
})
.some(function(elements){
return elements.is(element);
});
if(!isTracked){
nodesToBind.push(element);
}});
that._on($(nodesToBind), {
remove: "_untrackClassesElement"
});
}
function processClassString(classes, checkOption){
var current, i;
for(i=0; i < classes.length; i++){
current=that.classesElementLookup[ classes[ i ] ]||$();
if(options.add){
bindRemoveEvent();
current=$($.uniqueSort(current.get().concat(options.element.get()) ));
}else{
current=$(current.not(options.element).get());
}
that.classesElementLookup[ classes[ i ] ]=current;
full.push(classes[ i ]);
if(checkOption&&options.classes[ classes[ i ] ]){
full.push(options.classes[ classes[ i ] ]);
}}
}
if(options.keys){
processClassString(options.keys.match(/\S+/g)||[], true);
}
if(options.extra){
processClassString(options.extra.match(/\S+/g)||[]);
}
return full.join(" ");
},
_untrackClassesElement: function(event){
var that=this;
$.each(that.classesElementLookup, function(key, value){
if($.inArray(event.target, value)!==-1){
that.classesElementLookup[ key ]=$(value.not(event.target).get());
}});
this._off($(event.target) );
},
_removeClass: function(element, keys, extra){
return this._toggleClass(element, keys, extra, false);
},
_addClass: function(element, keys, extra){
return this._toggleClass(element, keys, extra, true);
},
_toggleClass: function(element, keys, extra, add){
add=(typeof add==="boolean") ? add:extra;
var shift=(typeof element==="string"||element===null),
options={
extra: shift ? keys:extra,
keys: shift ? element:keys,
element: shift ? this.element:element,
add: add
};
options.element.toggleClass(this._classes(options), add);
return this;
},
_on: function(suppressDisabledCheck, element, handlers){
var delegateElement;
var instance=this;
if(typeof suppressDisabledCheck!=="boolean"){
handlers=element;
element=suppressDisabledCheck;
suppressDisabledCheck=false;
}
if(!handlers){
handlers=element;
element=this.element;
delegateElement=this.widget();
}else{
element=delegateElement=$(element);
this.bindings=this.bindings.add(element);
}
$.each(handlers, function(event, handler){
function handlerProxy(){
if(!suppressDisabledCheck &&
(instance.options.disabled===true ||
$(this).hasClass("ui-state-disabled") )){
return;
}
return(typeof handler==="string" ? instance[ handler ]:handler)
.apply(instance, arguments);
}
if(typeof handler!=="string"){
handlerProxy.guid=handler.guid =
handler.guid||handlerProxy.guid||$.guid++;
}
var match=event.match(/^([\w:-]*)\s*(.*)$/);
var eventName=match[ 1 ] + instance.eventNamespace;
var selector=match[ 2 ];
if(selector){
delegateElement.on(eventName, selector, handlerProxy);
}else{
element.on(eventName, handlerProxy);
}});
},
_off: function(element, eventName){
eventName=(eventName||"").split(" ").join(this.eventNamespace + " ") +
this.eventNamespace;
element.off(eventName);
this.bindings=$(this.bindings.not(element).get());
this.focusable=$(this.focusable.not(element).get());
this.hoverable=$(this.hoverable.not(element).get());
},
_delay: function(handler, delay){
function handlerProxy(){
return(typeof handler==="string" ? instance[ handler ]:handler)
.apply(instance, arguments);
}
var instance=this;
return setTimeout(handlerProxy, delay||0);
},
_hoverable: function(element){
this.hoverable=this.hoverable.add(element);
this._on(element, {
mouseenter: function(event){
this._addClass($(event.currentTarget), null, "ui-state-hover");
},
mouseleave: function(event){
this._removeClass($(event.currentTarget), null, "ui-state-hover");
}});
},
_focusable: function(element){
this.focusable=this.focusable.add(element);
this._on(element, {
focusin: function(event){
this._addClass($(event.currentTarget), null, "ui-state-focus");
},
focusout: function(event){
this._removeClass($(event.currentTarget), null, "ui-state-focus");
}});
},
_trigger: function(type, event, data){
var prop, orig;
var callback=this.options[ type ];
data=data||{};
event=$.Event(event);
event.type=(type===this.widgetEventPrefix ?
type :
this.widgetEventPrefix + type).toLowerCase();
event.target=this.element[ 0 ];
orig=event.originalEvent;
if(orig){
for(prop in orig){
if(!(prop in event) ){
event[ prop ]=orig[ prop ];
}}
}
this.element.trigger(event, data);
return !(typeof callback==="function" &&
callback.apply(this.element[ 0 ], [ event ].concat(data) )===false ||
event.isDefaultPrevented());
}};
$.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect){
$.Widget.prototype[ "_" + method ]=function(element, options, callback){
if(typeof options==="string"){
options={ effect: options };}
var hasOptions;
var effectName = !options ?
method :
options===true||typeof options==="number" ?
defaultEffect :
options.effect||defaultEffect;
options=options||{};
if(typeof options==="number"){
options={ duration: options };}else if(options===true){
options={};}
hasOptions = !$.isEmptyObject(options);
options.complete=callback;
if(options.delay){
element.delay(options.delay);
}
if(hasOptions&&$.effects&&$.effects.effect[ effectName ]){
element[ method ](options);
}else if(effectName!==method&&element[ effectName ]){
element[ effectName ](options.duration, options.easing, callback);
}else{
element.queue(function(next){
$(this)[ method ]();
if(callback){
callback.call(element[ 0 ]);
}
next();
});
}};});
}) );
(function(factory){
"use strict";
if(typeof define==="function"&&define.amd){
define([
"jquery",
"../version",
"../keycode"
], factory);
}else{
factory(jQuery);
}})(function($){
"use strict";
$.extend($.ui, { datepicker: { version: "1.13.3" }});
var datepicker_instActive;
function datepicker_getZindex(elem){
var position, value;
while(elem.length&&elem[ 0 ]!==document){
position=elem.css("position");
if(position==="absolute"||position==="relative"||position==="fixed"){
value=parseInt(elem.css("zIndex"), 10);
if(!isNaN(value)&&value!==0){
return value;
}}
elem=elem.parent();
}
return 0;
}
function Datepicker(){
this._curInst=null;
this._keyEvent=false;
this._disabledInputs=[];
this._datepickerShowing=false;
this._inDialog=false;
this._mainDivId="ui-datepicker-div";
this._inlineClass="ui-datepicker-inline";
this._appendClass="ui-datepicker-append";
this._triggerClass="ui-datepicker-trigger";
this._dialogClass="ui-datepicker-dialog";
this._disableClass="ui-datepicker-disabled";
this._unselectableClass="ui-datepicker-unselectable";
this._currentClass="ui-datepicker-current-day";
this._dayOverClass="ui-datepicker-days-cell-over";
this.regional=[];
this.regional[ "" ]={
closeText: "Done",
prevText: "Prev",
nextText: "Next",
currentText: "Today",
monthNames: [ "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December" ],
monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
dayNamesMin: [ "Su", "Mo", "Tu", "We", "Th", "Fr", "Sa" ],
weekHeader: "Wk",
dateFormat: "mm/dd/yy",
firstDay: 0,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: "",
selectMonthLabel: "Select month",
selectYearLabel: "Select year"
};
this._defaults={
showOn: "focus", // "focus" for popup on focus,
showAnim: "fadeIn",
showOptions: {},
defaultDate: null,
appendText: "",
buttonText: "...",
buttonImage: "",
buttonImageOnly: false,
hideIfNoPrevNext: false,
navigationAsDateFormat: false,
gotoCurrent: false,
changeMonth: false,
changeYear: false,
yearRange: "c-10:c+10",
showOtherMonths: false,
selectOtherMonths: false,
showWeek: false,
calculateWeek: this.iso8601Week,
shortYearCutoff: "+10",
minDate: null,
maxDate: null,
duration: "fast",
beforeShowDay: null,
beforeShow: null,
onSelect: null,
onChangeMonthYear: null,
onClose: null,
onUpdateDatepicker: null,
numberOfMonths: 1,
showCurrentAtPos: 0,
stepMonths: 1,
stepBigMonths: 12,
altField: "",
altFormat: "",
constrainInput: true,
showButtonPanel: false,
autoSize: false,
disabled: false
};
$.extend(this._defaults, this.regional[ "" ]);
this.regional.en=$.extend(true, {}, this.regional[ "" ]);
this.regional[ "en-US" ]=$.extend(true, {}, this.regional.en);
this.dpDiv=datepicker_bindHover($("<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>") );
}
$.extend(Datepicker.prototype, {
markerClassName: "hasDatepicker",
maxRows: 4,
_widgetDatepicker: function(){
return this.dpDiv;
},
setDefaults: function(settings){
datepicker_extendRemove(this._defaults, settings||{});
return this;
},
_attachDatepicker: function(target, settings){
var nodeName, inline, inst;
nodeName=target.nodeName.toLowerCase();
inline=(nodeName==="div"||nodeName==="span");
if(!target.id){
this.uuid +=1;
target.id="dp" + this.uuid;
}
inst=this._newInst($(target), inline);
inst.settings=$.extend({}, settings||{});
if(nodeName==="input"){
this._connectDatepicker(target, inst);
}else if(inline){
this._inlineDatepicker(target, inst);
}},
_newInst: function(target, inline){
var id=target[ 0 ].id.replace(/([^A-Za-z0-9_\-])/g, "\\\\$1");
return { id: id, input: target,
selectedDay: 0, selectedMonth: 0, selectedYear: 0,
drawMonth: 0, drawYear: 0,
inline: inline,
dpDiv:(!inline ? this.dpDiv :
datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>") )) };},
_connectDatepicker: function(target, inst){
var input=$(target);
inst.append=$([]);
inst.trigger=$([]);
if(input.hasClass(this.markerClassName) ){
return;
}
this._attachments(input, inst);
input.addClass(this.markerClassName).on("keydown", this._doKeyDown).
on("keypress", this._doKeyPress).on("keyup", this._doKeyUp);
this._autoSize(inst);
$.data(target, "datepicker", inst);
if(inst.settings.disabled){
this._disableDatepicker(target);
}},
_attachments: function(input, inst){
var showOn, buttonText, buttonImage,
appendText=this._get(inst, "appendText"),
isRTL=this._get(inst, "isRTL");
if(inst.append){
inst.append.remove();
}
if(appendText){
inst.append=$("<span>")
.addClass(this._appendClass)
.text(appendText);
input[ isRTL ? "before":"after" ](inst.append);
}
input.off("focus", this._showDatepicker);
if(inst.trigger){
inst.trigger.remove();
}
showOn=this._get(inst, "showOn");
if(showOn==="focus"||showOn==="both"){
input.on("focus", this._showDatepicker);
}
if(showOn==="button"||showOn==="both"){
buttonText=this._get(inst, "buttonText");
buttonImage=this._get(inst, "buttonImage");
if(this._get(inst, "buttonImageOnly") ){
inst.trigger=$("<img>")
.addClass(this._triggerClass)
.attr({
src: buttonImage,
alt: buttonText,
title: buttonText
});
}else{
inst.trigger=$("<button type='button'>")
.addClass(this._triggerClass);
if(buttonImage){
inst.trigger.html($("<img>")
.attr({
src: buttonImage,
alt: buttonText,
title: buttonText
})
);
}else{
inst.trigger.text(buttonText);
}}
input[ isRTL ? "before":"after" ](inst.trigger);
inst.trigger.on("click", function(){
if($.datepicker._datepickerShowing&&$.datepicker._lastInput===input[ 0 ]){
$.datepicker._hideDatepicker();
}else if($.datepicker._datepickerShowing&&$.datepicker._lastInput!==input[ 0 ]){
$.datepicker._hideDatepicker();
$.datepicker._showDatepicker(input[ 0 ]);
}else{
$.datepicker._showDatepicker(input[ 0 ]);
}
return false;
});
}},
_autoSize: function(inst){
if(this._get(inst, "autoSize")&&!inst.inline){
var findMax, max, maxI, i,
date=new Date(2009, 12 - 1, 20),
dateFormat=this._get(inst, "dateFormat");
if(dateFormat.match(/[DM]/) ){
findMax=function(names){
max=0;
maxI=0;
for(i=0; i < names.length; i++){
if(names[ i ].length > max){
max=names[ i ].length;
maxI=i;
}}
return maxI;
};
date.setMonth(findMax(this._get(inst,(dateFormat.match(/MM/) ?
"monthNames":"monthNamesShort") )) );
date.setDate(findMax(this._get(inst,(dateFormat.match(/DD/) ?
"dayNames":"dayNamesShort") )) + 20 - date.getDay());
}
inst.input.attr("size", this._formatDate(inst, date).length);
}},
_inlineDatepicker: function(target, inst){
var divSpan=$(target);
if(divSpan.hasClass(this.markerClassName) ){
return;
}
divSpan.addClass(this.markerClassName).append(inst.dpDiv);
$.data(target, "datepicker", inst);
this._setDate(inst, this._getDefaultDate(inst), true);
this._updateDatepicker(inst);
this._updateAlternate(inst);
if(inst.settings.disabled){
this._disableDatepicker(target);
}
inst.dpDiv.css("display", "block");
},
_dialogDatepicker: function(input, date, onSelect, settings, pos){
var id, browserWidth, browserHeight, scrollX, scrollY,
inst=this._dialogInst;
if(!inst){
this.uuid +=1;
id="dp" + this.uuid;
this._dialogInput=$("<input type='text' id='" + id +
"' style='position: absolute; top: -100px; width: 0px;'/>");
this._dialogInput.on("keydown", this._doKeyDown);
$("body").append(this._dialogInput);
inst=this._dialogInst=this._newInst(this._dialogInput, false);
inst.settings={};
$.data(this._dialogInput[ 0 ], "datepicker", inst);
}
datepicker_extendRemove(inst.settings, settings||{});
date=(date&&date.constructor===Date ? this._formatDate(inst, date):date);
this._dialogInput.val(date);
this._pos=(pos ?(pos.length ? pos:[ pos.pageX, pos.pageY ]):null);
if(!this._pos){
browserWidth=document.documentElement.clientWidth;
browserHeight=document.documentElement.clientHeight;
scrollX=document.documentElement.scrollLeft||document.body.scrollLeft;
scrollY=document.documentElement.scrollTop||document.body.scrollTop;
this._pos =
[(browserWidth / 2) - 100 + scrollX,(browserHeight / 2) - 150 + scrollY ];
}
this._dialogInput.css("left",(this._pos[ 0 ] + 20) + "px").css("top", this._pos[ 1 ] + "px");
inst.settings.onSelect=onSelect;
this._inDialog=true;
this.dpDiv.addClass(this._dialogClass);
this._showDatepicker(this._dialogInput[ 0 ]);
if($.blockUI){
$.blockUI(this.dpDiv);
}
$.data(this._dialogInput[ 0 ], "datepicker", inst);
return this;
},
_destroyDatepicker: function(target){
var nodeName,
$target=$(target),
inst=$.data(target, "datepicker");
if(!$target.hasClass(this.markerClassName) ){
return;
}
nodeName=target.nodeName.toLowerCase();
$.removeData(target, "datepicker");
if(nodeName==="input"){
inst.append.remove();
inst.trigger.remove();
$target.removeClass(this.markerClassName).
off("focus", this._showDatepicker).
off("keydown", this._doKeyDown).
off("keypress", this._doKeyPress).
off("keyup", this._doKeyUp);
}else if(nodeName==="div"||nodeName==="span"){
$target.removeClass(this.markerClassName).empty();
}
if(datepicker_instActive===inst){
datepicker_instActive=null;
this._curInst=null;
}},
_enableDatepicker: function(target){
var nodeName, inline,
$target=$(target),
inst=$.data(target, "datepicker");
if(!$target.hasClass(this.markerClassName) ){
return;
}
nodeName=target.nodeName.toLowerCase();
if(nodeName==="input"){
target.disabled=false;
inst.trigger.filter("button").
each(function(){
this.disabled=false;
}).end().
filter("img").css({ opacity: "1.0", cursor: "" });
}else if(nodeName==="div"||nodeName==="span"){
inline=$target.children("." + this._inlineClass);
inline.children().removeClass("ui-state-disabled");
inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
prop("disabled", false);
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){
return(value===target ? null:value);
});
},
_disableDatepicker: function(target){
var nodeName, inline,
$target=$(target),
inst=$.data(target, "datepicker");
if(!$target.hasClass(this.markerClassName) ){
return;
}
nodeName=target.nodeName.toLowerCase();
if(nodeName==="input"){
target.disabled=true;
inst.trigger.filter("button").
each(function(){
this.disabled=true;
}).end().
filter("img").css({ opacity: "0.5", cursor: "default" });
}else if(nodeName==="div"||nodeName==="span"){
inline=$target.children("." + this._inlineClass);
inline.children().addClass("ui-state-disabled");
inline.find("select.ui-datepicker-month, select.ui-datepicker-year").
prop("disabled", true);
}
this._disabledInputs=$.map(this._disabledInputs,
function(value){
return(value===target ? null:value);
});
this._disabledInputs[ this._disabledInputs.length ]=target;
},
_isDisabledDatepicker: function(target){
if(!target){
return false;
}
for(var i=0; i < this._disabledInputs.length; i++){
if(this._disabledInputs[ i ]===target){
return true;
}}
return false;
},
_getInst: function(target){
try {
return $.data(target, "datepicker");
} catch(err){
throw "Missing instance data for this datepicker";
}},
_optionDatepicker: function(target, name, value){
var settings, date, minDate, maxDate,
inst=this._getInst(target);
if(arguments.length===2&&typeof name==="string"){
return(name==="defaults" ? $.extend({}, $.datepicker._defaults) :
(inst ?(name==="all" ? $.extend({}, inst.settings) :
this._get(inst, name) ):null) );
}
settings=name||{};
if(typeof name==="string"){
settings={};
settings[ name ]=value;
}
if(inst){
if(this._curInst===inst){
this._hideDatepicker();
}
date=this._getDateDatepicker(target, true);
minDate=this._getMinMaxDate(inst, "min");
maxDate=this._getMinMaxDate(inst, "max");
datepicker_extendRemove(inst.settings, settings);
if(minDate!==null&&settings.dateFormat!==undefined&&settings.minDate===undefined){
inst.settings.minDate=this._formatDate(inst, minDate);
}
if(maxDate!==null&&settings.dateFormat!==undefined&&settings.maxDate===undefined){
inst.settings.maxDate=this._formatDate(inst, maxDate);
}
if("disabled" in settings){
if(settings.disabled){
this._disableDatepicker(target);
}else{
this._enableDatepicker(target);
}}
this._attachments($(target), inst);
this._autoSize(inst);
this._setDate(inst, date);
this._updateAlternate(inst);
this._updateDatepicker(inst);
}},
_changeDatepicker: function(target, name, value){
this._optionDatepicker(target, name, value);
},
_refreshDatepicker: function(target){
var inst=this._getInst(target);
if(inst){
this._updateDatepicker(inst);
}},
_setDateDatepicker: function(target, date){
var inst=this._getInst(target);
if(inst){
this._setDate(inst, date);
this._updateDatepicker(inst);
this._updateAlternate(inst);
}},
_getDateDatepicker: function(target, noDefault){
var inst=this._getInst(target);
if(inst&&!inst.inline){
this._setDateFromField(inst, noDefault);
}
return(inst ? this._getDate(inst):null);
},
_doKeyDown: function(event){
var onSelect, dateStr, sel,
inst=$.datepicker._getInst(event.target),
handled=true,
isRTL=inst.dpDiv.is(".ui-datepicker-rtl");
inst._keyEvent=true;
if($.datepicker._datepickerShowing){
switch(event.keyCode){
case 9: $.datepicker._hideDatepicker();
handled=false;
break;
case 13: sel=$("td." + $.datepicker._dayOverClass + ":not(." +
$.datepicker._currentClass + ")", inst.dpDiv);
if(sel[ 0 ]){
$.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ]);
}
onSelect=$.datepicker._get(inst, "onSelect");
if(onSelect){
dateStr=$.datepicker._formatDate(inst);
onSelect.apply(( inst.input ? inst.input[ 0 ]:null), [ dateStr, inst ]);
}else{
$.datepicker._hideDatepicker();
}
return false;
case 27: $.datepicker._hideDatepicker();
break;
case 33: $.datepicker._adjustDate(event.target,(event.ctrlKey ?
-$.datepicker._get(inst, "stepBigMonths") :
-$.datepicker._get(inst, "stepMonths") ), "M");
break;
case 34: $.datepicker._adjustDate(event.target,(event.ctrlKey ?
+$.datepicker._get(inst, "stepBigMonths") :
+$.datepicker._get(inst, "stepMonths") ), "M");
break;
case 35: if(event.ctrlKey||event.metaKey){
$.datepicker._clearDate(event.target);
}
handled=event.ctrlKey||event.metaKey;
break;
case 36: if(event.ctrlKey||event.metaKey){
$.datepicker._gotoToday(event.target);
}
handled=event.ctrlKey||event.metaKey;
break;
case 37: if(event.ctrlKey||event.metaKey){
$.datepicker._adjustDate(event.target,(isRTL ? +1:-1), "D");
}
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey){
$.datepicker._adjustDate(event.target,(event.ctrlKey ?
-$.datepicker._get(inst, "stepBigMonths") :
-$.datepicker._get(inst, "stepMonths") ), "M");
}
break;
case 38: if(event.ctrlKey||event.metaKey){
$.datepicker._adjustDate(event.target, -7, "D");
}
handled=event.ctrlKey||event.metaKey;
break;
case 39: if(event.ctrlKey||event.metaKey){
$.datepicker._adjustDate(event.target,(isRTL ? -1:+1), "D");
}
handled=event.ctrlKey||event.metaKey;
if(event.originalEvent.altKey){
$.datepicker._adjustDate(event.target,(event.ctrlKey ?
+$.datepicker._get(inst, "stepBigMonths") :
+$.datepicker._get(inst, "stepMonths") ), "M");
}
break;
case 40: if(event.ctrlKey||event.metaKey){
$.datepicker._adjustDate(event.target, +7, "D");
}
handled=event.ctrlKey||event.metaKey;
break;
default: handled=false;
}}else if(event.keyCode===36&&event.ctrlKey){
$.datepicker._showDatepicker(this);
}else{
handled=false;
}
if(handled){
event.preventDefault();
event.stopPropagation();
}},
_doKeyPress: function(event){
var chars, chr,
inst=$.datepicker._getInst(event.target);
if($.datepicker._get(inst, "constrainInput") ){
chars=$.datepicker._possibleChars($.datepicker._get(inst, "dateFormat") );
chr=String.fromCharCode(event.charCode==null ? event.keyCode:event.charCode);
return event.ctrlKey||event.metaKey||(chr < " "||!chars||chars.indexOf(chr) > -1);
}},
_doKeyUp: function(event){
var date,
inst=$.datepicker._getInst(event.target);
if(inst.input.val()!==inst.lastVal){
try {
date=$.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
(inst.input ? inst.input.val():null),
$.datepicker._getFormatConfig(inst) );
if(date){
$.datepicker._setDateFromField(inst);
$.datepicker._updateAlternate(inst);
$.datepicker._updateDatepicker(inst);
}} catch(err){
}}
return true;
},
_showDatepicker: function(input){
input=input.target||input;
if(input.nodeName.toLowerCase()!=="input"){
input=$("input", input.parentNode)[ 0 ];
}
if($.datepicker._isDisabledDatepicker(input)||$.datepicker._lastInput===input){
return;
}
var inst, beforeShow, beforeShowSettings, isFixed,
offset, showAnim, duration;
inst=$.datepicker._getInst(input);
if($.datepicker._curInst&&$.datepicker._curInst!==inst){
$.datepicker._curInst.dpDiv.stop(true, true);
if(inst&&$.datepicker._datepickerShowing){
$.datepicker._hideDatepicker($.datepicker._curInst.input[ 0 ]);
}}
beforeShow=$.datepicker._get(inst, "beforeShow");
beforeShowSettings=beforeShow ? beforeShow.apply(input, [ input, inst ]):{};
if(beforeShowSettings===false){
return;
}
datepicker_extendRemove(inst.settings, beforeShowSettings);
inst.lastVal=null;
$.datepicker._lastInput=input;
$.datepicker._setDateFromField(inst);
if($.datepicker._inDialog){
input.value="";
}
if(!$.datepicker._pos){
$.datepicker._pos=$.datepicker._findPos(input);
$.datepicker._pos[ 1 ] +=input.offsetHeight;
}
isFixed=false;
$(input).parents().each(function(){
isFixed |=$(this).css("position")==="fixed";
return !isFixed;
});
offset={ left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
$.datepicker._pos=null;
inst.dpDiv.empty();
inst.dpDiv.css({ position: "absolute", display: "block", top: "-1000px" });
$.datepicker._updateDatepicker(inst);
offset=$.datepicker._checkOffset(inst, offset, isFixed);
inst.dpDiv.css({ position:($.datepicker._inDialog&&$.blockUI ?
"static":(isFixed ? "fixed":"absolute") ), display: "none",
left: offset.left + "px", top: offset.top + "px" });
if(!inst.inline){
showAnim=$.datepicker._get(inst, "showAnim");
duration=$.datepicker._get(inst, "duration");
inst.dpDiv.css("z-index", datepicker_getZindex($(input) ) + 1);
$.datepicker._datepickerShowing=true;
if($.effects&&$.effects.effect[ showAnim ]){
inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration);
}else{
inst.dpDiv[ showAnim||"show" ](showAnim ? duration:null);
}
if($.datepicker._shouldFocusInput(inst) ){
inst.input.trigger("focus");
}
$.datepicker._curInst=inst;
}},
_updateDatepicker: function(inst){
this.maxRows=4;
datepicker_instActive=inst;
inst.dpDiv.empty().append(this._generateHTML(inst) );
this._attachHandlers(inst);
var origyearshtml,
numMonths=this._getNumberOfMonths(inst),
cols=numMonths[ 1 ],
width=17,
activeCell=inst.dpDiv.find("." + this._dayOverClass + " a"),
onUpdateDatepicker=$.datepicker._get(inst, "onUpdateDatepicker");
if(activeCell.length > 0){
datepicker_handleMouseover.apply(activeCell.get(0) );
}
inst.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");
if(cols > 1){
inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width",(width * cols) + "em");
}
inst.dpDiv[(numMonths[ 0 ]!==1||numMonths[ 1 ]!==1 ? "add":"remove") +
"Class" ]("ui-datepicker-multi");
inst.dpDiv[(this._get(inst, "isRTL") ? "add":"remove") +
"Class" ]("ui-datepicker-rtl");
if(inst===$.datepicker._curInst&&$.datepicker._datepickerShowing&&$.datepicker._shouldFocusInput(inst) ){
inst.input.trigger("focus");
}
if(inst.yearshtml){
origyearshtml=inst.yearshtml;
setTimeout(function(){
if(origyearshtml===inst.yearshtml&&inst.yearshtml){
inst.dpDiv.find("select.ui-datepicker-year").first().replaceWith(inst.yearshtml);
}
origyearshtml=inst.yearshtml=null;
}, 0);
}
if(onUpdateDatepicker){
onUpdateDatepicker.apply(( inst.input ? inst.input[ 0 ]:null), [ inst ]);
}},
_shouldFocusInput: function(inst){
return inst.input&&inst.input.is(":visible")&&!inst.input.is(":disabled")&&!inst.input.is(":focus");
},
_checkOffset: function(inst, offset, isFixed){
var dpWidth=inst.dpDiv.outerWidth(),
dpHeight=inst.dpDiv.outerHeight(),
inputWidth=inst.input ? inst.input.outerWidth():0,
inputHeight=inst.input ? inst.input.outerHeight():0,
viewWidth=document.documentElement.clientWidth +(isFixed ? 0:$(document).scrollLeft()),
viewHeight=document.documentElement.clientHeight +(isFixed ? 0:$(document).scrollTop());
offset.left -=(this._get(inst, "isRTL") ?(dpWidth - inputWidth):0);
offset.left -=(isFixed&&offset.left===inst.input.offset().left) ? $(document).scrollLeft():0;
offset.top -=(isFixed&&offset.top===(inst.input.offset().top + inputHeight) ) ? $(document).scrollTop():0;
offset.left -=Math.min(offset.left,(offset.left + dpWidth > viewWidth&&viewWidth > dpWidth) ?
Math.abs(offset.left + dpWidth - viewWidth):0);
offset.top -=Math.min(offset.top,(offset.top + dpHeight > viewHeight&&viewHeight > dpHeight) ?
Math.abs(dpHeight + inputHeight):0);
return offset;
},
_findPos: function(obj){
var position,
inst=this._getInst(obj),
isRTL=this._get(inst, "isRTL");
while(obj&&(obj.type==="hidden"||obj.nodeType!==1||$.expr.pseudos.hidden(obj) )){
obj=obj[ isRTL ? "previousSibling":"nextSibling" ];
}
position=$(obj).offset();
return [ position.left, position.top ];
},
_hideDatepicker: function(input){
var showAnim, duration, postProcess, onClose,
inst=this._curInst;
if(!inst||(input&&inst!==$.data(input, "datepicker") )){
return;
}
if(this._datepickerShowing){
showAnim=this._get(inst, "showAnim");
duration=this._get(inst, "duration");
postProcess=function(){
$.datepicker._tidyDialog(inst);
};
if($.effects&&($.effects.effect[ showAnim ]||$.effects[ showAnim ]) ){
inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess);
}else{
inst.dpDiv[(showAnim==="slideDown" ? "slideUp" :
(showAnim==="fadeIn" ? "fadeOut":"hide") ) ](( showAnim ? duration:null), postProcess);
}
if(!showAnim){
postProcess();
}
this._datepickerShowing=false;
onClose=this._get(inst, "onClose");
if(onClose){
onClose.apply(( inst.input ? inst.input[ 0 ]:null), [(inst.input ? inst.input.val():""), inst ]);
}
this._lastInput=null;
if(this._inDialog){
this._dialogInput.css({ position: "absolute", left: "0", top: "-100px" });
if($.blockUI){
$.unblockUI();
$("body").append(this.dpDiv);
}}
this._inDialog=false;
}},
_tidyDialog: function(inst){
inst.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar");
},
_checkExternalClick: function(event){
if(!$.datepicker._curInst){
return;
}
var $target=$(event.target),
inst=$.datepicker._getInst($target[ 0 ]);
if((($target[ 0 ].id!==$.datepicker._mainDivId &&
$target.parents("#" + $.datepicker._mainDivId).length===0 &&
!$target.hasClass($.datepicker.markerClassName) &&
!$target.closest("." + $.datepicker._triggerClass).length &&
$.datepicker._datepickerShowing&&!($.datepicker._inDialog&&$.blockUI) )) ||
($target.hasClass($.datepicker.markerClassName)&&$.datepicker._curInst!==inst) ){
$.datepicker._hideDatepicker();
}},
_adjustDate: function(id, offset, period){
var target=$(id),
inst=this._getInst(target[ 0 ]);
if(this._isDisabledDatepicker(target[ 0 ]) ){
return;
}
this._adjustInstDate(inst, offset, period);
this._updateDatepicker(inst);
},
_gotoToday: function(id){
var date,
target=$(id),
inst=this._getInst(target[ 0 ]);
if(this._get(inst, "gotoCurrent")&&inst.currentDay){
inst.selectedDay=inst.currentDay;
inst.drawMonth=inst.selectedMonth=inst.currentMonth;
inst.drawYear=inst.selectedYear=inst.currentYear;
}else{
date=new Date();
inst.selectedDay=date.getDate();
inst.drawMonth=inst.selectedMonth=date.getMonth();
inst.drawYear=inst.selectedYear=date.getFullYear();
}
this._notifyChange(inst);
this._adjustDate(target);
},
_selectMonthYear: function(id, select, period){
var target=$(id),
inst=this._getInst(target[ 0 ]);
inst[ "selected" +(period==="M" ? "Month":"Year") ] =
inst[ "draw" +(period==="M" ? "Month":"Year") ] =
parseInt(select.options[ select.selectedIndex ].value, 10);
this._notifyChange(inst);
this._adjustDate(target);
},
_selectDay: function(id, month, year, td){
var inst,
target=$(id);
if($(td).hasClass(this._unselectableClass)||this._isDisabledDatepicker(target[ 0 ]) ){
return;
}
inst=this._getInst(target[ 0 ]);
inst.selectedDay=inst.currentDay=parseInt($("a", td).attr("data-date") );
inst.selectedMonth=inst.currentMonth=month;
inst.selectedYear=inst.currentYear=year;
this._selectDate(id, this._formatDate(inst,
inst.currentDay, inst.currentMonth, inst.currentYear) );
},
_clearDate: function(id){
var target=$(id);
this._selectDate(target, "");
},
_selectDate: function(id, dateStr){
var onSelect,
target=$(id),
inst=this._getInst(target[ 0 ]);
dateStr=(dateStr!=null ? dateStr:this._formatDate(inst) );
if(inst.input){
inst.input.val(dateStr);
}
this._updateAlternate(inst);
onSelect=this._get(inst, "onSelect");
if(onSelect){
onSelect.apply(( inst.input ? inst.input[ 0 ]:null), [ dateStr, inst ]);
}else if(inst.input){
inst.input.trigger("change");
}
if(inst.inline){
this._updateDatepicker(inst);
}else{
this._hideDatepicker();
this._lastInput=inst.input[ 0 ];
if(typeof(inst.input[ 0 ])!=="object"){
inst.input.trigger("focus");
}
this._lastInput=null;
}},
_updateAlternate: function(inst){
var altFormat, date, dateStr,
altField=this._get(inst, "altField");
if(altField){
altFormat=this._get(inst, "altFormat")||this._get(inst, "dateFormat");
date=this._getDate(inst);
dateStr=this.formatDate(altFormat, date, this._getFormatConfig(inst) );
$(document).find(altField).val(dateStr);
}},
noWeekends: function(date){
var day=date.getDay();
return [(day > 0&&day < 6), "" ];
},
iso8601Week: function(date){
var time,
checkDate=new Date(date.getTime());
checkDate.setDate(checkDate.getDate() + 4 -(checkDate.getDay()||7) );
time=checkDate.getTime();
checkDate.setMonth(0);
checkDate.setDate(1);
return Math.floor(Math.round(( time - checkDate) / 86400000) / 7) + 1;
},
parseDate: function(format, value, settings){
if(format==null||value==null){
throw "Invalid arguments";
}
value=(typeof value==="object" ? value.toString():value + "");
if(value===""){
return null;
}
var iFormat, dim, extra,
iValue=0,
shortYearCutoffTemp=(settings ? settings.shortYearCutoff:null)||this._defaults.shortYearCutoff,
shortYearCutoff=(typeof shortYearCutoffTemp!=="string" ? shortYearCutoffTemp :
new Date().getFullYear() % 100 + parseInt(shortYearCutoffTemp, 10) ),
dayNamesShort=(settings ? settings.dayNamesShort:null)||this._defaults.dayNamesShort,
dayNames=(settings ? settings.dayNames:null)||this._defaults.dayNames,
monthNamesShort=(settings ? settings.monthNamesShort:null)||this._defaults.monthNamesShort,
monthNames=(settings ? settings.monthNames:null)||this._defaults.monthNames,
year=-1,
month=-1,
day=-1,
doy=-1,
literal=false,
date,
lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)===match);
if(matches){
iFormat++;
}
return matches;
},
getNumber=function(match){
var isDoubled=lookAhead(match),
size=(match==="@" ? 14:(match==="!" ? 20 :
(match==="y"&&isDoubled ? 4:(match==="o" ? 3:2) )) ),
minSize=(match==="y" ? size:1),
digits=new RegExp("^\\d{" + minSize + "," + size + "}"),
num=value.substring(iValue).match(digits);
if(!num){
throw "Missing number at position " + iValue;
}
iValue +=num[ 0 ].length;
return parseInt(num[ 0 ], 10);
},
getName=function(match, shortNames, longNames){
var index=-1,
names=$.map(lookAhead(match) ? longNames:shortNames, function(v, k){
return [ [ k, v ] ];
}).sort(function(a, b){
return -(a[ 1 ].length - b[ 1 ].length);
});
$.each(names, function(i, pair){
var name=pair[ 1 ];
if(value.substr(iValue, name.length).toLowerCase()===name.toLowerCase()){
index=pair[ 0 ];
iValue +=name.length;
return false;
}});
if(index!==-1){
return index + 1;
}else{
throw "Unknown name at position " + iValue;
}},
checkLiteral=function(){
if(value.charAt(iValue)!==format.charAt(iFormat) ){
throw "Unexpected literal at position " + iValue;
}
iValue++;
};
for(iFormat=0; iFormat < format.length; iFormat++){
if(literal){
if(format.charAt(iFormat)==="'"&&!lookAhead("'") ){
literal=false;
}else{
checkLiteral();
}}else{
switch(format.charAt(iFormat) ){
case "d":
day=getNumber("d");
break;
case "D":
getName("D", dayNamesShort, dayNames);
break;
case "o":
doy=getNumber("o");
break;
case "m":
month=getNumber("m");
break;
case "M":
month=getName("M", monthNamesShort, monthNames);
break;
case "y":
year=getNumber("y");
break;
case "@":
date=new Date(getNumber("@") );
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case "!":
date=new Date(( getNumber("!") - this._ticksTo1970) / 10000);
year=date.getFullYear();
month=date.getMonth() + 1;
day=date.getDate();
break;
case "'":
if(lookAhead("'") ){
checkLiteral();
}else{
literal=true;
}
break;
default:
checkLiteral();
}}
}
if(iValue < value.length){
extra=value.substr(iValue);
if(!/^\s+/.test(extra) ){
throw "Extra/unparsed characters found in date: " + extra;
}}
if(year===-1){
year=new Date().getFullYear();
}else if(year < 100){
year +=new Date().getFullYear() - new Date().getFullYear() % 100 +
(year <=shortYearCutoff ? 0:-100);
}
if(doy > -1){
month=1;
day=doy;
do {
dim=this._getDaysInMonth(year, month - 1);
if(day <=dim){
break;
}
month++;
day -=dim;
} while(true);
}
date=this._daylightSavingAdjust(new Date(year, month - 1, day) );
if(date.getFullYear()!==year||date.getMonth() + 1!==month||date.getDate()!==day){
throw "Invalid date";
}
return date;
},
ATOM: "yy-mm-dd",
COOKIE: "D, dd M yy",
ISO_8601: "yy-mm-dd",
RFC_822: "D, d M y",
RFC_850: "DD, dd-M-y",
RFC_1036: "D, d M y",
RFC_1123: "D, d M yy",
RFC_2822: "D, d M yy",
RSS: "D, d M y",
TICKS: "!",
TIMESTAMP: "@",
W3C: "yy-mm-dd",
_ticksTo1970:(((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) +
Math.floor(1970 / 400) ) * 24 * 60 * 60 * 10000000),
formatDate: function(format, date, settings){
if(!date){
return "";
}
var iFormat,
dayNamesShort=(settings ? settings.dayNamesShort:null)||this._defaults.dayNamesShort,
dayNames=(settings ? settings.dayNames:null)||this._defaults.dayNames,
monthNamesShort=(settings ? settings.monthNamesShort:null)||this._defaults.monthNamesShort,
monthNames=(settings ? settings.monthNames:null)||this._defaults.monthNames,
lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)===match);
if(matches){
iFormat++;
}
return matches;
},
formatNumber=function(match, value, len){
var num="" + value;
if(lookAhead(match) ){
while(num.length < len){
num="0" + num;
}}
return num;
},
formatName=function(match, value, shortNames, longNames){
return(lookAhead(match) ? longNames[ value ]:shortNames[ value ]);
},
output="",
literal=false;
if(date){
for(iFormat=0; iFormat < format.length; iFormat++){
if(literal){
if(format.charAt(iFormat)==="'"&&!lookAhead("'") ){
literal=false;
}else{
output +=format.charAt(iFormat);
}}else{
switch(format.charAt(iFormat) ){
case "d":
output +=formatNumber("d", date.getDate(), 2);
break;
case "D":
output +=formatName("D", date.getDay(), dayNamesShort, dayNames);
break;
case "o":
output +=formatNumber("o",
Math.round(( new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);
break;
case "m":
output +=formatNumber("m", date.getMonth() + 1, 2);
break;
case "M":
output +=formatName("M", date.getMonth(), monthNamesShort, monthNames);
break;
case "y":
output +=(lookAhead("y") ? date.getFullYear() :
(date.getFullYear() % 100 < 10 ? "0":"") + date.getFullYear() % 100);
break;
case "@":
output +=date.getTime();
break;
case "!":
output +=date.getTime() * 10000 + this._ticksTo1970;
break;
case "'":
if(lookAhead("'") ){
output +="'";
}else{
literal=true;
}
break;
default:
output +=format.charAt(iFormat);
}}
}}
return output;
},
_possibleChars: function(format){
var iFormat,
chars="",
literal=false,
lookAhead=function(match){
var matches=(iFormat + 1 < format.length&&format.charAt(iFormat + 1)===match);
if(matches){
iFormat++;
}
return matches;
};
for(iFormat=0; iFormat < format.length; iFormat++){
if(literal){
if(format.charAt(iFormat)==="'"&&!lookAhead("'") ){
literal=false;
}else{
chars +=format.charAt(iFormat);
}}else{
switch(format.charAt(iFormat) ){
case "d": case "m": case "y": case "@":
chars +="0123456789";
break;
case "D": case "M":
return null;
case "'":
if(lookAhead("'") ){
chars +="'";
}else{
literal=true;
}
break;
default:
chars +=format.charAt(iFormat);
}}
}
return chars;
},
_get: function(inst, name){
return inst.settings[ name ]!==undefined ?
inst.settings[ name ]:this._defaults[ name ];
},
_setDateFromField: function(inst, noDefault){
if(inst.input.val()===inst.lastVal){
return;
}
var dateFormat=this._get(inst, "dateFormat"),
dates=inst.lastVal=inst.input ? inst.input.val():null,
defaultDate=this._getDefaultDate(inst),
date=defaultDate,
settings=this._getFormatConfig(inst);
try {
date=this.parseDate(dateFormat, dates, settings)||defaultDate;
} catch(event){
dates=(noDefault ? "":dates);
}
inst.selectedDay=date.getDate();
inst.drawMonth=inst.selectedMonth=date.getMonth();
inst.drawYear=inst.selectedYear=date.getFullYear();
inst.currentDay=(dates ? date.getDate():0);
inst.currentMonth=(dates ? date.getMonth():0);
inst.currentYear=(dates ? date.getFullYear():0);
this._adjustInstDate(inst);
},
_getDefaultDate: function(inst){
return this._restrictMinMax(inst,
this._determineDate(inst, this._get(inst, "defaultDate"), new Date()) );
},
_determineDate: function(inst, date, defaultDate){
var offsetNumeric=function(offset){
var date=new Date();
date.setDate(date.getDate() + offset);
return date;
},
offsetString=function(offset){
try {
return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"),
offset, $.datepicker._getFormatConfig(inst) );
} catch(e){
}
var date=(offset.toLowerCase().match(/^c/) ?
$.datepicker._getDate(inst):null)||new Date(),
year=date.getFullYear(),
month=date.getMonth(),
day=date.getDate(),
pattern=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
matches=pattern.exec(offset);
while(matches){
switch(matches[ 2 ]||"d"){
case "d":case "D" :
day +=parseInt(matches[ 1 ], 10); break;
case "w":case "W" :
day +=parseInt(matches[ 1 ], 10) * 7; break;
case "m":case "M" :
month +=parseInt(matches[ 1 ], 10);
day=Math.min(day, $.datepicker._getDaysInMonth(year, month) );
break;
case "y": case "Y" :
year +=parseInt(matches[ 1 ], 10);
day=Math.min(day, $.datepicker._getDaysInMonth(year, month) );
break;
}
matches=pattern.exec(offset);
}
return new Date(year, month, day);
},
newDate=(date==null||date==="" ? defaultDate:(typeof date==="string" ? offsetString(date) :
(typeof date==="number" ?(isNaN(date) ? defaultDate:offsetNumeric(date) ):new Date(date.getTime()) )) );
newDate=(newDate&&newDate.toString()==="Invalid Date" ? defaultDate:newDate);
if(newDate){
newDate.setHours(0);
newDate.setMinutes(0);
newDate.setSeconds(0);
newDate.setMilliseconds(0);
}
return this._daylightSavingAdjust(newDate);
},
_daylightSavingAdjust: function(date){
if(!date){
return null;
}
date.setHours(date.getHours() > 12 ? date.getHours() + 2:0);
return date;
},
_setDate: function(inst, date, noChange){
var clear = !date,
origMonth=inst.selectedMonth,
origYear=inst.selectedYear,
newDate=this._restrictMinMax(inst, this._determineDate(inst, date, new Date()) );
inst.selectedDay=inst.currentDay=newDate.getDate();
inst.drawMonth=inst.selectedMonth=inst.currentMonth=newDate.getMonth();
inst.drawYear=inst.selectedYear=inst.currentYear=newDate.getFullYear();
if(( origMonth!==inst.selectedMonth||origYear!==inst.selectedYear)&&!noChange){
this._notifyChange(inst);
}
this._adjustInstDate(inst);
if(inst.input){
inst.input.val(clear ? "":this._formatDate(inst) );
}},
_getDate: function(inst){
var startDate=(!inst.currentYear||(inst.input&&inst.input.val()==="") ? null :
this._daylightSavingAdjust(new Date(
inst.currentYear, inst.currentMonth, inst.currentDay) ));
return startDate;
},
_attachHandlers: function(inst){
var stepMonths=this._get(inst, "stepMonths"),
id="#" + inst.id.replace(/\\\\/g, "\\");
inst.dpDiv.find("[data-handler]").map(function(){
var handler={
prev: function(){
$.datepicker._adjustDate(id, -stepMonths, "M");
},
next: function(){
$.datepicker._adjustDate(id, +stepMonths, "M");
},
hide: function(){
$.datepicker._hideDatepicker();
},
today: function(){
$.datepicker._gotoToday(id);
},
selectDay: function(){
$.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this);
return false;
},
selectMonth: function(){
$.datepicker._selectMonthYear(id, this, "M");
return false;
},
selectYear: function(){
$.datepicker._selectMonthYear(id, this, "Y");
return false;
}};
$(this).on(this.getAttribute("data-event"), handler[ this.getAttribute("data-handler") ]);
});
},
_generateHTML: function(inst){
var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
printDate, dRow, tbody, daySettings, otherMonth, unselectable,
tempDate=new Date(),
today=this._daylightSavingAdjust(new Date(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate()) ),
isRTL=this._get(inst, "isRTL"),
showButtonPanel=this._get(inst, "showButtonPanel"),
hideIfNoPrevNext=this._get(inst, "hideIfNoPrevNext"),
navigationAsDateFormat=this._get(inst, "navigationAsDateFormat"),
numMonths=this._getNumberOfMonths(inst),
showCurrentAtPos=this._get(inst, "showCurrentAtPos"),
stepMonths=this._get(inst, "stepMonths"),
isMultiMonth=(numMonths[ 0 ]!==1||numMonths[ 1 ]!==1),
currentDate=this._daylightSavingAdjust(( !inst.currentDay ? new Date(9999, 9, 9) :
new Date(inst.currentYear, inst.currentMonth, inst.currentDay) )),
minDate=this._getMinMaxDate(inst, "min"),
maxDate=this._getMinMaxDate(inst, "max"),
drawMonth=inst.drawMonth - showCurrentAtPos,
drawYear=inst.drawYear;
if(drawMonth < 0){
drawMonth +=12;
drawYear--;
}
if(maxDate){
maxDraw=this._daylightSavingAdjust(new Date(maxDate.getFullYear(),
maxDate.getMonth() -(numMonths[ 0 ] * numMonths[ 1 ]) + 1, maxDate.getDate()) );
maxDraw=(minDate&&maxDraw < minDate ? minDate:maxDraw);
while(this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1) ) > maxDraw){
drawMonth--;
if(drawMonth < 0){
drawMonth=11;
drawYear--;
}}
}
inst.drawMonth=drawMonth;
inst.drawYear=drawYear;
prevText=this._get(inst, "prevText");
prevText=(!navigationAsDateFormat ? prevText:this.formatDate(prevText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1) ),
this._getFormatConfig(inst) ));
if(this._canAdjustMonth(inst, -1, drawYear, drawMonth) ){
prev=$("<a>")
.attr({
"class": "ui-datepicker-prev ui-corner-all",
"data-handler": "prev",
"data-event": "click",
title: prevText
})
.append($("<span>")
.addClass("ui-icon ui-icon-circle-triangle-" +
(isRTL ? "e":"w") )
.text(prevText)
)[ 0 ].outerHTML;
}else if(hideIfNoPrevNext){
prev="";
}else{
prev=$("<a>")
.attr({
"class": "ui-datepicker-prev ui-corner-all ui-state-disabled",
title: prevText
})
.append($("<span>")
.addClass("ui-icon ui-icon-circle-triangle-" +
(isRTL ? "e":"w") )
.text(prevText)
)[ 0 ].outerHTML;
}
nextText=this._get(inst, "nextText");
nextText=(!navigationAsDateFormat ? nextText:this.formatDate(nextText,
this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1) ),
this._getFormatConfig(inst) ));
if(this._canAdjustMonth(inst, +1, drawYear, drawMonth) ){
next=$("<a>")
.attr({
"class": "ui-datepicker-next ui-corner-all",
"data-handler": "next",
"data-event": "click",
title: nextText
})
.append($("<span>")
.addClass("ui-icon ui-icon-circle-triangle-" +
(isRTL ? "w":"e") )
.text(nextText)
)[ 0 ].outerHTML;
}else if(hideIfNoPrevNext){
next="";
}else{
next=$("<a>")
.attr({
"class": "ui-datepicker-next ui-corner-all ui-state-disabled",
title: nextText
})
.append($("<span>")
.attr("class", "ui-icon ui-icon-circle-triangle-" +
(isRTL ? "w":"e") )
.text(nextText)
)[ 0 ].outerHTML;
}
currentText=this._get(inst, "currentText");
gotoDate=(this._get(inst, "gotoCurrent")&&inst.currentDay ? currentDate:today);
currentText=(!navigationAsDateFormat ? currentText :
this.formatDate(currentText, gotoDate, this._getFormatConfig(inst) ));
controls="";
if(!inst.inline){
controls=$("<button>")
.attr({
type: "button",
"class": "ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all",
"data-handler": "hide",
"data-event": "click"
})
.text(this._get(inst, "closeText") )[ 0 ].outerHTML;
}
buttonPanel="";
if(showButtonPanel){
buttonPanel=$("<div class='ui-datepicker-buttonpane ui-widget-content'>")
.append(isRTL ? controls:"")
.append(this._isInRange(inst, gotoDate) ?
$("<button>")
.attr({
type: "button",
"class": "ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all",
"data-handler": "today",
"data-event": "click"
})
.text(currentText) :
"")
.append(isRTL ? "":controls)[ 0 ].outerHTML;
}
firstDay=parseInt(this._get(inst, "firstDay"), 10);
firstDay=(isNaN(firstDay) ? 0:firstDay);
showWeek=this._get(inst, "showWeek");
dayNames=this._get(inst, "dayNames");
dayNamesMin=this._get(inst, "dayNamesMin");
monthNames=this._get(inst, "monthNames");
monthNamesShort=this._get(inst, "monthNamesShort");
beforeShowDay=this._get(inst, "beforeShowDay");
showOtherMonths=this._get(inst, "showOtherMonths");
selectOtherMonths=this._get(inst, "selectOtherMonths");
defaultDate=this._getDefaultDate(inst);
html="";
for(row=0; row < numMonths[ 0 ]; row++){
group="";
this.maxRows=4;
for(col=0; col < numMonths[ 1 ]; col++){
selectedDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay) );
cornerClass=" ui-corner-all";
calender="";
if(isMultiMonth){
calender +="<div class='ui-datepicker-group";
if(numMonths[ 1 ] > 1){
switch(col){
case 0: calender +=" ui-datepicker-group-first";
cornerClass=" ui-corner-" +(isRTL ? "right":"left"); break;
case numMonths[ 1 ] - 1: calender +=" ui-datepicker-group-last";
cornerClass=" ui-corner-" +(isRTL ? "left":"right"); break;
default: calender +=" ui-datepicker-group-middle"; cornerClass=""; break;
}}
calender +="'>";
}
calender +="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
(/all|left/.test(cornerClass)&&row===0 ?(isRTL ? next:prev):"") +
(/all|right/.test(cornerClass)&&row===0 ?(isRTL ? prev:next):"") +
this._generateMonthYearHeader(inst, drawMonth, drawYear, minDate, maxDate,
row > 0||col > 0, monthNames, monthNamesShort) +
"</div><table class='ui-datepicker-calendar'><thead>" +
"<tr>";
thead=(showWeek ? "<th class='ui-datepicker-week-col'>" + this._get(inst, "weekHeader") + "</th>":"");
for(dow=0; dow < 7; dow++){
day=(dow + firstDay) % 7;
thead +="<th scope='col'" +(( dow + firstDay + 6) % 7 >=5 ? " class='ui-datepicker-week-end'":"") + ">" +
"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
}
calender +=thead + "</tr></thead><tbody>";
daysInMonth=this._getDaysInMonth(drawYear, drawMonth);
if(drawYear===inst.selectedYear&&drawMonth===inst.selectedMonth){
inst.selectedDay=Math.min(inst.selectedDay, daysInMonth);
}
leadDays=(this._getFirstDayOfMonth(drawYear, drawMonth) - firstDay + 7) % 7;
curRows=Math.ceil(( leadDays + daysInMonth) / 7);
numRows=(isMultiMonth ? this.maxRows > curRows ? this.maxRows:curRows:curRows);
this.maxRows=numRows;
printDate=this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays) );
for(dRow=0; dRow < numRows; dRow++){
calender +="<tr>";
tbody=(!showWeek ? "":"<td class='ui-datepicker-week-col'>" +
this._get(inst, "calculateWeek")(printDate) + "</td>");
for(dow=0; dow < 7; dow++){
daySettings=(beforeShowDay ?
beforeShowDay.apply(( inst.input ? inst.input[ 0 ]:null), [ printDate ]):[ true, "" ]);
otherMonth=(printDate.getMonth()!==drawMonth);
unselectable=(otherMonth&&!selectOtherMonths)||!daySettings[ 0 ] ||
(minDate&&printDate < minDate)||(maxDate&&printDate > maxDate);
tbody +="<td class='" +
(( dow + firstDay + 6) % 7 >=5 ? " ui-datepicker-week-end":"") +
(otherMonth ? " ui-datepicker-other-month":"") +
(( printDate.getTime()===selectedDate.getTime()&&drawMonth===inst.selectedMonth&&inst._keyEvent) ||
(defaultDate.getTime()===printDate.getTime()&&defaultDate.getTime()===selectedDate.getTime()) ?
" " + this._dayOverClass:"") +
(unselectable ? " " + this._unselectableClass + " ui-state-disabled":"") +
(otherMonth&&!showOtherMonths ? "":" " + daySettings[ 1 ] +
(printDate.getTime()===currentDate.getTime() ? " " + this._currentClass:"") +
(printDate.getTime()===today.getTime() ? " ui-datepicker-today":"") ) + "'" +
(( !otherMonth||showOtherMonths)&&daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace(/'/g, "&#39;") + "'":"") +
(unselectable ? "":" data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" +
(otherMonth&&!showOtherMonths ? "&#xa0;" :
(unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>":"<a class='ui-state-default" +
(printDate.getTime()===today.getTime() ? " ui-state-highlight":"") +
(printDate.getTime()===currentDate.getTime() ? " ui-state-active":"") +
(otherMonth ? " ui-priority-secondary":"") +
"' href='#' aria-current='" +(printDate.getTime()===currentDate.getTime() ? "true":"false") +
"' data-date='" + printDate.getDate() +
"'>" + printDate.getDate() + "</a>") ) + "</td>";
printDate.setDate(printDate.getDate() + 1);
printDate=this._daylightSavingAdjust(printDate);
}
calender +=tbody + "</tr>";
}
drawMonth++;
if(drawMonth > 11){
drawMonth=0;
drawYear++;
}
calender +="</tbody></table>" +(isMultiMonth ? "</div>" +
(( numMonths[ 0 ] > 0&&col===numMonths[ 1 ] - 1) ? "<div class='ui-datepicker-row-break'></div>":""):"");
group +=calender;
}
html +=group;
}
html +=buttonPanel;
inst._keyEvent=false;
return html;
},
_generateMonthYearHeader: function(inst, drawMonth, drawYear, minDate, maxDate,
secondary, monthNames, monthNamesShort){
var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
changeMonth=this._get(inst, "changeMonth"),
changeYear=this._get(inst, "changeYear"),
showMonthAfterYear=this._get(inst, "showMonthAfterYear"),
selectMonthLabel=this._get(inst, "selectMonthLabel"),
selectYearLabel=this._get(inst, "selectYearLabel"),
html="<div class='ui-datepicker-title'>",
monthHtml="";
if(secondary||!changeMonth){
monthHtml +="<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
}else{
inMinYear=(minDate&&minDate.getFullYear()===drawYear);
inMaxYear=(maxDate&&maxDate.getFullYear()===drawYear);
monthHtml +="<select class='ui-datepicker-month' aria-label='" + selectMonthLabel + "' data-handler='selectMonth' data-event='change'>";
for(month=0; month < 12; month++){
if(( !inMinYear||month >=minDate.getMonth())&&(!inMaxYear||month <=maxDate.getMonth()) ){
monthHtml +="<option value='" + month + "'" +
(month===drawMonth ? " selected='selected'":"") +
">" + monthNamesShort[ month ] + "</option>";
}}
monthHtml +="</select>";
}
if(!showMonthAfterYear){
html +=monthHtml +(secondary||!(changeMonth&&changeYear) ? "&#xa0;":"");
}
if(!inst.yearshtml){
inst.yearshtml="";
if(secondary||!changeYear){
html +="<span class='ui-datepicker-year'>" + drawYear + "</span>";
}else{
years=this._get(inst, "yearRange").split(":");
thisYear=new Date().getFullYear();
determineYear=function(value){
var year=(value.match(/c[+\-].*/) ? drawYear + parseInt(value.substring(1), 10) :
(value.match(/[+\-].*/) ? thisYear + parseInt(value, 10) :
parseInt(value, 10) ));
return(isNaN(year) ? thisYear:year);
};
year=determineYear(years[ 0 ]);
endYear=Math.max(year, determineYear(years[ 1 ]||"") );
year=(minDate ? Math.max(year, minDate.getFullYear()):year);
endYear=(maxDate ? Math.min(endYear, maxDate.getFullYear()):endYear);
inst.yearshtml +="<select class='ui-datepicker-year' aria-label='" + selectYearLabel + "' data-handler='selectYear' data-event='change'>";
for(; year <=endYear; year++){
inst.yearshtml +="<option value='" + year + "'" +
(year===drawYear ? " selected='selected'":"") +
">" + year + "</option>";
}
inst.yearshtml +="</select>";
html +=inst.yearshtml;
inst.yearshtml=null;
}}
html +=this._get(inst, "yearSuffix");
if(showMonthAfterYear){
html +=(secondary||!(changeMonth&&changeYear) ? "&#xa0;":"") + monthHtml;
}
html +="</div>";
return html;
},
_adjustInstDate: function(inst, offset, period){
var year=inst.selectedYear +(period==="Y" ? offset:0),
month=inst.selectedMonth +(period==="M" ? offset:0),
day=Math.min(inst.selectedDay, this._getDaysInMonth(year, month) ) +(period==="D" ? offset:0),
date=this._restrictMinMax(inst, this._daylightSavingAdjust(new Date(year, month, day) ));
inst.selectedDay=date.getDate();
inst.drawMonth=inst.selectedMonth=date.getMonth();
inst.drawYear=inst.selectedYear=date.getFullYear();
if(period==="M"||period==="Y"){
this._notifyChange(inst);
}},
_restrictMinMax: function(inst, date){
var minDate=this._getMinMaxDate(inst, "min"),
maxDate=this._getMinMaxDate(inst, "max"),
newDate=(minDate&&date < minDate ? minDate:date);
return(maxDate&&newDate > maxDate ? maxDate:newDate);
},
_notifyChange: function(inst){
var onChange=this._get(inst, "onChangeMonthYear");
if(onChange){
onChange.apply(( inst.input ? inst.input[ 0 ]:null),
[ inst.selectedYear, inst.selectedMonth + 1, inst ]);
}},
_getNumberOfMonths: function(inst){
var numMonths=this._get(inst, "numberOfMonths");
return(numMonths==null ? [ 1, 1 ]:(typeof numMonths==="number" ? [ 1, numMonths ]:numMonths) );
},
_getMinMaxDate: function(inst, minMax){
return this._determineDate(inst, this._get(inst, minMax + "Date"), null);
},
_getDaysInMonth: function(year, month){
return 32 - this._daylightSavingAdjust(new Date(year, month, 32) ).getDate();
},
_getFirstDayOfMonth: function(year, month){
return new Date(year, month, 1).getDay();
},
_canAdjustMonth: function(inst, offset, curYear, curMonth){
var numMonths=this._getNumberOfMonths(inst),
date=this._daylightSavingAdjust(new Date(curYear,
curMonth +(offset < 0 ? offset:numMonths[ 0 ] * numMonths[ 1 ]), 1) );
if(offset < 0){
date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth()) );
}
return this._isInRange(inst, date);
},
_isInRange: function(inst, date){
var yearSplit, currentYear,
minDate=this._getMinMaxDate(inst, "min"),
maxDate=this._getMinMaxDate(inst, "max"),
minYear=null,
maxYear=null,
years=this._get(inst, "yearRange");
if(years){
yearSplit=years.split(":");
currentYear=new Date().getFullYear();
minYear=parseInt(yearSplit[ 0 ], 10);
maxYear=parseInt(yearSplit[ 1 ], 10);
if(yearSplit[ 0 ].match(/[+\-].*/) ){
minYear +=currentYear;
}
if(yearSplit[ 1 ].match(/[+\-].*/) ){
maxYear +=currentYear;
}}
return(( !minDate||date.getTime() >=minDate.getTime()) &&
(!maxDate||date.getTime() <=maxDate.getTime()) &&
(!minYear||date.getFullYear() >=minYear) &&
(!maxYear||date.getFullYear() <=maxYear) );
},
_getFormatConfig: function(inst){
var shortYearCutoff=this._get(inst, "shortYearCutoff");
shortYearCutoff=(typeof shortYearCutoff!=="string" ? shortYearCutoff :
new Date().getFullYear() % 100 + parseInt(shortYearCutoff, 10) );
return { shortYearCutoff: shortYearCutoff,
dayNamesShort: this._get(inst, "dayNamesShort"), dayNames: this._get(inst, "dayNames"),
monthNamesShort: this._get(inst, "monthNamesShort"), monthNames: this._get(inst, "monthNames") };},
_formatDate: function(inst, day, month, year){
if(!day){
inst.currentDay=inst.selectedDay;
inst.currentMonth=inst.selectedMonth;
inst.currentYear=inst.selectedYear;
}
var date=(day ?(typeof day==="object" ? day :
this._daylightSavingAdjust(new Date(year, month, day) )) :
this._daylightSavingAdjust(new Date(inst.currentYear, inst.currentMonth, inst.currentDay) ));
return this.formatDate(this._get(inst, "dateFormat"), date, this._getFormatConfig(inst) );
}});
function datepicker_bindHover(dpDiv){
var selector="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
return dpDiv.on("mouseout", selector, function(){
$(this).removeClass("ui-state-hover");
if(this.className.indexOf("ui-datepicker-prev")!==-1){
$(this).removeClass("ui-datepicker-prev-hover");
}
if(this.className.indexOf("ui-datepicker-next")!==-1){
$(this).removeClass("ui-datepicker-next-hover");
}})
.on("mouseover", selector, datepicker_handleMouseover);
}
function datepicker_handleMouseover(){
if(!$.datepicker._isDisabledDatepicker(datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ]:datepicker_instActive.input[ 0 ]) ){
$(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");
$(this).addClass("ui-state-hover");
if(this.className.indexOf("ui-datepicker-prev")!==-1){
$(this).addClass("ui-datepicker-prev-hover");
}
if(this.className.indexOf("ui-datepicker-next")!==-1){
$(this).addClass("ui-datepicker-next-hover");
}}
}
function datepicker_extendRemove(target, props){
$.extend(target, props);
for(var name in props){
if(props[ name ]==null){
target[ name ]=props[ name ];
}}
return target;
}
$.fn.datepicker=function(options){
if(!this.length){
return this;
}
if(!$.datepicker.initialized){
$(document).on("mousedown", $.datepicker._checkExternalClick);
$.datepicker.initialized=true;
}
if($("#" + $.datepicker._mainDivId).length===0){
$("body").append($.datepicker.dpDiv);
}
var otherArgs=Array.prototype.slice.call(arguments, 1);
if(typeof options==="string"&&(options==="isDisabled"||options==="getDate"||options==="widget") ){
return $.datepicker[ "_" + options + "Datepicker" ].
apply($.datepicker, [ this[ 0 ] ].concat(otherArgs) );
}
if(options==="option"&&arguments.length===2&&typeof arguments[ 1 ]==="string"){
return $.datepicker[ "_" + options + "Datepicker" ].
apply($.datepicker, [ this[ 0 ] ].concat(otherArgs) );
}
return this.each(function(){
if(typeof options==="string"){
$.datepicker[ "_" + options + "Datepicker" ]
.apply($.datepicker, [ this ].concat(otherArgs) );
}else{
$.datepicker._attachDatepicker(this, options);
}});
};
$.datepicker=new Datepicker();
$.datepicker.initialized=false;
$.datepicker.uuid=new Date().getTime();
$.datepicker.version="1.13.3";
return $.datepicker;
});
gform.addFilter('gform_datepicker_options_pre_init', function(optionsObj, formId, inputId, $element){
var gf_legacy=window.gf_legacy_multi;
if(! gf_legacy){
return optionsObj;
}
if(!gf_legacy[ formId ]||gf_legacy[ formId ]!=='1'){
return optionsObj;
}
var $=window.jQuery;
var isPreview=$('#preview_form_container').length > 0;
var isRTL=window.getComputedStyle($element[ 0 ], null).getPropertyValue('direction')==='rtl';
var overrides={
showOtherMonths: false,
beforeShow: function(input, inst){
inst.dpDiv[0].classList.remove('gform-theme-datepicker');
inst.dpDiv[0].classList.remove('gravity-theme');
inst.dpDiv[0].classList.remove('gform-theme');
inst.dpDiv[0].classList.remove('gform-legacy-datepicker');
inst.dpDiv[0].classList.remove('gform-theme--framework');
inst.dpDiv[0].classList.remove('gform-theme--foundation');
inst.dpDiv[0].classList.remove('gform-theme--orbital');
inst.dpDiv[0].classList.add('gform-legacy-datepicker');
if(isRTL&&isPreview){
var $inputContainer=$(input).closest('.gfield');
var rightOffset=$(document).outerWidth() -($inputContainer.offset().left + $inputContainer.outerWidth());
inst.dpDiv[ 0 ].style.right=rightOffset + 'px';
}
if(isPreview){
inst.dpDiv[0].classList.add('gform-preview-datepicker');
}
return ! this.suppressDatePicker;
}};
return Object.assign(optionsObj, overrides);
}, -10);
(function ($, gform, gform_i18n){
function getDatepickerI18n(){
var i18n=gform_i18n.datepicker;
return {
dayNamesMin: [
i18n.days.sunday,
i18n.days.monday,
i18n.days.tuesday,
i18n.days.wednesday,
i18n.days.thursday,
i18n.days.friday,
i18n.days.saturday,
],
monthNamesShort: [
i18n.months.january,
i18n.months.february,
i18n.months.march,
i18n.months.april,
i18n.months.may,
i18n.months.june,
i18n.months.july,
i18n.months.august,
i18n.months.september,
i18n.months.october,
i18n.months.november,
i18n.months.december,
],
firstDay: i18n.firstDay,
iconText: i18n.iconText,
};}
/**
* @function getDatepickerBaseOptions
* @description Return base options object that configures the datepicker.
* @param $element The datepicker trigger.
* @since 2.5
*
* @returns {{
*  suppressDatePicker: boolean,
*  changeMonth: boolean,
*  changeYear: boolean,
*  onClose: onClose,
*  yearRange: string,
*  dateFormat: string,
*  showOn: string,
*  dayNamesMin: *[],
*  monthNamesShort: *[],
*  beforeShow: (function(*, *): boolean),
*  showOtherMonths: boolean
* }}
*/
function getDatepickerBaseOptions($element){
var i18n=getDatepickerI18n();
var isThemeDatepicker=$element.closest('.gform_wrapper').length > 0;
var isPreview=$('#preview_form_container').length > 0;
var isRTL=window.getComputedStyle($element[0], null).getPropertyValue('direction')==='rtl';
var formTheme=isThemeDatepicker ? $element.closest('.gform_wrapper').data('form-theme'):'gravity-theme';
var formId=isThemeDatepicker ? $element.closest('.gform_wrapper').attr('id').replace('gform_wrapper_', ''):'';
var formPageInstance=isThemeDatepicker ? $element.closest('.gform_wrapper').attr('data-form-index'):'';
return {
yearRange: '-100:+20',
showOn: 'focus',
dateFormat: 'mm/dd/yy',
dayNamesMin: i18n.dayNamesMin,
monthNamesShort: i18n.monthNamesShort,
firstDay: i18n.firstDay,
changeMonth: true,
changeYear: true,
isRTL: isRTL,
showOtherMonths: isThemeDatepicker,
suppressDatePicker: false,
onClose: function(){
var self=this;
$element.focus();
this.suppressDatePicker=true;
setTimeout(function(){
self.suppressDatePicker=false;
}, 200);
},
beforeShow: function(input, inst){
inst.dpDiv[0].classList.remove('gform-theme-datepicker');
inst.dpDiv[0].classList.remove('gravity-theme');
inst.dpDiv[0].classList.remove('gform-theme');
inst.dpDiv[0].classList.remove('gform-legacy-datepicker');
inst.dpDiv[0].classList.remove('gform-theme--framework');
inst.dpDiv[0].classList.remove('gform-theme--foundation');
inst.dpDiv[0].classList.remove('gform-theme--orbital');
if(isThemeDatepicker){
inst.dpDiv[ 0 ].classList.add('gform-theme-datepicker');
$(inst.dpDiv[ 0 ]).attr('data-parent-form', formId + '_' + formPageInstance);
}
if(formTheme===undefined||formTheme==='gravity-theme'){
$(inst.dpDiv[0]).addClass('gravity-theme');
}else if(formTheme==='legacy'){
$(inst.dpDiv[0]).addClass('gform-legacy-datepicker');
}else{
$(inst.dpDiv[0]).addClass('gform-theme--' + formTheme);
if(formTheme==='orbital'){
$(inst.dpDiv[0]).addClass('gform-theme--framework');
$(inst.dpDiv[0]).addClass('gform-theme--foundation');
}}
if(isRTL&&isPreview){
var $inputContainer=$(input).closest('.gfield');
var rightOffset=$(document).outerWidth() -($inputContainer.offset().left + $inputContainer.outerWidth());
inst.dpDiv[ 0 ].style.right=rightOffset + 'px';
}
return ! this.suppressDatePicker;
},
};}
function initSingleDatepicker($element){
var i18n=getDatepickerI18n();
var inputId=$element.attr('id') ? $element.attr('id'):'';
var optionsObj=getDatepickerBaseOptions($element);
if($element.hasClass('dmy') ){
optionsObj.dateFormat='dd/mm/yy';
}else if($element.hasClass('dmy_dash') ){
optionsObj.dateFormat='dd-mm-yy';
}else if($element.hasClass('dmy_dot') ){
optionsObj.dateFormat='dd.mm.yy';
}else if($element.hasClass('ymd_slash') ){
optionsObj.dateFormat='yy/mm/dd';
}else if($element.hasClass('ymd_dash') ){
optionsObj.dateFormat='yy-mm-dd';
}else if($element.hasClass('ymd_dot') ){
optionsObj.dateFormat='yy.mm.dd';
}
if($element.hasClass('gdatepicker_with_icon') ){
optionsObj.showOn='both';
optionsObj.buttonImage=$element.parent().siblings("[id^='gforms_calendar_icon_input']").val();
optionsObj.buttonImageOnly=true;
optionsObj.buttonText=i18n.iconText;
}else{
optionsObj.showOn='focus';
}
inputId=inputId.split('_');
optionsObj=gform.applyFilters('gform_datepicker_options_pre_init', optionsObj, inputId[ 1 ], inputId[ 2 ], $element);
$element.datepicker(optionsObj);
if($element.is(':input') ){
$element.click(function(){
$element.datepicker('show');
});
}}
function initDatepickers(){
$('.gform-datepicker:not(.initialized)').each(function(){
var $element=$(this);
initSingleDatepicker($element);
$element.addClass('initialized');
});
}
$(document).ready(initDatepickers);
window.gformInitDatepicker=initDatepickers;
window.gformInitSingleDatepicker=initSingleDatepicker;
})(jQuery, gform, gform_i18n);
(function(t){"use strict";function e(t,e,r){return t.addEventListener?t.addEventListener(e,r,!1):t.attachEvent?t.attachEvent("on"+e,r):void 0}function r(t,e){var r,n;for(r=0,n=t.length;n>r;r++)if(t[r]===e)return!0;return!1}function n(t,e){var r;t.createTextRange?(r=t.createTextRange(),r.move("character",e),r.select()):t.selectionStart&&(t.focus(),t.setSelectionRange(e,e))}function a(t,e){try{return t.type=e,!0}catch(r){return!1}}t.Placeholders={Utils:{addEventListener:e,inArray:r,moveCaret:n,changeType:a}}})(this),function(t){"use strict";function e(){}function r(){try{return document.activeElement}catch(t){}}function n(t,e){var r,n,a=!!e&&t.value!==e,u=t.value===t.getAttribute(V);return(a||u)&&"true"===t.getAttribute(P)?(t.removeAttribute(P),t.value=t.value.replace(t.getAttribute(V),""),t.className=t.className.replace(R,""),n=t.getAttribute(z),parseInt(n,10)>=0&&(t.setAttribute("maxLength",n),t.removeAttribute(z)),r=t.getAttribute(D),r&&(t.type=r),!0):!1}function a(t){var e,r,n=t.getAttribute(V);return""===t.value&&n?(t.setAttribute(P,"true"),t.value=n,t.className+=" "+I,r=t.getAttribute(z),r||(t.setAttribute(z,t.maxLength),t.removeAttribute("maxLength")),e=t.getAttribute(D),e?t.type="text":"password"===t.type&&K.changeType(t,"text")&&t.setAttribute(D,"password"),!0):!1}function u(t,e){var r,n,a,u,i,l,o;if(t&&t.getAttribute(V))e(t);else for(a=t?t.getElementsByTagName("input"):f,u=t?t.getElementsByTagName("textarea"):h,r=a?a.length:0,n=u?u.length:0,o=0,l=r+n;l>o;o++)i=r>o?a[o]:u[o-r],e(i)}function i(t){u(t,n)}function l(t){u(t,a)}function o(t){return function(){b&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)?K.moveCaret(t,0):n(t)}}function c(t){return function(){a(t)}}function s(t){return function(e){return A=t.value,"true"===t.getAttribute(P)&&A===t.getAttribute(V)&&K.inArray(C,e.keyCode)?(e.preventDefault&&e.preventDefault(),!1):void 0}}function d(t){return function(){n(t,A),""===t.value&&(t.blur(),K.moveCaret(t,0))}}function v(t){return function(){t===r()&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)&&K.moveCaret(t,0)}}function g(t){return function(){i(t)}}function p(t){t.form&&(T=t.form,"string"==typeof T&&(T=document.getElementById(T)),T.getAttribute(U)||(K.addEventListener(T,"submit",g(T)),T.setAttribute(U,"true"))),K.addEventListener(t,"focus",o(t)),K.addEventListener(t,"blur",c(t)),b&&(K.addEventListener(t,"keydown",s(t)),K.addEventListener(t,"keyup",d(t)),K.addEventListener(t,"click",v(t))),t.setAttribute(j,"true"),t.setAttribute(V,x),(b||t!==r())&&a(t)}var f,h,b,m,A,y,E,x,L,T,S,N,w,B=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],k="#ccc",I="placeholdersjs",R=RegExp("(?:^|\\s)"+I+"(?!\\S)"),V="data-placeholder-value",P="data-placeholder-active",D="data-placeholder-type",U="data-placeholder-submit",j="data-placeholder-bound",q="data-placeholder-focus",Q="data-placeholder-live",z="data-placeholder-maxlength",F=document.createElement("input"),G=document.getElementsByTagName("head")[0],H=document.documentElement,J=t.Placeholders,K=J.Utils;if(J.nativeSupport=void 0!==F.placeholder,!J.nativeSupport){for(f=document.getElementsByTagName("input"),h=document.getElementsByTagName("textarea"),b="false"===H.getAttribute(q),m="false"!==H.getAttribute(Q),y=document.createElement("style"),y.type="text/css",E=document.createTextNode("."+I+" { color:"+k+"; }"),y.styleSheet?y.styleSheet.cssText=E.nodeValue:y.appendChild(E),G.insertBefore(y,G.firstChild),w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x&&(x=x.nodeValue,x&&K.inArray(B,S.type)&&p(S));L=setInterval(function(){for(w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x?(x=x.nodeValue,x&&K.inArray(B,S.type)&&(S.getAttribute(j)||p(S),(x!==S.getAttribute(V)||"password"===S.type&&!S.getAttribute(D))&&("password"===S.type&&!S.getAttribute(D)&&K.changeType(S,"text")&&S.setAttribute(D,"password"),S.value===S.getAttribute(V)&&(S.value=x),S.setAttribute(V,x)))):S.getAttribute(P)&&(n(S),S.removeAttribute(V));m||clearInterval(L)},100)}K.addEventListener(t,"beforeunload",function(){J.disable()}),J.disable=J.nativeSupport?e:i,J.enable=J.nativeSupport?e:l}(this),function(t){"use strict";var e=t.fn.val,r=t.fn.prop;Placeholders.nativeSupport||(t.fn.val=function(t){var r=e.apply(this,arguments),n=this.eq(0).data("placeholder-value");return void 0===t&&this.eq(0).data("placeholder-active")&&r===n?"":r},t.fn.prop=function(t,e){return void 0===e&&this.eq(0).data("placeholder-active")&&"value"===t?"":r.apply(this,arguments)})}(jQuery);
!function(){"use strict";var t={d:function(e,n){for(var r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r:function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{run:function(){return Ct},runGroup:function(){return kt}});var n={};t.r(n),t.d(n,{getScroller:function(){return Ut},lock:function(){return Wt},unlock:function(){return Bt}});var r={};t.r(r),t.d(r,{reInitChildren:function(){return ve}});var o={};t.r(o),t.d(o,{down:function(){return Oe},up:function(){return Se}});var i={};t.r(i),t.d(i,{elVisibleHeight:function(){return Pe},elements:function(){return Te},height:function(){return ke},width:function(){return Ce}});var a={};t.r(a),t.d(a,{clear:function(){return Ue},get:function(){return Je},put:function(){return ze},remove:function(){return Re}});var c={};t.r(c),t.d(c,{clear:function(){return $e},get:function(){return Be},put:function(){return We},remove:function(){return Xe}});var u={};t.r(u),t.d(u,{get:function(){return Ye},remove:function(){return Ge},set:function(){return Ke}});var l={};function s(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function f(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,o,i,a,c=[],u=!0,l=!1;try{if(i=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=i.call(n)).done)&&(c.push(r.value),c.length!==e);u=!0);}catch(t){l=!0,o=t}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(l)throw o}}return c}}(t,e)||function(t,e){if(t){if("string"==typeof t)return s(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(t,e):void 0}}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=[],n=t.length;n--;e.unshift(t[n]));return e}function p(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)}function g(){return d((arguments.length>0&&void 0!==arguments[0]?arguments[0]:document).querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter((function(t){return p(t)}))}function v(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:function(){};if(n&&e){if(27===t.keyCode)return e.focus(),void r();if(9===t.keyCode){var o=g(n),i=o[0],a=o[o.length-1];t.shiftKey?document.activeElement===i&&(a.focus(),t.preventDefault()):document.activeElement===a&&(i.focus(),t.preventDefault())}}}function h(t,e){Object.keys(e).forEach((function(n){return t.setAttribute(n,e[n])}))}t.r(l),t.d(l,{animate:function(){return e},applyBrowserClasses:function(){return Jt},arrayEquals:function(){return k},arrayToInt:function(){return P},aspectRatioToPadding:function(){return L},bodyLock:function(){return n},browsers:function(){return zt},checkNotificationPromise:function(){return qe},clipboard:function(){return Xt},consoleError:function(){return x},consoleInfo:function(){return A},consoleLog:function(){return T},consoleWarn:function(){return C},convertElements:function(){return d},cookieStorage:function(){return u},debounce:function(){return Le},deepMerge:function(){return B},delay:function(){return Y},delegate:function(){return Fe},dragHorizontal:function(){return Yt},escapeHtml:function(){return K},escapeScripts:function(){return G},filterObject:function(){return X},findNestedObject:function(){return $},focusLoop:function(){return v},getChildren:function(){return Kt},getClosest:function(){return Gt},getConfig:function(){return V},getCoords:function(){return Vt},getFocusable:function(){return g},getHiddenHeight:function(){return Qt},getNode:function(){return te},getNodes:function(){return Zt},hasClassFromArray:function(){return ee},hasScrollbar:function(){return ne},insertAfter:function(){return re},insertBefore:function(){return oe},isEmptyObject:function(){return Q},isExternalLink:function(){return ie},isFileLink:function(){return ae},isFormDirty:function(){return ce},isFunction:function(){return N},isImageLink:function(){return ue},isJestTest:function(){return E},isJson:function(){return Z},isObject:function(){return tt},isRtl:function(){return le},localStorage:function(){return a},matchesOrContainedInSelectors:function(){return se},mimicFn:function(){return gt},objectAssign:function(){return vt},objectToAttributes:function(){return wt},objectToFormData:function(){return ht},openNewTab:function(){return fe},parseUrl:function(){return mt},popup:function(){return de},queryToJson:function(){return xt},ready:function(){return Ne},removeClassThatContains:function(){return pe},resize:function(){return He},saferHtml:function(){return yt},sessionStorage:function(){return c},setAttributes:function(){return h},shouldLoadChunk:function(){return ge},simpleBar:function(){return r},slide:function(){return o},slugify:function(){return bt},spacerClasses:function(){return Ae},speak:function(){return j},sprintf:function(){return St},trigger:function(){return $t},uniqueId:function(){return At},updateQueryVar:function(){return Tt},viewport:function(){return i},visible:function(){return p},vsprintf:function(){return jt}});var m={containers:[]},y={previousMessage:""},b=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"polite",e=document.createElement("div");h(e,{"aria-live":t,"aria-relevant":"additions text","aria-atomic":"true",style:"position: absolute; margin: -1px; padding: 0; height: 1px; width: 1px; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); -webkit-clip-path: inset(50%); clip-path: inset(50%); border: 0; word-wrap: normal !important;"}),document.body.appendChild(e),m.containers.push(e)},w=function(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/<[^<>]+>/g," ");return y.previousMessage===t&&(t+=" "),y.previousMessage=t,t},O=function(){return m.containers.forEach((function(t){return t.textContent=""}))},S=function(){m.containers.length||(b("assertive"),b("polite"))};function j(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"polite";S(),O();var n=m.containers.filter((function(t){return t.getAttribute("aria-live")===e}))[0];n&&(n.textContent=w(t))}function E(){return!!window.__TEST__}function x(){window.console&&E()}function A(){}function T(){}function C(){window.console&&E()}function k(t,e){return Array.isArray(t)&&Array.isArray(e)&&t.length===e.length&&t.every((function(t,n){return t===e[n]}))}var P=function(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).map((function(t){return parseInt(t,10)}))};function L(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split(":");return parseFloat((t[1]/t[0]*100).toFixed(5))}function _(t){return _="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_(t)}var I="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103,M=function(t){return!!t&&"object"===_(t)},D=function(t){var e=Object.prototype.toString.call(t);return"[object RegExp]"===e||"[object Date]"===e||function(t){return t.$$typeof===I}(t)};function F(t){return M(t)&&!D(t)}function N(t){return t&&"[object Function]"==={}.toString.call(t)}function H(t,e){return!1!==e.clone&&e.isMergeableObject(t)?W((n=t,Array.isArray(n)?[]:{}),t,e):t;var n}function q(t,e,n){return t.concat(e).map((function(t){return H(t,n)}))}function z(t,e,n){var r=t.slice();return e.forEach((function(e,o){void 0===r[o]?r[o]=n.cloneUnlessOtherwiseSpecified(e,n):n.isMergeableObject(e)?r[o]=W(t[o],e,n):-1===t.indexOf(e)&&r.push(e)})),r}function J(t){return Object.keys(t).concat(function(t){return Object.getOwnPropertySymbols?Object.getOwnPropertySymbols(t).filter((function(e){return t.propertyIsEnumerable(e)})):[]}(t))}function R(t,e){try{return e in t}catch(t){return!1}}function U(t,e,n){var r={};return n.isMergeableObject(t)&&J(t).forEach((function(e){r[e]=H(t[e],n)})),J(e).forEach((function(o){(function(t,e){return R(t,e)&&!(Object.hasOwnProperty.call(t,e)&&Object.propertyIsEnumerable.call(t,e))})(t,o)||(R(t,o)&&n.isMergeableObject(e[o])?r[o]=function(t,e){if(!e.customMerge)return W;var n=e.customMerge(t);return"function"==typeof n?n:W}(o,n)(t[o],e[o],n):r[o]=H(e[o],n))})),r}function W(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};n.arrayMerge=function(t){var e=q;return"combine"===t.arrayMerge?e=z:N(t.arrayMerge)&&(e=t.arrayMerge),e}(n),n.isMergeableObject=n.isMergeableObject||F,n.cloneUnlessOtherwiseSpecified=H;var r=Array.isArray(e);return r===Array.isArray(t)?r?n.arrayMerge(t,e,n):U(t,e,n):H(e,n)}W.all=function(t,e){if(!Array.isArray(t))throw new Error("first argument should be an array");return t.reduce((function(t,n){return W(t,n,e)}),{})};var B=W,X=function(t,e){var n=Object.entries(t).filter(e);return Object.fromEntries(n)};function $(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return function t(r){if("object"===_(r))for(var o in r)if(Object.prototype.hasOwnProperty.call(r,o)){if(o===e&&r[o]===n)return r;var i=t(r[o]);if(i)return i}return null}(t)}function Y(){var t,e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:100,o=[];function i(t,n){e=window.setTimeout((function(){if(e=null,t(),o.length){var n=o.shift();i(n.fn,n.t)}}),n)}return t={delay:function(n,r){return o.length||e?o.push({fn:n,t:r}):i(n,r),t},cancel:function(){return window.clearTimeout(e),o=[],t}},t.delay(n,r)}function K(){return String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#039;")}function G(){return String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,"")}function V(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e&&t[e]?t[e]:t}function Q(t){for(var e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return JSON.stringify(t)===JSON.stringify({})}function Z(t){if(null===t)return!1;try{JSON.parse(t)}catch(t){return!1}return!0}function tt(t){return!(!t||"object"!==_(t)||Array.isArray(t))}function et(t){var e=function(t,e){if("object"!=_(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,e||"default");if("object"!=_(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==_(e)?e:String(e)}function nt(t,e,n){return(e=et(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function rt(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(!t)return;if("string"==typeof t)return ot(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);"Object"===n&&t.constructor&&(n=t.constructor.name);if("Map"===n||"Set"===n)return Array.from(t);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return ot(t,e)}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,o=function(){};return{s:o,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,c=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){c=!0,i=t},f:function(){try{a||null==n.return||n.return()}finally{if(c)throw i}}}}function ot(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function it(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function at(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?it(Object(n),!0).forEach((function(e){nt(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):it(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var ct=function(t,e,n,r){if("length"!==n&&"prototype"!==n&&"arguments"!==n&&"caller"!==n){var o=Object.getOwnPropertyDescriptor(t,n),i=Object.getOwnPropertyDescriptor(e,n);!ut(o,i)&&r||Object.defineProperty(t,n,i)}},ut=function(t,e){return void 0===t||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},lt=function(t,e){var n=Object.getPrototypeOf(e);n!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,n)},st=function(t,e){return"/* Wrapped ".concat(t,"*/\n").concat(e)},ft=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),dt=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),pt=function(t,e,n){var r=""===n?"":"with ".concat(n.trim(),"() "),o=st.bind(null,r,e.toString());Object.defineProperty(o,"name",dt),Object.defineProperty(t,"toString",at(at({},ft),{},{value:o}))};function gt(t,e){var n,r=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).ignoreNonConfigurable,o=void 0!==r&&r,i=t.name,a=rt(Reflect.ownKeys(e));try{for(a.s();!(n=a.n()).done;){var c=n.value;ct(t,e,c,o)}}catch(t){a.e(t)}finally{a.f()}return lt(t,e),pt(t,e,i),t}function vt(){for(var t={},e=0;e<arguments.length;e+=1)for(var n=arguments[e],r=Object.keys(n),o=0;o<r.length;o+=1)t[r[o]]=n[r[o]];return t}var ht=function(t,e,n){var r=new window.FormData;return function t(e,o){if(!function(t){return Array.isArray(n)&&n.some((function(e){return e===t}))}(o))if(o=o||"",e instanceof window.File)r.append(o,e);else if(Array.isArray(e))for(var i=0;i<e.length;i++)t(e[i],o+"["+i+"]");else if("object"===_(e)&&e)for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t(e[a],""===o?a:o+"["+a+"]");else null!=e&&r.append(o,e)}(t,e),r};function mt(t,e){for(var n,r=["source","scheme","authority","userInfo","user","pass","host","port","relative","path","directory","file","query","fragment"],o={},i=o["phpjs.parse_url.mode"]&&o["phpjs.parse_url.mode"].local_value||"php",a={php:/^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,strict:/^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,loose:/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/},c=a[i].exec(t),u={},l=14;l--;)c[l]&&(u[r[l]]=c[l]);return e?u[e.replace("PHP_URL_","").toLowerCase()]:("php"!==i&&(n=o["phpjs.parse_url.queryKey"]&&o["phpjs.parse_url.queryKey"].local_value||"queryKey",a=/(?:^|&)([^&=]*)=?([^&]*)/g,u[n]={},(u[r[12]]||"").replace(a,(function(t,e,r){e&&(u[n][e]=r)}))),u.source=null,u)}function yt(t){for(var e=t[0],n=1;n<arguments.length;n++){e+=String(arguments[n]).replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e+=t[n]}return e}function bt(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").toString().normalize("NFKD").toLowerCase().trim().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/-$/g,"")}function wt(t){var e=[];return Object.entries(t).forEach((function(t){var n=f(t,2),r=n[0],o=n[1];if(o.length||"alt"===r)if(Array.isArray(o)){var i=o.filter((function(t){return t}));e.push("".concat(r,'="').concat(i.join(" "),'"'))}else e.push("".concat(r,'="').concat(o,'"'))})),e.join(" ")}var Ot={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function St(t){return function(t,e){var n,r,o,i,a,c,u,l,s,f=1,d=t.length,p="";for(r=0;r<d;r++)if("string"==typeof t[r])p+=t[r];else if("object"===_(t[r])){if((i=t[r]).keys)for(n=e[f],o=0;o<i.keys.length;o++){if(null==n)throw new Error(St('[sprintf] Cannot access property "%s" of undefined value "%s"',i.keys[o],i.keys[o-1]));n=n[i.keys[o]]}else n=i.param_no?e[i.param_no]:e[f++];if(Ot.not_type.test(i.type)&&Ot.not_primitive.test(i.type)&&n instanceof Function&&(n=n()),Ot.numeric_arg.test(i.type)&&"number"!=typeof n&&isNaN(n))throw new TypeError(St("[sprintf] expecting number but found %T",n));switch(Ot.number.test(i.type)&&(l=n>=0),i.type){case"b":n=parseInt(n,10).toString(2);break;case"c":n=String.fromCharCode(parseInt(n,10));break;case"d":case"i":n=parseInt(n,10);break;case"j":n=JSON.stringify(n,null,i.width?parseInt(i.width):0);break;case"e":n=i.precision?parseFloat(n).toExponential(i.precision):parseFloat(n).toExponential();break;case"f":n=i.precision?parseFloat(n).toFixed(i.precision):parseFloat(n);break;case"g":n=i.precision?String(Number(n.toPrecision(i.precision))):parseFloat(n);break;case"o":n=(parseInt(n,10)>>>0).toString(8);break;case"s":n=String(n),n=i.precision?n.substring(0,i.precision):n;break;case"t":n=String(!!n),n=i.precision?n.substring(0,i.precision):n;break;case"T":n=Object.prototype.toString.call(n).slice(8,-1).toLowerCase(),n=i.precision?n.substring(0,i.precision):n;break;case"u":n=parseInt(n,10)>>>0;break;case"v":n=n.valueOf(),n=i.precision?n.substring(0,i.precision):n;break;case"x":n=(parseInt(n,10)>>>0).toString(16);break;case"X":n=(parseInt(n,10)>>>0).toString(16).toUpperCase()}Ot.json.test(i.type)?p+=n:(!Ot.number.test(i.type)||l&&!i.sign?s="":(s=l?"+":"-",n=n.toString().replace(Ot.sign,"")),c=i.pad_char?"0"===i.pad_char?"0":i.pad_char.charAt(1):" ",u=i.width-(s+n).length,a=i.width&&u>0?c.repeat(u):"",p+=i.align?s+n+a:"0"===c?s+a+n:a+s+n)}return p}(function(t){if(Et[t])return Et[t];var e,n=t,r=[],o=0;for(;n;){if(null!==(e=Ot.text.exec(n)))r.push(e[0]);else if(null!==(e=Ot.modulo.exec(n)))r.push("%");else{if(null===(e=Ot.placeholder.exec(n)))throw new SyntaxError("[sprintf] unexpected placeholder");if(e[2]){o|=1;var i=[],a=e[2],c=[];if(null===(c=Ot.key.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");for(i.push(c[1]);""!==(a=a.substring(c[0].length));)if(null!==(c=Ot.key_access.exec(a)))i.push(c[1]);else{if(null===(c=Ot.index_access.exec(a)))throw new SyntaxError("[sprintf] failed to parse named argument key");i.push(c[1])}e[2]=i}else o|=2;if(3===o)throw new Error("[sprintf] mixing positional and named placeholders is not (yet) supported");r.push({placeholder:e[0],param_no:e[1],keys:e[2],sign:e[3],pad_char:e[4],align:e[5],width:e[6],precision:e[7],type:e[8]})}n=n.substring(e[0].length)}return Et[t]=r}(t),arguments)}function jt(t,e){return St.apply(null,[t].concat(e||[]))}var Et=Object.create(null);var xt=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=t.length?t:window.location.search.slice(1),n=e.length?e.split("&"):[],r={},o=[];return n.forEach((function(t){o=t.split("="),r[o[0]]=decodeURIComponent(o[1]||"")})),JSON.parse(JSON.stringify(r))};function At(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"id";return"".concat(t.length?"".concat(t,"-"):"").concat(Math.random().toString(36).substr(2,9))}function Tt(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:window.location.href).split("#"),r=n[1]?"#".concat(n[1]):"",o=n[0].split("?"),i=o[0],a=o[1],c=void 0!==a?a.split("&"):[],u=!1;return c.forEach((function(n,r){n.startsWith("".concat(t,"="))&&(u=!0,e?c[r]="".concat(t,"=").concat(e):c.splice(r,1))})),!u&&e&&(c[c.length]="".concat(t,"=").concat(e)),"".concat(i).concat("?").concat(c.join("&")).concat(r)}var Ct=function(){var t,e,n,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(r){var i=o.onAnimateInit,a=void 0===i?function(){}:i,c=o.onAnimateStart,u=void 0===c?function(){}:c,l=o.onAnimateEnd,s=void 0===l?function(){}:l,f=o.delay,d=void 0===f?(null===(t=r.dataset)||void 0===t?void 0:t.animationDelay)||0:f,p=o.duration,g=void 0===p?(null===(e=r.dataset)||void 0===e?void 0:e.animationDuration)||400:p,v=o.easing,h=void 0===v?(null===(n=r.dataset)||void 0===n?void 0:n.animationEasing)||"linear":v,m=function(t,e){var n,r,o,i,a,c={},u={},l=e.distanceFrom,s=void 0===l?(null===(n=t.dataset)||void 0===n?void 0:n.translateDistanceFrom)||"20px":l,f=e.distanceTo,d=void 0===f?(null===(r=t.dataset)||void 0===r?void 0:r.translateDistanceTo)||"0px":f,p=e.opacityFrom,g=void 0===p?null===(o=t.dataset)||void 0===o?void 0:o.translateOpacityFrom:p,v=e.opacityTo,h=void 0===v?null===(i=t.dataset)||void 0===i?void 0:i.translateOpacityTo:v,m=e.types;return(void 0===m?(null===(a=t.dataset)||void 0===a?void 0:a.animationTypes)||"":m).split(" ").forEach((function(t){"fadeIn"===t&&(c.opacity=g||0,u.opacity=h||1),"fadeOut"===t&&(c.opacity=g||1,u.opacity=h||0),"translateY"===t&&(c.transform="translateY(".concat(s,")"),u.transform="translateY(".concat(d,")"))})),[c,u]}(r,o);a(),setTimeout((function(){u(),requestAnimationFrame((function(){r.animate(m,{duration:Number(g),easing:h}).onfinish=function(){!function(t,e){var n,r,o,i=e.distanceTo,a=void 0===i?(null===(n=t.dataset)||void 0===n?void 0:n.translateDistanceTo)||"0px":i,c=e.opacityTo,u=void 0===c?null===(r=t.dataset)||void 0===r?void 0:r.translateOpacityTo:c,l=e.types;(void 0===l?(null===(o=t.dataset)||void 0===o?void 0:o.animationTypes)||"":l).split(" ").forEach((function(e){"fadeIn"===e&&(t.style.opacity=u||"1",t.setAttribute("aria-hidden","false")),"fadeOut"===e&&(t.style.opacity=u||"0",t.setAttribute("aria-hidden","true")),"translateY"===e&&(t.style.transform="translateY(".concat(a,")"))}))}(r,o),s()}}))}),d)}},kt=function(){(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).forEach((function(t){var e=t.target,n=t.options;Ct(e,n)}))},Pt=/(android)/i.test(window.navigator.userAgent),Lt=!!window.chrome,_t="undefined"!=typeof InstallTrigger,It=document.documentMode||!1,Mt=!It&&!!window.StyleMedia,Dt=!!window.navigator.userAgent.match(/(iPod|iPhone|iPad)/i),Ft=!!window.navigator.userAgent.match(/(iPod|iPhone)/i),Nt=!!window.opera||window.navigator.userAgent.indexOf(" OPR/")>=0,Ht=Object.prototype.toString.call(window.HTMLElement).indexOf("Constructor")>0||!Lt&&!Nt&&"undefined"!==window.webkitAudioContext,qt=window.navigator.platform;function zt(){return{android:Pt,chrome:Lt,edge:Mt,firefox:_t,ie:It,ios:Dt,iosMobile:Ft,opera:Nt,safari:Ht,os:qt}}function Jt(){var t=zt(),e=document.body.classList;t.android?e.add("device-android"):t.ios&&e.add("device-ios"),t.edge?e.add("browser-edge"):t.chrome?e.add("browser-chrome"):t.firefox?e.add("browser-firefox"):t.ie?e.add("browser-ie"):t.opera?e.add("browser-opera"):t.safari&&e.add("browser-safari")}var Rt=0,Ut=function(){var t=zt();return t.ie||t.firefox||t.chrome&&!t.edge?document.documentElement:document.body},Wt=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],e=Ut(),n=document.body.style;Rt=e.scrollTop,n.overflowY="scroll",n.position="fixed",n.width="100%",t&&(n.marginTop="-".concat(Rt,"px"))},Bt=function(){var t=Ut(),e=document.body.style;e.overflowY="",e.position="static",e.marginTop="0px",e.width="",t.scrollTop=Rt};function Xt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";if(window.clipboardData&&window.clipboardData.setData)return window.clipboardData.setData("Text",t);if(document.queryCommandSupported&&document.queryCommandSupported("copy")){var e=document.createElement("textarea");e.textContent=t,e.style.position="fixed",document.body.appendChild(e),e.select();try{return document.execCommand ("copy")}catch(t){return C("Copy to clipboard failed.",t),!1}finally{document.body.removeChild(e)}}}function $t(){var t,e=vt({data:{},el:document,event:"",native:!0},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{});if(e.native)(t=document.createEvent("HTMLEvents")).initEvent(e.event,!0,!1);else try{t=new window.CustomEvent(e.event,{detail:e.data})}catch(n){(t=document.createEvent("CustomEvent")).initCustomEvent(e.event,!0,!0,e.data)}e.el.dispatchEvent(t)}function Yt(t){var e={isDown:!1,moveEventTriggered:!1,startX:0,scrollLeft:0};t.addEventListener("mousedown",(function(n){e.isDown=!0,t.classList.add("drag-horizontal--active"),e.startX=n.pageX-t.offsetLeft,e.scrollLeft=t.scrollLeft})),t.addEventListener("mouseleave",(function(){e.isDown=!1,t.classList.remove("drag-horizontal--active")})),t.addEventListener("mouseup",(function(){e.isDown=!1,t.classList.remove("drag-horizontal--active"),$t({event:"gform-utils/horizontal-drag-ended",native:!1}),e.moveEventTriggered=!1})),t.addEventListener("mousemove",(function(n){if(e.isDown){n.preventDefault();var r=3*(n.pageX-t.offsetLeft-e.startX);t.scrollLeft=e.scrollLeft-r,e.moveEventTriggered||($t({event:"gform-utils/horizontal-drag-started",native:!1}),e.moveEventTriggered=!0)}}))}function Kt(t){for(var e=[],n=t.children.length;n--;)8!==t.children[n].nodeType&&e.unshift(t.children[n]);return e}function Gt(t,e){var n,r;for(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"].some((function(t){return"function"==typeof document.body[t]&&(n=t,!0)}));t;){if((r=t.parentElement)&&r[n](e))return r;t=r}return null}function Vt(t){var e=t.getBoundingClientRect(),n=document.body,r=document.documentElement,o=window.pageYOffset||r.scrollTop||n.scrollTop,i=window.pageXOffset||r.scrollLeft||n.scrollLeft,a=r.clientTop||n.clientTop||0,c=r.clientLeft||n.clientLeft||0,u=e.top+o-a,l=e.left+i-c;return{top:Math.round(u),left:Math.round(l),bottom:Math.round(e.bottom)}}function Qt(t){var e=t.clientWidth,n=t;n.style.visibility="hidden",n.style.height="auto",n.style.maxHeight="none",n.style.position="fixed",n.style.width="".concat(e,"px");var r=n.offsetHeight;return n.style.visibility="",n.style.height="",n.style.maxHeight="",n.style.width="",n.style.position="",n.style.zIndex="",r}function Zt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:document,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3]?t:'[data-js="'.concat(t,'"]'),o=n.querySelectorAll(r);return e&&(o=d(o)),o}function te(){var t=Zt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",!1,arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,arguments.length>2&&void 0!==arguments[2]&&arguments[2]);return t.length>0?t[0]:null}function ee(t){var e=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:[]).some((function(r){return t.classList.contains("".concat(e).concat(r).concat(n))}))}function ne(t){return{vertical:t.scrollHeight>t.clientHeight,horizontal:t.scrollWidth>t.clientWidth}}function re(t,e){e.parentNode.insertBefore(t,e.nextElementSibling)}function oe(t,e){e.parentNode.insertBefore(t,e)}function ie(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").match(/^([^:/?#]+:)?(?:\/\/([^/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof t[1]&&t[1].length>0&&t[1].toLowerCase()!==window.location.protocol||"string"==typeof t[2]&&t[2].length>0&&t[2].replace(new RegExp(":(".concat({"http:":80,"https:":443}[window.location.protocol],")?$")),"")!==window.location.host}function ae(){return-1!==(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split("/").pop().indexOf(".")}function ce(){var t;if(!window.gforms_original_json||!window.UpdateFormObject)return!1;window.UpdateFormObject();var e="1"===(null===(t=window)||void 0===t||null===(t=t.gf_legacy)||void 0===t?void 0:t.is_legacy),n=JSON.parse(JSON.stringify(JSON.parse(window.gforms_original_json))),r=JSON.parse(JSON.stringify(window.form));return e&&(n.fields.forEach((function(t,e){delete n.fields[e].layoutGroupId})),r.fields.forEach((function(t,e){delete r.fields[e].layoutGroupId}))),JSON.stringify(n)!==JSON.stringify(r)}function ue(){var t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").split(".").pop().toLowerCase().match(/(jpg|jpeg|png|gif|svg)/g);return t&&t.length>0||!1}function le(){var t=document.createElement("div");document.body.appendChild(t);var e="rtl"===window.getComputedStyle(t,null).getPropertyValue("direction");return document.body.removeChild(t),e}function se(t,e){for(var n=0;n<e.length;n++)for(var r=document.querySelectorAll(e[n]),o=0;o<r.length;o++)if(t===r[o]||r[o].contains(t))return!0;return!1}function fe(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=document.createElement("a");e.href=t,e.target="_blank",document.body.appendChild(e),e.click(),e.remove()}function de(){var t=vt({event:null,url:"",center:!0,name:"_blank",specs:{menubar:0,scrollbars:0,status:1,titlebar:1,toolbar:0,top:100,left:100,width:500,height:300}},arguments.length>0&&void 0!==arguments[0]?arguments[0]:{});if(t.event&&(t.event.preventDefault(),t.url.length||(t.url=t.event.currentTarget.href)),t.url.length){t.center&&(t.specs.top=window.screen.height/2-t.specs.height/2,t.specs.left=window.screen.width/2-t.specs.width/2);var e=[];Object.entries(t.specs).forEach((function(t){var n=f(t,2),r=n[0],o=n[1],i="".concat(r,"=").concat(o);e.push(i)})),window.open(t.url,t.name,e.join())}}function pe(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=0;n<t.classList.length;n++)-1!==t.classList.item(n).indexOf(e)&&t.classList.remove(t.classList.item(n))}function ge(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return document.querySelectorAll("[data-load-chunk-".concat(t,"]")).length>0}var ve=function(t){var e,n=(null===(e=window)||void 0===e?void 0:e.SimpleBar)||{};n.instances&&t&&Zt("[data-simplebar]",!0,t,!0).forEach((function(t){var e;return null!==(e=n.instances.get(t))&&void 0!==e?e:new n(t)}))},he=25,me=[],ye=function(t){return t<.2074?-3.8716*t*t*t+6.137*t*t+.4*t:1.1317*(t-1)*(t-1)*(t-1)-.1975*(t-1)*(t-1)+1},be=function(t){me[t]||(me[t]={up:null,down:null})},we=function(t){me[t].up&&(window.cancelAnimationFrame(me[t].up),me[t].up=null),me[t].down&&(window.cancelAnimationFrame(me[t].down),me[t].down=null)},Oe=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=t.offsetHeight,i=Qt(t),a=null;t.style.maxHeight="0",be(e),we(e);var c=function c(u){a||(a=u);var l=u-a,s=ye(l/n)*(i-o)+o;t.style.maxHeight="".concat(s,"px"),l<n?me[e].down=window.requestAnimationFrame(c):(me[e].down=null,t.style.maxHeight="none",r&&r())};setTimeout((function(){me[e].down=window.requestAnimationFrame(c)}),he)},Se=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:400,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=t.offsetHeight,i=null;t.style.maxHeight="".concat(o,"px"),be(e),we(e);var a=function a(c){i||(i=c);var u=c-i,l=ye(u/n)*(0-o)+o;t.style.maxHeight="".concat(l,"px"),u<n?me[e].up=window.requestAnimationFrame(a):(me[e].up=null,t.style.maxHeight="0",r&&r())};setTimeout((function(){me[e].up=window.requestAnimationFrame(a)}),he)};function je(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function Ee(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?je(Object(n),!0).forEach((function(e){nt(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):je(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}var xe=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"gform-spacing",r={};return!t||"string"!=typeof t&&"number"!=typeof t&&!Array.isArray(t)||Array.isArray(t)&&!t.length?r:"string"==typeof t||"number"==typeof t?(r["".concat(n,"--").concat(e,"bottom-").concat(t)]=!0,r):1===t.length?(["top","right","bottom","left"].forEach((function(o){r["".concat(n,"--").concat(e).concat(o,"-").concat(t[0])]=!0})),r):2===t.length?(["top","bottom"].forEach((function(o){r["".concat(n,"--").concat(e).concat(o,"-").concat(t[0])]=!0})),["right","left"].forEach((function(o){r["".concat(n,"--").concat(e).concat(o,"-").concat(t[1])]=!0})),r):3===t.length?(r["".concat(n,"--").concat(e,"top-").concat(t[0])]=!0,["right","left"].forEach((function(o){r["".concat(n,"--").concat(e).concat(o,"-").concat(t[1])]=!0})),r["gform-spacing--".concat(e,"bottom-").concat(t[2])]=!0,r):4===t.length?(r["".concat(n,"--").concat(e,"top-").concat(t[0])]=!0,r["".concat(n,"--").concat(e,"right-").concat(t[1])]=!0,r["".concat(n,"--").concat(e,"bottom-").concat(t[2])]=!0,r["".concat(n,"--").concat(e,"left-").concat(t[3])]=!0,r):r};function Ae(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"gform-spacing",n={};return!t||"string"!=typeof t&&"number"!=typeof t&&!Array.isArray(t)&&("object"!==_(t)||Array.isArray(t))||Array.isArray(t)&&!t.length?n:(n[e]=!0,"string"==typeof t||"number"==typeof t||Array.isArray(t)?Ee(Ee({},n),xe(t,"",e)):["","md","lg"].reduce((function(n,r){return Object.prototype.hasOwnProperty.call(t,r)?Ee(Ee({},n),xe(t[r],r?"".concat(r,"-"):"",e)):n}),n))}var Te=function(){var t="undefined"!=typeof window&&window,e="undefined"!=typeof document&&document;return{docElem:e&&e.documentElement,win:t}},Ce=function(){var t=Te(),e=t.docElem,n=t.win,r=e.clientWidth,o=n.innerWidth;return r<o?o:r},ke=function(){var t=Te(),e=t.docElem,n=t.win,r=e.clientHeight,o=n.innerHeight;return r<o?o:r},Pe=function(t){var e=t.offsetHeight,n=ke(),r=t.getBoundingClientRect(),o=r.bottom,i=r.top;return Math.max(0,i>0?Math.min(e,n-i):Math.min(o,n))};function Le(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if("function"!=typeof t)throw new TypeError("Expected the first argument to be a function, got `".concat(_(t),"`"));var n,r,o,i=e.wait,a=void 0===i?0:i,c=e.maxWait,u=void 0===c?Number.Infinity:c,l=e.before,s=void 0!==l&&l,f=e.after,d=void 0===f||f;if(!s&&!d)throw new Error("Both `before` and `after` are false, function wouldn't be called.");var p=function(){for(var e=arguments.length,i=new Array(e),c=0;c<e;c++)i[c]=arguments[c];var l=this,f=s&&!n;return clearTimeout(n),n=setTimeout((function(){n=void 0,r&&(clearTimeout(r),r=void 0),d&&(o=t.apply(l,i))}),a),u>0&&u!==Number.Infinity&&!r&&(r=setTimeout((function(){r=void 0,n&&(clearTimeout(n),n=void 0),d&&(o=t.apply(l,i))}),u)),f&&(o=t.apply(l,i)),o};return gt(p,t),p.cancel=function(){n&&(clearTimeout(n),n=void 0),r&&(clearTimeout(r),r=void 0)},p}var _e=9;if("undefined"!=typeof Element&&!Element.prototype.matches){var Ie=Element.prototype;Ie.matches=Ie.matchesSelector||Ie.mozMatchesSelector||Ie.msMatchesSelector||Ie.oMatchesSelector||Ie.webkitMatchesSelector}function Me(t,e,n,r,o){var i=De.apply(this,arguments);return t.addEventListener(n,i,o),{destroy:function(){t.removeEventListener(n,i,o)}}}function De(t,e,n,r){return function(n){n.delegateTarget=function(t,e){for(;t&&t.nodeType!==_e;){if("function"==typeof t.matches&&t.matches(e))return t;t=t.parentNode}}(n.target,e),n.delegateTarget&&r.call(t,n)}}var Fe=function(t,e,n,r){var o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return"function"==typeof t.addEventListener?Me.apply(null,arguments):"function"==typeof n?Me.bind(null,document).apply(null,arguments):("string"==typeof t&&(t=document.querySelectorAll(t)),Array.prototype.map.call(t,(function(t){return Me(t,e,n,r,o)})))};function Ne(t){"loading"!==document.readyState?t():document.addEventListener?document.addEventListener("DOMContentLoaded",t):document.attachEvent("onreadystatechange",(function(){"loading"!==document.readyState&&t()}))}function He(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?window.addEventListener("resize",Le(t,{wait:e})):window.removeEventListener("resize",Le(t,{wait:e}))}function qe(){try{window.Notification.requestPermission().then()}catch(t){return!1}return!0}var ze=function(t,e){window.localStorage.setItem(t,e)},Je=function(t){return window.localStorage.getItem(t)},Re=function(t){return window.localStorage.removeItem(t)},Ue=function(){window.localStorage.clear()},We=function(t,e){window.sessionStorage.setItem(t,e)},Be=function(t){return window.sessionStorage.getItem(t)},Xe=function(t){return window.sessionStorage.removeItem(t)},$e=function(){window.sessionStorage.clear()},Ye=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=document.cookie.split(";"),n=0;n<e.length;n++){var r=e[n].split("=");if(t===r[0].trim())return decodeURIComponent(r[1])}return null},Ke=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,o="",i=e;if(n&&!isNaN(Number(n))){var a=new Date;a.setTime(a.getTime()+24*Number(n)*60*60*1e3),o=" expires="+a.toUTCString()}if(r){var c=Ye(t);i=""!==c&&null!==c?c+","+e:e}document.cookie=encodeURIComponent(t)+"="+encodeURIComponent(i)+";"+o},Ge=function(t){Ke(t,"",-1)};window.gform=window.gform||{},window.gform.utils=window.gform.utils||{};var Ve;Ve=window.gform.utils,Object.entries(l).forEach((function(t){var e=f(t,2),n=e[0],r=e[1];Ve[n]=r}))}();