Domain: lemmonlines.com
Server Adress: 208.122.217.104
privdayz.com
function executeFunctionByName(functionName, context) {
for (var args = Array.prototype.slice.call(arguments, 2), namespaces = functionName.split("."), func = namespaces.pop(), i = 0; i < namespaces.length; i++) context = context[namespaces[i]];
return context[func].apply(context, args)
}
function str_replace(search, replace, subject, count) {
var i = 0,
j = 0,
temp = "",
repl = "",
sl = 0,
fl = 0,
f = [].concat(search),
r = [].concat(replace),
s = subject,
ra = r instanceof Array,
sa = s instanceof Array;
for (s = [].concat(s), count && (this.window[count] = 0), i = 0, sl = s.length; sl > i; i++)
if ("" !== s[i])
for (j = 0, fl = f.length; fl > j; j++) temp = s[i] + "", repl = ra ? void 0 !== r[j] ? r[j] : "" : r[0], s[i] = temp.split(f[j]).join(repl), count && s[i] !== temp && (this.window[count] += (temp.length - s[i].length) / f[j].length);
return sa ? s : s[0]
}
function is_numeric(input) {
return input - 0 == input && input.length > 0
}
function stripos(f_haystack, f_needle, f_offset) {
var haystack = (f_haystack + "").toLowerCase(),
needle = (f_needle + "").toLowerCase(),
index = 0;
return -1 !== (index = haystack.indexOf(needle, f_offset)) ? index : !1
}
function addCommas(nStr) {
nStr += "", x = nStr.split("."), x1 = x[0], x2 = x.length > 1 ? "." + x[1] : "";
for (var rgx = /(\d+)(\d{3})/; rgx.test(x1);) x1 = x1.replace(rgx, "$1,$2");
return x1.replace(/\$-/, "-$") + x2
}
function pad(number, length) {
for (var str = "" + number; str.length < length;) str = "0" + str;
return str
}
function handleAjaxErrorResponse(response) {
response.responseText && "unauthorized" == response.responseText ? window.location.reload(!0) : ($("#inline_login").val(window.location), console.log("cool!")), checkForUpdates = !1
}
function ucwords(str) {
return (str + "").replace(/^([a-z])|\s+([a-z])/g, function($1) {
return $1.toUpperCase()
})
}
function gaEvent(category, action, userType) {
_gaq.push(["_trackEvent", category, action, userType])
}
function checkValidDates() {
$("#event_date_end").hasClass("error-border") || $("#event_date").hasClass("error-border") ? ($(".bottom-wrap .createIt").addClass("error").removeClass("success"), $("#splashCreateButton").attr("disabled", "disabled"), $("#splashCreateButtonFake").hasClass("disabled") || $("#splashCreateButtonFake").addClass("disabled")) : ($(".bottom-wrap .createIt").removeClass("error").addClass("success"), $("#splashCreateButton").removeAttr("disabled"), $("#splashTypeWrap").find(".form-inactive").removeClass("form-inactive"), $("#splashCreateButtonFake").removeClass("disabled"))
}
function doneTypingDomain(params) {
var obj_input = !0,
bad_chars = !1;
params = params ? params : {};
var $inputObj = "undefined" != typeof params.inputObj ? params.inputObj : null,
$settingsModal = "undefined" != typeof params.modal ? params.modal : null,
createPage = $("body").hasClass("createPage");
if (createPage) var $domainInput = $("#event-domain"),
$domainValid = $("#valid-domain"), $domainText = $("#event-domain-field"), $domainCheck = $("#domain-check"), $domainContainer = $("#domain-input"), $eventTitle = $("#event-title"), $eventHashtag = $("#event-hashtag");
else if (null != $settingsModal && $settingsModal.length) var $domainInput = $settingsModal.find(".settings-domain-input"),
$domainValid = $settingsModal.find(".settings-domain-valid"), $domainText = $settingsModal.find(".settings-domain-text"), $domainCheck = $settingsModal.find(".settings-domain-check"), $domainContainer = $settingsModal.find(".settings-domain-container"), $eventTitle = $(), $eventHashtag = $();
else {
if (!($("#dupe-event-domain").length > 0)) return console.log("Error, unknown case"), !1;
var $domainInput = $("#dupe-event-domain"),
$domainText = $(),
$domainCheck = $("#domain-check"),
$domainContainer = $(),
$domainValid = $(),
$eventTitle = $("#dupe-event-title"),
$eventHashtag = $()
} if ($domainInput.hasClass("skipThis")) return $domainValid.length && $domainValid.val("1"), !1;
if (null != $inputObj) {
var $obj = $inputObj,
domain_val = $obj.val();
(domain_val.match(/^www\./) || domain_val.match(/\./g) || domain_val.match(/ /g) || domain_val.match(/^https?:\/\//)) && (bad_chars = !0);
var domain_name = $.trim($obj.val().replace(/^https?:\/\//, "").replace(/^www\./, "").replace(/\./g, "").replace(/ /g, ""));
domain_name != $obj.val() && $obj.val(domain_name)
} else if ($domainText.length > 0) {
var $obj = $domainText,
domain_name = $.trim($obj.text().replace(/^https?:\/\//, "").replace(/^www\./, "").replace(/\./g, "").replace(/ /g, "")),
domain_val = $domainText.text();
(domain_val.match(/^www\./) || domain_val.match(/\./g) || domain_val.match(/ /g) || domain_val.match(/^https?:\/\//)) && (bad_chars = !0), domain_val != $domainInput.val() ? (bad_chars && $obj.text(domain_name), obj_input = !1, $domainInput.val(domain_name), "undefined" != typeof domain_changes && (domain_changes = !0)) : bad_chars && (obj_input = !1, $domainInput.val(domain_name), "undefined" != typeof domain_changes && (domain_changes = !0))
} else {
var $obj = $domainInput,
domain_name = $.trim($obj.val().replace(/^https?:\/\//, "").replace(/^www\./, "").replace(/\./g, "").replace(/ /g, ""));
domain_name != $obj.val() && (bad_chars && $obj.val(domain_name), "undefined" != typeof domain_changes && (domain_changes = !0))
} if ("" == domain_name) return error_msg = "✖ 3 character minimum.", $domainCheck.removeClass("success").addClass("error").hide().html(error_msg).fadeIn(100), $domainValid.length && $domainValid.val(0), $domainContainer.removeClass("success").addClass("error"), $eventTitle.length && $eventHashtag.length && ($eventTitle.removeClass("error").removeClass("success"), $eventHashtag.removeClass("error").removeClass("success")), $(".bottom-wrap .createIt").addClass("error").removeClass("success"), $("#splashCreateButton").attr("disabled", "disabled"), $("#splashCreateButtonFake").hasClass("disabled") || $("#splashCreateButtonFake").addClass("disabled"), !1;
domain_name = domain_name.toLowerCase(), $obj.val(domain_name);
var reg = /^([a-z0-9])([a-z0-9-])+([a-z0-9])$/i;
if (!reg.test(domain_name)) {
$obj.addClass("error-border");
var error_msg = "✖ Not a valid domain.";
return obj_input ? $obj.val().length < 3 && (error_msg = "✖ 3 character minimum.") : $obj.text().length < 3 && (error_msg = "✖ 3 character minimum."), null != $inputObj ? ($inputObj.addClass("error").parents(".simple-modal:first").removeClass("success domainTaken").addClass("error"), $("#dupe-event-domain").length > 0 && $domainCheck.removeClass("success").addClass("error").hide().html(error_msg).fadeIn(100)) : (createPage ? ($domainCheck.removeClass("success").addClass("error").hide().html(error_msg).fadeIn(100), $domainContainer.removeClass("success").addClass("error"), $eventTitle.removeClass("success").addClass("error"), $eventHashtag.removeClass("success").addClass("error"), $(".bottom-wrap .createIt").addClass("error").removeClass("success"), $("#splashCreateButton").attr("disabled", "disabled"), $("#splashCreateButtonFake").hasClass("disabled") || $("#splashCreateButtonFake").addClass("disabled")) : $("#dupe-event-domain").length > 0 ? $domainCheck.removeClass("success").addClass("error").hide().html(error_msg).fadeIn(100) : ($domainCheck.removeClass("success").addClass("error").hide().html("").fadeIn(100), $domainContainer.addClass("error"), $domainCheck.append('<div id="domainStateText" class="hide">3 character minimum.</div>')), $domainValid.length && $domainValid.val(0)), current_text = domain_name, !1
}
if (domain_name != current_text) {
var domain_check = "/splash/checkDomainAvailability";
$.post(domain_check, {
domain: domain_name,
event_id: splash.server.constants.event_id
}, function(response) {
var jq = $.parseJSON(response);
return jq.taken ? ($domainInput.addClass("error-border"), null != $inputObj ? ($inputObj.removeClass("success").addClass("error").parents(".simple-modal:first").removeClass("success").addClass("error domainTaken"), $("#dupe-event-domain").length > 0 && $domainCheck.removeClass("success").addClass("error").hide().html('<span class="icon-f-rte-delete"></span> Domain not available.').fadeIn(100)) : createPage ? ($domainCheck.removeClass("success").addClass("error").hide().html('<span class="icon-f-rte-delete"></span> Domain not available.').fadeIn(100), $domainContainer.removeClass("success").addClass("error"), $eventTitle.removeClass("success").addClass("error"), $eventHashtag.removeClass("success").addClass("error"), $(".bottom-wrap .createIt").addClass("error").removeClass("success"), $("#splashCreateButton").attr("disabled", "disabled"), $("#splashCreateButtonFake").hasClass("disabled") || $("#splashCreateButtonFake").addClass("disabled")) : $("#dupe-event-domain").length > 0 ? $domainCheck.removeClass("success").addClass("error").hide().html('<span class="icon-f-rte-delete"></span> Domain not available.').fadeIn(100) : ($domainCheck.removeClass("success").addClass("error").hide().html("").fadeIn(100), $domainContainer.addClass("error"), $domainCheck.append('<div id="domainStateText" class="hide">Domain not</br>available.</div>')), $("#splashDomainLink").length && ($("#splashDomainLink").hide(), $("#splashDomainManual").show()), $domainValid.length && $domainValid.val(0), !1) : (null != $inputObj ? ($inputObj.removeClass("error").addClass("success").parents(".simple-modal:first").removeClass("error domainTaken").addClass("success"), $("#dupe-event-domain").length > 0 && $domainCheck.removeClass("error").addClass("success").hide().html('<span class="icon-f-tb-save"></span> Great domain!').fadeIn(100)) : ($obj.removeClass("error-border"), createPage ? ($domainCheck.removeClass("error").addClass("success").hide().html('<span class="icon-f-tb-save"></span> Great domain!').fadeIn(100), $domainContainer.removeClass("error").addClass("success"), $eventTitle.removeClass("error").addClass("success"), $eventHashtag.removeClass("error").addClass("success"), $(".bottom-wrap .createIt").removeClass("error").addClass("success"), $("#splashCreateButton").removeAttr("disabled"), $("#splashTypeWrap").find(".form-inactive").removeClass("form-inactive"), $("#splashCreateButtonFake").removeClass("disabled")) : $("#dupe-event-domain").length > 0 ? $domainCheck.removeClass("error").addClass("success").hide().html('<span class="icon-f-tb-save"></span> Great domain!').fadeIn(100) : ($domainCheck.removeClass("error").addClass("success").hide().html("✓").fadeIn(100), $domainContainer.removeClass("error"), $domainCheck.append('<div id="domainStateText" class="hide"><span class="icon-f-tb-save"></span> Great Domain!</div>'))), $domainValid.length && $domainValid.val("1"), current_text = domain_name, void $obj.addClass("changes-made"))
})
}
}
function getHash() {
var href = window.location.href.split("#"),
hash = "";
return href.length && (hash = $.trim(href.pop())), hash
}
function capitalizeFirstLetter(string) {
return "undefined" != typeof string && null != string ? ("" + string).charAt(0).toUpperCase() + ("" + string).slice(1) : void 0
}
function getHash() {
var href = window.location.href.split("#"),
hash = "";
return href.length > 1 && (hash = $.trim(href.pop())), hash
}
function formatSuffix(dateText) {
var suffix = "";
switch (dateText.charAt(dateText.length - 1)) {
case "1":
suffix = "st";
break;
case "2":
suffix = "nd";
break;
case "3":
suffix = "rd";
break;
default:
suffix = "th"
}
var two_digits = dateText.substr(-2);
("13" == two_digits || "12" == two_digits || "11" == two_digits) && (suffix = "th");
var date_value = dateText + suffix;
return date_value
}
function getMonthName(month) {
return months[month]
}
function getDayName(day) {
return days[day]
}
function closeRevealModal() {
$("div.zurb-ajax-modal,div.reveal-modal-bg").fadeOut("fast", function() {
$(this).remove(), $("#planning-tools").hasClass("expanded") && $("body").addClass("lockItUp")
})
}
function convertAMPMto24Hour(time, format) {
var matches = time.match(/^(\d+):(\d+):{0,1}(\d{0,2})/),
hours = Number(matches[1]),
minutes = Number(matches[2]);
/PM/i.test(time) && 12 > hours && (hours += 12), /AM/i.test(time) && 12 == hours && (hours -= 12);
var sHours = hours.toString(),
sMinutes = minutes.toString();
return 10 > hours && (sHours = "0" + sHours), 10 > minutes && (sMinutes = "0" + sMinutes), "format-simple" == format ? sHours + sMinutes : sHours + ":" + sMinutes + ("" != matches[3] ? ":" + matches[3] : ":00")
}
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return null === results ? "" : decodeURIComponent(results[1].replace(/\+/g, " "))
}
function copyToClipboard(text) {
window.prompt("Copy to clipboard: Ctrl+C, Enter", text)
}
function killFlashTabs() {
$("#nuTool").find(".toolBtn").removeClass("fvFlash")
}
function highlightBottomNav(num) {
return $("body").hasClass("flashNav") ? (thisTab = ".planning-tools-nav li:nth-child(" + num + ")", $(thisTab).addClass("highlight"), $(thisTab).siblings().removeClass("highlight"), void 0) : !1
}
function flashBottomNav(num) {
return $("body").hasClass("flashNav") ? (thisTab = ".planning-tools-nav li:nth-child(" + num + ")", $(thisTab).addClass("flash"), $(thisTab).siblings().removeClass("flash"), void 0) : !1
}
function arrayUnique(a) {
return a.reduce(function(p, c) {
return p.indexOf(c) < 0 && p.push(c), p
}, [])
}
function killFirstView() {
killFlashTabs(), $("body").removeClass("flashNav giftWrap"), $("#firstViewOverlay").fadeOut(100, function() {
$(this).remove(), $("body").removeClass("showTutorial"), $("#revertPath").length > 0 && $("#revertPath").show()
})
}
function killSecondView() {
$("body").removeClass("flashNav giftWrap"), $("#secondViewOverlay").fadeOut(100, function() {
$(this).remove(), $("body").removeClass("showTut2"), $("#revertPath").length > 0 && $("#revertPath").show()
})
}
function bindSplashDropdown($dropdown, open, forceBound) {
if ($dropdown.data("splash-dropdown") !== !0 || forceBound) {
$dropdown.data("splash-dropdown", !0);
var open = open || !1;
if (open && ($dropdown.addClass("open"), $dropdown.parents("#nav-embed").length > 0)) {
var $last_option = $dropdown.find(".option:last"),
top_position = $last_option.offset().top + $last_option.height();
setTimeout(function() {
$("#nav-embed .content").scrollTop(top_position)
}, 1)
}
var $current = $dropdown.find(".current:first");
$current.unbind("mousedown").mousedown(function() {
if ($dropdown.hasClass("open")) $current.hasClass("no-close") || $dropdown.removeClass("open");
else if ($dropdown.addClass("open"), $dropdown.parents("#nav-embed").length > 0) {
var $last_option = $dropdown.find(".option:last"),
top_position = $last_option.offset().top + $last_option.height();
setTimeout(function() {
$("#nav-embed .content").scrollTop(top_position)
}, 1)
}
}), $dropdown.on("click", ".options:first > div", function() {
var $opt = $(this),
value = $opt.attr("value");
if (!$current.hasClass("external-link")) {
if ($(this).hasClass("edit-fonts")) return !1;
$opt.addClass("active").siblings().removeClass("active"), "undefined" == typeof value && (value = $opt.html()), $current.hasClass("locked") || $opt.hasClass("locked") || $current.html($opt.html()), $current.hasClass("no-close") || $opt.hasClass("no-close") || $dropdown.removeClass("open").trigger("change"), $current.hasClass("no-val-change") || $opt.hasClass("no-val-change") || $dropdown.find("input:first").val(value).trigger("change")
}
});
var drpclr;
$dropdown.unbind("mouseover").mouseover(function() {
clearTimeout(drpclr)
}), $dropdown.unbind("mouseout").mouseout(function() {
clearTimeout(drpclr), drpclr = setTimeout(function() {
$current.hasClass("no-close") || $dropdown.removeClass("open"), $dropdown.hasClass("unit-dropdown") && $dropdown.parents(".bx:first").removeClass("dd-open")
}, 750)
})
}
}
function bindSplashAccordion($accordion, open, forceBound) {
if ($accordion.data("splash-accordion") !== !0 || forceBound) {
$accordion.data("splash-accordion", !0);
var open = open || !1;
open && !$accordion.hasClass("customEdit") && $accordion.addClass("open");
var $current = $accordion.find(".current:first"),
$trig = $accordion.find(".nu-accord-trig:first");
$trig.click(function() {
$accordion.hasClass("open") ? $accordion.removeClass("open") : $accordion.addClass("open")
});
var $options = $accordion.find(" .options:first");
$options.on("click", "div.option", function() {
var $opt = $(this),
value = $opt.attr("value");
$options.find(".active").addClass("lastActive").siblings().removeClass("lastActive"), $opt.removeClass("active").siblings().removeClass("active"), $opt.addClass("active").siblings().removeClass("active"), "undefined" == typeof value && (value = $opt.html()), $current.html($opt.html()), $accordion.find("input:first").val(value).trigger("change")
})
}
}
function bindSplashTip($tip) {
var w = $tip.attr("open-width") || 300;
$tip.addClass("bound").find("> span:first").css({
width: w + "px",
marginLeft: w / -2 + "px"
})
}
function bindSplashCheck($check) {
var clickNuCheckbox = function() {
var c = "checked";
if ("undefined" != typeof $check.attr("vals")) var vals = $check.attr("vals").split(",");
var thisVal = $check.find("input[type='hidden']:first").attr("use-val");
if ("include_other_opt" == thisVal && (thisVal = void 0), $check.hasClass(c)) {
var v = "undefined" != typeof vals ? vals[0] : 0;
"undefined" != typeof $check.attr("rev") && (v = 1), "undefined" != typeof thisVal && (v = thisVal), $check.removeClass(c).find("input[type='hidden']:first").val(v).trigger("change")
} else {
var v = "undefined" != typeof vals ? vals[1] : 1;
$check.attr("rev") && (v = 0), "undefined" != typeof thisVal && (v = thisVal), $check.addClass(c).find("input[type='hidden']:first").val(v).trigger("change")
}
};
$check.unbind("click").click(clickNuCheckbox), clickNuCheckbox()
}
function flipAccordion($acc, newVal, triggerChange) {
$acc.hasClass("nu-accord") || ($acc = $acc.parents(".nu-accord:first")), null != triggerChange && 1 == triggerChange ? $acc.find("input:first").val(newVal).trigger("change") : $acc.find("input:first").val(newVal);
var $opt = $acc.find('.options div[value="' + newVal + '"]');
$opt.addClass("active").siblings().removeClass("active"), $acc.find(".current").html($opt.html())
}
function flipDropDown($dd, newVal, triggerChange, forceResetAfterSelection) {
$dd.hasClass("nu-dropdown") || ($dd = $dd.parents(".nu-dropdown:first")), null != triggerChange && 1 == triggerChange ? $dd.find("input:first").val(newVal).trigger("change") : $dd.find("input:first").val(newVal);
var $opt = $dd.find("div.options").find('div[value="' + newVal + '"]:first');
if ($opt.length < 1 && "undefined" != typeof newVal) var $opt = $dd.find("div.options").find('div[value="' + capitalizeFirstLetter(newVal) + '"]:first');
$opt.length > 0 ? ($opt.addClass("active").siblings().removeClass("active"), $dd.find(".current").html($opt.html())) : ($dd.find("div.options").removeClass("active"), $dd.find(".current").html(""));
var forceResetAfterSelection = forceResetAfterSelection || !1;
(forceResetAfterSelection === !0 || "string" == typeof forceResetAfterSelection) && ($dd.find(".current").html("string" == typeof forceResetAfterSelection ? forceResetAfterSelection : "Select"), $opt.removeClass("active"))
}
function bindSplashRadio($radio, skipFirstClick) {
var skipFirstClick = skipFirstClick || !1,
myClick = function(e) {
var c = "select",
name = $radio.attr("name");
$radio.hasClass(c) ? $radio.removeClass(c).find("input[type='hidden']:first").val(0).prop("checked", !1).trigger("change") : ($radio.parents(".nu-radio-contain:first").find(".nu-radio[name='" + name + "']").each(function() {
$(this).find("input[type='hidden']:first").val(0).prop("checked", !1).trigger("change").end().removeClass("select")
}), $radio.addClass(c).find("input[type='hidden']:first").val(1).prop("checked", !0).trigger("change")), e && e.stopPropagation()
};
$radio.unbind("click").click(myClick), skipFirstClick || myClick()
}
function setCheck($obj, value, forceTrigger) {
$obj.hasClass("nu-checkbox") && ($obj = $obj.find("input:first")), "1" == value || "true" == value ? $obj.val(1).parent().addClass("checked") : $obj.val(0).parent().removeClass("checked"), null != forceTrigger && 1 == forceTrigger && $obj.trigger("change")
}
function getChangedInputsArray($changed_inputs) {
var postData = {};
return $changed_inputs.each(function() {
"" != this.name && ("checkbox" == this.type ? $(this).hasClass("rsvp-field") ? postData["data[EventSetting][rsvp_fields][" + this.value + "]"] = 1 == this.checked ? 1 : 0 : postData[this.name] = 1 == this.checked ? 1 : 0 : "radio" == this.type ? 1 == this.checked && (postData[this.name] = this.value) : "undefined" != typeof postData[this.name] ? $.isArray(postData[this.name]) ? postData[this.name].push(this.value) : postData[this.name] = [postData[this.name], this.value] : postData[this.name] = this.value)
}), postData
}
function flashTabs(pos) {
var timeout = 200;
"top" == pos ? ($tab1 = $("#nuToolBtns").find(".toolBtn:eq(0)"), $tab2 = $("#nuToolBtns").find(".toolBtn:eq(1)"), $tab3 = $("#nuToolBtns").find(".toolBtn:eq(2)"), $tab4 = $("#nuToolBtns").find(".toolBtn:eq(3)")) : "bottom" == pos && ($tab1 = $("#nuPlanBtns").find(".toolBtn:eq(0)"), $tab2 = $("#nuPlanBtns").find(".toolBtn:eq(1)"), $tab3 = $("#nuPlanBtns").find(".toolBtn:eq(2)"), $tab4 = $("#nuPlanBtns").find(".toolBtn:eq(3)")), $tab1.addClass("fvFlash"), setTimeout(function() {
$tab2.addClass("fvFlash"), setTimeout(function() {
$tab3.addClass("fvFlash"), setTimeout(function() {
$tab4.addClass("fvFlash")
}, timeout)
}, timeout)
}, timeout)
}
function saveTags(tags, _callBack, _errorCallBack) {
tags && 0 != tags.length && $.ajax({
url: "/address_book/saveTags",
type: "post",
data: {
tags: tags
},
dataType: "json"
}).done(function() {
"function" == typeof _callBack && _callBack()
}).fail(function(jqXHR, textStatus) {
console.log("Error saving tags: " + textStatus), "function" == typeof _errorCallBack && _errorCallBack()
})
}
function isValidEmail(val) {
var reg = /^([A-Za-z0-9_\-\.\+:])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]*)$/;
return reg.test($.trim(val))
}
function debounce(func, wait, immediate) {
var timeout;
return function() {
var context = this,
args = arguments;
clearTimeout(timeout), timeout = setTimeout(function() {
timeout = null, immediate || func.apply(context, args)
}, wait), immediate && !timeout && func.apply(context, args)
}
}
function trackIndicativeEvent(value, params) {
return "undefined" != typeof Indicative ? !1 : void 0
}
function scrollToBlock($block, options) {
if (options = options ? options : {}, "undefined" == typeof options.force && (options.force = !1), "undefined" == typeof options.pulse && (options.pulse = !0), "undefined" == typeof options.offset && (options.offset = 0), "undefined" == typeof options.percentageOffset && (options.percentageOffset = 0), "undefined" == typeof options.toBlockTop && (options.toBlockTop = !1), options.pulse && pulseBlock($block), "undefined" == typeof $block || 1 == splash.server.constants.prevent_scroll || $("body").hasClass("is-viewing-modal") || 0 == $block.length || !$block.is(":visible") && !$block.hasClass("nav-jump")) return !1;
$block.length > 1 && ($block = $block.first());
var clientHeight = document.documentElement.clientHeight,
percentageOffset = Math.abs(options.percentageOffset) < 1 ? options.percentageOffset : options.percentageOffset / 100;
if (options.toBlockTop) var insideBlockOffset = 0;
else var insideBlockOffset = $block.height() / 2;
(options.force || !isBlockInViewport($block)) && $("html, body").animate({
scrollTop: $block.offset().top + insideBlockOffset - clientHeight / 2 + clientHeight * percentageOffset + options.offset
}, 300)
}
function pulseBlock($block) {
if ($block.addClass("pulse"), setTimeout(function() {
$block.removeClass("pulse")
}, 2e3), splash.finetune && splash.finetune.workspace.isPseudoActive() && $block.closest(".dope-repeatable-master").length) {
var $linkedRepeatableElements = splash.repeatableElement.finetune.getRepeatedElements($block);
$linkedRepeatableElements.length && ($linkedRepeatableElements.addClass("pulse"), setTimeout(function() {
$linkedRepeatableElements.removeClass("pulse")
}, 2e3))
}
}
function isBlockInViewport($block) {
var viewportHeight = jQuery(window).height(),
documentScrollTop = jQuery(document).scrollTop(),
minTop = documentScrollTop,
maxTop = documentScrollTop + viewportHeight,
elementOffset = $block.offset();
return elementOffset.top > minTop && elementOffset.top < maxTop
}
function setAddressAutocomplete($input, options) {
if ("undefined" == typeof google || google === !1) return console.log("Setting address field autocomplete: google is not defined"), !1;
options = options ? options : {}, autocomplete_options = {}, options.only_cities && (autocomplete_options.types = ["geocode"]);
var autocomplete = new google.maps.places.Autocomplete($input[0], autocomplete_options),
listener = google.maps.event.addListener(autocomplete, "place_changed", function() {
var place = autocomplete.getPlace(),
address_fields = {
name: place.name,
street_number: "",
address: "",
city: "",
state: "",
zip: ""
};
if (place.address_components)
for (var i in place.address_components) "postal_code" == place.address_components[i].types[0] ? address_fields.zip = place.address_components[i].long_name : "street_number" == place.address_components[i].types[0] ? address_fields.street_number = place.address_components[i].long_name : "route" == place.address_components[i].types[0] ? address_fields.address = place.address_components[i].long_name : "locality" == place.address_components[i].types[0] ? address_fields.city = place.address_components[i].long_name : "administrative_area_level_1" == place.address_components[i].types[0] ? address_fields.state = place.address_components[i].short_name : "country" == place.address_components[i].types[0] && (address_fields.country = place.address_components[i].long_name);
if (address_fields.address = address_fields.street_number + " " + address_fields.address, $input.addClass("autocompleted"), $input.closest(".venue-search-container").length) {
var $container = $input.closest(".venue-search-container");
if ($container.find(".venue-search-name").val(address_fields.name).end().find(".venue-search-city").val(address_fields.city).end().find(".venue-search-state").val(address_fields.state).end().find(".venue-search-country").val(address_fields.country).end().find(".venue-search-address").val(address_fields.address).end().find(".venue-search-zip-code").val(address_fields.zip), "undefined" != typeof place.geometry && $container.find(".venue-search-lat").val(place.geometry.location.lat()).end().find(".venue-search-lng").val(place.geometry.location.lng()), setCheck($container.find(".venue-search-tbd-input"), 0), "venue-search" == $input.prop("id")) {
var $maps_on_page = $("#splash-container").find("div.map.sf:visible");
1 == $maps_on_page.length && "undefined" != typeof getGoogleMapImg && getGoogleMapImg(function(data) {
var address_string = createNewMapString(address_fields),
sfid = $maps_on_page.prop("id").replace("sfid-", "");
$maps_on_page.find("div.embed").find("img:first").prop("src", data.image), $maps_on_page.find("div.body").html(address_string), finetuneEditedFields["data[SplashFeed][" + sfid + "][embed_code]"] = '<img src="' + data.image + '" />', finetuneEditedFields["data[SplashFeed][" + sfid + "][body]"] = address_string, finetuneFieldChangesMade()
}, $container)
}
}
if ($input.closest(".address-holder").find(".address-autocomplete-field").length) {
var $holder = $input.closest(".address-holder");
$holder.find(".address-autocomplete-field[growth-machine=venue_name]").val(address_fields.name).end().find(".address-autocomplete-field[growth-machine=city]").val(address_fields.city).end().find(".address-autocomplete-field[growth-machine=state]").val(address_fields.state).end().find(".address-autocomplete-field[growth-machine=country]").val(address_fields.country).end().find(".address-autocomplete-field[growth-machine=address]").val(address_fields.address).end().find(".address-autocomplete-field[growth-machine=zipcode]").val(address_fields.zip).end(), "undefined" != typeof place.geometry && $holder.find(".address-autocomplete-field[growth-machine=lat]").val(place.geometry.location.lat()).end().find(".address-autocomplete-field[growth-machine=lng]").val(place.geometry.location.lng())
}
$input.closest("#rsvp-form-inner").length && ($rsvp_form = $input.closest("#rsvp-form-inner"), $rsvp_form.find(".auto-country").length && "undefined" != typeof address_fields.country && $rsvp_form.find(".auto-country input").val(address_fields.country), $rsvp_form.find(".auto-state").length && "undefined" != typeof address_fields.state && $rsvp_form.find(".auto-state input").val(address_fields.state), $rsvp_form.find(".auto-city").length && "undefined" != typeof address_fields.city && $rsvp_form.find(".auto-city input").val(address_fields.city), $rsvp_form.find(".auto-address").length && "undefined" != typeof address_fields.address && $rsvp_form.find(".auto-address input").val(address_fields.address), $rsvp_form.find(".auto-zipcode").length && "undefined" != typeof address_fields.zip && $rsvp_form.find(".auto-zipcode input").val(address_fields.zip), $rsvp_form.find(".auto-venue").length && "undefined" != typeof address_fields.name && $rsvp_form.find(".auto-venue input").val(address_fields.name), $rsvp_form.find(".auto-address").length && "undefined" != typeof address_fields.address && $rsvp_form.find(".auto-address input").val(address_fields.address), "undefined" != typeof place.geometry && $rsvp_form.find(".auto-latitude").length && $rsvp_form.find(".auto-latitude input").val(place.geometry.location.lat()), "undefined" != typeof place.geometry && $rsvp_form.find(".auto-longitude").length && $rsvp_form.find(".auto-longitude input").val(place.geometry.location.lng())), "function" == typeof options.done && options.done(place, address_fields)
});
$input.data({
googleAutocompleteListener: listener,
googleAutocomplete: autocomplete
})
}
function removeAddressAutocomplete($input) {
var listener = $input.data("googleAutocompleteListener"),
autocomplete = $input.data("googleAutocomplete");
void 0 !== autocomplete && google.maps.event.clearInstanceListeners(autocomplete), void 0 !== listener && google.maps.event.removeListener(listener), $(".pac-container").remove()
}
function closeSimpleModal(options) {
null == options && (options = {});
var $addNewSection = $("#add-new-element");
if ($addNewSection.length > 0 && $addNewSection.is(":visible") && $addNewSection.removeClass("set").find(".active").removeClass("active"), "undefined" != typeof openDatePicker && openDatePicker !== !1) return !1;
"undefined" != typeof cropImageJcrop && cropImageJcrop.destroy && cropImageJcrop.destroy();
var currentModal = splash.modal.stack.getCurrent();
if (!currentModal || !currentModal.persistent || 1 != currentModal.persistent || options.persistent) {
"undefined" != typeof options.closeAll && options.closeAll && splash.modal.stack.clear();
for (var previousModal = splash.modal.stack.pop(); currentModal && previousModal && currentModal.id && previousModal.id && currentModal.id == previousModal.id;) previousModal = splash.modal.stack.pop();
var $wrap = $("#simple-modal-wrap");
if (previousModal && $wrap.find("#" + previousModal.id).length > 0) return fireSimpleModalOpts = {
fromStack: !0
}, "undefined" != typeof previousModal.params && (fireSimpleModalOpts.settings = previousModal.params), $wrap.find("#" + previousModal.id).fireSimpleModal(fireSimpleModalOpts), !1;
currentModal && "video-embed" == currentModal.id ? splash.videoElement.finetune.stopVideoPlay() : currentModal && "audio-embed" == currentModal.id && splash.audioElement.finetune.stopAudioPlay(), $wrap.find(".simple-modal-flow-control > .simple-modal, #simple-modal-ajax").hide(), $("#simple-modal-ajax").removeClass("email-send").empty();
var classesToRemove = "showSimple custom-editor";
$("#planning-tools").hasClass("expanded") || $("body").hasClass("is-viewing-modal") || (classesToRemove += " lockItUp"), $("body").removeClass(classesToRemove), $("#galleryWrap").hide()
}
}
function fireAjaxModal($link, params, callback) {
var params = params || {}, $link = $link || $(),
loading_content = "",
ajaxUrl = params.href || $link.attr("reveal-href"),
cacheId = params.cacheId || $link.attr("cache-modal"),
xtraAttr = params.xtraAttr || $link.attr("xtra-attr"),
xtraClasses = params.xtraClasses || $link.attr("xtra-classes");
if ("undefined" == typeof ajaxUrl) {
if ("undefined" == typeof params.href) return;
ajaxUrl = params.href
}
if ("undefined" == typeof params.event_id && "undefined" != typeof splash && "undefined" != typeof splash.server && "undefined" != typeof splash.server.constants && "undefined" != typeof splash.server.constants.event_id && (params.event_id = splash.server.constants.event_id), "undefined" == typeof xtraAttr && "undefined" != typeof params.xtraAttr && (xtraAttr = params.xtraAttr), "undefined" == typeof xtraClasses && (xtraClasses = "undefined" != typeof params.xtraClasses ? params.xtraClasses : ""), "undefined" != typeof cacheId) {
var $cachedModal = $("#" + cacheId);
if ($cachedModal.length > 0) return $cachedModal.fireSimpleModal(), void("function" == typeof callback && callback($ajaxModal))
}
$link.length && "undefined" != typeof $link.attr("section-title") && (loading_content += "<h3>" + $link.attr("section-title") + "</h3>"), loading_content += '<div class="nu-loader med loading"></div>';
var $ajaxModal = $("#simple-modal-ajax");
$ajaxModal.removeAttr("xtra-attr event-id").fireSimpleModal(params).html(loading_content), "dev-tools-btn" === $link.attr("id") ? $ajaxModal.addClass("code-sleeker").css("overflow-y", "hidden") : $ajaxModal.addClass("code-sleeker").css("overflow-y", ""), $.ajax({
url: ajaxUrl,
data: params,
type: "POST",
dataType: "html"
}).done(function(responseText) {
xtraAttr && $ajaxModal.attr("xtra-attr", xtraAttr), modal_visible = !0, modal_offset = $ajaxModal.offset().top, cacheId ? ($("#simple-modal-wrap").find(".simple-modal-flow-control").append('<div id="' + cacheId + '" class="simple-modal hide">' + responseText + "</div>"), closeSimpleModal(), $("#" + cacheId).fireSimpleModal(), "function" == typeof callback && callback($ajaxModal)) : ($ajaxModal.html(responseText), $ajaxModal.children().hasClass("simple-modal") ? $ajaxModal.removeClass("simple-modal sleeker full-sleeker").children(".simple-modal").show().css("display", "inline-block").addClass(xtraClasses) : $ajaxModal.addClass("simple-modal sleeker full-sleeker " + xtraClasses)), "function" == typeof callback && callback($ajaxModal)
}).fail(function() {
closeSimpleModal()
})
}
function empty(mixed_var) {
var undef, key, i, len, emptyValues = [undef, null, !1, 0, "", "0"];
for (i = 0, len = emptyValues.length; len > i; i++)
if (mixed_var === emptyValues[i]) return !0;
if ("object" == typeof mixed_var) {
for (key in mixed_var) return !1;
return !0
}
return !1
}
function arrEmpty(variable, index1, index2, index3, index4, index5, index6) {
return empty(variable) ? !0 : index1 ? empty(variable[index1]) ? !0 : index2 ? empty(variable[index1][index2]) ? !0 : index3 ? empty(variable[index1][index2][index3]) ? !0 : index4 ? empty(variable[index1][index2][index3][index4]) ? !0 : index5 ? empty(variable[index1][index2][index3][index4][index5]) ? !0 : index6 ? empty(variable[index1][index2][index3][index4][index5][index6]) ? !0 : void 0 : !1 : !1 : !1 : !1 : !1 : !1
}
function addListener(element, type, expression, bubbling) {
return bubbling = bubbling || !1, window.addEventListener ? (element.addEventListener(type, expression, bubbling), !0) : window.attachEvent ? (element.attachEvent("on" + type, expression), !0) : !1
}
if (window.Modernizr = function(a, b, c) {
function C(a) {
j.cssText = a
}
function D(a, b) {
return C(n.join(a + ";") + (b || ""))
}
function E(a, b) {
return typeof a === b
}
function F(a, b) {
return !!~("" + a).indexOf(b)
}
function G(a, b) {
for (var d in a) {
var e = a[d];
if (!F(e, "-") && j[e] !== c) return "pfx" == b ? e : !0
}
return !1
}
function H(a, b, d) {
for (var e in a) {
var f = b[a[e]];
if (f !== c) return d === !1 ? a[e] : E(f, "function") ? f.bind(d || b) : f
}
return !1
}
function I(a, b, c) {
var d = a.charAt(0).toUpperCase() + a.slice(1),
e = (a + " " + p.join(d + " ") + d).split(" ");
return E(b, "string") || E(b, "undefined") ? G(e, b) : (e = (a + " " + q.join(d + " ") + d).split(" "), H(e, b, c))
}
function J() {
e.input = function(c) {
for (var d = 0, e = c.length; e > d; d++) u[c[d]] = c[d] in k;
return u.list && (u.list = !! b.createElement("datalist") && !! a.HTMLDataListElement), u
}("autocomplete autofocus list placeholder max min multiple pattern required step".split(" ")), e.inputtypes = function(a) {
for (var e, f, h, d = 0, i = a.length; i > d; d++) k.setAttribute("type", f = a[d]), e = "text" !== k.type, e && (k.value = l, k.style.cssText = "position:absolute;visibility:hidden;", /^range$/.test(f) && k.style.WebkitAppearance !== c ? (g.appendChild(k), h = b.defaultView, e = h.getComputedStyle && "textfield" !== h.getComputedStyle(k, null).WebkitAppearance && 0 !== k.offsetHeight, g.removeChild(k)) : /^(search|tel)$/.test(f) || (e = /^(url|email)$/.test(f) ? k.checkValidity && k.checkValidity() === !1 : k.value != l)), t[a[d]] = !! e;
return t
}("search tel url email datetime date month week time datetime-local number range color".split(" "))
}
var x, B, d = "2.8.3",
e = {}, f = !0,
g = b.documentElement,
h = "modernizr",
i = b.createElement(h),
j = i.style,
k = b.createElement("input"),
l = ":)",
m = {}.toString,
n = " -webkit- -moz- -o- -ms- ".split(" "),
o = "Webkit Moz O ms",
p = o.split(" "),
q = o.toLowerCase().split(" "),
r = {
svg: "http://www.w3.org/2000/svg"
}, s = {}, t = {}, u = {}, v = [],
w = v.slice,
y = function(a, c, d, e) {
var f, i, j, k, l = b.createElement("div"),
m = b.body,
n = m || b.createElement("body");
if (parseInt(d, 10))
for (; d--;) j = b.createElement("div"), j.id = e ? e[d] : h + (d + 1), l.appendChild(j);
return f = ["­", '<style id="s', h, '">', a, "</style>"].join(""), l.id = h, (m ? l : n).innerHTML += f, n.appendChild(l), m || (n.style.background = "", n.style.overflow = "hidden", k = g.style.overflow, g.style.overflow = "hidden", g.appendChild(n)), i = c(l, a), m ? l.parentNode.removeChild(l) : (n.parentNode.removeChild(n), g.style.overflow = k), !! i
}, z = function() {
function d(d, e) {
e = e || b.createElement(a[d] || "div"), d = "on" + d;
var f = d in e;
return f || (e.setAttribute || (e = b.createElement("div")), e.setAttribute && e.removeAttribute && (e.setAttribute(d, ""), f = E(e[d], "function"), E(e[d], "undefined") || (e[d] = c), e.removeAttribute(d))), e = null, f
}
var a = {
select: "input",
change: "input",
submit: "form",
reset: "form",
error: "img",
load: "img",
abort: "img"
};
return d
}(),
A = {}.hasOwnProperty;
B = E(A, "undefined") || E(A.call, "undefined") ? function(a, b) {
return b in a && E(a.constructor.prototype[b], "undefined")
} : function(a, b) {
return A.call(a, b)
}, Function.prototype.bind || (Function.prototype.bind = function(b) {
var c = this;
if ("function" != typeof c) throw new TypeError;
var d = w.call(arguments, 1),
e = function() {
if (this instanceof e) {
var a = function() {};
a.prototype = c.prototype;
var f = new a,
g = c.apply(f, d.concat(w.call(arguments)));
return Object(g) === g ? g : f
}
return c.apply(b, d.concat(w.call(arguments)))
};
return e
}), s.flexbox = function() {
return I("flexWrap")
}, s.flexboxlegacy = function() {
return I("boxDirection")
}, s.canvas = function() {
var a = b.createElement("canvas");
return !!a.getContext && !! a.getContext("2d")
}, s.canvastext = function() {
return !!e.canvas && !! E(b.createElement("canvas").getContext("2d").fillText, "function")
}, s.webgl = function() {
return !!a.WebGLRenderingContext
}, s.touch = function() {
var c;
return "ontouchstart" in a || a.DocumentTouch && b instanceof DocumentTouch ? c = !0 : y(["@media (", n.join("touch-enabled),("), h, ")", "{#modernizr{top:9px;position:absolute}}"].join(""), function(a) {
c = 9 === a.offsetTop
}), c
}, s.geolocation = function() {
return "geolocation" in navigator
}, s.postmessage = function() {
return !!a.postMessage
}, s.websqldatabase = function() {
return !!a.openDatabase
}, s.indexedDB = function() {
return !!I("indexedDB", a)
}, s.hashchange = function() {
return z("hashchange", a) && (b.documentMode === c || b.documentMode > 7)
}, s.history = function() {
return !!a.history && !! history.pushState
}, s.draganddrop = function() {
var a = b.createElement("div");
return "draggable" in a || "ondragstart" in a && "ondrop" in a
}, s.websockets = function() {
return "WebSocket" in a || "MozWebSocket" in a
}, s.rgba = function() {
return C("background-color:rgba(150,255,150,.5)"), F(j.backgroundColor, "rgba")
}, s.hsla = function() {
return C("background-color:hsla(120,40%,100%,.5)"), F(j.backgroundColor, "rgba") || F(j.backgroundColor, "hsla")
}, s.multiplebgs = function() {
return C("background:url(https://),url(https://),red url(https://)"), /(url\s*\(.*?){3}/.test(j.background)
}, s.backgroundsize = function() {
return I("backgroundSize")
}, s.borderimage = function() {
return I("borderImage")
}, s.borderradius = function() {
return I("borderRadius")
}, s.boxshadow = function() {
return I("boxShadow")
}, s.textshadow = function() {
return "" === b.createElement("div").style.textShadow
}, s.opacity = function() {
return D("opacity:.55"), /^0.55$/.test(j.opacity)
}, s.cssanimations = function() {
return I("animationName")
}, s.csscolumns = function() {
return I("columnCount")
}, s.cssgradients = function() {
var a = "background-image:",
b = "gradient(linear,left top,right bottom,from(#9f9),to(white));",
c = "linear-gradient(left top,#9f9, white);";
return C((a + "-webkit- ".split(" ").join(b + a) + n.join(c + a)).slice(0, -a.length)), F(j.backgroundImage, "gradient")
}, s.cssreflections = function() {
return I("boxReflect")
}, s.csstransforms = function() {
return !!I("transform")
}, s.csstransforms3d = function() {
var a = !! I("perspective");
return a && "webkitPerspective" in g.style && y("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}", function(b) {
a = 9 === b.offsetLeft && 3 === b.offsetHeight
}), a
}, s.csstransitions = function() {
return I("transition")
}, s.fontface = function() {
var a;
return y('@font-face {font-family:"font";src:url("https://")}', function(c, d) {
var e = b.getElementById("smodernizr"),
f = e.sheet || e.styleSheet,
g = f ? f.cssRules && f.cssRules[0] ? f.cssRules[0].cssText : f.cssText || "" : "";
a = /src/i.test(g) && 0 === g.indexOf(d.split(" ")[0])
}), a
}, s.generatedcontent = function() {
var a;
return y(["#", h, "{font:0/0 a}#", h, ':after{content:"', l, '";visibility:hidden;font:3px/1 a}'].join(""), function(b) {
a = b.offsetHeight >= 3
}), a
}, s.video = function() {
var a = b.createElement("video"),
c = !1;
try {
(c = !! a.canPlayType) && (c = new Boolean(c), c.ogg = a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/, ""), c.h264 = a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/, ""), c.webm = a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/, ""))
} catch (d) {}
return c
}, s.audio = function() {
var a = b.createElement("audio"),
c = !1;
try {
(c = !! a.canPlayType) && (c = new Boolean(c), c.ogg = a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/, ""), c.mp3 = a.canPlayType("audio/mpeg;").replace(/^no$/, ""), c.wav = a.canPlayType('audio/wav; codecs="1"').replace(/^no$/, ""), c.m4a = (a.canPlayType("audio/x-m4a;") || a.canPlayType("audio/aac;")).replace(/^no$/, ""))
} catch (d) {}
return c
}, s.localstorage = function() {
try {
return localStorage.setItem(h, h), localStorage.removeItem(h), !0
} catch (a) {
return !1
}
}, s.sessionstorage = function() {
try {
return sessionStorage.setItem(h, h), sessionStorage.removeItem(h), !0
} catch (a) {
return !1
}
}, s.webworkers = function() {
return !!a.Worker
}, s.applicationcache = function() {
return !!a.applicationCache
}, s.svg = function() {
return !!b.createElementNS && !! b.createElementNS(r.svg, "svg").createSVGRect
}, s.inlinesvg = function() {
var a = b.createElement("div");
return a.innerHTML = "<svg/>", (a.firstChild && a.firstChild.namespaceURI) == r.svg
}, s.smil = function() {
return !!b.createElementNS && /SVGAnimate/.test(m.call(b.createElementNS(r.svg, "animate")))
}, s.svgclippaths = function() {
return !!b.createElementNS && /SVGClipPath/.test(m.call(b.createElementNS(r.svg, "clipPath")))
};
for (var K in s) B(s, K) && (x = K.toLowerCase(), e[x] = s[K](), v.push((e[x] ? "" : "no-") + x));
return e.input || J(), e.addTest = function(a, b) {
if ("object" == typeof a)
for (var d in a) B(a, d) && e.addTest(d, a[d]);
else {
if (a = a.toLowerCase(), e[a] !== c) return e;
b = "function" == typeof b ? b() : b, "undefined" != typeof f && f && (g.className += " m-" + (b ? "" : "no-") + a), e[a] = b
}
return e
}, C(""), i = k = null,
function(a, b) {
function l(a, b) {
var c = a.createElement("p"),
d = a.getElementsByTagName("head")[0] || a.documentElement;
return c.innerHTML = "x<style>" + b + "</style>", d.insertBefore(c.lastChild, d.firstChild)
}
function m() {
var a = s.elements;
return "string" == typeof a ? a.split(" ") : a
}
function n(a) {
var b = j[a[h]];
return b || (b = {}, i++, a[h] = i, j[i] = b), b
}
function o(a, c, d) {
if (c || (c = b), k) return c.createElement(a);
d || (d = n(c));
var g;
return g = d.cache[a] ? d.cache[a].cloneNode() : f.test(a) ? (d.cache[a] = d.createElem(a)).cloneNode() : d.createElem(a), !g.canHaveChildren || e.test(a) || g.tagUrn ? g : d.frag.appendChild(g)
}
function p(a, c) {
if (a || (a = b), k) return a.createDocumentFragment();
c = c || n(a);
for (var d = c.frag.cloneNode(), e = 0, f = m(), g = f.length; g > e; e++) d.createElement(f[e]);
return d
}
function q(a, b) {
b.cache || (b.cache = {}, b.createElem = a.createElement, b.createFrag = a.createDocumentFragment, b.frag = b.createFrag()), a.createElement = function(c) {
return s.shivMethods ? o(c, a, b) : b.createElem(c)
}, a.createDocumentFragment = Function("h,f", "return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&(" + m().join().replace(/[\w\-]+/g, function(a) {
return b.createElem(a), b.frag.createElement(a), 'c("' + a + '")'
}) + ");return n}")(s, b.frag)
}
function r(a) {
a || (a = b);
var c = n(a);
return s.shivCSS && !g && !c.hasCSS && (c.hasCSS = !! l(a, "article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")), k || q(a, c), a
}
var g, k, c = "3.7.0",
d = a.html5 || {}, e = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,
f = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,
h = "_html5shiv",
i = 0,
j = {};
! function() {
try {
var a = b.createElement("a");
a.innerHTML = "<xyz></xyz>", g = "hidden" in a, k = 1 == a.childNodes.length || function() {
b.createElement("a");
var a = b.createDocumentFragment();
return "undefined" == typeof a.cloneNode || "undefined" == typeof a.createDocumentFragment || "undefined" == typeof a.createElement
}()
} catch (c) {
g = !0, k = !0
}
}();
var s = {
elements: d.elements || "abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",
version: c,
shivCSS: d.shivCSS !== !1,
supportsUnknownElements: k,
shivMethods: d.shivMethods !== !1,
type: "default",
shivDocument: r,
createElement: o,
createDocumentFragment: p
};
a.html5 = s, r(b)
}(this, b), e._version = d, e._prefixes = n, e._domPrefixes = q, e._cssomPrefixes = p, e.hasEvent = z, e.testProp = function(a) {
return G([a])
}, e.testAllProps = I, e.testStyles = y, g.className = g.className.replace(/(^|\s)no-js(\s|$)/, "$1$2") + (f ? " m-js m-" + v.join(" m-") : ""), e
}(this, this.document), function(a, b, c) {
function d(a) {
return "[object Function]" == o.call(a)
}
function e(a) {
return "string" == typeof a
}
function f() {}
function g(a) {
return !a || "loaded" == a || "complete" == a || "uninitialized" == a
}
function h() {
var a = p.shift();
q = 1, a ? a.t ? m(function() {
("c" == a.t ? B.injectCss : B.injectJs)(a.s, 0, a.a, a.x, a.e, 1)
}, 0) : (a(), h()) : q = 0
}
function i(a, c, d, e, f, i, j) {
function k(b) {
if (!o && g(l.readyState) && (u.r = o = 1, !q && h(), l.onload = l.onreadystatechange = null, b)) {
"img" != a && m(function() {
t.removeChild(l)
}, 50);
for (var d in y[c]) y[c].hasOwnProperty(d) && y[c][d].onload()
}
}
var j = j || B.errorTimeout,
l = b.createElement(a),
o = 0,
r = 0,
u = {
t: d,
s: c,
e: f,
a: i,
x: j
};
1 === y[c] && (r = 1, y[c] = []), "object" == a ? l.data = c : (l.src = c, l.type = a), l.width = l.height = "0", l.onerror = l.onload = l.onreadystatechange = function() {
k.call(this, r)
}, p.splice(e, 0, u), "img" != a && (r || 2 === y[c] ? (t.insertBefore(l, s ? null : n), m(k, j)) : y[c].push(l))
}
function j(a, b, c, d, f) {
return q = 0, b = b || "j", e(a) ? i("c" == b ? v : u, a, b, this.i++, c, d, f) : (p.splice(this.i++, 0, a), 1 == p.length && h()), this
}
function k() {
var a = B;
return a.loader = {
load: j,
i: 0
}, a
}
var A, B, l = b.documentElement,
m = a.setTimeout,
n = b.getElementsByTagName("script")[0],
o = {}.toString,
p = [],
q = 0,
r = "MozAppearance" in l.style,
s = r && !! b.createRange().compareNode,
t = s ? l : n.parentNode,
l = a.opera && "[object Opera]" == o.call(a.opera),
l = !! b.attachEvent && !l,
u = r ? "object" : l ? "script" : "img",
v = l ? "script" : u,
w = Array.isArray || function(a) {
return "[object Array]" == o.call(a)
}, x = [],
y = {}, z = {
timeout: function(a, b) {
return b.length && (a.timeout = b[0]), a
}
};
B = function(a) {
function b(a) {
var e, f, g, a = a.split("!"),
b = x.length,
c = a.pop(),
d = a.length,
c = {
url: c,
origUrl: c,
prefixes: a
};
for (f = 0; d > f; f++) g = a[f].split("="), (e = z[g.shift()]) && (c = e(c, g));
for (f = 0; b > f; f++) c = x[f](c);
return c
}
function g(a, e, f, g, h) {
var i = b(a),
j = i.autoCallback;
i.url.split(".").pop().split("?").shift(), i.bypass || (e && (e = d(e) ? e : e[a] || e[g] || e[a.split("/").pop().split("?")[0]]), i.instead ? i.instead(a, e, f, g, h) : (y[i.url] ? i.noexec = !0 : y[i.url] = 1, f.load(i.url, i.forceCSS || !i.forceJS && "css" == i.url.split(".").pop().split("?").shift() ? "c" : c, i.noexec, i.attrs, i.timeout), (d(e) || d(j)) && f.load(function() {
k(), e && e(i.origUrl, h, g), j && j(i.origUrl, h, g), y[i.url] = 2
})))
}
function h(a, b) {
function c(a, c) {
if (a) {
if (e(a)) c || (j = function() {
var a = [].slice.call(arguments);
k.apply(this, a), l()
}), g(a, j, b, 0, h);
else if (Object(a) === a)
for (n in m = function() {
var c, b = 0;
for (c in a) a.hasOwnProperty(c) && b++;
return b
}(), a) a.hasOwnProperty(n) && (!c && !--m && (d(j) ? j = function() {
var a = [].slice.call(arguments);
k.apply(this, a), l()
} : j[n] = function(a) {
return function() {
var b = [].slice.call(arguments);
a && a.apply(this, b), l()
}
}(k[n])), g(a[n], j, b, n, h))
} else !c && l()
}
var m, n, h = !! a.test,
i = a.load || a.both,
j = a.callback || f,
k = j,
l = a.complete || f;
c(h ? a.yep : a.nope, !! i), i && c(i)
}
var i, j, l = this.yepnope.loader;
if (e(a)) g(a, 0, l, 0);
else if (w(a))
for (i = 0; i < a.length; i++) j = a[i], e(j) ? g(j, 0, l, 0) : w(j) ? B(j) : Object(j) === j && h(j, l);
else Object(a) === a && h(a, l)
}, B.addPrefix = function(a, b) {
z[a] = b
}, B.addFilter = function(a) {
x.push(a)
}, B.errorTimeout = 1e4, null == b.readyState && b.addEventListener && (b.readyState = "loading", b.addEventListener("DOMContentLoaded", A = function() {
b.removeEventListener("DOMContentLoaded", A, 0), b.readyState = "complete"
}, 0)), a.yepnope = k(), a.yepnope.executeStack = h, a.yepnope.injectJs = function(a, c, d, e, i, j) {
var l, o, k = b.createElement("script"),
e = e || B.errorTimeout;
k.src = a;
for (o in d) k.setAttribute(o, d[o]);
c = j ? h : c || f, k.onreadystatechange = k.onload = function() {
!l && g(k.readyState) && (l = 1, c(), k.onload = k.onreadystatechange = null)
}, m(function() {
l || (l = 1, c(1))
}, e), i ? k.onload() : n.parentNode.insertBefore(k, n)
}, a.yepnope.injectCss = function(a, c, d, e, g, i) {
var j, e = b.createElement("link"),
c = i ? h : c || f;
e.href = a, e.rel = "stylesheet", e.type = "text/css";
for (j in d) e.setAttribute(j, d[j]);
g || (n.parentNode.insertBefore(e, n), m(c, 0))
}
}(this, document), Modernizr.load = function() {
yepnope.apply(window, [].slice.call(arguments, 0))
}, function() {
function createReduce(dir) {
function iterator(obj, iteratee, memo, keys, index, length) {
for (; index >= 0 && length > index; index += dir) {
var currentKey = keys ? keys[index] : index;
memo = iteratee(memo, obj[currentKey], currentKey, obj)
}
return memo
}
return function(obj, iteratee, memo, context) {
iteratee = optimizeCb(iteratee, context, 4);
var keys = !isArrayLike(obj) && _.keys(obj),
length = (keys || obj).length,
index = dir > 0 ? 0 : length - 1;
return arguments.length < 3 && (memo = obj[keys ? keys[index] : index], index += dir), iterator(obj, iteratee, memo, keys, index, length)
}
}
function createPredicateIndexFinder(dir) {
return function(array, predicate, context) {
predicate = cb(predicate, context);
for (var length = getLength(array), index = dir > 0 ? 0 : length - 1; index >= 0 && length > index; index += dir)
if (predicate(array[index], index, array)) return index;
return -1
}
}
function createIndexFinder(dir, predicateFind, sortedIndex) {
return function(array, item, idx) {
var i = 0,
length = getLength(array);
if ("number" == typeof idx) dir > 0 ? i = idx >= 0 ? idx : Math.max(idx + length, i) : length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
else if (sortedIndex && idx && length) return idx = sortedIndex(array, item), array[idx] === item ? idx : -1;
if (item !== item) return idx = predicateFind(slice.call(array, i, length), _.isNaN), idx >= 0 ? idx + i : -1;
for (idx = dir > 0 ? i : length - 1; idx >= 0 && length > idx; idx += dir)
if (array[idx] === item) return idx;
return -1
}
}
function collectNonEnumProps(obj, keys) {
var nonEnumIdx = nonEnumerableProps.length,
constructor = obj.constructor,
proto = _.isFunction(constructor) && constructor.prototype || ObjProto,
prop = "constructor";
for (_.has(obj, prop) && !_.contains(keys, prop) && keys.push(prop); nonEnumIdx--;) prop = nonEnumerableProps[nonEnumIdx], prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop) && keys.push(prop)
}
var root = this,
previousUnderscore = root._,
ArrayProto = Array.prototype,
ObjProto = Object.prototype,
FuncProto = Function.prototype,
push = ArrayProto.push,
slice = ArrayProto.slice,
toString = ObjProto.toString,
hasOwnProperty = ObjProto.hasOwnProperty,
nativeIsArray = Array.isArray,
nativeKeys = Object.keys,
nativeBind = FuncProto.bind,
nativeCreate = Object.create,
Ctor = function() {}, _ = function(obj) {
return obj instanceof _ ? obj : this instanceof _ ? void(this._wrapped = obj) : new _(obj)
};
"undefined" != typeof exports ? ("undefined" != typeof module && module.exports && (exports = module.exports = _), exports._ = _) : root._ = _, _.VERSION = "1.8.3";
var optimizeCb = function(func, context, argCount) {
if (void 0 === context) return func;
switch (null == argCount ? 3 : argCount) {
case 1:
return function(value) {
return func.call(context, value)
};
case 2:
return function(value, other) {
return func.call(context, value, other)
};
case 3:
return function(value, index, collection) {
return func.call(context, value, index, collection)
};
case 4:
return function(accumulator, value, index, collection) {
return func.call(context, accumulator, value, index, collection)
}
}
return function() {
return func.apply(context, arguments)
}
}, cb = function(value, context, argCount) {
return null == value ? _.identity : _.isFunction(value) ? optimizeCb(value, context, argCount) : _.isObject(value) ? _.matcher(value) : _.property(value)
};
_.iteratee = function(value, context) {
return cb(value, context, 1 / 0)
};
var createAssigner = function(keysFunc, undefinedOnly) {
return function(obj) {
var length = arguments.length;
if (2 > length || null == obj) return obj;
for (var index = 1; length > index; index++)
for (var source = arguments[index], keys = keysFunc(source), l = keys.length, i = 0; l > i; i++) {
var key = keys[i];
undefinedOnly && void 0 !== obj[key] || (obj[key] = source[key])
}
return obj
}
}, baseCreate = function(prototype) {
if (!_.isObject(prototype)) return {};
if (nativeCreate) return nativeCreate(prototype);
Ctor.prototype = prototype;
var result = new Ctor;
return Ctor.prototype = null, result
}, property = function(key) {
return function(obj) {
return null == obj ? void 0 : obj[key]
}
}, MAX_ARRAY_INDEX = Math.pow(2, 53) - 1,
getLength = property("length"),
isArrayLike = function(collection) {
var length = getLength(collection);
return "number" == typeof length && length >= 0 && MAX_ARRAY_INDEX >= length
};
_.each = _.forEach = function(obj, iteratee, context) {
iteratee = optimizeCb(iteratee, context);
var i, length;
if (isArrayLike(obj))
for (i = 0, length = obj.length; length > i; i++) iteratee(obj[i], i, obj);
else {
var keys = _.keys(obj);
for (i = 0, length = keys.length; length > i; i++) iteratee(obj[keys[i]], keys[i], obj)
}
return obj
}, _.map = _.collect = function(obj, iteratee, context) {
iteratee = cb(iteratee, context);
for (var keys = !isArrayLike(obj) && _.keys(obj), length = (keys || obj).length, results = Array(length), index = 0; length > index; index++) {
var currentKey = keys ? keys[index] : index;
results[index] = iteratee(obj[currentKey], currentKey, obj)
}
return results
}, _.reduce = _.foldl = _.inject = createReduce(1), _.reduceRight = _.foldr = createReduce(-1), _.find = _.detect = function(obj, predicate, context) {
var key;
return key = isArrayLike(obj) ? _.findIndex(obj, predicate, context) : _.findKey(obj, predicate, context), void 0 !== key && -1 !== key ? obj[key] : void 0
}, _.filter = _.select = function(obj, predicate, context) {
var results = [];
return predicate = cb(predicate, context), _.each(obj, function(value, index, list) {
predicate(value, index, list) && results.push(value)
}), results
}, _.reject = function(obj, predicate, context) {
return _.filter(obj, _.negate(cb(predicate)), context)
}, _.every = _.all = function(obj, predicate, context) {
predicate = cb(predicate, context);
for (var keys = !isArrayLike(obj) && _.keys(obj), length = (keys || obj).length, index = 0; length > index; index++) {
var currentKey = keys ? keys[index] : index;
if (!predicate(obj[currentKey], currentKey, obj)) return !1
}
return !0
}, _.some = _.any = function(obj, predicate, context) {
predicate = cb(predicate, context);
for (var keys = !isArrayLike(obj) && _.keys(obj), length = (keys || obj).length, index = 0; length > index; index++) {
var currentKey = keys ? keys[index] : index;
if (predicate(obj[currentKey], currentKey, obj)) return !0
}
return !1
}, _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
return isArrayLike(obj) || (obj = _.values(obj)), ("number" != typeof fromIndex || guard) && (fromIndex = 0), _.indexOf(obj, item, fromIndex) >= 0
}, _.invoke = function(obj, method) {
var args = slice.call(arguments, 2),
isFunc = _.isFunction(method);
return _.map(obj, function(value) {
var func = isFunc ? method : value[method];
return null == func ? func : func.apply(value, args)
})
}, _.pluck = function(obj, key) {
return _.map(obj, _.property(key))
}, _.where = function(obj, attrs) {
return _.filter(obj, _.matcher(attrs))
}, _.findWhere = function(obj, attrs) {
return _.find(obj, _.matcher(attrs))
}, _.max = function(obj, iteratee, context) {
var value, computed, result = -1 / 0,
lastComputed = -1 / 0;
if (null == iteratee && null != obj) {
obj = isArrayLike(obj) ? obj : _.values(obj);
for (var i = 0, length = obj.length; length > i; i++) value = obj[i], value > result && (result = value)
} else iteratee = cb(iteratee, context), _.each(obj, function(value, index, list) {
computed = iteratee(value, index, list), (computed > lastComputed || computed === -1 / 0 && result === -1 / 0) && (result = value, lastComputed = computed)
});
return result
}, _.min = function(obj, iteratee, context) {
var value, computed, result = 1 / 0,
lastComputed = 1 / 0;
if (null == iteratee && null != obj) {
obj = isArrayLike(obj) ? obj : _.values(obj);
for (var i = 0, length = obj.length; length > i; i++) value = obj[i], result > value && (result = value)
} else iteratee = cb(iteratee, context), _.each(obj, function(value, index, list) {
computed = iteratee(value, index, list), (lastComputed > computed || 1 / 0 === computed && 1 / 0 === result) && (result = value, lastComputed = computed)
});
return result
}, _.shuffle = function(obj) {
for (var rand, set = isArrayLike(obj) ? obj : _.values(obj), length = set.length, shuffled = Array(length), index = 0; length > index; index++) rand = _.random(0, index), rand !== index && (shuffled[index] = shuffled[rand]), shuffled[rand] = set[index];
return shuffled
}, _.sample = function(obj, n, guard) {
return null == n || guard ? (isArrayLike(obj) || (obj = _.values(obj)), obj[_.random(obj.length - 1)]) : _.shuffle(obj).slice(0, Math.max(0, n))
}, _.sortBy = function(obj, iteratee, context) {
return iteratee = cb(iteratee, context), _.pluck(_.map(obj, function(value, index, list) {
return {
value: value,
index: index,
criteria: iteratee(value, index, list)
}
}).sort(function(left, right) {
var a = left.criteria,
b = right.criteria;
if (a !== b) {
if (a > b || void 0 === a) return 1;
if (b > a || void 0 === b) return -1
}
return left.index - right.index
}), "value")
};
var group = function(behavior) {
return function(obj, iteratee, context) {
var result = {};
return iteratee = cb(iteratee, context), _.each(obj, function(value, index) {
var key = iteratee(value, index, obj);
behavior(result, value, key)
}), result
}
};
_.groupBy = group(function(result, value, key) {
_.has(result, key) ? result[key].push(value) : result[key] = [value]
}), _.indexBy = group(function(result, value, key) {
result[key] = value
}), _.countBy = group(function(result, value, key) {
_.has(result, key) ? result[key]++ : result[key] = 1
}), _.toArray = function(obj) {
return obj ? _.isArray(obj) ? slice.call(obj) : isArrayLike(obj) ? _.map(obj, _.identity) : _.values(obj) : []
}, _.size = function(obj) {
return null == obj ? 0 : isArrayLike(obj) ? obj.length : _.keys(obj).length
}, _.partition = function(obj, predicate, context) {
predicate = cb(predicate, context);
var pass = [],
fail = [];
return _.each(obj, function(value, key, obj) {
(predicate(value, key, obj) ? pass : fail).push(value)
}), [pass, fail]
}, _.first = _.head = _.take = function(array, n, guard) {
return null == array ? void 0 : null == n || guard ? array[0] : _.initial(array, array.length - n)
}, _.initial = function(array, n, guard) {
return slice.call(array, 0, Math.max(0, array.length - (null == n || guard ? 1 : n)))
}, _.last = function(array, n, guard) {
return null == array ? void 0 : null == n || guard ? array[array.length - 1] : _.rest(array, Math.max(0, array.length - n))
}, _.rest = _.tail = _.drop = function(array, n, guard) {
return slice.call(array, null == n || guard ? 1 : n)
}, _.compact = function(array) {
return _.filter(array, _.identity)
};
var flatten = function(input, shallow, strict, startIndex) {
for (var output = [], idx = 0, i = startIndex || 0, length = getLength(input); length > i; i++) {
var value = input[i];
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
shallow || (value = flatten(value, shallow, strict));
var j = 0,
len = value.length;
for (output.length += len; len > j;) output[idx++] = value[j++]
} else strict || (output[idx++] = value)
}
return output
};
_.flatten = function(array, shallow) {
return flatten(array, shallow, !1)
}, _.without = function(array) {
return _.difference(array, slice.call(arguments, 1))
}, _.uniq = _.unique = function(array, isSorted, iteratee, context) {
_.isBoolean(isSorted) || (context = iteratee, iteratee = isSorted, isSorted = !1), null != iteratee && (iteratee = cb(iteratee, context));
for (var result = [], seen = [], i = 0, length = getLength(array); length > i; i++) {
var value = array[i],
computed = iteratee ? iteratee(value, i, array) : value;
isSorted ? (i && seen === computed || result.push(value), seen = computed) : iteratee ? _.contains(seen, computed) || (seen.push(computed), result.push(value)) : _.contains(result, value) || result.push(value)
}
return result
}, _.union = function() {
return _.uniq(flatten(arguments, !0, !0))
}, _.intersection = function(array) {
for (var result = [], argsLength = arguments.length, i = 0, length = getLength(array); length > i; i++) {
var item = array[i];
if (!_.contains(result, item)) {
for (var j = 1; argsLength > j && _.contains(arguments[j], item); j++);
j === argsLength && result.push(item)
}
}
return result
}, _.difference = function(array) {
var rest = flatten(arguments, !0, !0, 1);
return _.filter(array, function(value) {
return !_.contains(rest, value)
})
}, _.zip = function() {
return _.unzip(arguments)
}, _.unzip = function(array) {
for (var length = array && _.max(array, getLength).length || 0, result = Array(length), index = 0; length > index; index++) result[index] = _.pluck(array, index);
return result
}, _.object = function(list, values) {
for (var result = {}, i = 0, length = getLength(list); length > i; i++) values ? result[list[i]] = values[i] : result[list[i][0]] = list[i][1];
return result
}, _.findIndex = createPredicateIndexFinder(1), _.findLastIndex = createPredicateIndexFinder(-1), _.sortedIndex = function(array, obj, iteratee, context) {
iteratee = cb(iteratee, context, 1);
for (var value = iteratee(obj), low = 0, high = getLength(array); high > low;) {
var mid = Math.floor((low + high) / 2);
iteratee(array[mid]) < value ? low = mid + 1 : high = mid
}
return low
}, _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex), _.lastIndexOf = createIndexFinder(-1, _.findLastIndex), _.range = function(start, stop, step) {
null == stop && (stop = start || 0, start = 0), step = step || 1;
for (var length = Math.max(Math.ceil((stop - start) / step), 0), range = Array(length), idx = 0; length > idx; idx++, start += step) range[idx] = start;
return range
};
var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) {
if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);
var self = baseCreate(sourceFunc.prototype),
result = sourceFunc.apply(self, args);
return _.isObject(result) ? result : self
};
_.bind = function(func, context) {
if (nativeBind && func.bind === nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
if (!_.isFunction(func)) throw new TypeError("Bind must be called on a function");
var args = slice.call(arguments, 2),
bound = function() {
return executeBound(func, bound, context, this, args.concat(slice.call(arguments)))
};
return bound
}, _.partial = function(func) {
var boundArgs = slice.call(arguments, 1),
bound = function() {
for (var position = 0, length = boundArgs.length, args = Array(length), i = 0; length > i; i++) args[i] = boundArgs[i] === _ ? arguments[position++] : boundArgs[i];
for (; position < arguments.length;) args.push(arguments[position++]);
return executeBound(func, bound, this, this, args)
};
return bound
}, _.bindAll = function(obj) {
var i, key, length = arguments.length;
if (1 >= length) throw new Error("bindAll must be passed function names");
for (i = 1; length > i; i++) key = arguments[i], obj[key] = _.bind(obj[key], obj);
return obj
}, _.memoize = function(func, hasher) {
var memoize = function(key) {
var cache = memoize.cache,
address = "" + (hasher ? hasher.apply(this, arguments) : key);
return _.has(cache, address) || (cache[address] = func.apply(this, arguments)), cache[address]
};
return memoize.cache = {}, memoize
}, _.delay = function(func, wait) {
var args = slice.call(arguments, 2);
return setTimeout(function() {
return func.apply(null, args)
}, wait)
}, _.defer = _.partial(_.delay, _, 1), _.throttle = function(func, wait, options) {
var context, args, result, timeout = null,
previous = 0;
options || (options = {});
var later = function() {
previous = options.leading === !1 ? 0 : _.now(), timeout = null, result = func.apply(context, args), timeout || (context = args = null)
};
return function() {
var now = _.now();
previous || options.leading !== !1 || (previous = now);
var remaining = wait - (now - previous);
return context = this, args = arguments, 0 >= remaining || remaining > wait ? (timeout && (clearTimeout(timeout), timeout = null), previous = now, result = func.apply(context, args), timeout || (context = args = null)) : timeout || options.trailing === !1 || (timeout = setTimeout(later, remaining)), result
}
}, _.debounce = function(func, wait, immediate) {
var timeout, args, context, timestamp, result, later = function() {
var last = _.now() - timestamp;
wait > last && last >= 0 ? timeout = setTimeout(later, wait - last) : (timeout = null, immediate || (result = func.apply(context, args), timeout || (context = args = null)))
};
return function() {
context = this, args = arguments, timestamp = _.now();
var callNow = immediate && !timeout;
return timeout || (timeout = setTimeout(later, wait)), callNow && (result = func.apply(context, args), context = args = null), result
}
}, _.wrap = function(func, wrapper) {
return _.partial(wrapper, func)
}, _.negate = function(predicate) {
return function() {
return !predicate.apply(this, arguments)
}
}, _.compose = function() {
var args = arguments,
start = args.length - 1;
return function() {
for (var i = start, result = args[start].apply(this, arguments); i--;) result = args[i].call(this, result);
return result
}
}, _.after = function(times, func) {
return function() {
return --times < 1 ? func.apply(this, arguments) : void 0
}
}, _.before = function(times, func) {
var memo;
return function() {
return --times > 0 && (memo = func.apply(this, arguments)), 1 >= times && (func = null), memo
}
}, _.once = _.partial(_.before, 2);
var hasEnumBug = !{
toString: null
}.propertyIsEnumerable("toString"),
nonEnumerableProps = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"];
_.keys = function(obj) {
if (!_.isObject(obj)) return [];
if (nativeKeys) return nativeKeys(obj);
var keys = [];
for (var key in obj) _.has(obj, key) && keys.push(key);
return hasEnumBug && collectNonEnumProps(obj, keys), keys
}, _.allKeys = function(obj) {
if (!_.isObject(obj)) return [];
var keys = [];
for (var key in obj) keys.push(key);
return hasEnumBug && collectNonEnumProps(obj, keys), keys
}, _.values = function(obj) {
for (var keys = _.keys(obj), length = keys.length, values = Array(length), i = 0; length > i; i++) values[i] = obj[keys[i]];
return values
}, _.mapObject = function(obj, iteratee, context) {
iteratee = cb(iteratee, context);
for (var currentKey, keys = _.keys(obj), length = keys.length, results = {}, index = 0; length > index; index++) currentKey = keys[index], results[currentKey] = iteratee(obj[currentKey], currentKey, obj);
return results
}, _.pairs = function(obj) {
for (var keys = _.keys(obj), length = keys.length, pairs = Array(length), i = 0; length > i; i++) pairs[i] = [keys[i], obj[keys[i]]];
return pairs
}, _.invert = function(obj) {
for (var result = {}, keys = _.keys(obj), i = 0, length = keys.length; length > i; i++) result[obj[keys[i]]] = keys[i];
return result
}, _.functions = _.methods = function(obj) {
var names = [];
for (var key in obj) _.isFunction(obj[key]) && names.push(key);
return names.sort()
}, _.extend = createAssigner(_.allKeys), _.extendOwn = _.assign = createAssigner(_.keys), _.findKey = function(obj, predicate, context) {
predicate = cb(predicate, context);
for (var key, keys = _.keys(obj), i = 0, length = keys.length; length > i; i++)
if (key = keys[i], predicate(obj[key], key, obj)) return key
}, _.pick = function(object, oiteratee, context) {
var iteratee, keys, result = {}, obj = object;
if (null == obj) return result;
_.isFunction(oiteratee) ? (keys = _.allKeys(obj), iteratee = optimizeCb(oiteratee, context)) : (keys = flatten(arguments, !1, !1, 1), iteratee = function(value, key, obj) {
return key in obj
}, obj = Object(obj));
for (var i = 0, length = keys.length; length > i; i++) {
var key = keys[i],
value = obj[key];
iteratee(value, key, obj) && (result[key] = value)
}
return result
}, _.omit = function(obj, iteratee, context) {
if (_.isFunction(iteratee)) iteratee = _.negate(iteratee);
else {
var keys = _.map(flatten(arguments, !1, !1, 1), String);
iteratee = function(value, key) {
return !_.contains(keys, key)
}
}
return _.pick(obj, iteratee, context)
}, _.defaults = createAssigner(_.allKeys, !0), _.create = function(prototype, props) {
var result = baseCreate(prototype);
return props && _.extendOwn(result, props), result
}, _.clone = function(obj) {
return _.isObject(obj) ? _.isArray(obj) ? obj.slice() : _.extend({}, obj) : obj
}, _.tap = function(obj, interceptor) {
return interceptor(obj), obj
}, _.isMatch = function(object, attrs) {
var keys = _.keys(attrs),
length = keys.length;
if (null == object) return !length;
for (var obj = Object(object), i = 0; length > i; i++) {
var key = keys[i];
if (attrs[key] !== obj[key] || !(key in obj)) return !1
}
return !0
};
var eq = function(a, b, aStack, bStack) {
if (a === b) return 0 !== a || 1 / a === 1 / b;
if (null == a || null == b) return a === b;
a instanceof _ && (a = a._wrapped), b instanceof _ && (b = b._wrapped);
var className = toString.call(a);
if (className !== toString.call(b)) return !1;
switch (className) {
case "[object RegExp]":
case "[object String]":
return "" + a == "" + b;
case "[object Number]":
return +a !== +a ? +b !== +b : 0 === +a ? 1 / +a === 1 / b : +a === +b;
case "[object Date]":
case "[object Boolean]":
return +a === +b
}
var areArrays = "[object Array]" === className;
if (!areArrays) {
if ("object" != typeof a || "object" != typeof b) return !1;
var aCtor = a.constructor,
bCtor = b.constructor;
if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && _.isFunction(bCtor) && bCtor instanceof bCtor) && "constructor" in a && "constructor" in b) return !1
}
aStack = aStack || [], bStack = bStack || [];
for (var length = aStack.length; length--;)
if (aStack[length] === a) return bStack[length] === b;
if (aStack.push(a), bStack.push(b), areArrays) {
if (length = a.length, length !== b.length) return !1;
for (; length--;)
if (!eq(a[length], b[length], aStack, bStack)) return !1
} else {
var key, keys = _.keys(a);
if (length = keys.length, _.keys(b).length !== length) return !1;
for (; length--;)
if (key = keys[length], !_.has(b, key) || !eq(a[key], b[key], aStack, bStack)) return !1
}
return aStack.pop(), bStack.pop(), !0
};
_.isEqual = function(a, b) {
return eq(a, b)
}, _.isEmpty = function(obj) {
return null == obj ? !0 : isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj)) ? 0 === obj.length : 0 === _.keys(obj).length
}, _.isElement = function(obj) {
return !(!obj || 1 !== obj.nodeType)
}, _.isArray = nativeIsArray || function(obj) {
return "[object Array]" === toString.call(obj)
}, _.isObject = function(obj) {
var type = typeof obj;
return "function" === type || "object" === type && !! obj
}, _.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error"], function(name) {
_["is" + name] = function(obj) {
return toString.call(obj) === "[object " + name + "]"
}
}), _.isArguments(arguments) || (_.isArguments = function(obj) {
return _.has(obj, "callee")
}), "function" != typeof / . / && "object" != typeof Int8Array && (_.isFunction = function(obj) {
return "function" == typeof obj || !1
}), _.isFinite = function(obj) {
return isFinite(obj) && !isNaN(parseFloat(obj))
}, _.isNaN = function(obj) {
return _.isNumber(obj) && obj !== +obj
}, _.isBoolean = function(obj) {
return obj === !0 || obj === !1 || "[object Boolean]" === toString.call(obj)
}, _.isNull = function(obj) {
return null === obj
}, _.isUndefined = function(obj) {
return void 0 === obj
}, _.has = function(obj, key) {
return null != obj && hasOwnProperty.call(obj, key)
}, _.noConflict = function() {
return root._ = previousUnderscore, this
}, _.identity = function(value) {
return value
}, _.constant = function(value) {
return function() {
return value
}
}, _.noop = function() {}, _.property = property, _.propertyOf = function(obj) {
return null == obj ? function() {} : function(key) {
return obj[key]
}
}, _.matcher = _.matches = function(attrs) {
return attrs = _.extendOwn({}, attrs),
function(obj) {
return _.isMatch(obj, attrs)
}
}, _.times = function(n, iteratee, context) {
var accum = Array(Math.max(0, n));
iteratee = optimizeCb(iteratee, context, 1);
for (var i = 0; n > i; i++) accum[i] = iteratee(i);
return accum
}, _.random = function(min, max) {
return null == max && (max = min, min = 0), min + Math.floor(Math.random() * (max - min + 1))
}, _.now = Date.now || function() {
return (new Date).getTime()
};
var escapeMap = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"`": "`"
}, unescapeMap = _.invert(escapeMap),
createEscaper = function(map) {
var escaper = function(match) {
return map[match]
}, source = "(?:" + _.keys(map).join("|") + ")",
testRegexp = RegExp(source),
replaceRegexp = RegExp(source, "g");
return function(string) {
return string = null == string ? "" : "" + string, testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string
}
};
_.escape = createEscaper(escapeMap), _.unescape = createEscaper(unescapeMap), _.result = function(object, property, fallback) {
var value = null == object ? void 0 : object[property];
return void 0 === value && (value = fallback), _.isFunction(value) ? value.call(object) : value
};
var idCounter = 0;
_.uniqueId = function(prefix) {
var id = ++idCounter + "";
return prefix ? prefix + id : id
}, _.templateSettings = {
evaluate: /<%([\s\S]+?)%>/g,
interpolate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
var noMatch = /(.)^/,
escapes = {
"'": "'",
"\\": "\\",
"\r": "r",
"\n": "n",
"\u2028": "u2028",
"\u2029": "u2029"
}, escaper = /\\|'|\r|\n|\u2028|\u2029/g,
escapeChar = function(match) {
return "\\" + escapes[match]
};
_.template = function(text, settings, oldSettings) {
!settings && oldSettings && (settings = oldSettings), settings = _.defaults({}, settings, _.templateSettings);
var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join("|") + "|$", "g"),
index = 0,
source = "__p+='";
text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
return source += text.slice(index, offset).replace(escaper, escapeChar), index = offset + match.length, escape ? source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'" : interpolate ? source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'" : evaluate && (source += "';\n" + evaluate + "\n__p+='"), match
}), source += "';\n", settings.variable || (source = "with(obj||{}){\n" + source + "}\n"), source = "var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n" + source + "return __p;\n";
try {
var render = new Function(settings.variable || "obj", "_", source)
} catch (e) {
throw e.source = source, e
}
var template = function(data) {
return render.call(this, data, _)
}, argument = settings.variable || "obj";
return template.source = "function(" + argument + "){\n" + source + "}", template
}, _.chain = function(obj) {
var instance = _(obj);
return instance._chain = !0, instance
};
var result = function(instance, obj) {
return instance._chain ? _(obj).chain() : obj
};
_.mixin = function(obj) {
_.each(_.functions(obj), function(name) {
var func = _[name] = obj[name];
_.prototype[name] = function() {
var args = [this._wrapped];
return push.apply(args, arguments), result(this, func.apply(_, args))
}
})
}, _.mixin(_), _.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function(name) {
var method = ArrayProto[name];
_.prototype[name] = function() {
var obj = this._wrapped;
return method.apply(obj, arguments), "shift" !== name && "splice" !== name || 0 !== obj.length || delete obj[0], result(this, obj)
}
}), _.each(["concat", "join", "slice"], function(name) {
var method = ArrayProto[name];
_.prototype[name] = function() {
return result(this, method.apply(this._wrapped, arguments))
}
}), _.prototype.value = function() {
return this._wrapped
}, _.prototype.valueOf = _.prototype.toJSON = _.prototype.value, _.prototype.toString = function() {
return "" + this._wrapped
}, "function" == typeof define && define.amd && define("underscore", [], function() {
return _
})
}.call(this), function(factory) {
"function" == typeof define && define.amd ? define(["jquery"], factory) : factory(jQuery)
}(function($) {
function focusable(element, isTabIndexNotNaN) {
var map, mapName, img, nodeName = element.nodeName.toLowerCase();
return "area" === nodeName ? (map = element.parentNode, mapName = map.name, element.href && mapName && "map" === map.nodeName.toLowerCase() ? (img = $("img[usemap='#" + mapName + "']")[0], !! img && visible(img)) : !1) : (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a" === nodeName ? element.href || isTabIndexNotNaN : isTabIndexNotNaN) && visible(element)
}
function visible(element) {
return $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function() {
return "hidden" === $.css(this, "visibility")
}).length
}
function datepicker_getZindex(elem) {
for (var position, value; elem.length && elem[0] !== document;) {
if (position = elem.css("position"), ("absolute" === position || "relative" === position || "fixed" === position) && (value = parseInt(elem.css("zIndex"), 10), !isNaN(value) && 0 !== value)) return value;
elem = elem.parent()
}
return 0
}
function Datepicker() {
this._curInst = null, this._keyEvent = !1, this._disabledInputs = [], this._datepickerShowing = !1, this._inDialog = !1, 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: !1,
showMonthAfterYear: !1,
yearSuffix: ""
}, this._defaults = {
showOn: "focus",
showAnim: "fadeIn",
showOptions: {},
defaultDate: null,
appendText: "",
buttonText: "...",
buttonImage: "",
buttonImageOnly: !1,
hideIfNoPrevNext: !1,
navigationAsDateFormat: !1,
gotoCurrent: !1,
changeMonth: !1,
changeYear: !1,
yearRange: "c-10:c+10",
showOtherMonths: !1,
selectOtherMonths: !1,
showWeek: !1,
calculateWeek: this.iso8601Week,
shortYearCutoff: "+10",
minDate: null,
maxDate: null,
duration: "fast",
beforeShowDay: null,
beforeShow: null,
onSelect: null,
onChangeMonthYear: null,
onClose: null,
numberOfMonths: 1,
showCurrentAtPos: 0,
stepMonths: 1,
stepBigMonths: 12,
altField: "",
altFormat: "",
constrainInput: !0,
showButtonPanel: !1,
autoSize: !1,
disabled: !1
}, $.extend(this._defaults, this.regional[""]), this.regional.en = $.extend(!0, {}, this.regional[""]), this.regional["en-US"] = $.extend(!0, {}, 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>"))
}
function datepicker_bindHover(dpDiv) {
var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
return dpDiv.delegate(selector, "mouseout", function() {
$(this).removeClass("ui-state-hover"), -1 !== this.className.indexOf("ui-datepicker-prev") && $(this).removeClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && $(this).removeClass("ui-datepicker-next-hover")
}).delegate(selector, "mouseover", datepicker_handleMouseover)
}
function datepicker_handleMouseover() {
$.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"), -1 !== this.className.indexOf("ui-datepicker-prev") && $(this).addClass("ui-datepicker-prev-hover"), -1 !== this.className.indexOf("ui-datepicker-next") && $(this).addClass("ui-datepicker-next-hover"))
}
function datepicker_extendRemove(target, props) {
$.extend(target, props);
for (var name in props) null == props[name] && (target[name] = props[name]);
return target
}
function spinner_modifier(fn) {
return function() {
var previous = this.element.val();
fn.apply(this, arguments), this._refresh(), previous !== this.element.val() && this._trigger("change")
}
}
$.ui = $.ui || {}, $.extend($.ui, {
version: "1.11.1",
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.extend({
scrollParent: function(includeHidden) {
var position = this.css("position"),
excludeStaticParent = "absolute" === position,
overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
scrollParent = this.parents().filter(function() {
var parent = $(this);
return excludeStaticParent && "static" === parent.css("position") ? !1 : overflowRegex.test(parent.css("overflow") + parent.css("overflow-y") + parent.css("overflow-x"))
}).eq(0);
return "fixed" !== position && scrollParent.length ? scrollParent : $(this[0].ownerDocument || document)
},
uniqueId: function() {
var uuid = 0;
return function() {
return this.each(function() {
this.id || (this.id = "ui-id-" + ++uuid)
})
}
}(),
removeUniqueId: function() {
return this.each(function() {
/^ui-id-\d+$/.test(this.id) && $(this).removeAttr("id")
})
}
}), $.extend($.expr[":"], {
data: $.expr.createPseudo ? $.expr.createPseudo(function(dataName) {
return function(elem) {
return !!$.data(elem, dataName)
}
}) : function(elem, i, match) {
return !!$.data(elem, match[3])
},
focusable: function(element) {
return focusable(element, !isNaN($.attr(element, "tabindex")))
},
tabbable: function(element) {
var tabIndex = $.attr(element, "tabindex"),
isTabIndexNaN = isNaN(tabIndex);
return (isTabIndexNaN || tabIndex >= 0) && focusable(element, !isTabIndexNaN)
}
}), $("<a>").outerWidth(1).jquery || $.each(["Width", "Height"], function(i, name) {
function reduce(elem, size, border, margin) {
return $.each(side, function() {
size -= parseFloat($.css(elem, "padding" + this)) || 0, border && (size -= parseFloat($.css(elem, "border" + this + "Width")) || 0), margin && (size -= parseFloat($.css(elem, "margin" + this)) || 0)
}), size
}
var side = "Width" === name ? ["Left", "Right"] : ["Top", "Bottom"],
type = name.toLowerCase(),
orig = {
innerWidth: $.fn.innerWidth,
innerHeight: $.fn.innerHeight,
outerWidth: $.fn.outerWidth,
outerHeight: $.fn.outerHeight
};
$.fn["inner" + name] = function(size) {
return void 0 === size ? orig["inner" + name].call(this) : this.each(function() {
$(this).css(type, reduce(this, size) + "px")
})
}, $.fn["outer" + name] = function(size, margin) {
return "number" != typeof size ? orig["outer" + name].call(this, size) : this.each(function() {
$(this).css(type, reduce(this, size, !0, margin) + "px")
})
}
}), $.fn.addBack || ($.fn.addBack = function(selector) {
return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector))
}), $("<a>").data("a-b", "a").removeData("a-b").data("a-b") && ($.fn.removeData = function(removeData) {
return function(key) {
return arguments.length ? removeData.call(this, $.camelCase(key)) : removeData.call(this)
}
}($.fn.removeData)), $.ui.ie = !! /msie [\w.]+/.exec(navigator.userAgent.toLowerCase()), $.fn.extend({
focus: function(orig) {
return function(delay, fn) {
return "number" == typeof delay ? this.each(function() {
var elem = this;
setTimeout(function() {
$(elem).focus(), fn && fn.call(elem)
}, delay)
}) : orig.apply(this, arguments)
}
}($.fn.focus),
disableSelection: function() {
var eventType = "onselectstart" in document.createElement("div") ? "selectstart" : "mousedown";
return function() {
return this.bind(eventType + ".ui-disableSelection", function(event) {
event.preventDefault()
})
}
}(),
enableSelection: function() {
return this.unbind(".ui-disableSelection")
},
zIndex: function(zIndex) {
if (void 0 !== zIndex) return this.css("zIndex", zIndex);
if (this.length)
for (var position, value, elem = $(this[0]); elem.length && elem[0] !== document;) {
if (position = elem.css("position"), ("absolute" === position || "relative" === position || "fixed" === position) && (value = parseInt(elem.css("zIndex"), 10), !isNaN(value) && 0 !== value)) return value;
elem = elem.parent()
}
return 0
}
}), $.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 && (allowDisconnected || instance.element[0].parentNode && 11 !== instance.element[0].parentNode.nodeType))
for (i = 0; i < set.length; i++) instance.options[set[i][0]] && set[i][1].apply(instance.element, args)
}
};
var widget_uuid = 0,
widget_slice = Array.prototype.slice;
$.cleanData = function(orig) {
return function(elems) {
var events, elem, i;
for (i = 0; null != (elem = elems[i]); i++) try {
events = $._data(elem, "events"), events && events.remove && $(elem).triggerHandler("remove")
} catch (e) {}
orig(elems)
}
}($.cleanData), $.widget = function(name, base, prototype) {
var fullName, existingConstructor, constructor, basePrototype, proxiedPrototype = {}, namespace = name.split(".")[0];
return name = name.split(".")[1], fullName = namespace + "-" + name, prototype || (prototype = base, base = $.Widget), $.expr[":"][fullName.toLowerCase()] = function(elem) {
return !!$.data(elem, fullName)
}, $[namespace] = $[namespace] || {}, existingConstructor = $[namespace][name], constructor = $[namespace][name] = function(options, element) {
return this._createWidget ? void(arguments.length && this._createWidget(options, element)) : new constructor(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) {
return $.isFunction(value) ? void(proxiedPrototype[prop] = function() {
var _super = function() {
return base.prototype[prop].apply(this, arguments)
}, _superApply = function(args) {
return base.prototype[prop].apply(this, args)
};
return function() {
var returnValue, __super = this._super,
__superApply = this._superApply;
return this._super = _super, this._superApply = _superApply, returnValue = value.apply(this, arguments), this._super = __super, this._superApply = __superApply, returnValue
}
}()) : void(proxiedPrototype[prop] = value)
}), constructor.prototype = $.widget.extend(basePrototype, {
widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name
}, proxiedPrototype, {
constructor: constructor,
namespace: namespace,
widgetName: name,
widgetFullName: fullName
}), existingConstructor ? ($.each(existingConstructor._childConstructors, function(i, child) {
var childPrototype = child.prototype;
$.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto)
}), delete existingConstructor._childConstructors) : base._childConstructors.push(constructor), $.widget.bridge(name, constructor), constructor
}, $.widget.extend = function(target) {
for (var key, value, input = widget_slice.call(arguments, 1), inputIndex = 0, inputLength = input.length; inputLength > inputIndex; inputIndex++)
for (key in input[inputIndex]) value = input[inputIndex][key], input[inputIndex].hasOwnProperty(key) && void 0 !== value && (target[key] = $.isPlainObject(value) ? $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) : $.widget.extend({}, value) : value);
return target
}, $.widget.bridge = function(name, object) {
var fullName = object.prototype.widgetFullName || name;
$.fn[name] = function(options) {
var isMethodCall = "string" == typeof options,
args = widget_slice.call(arguments, 1),
returnValue = this;
return options = !isMethodCall && args.length ? $.widget.extend.apply(null, [options].concat(args)) : options, this.each(isMethodCall ? function() {
var methodValue, instance = $.data(this, fullName);
return "instance" === options ? (returnValue = instance, !1) : instance ? $.isFunction(instance[options]) && "_" !== options.charAt(0) ? (methodValue = instance[options].apply(instance, args), methodValue !== instance && void 0 !== methodValue ? (returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue, !1) : void 0) : $.error("no such method '" + options + "' for " + name + " widget instance") : $.error("cannot call methods on " + name + " prior to initialization; attempted to call method '" + options + "'")
} : function() {
var instance = $.data(this, fullName);
instance ? (instance.option(options || {}), instance._init && instance._init()) : $.data(this, fullName, new object(options, this))
}), returnValue
}
}, $.Widget = function() {}, $.Widget._childConstructors = [], $.Widget.prototype = {
widgetName: "widget",
widgetEventPrefix: "",
defaultElement: "<div>",
options: {
disabled: !1,
create: null
},
_createWidget: function(options, element) {
element = $(element || this.defaultElement || this)[0], this.element = $(element), this.uuid = widget_uuid++, this.eventNamespace = "." + this.widgetName + this.uuid, this.options = $.widget.extend({}, this.options, this._getCreateOptions(), options), this.bindings = $(), this.hoverable = $(), this.focusable = $(), element !== this && ($.data(element, this.widgetFullName, this), this._on(!0, this.element, {
remove: function(event) {
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._create(), this._trigger("create", null, this._getCreateEventData()), this._init()
},
_getCreateOptions: $.noop,
_getCreateEventData: $.noop,
_create: $.noop,
_init: $.noop,
destroy: function() {
this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData($.camelCase(this.widgetFullName)), this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled ui-state-disabled"), this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus")
},
_destroy: $.noop,
widget: function() {
return this.element
},
option: function(key, value) {
var parts, curOption, i, options = key;
if (0 === arguments.length) return $.widget.extend({}, this.options);
if ("string" == typeof key)
if (options = {}, parts = key.split("."), key = parts.shift(), parts.length) {
for (curOption = options[key] = $.widget.extend({}, this.options[key]), i = 0; i < parts.length - 1; i++) curOption[parts[i]] = curOption[parts[i]] || {}, curOption = curOption[parts[i]];
if (key = parts.pop(), 1 === arguments.length) return void 0 === curOption[key] ? null : curOption[key];
curOption[key] = value
} else {
if (1 === arguments.length) return void 0 === this.options[key] ? null : this.options[key];
options[key] = value
}
return this._setOptions(options), this
},
_setOptions: function(options) {
var key;
for (key in options) this._setOption(key, options[key]);
return this
},
_setOption: function(key, value) {
return this.options[key] = value, "disabled" === key && (this.widget().toggleClass(this.widgetFullName + "-disabled", !! value), value && (this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus"))), this
},
enable: function() {
return this._setOptions({
disabled: !1
})
},
disable: function() {
return this._setOptions({
disabled: !0
})
},
_on: function(suppressDisabledCheck, element, handlers) {
var delegateElement, instance = this;
"boolean" != typeof suppressDisabledCheck && (handlers = element, element = suppressDisabledCheck, suppressDisabledCheck = !1), handlers ? (element = delegateElement = $(element), this.bindings = this.bindings.add(element)) : (handlers = element, element = this.element, delegateElement = this.widget()), $.each(handlers, function(event, handler) {
function handlerProxy() {
return suppressDisabledCheck || instance.options.disabled !== !0 && !$(this).hasClass("ui-state-disabled") ? ("string" == typeof handler ? instance[handler] : handler).apply(instance, arguments) : void 0
}
"string" != typeof handler && (handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++);
var match = event.match(/^([\w:-]*)\s*(.*)$/),
eventName = match[1] + instance.eventNamespace,
selector = match[2];
selector ? delegateElement.delegate(selector, eventName, handlerProxy) : element.bind(eventName, handlerProxy)
})
},
_off: function(element, eventName) {
eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, element.unbind(eventName).undelegate(eventName)
},
_delay: function(handler, delay) {
function handlerProxy() {
return ("string" == typeof handler ? 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) {
$(event.currentTarget).addClass("ui-state-hover")
},
mouseleave: function(event) {
$(event.currentTarget).removeClass("ui-state-hover")
}
})
},
_focusable: function(element) {
this.focusable = this.focusable.add(element), this._on(element, {
focusin: function(event) {
$(event.currentTarget).addClass("ui-state-focus")
},
focusout: function(event) {
$(event.currentTarget).removeClass("ui-state-focus")
}
})
},
_trigger: function(type, event, data) {
var prop, orig, callback = this.options[type];
if (data = data || {}, event = $.Event(event), event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(), event.target = this.element[0], orig = event.originalEvent)
for (prop in orig) prop in event || (event[prop] = orig[prop]);
return this.element.trigger(event, data), !($.isFunction(callback) && callback.apply(this.element[0], [event].concat(data)) === !1 || event.isDefaultPrevented())
}
}, $.each({
show: "fadeIn",
hide: "fadeOut"
}, function(method, defaultEffect) {
$.Widget.prototype["_" + method] = function(element, options, callback) {
"string" == typeof options && (options = {
effect: options
});
var hasOptions, effectName = options ? options === !0 || "number" == typeof options ? defaultEffect : options.effect || defaultEffect : method;
options = options || {}, "number" == typeof options && (options = {
duration: options
}), hasOptions = !$.isEmptyObject(options), options.complete = callback, options.delay && element.delay(options.delay), hasOptions && $.effects && $.effects.effect[effectName] ? element[method](options) : effectName !== method && element[effectName] ? element[effectName](options.duration, options.easing, callback) : element.queue(function(next) {
$(this)[method](), callback && callback.call(element[0]), next()
})
}
});
var mouseHandled = ($.widget, !1);
$(document).mouseup(function() {
mouseHandled = !1
});
$.widget("ui.mouse", {
version: "1.11.1",
options: {
cancel: "input,textarea,button,select,option",
distance: 1,
delay: 0
},
_mouseInit: function() {
var that = this;
this.element.bind("mousedown." + this.widgetName, function(event) {
return that._mouseDown(event)
}).bind("click." + this.widgetName, function(event) {
return !0 === $.data(event.target, that.widgetName + ".preventClickEvent") ? ($.removeData(event.target, that.widgetName + ".preventClickEvent"), event.stopImmediatePropagation(), !1) : void 0
}), this.started = !1
},
_mouseDestroy: function() {
this.element.unbind("." + this.widgetName), this._mouseMoveDelegate && this.document.unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate)
},
_mouseDown: function(event) {
if (!mouseHandled) {
this._mouseStarted && this._mouseUp(event), this._mouseDownEvent = event;
var that = this,
btnIsLeft = 1 === event.which,
elIsCancel = "string" == typeof this.options.cancel && event.target.nodeName ? $(event.target).closest(this.options.cancel).length : !1;
return btnIsLeft && !elIsCancel && this._mouseCapture(event) ? (this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function() {
that.mouseDelayMet = !0
}, this.options.delay)), this._mouseDistanceMet(event) && this._mouseDelayMet(event) && (this._mouseStarted = this._mouseStart(event) !== !1, !this._mouseStarted) ? (event.preventDefault(), !0) : (!0 === $.data(event.target, this.widgetName + ".preventClickEvent") && $.removeData(event.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function(event) {
return that._mouseMove(event)
}, this._mouseUpDelegate = function(event) {
return that._mouseUp(event)
}, this.document.bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate), event.preventDefault(), mouseHandled = !0, !0)) : !0
}
},
_mouseMove: function(event) {
return $.ui.ie && (!document.documentMode || document.documentMode < 9) && !event.button ? this._mouseUp(event) : event.which ? this._mouseStarted ? (this._mouseDrag(event), event.preventDefault()) : (this._mouseDistanceMet(event) && this._mouseDelayMet(event) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, event) !== !1, this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event)), !this._mouseStarted) : this._mouseUp(event)
},
_mouseUp: function(event) {
return this.document.unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, event.target === this._mouseDownEvent.target && $.data(event.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(event)), mouseHandled = !1, !1
},
_mouseDistanceMet: function(event) {
return Math.max(Math.abs(this._mouseDownEvent.pageX - event.pageX), Math.abs(this._mouseDownEvent.pageY - event.pageY)) >= this.options.distance
},
_mouseDelayMet: function() {
return this.mouseDelayMet
},
_mouseStart: function() {},
_mouseDrag: function() {},
_mouseStop: function() {},
_mouseCapture: function() {
return !0
}
});
! function() {
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 getDimensions(elem) {
var raw = elem[0];
return 9 === raw.nodeType ? {
width: elem.width(),
height: elem.height(),
offset: {
top: 0,
left: 0
}
} : $.isWindow(raw) ? {
width: elem.width(),
height: elem.height(),
offset: {
top: elem.scrollTop(),
left: elem.scrollLeft()
}
} : raw.preventDefault ? {
width: 0,
height: 0,
offset: {
top: raw.pageY,
left: raw.pageX
}
} : {
width: elem.outerWidth(),
height: elem.outerHeight(),
offset: elem.offset()
}
}
$.ui = $.ui || {};
var cachedScrollbarWidth, supportsOffsetFractions, max = Math.max,
abs = Math.abs,
round = Math.round,
rhorizontal = /left|center|right/,
rvertical = /top|center|bottom/,
roffset = /[\+\-]\d+(\.[\d]+)?%?/,
rposition = /^\w+/,
rpercent = /%$/,
_position = $.fn.position;
$.position = {
scrollbarWidth: function() {
if (void 0 !== cachedScrollbarWidth) return cachedScrollbarWidth;
var w1, w2, div = $("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),
innerDiv = div.children()[0];
return $("body").append(div), w1 = innerDiv.offsetWidth, div.css("overflow", "scroll"), w2 = innerDiv.offsetWidth, w1 === w2 && (w2 = div[0].clientWidth), div.remove(), 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 = "scroll" === overflowX || "auto" === overflowX && within.width < within.element[0].scrollWidth,
hasOverflowY = "scroll" === overflowY || "auto" === overflowY && within.height < within.element[0].scrollHeight;
return {
width: hasOverflowY ? $.position.scrollbarWidth() : 0,
height: hasOverflowX ? $.position.scrollbarWidth() : 0
}
},
getWithinInfo: function(element) {
var withinElement = $(element || window),
isWindow = $.isWindow(withinElement[0]),
isDocument = !! withinElement[0] && 9 === withinElement[0].nodeType;
return {
element: withinElement,
isWindow: isWindow,
isDocument: isDocument,
offset: withinElement.offset() || {
left: 0,
top: 0
},
scrollLeft: withinElement.scrollLeft(),
scrollTop: withinElement.scrollTop(),
width: isWindow || isDocument ? withinElement.width() : withinElement.outerWidth(),
height: isWindow || isDocument ? withinElement.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 = $(options.of),
within = $.position.getWithinInfo(options.within),
scrollInfo = $.position.getScrollInfo(within),
collision = (options.collision || "flip").split(" "),
offsets = {};
return dimensions = getDimensions(target), target[0].preventDefault && (options.at = "left top"), targetWidth = dimensions.width, targetHeight = dimensions.height, targetOffset = dimensions.offset, basePosition = $.extend({}, targetOffset), $.each(["my", "at"], function() {
var horizontalOffset, verticalOffset, pos = (options[this] || "").split(" ");
1 === pos.length && (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]]
}), 1 === collision.length && (collision[1] = collision[0]), "right" === options.at[0] ? basePosition.left += targetWidth : "center" === options.at[0] && (basePosition.left += targetWidth / 2), "bottom" === options.at[1] ? basePosition.top += targetHeight : "center" === options.at[1] && (basePosition.top += targetHeight / 2), atOffset = getOffsets(offsets.at, targetWidth, targetHeight), basePosition.left += atOffset[0], basePosition.top += atOffset[1], 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());
"right" === options.my[0] ? position.left -= elemWidth : "center" === options.my[0] && (position.left -= elemWidth / 2), "bottom" === options.my[1] ? position.top -= elemHeight : "center" === options.my[1] && (position.top -= elemHeight / 2), position.left += myOffset[0], position.top += myOffset[1], supportsOffsetFractions || (position.left = round(position.left), position.top = round(position.top)), collisionPosition = {
marginLeft: marginLeft,
marginTop: marginTop
}, $.each(["left", "top"], function(i, dir) {
$.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
})
}), 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: 0 > right ? "left" : left > 0 ? "right" : "center",
vertical: 0 > bottom ? "top" : top > 0 ? "bottom" : "middle"
};
elemWidth > targetWidth && abs(left + right) < targetWidth && (feedback.horizontal = "center"), elemHeight > targetHeight && abs(top + bottom) < targetHeight && (feedback.vertical = "middle"), feedback.important = max(abs(left), abs(right)) > max(abs(top), abs(bottom)) ? "horizontal" : "vertical", options.using.call(this, props, feedback)
}), elem.offset($.extend(position, {
using: using
}))
})
}, $.ui.position = {
fit: {
left: function(position, data) {
var newOverRight, 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;
data.collisionWidth > outerWidth ? overLeft > 0 && 0 >= overRight ? (newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset, position.left += overLeft - newOverRight) : position.left = overRight > 0 && 0 >= overLeft ? withinOffset : overLeft > overRight ? withinOffset + outerWidth - data.collisionWidth : withinOffset : overLeft > 0 ? position.left += overLeft : overRight > 0 ? position.left -= overRight : position.left = max(position.left - collisionPosLeft, position.left)
},
top: function(position, data) {
var newOverBottom, 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;
data.collisionHeight > outerHeight ? overTop > 0 && 0 >= overBottom ? (newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset, position.top += overTop - newOverBottom) : position.top = overBottom > 0 && 0 >= overTop ? withinOffset : overTop > overBottom ? withinOffset + outerHeight - data.collisionHeight : withinOffset : overTop > 0 ? position.top += overTop : overBottom > 0 ? position.top -= overBottom : position.top = max(position.top - collisionPosTop, position.top)
}
},
flip: {
left: function(position, data) {
var newOverRight, newOverLeft, 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 = "left" === data.my[0] ? -data.elemWidth : "right" === data.my[0] ? data.elemWidth : 0,
atOffset = "left" === data.at[0] ? data.targetWidth : "right" === data.at[0] ? -data.targetWidth : 0,
offset = -2 * data.offset[0];
0 > overLeft ? (newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset, (0 > newOverRight || newOverRight < abs(overLeft)) && (position.left += myOffset + atOffset + offset)) : overRight > 0 && (newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft, (newOverLeft > 0 || abs(newOverLeft) < overRight) && (position.left += myOffset + atOffset + offset))
},
top: function(position, data) {
var newOverTop, newOverBottom, 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 = "top" === data.my[1],
myOffset = top ? -data.elemHeight : "bottom" === data.my[1] ? data.elemHeight : 0,
atOffset = "top" === data.at[1] ? data.targetHeight : "bottom" === data.at[1] ? -data.targetHeight : 0,
offset = -2 * data.offset[1];
0 > overTop ? (newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset, position.top + myOffset + atOffset + offset > overTop && (0 > newOverBottom || newOverBottom < abs(overTop)) && (position.top += myOffset + atOffset + offset)) : overBottom > 0 && (newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop, position.top + myOffset + atOffset + offset > overBottom && (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)
}
}
},
function() {
var testElement, testElementParent, testElementStyle, offsetLeft, i, body = document.getElementsByTagName("body")[0],
div = document.createElement("div");
testElement = document.createElement(body ? "div" : "body"), testElementStyle = {
visibility: "hidden",
width: 0,
height: 0,
border: 0,
margin: 0,
background: "none"
}, body && $.extend(testElementStyle, {
position: "absolute",
left: "-1000px",
top: "-1000px"
});
for (i in testElementStyle) testElement.style[i] = testElementStyle[i];
testElement.appendChild(div), testElementParent = body || document.documentElement, testElementParent.insertBefore(testElement, testElementParent.firstChild), div.style.cssText = "position: absolute; left: 10.7432222px;", offsetLeft = $(div).offset().left, supportsOffsetFractions = offsetLeft > 10 && 11 > offsetLeft, testElement.innerHTML = "", testElementParent.removeChild(testElement)
}()
}();
$.ui.position, $.widget("ui.accordion", {
version: "1.11.1",
options: {
active: 0,
animate: {},
collapsible: !1,
event: "click",
header: "> li > :first-child,> :not(li):even",
heightStyle: "auto",
icons: {
activeHeader: "ui-icon-triangle-1-s",
header: "ui-icon-triangle-1-e"
},
activate: null,
beforeActivate: null
},
hideProps: {
borderTopWidth: "hide",
borderBottomWidth: "hide",
paddingTop: "hide",
paddingBottom: "hide",
height: "hide"
},
showProps: {
borderTopWidth: "show",
borderBottomWidth: "show",
paddingTop: "show",
paddingBottom: "show",
height: "show"
},
_create: function() {
var options = this.options;
this.prevShow = this.prevHide = $(), this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role", "tablist"), options.collapsible || options.active !== !1 && null != options.active || (options.active = 0), this._processPanels(), options.active < 0 && (options.active += this.headers.length), this._refresh()
},
_getCreateEventData: function() {
return {
header: this.active,
panel: this.active.length ? this.active.next() : $()
}
},
_createIcons: function() {
var icons = this.options.icons;
icons && ($("<span>").addClass("ui-accordion-header-icon ui-icon " + icons.header).prependTo(this.headers), this.active.children(".ui-accordion-header-icon").removeClass(icons.header).addClass(icons.activeHeader), this.headers.addClass("ui-accordion-icons"))
},
_destroyIcons: function() {
this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()
},
_destroy: function() {
var contents;
this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"), this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").removeUniqueId(), this._destroyIcons(), contents = this.headers.next().removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").css("display", "").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeUniqueId(), "content" !== this.options.heightStyle && contents.css("height", "")
},
_setOption: function(key, value) {
return "active" === key ? void this._activate(value) : ("event" === key && (this.options.event && this._off(this.headers, this.options.event), this._setupEvents(value)), this._super(key, value), "collapsible" !== key || value || this.options.active !== !1 || this._activate(0), "icons" === key && (this._destroyIcons(), value && this._createIcons()), void("disabled" === key && (this.element.toggleClass("ui-state-disabled", !! value).attr("aria-disabled", value), this.headers.add(this.headers.next()).toggleClass("ui-state-disabled", !! value))))
},
_keydown: function(event) {
if (!event.altKey && !event.ctrlKey) {
var keyCode = $.ui.keyCode,
length = this.headers.length,
currentIndex = this.headers.index(event.target),
toFocus = !1;
switch (event.keyCode) {
case keyCode.RIGHT:
case keyCode.DOWN:
toFocus = this.headers[(currentIndex + 1) % length];
break;
case keyCode.LEFT:
case keyCode.UP:
toFocus = this.headers[(currentIndex - 1 + length) % length];
break;
case keyCode.SPACE:
case keyCode.ENTER:
this._eventHandler(event);
break;
case keyCode.HOME:
toFocus = this.headers[0];
break;
case keyCode.END:
toFocus = this.headers[length - 1]
}
toFocus && ($(event.target).attr("tabIndex", -1), $(toFocus).attr("tabIndex", 0), toFocus.focus(), event.preventDefault())
}
},
_panelKeyDown: function(event) {
event.keyCode === $.ui.keyCode.UP && event.ctrlKey && $(event.currentTarget).prev().focus()
},
refresh: function() {
var options = this.options;
this._processPanels(), options.active === !1 && options.collapsible === !0 || !this.headers.length ? (options.active = !1, this.active = $()) : options.active === !1 ? this._activate(0) : this.active.length && !$.contains(this.element[0], this.active[0]) ? this.headers.length === this.headers.find(".ui-state-disabled").length ? (options.active = !1, this.active = $()) : this._activate(Math.max(0, options.active - 1)) : options.active = this.headers.index(this.active), this._destroyIcons(), this._refresh()
},
_processPanels: function() {
this.headers = this.element.find(this.options.header).addClass("ui-accordion-header ui-state-default ui-corner-all"), this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()
},
_refresh: function() {
var maxHeight, options = this.options,
heightStyle = options.heightStyle,
parent = this.element.parent();
this.active = this._findActive(options.active).addClass("ui-accordion-header-active ui-state-active ui-corner-top").removeClass("ui-corner-all"), this.active.next().addClass("ui-accordion-content-active").show(), this.headers.attr("role", "tab").each(function() {
var header = $(this),
headerId = header.uniqueId().attr("id"),
panel = header.next(),
panelId = panel.uniqueId().attr("id");
header.attr("aria-controls", panelId), panel.attr("aria-labelledby", headerId)
}).next().attr("role", "tabpanel"), this.headers.not(this.active).attr({
"aria-selected": "false",
"aria-expanded": "false",
tabIndex: -1
}).next().attr({
"aria-hidden": "true"
}).hide(), this.active.length ? this.active.attr({
"aria-selected": "true",
"aria-expanded": "true",
tabIndex: 0
}).next().attr({
"aria-hidden": "false"
}) : this.headers.eq(0).attr("tabIndex", 0), this._createIcons(), this._setupEvents(options.event), "fill" === heightStyle ? (maxHeight = parent.height(), this.element.siblings(":visible").each(function() {
var elem = $(this),
position = elem.css("position");
"absolute" !== position && "fixed" !== position && (maxHeight -= elem.outerHeight(!0))
}), this.headers.each(function() {
maxHeight -= $(this).outerHeight(!0)
}), this.headers.next().each(function() {
$(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()))
}).css("overflow", "auto")) : "auto" === heightStyle && (maxHeight = 0, this.headers.next().each(function() {
maxHeight = Math.max(maxHeight, $(this).css("height", "").height())
}).height(maxHeight))
},
_activate: function(index) {
var active = this._findActive(index)[0];
active !== this.active[0] && (active = active || this.active[0], this._eventHandler({
target: active,
currentTarget: active,
preventDefault: $.noop
}))
},
_findActive: function(selector) {
return "number" == typeof selector ? this.headers.eq(selector) : $()
},
_setupEvents: function(event) {
var events = {
keydown: "_keydown"
};
event && $.each(event.split(" "), function(index, eventName) {
events[eventName] = "_eventHandler"
}), this._off(this.headers.add(this.headers.next())), this._on(this.headers, events), this._on(this.headers.next(), {
keydown: "_panelKeyDown"
}), this._hoverable(this.headers), this._focusable(this.headers)
},
_eventHandler: function(event) {
var options = this.options,
active = this.active,
clicked = $(event.currentTarget),
clickedIsActive = clicked[0] === active[0],
collapsing = clickedIsActive && options.collapsible,
toShow = collapsing ? $() : clicked.next(),
toHide = active.next(),
eventData = {
oldHeader: active,
oldPanel: toHide,
newHeader: collapsing ? $() : clicked,
newPanel: toShow
};
event.preventDefault(), clickedIsActive && !options.collapsible || this._trigger("beforeActivate", event, eventData) === !1 || (options.active = collapsing ? !1 : this.headers.index(clicked), this.active = clickedIsActive ? $() : clicked, this._toggle(eventData), active.removeClass("ui-accordion-header-active ui-state-active"), options.icons && active.children(".ui-accordion-header-icon").removeClass(options.icons.activeHeader).addClass(options.icons.header), clickedIsActive || (clicked.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"), options.icons && clicked.children(".ui-accordion-header-icon").removeClass(options.icons.header).addClass(options.icons.activeHeader), clicked.next().addClass("ui-accordion-content-active")))
},
_toggle: function(data) {
var toShow = data.newPanel,
toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
this.prevShow.add(this.prevHide).stop(!0, !0), this.prevShow = toShow, this.prevHide = toHide, this.options.animate ? this._animate(toShow, toHide, data) : (toHide.hide(), toShow.show(), this._toggleComplete(data)), toHide.attr({
"aria-hidden": "true"
}), toHide.prev().attr("aria-selected", "false"), toShow.length && toHide.length ? toHide.prev().attr({
tabIndex: -1,
"aria-expanded": "false"
}) : toShow.length && this.headers.filter(function() {
return 0 === $(this).attr("tabIndex")
}).attr("tabIndex", -1), toShow.attr("aria-hidden", "false").prev().attr({
"aria-selected": "true",
tabIndex: 0,
"aria-expanded": "true"
})
},
_animate: function(toShow, toHide, data) {
var total, easing, duration, that = this,
adjust = 0,
down = toShow.length && (!toHide.length || toShow.index() < toHide.index()),
animate = this.options.animate || {}, options = down && animate.down || animate,
complete = function() {
that._toggleComplete(data)
};
return "number" == typeof options && (duration = options), "string" == typeof options && (easing = options), easing = easing || options.easing || animate.easing, duration = duration || options.duration || animate.duration, toHide.length ? toShow.length ? (total = toShow.show().outerHeight(), toHide.animate(this.hideProps, {
duration: duration,
easing: easing,
step: function(now, fx) {
fx.now = Math.round(now)
}
}), void toShow.hide().animate(this.showProps, {
duration: duration,
easing: easing,
complete: complete,
step: function(now, fx) {
fx.now = Math.round(now), "height" !== fx.prop ? adjust += fx.now : "content" !== that.options.heightStyle && (fx.now = Math.round(total - toHide.outerHeight() - adjust), adjust = 0)
}
})) : toHide.animate(this.hideProps, duration, easing, complete) : toShow.animate(this.showProps, duration, easing, complete)
},
_toggleComplete: function(data) {
var toHide = data.oldPanel;
toHide.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"), toHide.length && (toHide.parent()[0].className = toHide.parent()[0].className), this._trigger("activate", null, data)
}
}), $.widget("ui.menu", {
version: "1.11.1",
defaultElement: "<ul>",
delay: 300,
options: {
icons: {
submenu: "ui-icon-carat-1-e"
},
items: "> *",
menus: "ul",
position: {
my: "left-1 top",
at: "right top"
},
role: "menu",
blur: null,
focus: null,
select: null
},
_create: function() {
this.activeMenu = this.element, this.mouseHandled = !1, this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content").toggleClass("ui-menu-icons", !! this.element.find(".ui-icon").length).attr({
role: this.options.role,
tabIndex: 0
}), this.options.disabled && this.element.addClass("ui-state-disabled").attr("aria-disabled", "true"), this._on({
"mousedown .ui-menu-item": function(event) {
event.preventDefault()
},
"click .ui-menu-item": function(event) {
var target = $(event.target);
!this.mouseHandled && target.not(".ui-state-disabled").length && (this.select(event), event.isPropagationStopped() || (this.mouseHandled = !0), target.has(".ui-menu").length ? this.expand(event) : !this.element.is(":focus") && $(this.document[0].activeElement).closest(".ui-menu").length && (this.element.trigger("focus", [!0]), this.active && 1 === this.active.parents(".ui-menu").length && clearTimeout(this.timer)))
},
"mouseenter .ui-menu-item": function(event) {
var target = $(event.currentTarget);
target.siblings(".ui-state-active").removeClass("ui-state-active"), this.focus(event, target)
},
mouseleave: "collapseAll",
"mouseleave .ui-menu": "collapseAll",
focus: function(event, keepActiveItem) {
var item = this.active || this.element.find(this.options.items).eq(0);
keepActiveItem || this.focus(event, item)
},
blur: function(event) {
this._delay(function() {
$.contains(this.element[0], this.document[0].activeElement) || this.collapseAll(event)
})
},
keydown: "_keydown"
}), this.refresh(), this._on(this.document, {
click: function(event) {
this._closeOnDocumentClick(event) && this.collapseAll(event), this.mouseHandled = !1
}
})
},
_destroy: function() {
this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-menu-icons ui-front").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(), this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").removeUniqueId().removeClass("ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function() {
var elem = $(this);
elem.data("ui-menu-submenu-carat") && elem.remove()
}), this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")
},
_keydown: function(event) {
function escape(value) {
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
}
var match, prev, character, skip, regex, preventDefault = !0;
switch (event.keyCode) {
case $.ui.keyCode.PAGE_UP:
this.previousPage(event);
break;
case $.ui.keyCode.PAGE_DOWN:
this.nextPage(event);
break;
case $.ui.keyCode.HOME:
this._move("first", "first", event);
break;
case $.ui.keyCode.END:
this._move("last", "last", event);
break;
case $.ui.keyCode.UP:
this.previous(event);
break;
case $.ui.keyCode.DOWN:
this.next(event);
break;
case $.ui.keyCode.LEFT:
this.collapse(event);
break;
case $.ui.keyCode.RIGHT:
this.active && !this.active.is(".ui-state-disabled") && this.expand(event);
break;
case $.ui.keyCode.ENTER:
case $.ui.keyCode.SPACE:
this._activate(event);
break;
case $.ui.keyCode.ESCAPE:
this.collapse(event);
break;
default:
preventDefault = !1, prev = this.previousFilter || "", character = String.fromCharCode(event.keyCode), skip = !1, clearTimeout(this.filterTimer), character === prev ? skip = !0 : character = prev + character, regex = new RegExp("^" + escape(character), "i"), match = this.activeMenu.find(this.options.items).filter(function() {
return regex.test($(this).text())
}), match = skip && -1 !== match.index(this.active.next()) ? this.active.nextAll(".ui-menu-item") : match, match.length || (character = String.fromCharCode(event.keyCode), regex = new RegExp("^" + escape(character), "i"), match = this.activeMenu.find(this.options.items).filter(function() {
return regex.test($(this).text())
})), match.length ? (this.focus(event, match), match.length > 1 ? (this.previousFilter = character, this.filterTimer = this._delay(function() {
delete this.previousFilter
}, 1e3)) : delete this.previousFilter) : delete this.previousFilter
}
preventDefault && event.preventDefault()
},
_activate: function(event) {
this.active.is(".ui-state-disabled") || (this.active.is("[aria-haspopup='true']") ? this.expand(event) : this.select(event))
},
refresh: function() {
var menus, items, that = this,
icon = this.options.icons.submenu,
submenus = this.element.find(this.options.menus);
this.element.toggleClass("ui-menu-icons", !! this.element.find(".ui-icon").length), submenus.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-front").hide().attr({
role: this.options.role,
"aria-hidden": "true",
"aria-expanded": "false"
}).each(function() {
var menu = $(this),
item = menu.parent(),
submenuCarat = $("<span>").addClass("ui-menu-icon ui-icon " + icon).data("ui-menu-submenu-carat", !0);
item.attr("aria-haspopup", "true").prepend(submenuCarat), menu.attr("aria-labelledby", item.attr("id"))
}), menus = submenus.add(this.element), items = menus.find(this.options.items), items.not(".ui-menu-item").each(function() {
var item = $(this);
that._isDivider(item) && item.addClass("ui-widget-content ui-menu-divider")
}), items.not(".ui-menu-item, .ui-menu-divider").addClass("ui-menu-item").uniqueId().attr({
tabIndex: -1,
role: this._itemRole()
}), items.filter(".ui-state-disabled").attr("aria-disabled", "true"), this.active && !$.contains(this.element[0], this.active[0]) && this.blur()
},
_itemRole: function() {
return {
menu: "menuitem",
listbox: "option"
}[this.options.role]
},
_setOption: function(key, value) {
"icons" === key && this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(value.submenu), "disabled" === key && this.element.toggleClass("ui-state-disabled", !! value).attr("aria-disabled", value), this._super(key, value)
},
focus: function(event, item) {
var nested, focused;
this.blur(event, event && "focus" === event.type), this._scrollIntoView(item), this.active = item.first(), focused = this.active.addClass("ui-state-focus").removeClass("ui-state-active"), this.options.role && this.element.attr("aria-activedescendant", focused.attr("id")), this.active.parent().closest(".ui-menu-item").addClass("ui-state-active"), event && "keydown" === event.type ? this._close() : this.timer = this._delay(function() {
this._close()
}, this.delay), nested = item.children(".ui-menu"), nested.length && event && /^mouse/.test(event.type) && this._startOpening(nested), this.activeMenu = item.parent(), this._trigger("focus", event, {
item: item
})
},
_scrollIntoView: function(item) {
var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
this._hasScroll() && (borderTop = parseFloat($.css(this.activeMenu[0], "borderTopWidth")) || 0, paddingTop = parseFloat($.css(this.activeMenu[0], "paddingTop")) || 0, offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop, scroll = this.activeMenu.scrollTop(), elementHeight = this.activeMenu.height(), itemHeight = item.outerHeight(), 0 > offset ? this.activeMenu.scrollTop(scroll + offset) : offset + itemHeight > elementHeight && this.activeMenu.scrollTop(scroll + offset - elementHeight + itemHeight))
},
blur: function(event, fromFocus) {
fromFocus || clearTimeout(this.timer), this.active && (this.active.removeClass("ui-state-focus"), this.active = null, this._trigger("blur", event, {
item: this.active
}))
},
_startOpening: function(submenu) {
clearTimeout(this.timer), "true" === submenu.attr("aria-hidden") && (this.timer = this._delay(function() {
this._close(), this._open(submenu)
}, this.delay))
},
_open: function(submenu) {
var position = $.extend({
of: this.active
}, this.options.position);
clearTimeout(this.timer), this.element.find(".ui-menu").not(submenu.parents(".ui-menu")).hide().attr("aria-hidden", "true"), submenu.show().removeAttr("aria-hidden").attr("aria-expanded", "true").position(position)
},
collapseAll: function(event, all) {
clearTimeout(this.timer), this.timer = this._delay(function() {
var currentMenu = all ? this.element : $(event && event.target).closest(this.element.find(".ui-menu"));
currentMenu.length || (currentMenu = this.element), this._close(currentMenu), this.blur(event), this.activeMenu = currentMenu
}, this.delay)
},
_close: function(startMenu) {
startMenu || (startMenu = this.active ? this.active.parent() : this.element), startMenu.find(".ui-menu").hide().attr("aria-hidden", "true").attr("aria-expanded", "false").end().find(".ui-state-active").not(".ui-state-focus").removeClass("ui-state-active")
},
_closeOnDocumentClick: function(event) {
return !$(event.target).closest(".ui-menu").length
},
_isDivider: function(item) {
return !/[^\-\u2014\u2013\s]/.test(item.text())
},
collapse: function(event) {
var newItem = this.active && this.active.parent().closest(".ui-menu-item", this.element);
newItem && newItem.length && (this._close(), this.focus(event, newItem))
},
expand: function(event) {
var newItem = this.active && this.active.children(".ui-menu ").find(this.options.items).first();
newItem && newItem.length && (this._open(newItem.parent()), this._delay(function() {
this.focus(event, newItem)
}))
},
next: function(event) {
this._move("next", "first", event)
},
previous: function(event) {
this._move("prev", "last", event)
},
isFirstItem: function() {
return this.active && !this.active.prevAll(".ui-menu-item").length
},
isLastItem: function() {
return this.active && !this.active.nextAll(".ui-menu-item").length
},
_move: function(direction, filter, event) {
var next;
this.active && (next = "first" === direction || "last" === direction ? this.active["first" === direction ? "prevAll" : "nextAll"](".ui-menu-item").eq(-1) : this.active[direction + "All"](".ui-menu-item").eq(0)), next && next.length && this.active || (next = this.activeMenu.find(this.options.items)[filter]()), this.focus(event, next)
},
nextPage: function(event) {
var item, base, height;
return this.active ? void(this.isLastItem() || (this._hasScroll() ? (base = this.active.offset().top, height = this.element.height(), this.active.nextAll(".ui-menu-item").each(function() {
return item = $(this), item.offset().top - base - height < 0
}), this.focus(event, item)) : this.focus(event, this.activeMenu.find(this.options.items)[this.active ? "last" : "first"]()))) : void this.next(event)
},
previousPage: function(event) {
var item, base, height;
return this.active ? void(this.isFirstItem() || (this._hasScroll() ? (base = this.active.offset().top, height = this.element.height(), this.active.prevAll(".ui-menu-item").each(function() {
return item = $(this), item.offset().top - base + height > 0
}), this.focus(event, item)) : this.focus(event, this.activeMenu.find(this.options.items).first()))) : void this.next(event)
},
_hasScroll: function() {
return this.element.outerHeight() < this.element.prop("scrollHeight")
},
select: function(event) {
this.active = this.active || $(event.target).closest(".ui-menu-item");
var ui = {
item: this.active
};
this.active.has(".ui-menu").length || this.collapseAll(event, !0), this._trigger("select", event, ui)
}
});
$.widget("ui.autocomplete", {
version: "1.11.1",
defaultElement: "<input>",
options: {
appendTo: null,
autoFocus: !1,
delay: 300,
minLength: 1,
position: {
my: "left top",
at: "left bottom",
collision: "none"
},
source: null,
change: null,
close: null,
focus: null,
open: null,
response: null,
search: null,
select: null
},
requestIndex: 0,
pending: 0,
_create: function() {
var suppressKeyPress, suppressKeyPressRepeat, suppressInput, nodeName = this.element[0].nodeName.toLowerCase(),
isTextarea = "textarea" === nodeName,
isInput = "input" === nodeName;
this.isMultiLine = isTextarea ? !0 : isInput ? !1 : this.element.prop("isContentEditable"), this.valueMethod = this.element[isTextarea || isInput ? "val" : "text"], this.isNewMenu = !0, this.element.addClass("ui-autocomplete-input").attr("autocomplete", "off"), this._on(this.element, {
keydown: function(event) {
if (this.element.prop("readOnly")) return suppressKeyPress = !0, suppressInput = !0, void(suppressKeyPressRepeat = !0);
suppressKeyPress = !1, suppressInput = !1, suppressKeyPressRepeat = !1;
var keyCode = $.ui.keyCode;
switch (event.keyCode) {
case keyCode.PAGE_UP:
suppressKeyPress = !0, this._move("previousPage", event);
break;
case keyCode.PAGE_DOWN:
suppressKeyPress = !0, this._move("nextPage", event);
break;
case keyCode.UP:
suppressKeyPress = !0, this._keyEvent("previous", event);
break;
case keyCode.DOWN:
suppressKeyPress = !0, this._keyEvent("next", event);
break;
case keyCode.ENTER:
this.menu.active && (suppressKeyPress = !0, event.preventDefault(), this.menu.select(event));
break;
case keyCode.TAB:
this.menu.active && this.menu.select(event);
break;
case keyCode.ESCAPE:
this.menu.element.is(":visible") && (this.isMultiLine || this._value(this.term), this.close(event), event.preventDefault());
break;
default:
suppressKeyPressRepeat = !0, this._searchTimeout(event)
}
},
keypress: function(event) {
if (suppressKeyPress) return suppressKeyPress = !1, void((!this.isMultiLine || this.menu.element.is(":visible")) && event.preventDefault());
if (!suppressKeyPressRepeat) {
var keyCode = $.ui.keyCode;
switch (event.keyCode) {
case keyCode.PAGE_UP:
this._move("previousPage", event);
break;
case keyCode.PAGE_DOWN:
this._move("nextPage", event);
break;
case keyCode.UP:
this._keyEvent("previous", event);
break;
case keyCode.DOWN:
this._keyEvent("next", event)
}
}
},
input: function(event) {
return suppressInput ? (suppressInput = !1, void event.preventDefault()) : void this._searchTimeout(event)
},
focus: function() {
this.selectedItem = null, this.previous = this._value()
},
blur: function(event) {
return this.cancelBlur ? void delete this.cancelBlur : (clearTimeout(this.searching), this.close(event), void this._change(event))
}
}), this._initSource(), this.menu = $("<ul>").addClass("ui-autocomplete ui-front").appendTo(this._appendTo()).menu({
role: null
}).hide().menu("instance"), this._on(this.menu.element, {
mousedown: function(event) {
event.preventDefault(), this.cancelBlur = !0, this._delay(function() {
delete this.cancelBlur
});
var menuElement = this.menu.element[0];
$(event.target).closest(".ui-menu-item").length || this._delay(function() {
var that = this;
this.document.one("mousedown", function(event) {
event.target === that.element[0] || event.target === menuElement || $.contains(menuElement, event.target) || that.close()
})
})
},
menufocus: function(event, ui) {
var label, item;
return this.isNewMenu && (this.isNewMenu = !1, event.originalEvent && /^mouse/.test(event.originalEvent.type)) ? (this.menu.blur(), void this.document.one("mousemove", function() {
$(event.target).trigger(event.originalEvent)
})) : (item = ui.item.data("ui-autocomplete-item"), !1 !== this._trigger("focus", event, {
item: item
}) && event.originalEvent && /^key/.test(event.originalEvent.type) && this._value(item.value), label = ui.item.attr("aria-label") || item.value, void(label && $.trim(label).length && (this.liveRegion.children().hide(), $("<div>").text(label).appendTo(this.liveRegion))))
},
menuselect: function(event, ui) {
var item = ui.item.data("ui-autocomplete-item"),
previous = this.previous;
this.element[0] !== this.document[0].activeElement && (this.element.focus(), this.previous = previous, this._delay(function() {
this.previous = previous, this.selectedItem = item
})), !1 !== this._trigger("select", event, {
item: item
}) && this._value(item.value), this.term = this._value(), this.close(event), this.selectedItem = item
}
}), this.liveRegion = $("<span>", {
role: "status",
"aria-live": "assertive",
"aria-relevant": "additions"
}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body), this._on(this.window, {
beforeunload: function() {
this.element.removeAttr("autocomplete")
}
})
},
_destroy: function() {
clearTimeout(this.searching), this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"), this.menu.element.remove(), this.liveRegion.remove()
},
_setOption: function(key, value) {
this._super(key, value), "source" === key && this._initSource(), "appendTo" === key && this.menu.element.appendTo(this._appendTo()), "disabled" === key && value && this.xhr && this.xhr.abort()
},
_appendTo: function() {
var element = this.options.appendTo;
return element && (element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0)), element && element[0] || (element = this.element.closest(".ui-front")), element.length || (element = this.document[0].body), element
},
_initSource: function() {
var array, url, that = this;
$.isArray(this.options.source) ? (array = this.options.source, this.source = function(request, response) {
response($.ui.autocomplete.filter(array, request.term))
}) : "string" == typeof this.options.source ? (url = this.options.source, this.source = function(request, response) {
that.xhr && that.xhr.abort(), that.xhr = $.ajax({
url: url,
data: request,
dataType: "json",
success: function(data) {
response(data)
},
error: function() {
response([])
}
})
}) : this.source = this.options.source
},
_searchTimeout: function(event) {
clearTimeout(this.searching), this.searching = this._delay(function() {
var equalValues = this.term === this._value(),
menuVisible = this.menu.element.is(":visible"),
modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
(!equalValues || equalValues && !menuVisible && !modifierKey) && (this.selectedItem = null, this.search(null, event))
}, this.options.delay)
},
search: function(value, event) {
return value = null != value ? value : this._value(), this.term = this._value(), value.length < this.options.minLength ? this.close(event) : this._trigger("search", event) !== !1 ? this._search(value) : void 0
},
_search: function(value) {
this.pending++, this.element.addClass("ui-autocomplete-loading"), this.cancelSearch = !1, this.source({
term: value
}, this._response())
},
_response: function() {
var index = ++this.requestIndex;
return $.proxy(function(content) {
index === this.requestIndex && this.__response(content), this.pending--, this.pending || this.element.removeClass("ui-autocomplete-loading")
}, this)
},
__response: function(content) {
content && (content = this._normalize(content)), this._trigger("response", null, {
content: content
}), !this.options.disabled && content && content.length && !this.cancelSearch ? (this._suggest(content), this._trigger("open")) : this._close()
},
close: function(event) {
this.cancelSearch = !0, this._close(event)
},
_close: function(event) {
this.menu.element.is(":visible") && (this.menu.element.hide(), this.menu.blur(), this.isNewMenu = !0, this._trigger("close", event))
},
_change: function(event) {
this.previous !== this._value() && this._trigger("change", event, {
item: this.selectedItem
})
},
_normalize: function(items) {
return items.length && items[0].label && items[0].value ? items : $.map(items, function(item) {
return "string" == typeof item ? {
label: item,
value: item
} : $.extend({}, item, {
label: item.label || item.value,
value: item.value || item.label
})
})
},
_suggest: function(items) {
var ul = this.menu.element.empty();
this._renderMenu(ul, items), this.isNewMenu = !0, this.menu.refresh(), ul.show(), this._resizeMenu(), ul.position($.extend({
of: this.element
}, this.options.position)), this.options.autoFocus && this.menu.next()
},
_resizeMenu: function() {
var ul = this.menu.element;
ul.outerWidth(Math.max(ul.width("").outerWidth() + 1, this.element.outerWidth()))
},
_renderMenu: function(ul, items) {
var that = this;
$.each(items, function(index, item) {
that._renderItemData(ul, item)
})
},
_renderItemData: function(ul, item) {
return this._renderItem(ul, item).data("ui-autocomplete-item", item)
},
_renderItem: function(ul, item) {
return $("<li>").text(item.label).appendTo(ul)
},
_move: function(direction, event) {
return this.menu.element.is(":visible") ? this.menu.isFirstItem() && /^previous/.test(direction) || this.menu.isLastItem() && /^next/.test(direction) ? (this.isMultiLine || this._value(this.term), void this.menu.blur()) : void this.menu[direction](event) : void this.search(null, event)
},
widget: function() {
return this.menu.element
},
_value: function() {
return this.valueMethod.apply(this.element, arguments)
},
_keyEvent: function(keyEvent, event) {
(!this.isMultiLine || this.menu.element.is(":visible")) && (this._move(keyEvent, event), event.preventDefault())
}
}), $.extend($.ui.autocomplete, {
escapeRegex: function(value) {
return value.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&")
},
filter: function(array, term) {
var matcher = new RegExp($.ui.autocomplete.escapeRegex(term), "i");
return $.grep(array, function(value) {
return matcher.test(value.label || value.value || value)
})
}
}), $.widget("ui.autocomplete", $.ui.autocomplete, {
options: {
messages: {
noResults: "No search results.",
results: function(amount) {
return amount + (amount > 1 ? " results are" : " result is") + " available, use up and down arrow keys to navigate."
}
}
},
__response: function(content) {
var message;
this._superApply(arguments), this.options.disabled || this.cancelSearch || (message = content && content.length ? this.options.messages.results(content.length) : this.options.messages.noResults, this.liveRegion.children().hide(), $("<div>").text(message).appendTo(this.liveRegion))
}
});
var lastActive, baseClasses = ($.ui.autocomplete, "ui-button ui-widget ui-state-default ui-corner-all"),
typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
formResetHandler = function() {
var form = $(this);
setTimeout(function() {
form.find(":ui-button").button("refresh")
}, 1)
}, radioGroup = function(radio) {
var name = radio.name,
form = radio.form,
radios = $([]);
return name && (name = name.replace(/'/g, "\\'"), radios = form ? $(form).find("[name='" + name + "'][type=radio]") : $("[name='" + name + "'][type=radio]", radio.ownerDocument).filter(function() {
return !this.form
})), radios
};
$.widget("ui.button", {
version: "1.11.1",
defaultElement: "<button>",
options: {
disabled: null,
text: !0,
label: null,
icons: {
primary: null,
secondary: null
}
},
_create: function() {
this.element.closest("form").unbind("reset" + this.eventNamespace).bind("reset" + this.eventNamespace, formResetHandler), "boolean" != typeof this.options.disabled ? this.options.disabled = !! this.element.prop("disabled") : this.element.prop("disabled", this.options.disabled), this._determineButtonType(), this.hasTitle = !! this.buttonElement.attr("title");
var that = this,
options = this.options,
toggleButton = "checkbox" === this.type || "radio" === this.type,
activeClass = toggleButton ? "" : "ui-state-active";
null === options.label && (options.label = "input" === this.type ? this.buttonElement.val() : this.buttonElement.html()), this._hoverable(this.buttonElement), this.buttonElement.addClass(baseClasses).attr("role", "button").bind("mouseenter" + this.eventNamespace, function() {
options.disabled || this === lastActive && $(this).addClass("ui-state-active")
}).bind("mouseleave" + this.eventNamespace, function() {
options.disabled || $(this).removeClass(activeClass)
}).bind("click" + this.eventNamespace, function(event) {
options.disabled && (event.preventDefault(), event.stopImmediatePropagation())
}), this._on({
focus: function() {
this.buttonElement.addClass("ui-state-focus")
},
blur: function() {
this.buttonElement.removeClass("ui-state-focus")
}
}), toggleButton && this.element.bind("change" + this.eventNamespace, function() {
that.refresh()
}), "checkbox" === this.type ? this.buttonElement.bind("click" + this.eventNamespace, function() {
return options.disabled ? !1 : void 0
}) : "radio" === this.type ? this.buttonElement.bind("click" + this.eventNamespace, function() {
if (options.disabled) return !1;
$(this).addClass("ui-state-active"), that.buttonElement.attr("aria-pressed", "true");
var radio = that.element[0];
radioGroup(radio).not(radio).map(function() {
return $(this).button("widget")[0]
}).removeClass("ui-state-active").attr("aria-pressed", "false")
}) : (this.buttonElement.bind("mousedown" + this.eventNamespace, function() {
return options.disabled ? !1 : ($(this).addClass("ui-state-active"), lastActive = this, void that.document.one("mouseup", function() {
lastActive = null
}))
}).bind("mouseup" + this.eventNamespace, function() {
return options.disabled ? !1 : void $(this).removeClass("ui-state-active")
}).bind("keydown" + this.eventNamespace, function(event) {
return options.disabled ? !1 : void((event.keyCode === $.ui.keyCode.SPACE || event.keyCode === $.ui.keyCode.ENTER) && $(this).addClass("ui-state-active"))
}).bind("keyup" + this.eventNamespace + " blur" + this.eventNamespace, function() {
$(this).removeClass("ui-state-active")
}), this.buttonElement.is("a") && this.buttonElement.keyup(function(event) {
event.keyCode === $.ui.keyCode.SPACE && $(this).click()
})), this._setOption("disabled", options.disabled), this._resetButton()
},
_determineButtonType: function() {
var ancestor, labelSelector, checked;
this.type = this.element.is("[type=checkbox]") ? "checkbox" : this.element.is("[type=radio]") ? "radio" : this.element.is("input") ? "input" : "button", "checkbox" === this.type || "radio" === this.type ? (ancestor = this.element.parents().last(), labelSelector = "label[for='" + this.element.attr("id") + "']", this.buttonElement = ancestor.find(labelSelector), this.buttonElement.length || (ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings(), this.buttonElement = ancestor.filter(labelSelector), this.buttonElement.length || (this.buttonElement = ancestor.find(labelSelector))), this.element.addClass("ui-helper-hidden-accessible"), checked = this.element.is(":checked"), checked && this.buttonElement.addClass("ui-state-active"), this.buttonElement.prop("aria-pressed", checked)) : this.buttonElement = this.element
},
widget: function() {
return this.buttonElement
},
_destroy: function() {
this.element.removeClass("ui-helper-hidden-accessible"), this.buttonElement.removeClass(baseClasses + " ui-state-active " + typeClasses).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()), this.hasTitle || this.buttonElement.removeAttr("title")
},
_setOption: function(key, value) {
return this._super(key, value), "disabled" === key ? (this.widget().toggleClass("ui-state-disabled", !! value), this.element.prop("disabled", !! value), void(value && this.buttonElement.removeClass("checkbox" === this.type || "radio" === this.type ? "ui-state-focus" : "ui-state-focus ui-state-active"))) : void this._resetButton()
},
refresh: function() {
var isDisabled = this.element.is("input, button") ? this.element.is(":disabled") : this.element.hasClass("ui-button-disabled");
isDisabled !== this.options.disabled && this._setOption("disabled", isDisabled), "radio" === this.type ? radioGroup(this.element[0]).each(function() {
$(this).is(":checked") ? $(this).button("widget").addClass("ui-state-active").attr("aria-pressed", "true") : $(this).button("widget").removeClass("ui-state-active").attr("aria-pressed", "false")
}) : "checkbox" === this.type && (this.element.is(":checked") ? this.buttonElement.addClass("ui-state-active").attr("aria-pressed", "true") : this.buttonElement.removeClass("ui-state-active").attr("aria-pressed", "false"))
},
_resetButton: function() {
if ("input" === this.type) return void(this.options.label && this.element.val(this.options.label));
var buttonElement = this.buttonElement.removeClass(typeClasses),
buttonText = $("<span></span>", this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(buttonElement.empty()).text(),
icons = this.options.icons,
multipleIcons = icons.primary && icons.secondary,
buttonClasses = [];
icons.primary || icons.secondary ? (this.options.text && buttonClasses.push("ui-button-text-icon" + (multipleIcons ? "s" : icons.primary ? "-primary" : "-secondary")), icons.primary && buttonElement.prepend("<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>"), icons.secondary && buttonElement.append("<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>"), this.options.text || (buttonClasses.push(multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only"), this.hasTitle || buttonElement.attr("title", $.trim(buttonText)))) : buttonClasses.push("ui-button-text-only"), buttonElement.addClass(buttonClasses.join(" "))
}
}), $.widget("ui.buttonset", {
version: "1.11.1",
options: {
items: "button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"
},
_create: function() {
this.element.addClass("ui-buttonset")
},
_init: function() {
this.refresh()
},
_setOption: function(key, value) {
"disabled" === key && this.buttons.button("option", key, value), this._super(key, value)
},
refresh: function() {
var rtl = "rtl" === this.element.css("direction"),
allButtons = this.element.find(this.options.items),
existingButtons = allButtons.filter(":ui-button");
allButtons.not(":ui-button").button(), existingButtons.button("refresh"), this.buttons = allButtons.map(function() {
return $(this).button("widget")[0]
}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(rtl ? "ui-corner-right" : "ui-corner-left").end().filter(":last").addClass(rtl ? "ui-corner-left" : "ui-corner-right").end().end()
},
_destroy: function() {
this.element.removeClass("ui-buttonset"), this.buttons.map(function() {
return $(this).button("widget")[0]
}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")
}
});
$.ui.button;
$.extend($.ui, {
datepicker: {
version: "1.11.1"
}
});
var datepicker_instActive;
$.extend(Datepicker.prototype, {
markerClassName: "hasDatepicker",
maxRows: 4,
_widgetDatepicker: function() {
return this.dpDiv
},
setDefaults: function(settings) {
return datepicker_extendRemove(this._defaults, settings || {}), this
},
_attachDatepicker: function(target, settings) {
var nodeName, inline, inst;
nodeName = target.nodeName.toLowerCase(), inline = "div" === nodeName || "span" === nodeName, target.id || (this.uuid += 1, target.id = "dp" + this.uuid), inst = this._newInst($(target), inline), inst.settings = $.extend({}, settings || {}), "input" === nodeName ? this._connectDatepicker(target, inst) : 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 ? datepicker_bindHover($("<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")) : this.dpDiv
}
},
_connectDatepicker: function(target, inst) {
var input = $(target);
inst.append = $([]), inst.trigger = $([]), input.hasClass(this.markerClassName) || (this._attachments(input, inst), input.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp), this._autoSize(inst), $.data(target, "datepicker", inst), inst.settings.disabled && this._disableDatepicker(target))
},
_attachments: function(input, inst) {
var showOn, buttonText, buttonImage, appendText = this._get(inst, "appendText"),
isRTL = this._get(inst, "isRTL");
inst.append && inst.append.remove(), appendText && (inst.append = $("<span class='" + this._appendClass + "'>" + appendText + "</span>"), input[isRTL ? "before" : "after"](inst.append)), input.unbind("focus", this._showDatepicker), inst.trigger && inst.trigger.remove(), showOn = this._get(inst, "showOn"), ("focus" === showOn || "both" === showOn) && input.focus(this._showDatepicker), ("button" === showOn || "both" === showOn) && (buttonText = this._get(inst, "buttonText"), buttonImage = this._get(inst, "buttonImage"), inst.trigger = $(this._get(inst, "buttonImageOnly") ? $("<img/>").addClass(this._triggerClass).attr({
src: buttonImage,
alt: buttonText,
title: buttonText
}) : $("<button type='button'></button>").addClass(this._triggerClass).html(buttonImage ? $("<img/>").attr({
src: buttonImage,
alt: buttonText,
title: buttonText
}) : buttonText)), input[isRTL ? "before" : "after"](inst.trigger), inst.trigger.click(function() {
return $.datepicker._datepickerShowing && $.datepicker._lastInput === input[0] ? $.datepicker._hideDatepicker() : $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[0] ? ($.datepicker._hideDatepicker(), $.datepicker._showDatepicker(input[0])) : $.datepicker._showDatepicker(input[0]), !1
}))
},
_autoSize: function(inst) {
if (this._get(inst, "autoSize") && !inst.inline) {
var findMax, max, maxI, i, date = new Date(2009, 11, 20),
dateFormat = this._get(inst, "dateFormat");
dateFormat.match(/[DM]/) && (findMax = function(names) {
for (max = 0, maxI = 0, i = 0; i < names.length; i++) 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);
divSpan.hasClass(this.markerClassName) || (divSpan.addClass(this.markerClassName).append(inst.dpDiv), $.data(target, "datepicker", inst), this._setDate(inst, this._getDefaultDate(inst), !0), this._updateDatepicker(inst), this._updateAlternate(inst), 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;
return inst || (this.uuid += 1, id = "dp" + this.uuid, this._dialogInput = $("<input type='text' id='" + id + "' style='position: absolute; top: -100px; width: 0px;'/>"), this._dialogInput.keydown(this._doKeyDown), $("body").append(this._dialogInput), inst = this._dialogInst = this._newInst(this._dialogInput, !1), 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, 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 = !0, this.dpDiv.addClass(this._dialogClass), this._showDatepicker(this._dialogInput[0]), $.blockUI && $.blockUI(this.dpDiv), $.data(this._dialogInput[0], "datepicker", inst), this
},
_destroyDatepicker: function(target) {
var nodeName, $target = $(target),
inst = $.data(target, "datepicker");
$target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), $.removeData(target, "datepicker"), "input" === nodeName ? (inst.append.remove(), inst.trigger.remove(), $target.removeClass(this.markerClassName).unbind("focus", this._showDatepicker).unbind("keydown", this._doKeyDown).unbind("keypress", this._doKeyPress).unbind("keyup", this._doKeyUp)) : ("div" === nodeName || "span" === nodeName) && $target.removeClass(this.markerClassName).empty())
},
_enableDatepicker: function(target) {
var nodeName, inline, $target = $(target),
inst = $.data(target, "datepicker");
$target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), "input" === nodeName ? (target.disabled = !1, inst.trigger.filter("button").each(function() {
this.disabled = !1
}).end().filter("img").css({
opacity: "1.0",
cursor: ""
})) : ("div" === nodeName || "span" === nodeName) && (inline = $target.children("." + this._inlineClass), inline.children().removeClass("ui-state-disabled"), inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !1)), this._disabledInputs = $.map(this._disabledInputs, function(value) {
return value === target ? null : value
}))
},
_disableDatepicker: function(target) {
var nodeName, inline, $target = $(target),
inst = $.data(target, "datepicker");
$target.hasClass(this.markerClassName) && (nodeName = target.nodeName.toLowerCase(), "input" === nodeName ? (target.disabled = !0, inst.trigger.filter("button").each(function() {
this.disabled = !0
}).end().filter("img").css({
opacity: "0.5",
cursor: "default"
})) : ("div" === nodeName || "span" === nodeName) && (inline = $target.children("." + this._inlineClass), inline.children().addClass("ui-state-disabled"), inline.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled", !0)), this._disabledInputs = $.map(this._disabledInputs, function(value) {
return value === target ? null : value
}), this._disabledInputs[this._disabledInputs.length] = target)
},
_isDisabledDatepicker: function(target) {
if (!target) return !1;
for (var i = 0; i < this._disabledInputs.length; i++)
if (this._disabledInputs[i] === target) return !0;
return !1
},
_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);
return 2 === arguments.length && "string" == typeof name ? "defaults" === name ? $.extend({}, $.datepicker._defaults) : inst ? "all" === name ? $.extend({}, inst.settings) : this._get(inst, name) : null : (settings = name || {}, "string" == typeof name && (settings = {}, settings[name] = value), void(inst && (this._curInst === inst && this._hideDatepicker(), date = this._getDateDatepicker(target, !0), minDate = this._getMinMaxDate(inst, "min"), maxDate = this._getMinMaxDate(inst, "max"), datepicker_extendRemove(inst.settings, settings), null !== minDate && void 0 !== settings.dateFormat && void 0 === settings.minDate && (inst.settings.minDate = this._formatDate(inst, minDate)), null !== maxDate && void 0 !== settings.dateFormat && void 0 === settings.maxDate && (inst.settings.maxDate = this._formatDate(inst, maxDate)), "disabled" in settings && (settings.disabled ? this._disableDatepicker(target) : 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);
inst && this._updateDatepicker(inst)
},
_setDateDatepicker: function(target, date) {
var inst = this._getInst(target);
inst && (this._setDate(inst, date), this._updateDatepicker(inst), this._updateAlternate(inst))
},
_getDateDatepicker: function(target, noDefault) {
var inst = this._getInst(target);
return inst && !inst.inline && this._setDateFromField(inst, noDefault), inst ? this._getDate(inst) : null
},
_doKeyDown: function(event) {
var onSelect, dateStr, sel, inst = $.datepicker._getInst(event.target),
handled = !0,
isRTL = inst.dpDiv.is(".ui-datepicker-rtl");
if (inst._keyEvent = !0, $.datepicker._datepickerShowing) switch (event.keyCode) {
case 9:
$.datepicker._hideDatepicker(), handled = !1;
break;
case 13:
return sel = $("td." + $.datepicker._dayOverClass + ":not(." + $.datepicker._currentClass + ")", inst.dpDiv), sel[0] && $.datepicker._selectDay(event.target, inst.selectedMonth, inst.selectedYear, sel[0]), onSelect = $.datepicker._get(inst, "onSelect"), onSelect ? (dateStr = $.datepicker._formatDate(inst), onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst])) : $.datepicker._hideDatepicker(), !1;
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:
(event.ctrlKey || event.metaKey) && $.datepicker._clearDate(event.target), handled = event.ctrlKey || event.metaKey;
break;
case 36:
(event.ctrlKey || event.metaKey) && $.datepicker._gotoToday(event.target), handled = event.ctrlKey || event.metaKey;
break;
case 37:
(event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, isRTL ? 1 : -1, "D"), handled = event.ctrlKey || event.metaKey, event.originalEvent.altKey && $.datepicker._adjustDate(event.target, event.ctrlKey ? -$.datepicker._get(inst, "stepBigMonths") : -$.datepicker._get(inst, "stepMonths"), "M");
break;
case 38:
(event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, -7, "D"), handled = event.ctrlKey || event.metaKey;
break;
case 39:
(event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, isRTL ? -1 : 1, "D"), handled = event.ctrlKey || event.metaKey, event.originalEvent.altKey && $.datepicker._adjustDate(event.target, event.ctrlKey ? +$.datepicker._get(inst, "stepBigMonths") : +$.datepicker._get(inst, "stepMonths"), "M");
break;
case 40:
(event.ctrlKey || event.metaKey) && $.datepicker._adjustDate(event.target, 7, "D"), handled = event.ctrlKey || event.metaKey;
break;
default:
handled = !1
} else 36 === event.keyCode && event.ctrlKey ? $.datepicker._showDatepicker(this) : handled = !1;
handled && (event.preventDefault(), event.stopPropagation())
},
_doKeyPress: function(event) {
var chars, chr, inst = $.datepicker._getInst(event.target);
return $.datepicker._get(inst, "constrainInput") ? (chars = $.datepicker._possibleChars($.datepicker._get(inst, "dateFormat")), chr = String.fromCharCode(null == event.charCode ? event.keyCode : event.charCode), event.ctrlKey || event.metaKey || " " > chr || !chars || chars.indexOf(chr) > -1) : void 0
},
_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)), date && ($.datepicker._setDateFromField(inst), $.datepicker._updateAlternate(inst), $.datepicker._updateDatepicker(inst))
} catch (err) {}
return !0
},
_showDatepicker: function(input) {
if (input = input.target || input, "input" !== input.nodeName.toLowerCase() && (input = $("input", input.parentNode)[0]), !$.datepicker._isDisabledDatepicker(input) && $.datepicker._lastInput !== input) {
var inst, beforeShow, beforeShowSettings, isFixed, offset, showAnim, duration;
inst = $.datepicker._getInst(input), $.datepicker._curInst && $.datepicker._curInst !== inst && ($.datepicker._curInst.dpDiv.stop(!0, !0), inst && $.datepicker._datepickerShowing && $.datepicker._hideDatepicker($.datepicker._curInst.input[0])), beforeShow = $.datepicker._get(inst, "beforeShow"), beforeShowSettings = beforeShow ? beforeShow.apply(input, [input, inst]) : {}, beforeShowSettings !== !1 && (datepicker_extendRemove(inst.settings, beforeShowSettings), inst.lastVal = null, $.datepicker._lastInput = input, $.datepicker._setDateFromField(inst), $.datepicker._inDialog && (input.value = ""), $.datepicker._pos || ($.datepicker._pos = $.datepicker._findPos(input), $.datepicker._pos[1] += input.offsetHeight), isFixed = !1, $(input).parents().each(function() {
return isFixed |= "fixed" === $(this).css("position"), !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"
}), inst.inline || (showAnim = $.datepicker._get(inst, "showAnim"), duration = $.datepicker._get(inst, "duration"), inst.dpDiv.css("z-index", datepicker_getZindex($(input)) + 1), $.datepicker._datepickerShowing = !0, $.effects && $.effects.effect[showAnim] ? inst.dpDiv.show(showAnim, $.datepicker._get(inst, "showOptions"), duration) : inst.dpDiv[showAnim || "show"](showAnim ? duration : null), $.datepicker._shouldFocusInput(inst) && inst.input.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");
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(""), cols > 1 && inst.dpDiv.addClass("ui-datepicker-multi-" + cols).css("width", width * cols + "em"), inst.dpDiv[(1 !== numMonths[0] || 1 !== numMonths[1] ? "add" : "remove") + "Class"]("ui-datepicker-multi"), inst.dpDiv[(this._get(inst, "isRTL") ? "add" : "remove") + "Class"]("ui-datepicker-rtl"), inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput(inst) && inst.input.focus(), inst.yearshtml && (origyearshtml = inst.yearshtml, setTimeout(function() {
origyearshtml === inst.yearshtml && inst.yearshtml && inst.dpDiv.find("select.ui-datepicker-year:first").replaceWith(inst.yearshtml), origyearshtml = inst.yearshtml = null
}, 0))
},
_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());
return 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), offset
},
_findPos: function(obj) {
for (var position, inst = this._getInst(obj), isRTL = this._get(inst, "isRTL"); obj && ("hidden" === obj.type || 1 !== obj.nodeType || $.expr.filters.hidden(obj));) obj = obj[isRTL ? "previousSibling" : "nextSibling"];
return position = $(obj).offset(), [position.left, position.top]
},
_hideDatepicker: function(input) {
var showAnim, duration, postProcess, onClose, inst = this._curInst;
!inst || input && inst !== $.data(input, "datepicker") || this._datepickerShowing && (showAnim = this._get(inst, "showAnim"), duration = this._get(inst, "duration"), postProcess = function() {
$.datepicker._tidyDialog(inst)
}, $.effects && ($.effects.effect[showAnim] || $.effects[showAnim]) ? inst.dpDiv.hide(showAnim, $.datepicker._get(inst, "showOptions"), duration, postProcess) : inst.dpDiv["slideDown" === showAnim ? "slideUp" : "fadeIn" === showAnim ? "fadeOut" : "hide"](showAnim ? duration : null, postProcess), showAnim || postProcess(), this._datepickerShowing = !1, onClose = this._get(inst, "onClose"), onClose && onClose.apply(inst.input ? inst.input[0] : null, [inst.input ? inst.input.val() : "", inst]), this._lastInput = null, this._inDialog && (this._dialogInput.css({
position: "absolute",
left: "0",
top: "-100px"
}), $.blockUI && ($.unblockUI(), $("body").append(this.dpDiv))), this._inDialog = !1)
},
_tidyDialog: function(inst) {
inst.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")
},
_checkExternalClick: function(event) {
if ($.datepicker._curInst) {
var $target = $(event.target),
inst = $.datepicker._getInst($target[0]);
($target[0].id !== $.datepicker._mainDivId && 0 === $target.parents("#" + $.datepicker._mainDivId).length && !$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]);
this._isDisabledDatepicker(target[0]) || (this._adjustInstDate(inst, offset + ("M" === period ? this._get(inst, "showCurrentAtPos") : 0), period), this._updateDatepicker(inst))
},
_gotoToday: function(id) {
var date, target = $(id),
inst = this._getInst(target[0]);
this._get(inst, "gotoCurrent") && inst.currentDay ? (inst.selectedDay = inst.currentDay, inst.drawMonth = inst.selectedMonth = inst.currentMonth, inst.drawYear = inst.selectedYear = inst.currentYear) : (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" + ("M" === period ? "Month" : "Year")] = inst["draw" + ("M" === period ? "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);
$(td).hasClass(this._unselectableClass) || this._isDisabledDatepicker(target[0]) || (inst = this._getInst(target[0]), inst.selectedDay = inst.currentDay = $("a", td).html(), 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 = null != dateStr ? dateStr : this._formatDate(inst), inst.input && inst.input.val(dateStr), this._updateAlternate(inst), onSelect = this._get(inst, "onSelect"), onSelect ? onSelect.apply(inst.input ? inst.input[0] : null, [dateStr, inst]) : inst.input && inst.input.trigger("change"), inst.inline ? this._updateDatepicker(inst) : (this._hideDatepicker(), this._lastInput = inst.input[0], "object" != typeof inst.input[0] && inst.input.focus(), this._lastInput = null)
},
_updateAlternate: function(inst) {
var altFormat, date, dateStr, altField = this._get(inst, "altField");
altField && (altFormat = this._get(inst, "altFormat") || this._get(inst, "dateFormat"), date = this._getDate(inst), dateStr = this.formatDate(altFormat, date, this._getFormatConfig(inst)), $(altField).each(function() {
$(this).val(dateStr)
}))
},
noWeekends: function(date) {
var day = date.getDay();
return [day > 0 && 6 > day, ""]
},
iso8601Week: function(date) {
var time, checkDate = new Date(date.getTime());
return checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)), time = checkDate.getTime(), checkDate.setMonth(0), checkDate.setDate(1), Math.floor(Math.round((time - checkDate) / 864e5) / 7) + 1
},
parseDate: function(format, value, settings) {
if (null == format || null == value) throw "Invalid arguments";
if (value = "object" == typeof value ? value.toString() : value + "", "" === value) return null;
var iFormat, dim, extra, date, iValue = 0,
shortYearCutoffTemp = (settings ? settings.shortYearCutoff : null) || this._defaults.shortYearCutoff,
shortYearCutoff = "string" != typeof shortYearCutoffTemp ? 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 = !1,
lookAhead = function(match) {
var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
return matches && iFormat++, matches
}, getNumber = function(match) {
var isDoubled = lookAhead(match),
size = "@" === match ? 14 : "!" === match ? 20 : "y" === match && isDoubled ? 4 : "o" === match ? 3 : 2,
minSize = "y" === match ? size : 1,
digits = new RegExp("^\\d{" + minSize + "," + size + "}"),
num = value.substring(iValue).match(digits);
if (!num) throw "Missing number at position " + iValue;
return iValue += num[0].length, 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)
});
if ($.each(names, function(i, pair) {
var name = pair[1];
return value.substr(iValue, name.length).toLowerCase() === name.toLowerCase() ? (index = pair[0], iValue += name.length, !1) : void 0
}), -1 !== index) return index + 1;
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) "'" !== format.charAt(iFormat) || lookAhead("'") ? checkLiteral() : literal = !1;
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) / 1e4), year = date.getFullYear(), month = date.getMonth() + 1, day = date.getDate();
break;
case "'":
lookAhead("'") ? checkLiteral() : literal = !0;
break;
default:
checkLiteral()
}
if (iValue < value.length && (extra = value.substr(iValue), !/^\s+/.test(extra))) throw "Extra/unparsed characters found in date: " + extra;
if (-1 === year ? year = (new Date).getFullYear() : 100 > year && (year += (new Date).getFullYear() - (new Date).getFullYear() % 100 + (shortYearCutoff >= year ? 0 : -100)), doy > -1)
for (month = 1, day = doy;;) {
if (dim = this._getDaysInMonth(year, month - 1), dim >= day) break;
month++, day -= dim
}
if (date = this._daylightSavingAdjust(new Date(year, month - 1, day)), 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: 24 * (718685 + Math.floor(492.5) - Math.floor(19.7) + Math.floor(4.925)) * 60 * 60 * 1e7,
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;
return matches && iFormat++, matches
}, formatNumber = function(match, value, len) {
var num = "" + value;
if (lookAhead(match))
for (; num.length < len;) num = "0" + num;
return num
}, formatName = function(match, value, shortNames, longNames) {
return lookAhead(match) ? longNames[value] : shortNames[value]
}, output = "",
literal = !1;
if (date)
for (iFormat = 0; iFormat < format.length; iFormat++)
if (literal) "'" !== format.charAt(iFormat) || lookAhead("'") ? output += format.charAt(iFormat) : literal = !1;
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()) / 864e5), 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.getYear() % 100 < 10 ? "0" : "") + date.getYear() % 100;
break;
case "@":
output += date.getTime();
break;
case "!":
output += 1e4 * date.getTime() + this._ticksTo1970;
break;
case "'":
lookAhead("'") ? output += "'" : literal = !0;
break;
default:
output += format.charAt(iFormat)
}
return output
},
_possibleChars: function(format) {
var iFormat, chars = "",
literal = !1,
lookAhead = function(match) {
var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;
return matches && iFormat++, matches
};
for (iFormat = 0; iFormat < format.length; iFormat++)
if (literal) "'" !== format.charAt(iFormat) || lookAhead("'") ? chars += format.charAt(iFormat) : literal = !1;
else switch (format.charAt(iFormat)) {
case "d":
case "m":
case "y":
case "@":
chars += "0123456789";
break;
case "D":
case "M":
return null;
case "'":
lookAhead("'") ? chars += "'" : literal = !0;
break;
default:
chars += format.charAt(iFormat)
}
return chars
},
_get: function(inst, name) {
return void 0 !== inst.settings[name] ? inst.settings[name] : this._defaults[name]
},
_setDateFromField: function(inst, noDefault) {
if (inst.input.val() !== inst.lastVal) {
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;
return date.setDate(date.getDate() + offset), date
}, offsetString = function(offset) {
try {
return $.datepicker.parseDate($.datepicker._get(inst, "dateFormat"), offset, $.datepicker._getFormatConfig(inst))
} catch (e) {}
for (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); matches;) {
switch (matches[2] || "d") {
case "d":
case "D":
day += parseInt(matches[1], 10);
break;
case "w":
case "W":
day += 7 * parseInt(matches[1], 10);
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))
}
matches = pattern.exec(offset)
}
return new Date(year, month, day)
}, newDate = null == date || "" === date ? defaultDate : "string" == typeof date ? offsetString(date) : "number" == typeof date ? isNaN(date) ? defaultDate : offsetNumeric(date) : new Date(date.getTime());
return newDate = newDate && "Invalid Date" === newDate.toString() ? defaultDate : newDate, newDate && (newDate.setHours(0), newDate.setMinutes(0), newDate.setSeconds(0), newDate.setMilliseconds(0)), this._daylightSavingAdjust(newDate)
},
_daylightSavingAdjust: function(date) {
return date ? (date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0), date) : null
},
_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(), origMonth === inst.selectedMonth && origYear === inst.selectedYear || noChange || this._notifyChange(inst), this._adjustInstDate(inst), 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() {
return $.datepicker._selectDay(id, +this.getAttribute("data-month"), +this.getAttribute("data-year"), this), !1
},
selectMonth: function() {
return $.datepicker._selectMonthYear(id, this, "M"), !1
},
selectYear: function() {
return $.datepicker._selectMonthYear(id, this, "Y"), !1
}
};
$(this).bind(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 = 1 !== numMonths[0] || 1 !== numMonths[1],
currentDate = this._daylightSavingAdjust(inst.currentDay ? new Date(inst.currentYear, inst.currentMonth, inst.currentDay) : new Date(9999, 9, 9)),
minDate = this._getMinMaxDate(inst, "min"),
maxDate = this._getMinMaxDate(inst, "max"),
drawMonth = inst.drawMonth - showCurrentAtPos,
drawYear = inst.drawYear;
if (0 > drawMonth && (drawMonth += 12, drawYear--), maxDate)
for (maxDraw = this._daylightSavingAdjust(new Date(maxDate.getFullYear(), maxDate.getMonth() - numMonths[0] * numMonths[1] + 1, maxDate.getDate())), maxDraw = minDate && minDate > maxDraw ? minDate : maxDraw; this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1)) > maxDraw;) drawMonth--, 0 > drawMonth && (drawMonth = 11, drawYear--);
for (inst.drawMonth = drawMonth, inst.drawYear = drawYear, prevText = this._get(inst, "prevText"), prevText = navigationAsDateFormat ? this.formatDate(prevText, this._daylightSavingAdjust(new Date(drawYear, drawMonth - stepMonths, 1)), this._getFormatConfig(inst)) : prevText, prev = this._canAdjustMonth(inst, -1, drawYear, drawMonth) ? "<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "e" : "w") + "'>" + prevText + "</span></a>" : hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "e" : "w") + "'>" + prevText + "</span></a>", nextText = this._get(inst, "nextText"), nextText = navigationAsDateFormat ? this.formatDate(nextText, this._daylightSavingAdjust(new Date(drawYear, drawMonth + stepMonths, 1)), this._getFormatConfig(inst)) : nextText, next = this._canAdjustMonth(inst, 1, drawYear, drawMonth) ? "<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "w" : "e") + "'>" + nextText + "</span></a>" : hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + (isRTL ? "w" : "e") + "'>" + nextText + "</span></a>", currentText = this._get(inst, "currentText"), gotoDate = this._get(inst, "gotoCurrent") && inst.currentDay ? currentDate : today, currentText = navigationAsDateFormat ? this.formatDate(currentText, gotoDate, this._getFormatConfig(inst)) : currentText, controls = inst.inline ? "" : "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" + this._get(inst, "closeText") + "</button>", buttonPanel = showButtonPanel ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + (isRTL ? controls : "") + (this._isInRange(inst, gotoDate) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>" + currentText + "</button>" : "") + (isRTL ? "" : controls) + "</div>" : "", 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 = "", row = 0; row < numMonths[0]; row++) {
for (group = "", this.maxRows = 4, col = 0; col < numMonths[1]; col++) {
if (selectedDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, inst.selectedDay)), cornerClass = " ui-corner-all", calender = "", isMultiMonth) {
if (calender += "<div class='ui-datepicker-group", 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 = ""
}
calender += "'>"
}
for (calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" + (/all|left/.test(cornerClass) && 0 === row ? isRTL ? next : prev : "") + (/all|right/.test(cornerClass) && 0 === row ? 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>" : "", dow = 0; 7 > dow; 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>";
for (calender += thead + "</tr></thead><tbody>", daysInMonth = this._getDaysInMonth(drawYear, drawMonth), 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, this.maxRows = numRows, printDate = this._daylightSavingAdjust(new Date(drawYear, drawMonth, 1 - leadDays)), dRow = 0; numRows > dRow; dRow++) {
for (calender += "<tr>", tbody = showWeek ? "<td class='ui-datepicker-week-col'>" + this._get(inst, "calculateWeek")(printDate) + "</td>" : "", dow = 0; 7 > dow; dow++) daySettings = beforeShowDay ? beforeShowDay.apply(inst.input ? inst.input[0] : null, [printDate]) : [!0, ""], otherMonth = printDate.getMonth() !== drawMonth, unselectable = otherMonth && !selectOtherMonths || !daySettings[0] || minDate && minDate > printDate || 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, "'") + "'") + (unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'") + ">" + (otherMonth && !showOtherMonths ? " " : 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='#'>" + printDate.getDate() + "</a>") + "</td>", printDate.setDate(printDate.getDate() + 1), printDate = this._daylightSavingAdjust(printDate);
calender += tbody + "</tr>"
}
drawMonth++, 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
}
return html += buttonPanel, inst._keyEvent = !1, 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"),
html = "<div class='ui-datepicker-title'>",
monthHtml = "";
if (secondary || !changeMonth) monthHtml += "<span class='ui-datepicker-month'>" + monthNames[drawMonth] + "</span>";
else {
for (inMinYear = minDate && minDate.getFullYear() === drawYear, inMaxYear = maxDate && maxDate.getFullYear() === drawYear, monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>", month = 0; 12 > month; month++)(!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 ? "" : " ")), !inst.yearshtml)
if (inst.yearshtml = "", secondary || !changeYear) html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
else {
for (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' data-handler='selectYear' data-event='change'>"; endYear >= year; year++) inst.yearshtml += "<option value='" + year + "'" + (year === drawYear ? " selected='selected'" : "") + ">" + year + "</option>";
inst.yearshtml += "</select>", html += inst.yearshtml, inst.yearshtml = null
}
return html += this._get(inst, "yearSuffix"), showMonthAfterYear && (html += (!secondary && changeMonth && changeYear ? "" : " ") + monthHtml), html += "</div>"
},
_adjustInstDate: function(inst, offset, period) {
var year = inst.drawYear + ("Y" === period ? offset : 0),
month = inst.drawMonth + ("M" === period ? offset : 0),
day = Math.min(inst.selectedDay, this._getDaysInMonth(year, month)) + ("D" === period ? 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(), ("M" === period || "Y" === period) && this._notifyChange(inst)
},
_restrictMinMax: function(inst, date) {
var minDate = this._getMinMaxDate(inst, "min"),
maxDate = this._getMinMaxDate(inst, "max"),
newDate = minDate && minDate > date ? minDate : date;
return maxDate && newDate > maxDate ? maxDate : newDate
},
_notifyChange: function(inst) {
var onChange = this._get(inst, "onChangeMonthYear");
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 null == numMonths ? [1, 1] : "number" == typeof numMonths ? [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 + (0 > offset ? offset : numMonths[0] * numMonths[1]), 1));
return 0 > offset && date.setDate(this._getDaysInMonth(date.getFullYear(), date.getMonth())), 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");
return years && (yearSplit = years.split(":"), currentYear = (new Date).getFullYear(), minYear = parseInt(yearSplit[0], 10), maxYear = parseInt(yearSplit[1], 10), yearSplit[0].match(/[+\-].*/) && (minYear += currentYear), yearSplit[1].match(/[+\-].*/) && (maxYear += currentYear)), (!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");
return shortYearCutoff = "string" != typeof shortYearCutoff ? shortYearCutoff : (new Date).getFullYear() % 100 + parseInt(shortYearCutoff, 10), {
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) {
day || (inst.currentDay = inst.selectedDay, inst.currentMonth = inst.selectedMonth, inst.currentYear = inst.selectedYear);
var date = day ? "object" == typeof day ? 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))
}
}), $.fn.datepicker = function(options) {
if (!this.length) return this;
$.datepicker.initialized || ($(document).mousedown($.datepicker._checkExternalClick), $.datepicker.initialized = !0), 0 === $("#" + $.datepicker._mainDivId).length && $("body").append($.datepicker.dpDiv);
var otherArgs = Array.prototype.slice.call(arguments, 1);
return "string" != typeof options || "isDisabled" !== options && "getDate" !== options && "widget" !== options ? "option" === options && 2 === arguments.length && "string" == typeof arguments[1] ? $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this[0]].concat(otherArgs)) : this.each(function() {
"string" == typeof options ? $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this].concat(otherArgs)) : $.datepicker._attachDatepicker(this, options)
}) : $.datepicker["_" + options + "Datepicker"].apply($.datepicker, [this[0]].concat(otherArgs))
}, $.datepicker = new Datepicker, $.datepicker.initialized = !1, $.datepicker.uuid = (new Date).getTime(), $.datepicker.version = "1.11.1";
$.datepicker;
$.widget("ui.draggable", $.ui.mouse, {
version: "1.11.1",
widgetEventPrefix: "drag",
options: {
addClasses: !0,
appendTo: "parent",
axis: !1,
connectToSortable: !1,
containment: !1,
cursor: "auto",
cursorAt: !1,
grid: !1,
handle: !1,
helper: "original",
iframeFix: !1,
opacity: !1,
refreshPositions: !1,
revert: !1,
revertDuration: 500,
scope: "default",
scroll: !0,
scrollSensitivity: 20,
scrollSpeed: 20,
snap: !1,
snapMode: "both",
snapTolerance: 20,
stack: !1,
zIndex: !1,
drag: null,
start: null,
stop: null
},
_create: function() {
"original" !== this.options.helper || /^(?:r|a|f)/.test(this.element.css("position")) || (this.element[0].style.position = "relative"), this.options.addClasses && this.element.addClass("ui-draggable"), this.options.disabled && this.element.addClass("ui-draggable-disabled"), this._setHandleClassName(), this._mouseInit()
},
_setOption: function(key, value) {
this._super(key, value), "handle" === key && (this._removeHandleClassName(), this._setHandleClassName())
},
_destroy: function() {
return (this.helper || this.element).is(".ui-draggable-dragging") ? void(this.destroyOnClear = !0) : (this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"), this._removeHandleClassName(), void this._mouseDestroy())
},
_mouseCapture: function(event) {
var document = this.document[0],
o = this.options;
try {
document.activeElement && "body" !== document.activeElement.nodeName.toLowerCase() && $(document.activeElement).blur()
} catch (error) {}
return this.helper || o.disabled || $(event.target).closest(".ui-resizable-handle").length > 0 ? !1 : (this.handle = this._getHandle(event), this.handle ? ($(o.iframeFix === !0 ? "iframe" : o.iframeFix).each(function() {
$("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({
width: this.offsetWidth + "px",
height: this.offsetHeight + "px",
position: "absolute",
opacity: "0.001",
zIndex: 1e3
}).css($(this).offset()).appendTo("body")
}), !0) : !1)
},
_mouseStart: function(event) {
var o = this.options;
return this.helper = this._createHelper(event), this.helper.addClass("ui-draggable-dragging"), this._cacheHelperProportions(), $.ui.ddmanager && ($.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(!0), this.offsetParent = this.helper.offsetParent(), this.offsetParentCssPosition = this.offsetParent.css("position"), this.offset = this.positionAbs = this.element.offset(), this.offset = {
top: this.offset.top - this.margins.top,
left: this.offset.left - this.margins.left
}, this.offset.scroll = !1, $.extend(this.offset, {
click: {
left: event.pageX - this.offset.left,
top: event.pageY - this.offset.top
},
parent: this._getParentOffset(),
relative: this._getRelativeOffset()
}), this.originalPosition = this.position = this._generatePosition(event, !1), this.originalPageX = event.pageX, this.originalPageY = event.pageY, o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt), this._setContainment(), this._trigger("start", event) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(), $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event), this._mouseDrag(event, !0), $.ui.ddmanager && $.ui.ddmanager.dragStart(this, event), !0)
},
_mouseDrag: function(event, noPropagation) {
if ("fixed" === this.offsetParentCssPosition && (this.offset.parent = this._getParentOffset()), this.position = this._generatePosition(event, !0), this.positionAbs = this._convertPositionTo("absolute"), !noPropagation) {
var ui = this._uiHash();
if (this._trigger("drag", event, ui) === !1) return this._mouseUp({}), !1;
this.position = ui.position
}
return this.helper[0].style.left = this.position.left + "px", this.helper[0].style.top = this.position.top + "px", $.ui.ddmanager && $.ui.ddmanager.drag(this, event), !1
},
_mouseStop: function(event) {
var that = this,
dropped = !1;
return $.ui.ddmanager && !this.options.dropBehaviour && (dropped = $.ui.ddmanager.drop(this, event)), this.dropped && (dropped = this.dropped, this.dropped = !1), "invalid" === this.options.revert && !dropped || "valid" === this.options.revert && dropped || this.options.revert === !0 || $.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped) ? $(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function() {
that._trigger("stop", event) !== !1 && that._clear()
}) : this._trigger("stop", event) !== !1 && this._clear(), !1
},
_mouseUp: function(event) {
return $("div.ui-draggable-iframeFix").each(function() {
this.parentNode.removeChild(this)
}), $.ui.ddmanager && $.ui.ddmanager.dragStop(this, event), this.element.focus(), $.ui.mouse.prototype._mouseUp.call(this, event)
},
cancel: function() {
return this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear(), this
},
_getHandle: function(event) {
return this.options.handle ? !! $(event.target).closest(this.element.find(this.options.handle)).length : !0
},
_setHandleClassName: function() {
this.handleElement = this.options.handle ? this.element.find(this.options.handle) : this.element, this.handleElement.addClass("ui-draggable-handle")
},
_removeHandleClassName: function() {
this.handleElement.removeClass("ui-draggable-handle")
},
_createHelper: function(event) {
var o = this.options,
helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event])) : "clone" === o.helper ? this.element.clone().removeAttr("id") : this.element;
return helper.parents("body").length || helper.appendTo("parent" === o.appendTo ? this.element[0].parentNode : o.appendTo), helper[0] === this.element[0] || /(fixed|absolute)/.test(helper.css("position")) || helper.css("position", "absolute"), helper
},
_adjustOffsetFromHelper: function(obj) {
"string" == typeof obj && (obj = obj.split(" ")), $.isArray(obj) && (obj = {
left: +obj[0],
top: +obj[1] || 0
}), "left" in obj && (this.offset.click.left = obj.left + this.margins.left), "right" in obj && (this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left), "top" in obj && (this.offset.click.top = obj.top + this.margins.top), "bottom" in obj && (this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top)
},
_isRootNode: function(element) {
return /(html|body)/i.test(element.tagName) || element === this.document[0]
},
_getParentOffset: function() {
var po = this.offsetParent.offset(),
document = this.document[0];
return "absolute" === this.cssPosition && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0]) && (po.left += this.scrollParent.scrollLeft(), po.top += this.scrollParent.scrollTop()), this._isRootNode(this.offsetParent[0]) && (po = {
top: 0,
left: 0
}), {
top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
}
},
_getRelativeOffset: function() {
if ("relative" !== this.cssPosition) return {
top: 0,
left: 0
};
var p = this.element.position(),
scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
return {
top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + (scrollIsRootNode ? 0 : this.scrollParent.scrollTop()),
left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + (scrollIsRootNode ? 0 : this.scrollParent.scrollLeft())
}
},
_cacheMargins: function() {
this.margins = {
left: parseInt(this.element.css("marginLeft"), 10) || 0,
top: parseInt(this.element.css("marginTop"), 10) || 0,
right: parseInt(this.element.css("marginRight"), 10) || 0,
bottom: parseInt(this.element.css("marginBottom"), 10) || 0
}
},
_cacheHelperProportions: function() {
this.helperProportions = {
width: this.helper.outerWidth(),
height: this.helper.outerHeight()
}
},
_setContainment: function() {
var over, c, ce, o = this.options,
document = this.document[0];
return this.relativeContainer = null, o.containment ? "window" === o.containment ? void(this.containment = [$(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, $(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, $(window).scrollLeft() + $(window).width() - this.helperProportions.width - this.margins.left, $(window).scrollTop() + ($(window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]) : "document" === o.containment ? void(this.containment = [0, 0, $(document).width() - this.helperProportions.width - this.margins.left, ($(document).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]) : o.containment.constructor === Array ? void(this.containment = o.containment) : ("parent" === o.containment && (o.containment = this.helper[0].parentNode), c = $(o.containment), ce = c[0], void(ce && (over = "hidden" !== c.css("overflow"), this.containment = [(parseInt(c.css("borderLeftWidth"), 10) || 0) + (parseInt(c.css("paddingLeft"), 10) || 0), (parseInt(c.css("borderTopWidth"), 10) || 0) + (parseInt(c.css("paddingTop"), 10) || 0), (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt(c.css("borderRightWidth"), 10) || 0) - (parseInt(c.css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt(c.css("borderBottomWidth"), 10) || 0) - (parseInt(c.css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relativeContainer = c))) : void(this.containment = null)
},
_convertPositionTo: function(d, pos) {
pos || (pos = this.position);
var mod = "absolute" === d ? 1 : -1,
scrollIsRootNode = this._isRootNode(this.scrollParent[0]);
return {
top: pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ("fixed" === this.cssPosition ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top) * mod,
left: pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ("fixed" === this.cssPosition ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left) * mod
}
},
_generatePosition: function(event, constrainPosition) {
var containment, co, top, left, o = this.options,
scrollIsRootNode = this._isRootNode(this.scrollParent[0]),
pageX = event.pageX,
pageY = event.pageY;
return scrollIsRootNode && this.offset.scroll || (this.offset.scroll = {
top: this.scrollParent.scrollTop(),
left: this.scrollParent.scrollLeft()
}), constrainPosition && (this.containment && (this.relativeContainer ? (co = this.relativeContainer.offset(), containment = [this.containment[0] + co.left, this.containment[1] + co.top, this.containment[2] + co.left, this.containment[3] + co.top]) : containment = this.containment, event.pageX - this.offset.click.left < containment[0] && (pageX = containment[0] + this.offset.click.left), event.pageY - this.offset.click.top < containment[1] && (pageY = containment[1] + this.offset.click.top), event.pageX - this.offset.click.left > containment[2] && (pageX = containment[2] + this.offset.click.left), event.pageY - this.offset.click.top > containment[3] && (pageY = containment[3] + this.offset.click.top)), o.grid && (top = o.grid[1] ? this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY, pageY = containment ? top - this.offset.click.top >= containment[1] || top - this.offset.click.top > containment[3] ? top : top - this.offset.click.top >= containment[1] ? top - o.grid[1] : top + o.grid[1] : top, left = o.grid[0] ? this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX, pageX = containment ? left - this.offset.click.left >= containment[0] || left - this.offset.click.left > containment[2] ? left : left - this.offset.click.left >= containment[0] ? left - o.grid[0] : left + o.grid[0] : left), "y" === o.axis && (pageX = this.originalPageX), "x" === o.axis && (pageY = this.originalPageY)), {
top: pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.offset.scroll.top : scrollIsRootNode ? 0 : this.offset.scroll.top),
left: pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.offset.scroll.left : scrollIsRootNode ? 0 : this.offset.scroll.left)
}
},
_clear: function() {
this.helper.removeClass("ui-draggable-dragging"), this.helper[0] === this.element[0] || this.cancelHelperRemoval || this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1, this.destroyOnClear && this.destroy()
},
_trigger: function(type, event, ui) {
return ui = ui || this._uiHash(), $.ui.plugin.call(this, type, [event, ui, this], !0), "drag" === type && (this.positionAbs = this._convertPositionTo("absolute")), $.Widget.prototype._trigger.call(this, type, event, ui)
},
plugins: {},
_uiHash: function() {
return {
helper: this.helper,
position: this.position,
originalPosition: this.originalPosition,
offset: this.positionAbs
}
}
}), $.ui.plugin.add("draggable", "connectToSortable", {
start: function(event, ui, inst) {
var o = inst.options,
uiSortable = $.extend({}, ui, {
item: inst.element
});
inst.sortables = [], $(o.connectToSortable).each(function() {
var sortable = $(this).sortable("instance");
sortable && !sortable.options.disabled && (inst.sortables.push({
instance: sortable,
shouldRevert: sortable.options.revert
}), sortable.refreshPositions(), sortable._trigger("activate", event, uiSortable))
})
},
stop: function(event, ui, inst) {
var uiSortable = $.extend({}, ui, {
item: inst.element
});
$.each(inst.sortables, function() {
this.instance.isOver ? (this.instance.isOver = 0, inst.cancelHelperRemoval = !0, this.instance.cancelHelperRemoval = !1, this.shouldRevert && (this.instance.options.revert = this.shouldRevert), this.instance._mouseStop(event), this.instance.options.helper = this.instance.options._helper, "original" === inst.options.helper && this.instance.currentItem.css({
top: "auto",
left: "auto"
})) : (this.instance.cancelHelperRemoval = !1, this.instance._trigger("deactivate", event, uiSortable))
})
},
drag: function(event, ui, inst) {
var that = this;
$.each(inst.sortables, function() {
var innermostIntersecting = !1,
thisSortable = this;
this.instance.positionAbs = inst.positionAbs, this.instance.helperProportions = inst.helperProportions, this.instance.offset.click = inst.offset.click, this.instance._intersectsWith(this.instance.containerCache) && (innermostIntersecting = !0, $.each(inst.sortables, function() {
return this.instance.positionAbs = inst.positionAbs, this.instance.helperProportions = inst.helperProportions, this.instance.offset.click = inst.offset.click, this !== thisSortable && this.instance._intersectsWith(this.instance.containerCache) && $.contains(thisSortable.instance.element[0], this.instance.element[0]) && (innermostIntersecting = !1), innermostIntersecting
})), innermostIntersecting ? (this.instance.isOver || (this.instance.isOver = 1, this.instance.currentItem = $(that).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", !0), this.instance.options._helper = this.instance.options.helper, this.instance.options.helper = function() {
return ui.helper[0]
}, event.target = this.instance.currentItem[0], this.instance._mouseCapture(event, !0), this.instance._mouseStart(event, !0, !0), this.instance.offset.click.top = inst.offset.click.top, this.instance.offset.click.left = inst.offset.click.left, this.instance.offset.parent.left -= inst.offset.parent.left - this.instance.offset.parent.left, this.instance.offset.parent.top -= inst.offset.parent.top - this.instance.offset.parent.top, inst._trigger("toSortable", event), inst.dropped = this.instance.element, inst.currentItem = inst.element, this.instance.fromOutside = inst), this.instance.currentItem && this.instance._mouseDrag(event)) : this.instance.isOver && (this.instance.isOver = 0, this.instance.cancelHelperRemoval = !0, this.instance.options.revert = !1, this.instance._trigger("out", event, this.instance._uiHash(this.instance)), this.instance._mouseStop(event, !0), this.instance.options.helper = this.instance.options._helper, this.instance.currentItem.remove(), this.instance.placeholder && this.instance.placeholder.remove(), inst._trigger("fromSortable", event), inst.dropped = !1)
})
}
}), $.ui.plugin.add("draggable", "cursor", {
start: function(event, ui, instance) {
var t = $("body"),
o = instance.options;
t.css("cursor") && (o._cursor = t.css("cursor")), t.css("cursor", o.cursor)
},
stop: function(event, ui, instance) {
var o = instance.options;
o._cursor && $("body").css("cursor", o._cursor)
}
}), $.ui.plugin.add("draggable", "opacity", {
start: function(event, ui, instance) {
var t = $(ui.helper),
o = instance.options;
t.css("opacity") && (o._opacity = t.css("opacity")), t.css("opacity", o.opacity)
},
stop: function(event, ui, instance) {
var o = instance.options;
o._opacity && $(ui.helper).css("opacity", o._opacity)
}
}), $.ui.plugin.add("draggable", "scroll", {
start: function(event, ui, i) {
i.scrollParentNotHidden || (i.scrollParentNotHidden = i.helper.scrollParent(!1)), i.scrollParentNotHidden[0] !== i.document[0] && "HTML" !== i.scrollParentNotHidden[0].tagName && (i.overflowOffset = i.scrollParentNotHidden.offset())
},
drag: function(event, ui, i) {
var o = i.options,
scrolled = !1,
scrollParent = i.scrollParentNotHidden[0],
document = i.document[0];
scrollParent !== document && "HTML" !== scrollParent.tagName ? (o.axis && "x" === o.axis || (i.overflowOffset.top + scrollParent.offsetHeight - event.pageY < o.scrollSensitivity ? scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed : event.pageY - i.overflowOffset.top < o.scrollSensitivity && (scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed)), o.axis && "y" === o.axis || (i.overflowOffset.left + scrollParent.offsetWidth - event.pageX < o.scrollSensitivity ? scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed : event.pageX - i.overflowOffset.left < o.scrollSensitivity && (scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed))) : (o.axis && "x" === o.axis || (event.pageY - $(document).scrollTop() < o.scrollSensitivity ? scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed) : $(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity && (scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed))), o.axis && "y" === o.axis || (event.pageX - $(document).scrollLeft() < o.scrollSensitivity ? scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed) : $(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity && (scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed)))), scrolled !== !1 && $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(i, event)
}
}), $.ui.plugin.add("draggable", "snap", {
start: function(event, ui, i) {
var o = i.options;
i.snapElements = [], $(o.snap.constructor !== String ? o.snap.items || ":data(ui-draggable)" : o.snap).each(function() {
var $t = $(this),
$o = $t.offset();
this !== i.element[0] && i.snapElements.push({
item: this,
width: $t.outerWidth(),
height: $t.outerHeight(),
top: $o.top,
left: $o.left
})
})
},
drag: function(event, ui, inst) {
var ts, bs, ls, rs, l, r, t, b, i, first, o = inst.options,
d = o.snapTolerance,
x1 = ui.offset.left,
x2 = x1 + inst.helperProportions.width,
y1 = ui.offset.top,
y2 = y1 + inst.helperProportions.height;
for (i = inst.snapElements.length - 1; i >= 0; i--) l = inst.snapElements[i].left, r = l + inst.snapElements[i].width, t = inst.snapElements[i].top, b = t + inst.snapElements[i].height, l - d > x2 || x1 > r + d || t - d > y2 || y1 > b + d || !$.contains(inst.snapElements[i].item.ownerDocument, inst.snapElements[i].item) ? (inst.snapElements[i].snapping && inst.options.snap.release && inst.options.snap.release.call(inst.element, event, $.extend(inst._uiHash(), {
snapItem: inst.snapElements[i].item
})), inst.snapElements[i].snapping = !1) : ("inner" !== o.snapMode && (ts = Math.abs(t - y2) <= d, bs = Math.abs(b - y1) <= d, ls = Math.abs(l - x2) <= d, rs = Math.abs(r - x1) <= d, ts && (ui.position.top = inst._convertPositionTo("relative", {
top: t - inst.helperProportions.height,
left: 0
}).top - inst.margins.top), bs && (ui.position.top = inst._convertPositionTo("relative", {
top: b,
left: 0
}).top - inst.margins.top), ls && (ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: l - inst.helperProportions.width
}).left - inst.margins.left), rs && (ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: r
}).left - inst.margins.left)), first = ts || bs || ls || rs, "outer" !== o.snapMode && (ts = Math.abs(t - y1) <= d, bs = Math.abs(b - y2) <= d, ls = Math.abs(l - x1) <= d, rs = Math.abs(r - x2) <= d, ts && (ui.position.top = inst._convertPositionTo("relative", {
top: t,
left: 0
}).top - inst.margins.top), bs && (ui.position.top = inst._convertPositionTo("relative", {
top: b - inst.helperProportions.height,
left: 0
}).top - inst.margins.top), ls && (ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: l
}).left - inst.margins.left), rs && (ui.position.left = inst._convertPositionTo("relative", {
top: 0,
left: r - inst.helperProportions.width
}).left - inst.margins.left)), !inst.snapElements[i].snapping && (ts || bs || ls || rs || first) && inst.options.snap.snap && inst.options.snap.snap.call(inst.element, event, $.extend(inst._uiHash(), {
snapItem: inst.snapElements[i].item
})), inst.snapElements[i].snapping = ts || bs || ls || rs || first)
}
}), $.ui.plugin.add("draggable", "stack", {
start: function(event, ui, instance) {
var min, o = instance.options,
group = $.makeArray($(o.stack)).sort(function(a, b) {
return (parseInt($(a).css("zIndex"), 10) || 0) - (parseInt($(b).css("zIndex"), 10) || 0)
});
group.length && (min = parseInt($(group[0]).css("zIndex"), 10) || 0, $(group).each(function(i) {
$(this).css("zIndex", min + i)
}), this.css("zIndex", min + group.length))
}
}), $.ui.plugin.add("draggable", "zIndex", {
start: function(event, ui, instance) {
var t = $(ui.helper),
o = instance.options;
t.css("zIndex") && (o._zIndex = t.css("zIndex")), t.css("zIndex", o.zIndex)
},
stop: function(event, ui, instance) {
var o = instance.options;
o._zIndex && $(ui.helper).css("zIndex", o._zIndex)
}
});
$.ui.draggable;
$.widget("ui.resizable", $.ui.mouse, {
version: "1.11.1",
widgetEventPrefix: "resize",
options: {
alsoResize: !1,
animate: !1,
animateDuration: "slow",
animateEasing: "swing",
aspectRatio: !1,
autoHide: !1,
containment: !1,
ghost: !1,
grid: !1,
handles: "e,s,se",
helper: !1,
maxHeight: null,
maxWidth: null,
minHeight: 10,
minWidth: 10,
zIndex: 90,
resize: null,
start: null,
stop: null
},
_num: function(value) {
return parseInt(value, 10) || 0
},
_isNumber: function(value) {
return !isNaN(parseInt(value, 10))
},
_hasScroll: function(el, a) {
if ("hidden" === $(el).css("overflow")) return !1;
var scroll = a && "left" === a ? "scrollLeft" : "scrollTop",
has = !1;
return el[scroll] > 0 ? !0 : (el[scroll] = 1, has = el[scroll] > 0, el[scroll] = 0, has)
},
_create: function() {
var n, i, handle, axis, hname, that = this,
o = this.options;
if (this.element.addClass("ui-resizable"), $.extend(this, {
_aspectRatio: !! o.aspectRatio,
aspectRatio: o.aspectRatio,
originalElement: this.element,
_proportionallyResizeElements: [],
_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
}), this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i) && (this.element.wrap($("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({
position: this.element.css("position"),
width: this.element.outerWidth(),
height: this.element.outerHeight(),
top: this.element.css("top"),
left: this.element.css("left")
})), this.element = this.element.parent().data("ui-resizable", this.element.resizable("instance")), this.elementIsWrapper = !0, this.element.css({
marginLeft: this.originalElement.css("marginLeft"),
marginTop: this.originalElement.css("marginTop"),
marginRight: this.originalElement.css("marginRight"),
marginBottom: this.originalElement.css("marginBottom")
}), this.originalElement.css({
marginLeft: 0,
marginTop: 0,
marginRight: 0,
marginBottom: 0
}), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({
position: "static",
zoom: 1,
display: "block"
})), this.originalElement.css({
margin: this.originalElement.css("margin")
}), this._proportionallyResize()), this.handles = o.handles || ($(".ui-resizable-handle", this.element).length ? {
n: ".ui-resizable-n",
e: ".ui-resizable-e",
s: ".ui-resizable-s",
w: ".ui-resizable-w",
se: ".ui-resizable-se",
sw: ".ui-resizable-sw",
ne: ".ui-resizable-ne",
nw: ".ui-resizable-nw"
} : "e,s,se"), this.handles.constructor === String)
for ("all" === this.handles && (this.handles = "n,e,s,w,se,sw,ne,nw"), n = this.handles.split(","), this.handles = {}, i = 0; i < n.length; i++) handle = $.trim(n[i]), hname = "ui-resizable-" + handle, axis = $("<div class='ui-resizable-handle " + hname + "'></div>"), axis.css({
zIndex: o.zIndex
}), "se" === handle && axis.addClass("ui-icon ui-icon-gripsmall-diagonal-se"), this.handles[handle] = ".ui-resizable-" + handle, this.element.append(axis);
this._renderAxis = function(target) {
var i, axis, padPos, padWrapper;
target = target || this.element;
for (i in this.handles) this.handles[i].constructor === String && (this.handles[i] = this.element.children(this.handles[i]).first().show()), this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i) && (axis = $(this.handles[i], this.element), padWrapper = /sw|ne|nw|se|n|s/.test(i) ? axis.outerHeight() : axis.outerWidth(), padPos = ["padding", /ne|nw|n/.test(i) ? "Top" : /se|sw|s/.test(i) ? "Bottom" : /^e$/.test(i) ? "Right" : "Left"].join(""), target.css(padPos, padWrapper), this._proportionallyResize()), $(this.handles[i]).length
}, this._renderAxis(this.element), this._handles = $(".ui-resizable-handle", this.element).disableSelection(), this._handles.mouseover(function() {
that.resizing || (this.className && (axis = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), that.axis = axis && axis[1] ? axis[1] : "se")
}), o.autoHide && (this._handles.hide(), $(this.element).addClass("ui-resizable-autohide").mouseenter(function() {
o.disabled || ($(this).removeClass("ui-resizable-autohide"), that._handles.show())
}).mouseleave(function() {
o.disabled || that.resizing || ($(this).addClass("ui-resizable-autohide"), that._handles.hide())
})), this._mouseInit()
},
_destroy: function() {
this._mouseDestroy();
var wrapper, _destroy = function(exp) {
$(exp).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()
};
return this.elementIsWrapper && (_destroy(this.element), wrapper = this.element, this.originalElement.css({
position: wrapper.css("position"),
width: wrapper.outerWidth(),
height: wrapper.outerHeight(),
top: wrapper.css("top"),
left: wrapper.css("left")
}).insertAfter(wrapper), wrapper.remove()), this.originalElement.css("resize", this.originalResizeStyle), _destroy(this.originalElement), this
},
_mouseCapture: function(event) {
var i, handle, capture = !1;
for (i in this.handles) handle = $(this.handles[i])[0], (handle === event.target || $.contains(handle, event.target)) && (capture = !0);
return !this.options.disabled && capture
},
_mouseStart: function(event) {
var curleft, curtop, cursor, o = this.options,
el = this.element;
return this.resizing = !0, this._renderProxy(), curleft = this._num(this.helper.css("left")), curtop = this._num(this.helper.css("top")), o.containment && (curleft += $(o.containment).scrollLeft() || 0, curtop += $(o.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = {
left: curleft,
top: curtop
}, this.size = this._helper ? {
width: this.helper.width(),
height: this.helper.height()
} : {
width: el.width(),
height: el.height()
}, this.originalSize = this._helper ? {
width: el.outerWidth(),
height: el.outerHeight()
} : {
width: el.width(),
height: el.height()
}, this.sizeDiff = {
width: el.outerWidth() - el.width(),
height: el.outerHeight() - el.height()
}, this.originalPosition = {
left: curleft,
top: curtop
}, this.originalMousePosition = {
left: event.pageX,
top: event.pageY
}, this.aspectRatio = "number" == typeof o.aspectRatio ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1, cursor = $(".ui-resizable-" + this.axis).css("cursor"), $("body").css("cursor", "auto" === cursor ? this.axis + "-resize" : cursor), el.addClass("ui-resizable-resizing"), this._propagate("start", event), !0
},
_mouseDrag: function(event) {
var data, props, smp = this.originalMousePosition,
a = this.axis,
dx = event.pageX - smp.left || 0,
dy = event.pageY - smp.top || 0,
trigger = this._change[a];
return this._updatePrevProperties(), trigger ? (data = trigger.apply(this, [event, dx, dy]), this._updateVirtualBoundaries(event.shiftKey), (this._aspectRatio || event.shiftKey) && (data = this._updateRatio(data, event)), data = this._respectSize(data, event), this._updateCache(data), this._propagate("resize", event), props = this._applyChanges(), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), $.isEmptyObject(props) || (this._updatePrevProperties(), this._trigger("resize", event, this.ui()), this._applyChanges()), !1) : !1
},
_mouseStop: function(event) {
this.resizing = !1;
var pr, ista, soffseth, soffsetw, s, left, top, o = this.options,
that = this;
return this._helper && (pr = this._proportionallyResizeElements, ista = pr.length && /textarea/i.test(pr[0].nodeName), soffseth = ista && this._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height, soffsetw = ista ? 0 : that.sizeDiff.width, s = {
width: that.helper.width() - soffsetw,
height: that.helper.height() - soffseth
}, left = parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left) || null, top = parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top) || null, o.animate || this.element.css($.extend(s, {
top: top,
left: left
})), that.helper.height(that.size.height), that.helper.width(that.size.width), this._helper && !o.animate && this._proportionallyResize()), $("body").css("cursor", "auto"), this.element.removeClass("ui-resizable-resizing"), this._propagate("stop", event), this._helper && this.helper.remove(), !1
},
_updatePrevProperties: function() {
this.prevPosition = {
top: this.position.top,
left: this.position.left
}, this.prevSize = {
width: this.size.width,
height: this.size.height
}
},
_applyChanges: function() {
var props = {};
return this.position.top !== this.prevPosition.top && (props.top = this.position.top + "px"), this.position.left !== this.prevPosition.left && (props.left = this.position.left + "px"), this.size.width !== this.prevSize.width && (props.width = this.size.width + "px"), this.size.height !== this.prevSize.height && (props.height = this.size.height + "px"), this.helper.css(props), props
},
_updateVirtualBoundaries: function(forceAspectRatio) {
var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b, o = this.options;
b = {
minWidth: this._isNumber(o.minWidth) ? o.minWidth : 0,
maxWidth: this._isNumber(o.maxWidth) ? o.maxWidth : 1 / 0,
minHeight: this._isNumber(o.minHeight) ? o.minHeight : 0,
maxHeight: this._isNumber(o.maxHeight) ? o.maxHeight : 1 / 0
}, (this._aspectRatio || forceAspectRatio) && (pMinWidth = b.minHeight * this.aspectRatio, pMinHeight = b.minWidth / this.aspectRatio, pMaxWidth = b.maxHeight * this.aspectRatio, pMaxHeight = b.maxWidth / this.aspectRatio, pMinWidth > b.minWidth && (b.minWidth = pMinWidth), pMinHeight > b.minHeight && (b.minHeight = pMinHeight), pMaxWidth < b.maxWidth && (b.maxWidth = pMaxWidth), pMaxHeight < b.maxHeight && (b.maxHeight = pMaxHeight)), this._vBoundaries = b
},
_updateCache: function(data) {
this.offset = this.helper.offset(), this._isNumber(data.left) && (this.position.left = data.left), this._isNumber(data.top) && (this.position.top = data.top), this._isNumber(data.height) && (this.size.height = data.height), this._isNumber(data.width) && (this.size.width = data.width)
},
_updateRatio: function(data) {
var cpos = this.position,
csize = this.size,
a = this.axis;
return this._isNumber(data.height) ? data.width = data.height * this.aspectRatio : this._isNumber(data.width) && (data.height = data.width / this.aspectRatio), "sw" === a && (data.left = cpos.left + (csize.width - data.width), data.top = null), "nw" === a && (data.top = cpos.top + (csize.height - data.height), data.left = cpos.left + (csize.width - data.width)), data
},
_respectSize: function(data) {
var o = this._vBoundaries,
a = this.axis,
ismaxw = this._isNumber(data.width) && o.maxWidth && o.maxWidth < data.width,
ismaxh = this._isNumber(data.height) && o.maxHeight && o.maxHeight < data.height,
isminw = this._isNumber(data.width) && o.minWidth && o.minWidth > data.width,
isminh = this._isNumber(data.height) && o.minHeight && o.minHeight > data.height,
dw = this.originalPosition.left + this.originalSize.width,
dh = this.position.top + this.size.height,
cw = /sw|nw|w/.test(a),
ch = /nw|ne|n/.test(a);
return isminw && (data.width = o.minWidth), isminh && (data.height = o.minHeight), ismaxw && (data.width = o.maxWidth), ismaxh && (data.height = o.maxHeight), isminw && cw && (data.left = dw - o.minWidth), ismaxw && cw && (data.left = dw - o.maxWidth), isminh && ch && (data.top = dh - o.minHeight), ismaxh && ch && (data.top = dh - o.maxHeight), data.width || data.height || data.left || !data.top ? data.width || data.height || data.top || !data.left || (data.left = null) : data.top = null, data
},
_getPaddingPlusBorderDimensions: function(element) {
for (var i = 0, widths = [], borders = [element.css("borderTopWidth"), element.css("borderRightWidth"), element.css("borderBottomWidth"), element.css("borderLeftWidth")], paddings = [element.css("paddingTop"), element.css("paddingRight"), element.css("paddingBottom"), element.css("paddingLeft")]; 4 > i; i++) widths[i] = parseInt(borders[i], 10) || 0, widths[i] += parseInt(paddings[i], 10) || 0;
return {
height: widths[0] + widths[2],
width: widths[1] + widths[3]
}
},
_proportionallyResize: function() {
if (this._proportionallyResizeElements.length)
for (var prel, i = 0, element = this.helper || this.element; i < this._proportionallyResizeElements.length; i++) prel = this._proportionallyResizeElements[i], this.outerDimensions || (this.outerDimensions = this._getPaddingPlusBorderDimensions(prel)), prel.css({
height: element.height() - this.outerDimensions.height || 0,
width: element.width() - this.outerDimensions.width || 0
})
},
_renderProxy: function() {
var el = this.element,
o = this.options;
this.elementOffset = el.offset(), this._helper ? (this.helper = this.helper || $("<div style='overflow:hidden;'></div>"), this.helper.addClass(this._helper).css({
width: this.element.outerWidth() - 1,
height: this.element.outerHeight() - 1,
position: "absolute",
left: this.elementOffset.left + "px",
top: this.elementOffset.top + "px",
zIndex: ++o.zIndex
}), this.helper.appendTo("body").disableSelection()) : this.helper = this.element
},
_change: {
e: function(event, dx) {
return {
width: this.originalSize.width + dx
}
},
w: function(event, dx) {
var cs = this.originalSize,
sp = this.originalPosition;
return {
left: sp.left + dx,
width: cs.width - dx
}
},
n: function(event, dx, dy) {
var cs = this.originalSize,
sp = this.originalPosition;
return {
top: sp.top + dy,
height: cs.height - dy
}
},
s: function(event, dx, dy) {
return {
height: this.originalSize.height + dy
}
},
se: function(event, dx, dy) {
return $.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]))
},
sw: function(event, dx, dy) {
return $.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]))
},
ne: function(event, dx, dy) {
return $.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [event, dx, dy]))
},
nw: function(event, dx, dy) {
return $.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [event, dx, dy]))
}
},
_propagate: function(n, event) {
$.ui.plugin.call(this, n, [event, this.ui()]), "resize" !== n && this._trigger(n, event, this.ui())
},
plugins: {},
ui: function() {
return {
originalElement: this.originalElement,
element: this.element,
helper: this.helper,
position: this.position,
size: this.size,
originalSize: this.originalSize,
originalPosition: this.originalPosition
}
}
}), $.ui.plugin.add("resizable", "animate", {
stop: function(event) {
var that = $(this).resizable("instance"),
o = that.options,
pr = that._proportionallyResizeElements,
ista = pr.length && /textarea/i.test(pr[0].nodeName),
soffseth = ista && that._hasScroll(pr[0], "left") ? 0 : that.sizeDiff.height,
soffsetw = ista ? 0 : that.sizeDiff.width,
style = {
width: that.size.width - soffsetw,
height: that.size.height - soffseth
}, left = parseInt(that.element.css("left"), 10) + (that.position.left - that.originalPosition.left) || null,
top = parseInt(that.element.css("top"), 10) + (that.position.top - that.originalPosition.top) || null;
that.element.animate($.extend(style, top && left ? {
top: top,
left: left
} : {}), {
duration: o.animateDuration,
easing: o.animateEasing,
step: function() {
var data = {
width: parseInt(that.element.css("width"), 10),
height: parseInt(that.element.css("height"), 10),
top: parseInt(that.element.css("top"), 10),
left: parseInt(that.element.css("left"), 10)
};
pr && pr.length && $(pr[0]).css({
width: data.width,
height: data.height
}), that._updateCache(data), that._propagate("resize", event)
}
})
}
}), $.ui.plugin.add("resizable", "containment", {
start: function() {
var element, p, co, ch, cw, width, height, that = $(this).resizable("instance"),
o = that.options,
el = that.element,
oc = o.containment,
ce = oc instanceof $ ? oc.get(0) : /parent/.test(oc) ? el.parent().get(0) : oc;
ce && (that.containerElement = $(ce), /document/.test(oc) || oc === document ? (that.containerOffset = {
left: 0,
top: 0
}, that.containerPosition = {
left: 0,
top: 0
}, that.parentData = {
element: $(document),
left: 0,
top: 0,
width: $(document).width(),
height: $(document).height() || document.body.parentNode.scrollHeight
}) : (element = $(ce), p = [], $(["Top", "Right", "Left", "Bottom"]).each(function(i, name) {
p[i] = that._num(element.css("padding" + name))
}), that.containerOffset = element.offset(), that.containerPosition = element.position(), that.containerSize = {
height: element.innerHeight() - p[3],
width: element.innerWidth() - p[1]
}, co = that.containerOffset, ch = that.containerSize.height, cw = that.containerSize.width, width = that._hasScroll(ce, "left") ? ce.scrollWidth : cw, height = that._hasScroll(ce) ? ce.scrollHeight : ch, that.parentData = {
element: ce,
left: co.left,
top: co.top,
width: width,
height: height
}))
},
resize: function(event) {
var woset, hoset, isParent, isOffsetRelative, that = $(this).resizable("instance"),
o = that.options,
co = that.containerOffset,
cp = that.position,
pRatio = that._aspectRatio || event.shiftKey,
cop = {
top: 0,
left: 0
}, ce = that.containerElement,
continueResize = !0;
ce[0] !== document && /static/.test(ce.css("position")) && (cop = co), cp.left < (that._helper ? co.left : 0) && (that.size.width = that.size.width + (that._helper ? that.position.left - co.left : that.position.left - cop.left), pRatio && (that.size.height = that.size.width / that.aspectRatio, continueResize = !1), that.position.left = o.helper ? co.left : 0), cp.top < (that._helper ? co.top : 0) && (that.size.height = that.size.height + (that._helper ? that.position.top - co.top : that.position.top), pRatio && (that.size.width = that.size.height * that.aspectRatio, continueResize = !1), that.position.top = that._helper ? co.top : 0), isParent = that.containerElement.get(0) === that.element.parent().get(0), isOffsetRelative = /relative|absolute/.test(that.containerElement.css("position")), isParent && isOffsetRelative ? (that.offset.left = that.parentData.left + that.position.left, that.offset.top = that.parentData.top + that.position.top) : (that.offset.left = that.element.offset().left, that.offset.top = that.element.offset().top), woset = Math.abs(that.sizeDiff.width + (that._helper ? that.offset.left - cop.left : that.offset.left - co.left)), hoset = Math.abs(that.sizeDiff.height + (that._helper ? that.offset.top - cop.top : that.offset.top - co.top)), woset + that.size.width >= that.parentData.width && (that.size.width = that.parentData.width - woset, pRatio && (that.size.height = that.size.width / that.aspectRatio, continueResize = !1)), hoset + that.size.height >= that.parentData.height && (that.size.height = that.parentData.height - hoset, pRatio && (that.size.width = that.size.height * that.aspectRatio, continueResize = !1)), continueResize || (that.position.left = that.prevPosition.left, that.position.top = that.prevPosition.top, that.size.width = that.prevSize.width, that.size.height = that.prevSize.height)
},
stop: function() {
var that = $(this).resizable("instance"),
o = that.options,
co = that.containerOffset,
cop = that.containerPosition,
ce = that.containerElement,
helper = $(that.helper),
ho = helper.offset(),
w = helper.outerWidth() - that.sizeDiff.width,
h = helper.outerHeight() - that.sizeDiff.height;
that._helper && !o.animate && /relative/.test(ce.css("position")) && $(this).css({
left: ho.left - cop.left - co.left,
width: w,
height: h
}), that._helper && !o.animate && /static/.test(ce.css("position")) && $(this).css({
left: ho.left - cop.left - co.left,
width: w,
height: h
})
}
}), $.ui.plugin.add("resizable", "alsoResize", {
start: function() {
var that = $(this).resizable("instance"),
o = that.options,
_store = function(exp) {
$(exp).each(function() {
var el = $(this);
el.data("ui-resizable-alsoresize", {
width: parseInt(el.width(), 10),
height: parseInt(el.height(), 10),
left: parseInt(el.css("left"), 10),
top: parseInt(el.css("top"), 10)
})
})
};
"object" != typeof o.alsoResize || o.alsoResize.parentNode ? _store(o.alsoResize) : o.alsoResize.length ? (o.alsoResize = o.alsoResize[0], _store(o.alsoResize)) : $.each(o.alsoResize, function(exp) {
_store(exp)
})
},
resize: function(event, ui) {
var that = $(this).resizable("instance"),
o = that.options,
os = that.originalSize,
op = that.originalPosition,
delta = {
height: that.size.height - os.height || 0,
width: that.size.width - os.width || 0,
top: that.position.top - op.top || 0,
left: that.position.left - op.left || 0
}, _alsoResize = function(exp, c) {
$(exp).each(function() {
var el = $(this),
start = $(this).data("ui-resizable-alsoresize"),
style = {}, css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"];
$.each(css, function(i, prop) {
var sum = (start[prop] || 0) + (delta[prop] || 0);
sum && sum >= 0 && (style[prop] = sum || null)
}), el.css(style)
})
};
"object" != typeof o.alsoResize || o.alsoResize.nodeType ? _alsoResize(o.alsoResize) : $.each(o.alsoResize, function(exp, c) {
_alsoResize(exp, c)
})
},
stop: function() {
$(this).removeData("resizable-alsoresize")
}
}), $.ui.plugin.add("resizable", "ghost", {
start: function() {
var that = $(this).resizable("instance"),
o = that.options,
cs = that.size;
that.ghost = that.originalElement.clone(), that.ghost.css({
opacity: .25,
display: "block",
position: "relative",
height: cs.height,
width: cs.width,
margin: 0,
left: 0,
top: 0
}).addClass("ui-resizable-ghost").addClass("string" == typeof o.ghost ? o.ghost : ""), that.ghost.appendTo(that.helper)
},
resize: function() {
var that = $(this).resizable("instance");
that.ghost && that.ghost.css({
position: "relative",
height: that.size.height,
width: that.size.width
})
},
stop: function() {
var that = $(this).resizable("instance");
that.ghost && that.helper && that.helper.get(0).removeChild(that.ghost.get(0))
}
}), $.ui.plugin.add("resizable", "grid", {
resize: function() {
var outerDimensions, that = $(this).resizable("instance"),
o = that.options,
cs = that.size,
os = that.originalSize,
op = that.originalPosition,
a = that.axis,
grid = "number" == typeof o.grid ? [o.grid, o.grid] : o.grid,
gridX = grid[0] || 1,
gridY = grid[1] || 1,
ox = Math.round((cs.width - os.width) / gridX) * gridX,
oy = Math.round((cs.height - os.height) / gridY) * gridY,
newWidth = os.width + ox,
newHeight = os.height + oy,
isMaxWidth = o.maxWidth && o.maxWidth < newWidth,
isMaxHeight = o.maxHeight && o.maxHeight < newHeight,
isMinWidth = o.minWidth && o.minWidth > newWidth,
isMinHeight = o.minHeight && o.minHeight > newHeight;
o.grid = grid, isMinWidth && (newWidth += gridX), isMinHeight && (newHeight += gridY), isMaxWidth && (newWidth -= gridX), isMaxHeight && (newHeight -= gridY), /^(se|s|e)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight) : /^(ne)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight, that.position.top = op.top - oy) : /^(sw)$/.test(a) ? (that.size.width = newWidth, that.size.height = newHeight, that.position.left = op.left - ox) : ((0 >= newHeight - gridY || 0 >= newWidth - gridX) && (outerDimensions = that._getPaddingPlusBorderDimensions(this)), newHeight - gridY > 0 ? (that.size.height = newHeight, that.position.top = op.top - oy) : (newHeight = gridY - outerDimensions.height, that.size.height = newHeight, that.position.top = op.top + os.height - newHeight), newWidth - gridX > 0 ? (that.size.width = newWidth, that.position.left = op.left - ox) : (newWidth = gridY - outerDimensions.height, that.size.width = newWidth, that.position.left = op.left + os.width - newWidth))
}
});
$.ui.resizable, $.widget("ui.dialog", {
version: "1.11.1",
options: {
appendTo: "body",
autoOpen: !0,
buttons: [],
closeOnEscape: !0,
closeText: "Close",
dialogClass: "",
draggable: !0,
hide: null,
height: "auto",
maxHeight: null,
maxWidth: null,
minHeight: 150,
minWidth: 150,
modal: !1,
position: {
my: "center",
at: "center",
of: window,
collision: "fit",
using: function(pos) {
var topOffset = $(this).css(pos).offset().top;
0 > topOffset && $(this).css("top", pos.top - topOffset)
}
},
resizable: !0,
show: null,
title: null,
width: 300,
beforeClose: null,
close: null,
drag: null,
dragStart: null,
dragStop: null,
focus: null,
open: null,
resize: null,
resizeStart: null,
resizeStop: null
},
sizeRelatedOptions: {
buttons: !0,
height: !0,
maxHeight: !0,
maxWidth: !0,
minHeight: !0,
minWidth: !0,
width: !0
},
resizableRelatedOptions: {
maxHeight: !0,
maxWidth: !0,
minHeight: !0,
minWidth: !0
},
_create: function() {
this.originalCss = {
display: this.element[0].style.display,
width: this.element[0].style.width,
minHeight: this.element[0].style.minHeight,
maxHeight: this.element[0].style.maxHeight,
height: this.element[0].style.height
}, this.originalPosition = {
parent: this.element.parent(),
index: this.element.parent().children().index(this.element)
}, this.originalTitle = this.element.attr("title"), this.options.title = this.options.title || this.originalTitle, this._createWrapper(), this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog), this._createTitlebar(), this._createButtonPane(), this.options.draggable && $.fn.draggable && this._makeDraggable(), this.options.resizable && $.fn.resizable && this._makeResizable(), this._isOpen = !1, this._trackFocus()
},
_init: function() {
this.options.autoOpen && this.open()
},
_appendTo: function() {
var element = this.options.appendTo;
return element && (element.jquery || element.nodeType) ? $(element) : this.document.find(element || "body").eq(0)
},
_destroy: function() {
var next, originalPosition = this.originalPosition;
this._destroyOverlay(), this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(), this.uiDialog.stop(!0, !0).remove(), this.originalTitle && this.element.attr("title", this.originalTitle), next = originalPosition.parent.children().eq(originalPosition.index), next.length && next[0] !== this.element[0] ? next.before(this.element) : originalPosition.parent.append(this.element)
},
widget: function() {
return this.uiDialog
},
disable: $.noop,
enable: $.noop,
close: function(event) {
var activeElement, that = this;
if (this._isOpen && this._trigger("beforeClose", event) !== !1) {
if (this._isOpen = !1, this._focusedElement = null, this._destroyOverlay(), this._untrackInstance(), !this.opener.filter(":focusable").focus().length) try {
activeElement = this.document[0].activeElement, activeElement && "body" !== activeElement.nodeName.toLowerCase() && $(activeElement).blur()
} catch (error) {}
this._hide(this.uiDialog, this.options.hide, function() {
that._trigger("close", event)
})
}
},
isOpen: function() {
return this._isOpen
},
moveToTop: function() {
this._moveToTop()
},
_moveToTop: function(event, silent) {
var moved = !1,
zIndicies = this.uiDialog.siblings(".ui-front:visible").map(function() {
return +$(this).css("z-index")
}).get(),
zIndexMax = Math.max.apply(null, zIndicies);
return zIndexMax >= +this.uiDialog.css("z-index") && (this.uiDialog.css("z-index", zIndexMax + 1), moved = !0), moved && !silent && this._trigger("focus", event), moved
},
open: function() {
var that = this;
return this._isOpen ? void(this._moveToTop() && this._focusTabbable()) : (this._isOpen = !0, this.opener = $(this.document[0].activeElement), this._size(), this._position(), this._createOverlay(), this._moveToTop(null, !0), this.overlay && this.overlay.css("z-index", this.uiDialog.css("z-index") - 1), this._show(this.uiDialog, this.options.show, function() {
that._focusTabbable(), that._trigger("focus")
}), this._makeFocusTarget(), void this._trigger("open"))
},
_focusTabbable: function() {
var hasFocus = this._focusedElement;
hasFocus || (hasFocus = this.element.find("[autofocus]")), hasFocus.length || (hasFocus = this.element.find(":tabbable")), hasFocus.length || (hasFocus = this.uiDialogButtonPane.find(":tabbable")), hasFocus.length || (hasFocus = this.uiDialogTitlebarClose.filter(":tabbable")), hasFocus.length || (hasFocus = this.uiDialog), hasFocus.eq(0).focus()
},
_keepFocus: function(event) {
function checkFocus() {
var activeElement = this.document[0].activeElement,
isActive = this.uiDialog[0] === activeElement || $.contains(this.uiDialog[0], activeElement);
isActive || this._focusTabbable()
}
event.preventDefault(), checkFocus.call(this), this._delay(checkFocus)
},
_createWrapper: function() {
this.uiDialog = $("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front " + this.options.dialogClass).hide().attr({
tabIndex: -1,
role: "dialog"
}).appendTo(this._appendTo()), this._on(this.uiDialog, {
keydown: function(event) {
if (this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode && event.keyCode === $.ui.keyCode.ESCAPE) return event.preventDefault(), void this.close(event);
if (event.keyCode === $.ui.keyCode.TAB && !event.isDefaultPrevented()) {
var tabbables = this.uiDialog.find(":tabbable"),
first = tabbables.filter(":first"),
last = tabbables.filter(":last");
event.target !== last[0] && event.target !== this.uiDialog[0] || event.shiftKey ? event.target !== first[0] && event.target !== this.uiDialog[0] || !event.shiftKey || (this._delay(function() {
last.focus()
}), event.preventDefault()) : (this._delay(function() {
first.focus()
}), event.preventDefault())
}
},
mousedown: function(event) {
this._moveToTop(event) && this._focusTabbable()
}
}), this.element.find("[aria-describedby]").length || this.uiDialog.attr({
"aria-describedby": this.element.uniqueId().attr("id")
})
},
_createTitlebar: function() {
var uiDialogTitle;
this.uiDialogTitlebar = $("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog), this._on(this.uiDialogTitlebar, {
mousedown: function(event) {
$(event.target).closest(".ui-dialog-titlebar-close") || this.uiDialog.focus()
}
}), this.uiDialogTitlebarClose = $("<button type='button'></button>").button({
label: this.options.closeText,
icons: {
primary: "ui-icon-closethick"
},
text: !1
}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar), this._on(this.uiDialogTitlebarClose, {
click: function(event) {
event.preventDefault(), this.close(event)
}
}), uiDialogTitle = $("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar), this._title(uiDialogTitle), this.uiDialog.attr({
"aria-labelledby": uiDialogTitle.attr("id")
})
},
_title: function(title) {
this.options.title || title.html(" "), title.text(this.options.title)
},
_createButtonPane: function() {
this.uiDialogButtonPane = $("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"), this.uiButtonSet = $("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane), this._createButtons()
},
_createButtons: function() {
var that = this,
buttons = this.options.buttons;
return this.uiDialogButtonPane.remove(), this.uiButtonSet.empty(), $.isEmptyObject(buttons) || $.isArray(buttons) && !buttons.length ? void this.uiDialog.removeClass("ui-dialog-buttons") : ($.each(buttons, function(name, props) {
var click, buttonOptions;
props = $.isFunction(props) ? {
click: props,
text: name
} : props, props = $.extend({
type: "button"
}, props), click = props.click, props.click = function() {
click.apply(that.element[0], arguments)
}, buttonOptions = {
icons: props.icons,
text: props.showText
}, delete props.icons, delete props.showText, $("<button></button>", props).button(buttonOptions).appendTo(that.uiButtonSet)
}), this.uiDialog.addClass("ui-dialog-buttons"), void this.uiDialogButtonPane.appendTo(this.uiDialog))
},
_makeDraggable: function() {
function filteredUi(ui) {
return {
position: ui.position,
offset: ui.offset
}
}
var that = this,
options = this.options;
this.uiDialog.draggable({
cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
handle: ".ui-dialog-titlebar",
containment: "document",
start: function(event, ui) {
$(this).addClass("ui-dialog-dragging"), that._blockFrames(), that._trigger("dragStart", event, filteredUi(ui))
},
drag: function(event, ui) {
that._trigger("drag", event, filteredUi(ui))
},
stop: function(event, ui) {
var left = ui.offset.left - that.document.scrollLeft(),
top = ui.offset.top - that.document.scrollTop();
options.position = {
my: "left top",
at: "left" + (left >= 0 ? "+" : "") + left + " top" + (top >= 0 ? "+" : "") + top,
of: that.window
}, $(this).removeClass("ui-dialog-dragging"), that._unblockFrames(), that._trigger("dragStop", event, filteredUi(ui))
}
})
},
_makeResizable: function() {
function filteredUi(ui) {
return {
originalPosition: ui.originalPosition,
originalSize: ui.originalSize,
position: ui.position,
size: ui.size
}
}
var that = this,
options = this.options,
handles = options.resizable,
position = this.uiDialog.css("position"),
resizeHandles = "string" == typeof handles ? handles : "n,e,s,w,se,sw,ne,nw";
this.uiDialog.resizable({
cancel: ".ui-dialog-content",
containment: "document",
alsoResize: this.element,
maxWidth: options.maxWidth,
maxHeight: options.maxHeight,
minWidth: options.minWidth,
minHeight: this._minHeight(),
handles: resizeHandles,
start: function(event, ui) {
$(this).addClass("ui-dialog-resizing"), that._blockFrames(), that._trigger("resizeStart", event, filteredUi(ui))
},
resize: function(event, ui) {
that._trigger("resize", event, filteredUi(ui))
},
stop: function(event, ui) {
var offset = that.uiDialog.offset(),
left = offset.left - that.document.scrollLeft(),
top = offset.top - that.document.scrollTop();
options.height = that.uiDialog.height(), options.width = that.uiDialog.width(), options.position = {
my: "left top",
at: "left" + (left >= 0 ? "+" : "") + left + " top" + (top >= 0 ? "+" : "") + top,
of: that.window
}, $(this).removeClass("ui-dialog-resizing"), that._unblockFrames(), that._trigger("resizeStop", event, filteredUi(ui))
}
}).css("position", position)
},
_trackFocus: function() {
this._on(this.widget(), {
focusin: function(event) {
this._makeFocusTarget(), this._focusedElement = $(event.target)
}
})
},
_makeFocusTarget: function() {
this._untrackInstance(), this._trackingInstances().unshift(this)
},
_untrackInstance: function() {
var instances = this._trackingInstances(),
exists = $.inArray(this, instances); - 1 !== exists && instances.splice(exists, 1)
},
_trackingInstances: function() {
var instances = this.document.data("ui-dialog-instances");
return instances || (instances = [], this.document.data("ui-dialog-instances", instances)), instances
},
_minHeight: function() {
var options = this.options;
return "auto" === options.height ? options.minHeight : Math.min(options.minHeight, options.height)
},
_position: function() {
var isVisible = this.uiDialog.is(":visible");
isVisible || this.uiDialog.show(), this.uiDialog.position(this.options.position), isVisible || this.uiDialog.hide()
},
_setOptions: function(options) {
var that = this,
resize = !1,
resizableOptions = {};
$.each(options, function(key, value) {
that._setOption(key, value), key in that.sizeRelatedOptions && (resize = !0), key in that.resizableRelatedOptions && (resizableOptions[key] = value)
}), resize && (this._size(), this._position()), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", resizableOptions)
},
_setOption: function(key, value) {
var isDraggable, isResizable, uiDialog = this.uiDialog;
"dialogClass" === key && uiDialog.removeClass(this.options.dialogClass).addClass(value), "disabled" !== key && (this._super(key, value), "appendTo" === key && this.uiDialog.appendTo(this._appendTo()), "buttons" === key && this._createButtons(), "closeText" === key && this.uiDialogTitlebarClose.button({
label: "" + value
}), "draggable" === key && (isDraggable = uiDialog.is(":data(ui-draggable)"), isDraggable && !value && uiDialog.draggable("destroy"), !isDraggable && value && this._makeDraggable()), "position" === key && this._position(), "resizable" === key && (isResizable = uiDialog.is(":data(ui-resizable)"), isResizable && !value && uiDialog.resizable("destroy"), isResizable && "string" == typeof value && uiDialog.resizable("option", "handles", value), isResizable || value === !1 || this._makeResizable()), "title" === key && this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))
},
_size: function() {
var nonContentHeight, minContentHeight, maxContentHeight, options = this.options;
this.element.show().css({
width: "auto",
minHeight: 0,
maxHeight: "none",
height: 0
}), options.minWidth > options.width && (options.width = options.minWidth), nonContentHeight = this.uiDialog.css({
height: "auto",
width: options.width
}).outerHeight(), minContentHeight = Math.max(0, options.minHeight - nonContentHeight), maxContentHeight = "number" == typeof options.maxHeight ? Math.max(0, options.maxHeight - nonContentHeight) : "none", "auto" === options.height ? this.element.css({
minHeight: minContentHeight,
maxHeight: maxContentHeight,
height: "auto"
}) : this.element.height(Math.max(0, options.height - nonContentHeight)), this.uiDialog.is(":data(ui-resizable)") && this.uiDialog.resizable("option", "minHeight", this._minHeight())
},
_blockFrames: function() {
this.iframeBlocks = this.document.find("iframe").map(function() {
var iframe = $(this);
return $("<div>").css({
position: "absolute",
width: iframe.outerWidth(),
height: iframe.outerHeight()
}).appendTo(iframe.parent()).offset(iframe.offset())[0]
})
},
_unblockFrames: function() {
this.iframeBlocks && (this.iframeBlocks.remove(), delete this.iframeBlocks)
},
_allowInteraction: function(event) {
return $(event.target).closest(".ui-dialog").length ? !0 : !! $(event.target).closest(".ui-datepicker").length
},
_createOverlay: function() {
if (this.options.modal) {
var isOpening = !0;
this._delay(function() {
isOpening = !1
}), this.document.data("ui-dialog-overlays") || this._on(this.document, {
focusin: function(event) {
isOpening || this._allowInteraction(event) || (event.preventDefault(), this._trackingInstances()[0]._focusTabbable())
}
}), this.overlay = $("<div>").addClass("ui-widget-overlay ui-front").appendTo(this._appendTo()), this._on(this.overlay, {
mousedown: "_keepFocus"
}), this.document.data("ui-dialog-overlays", (this.document.data("ui-dialog-overlays") || 0) + 1)
}
},
_destroyOverlay: function() {
if (this.options.modal && this.overlay) {
var overlays = this.document.data("ui-dialog-overlays") - 1;
overlays ? this.document.data("ui-dialog-overlays", overlays) : this.document.unbind("focusin").removeData("ui-dialog-overlays"), this.overlay.remove(), this.overlay = null
}
}
});
$.widget("ui.droppable", {
version: "1.11.1",
widgetEventPrefix: "drop",
options: {
accept: "*",
activeClass: !1,
addClasses: !0,
greedy: !1,
hoverClass: !1,
scope: "default",
tolerance: "intersect",
activate: null,
deactivate: null,
drop: null,
out: null,
over: null
},
_create: function() {
var proportions, o = this.options,
accept = o.accept;
this.isover = !1, this.isout = !0, this.accept = $.isFunction(accept) ? accept : function(d) {
return d.is(accept)
}, this.proportions = function() {
return arguments.length ? void(proportions = arguments[0]) : proportions ? proportions : proportions = {
width: this.element[0].offsetWidth,
height: this.element[0].offsetHeight
}
}, this._addToManager(o.scope), o.addClasses && this.element.addClass("ui-droppable")
},
_addToManager: function(scope) {
$.ui.ddmanager.droppables[scope] = $.ui.ddmanager.droppables[scope] || [], $.ui.ddmanager.droppables[scope].push(this)
},
_splice: function(drop) {
for (var i = 0; i < drop.length; i++) drop[i] === this && drop.splice(i, 1)
},
_destroy: function() {
var drop = $.ui.ddmanager.droppables[this.options.scope];
this._splice(drop), this.element.removeClass("ui-droppable ui-droppable-disabled")
},
_setOption: function(key, value) {
if ("accept" === key) this.accept = $.isFunction(value) ? value : function(d) {
return d.is(value)
};
else if ("scope" === key) {
var drop = $.ui.ddmanager.droppables[this.options.scope];
this._splice(drop), this._addToManager(value)
}
this._super(key, value)
},
_activate: function(event) {
var draggable = $.ui.ddmanager.current;
this.options.activeClass && this.element.addClass(this.options.activeClass), draggable && this._trigger("activate", event, this.ui(draggable))
},
_deactivate: function(event) {
var draggable = $.ui.ddmanager.current;
this.options.activeClass && this.element.removeClass(this.options.activeClass), draggable && this._trigger("deactivate", event, this.ui(draggable))
},
_over: function(event) {
var draggable = $.ui.ddmanager.current;
draggable && (draggable.currentItem || draggable.element)[0] !== this.element[0] && this.accept.call(this.element[0], draggable.currentItem || draggable.element) && (this.options.hoverClass && this.element.addClass(this.options.hoverClass), this._trigger("over", event, this.ui(draggable)))
},
_out: function(event) {
var draggable = $.ui.ddmanager.current;
draggable && (draggable.currentItem || draggable.element)[0] !== this.element[0] && this.accept.call(this.element[0], draggable.currentItem || draggable.element) && (this.options.hoverClass && this.element.removeClass(this.options.hoverClass), this._trigger("out", event, this.ui(draggable)))
},
_drop: function(event, custom) {
var draggable = custom || $.ui.ddmanager.current,
childrenIntersection = !1;
return draggable && (draggable.currentItem || draggable.element)[0] !== this.element[0] ? (this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function() {
var inst = $(this).droppable("instance");
return inst.options.greedy && !inst.options.disabled && inst.options.scope === draggable.options.scope && inst.accept.call(inst.element[0], draggable.currentItem || draggable.element) && $.ui.intersect(draggable, $.extend(inst, {
offset: inst.element.offset()
}), inst.options.tolerance, event) ? (childrenIntersection = !0, !1) : void 0
}), childrenIntersection ? !1 : this.accept.call(this.element[0], draggable.currentItem || draggable.element) ? (this.options.activeClass && this.element.removeClass(this.options.activeClass), this.options.hoverClass && this.element.removeClass(this.options.hoverClass), this._trigger("drop", event, this.ui(draggable)), this.element) : !1) : !1
},
ui: function(c) {
return {
draggable: c.currentItem || c.element,
helper: c.helper,
position: c.position,
offset: c.positionAbs
}
}
}), $.ui.intersect = function() {
function isOverAxis(x, reference, size) {
return x >= reference && reference + size > x
}
return function(draggable, droppable, toleranceMode, event) {
if (!droppable.offset) return !1;
var x1 = (draggable.positionAbs || draggable.position.absolute).left,
y1 = (draggable.positionAbs || draggable.position.absolute).top,
x2 = x1 + draggable.helperProportions.width,
y2 = y1 + draggable.helperProportions.height,
l = droppable.offset.left,
t = droppable.offset.top,
r = l + droppable.proportions().width,
b = t + droppable.proportions().height;
switch (toleranceMode) {
case "fit":
return x1 >= l && r >= x2 && y1 >= t && b >= y2;
case "intersect":
return l < x1 + draggable.helperProportions.width / 2 && x2 - draggable.helperProportions.width / 2 < r && t < y1 + draggable.helperProportions.height / 2 && y2 - draggable.helperProportions.height / 2 < b;
case "pointer":
return isOverAxis(event.pageY, t, droppable.proportions().height) && isOverAxis(event.pageX, l, droppable.proportions().width);
case "touch":
return (y1 >= t && b >= y1 || y2 >= t && b >= y2 || t > y1 && y2 > b) && (x1 >= l && r >= x1 || x2 >= l && r >= x2 || l > x1 && x2 > r);
default:
return !1
}
}
}(), $.ui.ddmanager = {
current: null,
droppables: {
"default": []
},
prepareOffsets: function(t, event) {
var i, j, m = $.ui.ddmanager.droppables[t.options.scope] || [],
type = event ? event.type : null,
list = (t.currentItem || t.element).find(":data(ui-droppable)").addBack();
droppablesLoop: for (i = 0; i < m.length; i++)
if (!(m[i].options.disabled || t && !m[i].accept.call(m[i].element[0], t.currentItem || t.element))) {
for (j = 0; j < list.length; j++)
if (list[j] === m[i].element[0]) {
m[i].proportions().height = 0;
continue droppablesLoop
}
m[i].visible = "none" !== m[i].element.css("display"), m[i].visible && ("mousedown" === type && m[i]._activate.call(m[i], event), m[i].offset = m[i].element.offset(), m[i].proportions({
width: m[i].element[0].offsetWidth,
height: m[i].element[0].offsetHeight
}))
}
},
drop: function(draggable, event) {
var dropped = !1;
return $.each(($.ui.ddmanager.droppables[draggable.options.scope] || []).slice(), function() {
this.options && (!this.options.disabled && this.visible && $.ui.intersect(draggable, this, this.options.tolerance, event) && (dropped = this._drop.call(this, event) || dropped), !this.options.disabled && this.visible && this.accept.call(this.element[0], draggable.currentItem || draggable.element) && (this.isout = !0, this.isover = !1, this._deactivate.call(this, event)))
}), dropped
},
dragStart: function(draggable, event) {
draggable.element.parentsUntil("body").bind("scroll.droppable", function() {
draggable.options.refreshPositions || $.ui.ddmanager.prepareOffsets(draggable, event)
})
},
drag: function(draggable, event) {
draggable.options.refreshPositions && $.ui.ddmanager.prepareOffsets(draggable, event), $.each($.ui.ddmanager.droppables[draggable.options.scope] || [], function() {
if (!this.options.disabled && !this.greedyChild && this.visible) {
var parentInstance, scope, parent, intersects = $.ui.intersect(draggable, this, this.options.tolerance, event),
c = !intersects && this.isover ? "isout" : intersects && !this.isover ? "isover" : null;
c && (this.options.greedy && (scope = this.options.scope, parent = this.element.parents(":data(ui-droppable)").filter(function() {
return $(this).droppable("instance").options.scope === scope
}), parent.length && (parentInstance = $(parent[0]).droppable("instance"), parentInstance.greedyChild = "isover" === c)), parentInstance && "isover" === c && (parentInstance.isover = !1, parentInstance.isout = !0, parentInstance._out.call(parentInstance, event)), this[c] = !0, this["isout" === c ? "isover" : "isout"] = !1, this["isover" === c ? "_over" : "_out"].call(this, event), parentInstance && "isout" === c && (parentInstance.isout = !1, parentInstance.isover = !0, parentInstance._over.call(parentInstance, event)))
}
})
},
dragStop: function(draggable, event) {
draggable.element.parentsUntil("body").unbind("scroll.droppable"), draggable.options.refreshPositions || $.ui.ddmanager.prepareOffsets(draggable, event)
}
};
var dataSpace = ($.ui.droppable, "ui-effects-"),
jQuery = $;
$.effects = {
effect: {}
},
function(jQuery, undefined) {
function clamp(value, prop, allowEmpty) {
var type = propTypes[prop.type] || {};
return null == value ? allowEmpty || !prop.def ? null : prop.def : (value = type.floor ? ~~value : parseFloat(value), isNaN(value) ? prop.def : type.mod ? (value + type.mod) % type.mod : 0 > value ? 0 : type.max < value ? type.max : value)
}
function stringParse(string) {
var inst = color(),
rgba = inst._rgba = [];
return string = string.toLowerCase(), each(stringParsers, function(i, parser) {
var parsed, match = parser.re.exec(string),
values = match && parser.parse(match),
spaceName = parser.space || "rgba";
return values ? (parsed = inst[spaceName](values), inst[spaces[spaceName].cache] = parsed[spaces[spaceName].cache], rgba = inst._rgba = parsed._rgba, !1) : void 0
}), rgba.length ? ("0,0,0,0" === rgba.join() && jQuery.extend(rgba, colors.transparent), inst) : colors[string]
}
function hue2rgb(p, q, h) {
return h = (h + 1) % 1, 1 > 6 * h ? p + (q - p) * h * 6 : 1 > 2 * h ? q : 2 > 3 * h ? p + (q - p) * (2 / 3 - h) * 6 : p
}
var colors, stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
stringParsers = [{
re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
parse: function(execResult) {
return [execResult[1], execResult[2], execResult[3], execResult[4]]
}
}, {
re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
parse: function(execResult) {
return [2.55 * execResult[1], 2.55 * execResult[2], 2.55 * execResult[3], execResult[4]]
}
}, {
re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
parse: function(execResult) {
return [parseInt(execResult[1], 16), parseInt(execResult[2], 16), parseInt(execResult[3], 16)]
}
}, {
re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
parse: function(execResult) {
return [parseInt(execResult[1] + execResult[1], 16), parseInt(execResult[2] + execResult[2], 16), parseInt(execResult[3] + execResult[3], 16)]
}
}, {
re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
space: "hsla",
parse: function(execResult) {
return [execResult[1], execResult[2] / 100, execResult[3] / 100, execResult[4]]
}
}],
color = jQuery.Color = function(color, green, blue, alpha) {
return new jQuery.Color.fn.parse(color, green, blue, alpha)
}, spaces = {
rgba: {
props: {
red: {
idx: 0,
type: "byte"
},
green: {
idx: 1,
type: "byte"
},
blue: {
idx: 2,
type: "byte"
}
}
},
hsla: {
props: {
hue: {
idx: 0,
type: "degrees"
},
saturation: {
idx: 1,
type: "percent"
},
lightness: {
idx: 2,
type: "percent"
}
}
}
}, propTypes = {
"byte": {
floor: !0,
max: 255
},
percent: {
max: 1
},
degrees: {
mod: 360,
floor: !0
}
}, support = color.support = {}, supportElem = jQuery("<p>")[0],
each = jQuery.each;
supportElem.style.cssText = "background-color:rgba(1,1,1,.5)", support.rgba = supportElem.style.backgroundColor.indexOf("rgba") > -1, each(spaces, function(spaceName, space) {
space.cache = "_" + spaceName, space.props.alpha = {
idx: 3,
type: "percent",
def: 1
}
}), color.fn = jQuery.extend(color.prototype, {
parse: function(red, green, blue, alpha) {
if (red === undefined) return this._rgba = [null, null, null, null], this;
(red.jquery || red.nodeType) && (red = jQuery(red).css(green), green = undefined);
var inst = this,
type = jQuery.type(red),
rgba = this._rgba = [];
return green !== undefined && (red = [red, green, blue, alpha], type = "array"), "string" === type ? this.parse(stringParse(red) || colors._default) : "array" === type ? (each(spaces.rgba.props, function(key, prop) {
rgba[prop.idx] = clamp(red[prop.idx], prop)
}), this) : "object" === type ? (red instanceof color ? each(spaces, function(spaceName, space) {
red[space.cache] && (inst[space.cache] = red[space.cache].slice())
}) : each(spaces, function(spaceName, space) {
var cache = space.cache;
each(space.props, function(key, prop) {
if (!inst[cache] && space.to) {
if ("alpha" === key || null == red[key]) return;
inst[cache] = space.to(inst._rgba)
}
inst[cache][prop.idx] = clamp(red[key], prop, !0)
}), inst[cache] && jQuery.inArray(null, inst[cache].slice(0, 3)) < 0 && (inst[cache][3] = 1, space.from && (inst._rgba = space.from(inst[cache])))
}), this) : void 0
},
is: function(compare) {
var is = color(compare),
same = !0,
inst = this;
return each(spaces, function(_, space) {
var localCache, isCache = is[space.cache];
return isCache && (localCache = inst[space.cache] || space.to && space.to(inst._rgba) || [], each(space.props, function(_, prop) {
return null != isCache[prop.idx] ? same = isCache[prop.idx] === localCache[prop.idx] : void 0
})), same
}), same
},
_space: function() {
var used = [],
inst = this;
return each(spaces, function(spaceName, space) {
inst[space.cache] && used.push(spaceName)
}), used.pop()
},
transition: function(other, distance) {
var end = color(other),
spaceName = end._space(),
space = spaces[spaceName],
startColor = 0 === this.alpha() ? color("transparent") : this,
start = startColor[space.cache] || space.to(startColor._rgba),
result = start.slice();
return end = end[space.cache], each(space.props, function(key, prop) {
var index = prop.idx,
startValue = start[index],
endValue = end[index],
type = propTypes[prop.type] || {};
null !== endValue && (null === startValue ? result[index] = endValue : (type.mod && (endValue - startValue > type.mod / 2 ? startValue += type.mod : startValue - endValue > type.mod / 2 && (startValue -= type.mod)), result[index] = clamp((endValue - startValue) * distance + startValue, prop)))
}), this[spaceName](result)
},
blend: function(opaque) {
if (1 === this._rgba[3]) return this;
var rgb = this._rgba.slice(),
a = rgb.pop(),
blend = color(opaque)._rgba;
return color(jQuery.map(rgb, function(v, i) {
return (1 - a) * blend[i] + a * v
}))
},
toRgbaString: function() {
var prefix = "rgba(",
rgba = jQuery.map(this._rgba, function(v, i) {
return null == v ? i > 2 ? 1 : 0 : v
});
return 1 === rgba[3] && (rgba.pop(), prefix = "rgb("), prefix + rgba.join() + ")"
},
toHslaString: function() {
var prefix = "hsla(",
hsla = jQuery.map(this.hsla(), function(v, i) {
return null == v && (v = i > 2 ? 1 : 0), i && 3 > i && (v = Math.round(100 * v) + "%"), v
});
return 1 === hsla[3] && (hsla.pop(), prefix = "hsl("), prefix + hsla.join() + ")"
},
toHexString: function(includeAlpha) {
var rgba = this._rgba.slice(),
alpha = rgba.pop();
return includeAlpha && rgba.push(~~(255 * alpha)), "#" + jQuery.map(rgba, function(v) {
return v = (v || 0).toString(16), 1 === v.length ? "0" + v : v
}).join("")
},
toString: function() {
return 0 === this._rgba[3] ? "transparent" : this.toRgbaString()
}
}), color.fn.parse.prototype = color.fn, spaces.hsla.to = function(rgba) {
if (null == rgba[0] || null == rgba[1] || null == rgba[2]) return [null, null, null, rgba[3]];
var h, s, r = rgba[0] / 255,
g = rgba[1] / 255,
b = rgba[2] / 255,
a = rgba[3],
max = Math.max(r, g, b),
min = Math.min(r, g, b),
diff = max - min,
add = max + min,
l = .5 * add;
return h = min === max ? 0 : r === max ? 60 * (g - b) / diff + 360 : g === max ? 60 * (b - r) / diff + 120 : 60 * (r - g) / diff + 240, s = 0 === diff ? 0 : .5 >= l ? diff / add : diff / (2 - add), [Math.round(h) % 360, s, l, null == a ? 1 : a]
}, spaces.hsla.from = function(hsla) {
if (null == hsla[0] || null == hsla[1] || null == hsla[2]) return [null, null, null, hsla[3]];
var h = hsla[0] / 360,
s = hsla[1],
l = hsla[2],
a = hsla[3],
q = .5 >= l ? l * (1 + s) : l + s - l * s,
p = 2 * l - q;
return [Math.round(255 * hue2rgb(p, q, h + 1 / 3)), Math.round(255 * hue2rgb(p, q, h)), Math.round(255 * hue2rgb(p, q, h - 1 / 3)), a]
}, each(spaces, function(spaceName, space) {
var props = space.props,
cache = space.cache,
to = space.to,
from = space.from;
color.fn[spaceName] = function(value) {
if (to && !this[cache] && (this[cache] = to(this._rgba)), value === undefined) return this[cache].slice();
var ret, type = jQuery.type(value),
arr = "array" === type || "object" === type ? value : arguments,
local = this[cache].slice();
return each(props, function(key, prop) {
var val = arr["object" === type ? key : prop.idx];
null == val && (val = local[prop.idx]), local[prop.idx] = clamp(val, prop)
}), from ? (ret = color(from(local)), ret[cache] = local, ret) : color(local)
}, each(props, function(key, prop) {
color.fn[key] || (color.fn[key] = function(value) {
var match, vtype = jQuery.type(value),
fn = "alpha" === key ? this._hsla ? "hsla" : "rgba" : spaceName,
local = this[fn](),
cur = local[prop.idx];
return "undefined" === vtype ? cur : ("function" === vtype && (value = value.call(this, cur), vtype = jQuery.type(value)), null == value && prop.empty ? this : ("string" === vtype && (match = rplusequals.exec(value), match && (value = cur + parseFloat(match[2]) * ("+" === match[1] ? 1 : -1))), local[prop.idx] = value, this[fn](local)))
})
})
}), color.hook = function(hook) {
var hooks = hook.split(" ");
each(hooks, function(i, hook) {
jQuery.cssHooks[hook] = {
set: function(elem, value) {
var parsed, curElem, backgroundColor = "";
if ("transparent" !== value && ("string" !== jQuery.type(value) || (parsed = stringParse(value)))) {
if (value = color(parsed || value), !support.rgba && 1 !== value._rgba[3]) {
for (curElem = "backgroundColor" === hook ? elem.parentNode : elem;
("" === backgroundColor || "transparent" === backgroundColor) && curElem && curElem.style;) try {
backgroundColor = jQuery.css(curElem, "backgroundColor"), curElem = curElem.parentNode
} catch (e) {}
value = value.blend(backgroundColor && "transparent" !== backgroundColor ? backgroundColor : "_default")
}
value = value.toRgbaString()
}
try {
elem.style[hook] = value
} catch (e) {}
}
}, jQuery.fx.step[hook] = function(fx) {
fx.colorInit || (fx.start = color(fx.elem, hook), fx.end = color(fx.end), fx.colorInit = !0), jQuery.cssHooks[hook].set(fx.elem, fx.start.transition(fx.end, fx.pos))
}
})
}, color.hook(stepHooks), jQuery.cssHooks.borderColor = {
expand: function(value) {
var expanded = {};
return each(["Top", "Right", "Bottom", "Left"], function(i, part) {
expanded["border" + part + "Color"] = value
}), expanded
}
}, colors = jQuery.Color.names = {
aqua: "#00ffff",
black: "#000000",
blue: "#0000ff",
fuchsia: "#ff00ff",
gray: "#808080",
green: "#008000",
lime: "#00ff00",
maroon: "#800000",
navy: "#000080",
olive: "#808000",
purple: "#800080",
red: "#ff0000",
silver: "#c0c0c0",
teal: "#008080",
white: "#ffffff",
yellow: "#ffff00",
transparent: [null, null, null, 0],
_default: "#ffffff"
}
}(jQuery),
function() {
function getElementStyles(elem) {
var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle(elem, null) : elem.currentStyle,
styles = {};
if (style && style.length && style[0] && style[style[0]])
for (len = style.length; len--;) key = style[len], "string" == typeof style[key] && (styles[$.camelCase(key)] = style[key]);
else
for (key in style) "string" == typeof style[key] && (styles[key] = style[key]);
return styles
}
function styleDifference(oldStyle, newStyle) {
var name, value, diff = {};
for (name in newStyle) value = newStyle[name], oldStyle[name] !== value && (shorthandStyles[name] || ($.fx.step[name] || !isNaN(parseFloat(value))) && (diff[name] = value));
return diff
}
var classAnimationActions = ["add", "remove", "toggle"],
shorthandStyles = {
border: 1,
borderBottom: 1,
borderColor: 1,
borderLeft: 1,
borderRight: 1,
borderTop: 1,
borderWidth: 1,
margin: 1,
padding: 1
};
$.each(["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"], function(_, prop) {
$.fx.step[prop] = function(fx) {
("none" !== fx.end && !fx.setAttr || 1 === fx.pos && !fx.setAttr) && (jQuery.style(fx.elem, prop, fx.end), fx.setAttr = !0)
}
}), $.fn.addBack || ($.fn.addBack = function(selector) {
return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector))
}), $.effects.animateClass = function(value, duration, easing, callback) {
var o = $.speed(duration, easing, callback);
return this.queue(function() {
var applyClassChange, animated = $(this),
baseClass = animated.attr("class") || "",
allAnimations = o.children ? animated.find("*").addBack() : animated;
allAnimations = allAnimations.map(function() {
var el = $(this);
return {
el: el,
start: getElementStyles(this)
}
}), applyClassChange = function() {
$.each(classAnimationActions, function(i, action) {
value[action] && animated[action + "Class"](value[action])
})
}, applyClassChange(), allAnimations = allAnimations.map(function() {
return this.end = getElementStyles(this.el[0]), this.diff = styleDifference(this.start, this.end), this
}), animated.attr("class", baseClass), allAnimations = allAnimations.map(function() {
var styleInfo = this,
dfd = $.Deferred(),
opts = $.extend({}, o, {
queue: !1,
complete: function() {
dfd.resolve(styleInfo)
}
});
return this.el.animate(this.diff, opts), dfd.promise()
}), $.when.apply($, allAnimations.get()).done(function() {
applyClassChange(), $.each(arguments, function() {
var el = this.el;
$.each(this.diff, function(key) {
el.css(key, "")
})
}), o.complete.call(animated[0])
})
})
}, $.fn.extend({
addClass: function(orig) {
return function(classNames, speed, easing, callback) {
return speed ? $.effects.animateClass.call(this, {
add: classNames
}, speed, easing, callback) : orig.apply(this, arguments)
}
}($.fn.addClass),
removeClass: function(orig) {
return function(classNames, speed, easing, callback) {
return arguments.length > 1 ? $.effects.animateClass.call(this, {
remove: classNames
}, speed, easing, callback) : orig.apply(this, arguments)
}
}($.fn.removeClass),
toggleClass: function(orig) {
return function(classNames, force, speed, easing, callback) {
return "boolean" == typeof force || void 0 === force ? speed ? $.effects.animateClass.call(this, force ? {
add: classNames
} : {
remove: classNames
}, speed, easing, callback) : orig.apply(this, arguments) : $.effects.animateClass.call(this, {
toggle: classNames
}, force, speed, easing)
}
}($.fn.toggleClass),
switchClass: function(remove, add, speed, easing, callback) {
return $.effects.animateClass.call(this, {
add: add,
remove: remove
}, speed, easing, callback)
}
})
}(),
function() {
function _normalizeArguments(effect, options, speed, callback) {
return $.isPlainObject(effect) && (options = effect, effect = effect.effect), effect = {
effect: effect
}, null == options && (options = {}), $.isFunction(options) && (callback = options, speed = null, options = {}), ("number" == typeof options || $.fx.speeds[options]) && (callback = speed, speed = options, options = {}), $.isFunction(speed) && (callback = speed, speed = null), options && $.extend(effect, options), speed = speed || options.duration, effect.duration = $.fx.off ? 0 : "number" == typeof speed ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default, effect.complete = callback || options.complete, effect
}
function standardAnimationOption(option) {
return !option || "number" == typeof option || $.fx.speeds[option] ? !0 : "string" != typeof option || $.effects.effect[option] ? $.isFunction(option) ? !0 : "object" != typeof option || option.effect ? !1 : !0 : !0
}
$.extend($.effects, {
version: "1.11.1",
save: function(element, set) {
for (var i = 0; i < set.length; i++) null !== set[i] && element.data(dataSpace + set[i], element[0].style[set[i]])
},
restore: function(element, set) {
var val, i;
for (i = 0; i < set.length; i++) null !== set[i] && (val = element.data(dataSpace + set[i]), void 0 === val && (val = ""), element.css(set[i], val))
},
setMode: function(el, mode) {
return "toggle" === mode && (mode = el.is(":hidden") ? "show" : "hide"), mode
},
getBaseline: function(origin, original) {
var y, x;
switch (origin[0]) {
case "top":
y = 0;
break;
case "middle":
y = .5;
break;
case "bottom":
y = 1;
break;
default:
y = origin[0] / original.height
}
switch (origin[1]) {
case "left":
x = 0;
break;
case "center":
x = .5;
break;
case "right":
x = 1;
break;
default:
x = origin[1] / original.width
}
return {
x: x,
y: y
}
},
createWrapper: function(element) {
if (element.parent().is(".ui-effects-wrapper")) return element.parent();
var props = {
width: element.outerWidth(!0),
height: element.outerHeight(!0),
"float": element.css("float")
}, wrapper = $("<div></div>").addClass("ui-effects-wrapper").css({
fontSize: "100%",
background: "transparent",
border: "none",
margin: 0,
padding: 0
}),
size = {
width: element.width(),
height: element.height()
}, active = document.activeElement;
try {
active.id
} catch (e) {
active = document.body
}
return element.wrap(wrapper), (element[0] === active || $.contains(element[0], active)) && $(active).focus(), wrapper = element.parent(), "static" === element.css("position") ? (wrapper.css({
position: "relative"
}), element.css({
position: "relative"
})) : ($.extend(props, {
position: element.css("position"),
zIndex: element.css("z-index")
}), $.each(["top", "left", "bottom", "right"], function(i, pos) {
props[pos] = element.css(pos), isNaN(parseInt(props[pos], 10)) && (props[pos] = "auto")
}), element.css({
position: "relative",
top: 0,
left: 0,
right: "auto",
bottom: "auto"
})), element.css(size), wrapper.css(props).show()
},
removeWrapper: function(element) {
var active = document.activeElement;
return element.parent().is(".ui-effects-wrapper") && (element.parent().replaceWith(element), (element[0] === active || $.contains(element[0], active)) && $(active).focus()), element
},
setTransition: function(element, list, factor, value) {
return value = value || {}, $.each(list, function(i, x) {
var unit = element.cssUnit(x);
unit[0] > 0 && (value[x] = unit[0] * factor + unit[1])
}), value
}
}), $.fn.extend({
effect: function() {
function run(next) {
function done() {
$.isFunction(complete) && complete.call(elem[0]), $.isFunction(next) && next()
}
var elem = $(this),
complete = args.complete,
mode = args.mode;
(elem.is(":hidden") ? "hide" === mode : "show" === mode) ? (elem[mode](), done()) : effectMethod.call(elem[0], args, done)
}
var args = _normalizeArguments.apply(this, arguments),
mode = args.mode,
queue = args.queue,
effectMethod = $.effects.effect[args.effect];
return $.fx.off || !effectMethod ? mode ? this[mode](args.duration, args.complete) : this.each(function() {
args.complete && args.complete.call(this)
}) : queue === !1 ? this.each(run) : this.queue(queue || "fx", run)
},
show: function(orig) {
return function(option) {
if (standardAnimationOption(option)) return orig.apply(this, arguments);
var args = _normalizeArguments.apply(this, arguments);
return args.mode = "show", this.effect.call(this, args)
}
}($.fn.show),
hide: function(orig) {
return function(option) {
if (standardAnimationOption(option)) return orig.apply(this, arguments);
var args = _normalizeArguments.apply(this, arguments);
return args.mode = "hide", this.effect.call(this, args)
}
}($.fn.hide),
toggle: function(orig) {
return function(option) {
if (standardAnimationOption(option) || "boolean" == typeof option) return orig.apply(this, arguments);
var args = _normalizeArguments.apply(this, arguments);
return args.mode = "toggle", this.effect.call(this, args)
}
}($.fn.toggle),
cssUnit: function(key) {
var style = this.css(key),
val = [];
return $.each(["em", "px", "%", "pt"], function(i, unit) {
style.indexOf(unit) > 0 && (val = [parseFloat(style), unit])
}), val
}
})
}(),
function() {
var baseEasings = {};
$.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function(i, name) {
baseEasings[name] = function(p) {
return Math.pow(p, i + 2)
}
}), $.extend(baseEasings, {
Sine: function(p) {
return 1 - Math.cos(p * Math.PI / 2)
},
Circ: function(p) {
return 1 - Math.sqrt(1 - p * p)
},
Elastic: function(p) {
return 0 === p || 1 === p ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin((80 * (p - 1) - 7.5) * Math.PI / 15)
},
Back: function(p) {
return p * p * (3 * p - 2)
},
Bounce: function(p) {
for (var pow2, bounce = 4; p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11;);
return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((3 * pow2 - 2) / 22 - p, 2)
}
}), $.each(baseEasings, function(name, easeIn) {
$.easing["easeIn" + name] = easeIn, $.easing["easeOut" + name] = function(p) {
return 1 - easeIn(1 - p)
}, $.easing["easeInOut" + name] = function(p) {
return .5 > p ? easeIn(2 * p) / 2 : 1 - easeIn(-2 * p + 2) / 2
}
})
}();
$.effects, $.effects.effect.blind = function(o, done) {
var wrapper, distance, margin, el = $(this),
rvertical = /up|down|vertical/,
rpositivemotion = /up|left|vertical|horizontal/,
props = ["position", "top", "bottom", "left", "right", "height", "width"],
mode = $.effects.setMode(el, o.mode || "hide"),
direction = o.direction || "up",
vertical = rvertical.test(direction),
ref = vertical ? "height" : "width",
ref2 = vertical ? "top" : "left",
motion = rpositivemotion.test(direction),
animation = {}, show = "show" === mode;
el.parent().is(".ui-effects-wrapper") ? $.effects.save(el.parent(), props) : $.effects.save(el, props), el.show(), wrapper = $.effects.createWrapper(el).css({
overflow: "hidden"
}), distance = wrapper[ref](), margin = parseFloat(wrapper.css(ref2)) || 0, animation[ref] = show ? distance : 0, motion || (el.css(vertical ? "bottom" : "right", 0).css(vertical ? "top" : "left", "auto").css({
position: "absolute"
}), animation[ref2] = show ? margin : distance + margin), show && (wrapper.css(ref, 0), motion || wrapper.css(ref2, margin + distance)), wrapper.animate(animation, {
duration: o.duration,
easing: o.easing,
queue: !1,
complete: function() {
"hide" === mode && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}
})
}, $.effects.effect.bounce = function(o, done) {
var i, upAnim, downAnim, el = $(this),
props = ["position", "top", "bottom", "left", "right", "height", "width"],
mode = $.effects.setMode(el, o.mode || "effect"),
hide = "hide" === mode,
show = "show" === mode,
direction = o.direction || "up",
distance = o.distance,
times = o.times || 5,
anims = 2 * times + (show || hide ? 1 : 0),
speed = o.duration / anims,
easing = o.easing,
ref = "up" === direction || "down" === direction ? "top" : "left",
motion = "up" === direction || "left" === direction,
queue = el.queue(),
queuelen = queue.length;
for ((show || hide) && props.push("opacity"), $.effects.save(el, props), el.show(), $.effects.createWrapper(el), distance || (distance = el["top" === ref ? "outerHeight" : "outerWidth"]() / 3), show && (downAnim = {
opacity: 1
}, downAnim[ref] = 0, el.css("opacity", 0).css(ref, motion ? 2 * -distance : 2 * distance).animate(downAnim, speed, easing)), hide && (distance /= Math.pow(2, times - 1)), downAnim = {}, downAnim[ref] = 0, i = 0; times > i; i++) upAnim = {}, upAnim[ref] = (motion ? "-=" : "+=") + distance, el.animate(upAnim, speed, easing).animate(downAnim, speed, easing), distance = hide ? 2 * distance : distance / 2;
hide && (upAnim = {
opacity: 0
}, upAnim[ref] = (motion ? "-=" : "+=") + distance, el.animate(upAnim, speed, easing)), el.queue(function() {
hide && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}), queuelen > 1 && queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))), el.dequeue()
}, $.effects.effect.clip = function(o, done) {
var wrapper, animate, distance, el = $(this),
props = ["position", "top", "bottom", "left", "right", "height", "width"],
mode = $.effects.setMode(el, o.mode || "hide"),
show = "show" === mode,
direction = o.direction || "vertical",
vert = "vertical" === direction,
size = vert ? "height" : "width",
position = vert ? "top" : "left",
animation = {};
$.effects.save(el, props), el.show(), wrapper = $.effects.createWrapper(el).css({
overflow: "hidden"
}), animate = "IMG" === el[0].tagName ? wrapper : el, distance = animate[size](), show && (animate.css(size, 0), animate.css(position, distance / 2)), animation[size] = show ? distance : 0, animation[position] = show ? 0 : distance / 2, animate.animate(animation, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: function() {
show || el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}
})
}, $.effects.effect.drop = function(o, done) {
var distance, el = $(this),
props = ["position", "top", "bottom", "left", "right", "opacity", "height", "width"],
mode = $.effects.setMode(el, o.mode || "hide"),
show = "show" === mode,
direction = o.direction || "left",
ref = "up" === direction || "down" === direction ? "top" : "left",
motion = "up" === direction || "left" === direction ? "pos" : "neg",
animation = {
opacity: show ? 1 : 0
};
$.effects.save(el, props), el.show(), $.effects.createWrapper(el), distance = o.distance || el["top" === ref ? "outerHeight" : "outerWidth"](!0) / 2, show && el.css("opacity", 0).css(ref, "pos" === motion ? -distance : distance), animation[ref] = (show ? "pos" === motion ? "+=" : "-=" : "pos" === motion ? "-=" : "+=") + distance, el.animate(animation, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: function() {
"hide" === mode && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}
})
}, $.effects.effect.explode = function(o, done) {
function childComplete() {
pieces.push(this), pieces.length === rows * cells && animComplete()
}
function animComplete() {
el.css({
visibility: "visible"
}), $(pieces).remove(), show || el.hide(), done()
}
var i, j, left, top, mx, my, rows = o.pieces ? Math.round(Math.sqrt(o.pieces)) : 3,
cells = rows,
el = $(this),
mode = $.effects.setMode(el, o.mode || "hide"),
show = "show" === mode,
offset = el.show().css("visibility", "hidden").offset(),
width = Math.ceil(el.outerWidth() / cells),
height = Math.ceil(el.outerHeight() / rows),
pieces = [];
for (i = 0; rows > i; i++)
for (top = offset.top + i * height, my = i - (rows - 1) / 2, j = 0; cells > j; j++) left = offset.left + j * width, mx = j - (cells - 1) / 2, el.clone().appendTo("body").wrap("<div></div>").css({
position: "absolute",
visibility: "visible",
left: -j * width,
top: -i * height
}).parent().addClass("ui-effects-explode").css({
position: "absolute",
overflow: "hidden",
width: width,
height: height,
left: left + (show ? mx * width : 0),
top: top + (show ? my * height : 0),
opacity: show ? 0 : 1
}).animate({
left: left + (show ? 0 : mx * width),
top: top + (show ? 0 : my * height),
opacity: show ? 1 : 0
}, o.duration || 500, o.easing, childComplete)
}, $.effects.effect.fade = function(o, done) {
var el = $(this),
mode = $.effects.setMode(el, o.mode || "toggle");
el.animate({
opacity: mode
}, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: done
})
}, $.effects.effect.fold = function(o, done) {
var wrapper, distance, el = $(this),
props = ["position", "top", "bottom", "left", "right", "height", "width"],
mode = $.effects.setMode(el, o.mode || "hide"),
show = "show" === mode,
hide = "hide" === mode,
size = o.size || 15,
percent = /([0-9]+)%/.exec(size),
horizFirst = !! o.horizFirst,
widthFirst = show !== horizFirst,
ref = widthFirst ? ["width", "height"] : ["height", "width"],
duration = o.duration / 2,
animation1 = {}, animation2 = {};
$.effects.save(el, props), el.show(), wrapper = $.effects.createWrapper(el).css({
overflow: "hidden"
}), distance = widthFirst ? [wrapper.width(), wrapper.height()] : [wrapper.height(), wrapper.width()], percent && (size = parseInt(percent[1], 10) / 100 * distance[hide ? 0 : 1]), show && wrapper.css(horizFirst ? {
height: 0,
width: size
} : {
height: size,
width: 0
}), animation1[ref[0]] = show ? distance[0] : size, animation2[ref[1]] = show ? distance[1] : 0, wrapper.animate(animation1, duration, o.easing).animate(animation2, duration, o.easing, function() {
hide && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
})
}, $.effects.effect.highlight = function(o, done) {
var elem = $(this),
props = ["backgroundImage", "backgroundColor", "opacity"],
mode = $.effects.setMode(elem, o.mode || "show"),
animation = {
backgroundColor: elem.css("backgroundColor")
};
"hide" === mode && (animation.opacity = 0), $.effects.save(elem, props), elem.show().css({
backgroundImage: "none",
backgroundColor: o.color || "#ffff99"
}).animate(animation, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: function() {
"hide" === mode && elem.hide(), $.effects.restore(elem, props), done()
}
})
}, $.effects.effect.size = function(o, done) {
var original, baseline, factor, el = $(this),
props0 = ["position", "top", "bottom", "left", "right", "width", "height", "overflow", "opacity"],
props1 = ["position", "top", "bottom", "left", "right", "overflow", "opacity"],
props2 = ["width", "height", "overflow"],
cProps = ["fontSize"],
vProps = ["borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom"],
hProps = ["borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight"],
mode = $.effects.setMode(el, o.mode || "effect"),
restore = o.restore || "effect" !== mode,
scale = o.scale || "both",
origin = o.origin || ["middle", "center"],
position = el.css("position"),
props = restore ? props0 : props1,
zero = {
height: 0,
width: 0,
outerHeight: 0,
outerWidth: 0
};
"show" === mode && el.show(), original = {
height: el.height(),
width: el.width(),
outerHeight: el.outerHeight(),
outerWidth: el.outerWidth()
}, "toggle" === o.mode && "show" === mode ? (el.from = o.to || zero, el.to = o.from || original) : (el.from = o.from || ("show" === mode ? zero : original), el.to = o.to || ("hide" === mode ? zero : original)), factor = {
from: {
y: el.from.height / original.height,
x: el.from.width / original.width
},
to: {
y: el.to.height / original.height,
x: el.to.width / original.width
}
}, ("box" === scale || "both" === scale) && (factor.from.y !== factor.to.y && (props = props.concat(vProps), el.from = $.effects.setTransition(el, vProps, factor.from.y, el.from), el.to = $.effects.setTransition(el, vProps, factor.to.y, el.to)), factor.from.x !== factor.to.x && (props = props.concat(hProps), el.from = $.effects.setTransition(el, hProps, factor.from.x, el.from), el.to = $.effects.setTransition(el, hProps, factor.to.x, el.to))), ("content" === scale || "both" === scale) && factor.from.y !== factor.to.y && (props = props.concat(cProps).concat(props2), el.from = $.effects.setTransition(el, cProps, factor.from.y, el.from), el.to = $.effects.setTransition(el, cProps, factor.to.y, el.to)), $.effects.save(el, props), el.show(), $.effects.createWrapper(el), el.css("overflow", "hidden").css(el.from), origin && (baseline = $.effects.getBaseline(origin, original), el.from.top = (original.outerHeight - el.outerHeight()) * baseline.y, el.from.left = (original.outerWidth - el.outerWidth()) * baseline.x, el.to.top = (original.outerHeight - el.to.outerHeight) * baseline.y, el.to.left = (original.outerWidth - el.to.outerWidth) * baseline.x), el.css(el.from), ("content" === scale || "both" === scale) && (vProps = vProps.concat(["marginTop", "marginBottom"]).concat(cProps), hProps = hProps.concat(["marginLeft", "marginRight"]), props2 = props0.concat(vProps).concat(hProps), el.find("*[width]").each(function() {
var child = $(this),
c_original = {
height: child.height(),
width: child.width(),
outerHeight: child.outerHeight(),
outerWidth: child.outerWidth()
};
restore && $.effects.save(child, props2), child.from = {
height: c_original.height * factor.from.y,
width: c_original.width * factor.from.x,
outerHeight: c_original.outerHeight * factor.from.y,
outerWidth: c_original.outerWidth * factor.from.x
}, child.to = {
height: c_original.height * factor.to.y,
width: c_original.width * factor.to.x,
outerHeight: c_original.height * factor.to.y,
outerWidth: c_original.width * factor.to.x
}, factor.from.y !== factor.to.y && (child.from = $.effects.setTransition(child, vProps, factor.from.y, child.from), child.to = $.effects.setTransition(child, vProps, factor.to.y, child.to)), factor.from.x !== factor.to.x && (child.from = $.effects.setTransition(child, hProps, factor.from.x, child.from), child.to = $.effects.setTransition(child, hProps, factor.to.x, child.to)), child.css(child.from), child.animate(child.to, o.duration, o.easing, function() {
restore && $.effects.restore(child, props2)
})
})), el.animate(el.to, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: function() {
0 === el.to.opacity && el.css("opacity", el.from.opacity), "hide" === mode && el.hide(), $.effects.restore(el, props), restore || ("static" === position ? el.css({
position: "relative",
top: el.to.top,
left: el.to.left
}) : $.each(["top", "left"], function(idx, pos) {
el.css(pos, function(_, str) {
var val = parseInt(str, 10),
toRef = idx ? el.to.left : el.to.top;
return "auto" === str ? toRef + "px" : val + toRef + "px"
})
})), $.effects.removeWrapper(el), done()
}
})
}, $.effects.effect.scale = function(o, done) {
var el = $(this),
options = $.extend(!0, {}, o),
mode = $.effects.setMode(el, o.mode || "effect"),
percent = parseInt(o.percent, 10) || (0 === parseInt(o.percent, 10) ? 0 : "hide" === mode ? 0 : 100),
direction = o.direction || "both",
origin = o.origin,
original = {
height: el.height(),
width: el.width(),
outerHeight: el.outerHeight(),
outerWidth: el.outerWidth()
}, factor = {
y: "horizontal" !== direction ? percent / 100 : 1,
x: "vertical" !== direction ? percent / 100 : 1
};
options.effect = "size", options.queue = !1, options.complete = done, "effect" !== mode && (options.origin = origin || ["middle", "center"], options.restore = !0), options.from = o.from || ("show" === mode ? {
height: 0,
width: 0,
outerHeight: 0,
outerWidth: 0
} : original), options.to = {
height: original.height * factor.y,
width: original.width * factor.x,
outerHeight: original.outerHeight * factor.y,
outerWidth: original.outerWidth * factor.x
}, options.fade && ("show" === mode && (options.from.opacity = 0, options.to.opacity = 1), "hide" === mode && (options.from.opacity = 1, options.to.opacity = 0)), el.effect(options)
}, $.effects.effect.puff = function(o, done) {
var elem = $(this),
mode = $.effects.setMode(elem, o.mode || "hide"),
hide = "hide" === mode,
percent = parseInt(o.percent, 10) || 150,
factor = percent / 100,
original = {
height: elem.height(),
width: elem.width(),
outerHeight: elem.outerHeight(),
outerWidth: elem.outerWidth()
};
$.extend(o, {
effect: "scale",
queue: !1,
fade: !0,
mode: mode,
complete: done,
percent: hide ? percent : 100,
from: hide ? original : {
height: original.height * factor,
width: original.width * factor,
outerHeight: original.outerHeight * factor,
outerWidth: original.outerWidth * factor
}
}), elem.effect(o)
}, $.effects.effect.pulsate = function(o, done) {
var i, elem = $(this),
mode = $.effects.setMode(elem, o.mode || "show"),
show = "show" === mode,
hide = "hide" === mode,
showhide = show || "hide" === mode,
anims = 2 * (o.times || 5) + (showhide ? 1 : 0),
duration = o.duration / anims,
animateTo = 0,
queue = elem.queue(),
queuelen = queue.length;
for ((show || !elem.is(":visible")) && (elem.css("opacity", 0).show(), animateTo = 1), i = 1; anims > i; i++) elem.animate({
opacity: animateTo
}, duration, o.easing), animateTo = 1 - animateTo;
elem.animate({
opacity: animateTo
}, duration, o.easing), elem.queue(function() {
hide && elem.hide(), done()
}), queuelen > 1 && queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))), elem.dequeue()
}, $.effects.effect.shake = function(o, done) {
var i, el = $(this),
props = ["position", "top", "bottom", "left", "right", "height", "width"],
mode = $.effects.setMode(el, o.mode || "effect"),
direction = o.direction || "left",
distance = o.distance || 20,
times = o.times || 3,
anims = 2 * times + 1,
speed = Math.round(o.duration / anims),
ref = "up" === direction || "down" === direction ? "top" : "left",
positiveMotion = "up" === direction || "left" === direction,
animation = {}, animation1 = {}, animation2 = {}, queue = el.queue(),
queuelen = queue.length;
for ($.effects.save(el, props), el.show(), $.effects.createWrapper(el), animation[ref] = (positiveMotion ? "-=" : "+=") + distance, animation1[ref] = (positiveMotion ? "+=" : "-=") + 2 * distance, animation2[ref] = (positiveMotion ? "-=" : "+=") + 2 * distance, el.animate(animation, speed, o.easing), i = 1; times > i; i++) el.animate(animation1, speed, o.easing).animate(animation2, speed, o.easing);
el.animate(animation1, speed, o.easing).animate(animation, speed / 2, o.easing).queue(function() {
"hide" === mode && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}), queuelen > 1 && queue.splice.apply(queue, [1, 0].concat(queue.splice(queuelen, anims + 1))), el.dequeue()
}, $.effects.effect.slide = function(o, done) {
var distance, el = $(this),
props = ["position", "top", "bottom", "left", "right", "width", "height"],
mode = $.effects.setMode(el, o.mode || "show"),
show = "show" === mode,
direction = o.direction || "left",
ref = "up" === direction || "down" === direction ? "top" : "left",
positiveMotion = "up" === direction || "left" === direction,
animation = {};
$.effects.save(el, props), el.show(), distance = o.distance || el["top" === ref ? "outerHeight" : "outerWidth"](!0), $.effects.createWrapper(el).css({
overflow: "hidden"
}), show && el.css(ref, positiveMotion ? isNaN(distance) ? "-" + distance : -distance : distance), animation[ref] = (show ? positiveMotion ? "+=" : "-=" : positiveMotion ? "-=" : "+=") + distance, el.animate(animation, {
queue: !1,
duration: o.duration,
easing: o.easing,
complete: function() {
"hide" === mode && el.hide(), $.effects.restore(el, props), $.effects.removeWrapper(el), done()
}
})
}, $.effects.effect.transfer = function(o, done) {
var elem = $(this),
target = $(o.to),
targetFixed = "fixed" === target.css("position"),
body = $("body"),
fixTop = targetFixed ? body.scrollTop() : 0,
fixLeft = targetFixed ? body.scrollLeft() : 0,
endPosition = target.offset(),
animation = {
top: endPosition.top - fixTop,
left: endPosition.left - fixLeft,
height: target.innerHeight(),
width: target.innerWidth()
}, startPosition = elem.offset(),
transfer = $("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(o.className).css({
top: startPosition.top - fixTop,
left: startPosition.left - fixLeft,
height: elem.innerHeight(),
width: elem.innerWidth(),
position: targetFixed ? "fixed" : "absolute"
}).animate(animation, o.duration, o.easing, function() {
transfer.remove(), done()
})
}, $.widget("ui.progressbar", {
version: "1.11.1",
options: {
max: 100,
value: 0,
change: null,
complete: null
},
min: 0,
_create: function() {
this.oldValue = this.options.value = this._constrainedValue(), this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({
role: "progressbar",
"aria-valuemin": this.min
}), this.valueDiv = $("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element), this._refreshValue()
},
_destroy: function() {
this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"), this.valueDiv.remove()
},
value: function(newValue) {
return void 0 === newValue ? this.options.value : (this.options.value = this._constrainedValue(newValue), void this._refreshValue())
},
_constrainedValue: function(newValue) {
return void 0 === newValue && (newValue = this.options.value), this.indeterminate = newValue === !1, "number" != typeof newValue && (newValue = 0), this.indeterminate ? !1 : Math.min(this.options.max, Math.max(this.min, newValue))
},
_setOptions: function(options) {
var value = options.value;
delete options.value, this._super(options), this.options.value = this._constrainedValue(value), this._refreshValue()
},
_setOption: function(key, value) {
"max" === key && (value = Math.max(this.min, value)), "disabled" === key && this.element.toggleClass("ui-state-disabled", !! value).attr("aria-disabled", value), this._super(key, value)
},
_percentage: function() {
return this.indeterminate ? 100 : 100 * (this.options.value - this.min) / (this.options.max - this.min)
},
_refreshValue: function() {
var value = this.options.value,
percentage = this._percentage();
this.valueDiv.toggle(this.indeterminate || value > this.min).toggleClass("ui-corner-right", value === this.options.max).width(percentage.toFixed(0) + "%"), this.element.toggleClass("ui-progressbar-indeterminate", this.indeterminate), this.indeterminate ? (this.element.removeAttr("aria-valuenow"), this.overlayDiv || (this.overlayDiv = $("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))) : (this.element.attr({
"aria-valuemax": this.options.max,
"aria-valuenow": value
}), this.overlayDiv && (this.overlayDiv.remove(), this.overlayDiv = null)), this.oldValue !== value && (this.oldValue = value, this._trigger("change")), value === this.options.max && this._trigger("complete")
}
}), $.widget("ui.selectable", $.ui.mouse, {
version: "1.11.1",
options: {
appendTo: "body",
autoRefresh: !0,
distance: 0,
filter: "*",
tolerance: "touch",
selected: null,
selecting: null,
start: null,
stop: null,
unselected: null,
unselecting: null
},
_create: function() {
var selectees, that = this;
this.element.addClass("ui-selectable"), this.dragged = !1, this.refresh = function() {
selectees = $(that.options.filter, that.element[0]), selectees.addClass("ui-selectee"), selectees.each(function() {
var $this = $(this),
pos = $this.offset();
$.data(this, "selectable-item", {
element: this,
$element: $this,
left: pos.left,
top: pos.top,
right: pos.left + $this.outerWidth(),
bottom: pos.top + $this.outerHeight(),
startselected: !1,
selected: $this.hasClass("ui-selected"),
selecting: $this.hasClass("ui-selecting"),
unselecting: $this.hasClass("ui-unselecting")
})
})
}, this.refresh(), this.selectees = selectees.addClass("ui-selectee"), this._mouseInit(), this.helper = $("<div class='ui-selectable-helper'></div>")
},
_destroy: function() {
this.selectees.removeClass("ui-selectee").removeData("selectable-item"), this.element.removeClass("ui-selectable ui-selectable-disabled"), this._mouseDestroy()
},
_mouseStart: function(event) {
var that = this,
options = this.options;
this.opos = [event.pageX, event.pageY], this.options.disabled || (this.selectees = $(options.filter, this.element[0]), this._trigger("start", event), $(options.appendTo).append(this.helper), this.helper.css({
left: event.pageX,
top: event.pageY,
width: 0,
height: 0
}), options.autoRefresh && this.refresh(), this.selectees.filter(".ui-selected").each(function() {
var selectee = $.data(this, "selectable-item");
selectee.startselected = !0, event.metaKey || event.ctrlKey || (selectee.$element.removeClass("ui-selected"), selectee.selected = !1, selectee.$element.addClass("ui-unselecting"), selectee.unselecting = !0, that._trigger("unselecting", event, {
unselecting: selectee.element
}))
}), $(event.target).parents().addBack().each(function() {
var doSelect, selectee = $.data(this, "selectable-item");
return selectee ? (doSelect = !event.metaKey && !event.ctrlKey || !selectee.$element.hasClass("ui-selected"), selectee.$element.removeClass(doSelect ? "ui-unselecting" : "ui-selected").addClass(doSelect ? "ui-selecting" : "ui-unselecting"), selectee.unselecting = !doSelect, selectee.selecting = doSelect, selectee.selected = doSelect, doSelect ? that._trigger("selecting", event, {
selecting: selectee.element
}) : that._trigger("unselecting", event, {
unselecting: selectee.element
}), !1) : void 0
}))
},
_mouseDrag: function(event) {
if (this.dragged = !0, !this.options.disabled) {
var tmp, that = this,
options = this.options,
x1 = this.opos[0],
y1 = this.opos[1],
x2 = event.pageX,
y2 = event.pageY;
return x1 > x2 && (tmp = x2, x2 = x1, x1 = tmp), y1 > y2 && (tmp = y2, y2 = y1, y1 = tmp), this.helper.css({
left: x1,
top: y1,
width: x2 - x1,
height: y2 - y1
}), this.selectees.each(function() {
var selectee = $.data(this, "selectable-item"),
hit = !1;
selectee && selectee.element !== that.element[0] && ("touch" === options.tolerance ? hit = !(selectee.left > x2 || selectee.right < x1 || selectee.top > y2 || selectee.bottom < y1) : "fit" === options.tolerance && (hit = selectee.left > x1 && selectee.right < x2 && selectee.top > y1 && selectee.bottom < y2), hit ? (selectee.selected && (selectee.$element.removeClass("ui-selected"), selectee.selected = !1), selectee.unselecting && (selectee.$element.removeClass("ui-unselecting"), selectee.unselecting = !1), selectee.selecting || (selectee.$element.addClass("ui-selecting"), selectee.selecting = !0, that._trigger("selecting", event, {
selecting: selectee.element
}))) : (selectee.selecting && ((event.metaKey || event.ctrlKey) && selectee.startselected ? (selectee.$element.removeClass("ui-selecting"), selectee.selecting = !1, selectee.$element.addClass("ui-selected"), selectee.selected = !0) : (selectee.$element.removeClass("ui-selecting"), selectee.selecting = !1, selectee.startselected && (selectee.$element.addClass("ui-unselecting"), selectee.unselecting = !0), that._trigger("unselecting", event, {
unselecting: selectee.element
}))), selectee.selected && (event.metaKey || event.ctrlKey || selectee.startselected || (selectee.$element.removeClass("ui-selected"), selectee.selected = !1, selectee.$element.addClass("ui-unselecting"), selectee.unselecting = !0, that._trigger("unselecting", event, {
unselecting: selectee.element
})))))
}), !1
}
},
_mouseStop: function(event) {
var that = this;
return this.dragged = !1, $(".ui-unselecting", this.element[0]).each(function() {
var selectee = $.data(this, "selectable-item");
selectee.$element.removeClass("ui-unselecting"), selectee.unselecting = !1, selectee.startselected = !1, that._trigger("unselected", event, {
unselected: selectee.element
})
}), $(".ui-selecting", this.element[0]).each(function() {
var selectee = $.data(this, "selectable-item");
selectee.$element.removeClass("ui-selecting").addClass("ui-selected"), selectee.selecting = !1, selectee.selected = !0, selectee.startselected = !0, that._trigger("selected", event, {
selected: selectee.element
})
}), this._trigger("stop", event), this.helper.remove(), !1
}
}), $.widget("ui.selectmenu", {
version: "1.11.1",
defaultElement: "<select>",
options: {
appendTo: null,
disabled: null,
icons: {
button: "ui-icon-triangle-1-s"
},
position: {
my: "left top",
at: "left bottom",
collision: "none"
},
width: null,
change: null,
close: null,
focus: null,
open: null,
select: null
},
_create: function() {
var selectmenuId = this.element.uniqueId().attr("id");
this.ids = {
element: selectmenuId,
button: selectmenuId + "-button",
menu: selectmenuId + "-menu"
}, this._drawButton(), this._drawMenu(), this.options.disabled && this.disable()
},
_drawButton: function() {
var that = this,
tabindex = this.element.attr("tabindex");
this.label = $("label[for='" + this.ids.element + "']").attr("for", this.ids.button), this._on(this.label, {
click: function(event) {
this.button.focus(), event.preventDefault()
}
}), this.element.hide(), this.button = $("<span>", {
"class": "ui-selectmenu-button ui-widget ui-state-default ui-corner-all",
tabindex: tabindex || this.options.disabled ? -1 : 0,
id: this.ids.button,
role: "combobox",
"aria-expanded": "false",
"aria-autocomplete": "list",
"aria-owns": this.ids.menu,
"aria-haspopup": "true"
}).insertAfter(this.element), $("<span>", {
"class": "ui-icon " + this.options.icons.button
}).prependTo(this.button), this.buttonText = $("<span>", {
"class": "ui-selectmenu-text"
}).appendTo(this.button), this._setText(this.buttonText, this.element.find("option:selected").text()), this._resizeButton(), this._on(this.button, this._buttonEvents), this.button.one("focusin", function() {
that.menuItems || that._refreshMenu()
}), this._hoverable(this.button), this._focusable(this.button)
},
_drawMenu: function() {
var that = this;
this.menu = $("<ul>", {
"aria-hidden": "true",
"aria-labelledby": this.ids.button,
id: this.ids.menu
}), this.menuWrap = $("<div>", {
"class": "ui-selectmenu-menu ui-front"
}).append(this.menu).appendTo(this._appendTo()), this.menuInstance = this.menu.menu({
role: "listbox",
select: function(event, ui) {
event.preventDefault(), that._select(ui.item.data("ui-selectmenu-item"), event)
},
focus: function(event, ui) {
var item = ui.item.data("ui-selectmenu-item");
null != that.focusIndex && item.index !== that.focusIndex && (that._trigger("focus", event, {
item: item
}), that.isOpen || that._select(item, event)), that.focusIndex = item.index, that.button.attr("aria-activedescendant", that.menuItems.eq(item.index).attr("id"))
}
}).menu("instance"), this.menu.addClass("ui-corner-bottom").removeClass("ui-corner-all"), this.menuInstance._off(this.menu, "mouseleave"), this.menuInstance._closeOnDocumentClick = function() {
return !1
}, this.menuInstance._isDivider = function() {
return !1
}
},
refresh: function() {
this._refreshMenu(), this._setText(this.buttonText, this._getSelectedItem().text()), this.options.width || this._resizeButton()
},
_refreshMenu: function() {
this.menu.empty();
var item, options = this.element.find("option");
options.length && (this._parseOptions(options), this._renderMenu(this.menu, this.items), this.menuInstance.refresh(), this.menuItems = this.menu.find("li").not(".ui-selectmenu-optgroup"), item = this._getSelectedItem(), this.menuInstance.focus(null, item), this._setAria(item.data("ui-selectmenu-item")), this._setOption("disabled", this.element.prop("disabled")))
},
open: function(event) {
this.options.disabled || (this.menuItems ? (this.menu.find(".ui-state-focus").removeClass("ui-state-focus"), this.menuInstance.focus(null, this._getSelectedItem())) : this._refreshMenu(), this.isOpen = !0, this._toggleAttr(), this._resizeMenu(), this._position(), this._on(this.document, this._documentClick), this._trigger("open", event))
},
_position: function() {
this.menuWrap.position($.extend({
of: this.button
}, this.options.position))
},
close: function(event) {
this.isOpen && (this.isOpen = !1, this._toggleAttr(), this._off(this.document), this._trigger("close", event))
},
widget: function() {
return this.button
},
menuWidget: function() {
return this.menu
},
_renderMenu: function(ul, items) {
var that = this,
currentOptgroup = "";
$.each(items, function(index, item) {
item.optgroup !== currentOptgroup && ($("<li>", {
"class": "ui-selectmenu-optgroup ui-menu-divider" + (item.element.parent("optgroup").prop("disabled") ? " ui-state-disabled" : ""),
text: item.optgroup
}).appendTo(ul), currentOptgroup = item.optgroup), that._renderItemData(ul, item)
})
},
_renderItemData: function(ul, item) {
return this._renderItem(ul, item).data("ui-selectmenu-item", item)
},
_renderItem: function(ul, item) {
var li = $("<li>");
return item.disabled && li.addClass("ui-state-disabled"), this._setText(li, item.label), li.appendTo(ul)
},
_setText: function(element, value) {
value ? element.text(value) : element.html(" ")
},
_move: function(direction, event) {
var item, next, filter = ".ui-menu-item";
this.isOpen ? item = this.menuItems.eq(this.focusIndex) : (item = this.menuItems.eq(this.element[0].selectedIndex), filter += ":not(.ui-state-disabled)"), next = "first" === direction || "last" === direction ? item["first" === direction ? "prevAll" : "nextAll"](filter).eq(-1) : item[direction + "All"](filter).eq(0), next.length && this.menuInstance.focus(event, next)
},
_getSelectedItem: function() {
return this.menuItems.eq(this.element[0].selectedIndex)
},
_toggle: function(event) {
this[this.isOpen ? "close" : "open"](event)
},
_documentClick: {
mousedown: function(event) {
this.isOpen && ($(event.target).closest(".ui-selectmenu-menu, #" + this.ids.button).length || this.close(event))
}
},
_buttonEvents: {
mousedown: function(event) {
event.preventDefault()
},
click: "_toggle",
keydown: function(event) {
var preventDefault = !0;
switch (event.keyCode) {
case $.ui.keyCode.TAB:
case $.ui.keyCode.ESCAPE:
this.close(event), preventDefault = !1;
break;
case $.ui.keyCode.ENTER:
this.isOpen && this._selectFocusedItem(event);
break;
case $.ui.keyCode.UP:
event.altKey ? this._toggle(event) : this._move("prev", event);
break;
case $.ui.keyCode.DOWN:
event.altKey ? this._toggle(event) : this._move("next", event);
break;
case $.ui.keyCode.SPACE:
this.isOpen ? this._selectFocusedItem(event) : this._toggle(event);
break;
case $.ui.keyCode.LEFT:
this._move("prev", event);
break;
case $.ui.keyCode.RIGHT:
this._move("next", event);
break;
case $.ui.keyCode.HOME:
case $.ui.keyCode.PAGE_UP:
this._move("first", event);
break;
case $.ui.keyCode.END:
case $.ui.keyCode.PAGE_DOWN:
this._move("last", event);
break;
default:
this.menu.trigger(event), preventDefault = !1
}
preventDefault && event.preventDefault()
}
},
_selectFocusedItem: function(event) {
var item = this.menuItems.eq(this.focusIndex);
item.hasClass("ui-state-disabled") || this._select(item.data("ui-selectmenu-item"), event)
},
_select: function(item, event) {
var oldIndex = this.element[0].selectedIndex;
this.element[0].selectedIndex = item.index, this._setText(this.buttonText, item.label), this._setAria(item), this._trigger("select", event, {
item: item
}), item.index !== oldIndex && this._trigger("change", event, {
item: item
}), this.close(event)
},
_setAria: function(item) {
var id = this.menuItems.eq(item.index).attr("id");
this.button.attr({
"aria-labelledby": id,
"aria-activedescendant": id
}), this.menu.attr("aria-activedescendant", id)
},
_setOption: function(key, value) {
"icons" === key && this.button.find("span.ui-icon").removeClass(this.options.icons.button).addClass(value.button), this._super(key, value), "appendTo" === key && this.menuWrap.appendTo(this._appendTo()), "disabled" === key && (this.menuInstance.option("disabled", value), this.button.toggleClass("ui-state-disabled", value).attr("aria-disabled", value), this.element.prop("disabled", value), value ? (this.button.attr("tabindex", -1), this.close()) : this.button.attr("tabindex", 0)), "width" === key && this._resizeButton()
},
_appendTo: function() {
var element = this.options.appendTo;
return element && (element = element.jquery || element.nodeType ? $(element) : this.document.find(element).eq(0)), element && element[0] || (element = this.element.closest(".ui-front")), element.length || (element = this.document[0].body), element
},
_toggleAttr: function() {
this.button.toggleClass("ui-corner-top", this.isOpen).toggleClass("ui-corner-all", !this.isOpen).attr("aria-expanded", this.isOpen), this.menuWrap.toggleClass("ui-selectmenu-open", this.isOpen), this.menu.attr("aria-hidden", !this.isOpen)
},
_resizeButton: function() {
var width = this.options.width;
width || (width = this.element.show().outerWidth(), this.element.hide()), this.button.outerWidth(width)
},
_resizeMenu: function() {
this.menu.outerWidth(Math.max(this.button.outerWidth(), this.menu.width("").outerWidth() + 1))
},
_getCreateOptions: function() {
return {
disabled: this.element.prop("disabled")
}
},
_parseOptions: function(options) {
var data = [];
options.each(function(index, item) {
var option = $(item),
optgroup = option.parent("optgroup");
data.push({
element: option,
index: index,
value: option.attr("value"),
label: option.text(),
optgroup: optgroup.attr("label") || "",
disabled: optgroup.prop("disabled") || option.prop("disabled")
})
}), this.items = data
},
_destroy: function() {
this.menuWrap.remove(), this.button.remove(), this.element.show(), this.element.removeUniqueId(), this.label.attr("for", this.ids.element)
}
}), $.widget("ui.slider", $.ui.mouse, {
version: "1.11.1",
widgetEventPrefix: "slide",
options: {
animate: !1,
distance: 0,
max: 100,
min: 0,
orientation: "horizontal",
range: !1,
step: 1,
value: 0,
values: null,
change: null,
slide: null,
start: null,
stop: null
},
numPages: 5,
_create: function() {
this._keySliding = !1, this._mouseSliding = !1, this._animateOff = !0, this._handleIndex = null, this._detectOrientation(), this._mouseInit(), this.element.addClass("ui-slider ui-slider-" + this.orientation + " ui-widget ui-widget-content ui-corner-all"), this._refresh(), this._setOption("disabled", this.options.disabled), this._animateOff = !1
},
_refresh: function() {
this._createRange(), this._createHandles(), this._setupEvents(), this._refreshValue()
},
_createHandles: function() {
var i, handleCount, options = this.options,
existingHandles = this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),
handle = "<span class='ui-slider-handle ui-state-default ui-corner-all' tabindex='0'></span>",
handles = [];
for (handleCount = options.values && options.values.length || 1, existingHandles.length > handleCount && (existingHandles.slice(handleCount).remove(), existingHandles = existingHandles.slice(0, handleCount)), i = existingHandles.length; handleCount > i; i++) handles.push(handle);
this.handles = existingHandles.add($(handles.join("")).appendTo(this.element)), this.handle = this.handles.eq(0), this.handles.each(function(i) {
$(this).data("ui-slider-handle-index", i)
})
},
_createRange: function() {
var options = this.options,
classes = "";
options.range ? (options.range === !0 && (options.values ? options.values.length && 2 !== options.values.length ? options.values = [options.values[0], options.values[0]] : $.isArray(options.values) && (options.values = options.values.slice(0)) : options.values = [this._valueMin(), this._valueMin()]), this.range && this.range.length ? this.range.removeClass("ui-slider-range-min ui-slider-range-max").css({
left: "",
bottom: ""
}) : (this.range = $("<div></div>").appendTo(this.element), classes = "ui-slider-range ui-widget-header ui-corner-all"), this.range.addClass(classes + ("min" === options.range || "max" === options.range ? " ui-slider-range-" + options.range : ""))) : (this.range && this.range.remove(), this.range = null)
},
_setupEvents: function() {
this._off(this.handles), this._on(this.handles, this._handleEvents), this._hoverable(this.handles), this._focusable(this.handles)
},
_destroy: function() {
this.handles.remove(), this.range && this.range.remove(), this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"), this._mouseDestroy()
},
_mouseCapture: function(event) {
var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle, that = this,
o = this.options;
return o.disabled ? !1 : (this.elementSize = {
width: this.element.outerWidth(),
height: this.element.outerHeight()
}, this.elementOffset = this.element.offset(), position = {
x: event.pageX,
y: event.pageY
}, normValue = this._normValueFromMouse(position), distance = this._valueMax() - this._valueMin() + 1, this.handles.each(function(i) {
var thisDistance = Math.abs(normValue - that.values(i));
(distance > thisDistance || distance === thisDistance && (i === that._lastChangedValue || that.values(i) === o.min)) && (distance = thisDistance, closestHandle = $(this), index = i)
}), allowed = this._start(event, index), allowed === !1 ? !1 : (this._mouseSliding = !0, this._handleIndex = index, closestHandle.addClass("ui-state-active").focus(), offset = closestHandle.offset(), mouseOverHandle = !$(event.target).parents().addBack().is(".ui-slider-handle"), this._clickOffset = mouseOverHandle ? {
left: 0,
top: 0
} : {
left: event.pageX - offset.left - closestHandle.width() / 2,
top: event.pageY - offset.top - closestHandle.height() / 2 - (parseInt(closestHandle.css("borderTopWidth"), 10) || 0) - (parseInt(closestHandle.css("borderBottomWidth"), 10) || 0) + (parseInt(closestHandle.css("marginTop"), 10) || 0)
}, this.handles.hasClass("ui-state-hover") || this._slide(event, index, normValue), this._animateOff = !0, !0))
},
_mouseStart: function() {
return !0
},
_mouseDrag: function(event) {
var position = {
x: event.pageX,
y: event.pageY
}, normValue = this._normValueFromMouse(position);
return this._slide(event, this._handleIndex, normValue), !1
},
_mouseStop: function(event) {
return this.handles.removeClass("ui-state-active"), this._mouseSliding = !1, this._stop(event, this._handleIndex), this._change(event, this._handleIndex), this._handleIndex = null, this._clickOffset = null, this._animateOff = !1, !1
},
_detectOrientation: function() {
this.orientation = "vertical" === this.options.orientation ? "vertical" : "horizontal"
},
_normValueFromMouse: function(position) {
var pixelTotal, pixelMouse, percentMouse, valueTotal, valueMouse;
return "horizontal" === this.orientation ? (pixelTotal = this.elementSize.width, pixelMouse = position.x - this.elementOffset.left - (this._clickOffset ? this._clickOffset.left : 0)) : (pixelTotal = this.elementSize.height, pixelMouse = position.y - this.elementOffset.top - (this._clickOffset ? this._clickOffset.top : 0)), percentMouse = pixelMouse / pixelTotal, percentMouse > 1 && (percentMouse = 1), 0 > percentMouse && (percentMouse = 0), "vertical" === this.orientation && (percentMouse = 1 - percentMouse), valueTotal = this._valueMax() - this._valueMin(), valueMouse = this._valueMin() + percentMouse * valueTotal, this._trimAlignValue(valueMouse)
},
_start: function(event, index) {
var uiHash = {
handle: this.handles[index],
value: this.value()
};
return this.options.values && this.options.values.length && (uiHash.value = this.values(index), uiHash.values = this.values()), this._trigger("start", event, uiHash)
},
_slide: function(event, index, newVal) {
var otherVal, newValues, allowed;
this.options.values && this.options.values.length ? (otherVal = this.values(index ? 0 : 1), 2 === this.options.values.length && this.options.range === !0 && (0 === index && newVal > otherVal || 1 === index && otherVal > newVal) && (newVal = otherVal), newVal !== this.values(index) && (newValues = this.values(), newValues[index] = newVal, allowed = this._trigger("slide", event, {
handle: this.handles[index],
value: newVal,
values: newValues
}), otherVal = this.values(index ? 0 : 1), allowed !== !1 && this.values(index, newVal))) : newVal !== this.value() && (allowed = this._trigger("slide", event, {
handle: this.handles[index],
value: newVal
}), allowed !== !1 && this.value(newVal))
},
_stop: function(event, index) {
var uiHash = {
handle: this.handles[index],
value: this.value()
};
this.options.values && this.options.values.length && (uiHash.value = this.values(index), uiHash.values = this.values()), this._trigger("stop", event, uiHash)
},
_change: function(event, index) {
if (!this._keySliding && !this._mouseSliding) {
var uiHash = {
handle: this.handles[index],
value: this.value()
};
this.options.values && this.options.values.length && (uiHash.value = this.values(index), uiHash.values = this.values()), this._lastChangedValue = index, this._trigger("change", event, uiHash)
}
},
value: function(newValue) {
return arguments.length ? (this.options.value = this._trimAlignValue(newValue), this._refreshValue(), void this._change(null, 0)) : this._value()
},
values: function(index, newValue) {
var vals, newValues, i;
if (arguments.length > 1) return this.options.values[index] = this._trimAlignValue(newValue), this._refreshValue(), void this._change(null, index);
if (!arguments.length) return this._values();
if (!$.isArray(arguments[0])) return this.options.values && this.options.values.length ? this._values(index) : this.value();
for (vals = this.options.values, newValues = arguments[0], i = 0; i < vals.length; i += 1) vals[i] = this._trimAlignValue(newValues[i]), this._change(null, i);
this._refreshValue()
},
_setOption: function(key, value) {
var i, valsLength = 0;
switch ("range" === key && this.options.range === !0 && ("min" === value ? (this.options.value = this._values(0), this.options.values = null) : "max" === value && (this.options.value = this._values(this.options.values.length - 1), this.options.values = null)), $.isArray(this.options.values) && (valsLength = this.options.values.length), "disabled" === key && this.element.toggleClass("ui-state-disabled", !! value), this._super(key, value), key) {
case "orientation":
this._detectOrientation(), this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-" + this.orientation), this._refreshValue(), this.handles.css("horizontal" === value ? "bottom" : "left", "");
break;
case "value":
this._animateOff = !0, this._refreshValue(), this._change(null, 0), this._animateOff = !1;
break;
case "values":
for (this._animateOff = !0, this._refreshValue(), i = 0; valsLength > i; i += 1) this._change(null, i);
this._animateOff = !1;
break;
case "min":
case "max":
this._animateOff = !0, this._refreshValue(), this._animateOff = !1;
break;
case "range":
this._animateOff = !0, this._refresh(), this._animateOff = !1
}
},
_value: function() {
var val = this.options.value;
return val = this._trimAlignValue(val)
},
_values: function(index) {
var val, vals, i;
if (arguments.length) return val = this.options.values[index], val = this._trimAlignValue(val);
if (this.options.values && this.options.values.length) {
for (vals = this.options.values.slice(), i = 0; i < vals.length; i += 1) vals[i] = this._trimAlignValue(vals[i]);
return vals
}
return []
},
_trimAlignValue: function(val) {
if (val <= this._valueMin()) return this._valueMin();
if (val >= this._valueMax()) return this._valueMax();
var step = this.options.step > 0 ? this.options.step : 1,
valModStep = (val - this._valueMin()) % step,
alignValue = val - valModStep;
return 2 * Math.abs(valModStep) >= step && (alignValue += valModStep > 0 ? step : -step), parseFloat(alignValue.toFixed(5))
},
_valueMin: function() {
return this.options.min
},
_valueMax: function() {
return this.options.max
},
_refreshValue: function() {
var lastValPercent, valPercent, value, valueMin, valueMax, oRange = this.options.range,
o = this.options,
that = this,
animate = this._animateOff ? !1 : o.animate,
_set = {};
this.options.values && this.options.values.length ? this.handles.each(function(i) {
valPercent = (that.values(i) - that._valueMin()) / (that._valueMax() - that._valueMin()) * 100, _set["horizontal" === that.orientation ? "left" : "bottom"] = valPercent + "%", $(this).stop(1, 1)[animate ? "animate" : "css"](_set, o.animate), that.options.range === !0 && ("horizontal" === that.orientation ? (0 === i && that.range.stop(1, 1)[animate ? "animate" : "css"]({
left: valPercent + "%"
}, o.animate), 1 === i && that.range[animate ? "animate" : "css"]({
width: valPercent - lastValPercent + "%"
}, {
queue: !1,
duration: o.animate
})) : (0 === i && that.range.stop(1, 1)[animate ? "animate" : "css"]({
bottom: valPercent + "%"
}, o.animate), 1 === i && that.range[animate ? "animate" : "css"]({
height: valPercent - lastValPercent + "%"
}, {
queue: !1,
duration: o.animate
}))), lastValPercent = valPercent
}) : (value = this.value(), valueMin = this._valueMin(), valueMax = this._valueMax(), valPercent = valueMax !== valueMin ? (value - valueMin) / (valueMax - valueMin) * 100 : 0, _set["horizontal" === this.orientation ? "left" : "bottom"] = valPercent + "%", this.handle.stop(1, 1)[animate ? "animate" : "css"](_set, o.animate), "min" === oRange && "horizontal" === this.orientation && this.range.stop(1, 1)[animate ? "animate" : "css"]({
width: valPercent + "%"
}, o.animate), "max" === oRange && "horizontal" === this.orientation && this.range[animate ? "animate" : "css"]({
width: 100 - valPercent + "%"
}, {
queue: !1,
duration: o.animate
}), "min" === oRange && "vertical" === this.orientation && this.range.stop(1, 1)[animate ? "animate" : "css"]({
height: valPercent + "%"
}, o.animate), "max" === oRange && "vertical" === this.orientation && this.range[animate ? "animate" : "css"]({
height: 100 - valPercent + "%"
}, {
queue: !1,
duration: o.animate
}))
},
_handleEvents: {
keydown: function(event) {
var allowed, curVal, newVal, step, index = $(event.target).data("ui-slider-handle-index");
switch (event.keyCode) {
case $.ui.keyCode.HOME:
case $.ui.keyCode.END:
case $.ui.keyCode.PAGE_UP:
case $.ui.keyCode.PAGE_DOWN:
case $.ui.keyCode.UP:
case $.ui.keyCode.RIGHT:
case $.ui.keyCode.DOWN:
case $.ui.keyCode.LEFT:
if (event.preventDefault(), !this._keySliding && (this._keySliding = !0, $(event.target).addClass("ui-state-active"), allowed = this._start(event, index), allowed === !1)) return
}
switch (step = this.options.step, curVal = newVal = this.options.values && this.options.values.length ? this.values(index) : this.value(), event.keyCode) {
case $.ui.keyCode.HOME:
newVal = this._valueMin();
break;
case $.ui.keyCode.END:
newVal = this._valueMax();
break;
case $.ui.keyCode.PAGE_UP:
newVal = this._trimAlignValue(curVal + (this._valueMax() - this._valueMin()) / this.numPages);
break;
case $.ui.keyCode.PAGE_DOWN:
newVal = this._trimAlignValue(curVal - (this._valueMax() - this._valueMin()) / this.numPages);
break;
case $.ui.keyCode.UP:
case $.ui.keyCode.RIGHT:
if (curVal === this._valueMax()) return;
newVal = this._trimAlignValue(curVal + step);
break;
case $.ui.keyCode.DOWN:
case $.ui.keyCode.LEFT:
if (curVal === this._valueMin()) return;
newVal = this._trimAlignValue(curVal - step)
}
this._slide(event, index, newVal)
},
keyup: function(event) {
var index = $(event.target).data("ui-slider-handle-index");
this._keySliding && (this._keySliding = !1, this._stop(event, index), this._change(event, index), $(event.target).removeClass("ui-state-active"))
}
}
}), $.widget("ui.sortable", $.ui.mouse, {
version: "1.11.1",
widgetEventPrefix: "sort",
ready: !1,
options: {
appendTo: "parent",
axis: !1,
connectWith: !1,
containment: !1,
cursor: "auto",
cursorAt: !1,
dropOnEmpty: !0,
forcePlaceholderSize: !1,
forceHelperSize: !1,
grid: !1,
handle: !1,
helper: "original",
items: "> *",
opacity: !1,
placeholder: !1,
revert: !1,
scroll: !0,
scrollSensitivity: 20,
scrollSpeed: 20,
scope: "default",
tolerance: "intersect",
zIndex: 1e3,
activate: null,
beforeStop: null,
change: null,
deactivate: null,
out: null,
over: null,
receive: null,
remove: null,
sort: null,
start: null,
stop: null,
update: null
},
_isOverAxis: function(x, reference, size) {
return x >= reference && reference + size > x
},
_isFloating: function(item) {
return /left|right/.test(item.css("float")) || /inline|table-cell/.test(item.css("display"))
},
_create: function() {
var o = this.options;
this.containerCache = {}, this.element.addClass("ui-sortable"), this.refresh(), this.floating = this.items.length ? "x" === o.axis || this._isFloating(this.items[0].item) : !1, this.offset = this.element.offset(), this._mouseInit(), this._setHandleClassName(), this.ready = !0
},
_setOption: function(key, value) {
this._super(key, value), "handle" === key && this._setHandleClassName()
},
_setHandleClassName: function() {
this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"), $.each(this.items, function() {
(this.instance.options.handle ? this.item.find(this.instance.options.handle) : this.item).addClass("ui-sortable-handle")
})
},
_destroy: function() {
this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"), this._mouseDestroy();
for (var i = this.items.length - 1; i >= 0; i--) this.items[i].item.removeData(this.widgetName + "-item");
return this
},
_mouseCapture: function(event, overrideHandle) {
var currentItem = null,
validHandle = !1,
that = this;
return this.reverting ? !1 : this.options.disabled || "static" === this.options.type ? !1 : (this._refreshItems(event), $(event.target).parents().each(function() {
return $.data(this, that.widgetName + "-item") === that ? (currentItem = $(this), !1) : void 0
}), $.data(event.target, that.widgetName + "-item") === that && (currentItem = $(event.target)), currentItem && (!this.options.handle || overrideHandle || ($(this.options.handle, currentItem).find("*").addBack().each(function() {
this === event.target && (validHandle = !0)
}), validHandle)) ? (this.currentItem = currentItem, this._removeCurrentsFromItems(), !0) : !1)
},
_mouseStart: function(event, overrideHandle, noActivation) {
var i, body, o = this.options;
if (this.currentContainer = this, this.refreshPositions(), this.helper = this._createHelper(event), this._cacheHelperProportions(), this._cacheMargins(), this.scrollParent = this.helper.scrollParent(), this.offset = this.currentItem.offset(), this.offset = {
top: this.offset.top - this.margins.top,
left: this.offset.left - this.margins.left
}, $.extend(this.offset, {
click: {
left: event.pageX - this.offset.left,
top: event.pageY - this.offset.top
},
parent: this._getParentOffset(),
relative: this._getRelativeOffset()
}), this.helper.css("position", "absolute"), this.cssPosition = this.helper.css("position"), this.originalPosition = this._generatePosition(event), this.originalPageX = event.pageX, this.originalPageY = event.pageY, o.cursorAt && this._adjustOffsetFromHelper(o.cursorAt), this.domPosition = {
prev: this.currentItem.prev()[0],
parent: this.currentItem.parent()[0]
}, this.helper[0] !== this.currentItem[0] && this.currentItem.hide(), this._createPlaceholder(), o.containment && this._setContainment(), o.cursor && "auto" !== o.cursor && (body = this.document.find("body"), this.storedCursor = body.css("cursor"), body.css("cursor", o.cursor), this.storedStylesheet = $("<style>*{ cursor: " + o.cursor + " !important; }</style>").appendTo(body)), o.opacity && (this.helper.css("opacity") && (this._storedOpacity = this.helper.css("opacity")), this.helper.css("opacity", o.opacity)), o.zIndex && (this.helper.css("zIndex") && (this._storedZIndex = this.helper.css("zIndex")), this.helper.css("zIndex", o.zIndex)), this.scrollParent[0] !== document && "HTML" !== this.scrollParent[0].tagName && (this.overflowOffset = this.scrollParent.offset()), this._trigger("start", event, this._uiHash()), this._preserveHelperProportions || this._cacheHelperProportions(), !noActivation)
for (i = this.containers.length - 1; i >= 0; i--) this.containers[i]._trigger("activate", event, this._uiHash(this));
return $.ui.ddmanager && ($.ui.ddmanager.current = this), $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event), this.dragging = !0, this.helper.addClass("ui-sortable-helper"), this._mouseDrag(event), !0
},
_mouseDrag: function(event) {
var i, item, itemElement, intersection, o = this.options,
scrolled = !1;
for (this.position = this._generatePosition(event), this.positionAbs = this._convertPositionTo("absolute"), this.lastPositionAbs || (this.lastPositionAbs = this.positionAbs), this.options.scroll && (this.scrollParent[0] !== document && "HTML" !== this.scrollParent[0].tagName ? (this.overflowOffset.top + this.scrollParent[0].offsetHeight - event.pageY < o.scrollSensitivity ? this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop + o.scrollSpeed : event.pageY - this.overflowOffset.top < o.scrollSensitivity && (this.scrollParent[0].scrollTop = scrolled = this.scrollParent[0].scrollTop - o.scrollSpeed), this.overflowOffset.left + this.scrollParent[0].offsetWidth - event.pageX < o.scrollSensitivity ? this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft + o.scrollSpeed : event.pageX - this.overflowOffset.left < o.scrollSensitivity && (this.scrollParent[0].scrollLeft = scrolled = this.scrollParent[0].scrollLeft - o.scrollSpeed)) : (event.pageY - $(document).scrollTop() < o.scrollSensitivity ? scrolled = $(document).scrollTop($(document).scrollTop() - o.scrollSpeed) : $(window).height() - (event.pageY - $(document).scrollTop()) < o.scrollSensitivity && (scrolled = $(document).scrollTop($(document).scrollTop() + o.scrollSpeed)), event.pageX - $(document).scrollLeft() < o.scrollSensitivity ? scrolled = $(document).scrollLeft($(document).scrollLeft() - o.scrollSpeed) : $(window).width() - (event.pageX - $(document).scrollLeft()) < o.scrollSensitivity && (scrolled = $(document).scrollLeft($(document).scrollLeft() + o.scrollSpeed))), scrolled !== !1 && $.ui.ddmanager && !o.dropBehaviour && $.ui.ddmanager.prepareOffsets(this, event)), this.positionAbs = this._convertPositionTo("absolute"), this.options.axis && "y" === this.options.axis || (this.helper[0].style.left = this.position.left + "px"), this.options.axis && "x" === this.options.axis || (this.helper[0].style.top = this.position.top + "px"), i = this.items.length - 1; i >= 0; i--)
if (item = this.items[i], itemElement = item.item[0], intersection = this._intersectsWithPointer(item), intersection && item.instance === this.currentContainer && itemElement !== this.currentItem[0] && this.placeholder[1 === intersection ? "next" : "prev"]()[0] !== itemElement && !$.contains(this.placeholder[0], itemElement) && ("semi-dynamic" === this.options.type ? !$.contains(this.element[0], itemElement) : !0)) {
if (this.direction = 1 === intersection ? "down" : "up", "pointer" !== this.options.tolerance && !this._intersectsWithSides(item)) break;
this._rearrange(event, item), this._trigger("change", event, this._uiHash());
break
}
return this._contactContainers(event), $.ui.ddmanager && $.ui.ddmanager.drag(this, event), this._trigger("sort", event, this._uiHash()), this.lastPositionAbs = this.positionAbs, !1
},
_mouseStop: function(event, noPropagation) {
if (event) {
if ($.ui.ddmanager && !this.options.dropBehaviour && $.ui.ddmanager.drop(this, event), this.options.revert) {
var that = this,
cur = this.placeholder.offset(),
axis = this.options.axis,
animation = {};
axis && "x" !== axis || (animation.left = cur.left - this.offset.parent.left - this.margins.left + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollLeft)), axis && "y" !== axis || (animation.top = cur.top - this.offset.parent.top - this.margins.top + (this.offsetParent[0] === document.body ? 0 : this.offsetParent[0].scrollTop)), this.reverting = !0, $(this.helper).animate(animation, parseInt(this.options.revert, 10) || 500, function() {
that._clear(event)
})
} else this._clear(event, noPropagation);
return !1
}
},
cancel: function() {
if (this.dragging) {
this._mouseUp({
target: null
}), "original" === this.options.helper ? this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper") : this.currentItem.show();
for (var i = this.containers.length - 1; i >= 0; i--) this.containers[i]._trigger("deactivate", null, this._uiHash(this)), this.containers[i].containerCache.over && (this.containers[i]._trigger("out", null, this._uiHash(this)), this.containers[i].containerCache.over = 0)
}
return this.placeholder && (this.placeholder[0].parentNode && this.placeholder[0].parentNode.removeChild(this.placeholder[0]), "original" !== this.options.helper && this.helper && this.helper[0].parentNode && this.helper.remove(), $.extend(this, {
helper: null,
dragging: !1,
reverting: !1,
_noFinalSort: null
}), this.domPosition.prev ? $(this.domPosition.prev).after(this.currentItem) : $(this.domPosition.parent).prepend(this.currentItem)), this
},
serialize: function(o) {
var items = this._getItemsAsjQuery(o && o.connected),
str = [];
return o = o || {}, $(items).each(function() {
var res = ($(o.item || this).attr(o.attribute || "id") || "").match(o.expression || /(.+)[\-=_](.+)/);
res && str.push((o.key || res[1] + "[]") + "=" + (o.key && o.expression ? res[1] : res[2]))
}), !str.length && o.key && str.push(o.key + "="), str.join("&")
},
toArray: function(o) {
var items = this._getItemsAsjQuery(o && o.connected),
ret = [];
return o = o || {}, items.each(function() {
ret.push($(o.item || this).attr(o.attribute || "id") || "")
}), ret
},
_intersectsWith: function(item) {
var x1 = this.positionAbs.left,
x2 = x1 + this.helperProportions.width,
y1 = this.positionAbs.top,
y2 = y1 + this.helperProportions.height,
l = item.left,
r = l + item.width,
t = item.top,
b = t + item.height,
dyClick = this.offset.click.top,
dxClick = this.offset.click.left,
isOverElementHeight = "x" === this.options.axis || y1 + dyClick > t && b > y1 + dyClick,
isOverElementWidth = "y" === this.options.axis || x1 + dxClick > l && r > x1 + dxClick,
isOverElement = isOverElementHeight && isOverElementWidth;
return "pointer" === this.options.tolerance || this.options.forcePointerForContainers || "pointer" !== this.options.tolerance && this.helperProportions[this.floating ? "width" : "height"] > item[this.floating ? "width" : "height"] ? isOverElement : l < x1 + this.helperProportions.width / 2 && x2 - this.helperProportions.width / 2 < r && t < y1 + this.helperProportions.height / 2 && y2 - this.helperProportions.height / 2 < b
},
_intersectsWithPointer: function(item) {
var isOverElementHeight = "x" === this.options.axis || this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top, item.height),
isOverElementWidth = "y" === this.options.axis || this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left, item.width),
isOverElement = isOverElementHeight && isOverElementWidth,
verticalDirection = this._getDragVerticalDirection(),
horizontalDirection = this._getDragHorizontalDirection();
return isOverElement ? this.floating ? horizontalDirection && "right" === horizontalDirection || "down" === verticalDirection ? 2 : 1 : verticalDirection && ("down" === verticalDirection ? 2 : 1) : !1
},
_intersectsWithSides: function(item) {
var isOverBottomHalf = this._isOverAxis(this.positionAbs.top + this.offset.click.top, item.top + item.height / 2, item.height),
isOverRightHalf = this._isOverAxis(this.positionAbs.left + this.offset.click.left, item.left + item.width / 2, item.width),
verticalDirection = this._getDragVerticalDirection(),
horizontalDirection = this._getDragHorizontalDirection();
return this.floating && horizontalDirection ? "right" === horizontalDirection && isOverRightHalf || "left" === horizontalDirection && !isOverRightHalf : verticalDirection && ("down" === verticalDirection && isOverBottomHalf || "up" === verticalDirection && !isOverBottomHalf)
},
_getDragVerticalDirection: function() {
var delta = this.positionAbs.top - this.lastPositionAbs.top;
return 0 !== delta && (delta > 0 ? "down" : "up")
},
_getDragHorizontalDirection: function() {
var delta = this.positionAbs.left - this.lastPositionAbs.left;
return 0 !== delta && (delta > 0 ? "right" : "left")
},
refresh: function(event) {
return this._refreshItems(event), this._setHandleClassName(), this.refreshPositions(), this
},
_connectWith: function() {
var options = this.options;
return options.connectWith.constructor === String ? [options.connectWith] : options.connectWith
},
_getItemsAsjQuery: function(connected) {
function addItems() {
items.push(this)
}
var i, j, cur, inst, items = [],
queries = [],
connectWith = this._connectWith();
if (connectWith && connected)
for (i = connectWith.length - 1; i >= 0; i--)
for (cur = $(connectWith[i]), j = cur.length - 1; j >= 0; j--) inst = $.data(cur[j], this.widgetFullName), inst && inst !== this && !inst.options.disabled && queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element) : $(inst.options.items, inst.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), inst]);
for (queries.push([$.isFunction(this.options.items) ? this.options.items.call(this.element, null, {
options: this.options,
item: this.currentItem
}) : $(this.options.items, this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), this]), i = queries.length - 1; i >= 0; i--) queries[i][0].each(addItems);
return $(items)
},
_removeCurrentsFromItems: function() {
var list = this.currentItem.find(":data(" + this.widgetName + "-item)");
this.items = $.grep(this.items, function(item) {
for (var j = 0; j < list.length; j++)
if (list[j] === item.item[0]) return !1;
return !0
})
},
_refreshItems: function(event) {
this.items = [], this.containers = [this];
var i, j, cur, inst, targetData, _queries, item, queriesLength, items = this.items,
queries = [
[$.isFunction(this.options.items) ? this.options.items.call(this.element[0], event, {
item: this.currentItem
}) : $(this.options.items, this.element), this]
],
connectWith = this._connectWith();
if (connectWith && this.ready)
for (i = connectWith.length - 1; i >= 0; i--)
for (cur = $(connectWith[i]), j = cur.length - 1; j >= 0; j--) inst = $.data(cur[j], this.widgetFullName), inst && inst !== this && !inst.options.disabled && (queries.push([$.isFunction(inst.options.items) ? inst.options.items.call(inst.element[0], event, {
item: this.currentItem
}) : $(inst.options.items, inst.element), inst]), this.containers.push(inst));
for (i = queries.length - 1; i >= 0; i--)
for (targetData = queries[i][1], _queries = queries[i][0], j = 0, queriesLength = _queries.length; queriesLength > j; j++) item = $(_queries[j]), item.data(this.widgetName + "-item", targetData), items.push({
item: item,
instance: targetData,
width: 0,
height: 0,
left: 0,
top: 0
})
},
refreshPositions: function(fast) {
this.offsetParent && this.helper && (this.offset.parent = this._getParentOffset());
var i, item, t, p;
for (i = this.items.length - 1; i >= 0; i--) item = this.items[i], item.instance !== this.currentContainer && this.currentContainer && item.item[0] !== this.currentItem[0] || (t = this.options.toleranceElement ? $(this.options.toleranceElement, item.item) : item.item, fast || (item.width = t.outerWidth(), item.height = t.outerHeight()), p = t.offset(), item.left = p.left, item.top = p.top);
if (this.options.custom && this.options.custom.refreshContainers) this.options.custom.refreshContainers.call(this);
else
for (i = this.containers.length - 1; i >= 0; i--) p = this.containers[i].element.offset(), this.containers[i].containerCache.left = p.left, this.containers[i].containerCache.top = p.top, this.containers[i].containerCache.width = this.containers[i].element.outerWidth(), this.containers[i].containerCache.height = this.containers[i].element.outerHeight();
return this
},
_createPlaceholder: function(that) {
that = that || this;
var className, o = that.options;
o.placeholder && o.placeholder.constructor !== String || (className = o.placeholder, o.placeholder = {
element: function() {
var nodeName = that.currentItem[0].nodeName.toLowerCase(),
element = $("<" + nodeName + ">", that.document[0]).addClass(className || that.currentItem[0].className + " ui-sortable-placeholder").removeClass("ui-sortable-helper");
return "tr" === nodeName ? that.currentItem.children().each(function() {
$("<td> </td>", that.document[0]).attr("colspan", $(this).attr("colspan") || 1).appendTo(element)
}) : "img" === nodeName && element.attr("src", that.currentItem.attr("src")), className || element.css("visibility", "hidden"), element
},
update: function(container, p) {
(!className || o.forcePlaceholderSize) && (p.height() || p.height(that.currentItem.innerHeight() - parseInt(that.currentItem.css("paddingTop") || 0, 10) - parseInt(that.currentItem.css("paddingBottom") || 0, 10)), p.width() || p.width(that.currentItem.innerWidth() - parseInt(that.currentItem.css("paddingLeft") || 0, 10) - parseInt(that.currentItem.css("paddingRight") || 0, 10)))
}
}), that.placeholder = $(o.placeholder.element.call(that.element, that.currentItem)), that.currentItem.after(that.placeholder), o.placeholder.update(that, that.placeholder)
},
_contactContainers: function(event) {
var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom, floating, axis, innermostContainer = null,
innermostIndex = null;
for (i = this.containers.length - 1; i >= 0; i--)
if (!$.contains(this.currentItem[0], this.containers[i].element[0]))
if (this._intersectsWith(this.containers[i].containerCache)) {
if (innermostContainer && $.contains(this.containers[i].element[0], innermostContainer.element[0])) continue;
innermostContainer = this.containers[i], innermostIndex = i
} else this.containers[i].containerCache.over && (this.containers[i]._trigger("out", event, this._uiHash(this)), this.containers[i].containerCache.over = 0);
if (innermostContainer)
if (1 === this.containers.length) this.containers[innermostIndex].containerCache.over || (this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)), this.containers[innermostIndex].containerCache.over = 1);
else {
for (dist = 1e4, itemWithLeastDistance = null, floating = innermostContainer.floating || this._isFloating(this.currentItem), posProperty = floating ? "left" : "top", sizeProperty = floating ? "width" : "height", axis = floating ? "clientX" : "clientY", j = this.items.length - 1; j >= 0; j--) $.contains(this.containers[innermostIndex].element[0], this.items[j].item[0]) && this.items[j].item[0] !== this.currentItem[0] && (cur = this.items[j].item.offset()[posProperty], nearBottom = !1, event[axis] - cur > this.items[j][sizeProperty] / 2 && (nearBottom = !0), Math.abs(event[axis] - cur) < dist && (dist = Math.abs(event[axis] - cur), itemWithLeastDistance = this.items[j], this.direction = nearBottom ? "up" : "down"));
if (!itemWithLeastDistance && !this.options.dropOnEmpty) return;
if (this.currentContainer === this.containers[innermostIndex]) return;
itemWithLeastDistance ? this._rearrange(event, itemWithLeastDistance, null, !0) : this._rearrange(event, null, this.containers[innermostIndex].element, !0), this._trigger("change", event, this._uiHash()), this.containers[innermostIndex]._trigger("change", event, this._uiHash(this)), this.currentContainer = this.containers[innermostIndex], this.options.placeholder.update(this.currentContainer, this.placeholder), this.containers[innermostIndex]._trigger("over", event, this._uiHash(this)), this.containers[innermostIndex].containerCache.over = 1
}
},
_createHelper: function(event) {
var o = this.options,
helper = $.isFunction(o.helper) ? $(o.helper.apply(this.element[0], [event, this.currentItem])) : "clone" === o.helper ? this.currentItem.clone() : this.currentItem;
return helper.parents("body").length || $("parent" !== o.appendTo ? o.appendTo : this.currentItem[0].parentNode)[0].appendChild(helper[0]), helper[0] === this.currentItem[0] && (this._storedCSS = {
width: this.currentItem[0].style.width,
height: this.currentItem[0].style.height,
position: this.currentItem.css("position"),
top: this.currentItem.css("top"),
left: this.currentItem.css("left")
}), (!helper[0].style.width || o.forceHelperSize) && helper.width(this.currentItem.width()), (!helper[0].style.height || o.forceHelperSize) && helper.height(this.currentItem.height()), helper
},
_adjustOffsetFromHelper: function(obj) {
"string" == typeof obj && (obj = obj.split(" ")), $.isArray(obj) && (obj = {
left: +obj[0],
top: +obj[1] || 0
}), "left" in obj && (this.offset.click.left = obj.left + this.margins.left), "right" in obj && (this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left), "top" in obj && (this.offset.click.top = obj.top + this.margins.top), "bottom" in obj && (this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top)
},
_getParentOffset: function() {
this.offsetParent = this.helper.offsetParent();
var po = this.offsetParent.offset();
return "absolute" === this.cssPosition && this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0]) && (po.left += this.scrollParent.scrollLeft(), po.top += this.scrollParent.scrollTop()), (this.offsetParent[0] === document.body || this.offsetParent[0].tagName && "html" === this.offsetParent[0].tagName.toLowerCase() && $.ui.ie) && (po = {
top: 0,
left: 0
}), {
top: po.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0),
left: po.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0)
}
},
_getRelativeOffset: function() {
if ("relative" === this.cssPosition) {
var p = this.currentItem.position();
return {
top: p.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(),
left: p.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft()
}
}
return {
top: 0,
left: 0
}
},
_cacheMargins: function() {
this.margins = {
left: parseInt(this.currentItem.css("marginLeft"), 10) || 0,
top: parseInt(this.currentItem.css("marginTop"), 10) || 0
}
},
_cacheHelperProportions: function() {
this.helperProportions = {
width: this.helper.outerWidth(),
height: this.helper.outerHeight()
}
},
_setContainment: function() {
var ce, co, over, o = this.options;
"parent" === o.containment && (o.containment = this.helper[0].parentNode), ("document" === o.containment || "window" === o.containment) && (this.containment = [0 - this.offset.relative.left - this.offset.parent.left, 0 - this.offset.relative.top - this.offset.parent.top, $("document" === o.containment ? document : window).width() - this.helperProportions.width - this.margins.left, ($("document" === o.containment ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]), /^(document|window|parent)$/.test(o.containment) || (ce = $(o.containment)[0], co = $(o.containment).offset(), over = "hidden" !== $(ce).css("overflow"), this.containment = [co.left + (parseInt($(ce).css("borderLeftWidth"), 10) || 0) + (parseInt($(ce).css("paddingLeft"), 10) || 0) - this.margins.left, co.top + (parseInt($(ce).css("borderTopWidth"), 10) || 0) + (parseInt($(ce).css("paddingTop"), 10) || 0) - this.margins.top, co.left + (over ? Math.max(ce.scrollWidth, ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"), 10) || 0) - (parseInt($(ce).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left, co.top + (over ? Math.max(ce.scrollHeight, ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"), 10) || 0) - (parseInt($(ce).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top])
},
_convertPositionTo: function(d, pos) {
pos || (pos = this.position);
var mod = "absolute" === d ? 1 : -1,
scroll = "absolute" !== this.cssPosition || this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,
scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);
return {
top: pos.top + this.offset.relative.top * mod + this.offset.parent.top * mod - ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()) * mod,
left: pos.left + this.offset.relative.left * mod + this.offset.parent.left * mod - ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft()) * mod
}
},
_generatePosition: function(event) {
var top, left, o = this.options,
pageX = event.pageX,
pageY = event.pageY,
scroll = "absolute" !== this.cssPosition || this.scrollParent[0] !== document && $.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent,
scrollIsRootNode = /(html|body)/i.test(scroll[0].tagName);
return "relative" !== this.cssPosition || this.scrollParent[0] !== document && this.scrollParent[0] !== this.offsetParent[0] || (this.offset.relative = this._getRelativeOffset()), this.originalPosition && (this.containment && (event.pageX - this.offset.click.left < this.containment[0] && (pageX = this.containment[0] + this.offset.click.left), event.pageY - this.offset.click.top < this.containment[1] && (pageY = this.containment[1] + this.offset.click.top), event.pageX - this.offset.click.left > this.containment[2] && (pageX = this.containment[2] + this.offset.click.left), event.pageY - this.offset.click.top > this.containment[3] && (pageY = this.containment[3] + this.offset.click.top)), o.grid && (top = this.originalPageY + Math.round((pageY - this.originalPageY) / o.grid[1]) * o.grid[1], pageY = this.containment ? top - this.offset.click.top >= this.containment[1] && top - this.offset.click.top <= this.containment[3] ? top : top - this.offset.click.top >= this.containment[1] ? top - o.grid[1] : top + o.grid[1] : top, left = this.originalPageX + Math.round((pageX - this.originalPageX) / o.grid[0]) * o.grid[0], pageX = this.containment ? left - this.offset.click.left >= this.containment[0] && left - this.offset.click.left <= this.containment[2] ? left : left - this.offset.click.left >= this.containment[0] ? left - o.grid[0] : left + o.grid[0] : left)), {
top: pageY - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + ("fixed" === this.cssPosition ? -this.scrollParent.scrollTop() : scrollIsRootNode ? 0 : scroll.scrollTop()),
left: pageX - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + ("fixed" === this.cssPosition ? -this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 : scroll.scrollLeft())
}
},
_rearrange: function(event, i, a, hardRefresh) {
a ? a[0].appendChild(this.placeholder[0]) : i.item[0].parentNode.insertBefore(this.placeholder[0], "down" === this.direction ? i.item[0] : i.item[0].nextSibling), this.counter = this.counter ? ++this.counter : 1;
var counter = this.counter;
this._delay(function() {
counter === this.counter && this.refreshPositions(!hardRefresh)
})
},
_clear: function(event, noPropagation) {
function delayEvent(type, instance, container) {
return function(event) {
container._trigger(type, event, instance._uiHash(instance))
}
}
this.reverting = !1;
var i, delayedTriggers = [];
if (!this._noFinalSort && this.currentItem.parent().length && this.placeholder.before(this.currentItem), this._noFinalSort = null, this.helper[0] === this.currentItem[0]) {
for (i in this._storedCSS)("auto" === this._storedCSS[i] || "static" === this._storedCSS[i]) && (this._storedCSS[i] = "");
this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")
} else this.currentItem.show();
for (this.fromOutside && !noPropagation && delayedTriggers.push(function(event) {
this._trigger("receive", event, this._uiHash(this.fromOutside))
}), !this.fromOutside && this.domPosition.prev === this.currentItem.prev().not(".ui-sortable-helper")[0] && this.domPosition.parent === this.currentItem.parent()[0] || noPropagation || delayedTriggers.push(function(event) {
this._trigger("update", event, this._uiHash())
}), this !== this.currentContainer && (noPropagation || (delayedTriggers.push(function(event) {
this._trigger("remove", event, this._uiHash())
}), delayedTriggers.push(function(c) {
return function(event) {
c._trigger("receive", event, this._uiHash(this))
}
}.call(this, this.currentContainer)), delayedTriggers.push(function(c) {
return function(event) {
c._trigger("update", event, this._uiHash(this))
}
}.call(this, this.currentContainer)))), i = this.containers.length - 1; i >= 0; i--) noPropagation || delayedTriggers.push(delayEvent("deactivate", this, this.containers[i])), this.containers[i].containerCache.over && (delayedTriggers.push(delayEvent("out", this, this.containers[i])), this.containers[i].containerCache.over = 0);
if (this.storedCursor && (this.document.find("body").css("cursor", this.storedCursor), this.storedStylesheet.remove()), this._storedOpacity && this.helper.css("opacity", this._storedOpacity), this._storedZIndex && this.helper.css("zIndex", "auto" === this._storedZIndex ? "" : this._storedZIndex), this.dragging = !1, this.cancelHelperRemoval) {
if (!noPropagation) {
for (this._trigger("beforeStop", event, this._uiHash()), i = 0; i < delayedTriggers.length; i++) delayedTriggers[i].call(this, event);
this._trigger("stop", event, this._uiHash())
}
return this.fromOutside = !1, !1
}
if (noPropagation || this._trigger("beforeStop", event, this._uiHash()), this.placeholder[0].parentNode.removeChild(this.placeholder[0]), this.helper[0] !== this.currentItem[0] && this.helper.remove(), this.helper = null, !noPropagation) {
for (i = 0; i < delayedTriggers.length; i++) delayedTriggers[i].call(this, event);
this._trigger("stop", event, this._uiHash())
}
return this.fromOutside = !1, !0
},
_trigger: function() {
$.Widget.prototype._trigger.apply(this, arguments) === !1 && this.cancel()
},
_uiHash: function(_inst) {
var inst = _inst || this;
return {
helper: inst.helper,
placeholder: inst.placeholder || $([]),
position: inst.position,
originalPosition: inst.originalPosition,
offset: inst.positionAbs,
item: inst.currentItem,
sender: _inst ? _inst.element : null
}
}
}), $.widget("ui.spinner", {
version: "1.11.1",
defaultElement: "<input>",
widgetEventPrefix: "spin",
options: {
culture: null,
icons: {
down: "ui-icon-triangle-1-s",
up: "ui-icon-triangle-1-n"
},
incremental: !0,
max: null,
min: null,
numberFormat: null,
page: 10,
step: 1,
change: null,
spin: null,
start: null,
stop: null
},
_create: function() {
this._setOption("max", this.options.max), this._setOption("min", this.options.min), this._setOption("step", this.options.step), "" !== this.value() && this._value(this.element.val(), !0), this._draw(), this._on(this._events), this._refresh(), this._on(this.window, {
beforeunload: function() {
this.element.removeAttr("autocomplete")
}
})
},
_getCreateOptions: function() {
var options = {}, element = this.element;
return $.each(["min", "max", "step"], function(i, option) {
var value = element.attr(option);
void 0 !== value && value.length && (options[option] = value)
}), options
},
_events: {
keydown: function(event) {
this._start(event) && this._keydown(event) && event.preventDefault()
},
keyup: "_stop",
focus: function() {
this.previous = this.element.val()
},
blur: function(event) {
return this.cancelBlur ? void delete this.cancelBlur : (this._stop(), this._refresh(), void(this.previous !== this.element.val() && this._trigger("change", event)))
},
mousewheel: function(event, delta) {
if (delta) {
if (!this.spinning && !this._start(event)) return !1;
this._spin((delta > 0 ? 1 : -1) * this.options.step, event), clearTimeout(this.mousewheelTimer), this.mousewheelTimer = this._delay(function() {
this.spinning && this._stop(event)
}, 100), event.preventDefault()
}
},
"mousedown .ui-spinner-button": function(event) {
function checkFocus() {
var isActive = this.element[0] === this.document[0].activeElement;
isActive || (this.element.focus(), this.previous = previous, this._delay(function() {
this.previous = previous
}))
}
var previous;
previous = this.element[0] === this.document[0].activeElement ? this.previous : this.element.val(), event.preventDefault(), checkFocus.call(this), this.cancelBlur = !0, this._delay(function() {
delete this.cancelBlur, checkFocus.call(this)
}), this._start(event) !== !1 && this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event)
},
"mouseup .ui-spinner-button": "_stop",
"mouseenter .ui-spinner-button": function(event) {
return $(event.currentTarget).hasClass("ui-state-active") ? this._start(event) === !1 ? !1 : void this._repeat(null, $(event.currentTarget).hasClass("ui-spinner-up") ? 1 : -1, event) : void 0
},
"mouseleave .ui-spinner-button": "_stop"
},
_draw: function() {
var uiSpinner = this.uiSpinner = this.element.addClass("ui-spinner-input").attr("autocomplete", "off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());
this.element.attr("role", "spinbutton"), this.buttons = uiSpinner.find(".ui-spinner-button").attr("tabIndex", -1).button().removeClass("ui-corner-all"), this.buttons.height() > Math.ceil(.5 * uiSpinner.height()) && uiSpinner.height() > 0 && uiSpinner.height(uiSpinner.height()), this.options.disabled && this.disable()
},
_keydown: function(event) {
var options = this.options,
keyCode = $.ui.keyCode;
switch (event.keyCode) {
case keyCode.UP:
return this._repeat(null, 1, event), !0;
case keyCode.DOWN:
return this._repeat(null, -1, event), !0;
case keyCode.PAGE_UP:
return this._repeat(null, options.page, event), !0;
case keyCode.PAGE_DOWN:
return this._repeat(null, -options.page, event), !0
}
return !1
},
_uiSpinnerHtml: function() {
return "<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"
},
_buttonHtml: function() {
return "<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon " + this.options.icons.up + "'>▲</span></a><a class='ui-spinner-button ui-spinner-down ui-corner-br'><span class='ui-icon " + this.options.icons.down + "'>▼</span></a>"
},
_start: function(event) {
return this.spinning || this._trigger("start", event) !== !1 ? (this.counter || (this.counter = 1), this.spinning = !0, !0) : !1
},
_repeat: function(i, steps, event) {
i = i || 500, clearTimeout(this.timer), this.timer = this._delay(function() {
this._repeat(40, steps, event)
}, i), this._spin(steps * this.options.step, event)
},
_spin: function(step, event) {
var value = this.value() || 0;
this.counter || (this.counter = 1), value = this._adjustValue(value + step * this._increment(this.counter)), this.spinning && this._trigger("spin", event, {
value: value
}) === !1 || (this._value(value), this.counter++)
},
_increment: function(i) {
var incremental = this.options.incremental;
return incremental ? $.isFunction(incremental) ? incremental(i) : Math.floor(i * i * i / 5e4 - i * i / 500 + 17 * i / 200 + 1) : 1
},
_precision: function() {
var precision = this._precisionOf(this.options.step);
return null !== this.options.min && (precision = Math.max(precision, this._precisionOf(this.options.min))), precision
},
_precisionOf: function(num) {
var str = num.toString(),
decimal = str.indexOf(".");
return -1 === decimal ? 0 : str.length - decimal - 1
},
_adjustValue: function(value) {
var base, aboveMin, options = this.options;
return base = null !== options.min ? options.min : 0, aboveMin = value - base, aboveMin = Math.round(aboveMin / options.step) * options.step, value = base + aboveMin, value = parseFloat(value.toFixed(this._precision())), null !== options.max && value > options.max ? options.max : null !== options.min && value < options.min ? options.min : value
},
_stop: function(event) {
this.spinning && (clearTimeout(this.timer), clearTimeout(this.mousewheelTimer), this.counter = 0, this.spinning = !1, this._trigger("stop", event))
},
_setOption: function(key, value) {
if ("culture" === key || "numberFormat" === key) {
var prevValue = this._parse(this.element.val());
return this.options[key] = value, void this.element.val(this._format(prevValue))
}("max" === key || "min" === key || "step" === key) && "string" == typeof value && (value = this._parse(value)), "icons" === key && (this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(value.up), this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(value.down)), this._super(key, value), "disabled" === key && (this.widget().toggleClass("ui-state-disabled", !! value), this.element.prop("disabled", !! value), this.buttons.button(value ? "disable" : "enable"))
},
_setOptions: spinner_modifier(function(options) {
this._super(options)
}),
_parse: function(val) {
return "string" == typeof val && "" !== val && (val = window.Globalize && this.options.numberFormat ? Globalize.parseFloat(val, 10, this.options.culture) : +val), "" === val || isNaN(val) ? null : val
},
_format: function(value) {
return "" === value ? "" : window.Globalize && this.options.numberFormat ? Globalize.format(value, this.options.numberFormat, this.options.culture) : value
},
_refresh: function() {
this.element.attr({
"aria-valuemin": this.options.min,
"aria-valuemax": this.options.max,
"aria-valuenow": this._parse(this.element.val())
})
},
isValid: function() {
var value = this.value();
return null === value ? !1 : value === this._adjustValue(value)
},
_value: function(value, allowAny) {
var parsed;
"" !== value && (parsed = this._parse(value), null !== parsed && (allowAny || (parsed = this._adjustValue(parsed)), value = this._format(parsed))), this.element.val(value), this._refresh()
},
_destroy: function() {
this.element.removeClass("ui-spinner-input").prop("disabled", !1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"), this.uiSpinner.replaceWith(this.element)
},
stepUp: spinner_modifier(function(steps) {
this._stepUp(steps)
}),
_stepUp: function(steps) {
this._start() && (this._spin((steps || 1) * this.options.step), this._stop())
},
stepDown: spinner_modifier(function(steps) {
this._stepDown(steps)
}),
_stepDown: function(steps) {
this._start() && (this._spin((steps || 1) * -this.options.step), this._stop())
},
pageUp: spinner_modifier(function(pages) {
this._stepUp((pages || 1) * this.options.page)
}),
pageDown: spinner_modifier(function(pages) {
this._stepDown((pages || 1) * this.options.page)
}),
value: function(newVal) {
return arguments.length ? void spinner_modifier(this._value).call(this, newVal) : this._parse(this.element.val())
},
widget: function() {
return this.uiSpinner
}
}), $.widget("ui.tabs", {
version: "1.11.1",
delay: 300,
options: {
active: null,
collapsible: !1,
event: "click",
heightStyle: "content",
hide: null,
show: null,
activate: null,
beforeActivate: null,
beforeLoad: null,
load: null
},
_isLocal: function() {
var rhash = /#.*$/;
return function(anchor) {
var anchorUrl, locationUrl;
anchor = anchor.cloneNode(!1), anchorUrl = anchor.href.replace(rhash, ""), locationUrl = location.href.replace(rhash, "");
try {
anchorUrl = decodeURIComponent(anchorUrl)
} catch (error) {}
try {
locationUrl = decodeURIComponent(locationUrl)
} catch (error) {}
return anchor.hash.length > 1 && anchorUrl === locationUrl
}
}(),
_create: function() {
var that = this,
options = this.options;
this.running = !1, this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible", options.collapsible), this._processTabs(), options.active = this._initialActive(), $.isArray(options.disabled) && (options.disabled = $.unique(options.disabled.concat($.map(this.tabs.filter(".ui-state-disabled"), function(li) {
return that.tabs.index(li)
}))).sort()), this.active = this.options.active !== !1 && this.anchors.length ? this._findActive(options.active) : $(), this._refresh(), this.active.length && this.load(options.active)
},
_initialActive: function() {
var active = this.options.active,
collapsible = this.options.collapsible,
locationHash = location.hash.substring(1);
return null === active && (locationHash && this.tabs.each(function(i, tab) {
return $(tab).attr("aria-controls") === locationHash ? (active = i, !1) : void 0
}), null === active && (active = this.tabs.index(this.tabs.filter(".ui-tabs-active"))), (null === active || -1 === active) && (active = this.tabs.length ? 0 : !1)), active !== !1 && (active = this.tabs.index(this.tabs.eq(active)), -1 === active && (active = collapsible ? !1 : 0)), !collapsible && active === !1 && this.anchors.length && (active = 0), active
},
_getCreateEventData: function() {
return {
tab: this.active,
panel: this.active.length ? this._getPanelForTab(this.active) : $()
}
},
_tabKeydown: function(event) {
var focusedTab = $(this.document[0].activeElement).closest("li"),
selectedIndex = this.tabs.index(focusedTab),
goingForward = !0;
if (!this._handlePageNav(event)) {
switch (event.keyCode) {
case $.ui.keyCode.RIGHT:
case $.ui.keyCode.DOWN:
selectedIndex++;
break;
case $.ui.keyCode.UP:
case $.ui.keyCode.LEFT:
goingForward = !1, selectedIndex--;
break;
case $.ui.keyCode.END:
selectedIndex = this.anchors.length - 1;
break;
case $.ui.keyCode.HOME:
selectedIndex = 0;
break;
case $.ui.keyCode.SPACE:
return event.preventDefault(), clearTimeout(this.activating), void this._activate(selectedIndex);
case $.ui.keyCode.ENTER:
return event.preventDefault(), clearTimeout(this.activating), void this._activate(selectedIndex === this.options.active ? !1 : selectedIndex);
default:
return
}
event.preventDefault(), clearTimeout(this.activating), selectedIndex = this._focusNextTab(selectedIndex, goingForward), event.ctrlKey || (focusedTab.attr("aria-selected", "false"), this.tabs.eq(selectedIndex).attr("aria-selected", "true"), this.activating = this._delay(function() {
this.option("active", selectedIndex)
}, this.delay))
}
},
_panelKeydown: function(event) {
this._handlePageNav(event) || event.ctrlKey && event.keyCode === $.ui.keyCode.UP && (event.preventDefault(), this.active.focus())
},
_handlePageNav: function(event) {
return event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ? (this._activate(this._focusNextTab(this.options.active - 1, !1)), !0) : event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ? (this._activate(this._focusNextTab(this.options.active + 1, !0)), !0) : void 0
},
_findNextTab: function(index, goingForward) {
function constrain() {
return index > lastTabIndex && (index = 0), 0 > index && (index = lastTabIndex), index
}
for (var lastTabIndex = this.tabs.length - 1; - 1 !== $.inArray(constrain(), this.options.disabled);) index = goingForward ? index + 1 : index - 1;
return index
},
_focusNextTab: function(index, goingForward) {
return index = this._findNextTab(index, goingForward), this.tabs.eq(index).focus(), index
},
_setOption: function(key, value) {
return "active" === key ? void this._activate(value) : "disabled" === key ? void this._setupDisabled(value) : (this._super(key, value), "collapsible" === key && (this.element.toggleClass("ui-tabs-collapsible", value), value || this.options.active !== !1 || this._activate(0)), "event" === key && this._setupEvents(value), void("heightStyle" === key && this._setupHeightStyle(value)))
},
_sanitizeSelector: function(hash) {
return hash ? hash.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&") : ""
},
refresh: function() {
var options = this.options,
lis = this.tablist.children(":has(a[href])");
options.disabled = $.map(lis.filter(".ui-state-disabled"), function(tab) {
return lis.index(tab)
}), this._processTabs(), options.active !== !1 && this.anchors.length ? this.active.length && !$.contains(this.tablist[0], this.active[0]) ? this.tabs.length === options.disabled.length ? (options.active = !1, this.active = $()) : this._activate(this._findNextTab(Math.max(0, options.active - 1), !1)) : options.active = this.tabs.index(this.active) : (options.active = !1, this.active = $()), this._refresh()
},
_refresh: function() {
this._setupDisabled(this.options.disabled), this._setupEvents(this.options.event), this._setupHeightStyle(this.options.heightStyle), this.tabs.not(this.active).attr({
"aria-selected": "false",
"aria-expanded": "false",
tabIndex: -1
}), this.panels.not(this._getPanelForTab(this.active)).hide().attr({
"aria-hidden": "true"
}), this.active.length ? (this.active.addClass("ui-tabs-active ui-state-active").attr({
"aria-selected": "true",
"aria-expanded": "true",
tabIndex: 0
}), this._getPanelForTab(this.active).show().attr({
"aria-hidden": "false"
})) : this.tabs.eq(0).attr("tabIndex", 0)
},
_processTabs: function() {
var that = this;
this.tablist = this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role", "tablist").delegate("> li", "mousedown" + this.eventNamespace, function(event) {
$(this).is(".ui-state-disabled") && event.preventDefault()
}).delegate(".ui-tabs-anchor", "focus" + this.eventNamespace, function() {
$(this).closest("li").is(".ui-state-disabled") && this.blur()
}), this.tabs = this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({
role: "tab",
tabIndex: -1
}), this.anchors = this.tabs.map(function() {
return $("a", this)[0]
}).addClass("ui-tabs-anchor").attr({
role: "presentation",
tabIndex: -1
}), this.panels = $(), this.anchors.each(function(i, anchor) {
var selector, panel, panelId, anchorId = $(anchor).uniqueId().attr("id"),
tab = $(anchor).closest("li"),
originalAriaControls = tab.attr("aria-controls");
that._isLocal(anchor) ? (selector = anchor.hash, panelId = selector.substring(1), panel = that.element.find(that._sanitizeSelector(selector))) : (panelId = tab.attr("aria-controls") || $({}).uniqueId()[0].id, selector = "#" + panelId, panel = that.element.find(selector), panel.length || (panel = that._createPanel(panelId), panel.insertAfter(that.panels[i - 1] || that.tablist)), panel.attr("aria-live", "polite")), panel.length && (that.panels = that.panels.add(panel)), originalAriaControls && tab.data("ui-tabs-aria-controls", originalAriaControls), tab.attr({
"aria-controls": panelId,
"aria-labelledby": anchorId
}), panel.attr("aria-labelledby", anchorId)
}), this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role", "tabpanel")
},
_getList: function() {
return this.tablist || this.element.find("ol,ul").eq(0)
},
_createPanel: function(id) {
return $("<div>").attr("id", id).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy", !0)
},
_setupDisabled: function(disabled) {
$.isArray(disabled) && (disabled.length ? disabled.length === this.anchors.length && (disabled = !0) : disabled = !1);
for (var li, i = 0; li = this.tabs[i]; i++) disabled === !0 || -1 !== $.inArray(i, disabled) ? $(li).addClass("ui-state-disabled").attr("aria-disabled", "true") : $(li).removeClass("ui-state-disabled").removeAttr("aria-disabled");
this.options.disabled = disabled
},
_setupEvents: function(event) {
var events = {};
event && $.each(event.split(" "), function(index, eventName) {
events[eventName] = "_eventHandler"
}), this._off(this.anchors.add(this.tabs).add(this.panels)), this._on(!0, this.anchors, {
click: function(event) {
event.preventDefault()
}
}), this._on(this.anchors, events), this._on(this.tabs, {
keydown: "_tabKeydown"
}), this._on(this.panels, {
keydown: "_panelKeydown"
}), this._focusable(this.tabs), this._hoverable(this.tabs)
},
_setupHeightStyle: function(heightStyle) {
var maxHeight, parent = this.element.parent();
"fill" === heightStyle ? (maxHeight = parent.height(), maxHeight -= this.element.outerHeight() - this.element.height(), this.element.siblings(":visible").each(function() {
var elem = $(this),
position = elem.css("position");
"absolute" !== position && "fixed" !== position && (maxHeight -= elem.outerHeight(!0))
}), this.element.children().not(this.panels).each(function() {
maxHeight -= $(this).outerHeight(!0)
}), this.panels.each(function() {
$(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()))
}).css("overflow", "auto")) : "auto" === heightStyle && (maxHeight = 0, this.panels.each(function() {
maxHeight = Math.max(maxHeight, $(this).height("").height())
}).height(maxHeight))
},
_eventHandler: function(event) {
var options = this.options,
active = this.active,
anchor = $(event.currentTarget),
tab = anchor.closest("li"),
clickedIsActive = tab[0] === active[0],
collapsing = clickedIsActive && options.collapsible,
toShow = collapsing ? $() : this._getPanelForTab(tab),
toHide = active.length ? this._getPanelForTab(active) : $(),
eventData = {
oldTab: active,
oldPanel: toHide,
newTab: collapsing ? $() : tab,
newPanel: toShow
};
event.preventDefault(), tab.hasClass("ui-state-disabled") || tab.hasClass("ui-tabs-loading") || this.running || clickedIsActive && !options.collapsible || this._trigger("beforeActivate", event, eventData) === !1 || (options.active = collapsing ? !1 : this.tabs.index(tab), this.active = clickedIsActive ? $() : tab, this.xhr && this.xhr.abort(), toHide.length || toShow.length || $.error("jQuery UI Tabs: Mismatching fragment identifier."), toShow.length && this.load(this.tabs.index(tab), event), this._toggle(event, eventData))
},
_toggle: function(event, eventData) {
function complete() {
that.running = !1, that._trigger("activate", event, eventData)
}
function show() {
eventData.newTab.closest("li").addClass("ui-tabs-active ui-state-active"), toShow.length && that.options.show ? that._show(toShow, that.options.show, complete) : (toShow.show(), complete())
}
var that = this,
toShow = eventData.newPanel,
toHide = eventData.oldPanel;
this.running = !0, toHide.length && this.options.hide ? this._hide(toHide, this.options.hide, function() {
eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"), show()
}) : (eventData.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"), toHide.hide(), show()), toHide.attr("aria-hidden", "true"), eventData.oldTab.attr({
"aria-selected": "false",
"aria-expanded": "false"
}), toShow.length && toHide.length ? eventData.oldTab.attr("tabIndex", -1) : toShow.length && this.tabs.filter(function() {
return 0 === $(this).attr("tabIndex")
}).attr("tabIndex", -1), toShow.attr("aria-hidden", "false"), eventData.newTab.attr({
"aria-selected": "true",
"aria-expanded": "true",
tabIndex: 0
})
},
_activate: function(index) {
var anchor, active = this._findActive(index);
active[0] !== this.active[0] && (active.length || (active = this.active), anchor = active.find(".ui-tabs-anchor")[0], this._eventHandler({
target: anchor,
currentTarget: anchor,
preventDefault: $.noop
}))
},
_findActive: function(index) {
return index === !1 ? $() : this.tabs.eq(index)
},
_getIndex: function(index) {
return "string" == typeof index && (index = this.anchors.index(this.anchors.filter("[href$='" + index + "']"))), index
},
_destroy: function() {
this.xhr && this.xhr.abort(), this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"), this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"), this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(), this.tablist.unbind(this.eventNamespace), this.tabs.add(this.panels).each(function() {
$.data(this, "ui-tabs-destroy") ? $(this).remove() : $(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")
}), this.tabs.each(function() {
var li = $(this),
prev = li.data("ui-tabs-aria-controls");
prev ? li.attr("aria-controls", prev).removeData("ui-tabs-aria-controls") : li.removeAttr("aria-controls")
}), this.panels.show(), "content" !== this.options.heightStyle && this.panels.css("height", "")
},
enable: function(index) {
var disabled = this.options.disabled;
disabled !== !1 && (void 0 === index ? disabled = !1 : (index = this._getIndex(index), disabled = $.isArray(disabled) ? $.map(disabled, function(num) {
return num !== index ? num : null
}) : $.map(this.tabs, function(li, num) {
return num !== index ? num : null
})), this._setupDisabled(disabled))
},
disable: function(index) {
var disabled = this.options.disabled;
if (disabled !== !0) {
if (void 0 === index) disabled = !0;
else {
if (index = this._getIndex(index), -1 !== $.inArray(index, disabled)) return;
disabled = $.isArray(disabled) ? $.merge([index], disabled).sort() : [index]
}
this._setupDisabled(disabled)
}
},
load: function(index, event) {
index = this._getIndex(index);
var that = this,
tab = this.tabs.eq(index),
anchor = tab.find(".ui-tabs-anchor"),
panel = this._getPanelForTab(tab),
eventData = {
tab: tab,
panel: panel
};
this._isLocal(anchor[0]) || (this.xhr = $.ajax(this._ajaxSettings(anchor, event, eventData)), this.xhr && "canceled" !== this.xhr.statusText && (tab.addClass("ui-tabs-loading"), panel.attr("aria-busy", "true"), this.xhr.success(function(response) {
setTimeout(function() {
panel.html(response), that._trigger("load", event, eventData)
}, 1)
}).complete(function(jqXHR, status) {
setTimeout(function() {
"abort" === status && that.panels.stop(!1, !0), tab.removeClass("ui-tabs-loading"), panel.removeAttr("aria-busy"), jqXHR === that.xhr && delete that.xhr
}, 1)
})))
},
_ajaxSettings: function(anchor, event, eventData) {
var that = this;
return {
url: anchor.attr("href"),
beforeSend: function(jqXHR, settings) {
return that._trigger("beforeLoad", event, $.extend({
jqXHR: jqXHR,
ajaxSettings: settings
}, eventData))
}
}
},
_getPanelForTab: function(tab) {
var id = $(tab).attr("aria-controls");
return this.element.find(this._sanitizeSelector("#" + id))
}
}), $.widget("ui.tooltip", {
version: "1.11.1",
options: {
content: function() {
var title = $(this).attr("title") || "";
return $("<a>").text(title).html()
},
hide: !0,
items: "[title]:not([disabled])",
position: {
my: "left top+15",
at: "left bottom",
collision: "flipfit flip"
},
show: !0,
tooltipClass: null,
track: !1,
close: null,
open: null
},
_addDescribedBy: function(elem, id) {
var describedby = (elem.attr("aria-describedby") || "").split(/\s+/);
describedby.push(id), elem.data("ui-tooltip-id", id).attr("aria-describedby", $.trim(describedby.join(" ")))
},
_removeDescribedBy: function(elem) {
var id = elem.data("ui-tooltip-id"),
describedby = (elem.attr("aria-describedby") || "").split(/\s+/),
index = $.inArray(id, describedby); - 1 !== index && describedby.splice(index, 1), elem.removeData("ui-tooltip-id"), describedby = $.trim(describedby.join(" ")), describedby ? elem.attr("aria-describedby", describedby) : elem.removeAttr("aria-describedby")
},
_create: function() {
this._on({
mouseover: "open",
focusin: "open"
}), this.tooltips = {}, this.parents = {}, this.options.disabled && this._disable(), this.liveRegion = $("<div>").attr({
role: "log",
"aria-live": "assertive",
"aria-relevant": "additions"
}).addClass("ui-helper-hidden-accessible").appendTo(this.document[0].body)
},
_setOption: function(key, value) {
var that = this;
return "disabled" === key ? (this[value ? "_disable" : "_enable"](), void(this.options[key] = value)) : (this._super(key, value), void("content" === key && $.each(this.tooltips, function(id, element) {
that._updateContent(element)
})))
},
_disable: function() {
var that = this;
$.each(this.tooltips, function(id, element) {
var event = $.Event("blur");
event.target = event.currentTarget = element[0], that.close(event, !0)
}), this.element.find(this.options.items).addBack().each(function() {
var element = $(this);
element.is("[title]") && element.data("ui-tooltip-title", element.attr("title")).removeAttr("title")
})
},
_enable: function() {
this.element.find(this.options.items).addBack().each(function() {
var element = $(this);
element.data("ui-tooltip-title") && element.attr("title", element.data("ui-tooltip-title"))
})
},
open: function(event) {
var that = this,
target = $(event ? event.target : this.element).closest(this.options.items);
target.length && !target.data("ui-tooltip-id") && (target.attr("title") && target.data("ui-tooltip-title", target.attr("title")), target.data("ui-tooltip-open", !0), event && "mouseover" === event.type && target.parents().each(function() {
var blurEvent, parent = $(this);
parent.data("ui-tooltip-open") && (blurEvent = $.Event("blur"), blurEvent.target = blurEvent.currentTarget = this, that.close(blurEvent, !0)), parent.attr("title") && (parent.uniqueId(), that.parents[this.id] = {
element: this,
title: parent.attr("title")
}, parent.attr("title", ""))
}), this._updateContent(target, event))
},
_updateContent: function(target, event) {
var content, contentOption = this.options.content,
that = this,
eventType = event ? event.type : null;
return "string" == typeof contentOption ? this._open(event, target, contentOption) : (content = contentOption.call(target[0], function(response) {
target.data("ui-tooltip-open") && that._delay(function() {
event && (event.type = eventType), this._open(event, target, response)
})
}), void(content && this._open(event, target, content)))
},
_open: function(event, target, content) {
function position(event) {
positionOption.of = event, tooltip.is(":hidden") || tooltip.position(positionOption)
}
var tooltip, events, delayedShow, a11yContent, positionOption = $.extend({}, this.options.position);
if (content) {
if (tooltip = this._find(target), tooltip.length) return void tooltip.find(".ui-tooltip-content").html(content);
target.is("[title]") && (event && "mouseover" === event.type ? target.attr("title", "") : target.removeAttr("title")), tooltip = this._tooltip(target), this._addDescribedBy(target, tooltip.attr("id")), tooltip.find(".ui-tooltip-content").html(content), this.liveRegion.children().hide(), content.clone ? (a11yContent = content.clone(), a11yContent.removeAttr("id").find("[id]").removeAttr("id")) : a11yContent = content, $("<div>").html(a11yContent).appendTo(this.liveRegion), this.options.track && event && /^mouse/.test(event.type) ? (this._on(this.document, {
mousemove: position
}), position(event)) : tooltip.position($.extend({
of: target
}, this.options.position)), this.hiding = !1, this.closing = !1, tooltip.hide(), this._show(tooltip, this.options.show), this.options.show && this.options.show.delay && (delayedShow = this.delayedShow = setInterval(function() {
tooltip.is(":visible") && (position(positionOption.of), clearInterval(delayedShow))
}, $.fx.interval)), this._trigger("open", event, {
tooltip: tooltip
}), events = {
keyup: function(event) {
if (event.keyCode === $.ui.keyCode.ESCAPE) {
var fakeEvent = $.Event(event);
fakeEvent.currentTarget = target[0], this.close(fakeEvent, !0)
}
}
}, target[0] !== this.element[0] && (events.remove = function() {
this._removeTooltip(tooltip)
}), event && "mouseover" !== event.type || (events.mouseleave = "close"), event && "focusin" !== event.type || (events.focusout = "close"), this._on(!0, target, events)
}
},
close: function(event) {
var that = this,
target = $(event ? event.currentTarget : this.element),
tooltip = this._find(target);
this.closing || (clearInterval(this.delayedShow), target.data("ui-tooltip-title") && !target.attr("title") && target.attr("title", target.data("ui-tooltip-title")), this._removeDescribedBy(target), this.hiding = !0, tooltip.stop(!0), this._hide(tooltip, this.options.hide, function() {
that._removeTooltip($(this)), this.hiding = !1, this.closing = !1
}), target.removeData("ui-tooltip-open"), this._off(target, "mouseleave focusout keyup"), target[0] !== this.element[0] && this._off(target, "remove"), this._off(this.document, "mousemove"), event && "mouseleave" === event.type && $.each(this.parents, function(id, parent) {
$(parent.element).attr("title", parent.title), delete that.parents[id]
}), this.closing = !0, this._trigger("close", event, {
tooltip: tooltip
}), this.hiding || (this.closing = !1))
},
_tooltip: function(element) {
var tooltip = $("<div>").attr("role", "tooltip").addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content " + (this.options.tooltipClass || "")),
id = tooltip.uniqueId().attr("id");
return $("<div>").addClass("ui-tooltip-content").appendTo(tooltip), tooltip.appendTo(this.document[0].body), this.tooltips[id] = element, tooltip
},
_find: function(target) {
var id = target.data("ui-tooltip-id");
return id ? $("#" + id) : $()
},
_removeTooltip: function(tooltip) {
tooltip.remove(), delete this.tooltips[tooltip.attr("id")]
},
_destroy: function() {
var that = this;
$.each(this.tooltips, function(id, element) {
var event = $.Event("blur");
event.target = event.currentTarget = element[0], that.close(event, !0), $("#" + id).remove(), element.data("ui-tooltip-title") && (element.attr("title") || element.attr("title", element.data("ui-tooltip-title")), element.removeData("ui-tooltip-title"))
}), this.liveRegion.remove()
}
})
}), "undefined" == typeof jQuery) throw new Error("Bootstrap's JavaScript requires jQuery"); + function(a) {
"use strict";
function b() {
var a = document.createElement("bootstrap"),
b = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
};
for (var c in b)
if (void 0 !== a.style[c]) return {
end: b[c]
};
return !1
}
a.fn.emulateTransitionEnd = function(b) {
var c = !1,
d = this;
a(this).one("bsTransitionEnd", function() {
c = !0
});
var e = function() {
c || a(d).trigger(a.support.transition.end)
};
return setTimeout(e, b), this
}, a(function() {
a.support.transition = b(), a.support.transition && (a.event.special.bsTransitionEnd = {
bindType: a.support.transition.end,
delegateType: a.support.transition.end,
handle: function(b) {
return a(b.target).is(this) ? b.handleObj.handler.apply(this, arguments) : void 0
}
})
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var c = a(this),
e = c.data("bs.alert");
e || c.data("bs.alert", e = new d(this)), "string" == typeof b && e[b].call(c)
})
}
var c = '[data-dismiss="alert"]',
d = function(b) {
a(b).on("click", c, this.close)
};
d.VERSION = "3.2.0", d.prototype.close = function(b) {
function c() {
f.detach().trigger("closed.bs.alert").remove()
}
var d = a(this),
e = d.attr("data-target");
e || (e = d.attr("href"), e = e && e.replace(/.*(?=#[^\s]*$)/, ""));
var f = a(e);
b && b.preventDefault(), f.length || (f = d.hasClass("alert") ? d : d.parent()), f.trigger(b = a.Event("close.bs.alert")), b.isDefaultPrevented() || (f.removeClass("in"), a.support.transition && f.hasClass("fade") ? f.one("bsTransitionEnd", c).emulateTransitionEnd(150) : c())
};
var e = a.fn.alert;
a.fn.alert = b, a.fn.alert.Constructor = d, a.fn.alert.noConflict = function() {
return a.fn.alert = e, this
}, a(document).on("click.bs.alert.data-api", c, d.prototype.close)
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.button"),
f = "object" == typeof b && b;
e || d.data("bs.button", e = new c(this, f)), "toggle" == b ? e.toggle() : b && e.setState(b)
})
}
var c = function(b, d) {
this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.isLoading = !1
};
c.VERSION = "3.2.0", c.DEFAULTS = {
loadingText: "loading..."
}, c.prototype.setState = function(b) {
var c = "disabled",
d = this.$element,
e = d.is("input") ? "val" : "html",
f = d.data();
b += "Text", null == f.resetText && d.data("resetText", d[e]()), d[e](null == f[b] ? this.options[b] : f[b]), setTimeout(a.proxy(function() {
"loadingText" == b ? (this.isLoading = !0, d.addClass(c).attr(c, c)) : this.isLoading && (this.isLoading = !1, d.removeClass(c).removeAttr(c))
}, this), 0)
}, c.prototype.toggle = function() {
var a = !0,
b = this.$element.closest('[data-toggle="buttons"]');
if (b.length) {
var c = this.$element.find("input");
"radio" == c.prop("type") && (c.prop("checked") && this.$element.hasClass("active") ? a = !1 : b.find(".active").removeClass("active")), a && c.prop("checked", !this.$element.hasClass("active")).trigger("change")
}
a && this.$element.toggleClass("active")
};
var d = a.fn.button;
a.fn.button = b, a.fn.button.Constructor = c, a.fn.button.noConflict = function() {
return a.fn.button = d, this
}, a(document).on("click.bs.button.data-api", '[data-toggle^="button"]', function(c) {
var d = a(c.target);
d.hasClass("btn") || (d = d.closest(".btn")), b.call(d, "toggle"), c.preventDefault()
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.carousel"),
f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b),
g = "string" == typeof b ? b : f.slide;
e || d.data("bs.carousel", e = new c(this, f)), "number" == typeof b ? e.to(b) : g ? e[g]() : f.interval && e.pause().cycle()
})
}
var c = function(b, c) {
this.$element = a(b).on("keydown.bs.carousel", a.proxy(this.keydown, this)), this.$indicators = this.$element.find(".carousel-indicators"), this.options = c, this.paused = this.sliding = this.interval = this.$active = this.$items = null, "hover" == this.options.pause && this.$element.on("mouseenter.bs.carousel", a.proxy(this.pause, this)).on("mouseleave.bs.carousel", a.proxy(this.cycle, this))
};
c.VERSION = "3.2.0", c.DEFAULTS = {
interval: 5e3,
pause: "hover",
wrap: !0
}, c.prototype.keydown = function(a) {
switch (a.which) {
case 37:
this.prev();
break;
case 39:
this.next();
break;
default:
return
}
a.preventDefault()
}, c.prototype.cycle = function(b) {
return b || (this.paused = !1), this.interval && clearInterval(this.interval), this.options.interval && !this.paused && (this.interval = setInterval(a.proxy(this.next, this), this.options.interval)), this
}, c.prototype.getItemIndex = function(a) {
return this.$items = a.parent().children(".item"), this.$items.index(a || this.$active)
}, c.prototype.to = function(b) {
var c = this,
d = this.getItemIndex(this.$active = this.$element.find(".item.active"));
return b > this.$items.length - 1 || 0 > b ? void 0 : this.sliding ? this.$element.one("slid.bs.carousel", function() {
c.to(b)
}) : d == b ? this.pause().cycle() : this.slide(b > d ? "next" : "prev", a(this.$items[b]))
}, c.prototype.pause = function(b) {
return b || (this.paused = !0), this.$element.find(".next, .prev").length && a.support.transition && (this.$element.trigger(a.support.transition.end), this.cycle(!0)), this.interval = clearInterval(this.interval), this
}, c.prototype.next = function() {
return this.sliding ? void 0 : this.slide("next")
}, c.prototype.prev = function() {
return this.sliding ? void 0 : this.slide("prev")
}, c.prototype.slide = function(b, c) {
var d = this.$element.find(".item.active"),
e = c || d[b](),
f = this.interval,
g = "next" == b ? "left" : "right",
h = "next" == b ? "first" : "last",
i = this;
if (!e.length) {
if (!this.options.wrap) return;
e = this.$element.find(".item")[h]()
}
if (e.hasClass("active")) return this.sliding = !1;
var j = e[0],
k = a.Event("slide.bs.carousel", {
relatedTarget: j,
direction: g
});
if (this.$element.trigger(k), !k.isDefaultPrevented()) {
if (this.sliding = !0, f && this.pause(), this.$indicators.length) {
this.$indicators.find(".active").removeClass("active");
var l = a(this.$indicators.children()[this.getItemIndex(e)]);
l && l.addClass("active")
}
var m = a.Event("slid.bs.carousel", {
relatedTarget: j,
direction: g
});
return a.support.transition && this.$element.hasClass("slide") ? (e.addClass(b), e[0].offsetWidth, d.addClass(g), e.addClass(g), d.one("bsTransitionEnd", function() {
e.removeClass([b, g].join(" ")).addClass("active"), d.removeClass(["active", g].join(" ")), i.sliding = !1, setTimeout(function() {
i.$element.trigger(m)
}, 0)
}).emulateTransitionEnd(1e3 * d.css("transition-duration").slice(0, -1))) : (d.removeClass("active"), e.addClass("active"), this.sliding = !1, this.$element.trigger(m)), f && this.cycle(), this
}
};
var d = a.fn.carousel;
a.fn.carousel = b, a.fn.carousel.Constructor = c, a.fn.carousel.noConflict = function() {
return a.fn.carousel = d, this
}, a(document).on("click.bs.carousel.data-api", "[data-slide], [data-slide-to]", function(c) {
var d, e = a(this),
f = a(e.attr("data-target") || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""));
if (f.hasClass("carousel")) {
var g = a.extend({}, f.data(), e.data()),
h = e.attr("data-slide-to");
h && (g.interval = !1), b.call(f, g), h && f.data("bs.carousel").to(h), c.preventDefault()
}
}), a(window).on("load", function() {
a('[data-ride="carousel"]').each(function() {
var c = a(this);
b.call(c, c.data())
})
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.collapse"),
f = a.extend({}, c.DEFAULTS, d.data(), "object" == typeof b && b);
!e && f.toggle && "show" == b && (b = !b), e || d.data("bs.collapse", e = new c(this, f)), "string" == typeof b && e[b]()
})
}
var c = function(b, d) {
this.$element = a(b), this.options = a.extend({}, c.DEFAULTS, d), this.transitioning = null, this.options.parent && (this.$parent = a(this.options.parent)), this.options.toggle && this.toggle()
};
c.VERSION = "3.2.0", c.DEFAULTS = {
toggle: !0
}, c.prototype.dimension = function() {
var a = this.$element.hasClass("width");
return a ? "width" : "height"
}, c.prototype.show = function() {
if (!this.transitioning && !this.$element.hasClass("in")) {
var c = a.Event("show.bs.collapse");
if (this.$element.trigger(c), !c.isDefaultPrevented()) {
var d = this.$parent && this.$parent.find("> .panel > .in");
if (d && d.length) {
var e = d.data("bs.collapse");
if (e && e.transitioning) return;
b.call(d, "hide"), e || d.data("bs.collapse", null)
}
var f = this.dimension();
this.$element.removeClass("collapse").addClass("collapsing")[f](0), this.transitioning = 1;
var g = function() {
this.$element.removeClass("collapsing").addClass("collapse in")[f](""), this.transitioning = 0, this.$element.trigger("shown.bs.collapse")
};
if (!a.support.transition) return g.call(this);
var h = a.camelCase(["scroll", f].join("-"));
this.$element.one("bsTransitionEnd", a.proxy(g, this)).emulateTransitionEnd(350)[f](this.$element[0][h])
}
}
}, c.prototype.hide = function() {
if (!this.transitioning && this.$element.hasClass("in")) {
var b = a.Event("hide.bs.collapse");
if (this.$element.trigger(b), !b.isDefaultPrevented()) {
var c = this.dimension();
this.$element[c](this.$element[c]())[0].offsetHeight, this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"), this.transitioning = 1;
var d = function() {
this.transitioning = 0, this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")
};
return a.support.transition ? void this.$element[c](0).one("bsTransitionEnd", a.proxy(d, this)).emulateTransitionEnd(350) : d.call(this)
}
}
}, c.prototype.toggle = function() {
this[this.$element.hasClass("in") ? "hide" : "show"]()
};
var d = a.fn.collapse;
a.fn.collapse = b, a.fn.collapse.Constructor = c, a.fn.collapse.noConflict = function() {
return a.fn.collapse = d, this
}, a(document).on("click.bs.collapse.data-api", '[data-toggle="collapse"]', function(c) {
var d, e = a(this),
f = e.attr("data-target") || c.preventDefault() || (d = e.attr("href")) && d.replace(/.*(?=#[^\s]+$)/, ""),
g = a(f),
h = g.data("bs.collapse"),
i = h ? "toggle" : e.data(),
j = e.attr("data-parent"),
k = j && a(j);
h && h.transitioning || (k && k.find('[data-toggle="collapse"][data-parent="' + j + '"]').not(e).addClass("collapsed"), e[g.hasClass("in") ? "addClass" : "removeClass"]("collapsed")), b.call(g, i)
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
b && 3 === b.which || (a(e).remove(), a(f).each(function() {
var d = c(a(this)),
e = {
relatedTarget: this
};
d.hasClass("open") && (d.trigger(b = a.Event("hide.bs.dropdown", e)), b.isDefaultPrevented() || d.removeClass("open").trigger("hidden.bs.dropdown", e))
}))
}
function c(b) {
var c = b.attr("data-target");
c || (c = b.attr("href"), c = c && /#[A-Za-z]/.test(c) && c.replace(/.*(?=#[^\s]*$)/, ""));
var d = c && a(c);
return d && d.length ? d : b.parent()
}
function d(b) {
return this.each(function() {
var c = a(this),
d = c.data("bs.dropdown");
d || c.data("bs.dropdown", d = new g(this)), "string" == typeof b && d[b].call(c)
})
}
var e = ".dropdown-backdrop",
f = '[data-toggle="dropdown"]',
g = function(b) {
a(b).on("click.bs.dropdown", this.toggle)
};
g.VERSION = "3.2.0", g.prototype.toggle = function(d) {
var e = a(this);
if (!e.is(".disabled, :disabled")) {
var f = c(e),
g = f.hasClass("open");
if (b(), !g) {
"ontouchstart" in document.documentElement && !f.closest(".navbar-nav").length && a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click", b);
var h = {
relatedTarget: this
};
if (f.trigger(d = a.Event("show.bs.dropdown", h)), d.isDefaultPrevented()) return;
e.trigger("focus"), f.toggleClass("open").trigger("shown.bs.dropdown", h)
}
return !1
}
}, g.prototype.keydown = function(b) {
if (/(38|40|27)/.test(b.keyCode)) {
var d = a(this);
if (b.preventDefault(), b.stopPropagation(), !d.is(".disabled, :disabled")) {
var e = c(d),
g = e.hasClass("open");
if (!g || g && 27 == b.keyCode) return 27 == b.which && e.find(f).trigger("focus"), d.trigger("click");
var h = " li:not(.divider):visible a",
i = e.find('[role="menu"]' + h + ', [role="listbox"]' + h);
if (i.length) {
var j = i.index(i.filter(":focus"));
38 == b.keyCode && j > 0 && j--, 40 == b.keyCode && j < i.length - 1 && j++, ~j || (j = 0), i.eq(j).trigger("focus")
}
}
}
};
var h = a.fn.dropdown;
a.fn.dropdown = d, a.fn.dropdown.Constructor = g, a.fn.dropdown.noConflict = function() {
return a.fn.dropdown = h, this
}, a(document).on("click.bs.dropdown.data-api", b).on("click.bs.dropdown.data-api", ".dropdown form", function(a) {
a.stopPropagation()
}).on("click.bs.dropdown.data-api", f, g.prototype.toggle).on("keydown.bs.dropdown.data-api", f + ', [role="menu"], [role="listbox"]', g.prototype.keydown)
}(jQuery), + function(a) {
"use strict";
function b(b, d) {
return this.each(function() {
var e = a(this),
f = e.data("bs.modal"),
g = a.extend({}, c.DEFAULTS, e.data(), "object" == typeof b && b);
f || e.data("bs.modal", f = new c(this, g)), "string" == typeof b ? f[b](d) : g.show && f.show(d)
})
}
var c = function(b, c) {
this.options = c, this.$body = a(document.body), this.$element = a(b), this.$backdrop = this.isShown = null, this.scrollbarWidth = 0, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, a.proxy(function() {
this.$element.trigger("loaded.bs.modal")
}, this))
};
c.VERSION = "3.2.0", c.DEFAULTS = {
backdrop: !0,
keyboard: !0,
show: !0
}, c.prototype.toggle = function(a) {
return this.isShown ? this.hide() : this.show(a)
}, c.prototype.show = function(b) {
var c = this,
d = a.Event("show.bs.modal", {
relatedTarget: b
});
this.$element.trigger(d), this.isShown || d.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.$body.addClass("modal-open"), this.setScrollbar(), this.escape(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', a.proxy(this.hide, this)), this.backdrop(function() {
var d = a.support.transition && c.$element.hasClass("fade");
c.$element.parent().length || c.$element.appendTo(c.$body), c.$element.show().scrollTop(0), d && c.$element[0].offsetWidth, c.$element.addClass("in").attr("aria-hidden", !1), c.enforceFocus();
var e = a.Event("shown.bs.modal", {
relatedTarget: b
});
d ? c.$element.find(".modal-dialog").one("bsTransitionEnd", function() {
c.$element.trigger("focus").trigger(e)
}).emulateTransitionEnd(300) : c.$element.trigger("focus").trigger(e)
}))
}, c.prototype.hide = function(b) {
b && b.preventDefault(), b = a.Event("hide.bs.modal"), this.$element.trigger(b), this.isShown && !b.isDefaultPrevented() && (this.isShown = !1, this.$body.removeClass("modal-open"), this.resetScrollbar(), this.escape(), a(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), a.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", a.proxy(this.hideModal, this)).emulateTransitionEnd(300) : this.hideModal())
}, c.prototype.enforceFocus = function() {
a(document).off("focusin.bs.modal").on("focusin.bs.modal", a.proxy(function(a) {
this.$element[0] === a.target || this.$element.has(a.target).length || this.$element.trigger("focus")
}, this))
}, c.prototype.escape = function() {
this.isShown && this.options.keyboard ? this.$element.on("keyup.dismiss.bs.modal", a.proxy(function(a) {
27 == a.which && this.hide()
}, this)) : this.isShown || this.$element.off("keyup.dismiss.bs.modal")
}, c.prototype.hideModal = function() {
var a = this;
this.$element.hide(), this.backdrop(function() {
a.$element.trigger("hidden.bs.modal")
})
}, c.prototype.removeBackdrop = function() {
this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
}, c.prototype.backdrop = function(b) {
var c = this,
d = this.$element.hasClass("fade") ? "fade" : "";
if (this.isShown && this.options.backdrop) {
var e = a.support.transition && d;
if (this.$backdrop = a('<div class="modal-backdrop ' + d + '" />').appendTo(this.$body), this.$element.on("click.dismiss.bs.modal", a.proxy(function(a) {
a.target === a.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
}, this)), e && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !b) return;
e ? this.$backdrop.one("bsTransitionEnd", b).emulateTransitionEnd(150) : b()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass("in");
var f = function() {
c.removeBackdrop(), b && b()
};
a.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", f).emulateTransitionEnd(150) : f()
} else b && b()
}, c.prototype.checkScrollbar = function() {
document.body.clientWidth >= window.innerWidth || (this.scrollbarWidth = this.scrollbarWidth || this.measureScrollbar())
}, c.prototype.setScrollbar = function() {
var a = parseInt(this.$body.css("padding-right") || 0, 10);
this.scrollbarWidth && this.$body.css("padding-right", a + this.scrollbarWidth)
}, c.prototype.resetScrollbar = function() {
this.$body.css("padding-right", "")
}, c.prototype.measureScrollbar = function() {
var a = document.createElement("div");
a.className = "modal-scrollbar-measure", this.$body.append(a);
var b = a.offsetWidth - a.clientWidth;
return this.$body[0].removeChild(a), b
};
var d = a.fn.modal;
a.fn.modal = b, a.fn.modal.Constructor = c, a.fn.modal.noConflict = function() {
return a.fn.modal = d, this
}, a(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(c) {
var d = a(this),
e = d.attr("href"),
f = a(d.attr("data-target") || e && e.replace(/.*(?=#[^\s]+$)/, "")),
g = f.data("bs.modal") ? "toggle" : a.extend({
remote: !/#/.test(e) && e
}, f.data(), d.data());
d.is("a") && c.preventDefault(), f.one("show.bs.modal", function(a) {
a.isDefaultPrevented() || f.one("hidden.bs.modal", function() {
d.is(":visible") && d.trigger("focus")
})
}), b.call(f, g, this)
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.tooltip"),
f = "object" == typeof b && b;
(e || "destroy" != b) && (e || d.data("bs.tooltip", e = new c(this, f)), "string" == typeof b && e[b]())
})
}
var c = function(a, b) {
this.type = this.options = this.enabled = this.timeout = this.hoverState = this.$element = null, this.init("tooltip", a, b)
};
c.VERSION = "3.2.0", c.DEFAULTS = {
animation: !0,
placement: "top",
selector: !1,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: "hover focus",
title: "",
delay: 0,
html: !1,
container: !1,
viewport: {
selector: "body",
padding: 0
}
}, c.prototype.init = function(b, c, d) {
this.enabled = !0, this.type = b, this.$element = a(c), this.options = this.getOptions(d), this.$viewport = this.options.viewport && a(this.options.viewport.selector || this.options.viewport);
for (var e = this.options.trigger.split(" "), f = e.length; f--;) {
var g = e[f];
if ("click" == g) this.$element.on("click." + this.type, this.options.selector, a.proxy(this.toggle, this));
else if ("manual" != g) {
var h = "hover" == g ? "mouseenter" : "focusin",
i = "hover" == g ? "mouseleave" : "focusout";
this.$element.on(h + "." + this.type, this.options.selector, a.proxy(this.enter, this)), this.$element.on(i + "." + this.type, this.options.selector, a.proxy(this.leave, this))
}
}
this.options.selector ? this._options = a.extend({}, this.options, {
trigger: "manual",
selector: ""
}) : this.fixTitle()
}, c.prototype.getDefaults = function() {
return c.DEFAULTS
}, c.prototype.getOptions = function(b) {
return b = a.extend({}, this.getDefaults(), this.$element.data(), b), b.delay && "number" == typeof b.delay && (b.delay = {
show: b.delay,
hide: b.delay
}), b
}, c.prototype.getDelegateOptions = function() {
var b = {}, c = this.getDefaults();
return this._options && a.each(this._options, function(a, d) {
c[a] != d && (b[a] = d)
}), b
}, c.prototype.enter = function(b) {
var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), clearTimeout(c.timeout), c.hoverState = "in", c.options.delay && c.options.delay.show ? void(c.timeout = setTimeout(function() {
"in" == c.hoverState && c.show()
}, c.options.delay.show)) : c.show()
}, c.prototype.leave = function(b) {
var c = b instanceof this.constructor ? b : a(b.currentTarget).data("bs." + this.type);
return c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c)), clearTimeout(c.timeout), c.hoverState = "out", c.options.delay && c.options.delay.hide ? void(c.timeout = setTimeout(function() {
"out" == c.hoverState && c.hide()
}, c.options.delay.hide)) : c.hide()
}, c.prototype.show = function() {
var b = a.Event("show.bs." + this.type);
if (this.hasContent() && this.enabled) {
this.$element.trigger(b);
var c = a.contains(document.documentElement, this.$element[0]);
if (b.isDefaultPrevented() || !c) return;
var d = this,
e = this.tip(),
f = this.getUID(this.type);
this.setContent(), e.attr("id", f), this.$element.attr("aria-describedby", f), this.options.animation && e.addClass("fade");
var g = "function" == typeof this.options.placement ? this.options.placement.call(this, e[0], this.$element[0]) : this.options.placement,
h = /\s?auto?\s?/i,
i = h.test(g);
i && (g = g.replace(h, "") || "top"), e.detach().css({
top: 0,
left: 0,
display: "block"
}).addClass(g).data("bs." + this.type, this), this.options.container ? e.appendTo(this.options.container) : e.insertAfter(this.$element);
var j = this.getPosition(),
k = e[0].offsetWidth,
l = e[0].offsetHeight;
if (i) {
var m = g,
n = this.$element.parent(),
o = this.getPosition(n);
g = "bottom" == g && j.top + j.height + l - o.scroll > o.height ? "top" : "top" == g && j.top - o.scroll - l < 0 ? "bottom" : "right" == g && j.right + k > o.width ? "left" : "left" == g && j.left - k < o.left ? "right" : g, e.removeClass(m).addClass(g)
}
var p = this.getCalculatedOffset(g, j, k, l);
this.applyPlacement(p, g);
var q = function() {
d.$element.trigger("shown.bs." + d.type), d.hoverState = null
};
a.support.transition && this.$tip.hasClass("fade") ? e.one("bsTransitionEnd", q).emulateTransitionEnd(150) : q()
}
}, c.prototype.applyPlacement = function(b, c) {
var d = this.tip(),
e = d[0].offsetWidth,
f = d[0].offsetHeight,
g = parseInt(d.css("margin-top"), 10),
h = parseInt(d.css("margin-left"), 10);
isNaN(g) && (g = 0), isNaN(h) && (h = 0), b.top = b.top + g, b.left = b.left + h, a.offset.setOffset(d[0], a.extend({
using: function(a) {
d.css({
top: Math.round(a.top),
left: Math.round(a.left)
})
}
}, b), 0), d.addClass("in");
var i = d[0].offsetWidth,
j = d[0].offsetHeight;
"top" == c && j != f && (b.top = b.top + f - j);
var k = this.getViewportAdjustedDelta(c, b, i, j);
k.left ? b.left += k.left : b.top += k.top;
var l = k.left ? 2 * k.left - e + i : 2 * k.top - f + j,
m = k.left ? "left" : "top",
n = k.left ? "offsetWidth" : "offsetHeight";
d.offset(b), this.replaceArrow(l, d[0][n], m)
}, c.prototype.replaceArrow = function(a, b, c) {
this.arrow().css(c, a ? 50 * (1 - a / b) + "%" : "")
}, c.prototype.setContent = function() {
var a = this.tip(),
b = this.getTitle();
a.find(".tooltip-inner")[this.options.html ? "html" : "text"](b), a.removeClass("fade in top bottom left right")
}, c.prototype.hide = function() {
function b() {
"in" != c.hoverState && d.detach(), c.$element.trigger("hidden.bs." + c.type)
}
var c = this,
d = this.tip(),
e = a.Event("hide.bs." + this.type);
return this.$element.removeAttr("aria-describedby"), this.$element.trigger(e), e.isDefaultPrevented() ? void 0 : (d.removeClass("in"), a.support.transition && this.$tip.hasClass("fade") ? d.one("bsTransitionEnd", b).emulateTransitionEnd(150) : b(), this.hoverState = null, this)
}, c.prototype.fixTitle = function() {
var a = this.$element;
(a.attr("title") || "string" != typeof a.attr("data-original-title")) && a.attr("data-original-title", a.attr("title") || "").attr("title", "")
}, c.prototype.hasContent = function() {
return this.getTitle()
}, c.prototype.getPosition = function(b) {
b = b || this.$element;
var c = b[0],
d = "BODY" == c.tagName;
return a.extend({}, "function" == typeof c.getBoundingClientRect ? c.getBoundingClientRect() : null, {
scroll: d ? document.documentElement.scrollTop || document.body.scrollTop : b.scrollTop(),
width: d ? a(window).width() : b.outerWidth(),
height: d ? a(window).height() : b.outerHeight()
}, d ? {
top: 0,
left: 0
} : b.offset())
}, c.prototype.getCalculatedOffset = function(a, b, c, d) {
return "bottom" == a ? {
top: b.top + b.height,
left: b.left + b.width / 2 - c / 2
} : "top" == a ? {
top: b.top - d,
left: b.left + b.width / 2 - c / 2
} : "left" == a ? {
top: b.top + b.height / 2 - d / 2,
left: b.left - c
} : {
top: b.top + b.height / 2 - d / 2,
left: b.left + b.width
}
}, c.prototype.getViewportAdjustedDelta = function(a, b, c, d) {
var e = {
top: 0,
left: 0
};
if (!this.$viewport) return e;
var f = this.options.viewport && this.options.viewport.padding || 0,
g = this.getPosition(this.$viewport);
if (/right|left/.test(a)) {
var h = b.top - f - g.scroll,
i = b.top + f - g.scroll + d;
h < g.top ? e.top = g.top - h : i > g.top + g.height && (e.top = g.top + g.height - i)
} else {
var j = b.left - f,
k = b.left + f + c;
j < g.left ? e.left = g.left - j : k > g.width && (e.left = g.left + g.width - k)
}
return e
}, c.prototype.getTitle = function() {
var a, b = this.$element,
c = this.options;
return a = b.attr("data-original-title") || ("function" == typeof c.title ? c.title.call(b[0]) : c.title)
}, c.prototype.getUID = function(a) {
do a += ~~(1e6 * Math.random()); while (document.getElementById(a));
return a
}, c.prototype.tip = function() {
return this.$tip = this.$tip || a(this.options.template)
}, c.prototype.arrow = function() {
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
}, c.prototype.validate = function() {
this.$element[0].parentNode || (this.hide(), this.$element = null, this.options = null)
}, c.prototype.enable = function() {
this.enabled = !0
}, c.prototype.disable = function() {
this.enabled = !1
}, c.prototype.toggleEnabled = function() {
this.enabled = !this.enabled
}, c.prototype.toggle = function(b) {
var c = this;
b && (c = a(b.currentTarget).data("bs." + this.type), c || (c = new this.constructor(b.currentTarget, this.getDelegateOptions()), a(b.currentTarget).data("bs." + this.type, c))), c.tip().hasClass("in") ? c.leave(c) : c.enter(c)
}, c.prototype.destroy = function() {
clearTimeout(this.timeout), this.hide().$element.off("." + this.type).removeData("bs." + this.type)
};
var d = a.fn.tooltip;
a.fn.tooltip = b, a.fn.tooltip.Constructor = c, a.fn.tooltip.noConflict = function() {
return a.fn.tooltip = d, this
}
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.popover"),
f = "object" == typeof b && b;
(e || "destroy" != b) && (e || d.data("bs.popover", e = new c(this, f)), "string" == typeof b && e[b]())
})
}
var c = function(a, b) {
this.init("popover", a, b)
};
if (!a.fn.tooltip) throw new Error("Popover requires tooltip.js");
c.VERSION = "3.2.0", c.DEFAULTS = a.extend({}, a.fn.tooltip.Constructor.DEFAULTS, {
placement: "right",
trigger: "click",
content: "",
template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
}), c.prototype = a.extend({}, a.fn.tooltip.Constructor.prototype), c.prototype.constructor = c, c.prototype.getDefaults = function() {
return c.DEFAULTS
}, c.prototype.setContent = function() {
var a = this.tip(),
b = this.getTitle(),
c = this.getContent();
a.find(".popover-title")[this.options.html ? "html" : "text"](b), a.find(".popover-content").empty()[this.options.html ? "string" == typeof c ? "html" : "append" : "text"](c), a.removeClass("fade top bottom left right in"), a.find(".popover-title").html() || a.find(".popover-title").hide()
}, c.prototype.hasContent = function() {
return this.getTitle() || this.getContent()
}, c.prototype.getContent = function() {
var a = this.$element,
b = this.options;
return a.attr("data-content") || ("function" == typeof b.content ? b.content.call(a[0]) : b.content)
}, c.prototype.arrow = function() {
return this.$arrow = this.$arrow || this.tip().find(".arrow")
}, c.prototype.tip = function() {
return this.$tip || (this.$tip = a(this.options.template)), this.$tip
};
var d = a.fn.popover;
a.fn.popover = b, a.fn.popover.Constructor = c, a.fn.popover.noConflict = function() {
return a.fn.popover = d, this
}
}(jQuery), + function(a) {
"use strict";
function b(c, d) {
var e = a.proxy(this.process, this);
this.$body = a("body"), this.$scrollElement = a(a(c).is("body") ? window : c), this.options = a.extend({}, b.DEFAULTS, d), this.selector = (this.options.target || "") + " .nav li > a", this.offsets = [], this.targets = [], this.activeTarget = null, this.scrollHeight = 0, this.$scrollElement.on("scroll.bs.scrollspy", e), this.refresh(), this.process()
}
function c(c) {
return this.each(function() {
var d = a(this),
e = d.data("bs.scrollspy"),
f = "object" == typeof c && c;
e || d.data("bs.scrollspy", e = new b(this, f)), "string" == typeof c && e[c]()
})
}
b.VERSION = "3.2.0", b.DEFAULTS = {
offset: 10
}, b.prototype.getScrollHeight = function() {
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
}, b.prototype.refresh = function() {
var b = "offset",
c = 0;
a.isWindow(this.$scrollElement[0]) || (b = "position", c = this.$scrollElement.scrollTop()), this.offsets = [], this.targets = [], this.scrollHeight = this.getScrollHeight();
var d = this;
this.$body.find(this.selector).map(function() {
var d = a(this),
e = d.data("target") || d.attr("href"),
f = /^#./.test(e) && a(e);
return f && f.length && f.is(":visible") && [
[f[b]().top + c, e]
] || null
}).sort(function(a, b) {
return a[0] - b[0]
}).each(function() {
d.offsets.push(this[0]), d.targets.push(this[1])
})
}, b.prototype.process = function() {
var a, b = this.$scrollElement.scrollTop() + this.options.offset,
c = this.getScrollHeight(),
d = this.options.offset + c - this.$scrollElement.height(),
e = this.offsets,
f = this.targets,
g = this.activeTarget;
if (this.scrollHeight != c && this.refresh(), b >= d) return g != (a = f[f.length - 1]) && this.activate(a);
if (g && b <= e[0]) return g != (a = f[0]) && this.activate(a);
for (a = e.length; a--;) g != f[a] && b >= e[a] && (!e[a + 1] || b <= e[a + 1]) && this.activate(f[a])
}, b.prototype.activate = function(b) {
this.activeTarget = b, a(this.selector).parentsUntil(this.options.target, ".active").removeClass("active");
var c = this.selector + '[data-target="' + b + '"],' + this.selector + '[href="' + b + '"]',
d = a(c).parents("li").addClass("active");
d.parent(".dropdown-menu").length && (d = d.closest("li.dropdown").addClass("active")), d.trigger("activate.bs.scrollspy")
};
var d = a.fn.scrollspy;
a.fn.scrollspy = c, a.fn.scrollspy.Constructor = b, a.fn.scrollspy.noConflict = function() {
return a.fn.scrollspy = d, this
}, a(window).on("load.bs.scrollspy.data-api", function() {
a('[data-spy="scroll"]').each(function() {
var b = a(this);
c.call(b, b.data())
})
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.tab");
e || d.data("bs.tab", e = new c(this)), "string" == typeof b && e[b]()
})
}
var c = function(b) {
this.element = a(b)
};
c.VERSION = "3.2.0", c.prototype.show = function() {
var b = this.element,
c = b.closest("ul:not(.dropdown-menu)"),
d = b.data("target");
if (d || (d = b.attr("href"), d = d && d.replace(/.*(?=#[^\s]*$)/, "")), !b.parent("li").hasClass("active")) {
var e = c.find(".active:last a")[0],
f = a.Event("show.bs.tab", {
relatedTarget: e
});
if (b.trigger(f), !f.isDefaultPrevented()) {
var g = a(d);
this.activate(b.closest("li"), c), this.activate(g, g.parent(), function() {
b.trigger({
type: "shown.bs.tab",
relatedTarget: e
})
})
}
}
}, c.prototype.activate = function(b, c, d) {
function e() {
f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"), b.addClass("active"), g ? (b[0].offsetWidth, b.addClass("in")) : b.removeClass("fade"), b.parent(".dropdown-menu") && b.closest("li.dropdown").addClass("active"), d && d()
}
var f = c.find("> .active"),
g = d && a.support.transition && f.hasClass("fade");
g ? f.one("bsTransitionEnd", e).emulateTransitionEnd(150) : e(), f.removeClass("in")
};
var d = a.fn.tab;
a.fn.tab = b, a.fn.tab.Constructor = c, a.fn.tab.noConflict = function() {
return a.fn.tab = d, this
}, a(document).on("click.bs.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function(c) {
c.preventDefault(), b.call(a(this), "show")
})
}(jQuery), + function(a) {
"use strict";
function b(b) {
return this.each(function() {
var d = a(this),
e = d.data("bs.affix"),
f = "object" == typeof b && b;
e || d.data("bs.affix", e = new c(this, f)), "string" == typeof b && e[b]()
})
}
var c = function(b, d) {
this.options = a.extend({}, c.DEFAULTS, d), this.$target = a(this.options.target).on("scroll.bs.affix.data-api", a.proxy(this.checkPosition, this)).on("click.bs.affix.data-api", a.proxy(this.checkPositionWithEventLoop, this)), this.$element = a(b), this.affixed = this.unpin = this.pinnedOffset = null, this.checkPosition()
};
c.VERSION = "3.2.0", c.RESET = "affix affix-top affix-bottom", c.DEFAULTS = {
offset: 0,
target: window
}, c.prototype.getPinnedOffset = function() {
if (this.pinnedOffset) return this.pinnedOffset;
this.$element.removeClass(c.RESET).addClass("affix");
var a = this.$target.scrollTop(),
b = this.$element.offset();
return this.pinnedOffset = b.top - a
}, c.prototype.checkPositionWithEventLoop = function() {
setTimeout(a.proxy(this.checkPosition, this), 1)
}, c.prototype.checkPosition = function() {
if (this.$element.is(":visible")) {
var b = a(document).height(),
d = this.$target.scrollTop(),
e = this.$element.offset(),
f = this.options.offset,
g = f.top,
h = f.bottom;
"object" != typeof f && (h = g = f), "function" == typeof g && (g = f.top(this.$element)), "function" == typeof h && (h = f.bottom(this.$element));
var i = null != this.unpin && d + this.unpin <= e.top ? !1 : null != h && e.top + this.$element.height() >= b - h ? "bottom" : null != g && g >= d ? "top" : !1;
if (this.affixed !== i) {
null != this.unpin && this.$element.css("top", "");
var j = "affix" + (i ? "-" + i : ""),
k = a.Event(j + ".bs.affix");
this.$element.trigger(k), k.isDefaultPrevented() || (this.affixed = i, this.unpin = "bottom" == i ? this.getPinnedOffset() : null, this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix", "affixed"))), "bottom" == i && this.$element.offset({
top: b - this.$element.height() - h
}))
}
}
};
var d = a.fn.affix;
a.fn.affix = b, a.fn.affix.Constructor = c, a.fn.affix.noConflict = function() {
return a.fn.affix = d, this
}, a(window).on("load", function() {
a('[data-spy="affix"]').each(function() {
var c = a(this),
d = c.data();
d.offset = d.offset || {}, d.offsetBottom && (d.offset.bottom = d.offsetBottom), d.offsetTop && (d.offset.top = d.offsetTop), b.call(c, d)
})
})
}(jQuery),
function(root, factory) {
"object" == typeof exports && "object" == typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define(factory) : "object" == typeof exports ? exports.Handlebars = factory() : root.Handlebars = factory()
}(this, function() {
return function(modules) {
function __webpack_require__(moduleId) {
if (installedModules[moduleId]) return installedModules[moduleId].exports;
var module = installedModules[moduleId] = {
exports: {},
id: moduleId,
loaded: !1
};
return modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), module.loaded = !0, module.exports
}
var installedModules = {};
return __webpack_require__.m = modules, __webpack_require__.c = installedModules, __webpack_require__.p = "", __webpack_require__(0)
}([
function(module, exports, __webpack_require__) {
"use strict";
function create() {
var hb = _create();
return hb.compile = function(input, options) {
return _Compiler$compile$precompile.compile(input, options, hb)
}, hb.precompile = function(input, options) {
return _Compiler$compile$precompile.precompile(input, options, hb)
}, hb.AST = _AST2["default"], hb.Compiler = _Compiler$compile$precompile.Compiler, hb.JavaScriptCompiler = _JavaScriptCompiler2["default"], hb.Parser = _Parser$parse.parser, hb.parse = _Parser$parse.parse, hb
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0;
var _runtime = __webpack_require__(1),
_runtime2 = _interopRequireWildcard(_runtime),
_AST = __webpack_require__(2),
_AST2 = _interopRequireWildcard(_AST),
_Parser$parse = __webpack_require__(3),
_Compiler$compile$precompile = __webpack_require__(4),
_JavaScriptCompiler = __webpack_require__(5),
_JavaScriptCompiler2 = _interopRequireWildcard(_JavaScriptCompiler),
_Visitor = __webpack_require__(6),
_Visitor2 = _interopRequireWildcard(_Visitor),
_noConflict = __webpack_require__(7),
_noConflict2 = _interopRequireWildcard(_noConflict),
_create = _runtime2["default"].create,
inst = create();
inst.create = create, _noConflict2["default"](inst), inst.Visitor = _Visitor2["default"], inst["default"] = inst, exports["default"] = inst, module.exports = exports["default"]
},
function(module, exports, __webpack_require__) {
"use strict";
function create() {
var hb = new base.HandlebarsEnvironment;
return Utils.extend(hb, base), hb.SafeString = _SafeString2["default"], hb.Exception = _Exception2["default"], hb.Utils = Utils, hb.escapeExpression = Utils.escapeExpression, hb.VM = runtime, hb.template = function(spec) {
return runtime.template(spec, hb)
}, hb
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0;
var _import = __webpack_require__(9),
base = _interopRequireWildcard(_import),
_SafeString = __webpack_require__(10),
_SafeString2 = _interopRequireWildcard(_SafeString),
_Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
_import2 = __webpack_require__(12),
Utils = _interopRequireWildcard(_import2),
_import3 = __webpack_require__(13),
runtime = _interopRequireWildcard(_import3),
_noConflict = __webpack_require__(7),
_noConflict2 = _interopRequireWildcard(_noConflict),
inst = create();
inst.create = create, _noConflict2["default"](inst), inst["default"] = inst, exports["default"] = inst, module.exports = exports["default"]
},
function(module, exports) {
"use strict";
exports.__esModule = !0;
var AST = {
Program: function(statements, blockParams, strip, locInfo) {
this.loc = locInfo, this.type = "Program", this.body = statements, this.blockParams = blockParams, this.strip = strip
},
MustacheStatement: function(path, params, hash, escaped, strip, locInfo) {
this.loc = locInfo, this.type = "MustacheStatement", this.path = path, this.params = params || [], this.hash = hash, this.escaped = escaped, this.strip = strip
},
BlockStatement: function(path, params, hash, program, inverse, openStrip, inverseStrip, closeStrip, locInfo) {
this.loc = locInfo, this.type = "BlockStatement", this.path = path, this.params = params || [], this.hash = hash, this.program = program, this.inverse = inverse, this.openStrip = openStrip, this.inverseStrip = inverseStrip, this.closeStrip = closeStrip
},
PartialStatement: function(name, params, hash, strip, locInfo) {
this.loc = locInfo, this.type = "PartialStatement", this.name = name, this.params = params || [], this.hash = hash, this.indent = "", this.strip = strip
},
ContentStatement: function(string, locInfo) {
this.loc = locInfo, this.type = "ContentStatement", this.original = this.value = string
},
CommentStatement: function(comment, strip, locInfo) {
this.loc = locInfo, this.type = "CommentStatement", this.value = comment, this.strip = strip
},
SubExpression: function(path, params, hash, locInfo) {
this.loc = locInfo, this.type = "SubExpression", this.path = path, this.params = params || [], this.hash = hash
},
PathExpression: function(data, depth, parts, original, locInfo) {
this.loc = locInfo, this.type = "PathExpression", this.data = data, this.original = original, this.parts = parts, this.depth = depth
},
StringLiteral: function(string, locInfo) {
this.loc = locInfo, this.type = "StringLiteral", this.original = this.value = string
},
NumberLiteral: function(number, locInfo) {
this.loc = locInfo, this.type = "NumberLiteral", this.original = this.value = Number(number)
},
BooleanLiteral: function(bool, locInfo) {
this.loc = locInfo, this.type = "BooleanLiteral", this.original = this.value = "true" === bool
},
UndefinedLiteral: function(locInfo) {
this.loc = locInfo, this.type = "UndefinedLiteral", this.original = this.value = void 0
},
NullLiteral: function(locInfo) {
this.loc = locInfo, this.type = "NullLiteral", this.original = this.value = null
},
Hash: function(pairs, locInfo) {
this.loc = locInfo, this.type = "Hash", this.pairs = pairs
},
HashPair: function(key, value, locInfo) {
this.loc = locInfo, this.type = "HashPair", this.key = key, this.value = value
},
helpers: {
helperExpression: function(node) {
return !("SubExpression" !== node.type && !node.params.length && !node.hash)
},
scopedId: function(path) {
return /^\.|this\b/.test(path.original)
},
simpleId: function(path) {
return 1 === path.parts.length && !AST.helpers.scopedId(path) && !path.depth
}
}
};
exports["default"] = AST, module.exports = exports["default"]
},
function(module, exports, __webpack_require__) {
"use strict";
function parse(input, options) {
if ("Program" === input.type) return input;
_parser2["default"].yy = yy, yy.locInfo = function(locInfo) {
return new yy.SourceLocation(options && options.srcName, locInfo)
};
var strip = new _WhitespaceControl2["default"];
return strip.accept(_parser2["default"].parse(input))
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0, exports.parse = parse;
var _parser = __webpack_require__(14),
_parser2 = _interopRequireWildcard(_parser),
_AST = __webpack_require__(2),
_AST2 = _interopRequireWildcard(_AST),
_WhitespaceControl = __webpack_require__(15),
_WhitespaceControl2 = _interopRequireWildcard(_WhitespaceControl),
_import = __webpack_require__(16),
Helpers = _interopRequireWildcard(_import),
_extend = __webpack_require__(12);
exports.parser = _parser2["default"];
var yy = {};
_extend.extend(yy, Helpers, _AST2["default"])
},
function(module, exports, __webpack_require__) {
"use strict";
function Compiler() {}
function precompile(input, options, env) {
if (null == input || "string" != typeof input && "Program" !== input.type) throw new _Exception2["default"]("You must pass a string or Handlebars AST to Handlebars.precompile. You passed " + input);
options = options || {}, "data" in options || (options.data = !0), options.compat && (options.useDepths = !0);
var ast = env.parse(input, options),
environment = (new env.Compiler).compile(ast, options);
return (new env.JavaScriptCompiler).compile(environment, options)
}
function compile(input, _x, env) {
function compileInput() {
var ast = env.parse(input, options),
environment = (new env.Compiler).compile(ast, options),
templateSpec = (new env.JavaScriptCompiler).compile(environment, options, void 0, !0);
return env.template(templateSpec)
}
function ret(context, execOptions) {
return compiled || (compiled = compileInput()), compiled.call(this, context, execOptions)
}
var options = void 0 === arguments[1] ? {} : arguments[1];
if (null == input || "string" != typeof input && "Program" !== input.type) throw new _Exception2["default"]("You must pass a string or Handlebars AST to Handlebars.compile. You passed " + input);
"data" in options || (options.data = !0), options.compat && (options.useDepths = !0);
var compiled = void 0;
return ret._setup = function(setupOptions) {
return compiled || (compiled = compileInput()), compiled._setup(setupOptions)
}, ret._child = function(i, data, blockParams, depths) {
return compiled || (compiled = compileInput()), compiled._child(i, data, blockParams, depths)
}, ret
}
function argEquals(a, b) {
if (a === b) return !0;
if (_isArray$indexOf.isArray(a) && _isArray$indexOf.isArray(b) && a.length === b.length) {
for (var i = 0; i < a.length; i++)
if (!argEquals(a[i], b[i])) return !1;
return !0
}
}
function transformLiteralToPath(sexpr) {
if (!sexpr.path.parts) {
var literal = sexpr.path;
sexpr.path = new _AST2["default"].PathExpression(!1, 0, [literal.original + ""], literal.original + "", literal.loc)
}
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0, exports.Compiler = Compiler, exports.precompile = precompile, exports.compile = compile;
var _Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
_isArray$indexOf = __webpack_require__(12),
_AST = __webpack_require__(2),
_AST2 = _interopRequireWildcard(_AST),
slice = [].slice;
Compiler.prototype = {
compiler: Compiler,
equals: function(other) {
var len = this.opcodes.length;
if (other.opcodes.length !== len) return !1;
for (var i = 0; len > i; i++) {
var opcode = this.opcodes[i],
otherOpcode = other.opcodes[i];
if (opcode.opcode !== otherOpcode.opcode || !argEquals(opcode.args, otherOpcode.args)) return !1
}
len = this.children.length;
for (var i = 0; len > i; i++)
if (!this.children[i].equals(other.children[i])) return !1;
return !0
},
guid: 0,
compile: function(program, options) {
this.sourceNode = [], this.opcodes = [], this.children = [], this.options = options, this.stringParams = options.stringParams, this.trackIds = options.trackIds, options.blockParams = options.blockParams || [];
var knownHelpers = options.knownHelpers;
if (options.knownHelpers = {
helperMissing: !0,
blockHelperMissing: !0,
each: !0,
"if": !0,
unless: !0,
"with": !0,
log: !0,
lookup: !0
}, knownHelpers)
for (var _name in knownHelpers) _name in knownHelpers && (options.knownHelpers[_name] = knownHelpers[_name]);
return this.accept(program)
},
compileProgram: function(program) {
var childCompiler = new this.compiler,
result = childCompiler.compile(program, this.options),
guid = this.guid++;
return this.usePartial = this.usePartial || result.usePartial, this.children[guid] = result, this.useDepths = this.useDepths || result.useDepths, guid
},
accept: function(node) {
this.sourceNode.unshift(node);
var ret = this[node.type](node);
return this.sourceNode.shift(), ret
},
Program: function(program) {
this.options.blockParams.unshift(program.blockParams);
for (var body = program.body, bodyLength = body.length, i = 0; bodyLength > i; i++) this.accept(body[i]);
return this.options.blockParams.shift(), this.isSimple = 1 === bodyLength, this.blockParams = program.blockParams ? program.blockParams.length : 0, this
},
BlockStatement: function(block) {
transformLiteralToPath(block);
var program = block.program,
inverse = block.inverse;
program = program && this.compileProgram(program), inverse = inverse && this.compileProgram(inverse);
var type = this.classifySexpr(block);
"helper" === type ? this.helperSexpr(block, program, inverse) : "simple" === type ? (this.simpleSexpr(block), this.opcode("pushProgram", program), this.opcode("pushProgram", inverse), this.opcode("emptyHash"), this.opcode("blockValue", block.path.original)) : (this.ambiguousSexpr(block, program, inverse), this.opcode("pushProgram", program), this.opcode("pushProgram", inverse), this.opcode("emptyHash"), this.opcode("ambiguousBlockValue")), this.opcode("append")
},
PartialStatement: function(partial) {
this.usePartial = !0;
var params = partial.params;
if (params.length > 1) throw new _Exception2["default"]("Unsupported number of partial arguments: " + params.length, partial);
params.length || params.push({
type: "PathExpression",
parts: [],
depth: 0
});
var partialName = partial.name.original,
isDynamic = "SubExpression" === partial.name.type;
isDynamic && this.accept(partial.name), this.setupFullMustacheParams(partial, void 0, void 0, !0);
var indent = partial.indent || "";
this.options.preventIndent && indent && (this.opcode("appendContent", indent), indent = ""), this.opcode("invokePartial", isDynamic, partialName, indent), this.opcode("append")
},
MustacheStatement: function(mustache) {
this.SubExpression(mustache), this.opcode(mustache.escaped && !this.options.noEscape ? "appendEscaped" : "append")
},
ContentStatement: function(content) {
content.value && this.opcode("appendContent", content.value)
},
CommentStatement: function() {},
SubExpression: function(sexpr) {
transformLiteralToPath(sexpr);
var type = this.classifySexpr(sexpr);
"simple" === type ? this.simpleSexpr(sexpr) : "helper" === type ? this.helperSexpr(sexpr) : this.ambiguousSexpr(sexpr)
},
ambiguousSexpr: function(sexpr, program, inverse) {
var path = sexpr.path,
name = path.parts[0],
isBlock = null != program || null != inverse;
this.opcode("getContext", path.depth), this.opcode("pushProgram", program), this.opcode("pushProgram", inverse), this.accept(path), this.opcode("invokeAmbiguous", name, isBlock)
},
simpleSexpr: function(sexpr) {
this.accept(sexpr.path), this.opcode("resolvePossibleLambda")
},
helperSexpr: function(sexpr, program, inverse) {
var params = this.setupFullMustacheParams(sexpr, program, inverse),
path = sexpr.path,
name = path.parts[0];
if (this.options.knownHelpers[name]) this.opcode("invokeKnownHelper", params.length, name);
else {
if (this.options.knownHelpersOnly) throw new _Exception2["default"]("You specified knownHelpersOnly, but used the unknown helper " + name, sexpr);
path.falsy = !0, this.accept(path), this.opcode("invokeHelper", params.length, path.original, _AST2["default"].helpers.simpleId(path))
}
},
PathExpression: function(path) {
this.addDepth(path.depth), this.opcode("getContext", path.depth);
var name = path.parts[0],
scoped = _AST2["default"].helpers.scopedId(path),
blockParamId = !path.depth && !scoped && this.blockParamIndex(name);
blockParamId ? this.opcode("lookupBlockParam", blockParamId, path.parts) : name ? path.data ? (this.options.data = !0, this.opcode("lookupData", path.depth, path.parts)) : this.opcode("lookupOnContext", path.parts, path.falsy, scoped) : this.opcode("pushContext")
},
StringLiteral: function(string) {
this.opcode("pushString", string.value)
},
NumberLiteral: function(number) {
this.opcode("pushLiteral", number.value)
},
BooleanLiteral: function(bool) {
this.opcode("pushLiteral", bool.value)
},
UndefinedLiteral: function() {
this.opcode("pushLiteral", "undefined")
},
NullLiteral: function() {
this.opcode("pushLiteral", "null")
},
Hash: function(hash) {
var pairs = hash.pairs,
i = 0,
l = pairs.length;
for (this.opcode("pushHash"); l > i; i++) this.pushParam(pairs[i].value);
for (; i--;) this.opcode("assignToHash", pairs[i].key);
this.opcode("popHash")
},
opcode: function(name) {
this.opcodes.push({
opcode: name,
args: slice.call(arguments, 1),
loc: this.sourceNode[0].loc
})
},
addDepth: function(depth) {
depth && (this.useDepths = !0)
},
classifySexpr: function(sexpr) {
var isSimple = _AST2["default"].helpers.simpleId(sexpr.path),
isBlockParam = isSimple && !! this.blockParamIndex(sexpr.path.parts[0]),
isHelper = !isBlockParam && _AST2["default"].helpers.helperExpression(sexpr),
isEligible = !isBlockParam && (isHelper || isSimple);
if (isEligible && !isHelper) {
var _name2 = sexpr.path.parts[0],
options = this.options;
options.knownHelpers[_name2] ? isHelper = !0 : options.knownHelpersOnly && (isEligible = !1)
}
return isHelper ? "helper" : isEligible ? "ambiguous" : "simple"
},
pushParams: function(params) {
for (var i = 0, l = params.length; l > i; i++) this.pushParam(params[i])
},
pushParam: function(val) {
var value = null != val.value ? val.value : val.original || "";
if (this.stringParams) value.replace && (value = value.replace(/^(\.?\.\/)*/g, "").replace(/\//g, ".")), val.depth && this.addDepth(val.depth), this.opcode("getContext", val.depth || 0), this.opcode("pushStringParam", value, val.type), "SubExpression" === val.type && this.accept(val);
else {
if (this.trackIds) {
var blockParamIndex = void 0;
if (!val.parts || _AST2["default"].helpers.scopedId(val) || val.depth || (blockParamIndex = this.blockParamIndex(val.parts[0])), blockParamIndex) {
var blockParamChild = val.parts.slice(1).join(".");
this.opcode("pushId", "BlockParam", blockParamIndex, blockParamChild)
} else value = val.original || value, value.replace && (value = value.replace(/^\.\//g, "").replace(/^\.$/g, "")), this.opcode("pushId", val.type, value)
}
this.accept(val)
}
},
setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {
var params = sexpr.params;
return this.pushParams(params), this.opcode("pushProgram", program), this.opcode("pushProgram", inverse), sexpr.hash ? this.accept(sexpr.hash) : this.opcode("emptyHash", omitEmpty), params
},
blockParamIndex: function(name) {
for (var depth = 0, len = this.options.blockParams.length; len > depth; depth++) {
var blockParams = this.options.blockParams[depth],
param = blockParams && _isArray$indexOf.indexOf(blockParams, name);
if (blockParams && param >= 0) return [depth, param]
}
}
}
},
function(module, exports, __webpack_require__) {
"use strict";
function Literal(value) {
this.value = value
}
function JavaScriptCompiler() {}
function strictLookup(requireTerminal, compiler, parts, type) {
var stack = compiler.popStack(),
i = 0,
len = parts.length;
for (requireTerminal && len--; len > i; i++) stack = compiler.nameLookup(stack, parts[i], type);
return requireTerminal ? [compiler.aliasable("this.strict"), "(", stack, ", ", compiler.quotedString(parts[i]), ")"] : stack
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0;
var _COMPILER_REVISION$REVISION_CHANGES = __webpack_require__(9),
_Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
_isArray = __webpack_require__(12),
_CodeGen = __webpack_require__(17),
_CodeGen2 = _interopRequireWildcard(_CodeGen);
JavaScriptCompiler.prototype = {
nameLookup: function(parent, name) {
return JavaScriptCompiler.isValidJavaScriptVariableName(name) ? [parent, ".", name] : [parent, "['", name, "']"]
},
depthedLookup: function(name) {
return [this.aliasable("this.lookup"), '(depths, "', name, '")']
},
compilerInfo: function() {
var revision = _COMPILER_REVISION$REVISION_CHANGES.COMPILER_REVISION,
versions = _COMPILER_REVISION$REVISION_CHANGES.REVISION_CHANGES[revision];
return [revision, versions]
},
appendToBuffer: function(source, location, explicit) {
return _isArray.isArray(source) || (source = [source]), source = this.source.wrap(source, location), this.environment.isSimple ? ["return ", source, ";"] : explicit ? ["buffer += ", source, ";"] : (source.appendToBuffer = !0, source)
},
initializeBuffer: function() {
return this.quotedString("")
},
compile: function(environment, options, context, asObject) {
this.environment = environment, this.options = options, this.stringParams = this.options.stringParams, this.trackIds = this.options.trackIds, this.precompile = !asObject, this.name = this.environment.name, this.isChild = !! context, this.context = context || {
programs: [],
environments: []
}, this.preamble(), this.stackSlot = 0, this.stackVars = [], this.aliases = {}, this.registers = {
list: []
}, this.hashes = [], this.compileStack = [], this.inlineStack = [], this.blockParams = [], this.compileChildren(environment, options), this.useDepths = this.useDepths || environment.useDepths || this.options.compat, this.useBlockParams = this.useBlockParams || environment.useBlockParams;
var opcodes = environment.opcodes,
opcode = void 0,
firstLoc = void 0,
i = void 0,
l = void 0;
for (i = 0, l = opcodes.length; l > i; i++) opcode = opcodes[i], this.source.currentLocation = opcode.loc, firstLoc = firstLoc || opcode.loc, this[opcode.opcode].apply(this, opcode.args);
if (this.source.currentLocation = firstLoc, this.pushSource(""), this.stackSlot || this.inlineStack.length || this.compileStack.length) throw new _Exception2["default"]("Compile completed with content left on stack");
var fn = this.createFunctionContext(asObject);
if (this.isChild) return fn;
var ret = {
compiler: this.compilerInfo(),
main: fn
}, programs = this.context.programs;
for (i = 0, l = programs.length; l > i; i++) programs[i] && (ret[i] = programs[i]);
return this.environment.usePartial && (ret.usePartial = !0), this.options.data && (ret.useData = !0), this.useDepths && (ret.useDepths = !0), this.useBlockParams && (ret.useBlockParams = !0), this.options.compat && (ret.compat = !0), asObject ? ret.compilerOptions = this.options : (ret.compiler = JSON.stringify(ret.compiler), this.source.currentLocation = {
start: {
line: 1,
column: 0
}
}, ret = this.objectLiteral(ret), options.srcName ? (ret = ret.toStringWithSourceMap({
file: options.destName
}), ret.map = ret.map && ret.map.toString()) : ret = ret.toString()), ret
},
preamble: function() {
this.lastContext = 0, this.source = new _CodeGen2["default"](this.options.srcName)
},
createFunctionContext: function(asObject) {
var varDeclarations = "",
locals = this.stackVars.concat(this.registers.list);
locals.length > 0 && (varDeclarations += ", " + locals.join(", "));
var aliasCount = 0;
for (var alias in this.aliases) {
var node = this.aliases[alias];
this.aliases.hasOwnProperty(alias) && node.children && node.referenceCount > 1 && (varDeclarations += ", alias" + ++aliasCount + "=" + alias, node.children[0] = "alias" + aliasCount)
}
var params = ["depth0", "helpers", "partials", "data"];
(this.useBlockParams || this.useDepths) && params.push("blockParams"), this.useDepths && params.push("depths");
var source = this.mergeSource(varDeclarations);
return asObject ? (params.push(source), Function.apply(this, params)) : this.source.wrap(["function(", params.join(","), ") {\n ", source, "}"])
},
mergeSource: function(varDeclarations) {
var isSimple = this.environment.isSimple,
appendOnly = !this.forceBuffer,
appendFirst = void 0,
sourceSeen = void 0,
bufferStart = void 0,
bufferEnd = void 0;
return this.source.each(function(line) {
line.appendToBuffer ? (bufferStart ? line.prepend(" + ") : bufferStart = line, bufferEnd = line) : (bufferStart && (sourceSeen ? bufferStart.prepend("buffer += ") : appendFirst = !0, bufferEnd.add(";"), bufferStart = bufferEnd = void 0), sourceSeen = !0, isSimple || (appendOnly = !1))
}), appendOnly ? bufferStart ? (bufferStart.prepend("return "), bufferEnd.add(";")) : sourceSeen || this.source.push('return "";') : (varDeclarations += ", buffer = " + (appendFirst ? "" : this.initializeBuffer()), bufferStart ? (bufferStart.prepend("return buffer + "), bufferEnd.add(";")) : this.source.push("return buffer;")), varDeclarations && this.source.prepend("var " + varDeclarations.substring(2) + (appendFirst ? "" : ";\n")), this.source.merge()
},
blockValue: function(name) {
var blockHelperMissing = this.aliasable("helpers.blockHelperMissing"),
params = [this.contextName(0)];
this.setupHelperArgs(name, 0, params);
var blockName = this.popStack();
params.splice(1, 0, blockName), this.push(this.source.functionCall(blockHelperMissing, "call", params))
},
ambiguousBlockValue: function() {
var blockHelperMissing = this.aliasable("helpers.blockHelperMissing"),
params = [this.contextName(0)];
this.setupHelperArgs("", 0, params, !0), this.flushInline();
var current = this.topStack();
params.splice(1, 0, current), this.pushSource(["if (!", this.lastHelper, ") { ", current, " = ", this.source.functionCall(blockHelperMissing, "call", params), "}"])
},
appendContent: function(content) {
this.pendingContent ? content = this.pendingContent + content : this.pendingLocation = this.source.currentLocation, this.pendingContent = content
},
append: function() {
if (this.isInline()) this.replaceStack(function(current) {
return [" != null ? ", current, ' : ""']
}), this.pushSource(this.appendToBuffer(this.popStack()));
else {
var local = this.popStack();
this.pushSource(["if (", local, " != null) { ", this.appendToBuffer(local, void 0, !0), " }"]), this.environment.isSimple && this.pushSource(["else { ", this.appendToBuffer("''", void 0, !0), " }"])
}
},
appendEscaped: function() {
this.pushSource(this.appendToBuffer([this.aliasable("this.escapeExpression"), "(", this.popStack(), ")"]))
},
getContext: function(depth) {
this.lastContext = depth
},
pushContext: function() {
this.pushStackLiteral(this.contextName(this.lastContext))
},
lookupOnContext: function(parts, falsy, scoped) {
var i = 0;
scoped || !this.options.compat || this.lastContext ? this.pushContext() : this.push(this.depthedLookup(parts[i++])), this.resolvePath("context", parts, i, falsy)
},
lookupBlockParam: function(blockParamId, parts) {
this.useBlockParams = !0, this.push(["blockParams[", blockParamId[0], "][", blockParamId[1], "]"]), this.resolvePath("context", parts, 1)
},
lookupData: function(depth, parts) {
this.pushStackLiteral(depth ? "this.data(data, " + depth + ")" : "data"), this.resolvePath("data", parts, 0, !0)
},
resolvePath: function(type, parts, i, falsy) {
var _this = this;
if (this.options.strict || this.options.assumeObjects) return void this.push(strictLookup(this.options.strict, this, parts, type));
for (var len = parts.length; len > i; i++) this.replaceStack(function(current) {
var lookup = _this.nameLookup(current, parts[i], type);
return falsy ? [" && ", lookup] : [" != null ? ", lookup, " : ", current]
})
},
resolvePossibleLambda: function() {
this.push([this.aliasable("this.lambda"), "(", this.popStack(), ", ", this.contextName(0), ")"])
},
pushStringParam: function(string, type) {
this.pushContext(), this.pushString(type), "SubExpression" !== type && ("string" == typeof string ? this.pushString(string) : this.pushStackLiteral(string))
},
emptyHash: function(omitEmpty) {
this.trackIds && this.push("{}"), this.stringParams && (this.push("{}"), this.push("{}")), this.pushStackLiteral(omitEmpty ? "undefined" : "{}")
},
pushHash: function() {
this.hash && this.hashes.push(this.hash), this.hash = {
values: [],
types: [],
contexts: [],
ids: []
}
},
popHash: function() {
var hash = this.hash;
this.hash = this.hashes.pop(), this.trackIds && this.push(this.objectLiteral(hash.ids)), this.stringParams && (this.push(this.objectLiteral(hash.contexts)), this.push(this.objectLiteral(hash.types))), this.push(this.objectLiteral(hash.values))
},
pushString: function(string) {
this.pushStackLiteral(this.quotedString(string))
},
pushLiteral: function(value) {
this.pushStackLiteral(value)
},
pushProgram: function(guid) {
this.pushStackLiteral(null != guid ? this.programExpression(guid) : null)
},
invokeHelper: function(paramSize, name, isSimple) {
var nonHelper = this.popStack(),
helper = this.setupHelper(paramSize, name),
simple = isSimple ? [helper.name, " || "] : "",
lookup = ["("].concat(simple, nonHelper);
this.options.strict || lookup.push(" || ", this.aliasable("helpers.helperMissing")), lookup.push(")"), this.push(this.source.functionCall(lookup, "call", helper.callParams))
},
invokeKnownHelper: function(paramSize, name) {
var helper = this.setupHelper(paramSize, name);
this.push(this.source.functionCall(helper.name, "call", helper.callParams))
},
invokeAmbiguous: function(name, helperCall) {
this.useRegister("helper");
var nonHelper = this.popStack();
this.emptyHash();
var helper = this.setupHelper(0, name, helperCall),
helperName = this.lastHelper = this.nameLookup("helpers", name, "helper"),
lookup = ["(", "(helper = ", helperName, " || ", nonHelper, ")"];
this.options.strict || (lookup[0] = "(helper = ", lookup.push(" != null ? helper : ", this.aliasable("helpers.helperMissing"))), this.push(["(", lookup, helper.paramsInit ? ["),(", helper.paramsInit] : [], "),", "(typeof helper === ", this.aliasable('"function"'), " ? ", this.source.functionCall("helper", "call", helper.callParams), " : helper))"])
},
invokePartial: function(isDynamic, name, indent) {
var params = [],
options = this.setupParams(name, 1, params, !1);
isDynamic && (name = this.popStack(), delete options.name), indent && (options.indent = JSON.stringify(indent)), options.helpers = "helpers", options.partials = "partials", params.unshift(isDynamic ? name : this.nameLookup("partials", name, "partial")), this.options.compat && (options.depths = "depths"), options = this.objectLiteral(options), params.push(options), this.push(this.source.functionCall("this.invokePartial", "", params))
},
assignToHash: function(key) {
var value = this.popStack(),
context = void 0,
type = void 0,
id = void 0;
this.trackIds && (id = this.popStack()), this.stringParams && (type = this.popStack(), context = this.popStack());
var hash = this.hash;
context && (hash.contexts[key] = context), type && (hash.types[key] = type), id && (hash.ids[key] = id), hash.values[key] = value
},
pushId: function(type, name, child) {
"BlockParam" === type ? this.pushStackLiteral("blockParams[" + name[0] + "].path[" + name[1] + "]" + (child ? " + " + JSON.stringify("." + child) : "")) : "PathExpression" === type ? this.pushString(name) : this.pushStackLiteral("SubExpression" === type ? "true" : "null")
},
compiler: JavaScriptCompiler,
compileChildren: function(environment, options) {
for (var children = environment.children, child = void 0, compiler = void 0, i = 0, l = children.length; l > i; i++) {
child = children[i], compiler = new this.compiler;
var index = this.matchExistingProgram(child);
null == index ? (this.context.programs.push(""), index = this.context.programs.length, child.index = index, child.name = "program" + index, this.context.programs[index] = compiler.compile(child, options, this.context, !this.precompile), this.context.environments[index] = child, this.useDepths = this.useDepths || compiler.useDepths, this.useBlockParams = this.useBlockParams || compiler.useBlockParams) : (child.index = index, child.name = "program" + index, this.useDepths = this.useDepths || child.useDepths, this.useBlockParams = this.useBlockParams || child.useBlockParams)
}
},
matchExistingProgram: function(child) {
for (var i = 0, len = this.context.environments.length; len > i; i++) {
var environment = this.context.environments[i];
if (environment && environment.equals(child)) return i
}
},
programExpression: function(guid) {
var child = this.environment.children[guid],
programParams = [child.index, "data", child.blockParams];
return (this.useBlockParams || this.useDepths) && programParams.push("blockParams"), this.useDepths && programParams.push("depths"), "this.program(" + programParams.join(", ") + ")"
},
useRegister: function(name) {
this.registers[name] || (this.registers[name] = !0, this.registers.list.push(name))
},
push: function(expr) {
return expr instanceof Literal || (expr = this.source.wrap(expr)), this.inlineStack.push(expr), expr
},
pushStackLiteral: function(item) {
this.push(new Literal(item))
},
pushSource: function(source) {
this.pendingContent && (this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent), this.pendingLocation)), this.pendingContent = void 0), source && this.source.push(source)
},
replaceStack: function(callback) {
var prefix = ["("],
stack = void 0,
createdStack = void 0,
usedLiteral = void 0;
if (!this.isInline()) throw new _Exception2["default"]("replaceStack on non-inline");
var top = this.popStack(!0);
if (top instanceof Literal) stack = [top.value], prefix = ["(", stack], usedLiteral = !0;
else {
createdStack = !0;
var _name = this.incrStack();
prefix = ["((", this.push(_name), " = ", top, ")"], stack = this.topStack()
}
var item = callback.call(this, stack);
usedLiteral || this.popStack(), createdStack && this.stackSlot--, this.push(prefix.concat(item, ")"))
},
incrStack: function() {
return this.stackSlot++, this.stackSlot > this.stackVars.length && this.stackVars.push("stack" + this.stackSlot), this.topStackName()
},
topStackName: function() {
return "stack" + this.stackSlot
},
flushInline: function() {
var inlineStack = this.inlineStack;
this.inlineStack = [];
for (var i = 0, len = inlineStack.length; len > i; i++) {
var entry = inlineStack[i];
if (entry instanceof Literal) this.compileStack.push(entry);
else {
var stack = this.incrStack();
this.pushSource([stack, " = ", entry, ";"]), this.compileStack.push(stack)
}
}
},
isInline: function() {
return this.inlineStack.length
},
popStack: function(wrapped) {
var inline = this.isInline(),
item = (inline ? this.inlineStack : this.compileStack).pop();
if (!wrapped && item instanceof Literal) return item.value;
if (!inline) {
if (!this.stackSlot) throw new _Exception2["default"]("Invalid stack pop");
this.stackSlot--
}
return item
},
topStack: function() {
var stack = this.isInline() ? this.inlineStack : this.compileStack,
item = stack[stack.length - 1];
return item instanceof Literal ? item.value : item
},
contextName: function(context) {
return this.useDepths && context ? "depths[" + context + "]" : "depth" + context
},
quotedString: function(str) {
return this.source.quotedString(str)
},
objectLiteral: function(obj) {
return this.source.objectLiteral(obj)
},
aliasable: function(name) {
var ret = this.aliases[name];
return ret ? (ret.referenceCount++, ret) : (ret = this.aliases[name] = this.source.wrap(name), ret.aliasable = !0, ret.referenceCount = 1, ret)
},
setupHelper: function(paramSize, name, blockHelper) {
var params = [],
paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper),
foundHelper = this.nameLookup("helpers", name, "helper");
return {
params: params,
paramsInit: paramsInit,
name: foundHelper,
callParams: [this.contextName(0)].concat(params)
}
},
setupParams: function(helper, paramSize, params) {
var options = {}, contexts = [],
types = [],
ids = [],
param = void 0;
options.name = this.quotedString(helper), options.hash = this.popStack(), this.trackIds && (options.hashIds = this.popStack()), this.stringParams && (options.hashTypes = this.popStack(), options.hashContexts = this.popStack());
var inverse = this.popStack(),
program = this.popStack();
(program || inverse) && (options.fn = program || "this.noop", options.inverse = inverse || "this.noop");
for (var i = paramSize; i--;) param = this.popStack(), params[i] = param, this.trackIds && (ids[i] = this.popStack()), this.stringParams && (types[i] = this.popStack(), contexts[i] = this.popStack());
return this.trackIds && (options.ids = this.source.generateArray(ids)), this.stringParams && (options.types = this.source.generateArray(types), options.contexts = this.source.generateArray(contexts)), this.options.data && (options.data = "data"), this.useBlockParams && (options.blockParams = "blockParams"), options
},
setupHelperArgs: function(helper, paramSize, params, useRegister) {
var options = this.setupParams(helper, paramSize, params, !0);
return options = this.objectLiteral(options), useRegister ? (this.useRegister("options"), params.push("options"), ["options=", options]) : (params.push(options), "")
}
},
function() {
for (var reservedWords = "break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "), compilerWords = JavaScriptCompiler.RESERVED_WORDS = {}, i = 0, l = reservedWords.length; l > i; i++) compilerWords[reservedWords[i]] = !0
}(), JavaScriptCompiler.isValidJavaScriptVariableName = function(name) {
return !JavaScriptCompiler.RESERVED_WORDS[name] && /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)
}, exports["default"] = JavaScriptCompiler, module.exports = exports["default"]
},
function(module, exports, __webpack_require__) {
"use strict";
function Visitor() {
this.parents = []
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0;
var _Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
_AST = __webpack_require__(2),
_AST2 = _interopRequireWildcard(_AST);
Visitor.prototype = {
constructor: Visitor,
mutating: !1,
acceptKey: function(node, name) {
var value = this.accept(node[name]);
if (this.mutating) {
if (value && (!value.type || !_AST2["default"][value.type])) throw new _Exception2["default"]('Unexpected node type "' + value.type + '" found when accepting ' + name + " on " + node.type);
node[name] = value
}
},
acceptRequired: function(node, name) {
if (this.acceptKey(node, name), !node[name]) throw new _Exception2["default"](node.type + " requires " + name)
},
acceptArray: function(array) {
for (var i = 0, l = array.length; l > i; i++) this.acceptKey(array, i), array[i] || (array.splice(i, 1), i--, l--)
},
accept: function(object) {
if (object) {
this.current && this.parents.unshift(this.current), this.current = object;
var ret = this[object.type](object);
return this.current = this.parents.shift(), !this.mutating || ret ? ret : ret !== !1 ? object : void 0
}
},
Program: function(program) {
this.acceptArray(program.body)
},
MustacheStatement: function(mustache) {
this.acceptRequired(mustache, "path"), this.acceptArray(mustache.params), this.acceptKey(mustache, "hash")
},
BlockStatement: function(block) {
this.acceptRequired(block, "path"), this.acceptArray(block.params), this.acceptKey(block, "hash"), this.acceptKey(block, "program"), this.acceptKey(block, "inverse")
},
PartialStatement: function(partial) {
this.acceptRequired(partial, "name"), this.acceptArray(partial.params), this.acceptKey(partial, "hash")
},
ContentStatement: function() {},
CommentStatement: function() {},
SubExpression: function(sexpr) {
this.acceptRequired(sexpr, "path"), this.acceptArray(sexpr.params), this.acceptKey(sexpr, "hash")
},
PathExpression: function() {},
StringLiteral: function() {},
NumberLiteral: function() {},
BooleanLiteral: function() {},
UndefinedLiteral: function() {},
NullLiteral: function() {},
Hash: function(hash) {
this.acceptArray(hash.pairs)
},
HashPair: function(pair) {
this.acceptRequired(pair, "value")
}
}, exports["default"] = Visitor, module.exports = exports["default"]
},
function(module, exports) {
(function(global) {
"use strict";
exports.__esModule = !0, exports["default"] = function(Handlebars) {
var root = "undefined" != typeof global ? global : window,
$Handlebars = root.Handlebars;
Handlebars.noConflict = function() {
root.Handlebars === Handlebars && (root.Handlebars = $Handlebars)
}
}, module.exports = exports["default"]
}).call(exports, function() {
return this
}())
},
function(module, exports) {
"use strict";
exports["default"] = function(obj) {
return obj && obj.__esModule ? obj : {
"default": obj
}
}, exports.__esModule = !0
},
function(module, exports, __webpack_require__) {
"use strict";
function HandlebarsEnvironment(helpers, partials) {
this.helpers = helpers || {}, this.partials = partials || {}, registerDefaultHelpers(this)
}
function registerDefaultHelpers(instance) {
instance.registerHelper("helperMissing", function() {
if (1 === arguments.length) return void 0;
throw new _Exception2["default"]('Missing helper: "' + arguments[arguments.length - 1].name + '"')
}), instance.registerHelper("blockHelperMissing", function(context, options) {
var inverse = options.inverse,
fn = options.fn;
if (context === !0) return fn(this);
if (context === !1 || null == context) return inverse(this);
if (isArray(context)) return context.length > 0 ? (options.ids && (options.ids = [options.name]), instance.helpers.each(context, options)) : inverse(this);
if (options.data && options.ids) {
var data = createFrame(options.data);
data.contextPath = Utils.appendContextPath(options.data.contextPath, options.name), options = {
data: data
}
}
return fn(context, options)
}), instance.registerHelper("each", function(context, options) {
function execIteration(field, index, last) {
data && (data.key = field, data.index = index, data.first = 0 === index, data.last = !! last, contextPath && (data.contextPath = contextPath + field)), ret += fn(context[field], {
data: data,
blockParams: Utils.blockParams([context[field], field], [contextPath + field, null])
})
}
if (!options) throw new _Exception2["default"]("Must pass iterator to #each");
var fn = options.fn,
inverse = options.inverse,
i = 0,
ret = "",
data = void 0,
contextPath = void 0;
if (options.data && options.ids && (contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]) + "."), isFunction(context) && (context = context.call(this)), options.data && (data = createFrame(options.data)), context && "object" == typeof context)
if (isArray(context))
for (var j = context.length; j > i; i++) execIteration(i, i, i === context.length - 1);
else {
var priorKey = void 0;
for (var key in context) context.hasOwnProperty(key) && (priorKey && execIteration(priorKey, i - 1), priorKey = key, i++);
priorKey && execIteration(priorKey, i - 1, !0)
}
return 0 === i && (ret = inverse(this)), ret
}), instance.registerHelper("if", function(conditional, options) {
return isFunction(conditional) && (conditional = conditional.call(this)), !options.hash.includeZero && !conditional || Utils.isEmpty(conditional) ? options.inverse(this) : options.fn(this)
}), instance.registerHelper("unless", function(conditional, options) {
return instance.helpers["if"].call(this, conditional, {
fn: options.inverse,
inverse: options.fn,
hash: options.hash
})
}), instance.registerHelper("with", function(context, options) {
isFunction(context) && (context = context.call(this));
var fn = options.fn;
if (Utils.isEmpty(context)) return options.inverse(this);
if (options.data && options.ids) {
var data = createFrame(options.data);
data.contextPath = Utils.appendContextPath(options.data.contextPath, options.ids[0]), options = {
data: data
}
}
return fn(context, options)
}), instance.registerHelper("log", function(message, options) {
var level = options.data && null != options.data.level ? parseInt(options.data.level, 10) : 1;
instance.log(level, message)
}), instance.registerHelper("lookup", function(obj, field) {
return obj && obj[field]
})
}
function createFrame(object) {
var frame = Utils.extend({}, object);
return frame._parent = object, frame
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0, exports.HandlebarsEnvironment = HandlebarsEnvironment, exports.createFrame = createFrame;
var _import = __webpack_require__(12),
Utils = _interopRequireWildcard(_import),
_Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
VERSION = "3.0.1";
exports.VERSION = VERSION;
var COMPILER_REVISION = 6;
exports.COMPILER_REVISION = COMPILER_REVISION;
var REVISION_CHANGES = {
1: "<= 1.0.rc.2",
2: "== 1.0.0-rc.3",
3: "== 1.0.0-rc.4",
4: "== 1.x.x",
5: "== 2.0.0-alpha.x",
6: ">= 2.0.0-beta.1"
};
exports.REVISION_CHANGES = REVISION_CHANGES;
var isArray = Utils.isArray,
isFunction = Utils.isFunction,
toString = Utils.toString,
objectType = "[object Object]";
HandlebarsEnvironment.prototype = {
constructor: HandlebarsEnvironment,
logger: logger,
log: log,
registerHelper: function(name, fn) {
if (toString.call(name) === objectType) {
if (fn) throw new _Exception2["default"]("Arg not supported with multiple helpers");
Utils.extend(this.helpers, name)
} else this.helpers[name] = fn
},
unregisterHelper: function(name) {
delete this.helpers[name]
},
registerPartial: function(name, partial) {
if (toString.call(name) === objectType) Utils.extend(this.partials, name);
else {
if ("undefined" == typeof partial) throw new _Exception2["default"]("Attempting to register a partial as undefined");
this.partials[name] = partial
}
},
unregisterPartial: function(name) {
delete this.partials[name]
}
};
var logger = {
methodMap: {
0: "debug",
1: "info",
2: "warn",
3: "error"
},
DEBUG: 0,
INFO: 1,
WARN: 2,
ERROR: 3,
level: 1,
log: function(level, message) {
if ("undefined" != typeof console && logger.level <= level) {
var method = logger.methodMap[level];
(console[method] || console.log).call(console, message)
}
}
};
exports.logger = logger;
var log = logger.log;
exports.log = log
},
function(module, exports) {
"use strict";
function SafeString(string) {
this.string = string
}
exports.__esModule = !0, SafeString.prototype.toString = SafeString.prototype.toHTML = function() {
return "" + this.string
}, exports["default"] = SafeString, module.exports = exports["default"]
},
function(module, exports) {
"use strict";
function Exception(message, node) {
var loc = node && node.loc,
line = void 0,
column = void 0;
loc && (line = loc.start.line, column = loc.start.column, message += " - " + line + ":" + column);
for (var tmp = Error.prototype.constructor.call(this, message), idx = 0; idx < errorProps.length; idx++) this[errorProps[idx]] = tmp[errorProps[idx]];
Error.captureStackTrace && Error.captureStackTrace(this, Exception), loc && (this.lineNumber = line, this.column = column)
}
exports.__esModule = !0;
var errorProps = ["description", "fileName", "lineNumber", "message", "name", "number", "stack"];
Exception.prototype = new Error, exports["default"] = Exception, module.exports = exports["default"]
},
function(module, exports) {
"use strict";
function escapeChar(chr) {
return escape[chr]
}
function extend(obj) {
for (var i = 1; i < arguments.length; i++)
for (var key in arguments[i]) Object.prototype.hasOwnProperty.call(arguments[i], key) && (obj[key] = arguments[i][key]);
return obj
}
function indexOf(array, value) {
for (var i = 0, len = array.length; len > i; i++)
if (array[i] === value) return i;
return -1
}
function escapeExpression(string) {
if ("string" != typeof string) {
if (string && string.toHTML) return string.toHTML();
if (null == string) return "";
if (!string) return string + "";
string = "" + string
}
return possible.test(string) ? string.replace(badChars, escapeChar) : string
}
function isEmpty(value) {
return value || 0 === value ? isArray(value) && 0 === value.length ? !0 : !1 : !0
}
function blockParams(params, ids) {
return params.path = ids, params
}
function appendContextPath(contextPath, id) {
return (contextPath ? contextPath + "." : "") + id
}
exports.__esModule = !0, exports.extend = extend, exports.indexOf = indexOf, exports.escapeExpression = escapeExpression, exports.isEmpty = isEmpty, exports.blockParams = blockParams, exports.appendContextPath = appendContextPath;
var escape = {
"&": "&",
"<": "<",
">": ">",
'"': """,
"'": "'",
"`": "`"
}, badChars = /[&<>"'`]/g,
possible = /[&<>"'`]/,
toString = Object.prototype.toString;
exports.toString = toString;
var isFunction = function(value) {
return "function" == typeof value
};
isFunction(/x/) && (exports.isFunction = isFunction = function(value) {
return "function" == typeof value && "[object Function]" === toString.call(value)
});
var isFunction;
exports.isFunction = isFunction;
var isArray = Array.isArray || function(value) {
return value && "object" == typeof value ? "[object Array]" === toString.call(value) : !1
};
exports.isArray = isArray
},
function(module, exports, __webpack_require__) {
"use strict";
function checkRevision(compilerInfo) {
var compilerRevision = compilerInfo && compilerInfo[0] || 1,
currentRevision = _COMPILER_REVISION$REVISION_CHANGES$createFrame.COMPILER_REVISION;
if (compilerRevision !== currentRevision) {
if (currentRevision > compilerRevision) {
var runtimeVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[currentRevision],
compilerVersions = _COMPILER_REVISION$REVISION_CHANGES$createFrame.REVISION_CHANGES[compilerRevision];
throw new _Exception2["default"]("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version (" + runtimeVersions + ") or downgrade your runtime to an older version (" + compilerVersions + ").")
}
throw new _Exception2["default"]("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version (" + compilerInfo[1] + ").")
}
}
function template(templateSpec, env) {
function invokePartialWrapper(partial, context, options) {
options.hash && (context = Utils.extend({}, context, options.hash)), partial = env.VM.resolvePartial.call(this, partial, context, options);
var result = env.VM.invokePartial.call(this, partial, context, options);
if (null == result && env.compile && (options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env), result = options.partials[options.name](context, options)), null != result) {
if (options.indent) {
for (var lines = result.split("\n"), i = 0, l = lines.length; l > i && (lines[i] || i + 1 !== l); i++) lines[i] = options.indent + lines[i];
result = lines.join("\n")
}
return result
}
throw new _Exception2["default"]("The partial " + options.name + " could not be compiled when running in runtime-only mode")
}
function ret(context) {
var options = void 0 === arguments[1] ? {} : arguments[1],
data = options.data;
ret._setup(options), !options.partial && templateSpec.useData && (data = initData(context, data));
var depths = void 0,
blockParams = templateSpec.useBlockParams ? [] : void 0;
return templateSpec.useDepths && (depths = options.depths ? [context].concat(options.depths) : [context]), templateSpec.main.call(container, context, container.helpers, container.partials, data, blockParams, depths)
}
if (!env) throw new _Exception2["default"]("No environment passed to template");
if (!templateSpec || !templateSpec.main) throw new _Exception2["default"]("Unknown template object: " + typeof templateSpec);
env.VM.checkRevision(templateSpec.compiler);
var container = {
strict: function(obj, name) {
if (!(name in obj)) throw new _Exception2["default"]('"' + name + '" not defined in ' + obj);
return obj[name]
},
lookup: function(depths, name) {
for (var len = depths.length, i = 0; len > i; i++)
if (depths[i] && null != depths[i][name]) return depths[i][name]
},
lambda: function(current, context) {
return "function" == typeof current ? current.call(context) : current
},
escapeExpression: Utils.escapeExpression,
invokePartial: invokePartialWrapper,
fn: function(i) {
return templateSpec[i]
},
programs: [],
program: function(i, data, declaredBlockParams, blockParams, depths) {
var programWrapper = this.programs[i],
fn = this.fn(i);
return data || depths || blockParams || declaredBlockParams ? programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths) : programWrapper || (programWrapper = this.programs[i] = wrapProgram(this, i, fn)), programWrapper
},
data: function(value, depth) {
for (; value && depth--;) value = value._parent;
return value
},
merge: function(param, common) {
var obj = param || common;
return param && common && param !== common && (obj = Utils.extend({}, common, param)), obj
},
noop: env.VM.noop,
compilerInfo: templateSpec.compiler
};
return ret.isTop = !0, ret._setup = function(options) {
options.partial ? (container.helpers = options.helpers, container.partials = options.partials) : (container.helpers = container.merge(options.helpers, env.helpers), templateSpec.usePartial && (container.partials = container.merge(options.partials, env.partials)))
}, ret._child = function(i, data, blockParams, depths) {
if (templateSpec.useBlockParams && !blockParams) throw new _Exception2["default"]("must pass block params");
if (templateSpec.useDepths && !depths) throw new _Exception2["default"]("must pass parent depths");
return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths)
}, ret
}
function wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {
function prog(context) {
var options = void 0 === arguments[1] ? {} : arguments[1];
return fn.call(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), depths && [context].concat(depths))
}
return prog.program = i, prog.depth = depths ? depths.length : 0, prog.blockParams = declaredBlockParams || 0, prog
}
function resolvePartial(partial, context, options) {
return partial ? partial.call || options.name || (options.name = partial, partial = options.partials[partial]) : partial = options.partials[options.name], partial
}
function invokePartial(partial, context, options) {
if (options.partial = !0, void 0 === partial) throw new _Exception2["default"]("The partial " + options.name + " could not be found");
return partial instanceof Function ? partial(context, options) : void 0
}
function noop() {
return ""
}
function initData(context, data) {
return data && "root" in data || (data = data ? _COMPILER_REVISION$REVISION_CHANGES$createFrame.createFrame(data) : {}, data.root = context), data
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0, exports.checkRevision = checkRevision, exports.template = template, exports.wrapProgram = wrapProgram, exports.resolvePartial = resolvePartial, exports.invokePartial = invokePartial, exports.noop = noop;
var _import = __webpack_require__(12),
Utils = _interopRequireWildcard(_import),
_Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception),
_COMPILER_REVISION$REVISION_CHANGES$createFrame = __webpack_require__(9)
},
function(module, exports) {
"use strict";
exports.__esModule = !0;
var handlebars = function() {
function Parser() {
this.yy = {}
}
var parser = {
trace: function() {},
yy: {},
symbols_: {
error: 2,
root: 3,
program: 4,
EOF: 5,
program_repetition0: 6,
statement: 7,
mustache: 8,
block: 9,
rawBlock: 10,
partial: 11,
content: 12,
COMMENT: 13,
CONTENT: 14,
openRawBlock: 15,
END_RAW_BLOCK: 16,
OPEN_RAW_BLOCK: 17,
helperName: 18,
openRawBlock_repetition0: 19,
openRawBlock_option0: 20,
CLOSE_RAW_BLOCK: 21,
openBlock: 22,
block_option0: 23,
closeBlock: 24,
openInverse: 25,
block_option1: 26,
OPEN_BLOCK: 27,
openBlock_repetition0: 28,
openBlock_option0: 29,
openBlock_option1: 30,
CLOSE: 31,
OPEN_INVERSE: 32,
openInverse_repetition0: 33,
openInverse_option0: 34,
openInverse_option1: 35,
openInverseChain: 36,
OPEN_INVERSE_CHAIN: 37,
openInverseChain_repetition0: 38,
openInverseChain_option0: 39,
openInverseChain_option1: 40,
inverseAndProgram: 41,
INVERSE: 42,
inverseChain: 43,
inverseChain_option0: 44,
OPEN_ENDBLOCK: 45,
OPEN: 46,
mustache_repetition0: 47,
mustache_option0: 48,
OPEN_UNESCAPED: 49,
mustache_repetition1: 50,
mustache_option1: 51,
CLOSE_UNESCAPED: 52,
OPEN_PARTIAL: 53,
partialName: 54,
partial_repetition0: 55,
partial_option0: 56,
param: 57,
sexpr: 58,
OPEN_SEXPR: 59,
sexpr_repetition0: 60,
sexpr_option0: 61,
CLOSE_SEXPR: 62,
hash: 63,
hash_repetition_plus0: 64,
hashSegment: 65,
ID: 66,
EQUALS: 67,
blockParams: 68,
OPEN_BLOCK_PARAMS: 69,
blockParams_repetition_plus0: 70,
CLOSE_BLOCK_PARAMS: 71,
path: 72,
dataName: 73,
STRING: 74,
NUMBER: 75,
BOOLEAN: 76,
UNDEFINED: 77,
NULL: 78,
DATA: 79,
pathSegments: 80,
SEP: 81,
$accept: 0,
$end: 1
},
terminals_: {
2: "error",
5: "EOF",
13: "COMMENT",
14: "CONTENT",
16: "END_RAW_BLOCK",
17: "OPEN_RAW_BLOCK",
21: "CLOSE_RAW_BLOCK",
27: "OPEN_BLOCK",
31: "CLOSE",
32: "OPEN_INVERSE",
37: "OPEN_INVERSE_CHAIN",
42: "INVERSE",
45: "OPEN_ENDBLOCK",
46: "OPEN",
49: "OPEN_UNESCAPED",
52: "CLOSE_UNESCAPED",
53: "OPEN_PARTIAL",
59: "OPEN_SEXPR",
62: "CLOSE_SEXPR",
66: "ID",
67: "EQUALS",
69: "OPEN_BLOCK_PARAMS",
71: "CLOSE_BLOCK_PARAMS",
74: "STRING",
75: "NUMBER",
76: "BOOLEAN",
77: "UNDEFINED",
78: "NULL",
79: "DATA",
81: "SEP"
},
productions_: [0, [3, 2],
[4, 1],
[7, 1],
[7, 1],
[7, 1],
[7, 1],
[7, 1],
[7, 1],
[12, 1],
[10, 3],
[15, 5],
[9, 4],
[9, 4],
[22, 6],
[25, 6],
[36, 6],
[41, 2],
[43, 3],
[43, 1],
[24, 3],
[8, 5],
[8, 5],
[11, 5],
[57, 1],
[57, 1],
[58, 5],
[63, 1],
[65, 3],
[68, 3],
[18, 1],
[18, 1],
[18, 1],
[18, 1],
[18, 1],
[18, 1],
[18, 1],
[54, 1],
[54, 1],
[73, 2],
[72, 1],
[80, 3],
[80, 1],
[6, 0],
[6, 2],
[19, 0],
[19, 2],
[20, 0],
[20, 1],
[23, 0],
[23, 1],
[26, 0],
[26, 1],
[28, 0],
[28, 2],
[29, 0],
[29, 1],
[30, 0],
[30, 1],
[33, 0],
[33, 2],
[34, 0],
[34, 1],
[35, 0],
[35, 1],
[38, 0],
[38, 2],
[39, 0],
[39, 1],
[40, 0],
[40, 1],
[44, 0],
[44, 1],
[47, 0],
[47, 2],
[48, 0],
[48, 1],
[50, 0],
[50, 2],
[51, 0],
[51, 1],
[55, 0],
[55, 2],
[56, 0],
[56, 1],
[60, 0],
[60, 2],
[61, 0],
[61, 1],
[64, 1],
[64, 2],
[70, 1],
[70, 2]
],
performAction: function(yytext, yyleng, yylineno, yy, yystate, $$) {
var $0 = $$.length - 1;
switch (yystate) {
case 1:
return $$[$0 - 1];
case 2:
this.$ = new yy.Program($$[$0], null, {}, yy.locInfo(this._$));
break;
case 3:
this.$ = $$[$0];
break;
case 4:
this.$ = $$[$0];
break;
case 5:
this.$ = $$[$0];
break;
case 6:
this.$ = $$[$0];
break;
case 7:
this.$ = $$[$0];
break;
case 8:
this.$ = new yy.CommentStatement(yy.stripComment($$[$0]), yy.stripFlags($$[$0], $$[$0]), yy.locInfo(this._$));
break;
case 9:
this.$ = new yy.ContentStatement($$[$0], yy.locInfo(this._$));
break;
case 10:
this.$ = yy.prepareRawBlock($$[$0 - 2], $$[$0 - 1], $$[$0], this._$);
break;
case 11:
this.$ = {
path: $$[$0 - 3],
params: $$[$0 - 2],
hash: $$[$0 - 1]
};
break;
case 12:
this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], !1, this._$);
break;
case 13:
this.$ = yy.prepareBlock($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0], !0, this._$);
break;
case 14:
this.$ = {
path: $$[$0 - 4],
params: $$[$0 - 3],
hash: $$[$0 - 2],
blockParams: $$[$0 - 1],
strip: yy.stripFlags($$[$0 - 5], $$[$0])
};
break;
case 15:
this.$ = {
path: $$[$0 - 4],
params: $$[$0 - 3],
hash: $$[$0 - 2],
blockParams: $$[$0 - 1],
strip: yy.stripFlags($$[$0 - 5], $$[$0])
};
break;
case 16:
this.$ = {
path: $$[$0 - 4],
params: $$[$0 - 3],
hash: $$[$0 - 2],
blockParams: $$[$0 - 1],
strip: yy.stripFlags($$[$0 - 5], $$[$0])
};
break;
case 17:
this.$ = {
strip: yy.stripFlags($$[$0 - 1], $$[$0 - 1]),
program: $$[$0]
};
break;
case 18:
var inverse = yy.prepareBlock($$[$0 - 2], $$[$0 - 1], $$[$0], $$[$0], !1, this._$),
program = new yy.Program([inverse], null, {}, yy.locInfo(this._$));
program.chained = !0, this.$ = {
strip: $$[$0 - 2].strip,
program: program,
chain: !0
};
break;
case 19:
this.$ = $$[$0];
break;
case 20:
this.$ = {
path: $$[$0 - 1],
strip: yy.stripFlags($$[$0 - 2], $$[$0])
};
break;
case 21:
this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
break;
case 22:
this.$ = yy.prepareMustache($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], $$[$0 - 4], yy.stripFlags($$[$0 - 4], $$[$0]), this._$);
break;
case 23:
this.$ = new yy.PartialStatement($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], yy.stripFlags($$[$0 - 4], $$[$0]), yy.locInfo(this._$));
break;
case 24:
this.$ = $$[$0];
break;
case 25:
this.$ = $$[$0];
break;
case 26:
this.$ = new yy.SubExpression($$[$0 - 3], $$[$0 - 2], $$[$0 - 1], yy.locInfo(this._$));
break;
case 27:
this.$ = new yy.Hash($$[$0], yy.locInfo(this._$));
break;
case 28:
this.$ = new yy.HashPair(yy.id($$[$0 - 2]), $$[$0], yy.locInfo(this._$));
break;
case 29:
this.$ = yy.id($$[$0 - 1]);
break;
case 30:
this.$ = $$[$0];
break;
case 31:
this.$ = $$[$0];
break;
case 32:
this.$ = new yy.StringLiteral($$[$0], yy.locInfo(this._$));
break;
case 33:
this.$ = new yy.NumberLiteral($$[$0], yy.locInfo(this._$));
break;
case 34:
this.$ = new yy.BooleanLiteral($$[$0], yy.locInfo(this._$));
break;
case 35:
this.$ = new yy.UndefinedLiteral(yy.locInfo(this._$));
break;
case 36:
this.$ = new yy.NullLiteral(yy.locInfo(this._$));
break;
case 37:
this.$ = $$[$0];
break;
case 38:
this.$ = $$[$0];
break;
case 39:
this.$ = yy.preparePath(!0, $$[$0], this._$);
break;
case 40:
this.$ = yy.preparePath(!1, $$[$0], this._$);
break;
case 41:
$$[$0 - 2].push({
part: yy.id($$[$0]),
original: $$[$0],
separator: $$[$0 - 1]
}), this.$ = $$[$0 - 2];
break;
case 42:
this.$ = [{
part: yy.id($$[$0]),
original: $$[$0]
}];
break;
case 43:
this.$ = [];
break;
case 44:
$$[$0 - 1].push($$[$0]);
break;
case 45:
this.$ = [];
break;
case 46:
$$[$0 - 1].push($$[$0]);
break;
case 53:
this.$ = [];
break;
case 54:
$$[$0 - 1].push($$[$0]);
break;
case 59:
this.$ = [];
break;
case 60:
$$[$0 - 1].push($$[$0]);
break;
case 65:
this.$ = [];
break;
case 66:
$$[$0 - 1].push($$[$0]);
break;
case 73:
this.$ = [];
break;
case 74:
$$[$0 - 1].push($$[$0]);
break;
case 77:
this.$ = [];
break;
case 78:
$$[$0 - 1].push($$[$0]);
break;
case 81:
this.$ = [];
break;
case 82:
$$[$0 - 1].push($$[$0]);
break;
case 85:
this.$ = [];
break;
case 86:
$$[$0 - 1].push($$[$0]);
break;
case 89:
this.$ = [$$[$0]];
break;
case 90:
$$[$0 - 1].push($$[$0]);
break;
case 91:
this.$ = [$$[$0]];
break;
case 92:
$$[$0 - 1].push($$[$0])
}
},
table: [{
3: 1,
4: 2,
5: [2, 43],
6: 3,
13: [2, 43],
14: [2, 43],
17: [2, 43],
27: [2, 43],
32: [2, 43],
46: [2, 43],
49: [2, 43],
53: [2, 43]
}, {
1: [3]
}, {
5: [1, 4]
}, {
5: [2, 2],
7: 5,
8: 6,
9: 7,
10: 8,
11: 9,
12: 10,
13: [1, 11],
14: [1, 18],
15: 16,
17: [1, 21],
22: 14,
25: 15,
27: [1, 19],
32: [1, 20],
37: [2, 2],
42: [2, 2],
45: [2, 2],
46: [1, 12],
49: [1, 13],
53: [1, 17]
}, {
1: [2, 1]
}, {
5: [2, 44],
13: [2, 44],
14: [2, 44],
17: [2, 44],
27: [2, 44],
32: [2, 44],
37: [2, 44],
42: [2, 44],
45: [2, 44],
46: [2, 44],
49: [2, 44],
53: [2, 44]
}, {
5: [2, 3],
13: [2, 3],
14: [2, 3],
17: [2, 3],
27: [2, 3],
32: [2, 3],
37: [2, 3],
42: [2, 3],
45: [2, 3],
46: [2, 3],
49: [2, 3],
53: [2, 3]
}, {
5: [2, 4],
13: [2, 4],
14: [2, 4],
17: [2, 4],
27: [2, 4],
32: [2, 4],
37: [2, 4],
42: [2, 4],
45: [2, 4],
46: [2, 4],
49: [2, 4],
53: [2, 4]
}, {
5: [2, 5],
13: [2, 5],
14: [2, 5],
17: [2, 5],
27: [2, 5],
32: [2, 5],
37: [2, 5],
42: [2, 5],
45: [2, 5],
46: [2, 5],
49: [2, 5],
53: [2, 5]
}, {
5: [2, 6],
13: [2, 6],
14: [2, 6],
17: [2, 6],
27: [2, 6],
32: [2, 6],
37: [2, 6],
42: [2, 6],
45: [2, 6],
46: [2, 6],
49: [2, 6],
53: [2, 6]
}, {
5: [2, 7],
13: [2, 7],
14: [2, 7],
17: [2, 7],
27: [2, 7],
32: [2, 7],
37: [2, 7],
42: [2, 7],
45: [2, 7],
46: [2, 7],
49: [2, 7],
53: [2, 7]
}, {
5: [2, 8],
13: [2, 8],
14: [2, 8],
17: [2, 8],
27: [2, 8],
32: [2, 8],
37: [2, 8],
42: [2, 8],
45: [2, 8],
46: [2, 8],
49: [2, 8],
53: [2, 8]
}, {
18: 22,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
18: 33,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
4: 34,
6: 3,
13: [2, 43],
14: [2, 43],
17: [2, 43],
27: [2, 43],
32: [2, 43],
37: [2, 43],
42: [2, 43],
45: [2, 43],
46: [2, 43],
49: [2, 43],
53: [2, 43]
}, {
4: 35,
6: 3,
13: [2, 43],
14: [2, 43],
17: [2, 43],
27: [2, 43],
32: [2, 43],
42: [2, 43],
45: [2, 43],
46: [2, 43],
49: [2, 43],
53: [2, 43]
}, {
12: 36,
14: [1, 18]
}, {
18: 38,
54: 37,
58: 39,
59: [1, 40],
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
5: [2, 9],
13: [2, 9],
14: [2, 9],
16: [2, 9],
17: [2, 9],
27: [2, 9],
32: [2, 9],
37: [2, 9],
42: [2, 9],
45: [2, 9],
46: [2, 9],
49: [2, 9],
53: [2, 9]
}, {
18: 41,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
18: 42,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
18: 43,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
31: [2, 73],
47: 44,
59: [2, 73],
66: [2, 73],
74: [2, 73],
75: [2, 73],
76: [2, 73],
77: [2, 73],
78: [2, 73],
79: [2, 73]
}, {
21: [2, 30],
31: [2, 30],
52: [2, 30],
59: [2, 30],
62: [2, 30],
66: [2, 30],
69: [2, 30],
74: [2, 30],
75: [2, 30],
76: [2, 30],
77: [2, 30],
78: [2, 30],
79: [2, 30]
}, {
21: [2, 31],
31: [2, 31],
52: [2, 31],
59: [2, 31],
62: [2, 31],
66: [2, 31],
69: [2, 31],
74: [2, 31],
75: [2, 31],
76: [2, 31],
77: [2, 31],
78: [2, 31],
79: [2, 31]
}, {
21: [2, 32],
31: [2, 32],
52: [2, 32],
59: [2, 32],
62: [2, 32],
66: [2, 32],
69: [2, 32],
74: [2, 32],
75: [2, 32],
76: [2, 32],
77: [2, 32],
78: [2, 32],
79: [2, 32]
}, {
21: [2, 33],
31: [2, 33],
52: [2, 33],
59: [2, 33],
62: [2, 33],
66: [2, 33],
69: [2, 33],
74: [2, 33],
75: [2, 33],
76: [2, 33],
77: [2, 33],
78: [2, 33],
79: [2, 33]
}, {
21: [2, 34],
31: [2, 34],
52: [2, 34],
59: [2, 34],
62: [2, 34],
66: [2, 34],
69: [2, 34],
74: [2, 34],
75: [2, 34],
76: [2, 34],
77: [2, 34],
78: [2, 34],
79: [2, 34]
}, {
21: [2, 35],
31: [2, 35],
52: [2, 35],
59: [2, 35],
62: [2, 35],
66: [2, 35],
69: [2, 35],
74: [2, 35],
75: [2, 35],
76: [2, 35],
77: [2, 35],
78: [2, 35],
79: [2, 35]
}, {
21: [2, 36],
31: [2, 36],
52: [2, 36],
59: [2, 36],
62: [2, 36],
66: [2, 36],
69: [2, 36],
74: [2, 36],
75: [2, 36],
76: [2, 36],
77: [2, 36],
78: [2, 36],
79: [2, 36]
}, {
21: [2, 40],
31: [2, 40],
52: [2, 40],
59: [2, 40],
62: [2, 40],
66: [2, 40],
69: [2, 40],
74: [2, 40],
75: [2, 40],
76: [2, 40],
77: [2, 40],
78: [2, 40],
79: [2, 40],
81: [1, 45]
}, {
66: [1, 32],
80: 46
}, {
21: [2, 42],
31: [2, 42],
52: [2, 42],
59: [2, 42],
62: [2, 42],
66: [2, 42],
69: [2, 42],
74: [2, 42],
75: [2, 42],
76: [2, 42],
77: [2, 42],
78: [2, 42],
79: [2, 42],
81: [2, 42]
}, {
50: 47,
52: [2, 77],
59: [2, 77],
66: [2, 77],
74: [2, 77],
75: [2, 77],
76: [2, 77],
77: [2, 77],
78: [2, 77],
79: [2, 77]
}, {
23: 48,
36: 50,
37: [1, 52],
41: 51,
42: [1, 53],
43: 49,
45: [2, 49]
}, {
26: 54,
41: 55,
42: [1, 53],
45: [2, 51]
}, {
16: [1, 56]
}, {
31: [2, 81],
55: 57,
59: [2, 81],
66: [2, 81],
74: [2, 81],
75: [2, 81],
76: [2, 81],
77: [2, 81],
78: [2, 81],
79: [2, 81]
}, {
31: [2, 37],
59: [2, 37],
66: [2, 37],
74: [2, 37],
75: [2, 37],
76: [2, 37],
77: [2, 37],
78: [2, 37],
79: [2, 37]
}, {
31: [2, 38],
59: [2, 38],
66: [2, 38],
74: [2, 38],
75: [2, 38],
76: [2, 38],
77: [2, 38],
78: [2, 38],
79: [2, 38]
}, {
18: 58,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
28: 59,
31: [2, 53],
59: [2, 53],
66: [2, 53],
69: [2, 53],
74: [2, 53],
75: [2, 53],
76: [2, 53],
77: [2, 53],
78: [2, 53],
79: [2, 53]
}, {
31: [2, 59],
33: 60,
59: [2, 59],
66: [2, 59],
69: [2, 59],
74: [2, 59],
75: [2, 59],
76: [2, 59],
77: [2, 59],
78: [2, 59],
79: [2, 59]
}, {
19: 61,
21: [2, 45],
59: [2, 45],
66: [2, 45],
74: [2, 45],
75: [2, 45],
76: [2, 45],
77: [2, 45],
78: [2, 45],
79: [2, 45]
}, {
18: 65,
31: [2, 75],
48: 62,
57: 63,
58: 66,
59: [1, 40],
63: 64,
64: 67,
65: 68,
66: [1, 69],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
66: [1, 70]
}, {
21: [2, 39],
31: [2, 39],
52: [2, 39],
59: [2, 39],
62: [2, 39],
66: [2, 39],
69: [2, 39],
74: [2, 39],
75: [2, 39],
76: [2, 39],
77: [2, 39],
78: [2, 39],
79: [2, 39],
81: [1, 45]
}, {
18: 65,
51: 71,
52: [2, 79],
57: 72,
58: 66,
59: [1, 40],
63: 73,
64: 67,
65: 68,
66: [1, 69],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
24: 74,
45: [1, 75]
}, {
45: [2, 50]
}, {
4: 76,
6: 3,
13: [2, 43],
14: [2, 43],
17: [2, 43],
27: [2, 43],
32: [2, 43],
37: [2, 43],
42: [2, 43],
45: [2, 43],
46: [2, 43],
49: [2, 43],
53: [2, 43]
}, {
45: [2, 19]
}, {
18: 77,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
4: 78,
6: 3,
13: [2, 43],
14: [2, 43],
17: [2, 43],
27: [2, 43],
32: [2, 43],
45: [2, 43],
46: [2, 43],
49: [2, 43],
53: [2, 43]
}, {
24: 79,
45: [1, 75]
}, {
45: [2, 52]
}, {
5: [2, 10],
13: [2, 10],
14: [2, 10],
17: [2, 10],
27: [2, 10],
32: [2, 10],
37: [2, 10],
42: [2, 10],
45: [2, 10],
46: [2, 10],
49: [2, 10],
53: [2, 10]
}, {
18: 65,
31: [2, 83],
56: 80,
57: 81,
58: 66,
59: [1, 40],
63: 82,
64: 67,
65: 68,
66: [1, 69],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
59: [2, 85],
60: 83,
62: [2, 85],
66: [2, 85],
74: [2, 85],
75: [2, 85],
76: [2, 85],
77: [2, 85],
78: [2, 85],
79: [2, 85]
}, {
18: 65,
29: 84,
31: [2, 55],
57: 85,
58: 66,
59: [1, 40],
63: 86,
64: 67,
65: 68,
66: [1, 69],
69: [2, 55],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
18: 65,
31: [2, 61],
34: 87,
57: 88,
58: 66,
59: [1, 40],
63: 89,
64: 67,
65: 68,
66: [1, 69],
69: [2, 61],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
18: 65,
20: 90,
21: [2, 47],
57: 91,
58: 66,
59: [1, 40],
63: 92,
64: 67,
65: 68,
66: [1, 69],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
31: [1, 93]
}, {
31: [2, 74],
59: [2, 74],
66: [2, 74],
74: [2, 74],
75: [2, 74],
76: [2, 74],
77: [2, 74],
78: [2, 74],
79: [2, 74]
}, {
31: [2, 76]
}, {
21: [2, 24],
31: [2, 24],
52: [2, 24],
59: [2, 24],
62: [2, 24],
66: [2, 24],
69: [2, 24],
74: [2, 24],
75: [2, 24],
76: [2, 24],
77: [2, 24],
78: [2, 24],
79: [2, 24]
}, {
21: [2, 25],
31: [2, 25],
52: [2, 25],
59: [2, 25],
62: [2, 25],
66: [2, 25],
69: [2, 25],
74: [2, 25],
75: [2, 25],
76: [2, 25],
77: [2, 25],
78: [2, 25],
79: [2, 25]
}, {
21: [2, 27],
31: [2, 27],
52: [2, 27],
62: [2, 27],
65: 94,
66: [1, 95],
69: [2, 27]
}, {
21: [2, 89],
31: [2, 89],
52: [2, 89],
62: [2, 89],
66: [2, 89],
69: [2, 89]
}, {
21: [2, 42],
31: [2, 42],
52: [2, 42],
59: [2, 42],
62: [2, 42],
66: [2, 42],
67: [1, 96],
69: [2, 42],
74: [2, 42],
75: [2, 42],
76: [2, 42],
77: [2, 42],
78: [2, 42],
79: [2, 42],
81: [2, 42]
}, {
21: [2, 41],
31: [2, 41],
52: [2, 41],
59: [2, 41],
62: [2, 41],
66: [2, 41],
69: [2, 41],
74: [2, 41],
75: [2, 41],
76: [2, 41],
77: [2, 41],
78: [2, 41],
79: [2, 41],
81: [2, 41]
}, {
52: [1, 97]
}, {
52: [2, 78],
59: [2, 78],
66: [2, 78],
74: [2, 78],
75: [2, 78],
76: [2, 78],
77: [2, 78],
78: [2, 78],
79: [2, 78]
}, {
52: [2, 80]
}, {
5: [2, 12],
13: [2, 12],
14: [2, 12],
17: [2, 12],
27: [2, 12],
32: [2, 12],
37: [2, 12],
42: [2, 12],
45: [2, 12],
46: [2, 12],
49: [2, 12],
53: [2, 12]
}, {
18: 98,
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
36: 50,
37: [1, 52],
41: 51,
42: [1, 53],
43: 100,
44: 99,
45: [2, 71]
}, {
31: [2, 65],
38: 101,
59: [2, 65],
66: [2, 65],
69: [2, 65],
74: [2, 65],
75: [2, 65],
76: [2, 65],
77: [2, 65],
78: [2, 65],
79: [2, 65]
}, {
45: [2, 17]
}, {
5: [2, 13],
13: [2, 13],
14: [2, 13],
17: [2, 13],
27: [2, 13],
32: [2, 13],
37: [2, 13],
42: [2, 13],
45: [2, 13],
46: [2, 13],
49: [2, 13],
53: [2, 13]
}, {
31: [1, 102]
}, {
31: [2, 82],
59: [2, 82],
66: [2, 82],
74: [2, 82],
75: [2, 82],
76: [2, 82],
77: [2, 82],
78: [2, 82],
79: [2, 82]
}, {
31: [2, 84]
}, {
18: 65,
57: 104,
58: 66,
59: [1, 40],
61: 103,
62: [2, 87],
63: 105,
64: 67,
65: 68,
66: [1, 69],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
30: 106,
31: [2, 57],
68: 107,
69: [1, 108]
}, {
31: [2, 54],
59: [2, 54],
66: [2, 54],
69: [2, 54],
74: [2, 54],
75: [2, 54],
76: [2, 54],
77: [2, 54],
78: [2, 54],
79: [2, 54]
}, {
31: [2, 56],
69: [2, 56]
}, {
31: [2, 63],
35: 109,
68: 110,
69: [1, 108]
}, {
31: [2, 60],
59: [2, 60],
66: [2, 60],
69: [2, 60],
74: [2, 60],
75: [2, 60],
76: [2, 60],
77: [2, 60],
78: [2, 60],
79: [2, 60]
}, {
31: [2, 62],
69: [2, 62]
}, {
21: [1, 111]
}, {
21: [2, 46],
59: [2, 46],
66: [2, 46],
74: [2, 46],
75: [2, 46],
76: [2, 46],
77: [2, 46],
78: [2, 46],
79: [2, 46]
}, {
21: [2, 48]
}, {
5: [2, 21],
13: [2, 21],
14: [2, 21],
17: [2, 21],
27: [2, 21],
32: [2, 21],
37: [2, 21],
42: [2, 21],
45: [2, 21],
46: [2, 21],
49: [2, 21],
53: [2, 21]
}, {
21: [2, 90],
31: [2, 90],
52: [2, 90],
62: [2, 90],
66: [2, 90],
69: [2, 90]
}, {
67: [1, 96]
}, {
18: 65,
57: 112,
58: 66,
59: [1, 40],
66: [1, 32],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
5: [2, 22],
13: [2, 22],
14: [2, 22],
17: [2, 22],
27: [2, 22],
32: [2, 22],
37: [2, 22],
42: [2, 22],
45: [2, 22],
46: [2, 22],
49: [2, 22],
53: [2, 22]
}, {
31: [1, 113]
}, {
45: [2, 18]
}, {
45: [2, 72]
}, {
18: 65,
31: [2, 67],
39: 114,
57: 115,
58: 66,
59: [1, 40],
63: 116,
64: 67,
65: 68,
66: [1, 69],
69: [2, 67],
72: 23,
73: 24,
74: [1, 25],
75: [1, 26],
76: [1, 27],
77: [1, 28],
78: [1, 29],
79: [1, 31],
80: 30
}, {
5: [2, 23],
13: [2, 23],
14: [2, 23],
17: [2, 23],
27: [2, 23],
32: [2, 23],
37: [2, 23],
42: [2, 23],
45: [2, 23],
46: [2, 23],
49: [2, 23],
53: [2, 23]
}, {
62: [1, 117]
}, {
59: [2, 86],
62: [2, 86],
66: [2, 86],
74: [2, 86],
75: [2, 86],
76: [2, 86],
77: [2, 86],
78: [2, 86],
79: [2, 86]
}, {
62: [2, 88]
}, {
31: [1, 118]
}, {
31: [2, 58]
}, {
66: [1, 120],
70: 119
}, {
31: [1, 121]
}, {
31: [2, 64]
}, {
14: [2, 11]
}, {
21: [2, 28],
31: [2, 28],
52: [2, 28],
62: [2, 28],
66: [2, 28],
69: [2, 28]
}, {
5: [2, 20],
13: [2, 20],
14: [2, 20],
17: [2, 20],
27: [2, 20],
32: [2, 20],
37: [2, 20],
42: [2, 20],
45: [2, 20],
46: [2, 20],
49: [2, 20],
53: [2, 20]
}, {
31: [2, 69],
40: 122,
68: 123,
69: [1, 108]
}, {
31: [2, 66],
59: [2, 66],
66: [2, 66],
69: [2, 66],
74: [2, 66],
75: [2, 66],
76: [2, 66],
77: [2, 66],
78: [2, 66],
79: [2, 66]
}, {
31: [2, 68],
69: [2, 68]
}, {
21: [2, 26],
31: [2, 26],
52: [2, 26],
59: [2, 26],
62: [2, 26],
66: [2, 26],
69: [2, 26],
74: [2, 26],
75: [2, 26],
76: [2, 26],
77: [2, 26],
78: [2, 26],
79: [2, 26]
}, {
13: [2, 14],
14: [2, 14],
17: [2, 14],
27: [2, 14],
32: [2, 14],
37: [2, 14],
42: [2, 14],
45: [2, 14],
46: [2, 14],
49: [2, 14],
53: [2, 14]
}, {
66: [1, 125],
71: [1, 124]
}, {
66: [2, 91],
71: [2, 91]
}, {
13: [2, 15],
14: [2, 15],
17: [2, 15],
27: [2, 15],
32: [2, 15],
42: [2, 15],
45: [2, 15],
46: [2, 15],
49: [2, 15],
53: [2, 15]
}, {
31: [1, 126]
}, {
31: [2, 70]
}, {
31: [2, 29]
}, {
66: [2, 92],
71: [2, 92]
}, {
13: [2, 16],
14: [2, 16],
17: [2, 16],
27: [2, 16],
32: [2, 16],
37: [2, 16],
42: [2, 16],
45: [2, 16],
46: [2, 16],
49: [2, 16],
53: [2, 16]
}],
defaultActions: {
4: [2, 1],
49: [2, 50],
51: [2, 19],
55: [2, 52],
64: [2, 76],
73: [2, 80],
78: [2, 17],
82: [2, 84],
92: [2, 48],
99: [2, 18],
100: [2, 72],
105: [2, 88],
107: [2, 58],
110: [2, 64],
111: [2, 11],
123: [2, 70],
124: [2, 29]
},
parseError: function(str) {
throw new Error(str)
},
parse: function(input) {
function lex() {
var token;
return token = self.lexer.lex() || 1, "number" != typeof token && (token = self.symbols_[token] || token), token
}
var self = this,
stack = [0],
vstack = [null],
lstack = [],
table = this.table,
yytext = "",
yylineno = 0,
yyleng = 0,
recovering = 0;
this.lexer.setInput(input), this.lexer.yy = this.yy, this.yy.lexer = this.lexer, this.yy.parser = this, "undefined" == typeof this.lexer.yylloc && (this.lexer.yylloc = {});
var yyloc = this.lexer.yylloc;
lstack.push(yyloc);
var ranges = this.lexer.options && this.lexer.options.ranges;
"function" == typeof this.yy.parseError && (this.parseError = this.yy.parseError);
for (var symbol, preErrorSymbol, state, action, r, p, len, newState, expected, yyval = {};;) {
if (state = stack[stack.length - 1], this.defaultActions[state] ? action = this.defaultActions[state] : ((null === symbol || "undefined" == typeof symbol) && (symbol = lex()), action = table[state] && table[state][symbol]), "undefined" == typeof action || !action.length || !action[0]) {
var errStr = "";
if (!recovering) {
expected = [];
for (p in table[state]) this.terminals_[p] && p > 2 && expected.push("'" + this.terminals_[p] + "'");
errStr = this.lexer.showPosition ? "Parse error on line " + (yylineno + 1) + ":\n" + this.lexer.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'" : "Parse error on line " + (yylineno + 1) + ": Unexpected " + (1 == symbol ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"), this.parseError(errStr, {
text: this.lexer.match,
token: this.terminals_[symbol] || symbol,
line: this.lexer.yylineno,
loc: yyloc,
expected: expected
})
}
}
if (action[0] instanceof Array && action.length > 1) throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol);
switch (action[0]) {
case 1:
stack.push(symbol), vstack.push(this.lexer.yytext), lstack.push(this.lexer.yylloc), stack.push(action[1]), symbol = null, preErrorSymbol ? (symbol = preErrorSymbol, preErrorSymbol = null) : (yyleng = this.lexer.yyleng, yytext = this.lexer.yytext, yylineno = this.lexer.yylineno, yyloc = this.lexer.yylloc, recovering > 0 && recovering--);
break;
case 2:
if (len = this.productions_[action[1]][1], yyval.$ = vstack[vstack.length - len], yyval._$ = {
first_line: lstack[lstack.length - (len || 1)].first_line,
last_line: lstack[lstack.length - 1].last_line,
first_column: lstack[lstack.length - (len || 1)].first_column,
last_column: lstack[lstack.length - 1].last_column
}, ranges && (yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]]), r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack), "undefined" != typeof r) return r;
len && (stack = stack.slice(0, -1 * len * 2), vstack = vstack.slice(0, -1 * len), lstack = lstack.slice(0, -1 * len)), stack.push(this.productions_[action[1]][0]), vstack.push(yyval.$), lstack.push(yyval._$), newState = table[stack[stack.length - 2]][stack[stack.length - 1]], stack.push(newState);
break;
case 3:
return !0
}
}
return !0
}
}, lexer = function() {
var lexer = {
EOF: 1,
parseError: function(str, hash) {
if (!this.yy.parser) throw new Error(str);
this.yy.parser.parseError(str, hash)
},
setInput: function(input) {
return this._input = input, this._more = this._less = this.done = !1, this.yylineno = this.yyleng = 0, this.yytext = this.matched = this.match = "", this.conditionStack = ["INITIAL"], this.yylloc = {
first_line: 1,
first_column: 0,
last_line: 1,
last_column: 0
}, this.options.ranges && (this.yylloc.range = [0, 0]), this.offset = 0, this
},
input: function() {
var ch = this._input[0];
this.yytext += ch, this.yyleng++, this.offset++, this.match += ch, this.matched += ch;
var lines = ch.match(/(?:\r\n?|\n).*/g);
return lines ? (this.yylineno++, this.yylloc.last_line++) : this.yylloc.last_column++, this.options.ranges && this.yylloc.range[1]++, this._input = this._input.slice(1), ch
},
unput: function(ch) {
var len = ch.length,
lines = ch.split(/(?:\r\n?|\n)/g);
this._input = ch + this._input, this.yytext = this.yytext.substr(0, this.yytext.length - len - 1), this.offset -= len;
var oldLines = this.match.split(/(?:\r\n?|\n)/g);
this.match = this.match.substr(0, this.match.length - 1), this.matched = this.matched.substr(0, this.matched.length - 1), lines.length - 1 && (this.yylineno -= lines.length - 1);
var r = this.yylloc.range;
return this.yylloc = {
first_line: this.yylloc.first_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.first_column,
last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len
}, this.options.ranges && (this.yylloc.range = [r[0], r[0] + this.yyleng - len]), this
},
more: function() {
return this._more = !0, this
},
less: function(n) {
this.unput(this.match.slice(n))
},
pastInput: function() {
var past = this.matched.substr(0, this.matched.length - this.match.length);
return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, "")
},
upcomingInput: function() {
var next = this.match;
return next.length < 20 && (next += this._input.substr(0, 20 - next.length)), (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, "")
},
showPosition: function() {
var pre = this.pastInput(),
c = new Array(pre.length + 1).join("-");
return pre + this.upcomingInput() + "\n" + c + "^"
},
next: function() {
if (this.done) return this.EOF;
this._input || (this.done = !0);
var token, match, tempMatch, index, lines;
this._more || (this.yytext = "", this.match = "");
for (var rules = this._currentRules(), i = 0; i < rules.length && (tempMatch = this._input.match(this.rules[rules[i]]), !tempMatch || match && !(tempMatch[0].length > match[0].length) || (match = tempMatch, index = i, this.options.flex)); i++);
return match ? (lines = match[0].match(/(?:\r\n?|\n).*/g), lines && (this.yylineno += lines.length), this.yylloc = {
first_line: this.yylloc.last_line,
last_line: this.yylineno + 1,
first_column: this.yylloc.last_column,
last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length
}, this.yytext += match[0], this.match += match[0], this.matches = match, this.yyleng = this.yytext.length, this.options.ranges && (this.yylloc.range = [this.offset, this.offset += this.yyleng]), this._more = !1, this._input = this._input.slice(match[0].length), this.matched += match[0], token = this.performAction.call(this, this.yy, this, rules[index], this.conditionStack[this.conditionStack.length - 1]), this.done && this._input && (this.done = !1), token ? token : void 0) : "" === this._input ? this.EOF : this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), {
text: "",
token: null,
line: this.yylineno
})
},
lex: function() {
var r = this.next();
return "undefined" != typeof r ? r : this.lex()
},
begin: function(condition) {
this.conditionStack.push(condition)
},
popState: function() {
return this.conditionStack.pop()
},
_currentRules: function() {
return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules
},
topState: function() {
return this.conditionStack[this.conditionStack.length - 2]
},
pushState: function(condition) {
this.begin(condition)
}
};
return lexer.options = {}, lexer.performAction = function(yy, yy_, $avoiding_name_collisions, YY_START) {
function strip(start, end) {
return yy_.yytext = yy_.yytext.substr(start, yy_.yyleng - end)
}
switch ($avoiding_name_collisions) {
case 0:
if ("\\\\" === yy_.yytext.slice(-2) ? (strip(0, 1), this.begin("mu")) : "\\" === yy_.yytext.slice(-1) ? (strip(0, 1), this.begin("emu")) : this.begin("mu"), yy_.yytext) return 14;
break;
case 1:
return 14;
case 2:
return this.popState(), 14;
case 3:
return yy_.yytext = yy_.yytext.substr(5, yy_.yyleng - 9), this.popState(), 16;
case 4:
return 14;
case 5:
return this.popState(), 13;
case 6:
return 59;
case 7:
return 62;
case 8:
return 17;
case 9:
return this.popState(), this.begin("raw"), 21;
case 10:
return 53;
case 11:
return 27;
case 12:
return 45;
case 13:
return this.popState(), 42;
case 14:
return this.popState(), 42;
case 15:
return 32;
case 16:
return 37;
case 17:
return 49;
case 18:
return 46;
case 19:
this.unput(yy_.yytext), this.popState(), this.begin("com");
break;
case 20:
return this.popState(), 13;
case 21:
return 46;
case 22:
return 67;
case 23:
return 66;
case 24:
return 66;
case 25:
return 81;
case 26:
break;
case 27:
return this.popState(), 52;
case 28:
return this.popState(), 31;
case 29:
return yy_.yytext = strip(1, 2).replace(/\\"/g, '"'), 74;
case 30:
return yy_.yytext = strip(1, 2).replace(/\\'/g, "'"), 74;
case 31:
return 79;
case 32:
return 76;
case 33:
return 76;
case 34:
return 77;
case 35:
return 78;
case 36:
return 75;
case 37:
return 69;
case 38:
return 71;
case 39:
return 66;
case 40:
return 66;
case 41:
return "INVALID";
case 42:
return 5
}
}, lexer.rules = [/^(?:[^\x00]*?(?=(\{\{)))/, /^(?:[^\x00]+)/, /^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/, /^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/, /^(?:[^\x00]*?(?=(\{\{\{\{\/)))/, /^(?:[\s\S]*?--(~)?\}\})/, /^(?:\()/, /^(?:\))/, /^(?:\{\{\{\{)/, /^(?:\}\}\}\})/, /^(?:\{\{(~)?>)/, /^(?:\{\{(~)?#)/, /^(?:\{\{(~)?\/)/, /^(?:\{\{(~)?\^\s*(~)?\}\})/, /^(?:\{\{(~)?\s*else\s*(~)?\}\})/, /^(?:\{\{(~)?\^)/, /^(?:\{\{(~)?\s*else\b)/, /^(?:\{\{(~)?\{)/, /^(?:\{\{(~)?&)/, /^(?:\{\{(~)?!--)/, /^(?:\{\{(~)?![\s\S]*?\}\})/, /^(?:\{\{(~)?)/, /^(?:=)/, /^(?:\.\.)/, /^(?:\.(?=([=~}\s\/.)|])))/, /^(?:[\/.])/, /^(?:\s+)/, /^(?:\}(~)?\}\})/, /^(?:(~)?\}\})/, /^(?:"(\\["]|[^"])*")/, /^(?:'(\\[']|[^'])*')/, /^(?:@)/, /^(?:true(?=([~}\s)])))/, /^(?:false(?=([~}\s)])))/, /^(?:undefined(?=([~}\s)])))/, /^(?:null(?=([~}\s)])))/, /^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/, /^(?:as\s+\|)/, /^(?:\|)/, /^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/, /^(?:\[[^\]]*\])/, /^(?:.)/, /^(?:$)/], lexer.conditions = {
mu: {
rules: [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42],
inclusive: !1
},
emu: {
rules: [2],
inclusive: !1
},
com: {
rules: [5],
inclusive: !1
},
raw: {
rules: [3, 4],
inclusive: !1
},
INITIAL: {
rules: [0, 1, 42],
inclusive: !0
}
}, lexer
}();
return parser.lexer = lexer, Parser.prototype = parser, parser.Parser = Parser, new Parser
}();
exports["default"] = handlebars, module.exports = exports["default"]
},
function(module, exports, __webpack_require__) {
"use strict";
function WhitespaceControl() {}
function isPrevWhitespace(body, i, isRoot) {
void 0 === i && (i = body.length);
var prev = body[i - 1],
sibling = body[i - 2];
return prev ? "ContentStatement" === prev.type ? (sibling || !isRoot ? /\r?\n\s*?$/ : /(^|\r?\n)\s*?$/).test(prev.original) : void 0 : isRoot
}
function isNextWhitespace(body, i, isRoot) {
void 0 === i && (i = -1);
var next = body[i + 1],
sibling = body[i + 2];
return next ? "ContentStatement" === next.type ? (sibling || !isRoot ? /^\s*?\r?\n/ : /^\s*?(\r?\n|$)/).test(next.original) : void 0 : isRoot
}
function omitRight(body, i, multiple) {
var current = body[null == i ? 0 : i + 1];
if (current && "ContentStatement" === current.type && (multiple || !current.rightStripped)) {
var original = current.value;
current.value = current.value.replace(multiple ? /^\s+/ : /^[ \t]*\r?\n?/, ""), current.rightStripped = current.value !== original
}
}
function omitLeft(body, i, multiple) {
var current = body[null == i ? body.length - 1 : i - 1];
if (current && "ContentStatement" === current.type && (multiple || !current.leftStripped)) {
var original = current.value;
return current.value = current.value.replace(multiple ? /\s+$/ : /[ \t]+$/, ""), current.leftStripped = current.value !== original, current.leftStripped
}
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0;
var _Visitor = __webpack_require__(6),
_Visitor2 = _interopRequireWildcard(_Visitor);
WhitespaceControl.prototype = new _Visitor2["default"], WhitespaceControl.prototype.Program = function(program) {
var isRoot = !this.isRootSeen;
this.isRootSeen = !0;
for (var body = program.body, i = 0, l = body.length; l > i; i++) {
var current = body[i],
strip = this.accept(current);
if (strip) {
var _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),
_isNextWhitespace = isNextWhitespace(body, i, isRoot),
openStandalone = strip.openStandalone && _isPrevWhitespace,
closeStandalone = strip.closeStandalone && _isNextWhitespace,
inlineStandalone = strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;
strip.close && omitRight(body, i, !0), strip.open && omitLeft(body, i, !0), inlineStandalone && (omitRight(body, i), omitLeft(body, i) && "PartialStatement" === current.type && (current.indent = /([ \t]+$)/.exec(body[i - 1].original)[1])), openStandalone && (omitRight((current.program || current.inverse).body), omitLeft(body, i)), closeStandalone && (omitRight(body, i), omitLeft((current.inverse || current.program).body))
}
}
return program
}, WhitespaceControl.prototype.BlockStatement = function(block) {
this.accept(block.program), this.accept(block.inverse);
var program = block.program || block.inverse,
inverse = block.program && block.inverse,
firstInverse = inverse,
lastInverse = inverse;
if (inverse && inverse.chained)
for (firstInverse = inverse.body[0].program; lastInverse.chained;) lastInverse = lastInverse.body[lastInverse.body.length - 1].program;
var strip = {
open: block.openStrip.open,
close: block.closeStrip.close,
openStandalone: isNextWhitespace(program.body),
closeStandalone: isPrevWhitespace((firstInverse || program).body)
};
if (block.openStrip.close && omitRight(program.body, null, !0), inverse) {
var inverseStrip = block.inverseStrip;
inverseStrip.open && omitLeft(program.body, null, !0), inverseStrip.close && omitRight(firstInverse.body, null, !0), block.closeStrip.open && omitLeft(lastInverse.body, null, !0), isPrevWhitespace(program.body) && isNextWhitespace(firstInverse.body) && (omitLeft(program.body), omitRight(firstInverse.body))
} else block.closeStrip.open && omitLeft(program.body, null, !0);
return strip
}, WhitespaceControl.prototype.MustacheStatement = function(mustache) {
return mustache.strip
}, WhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(node) {
var strip = node.strip || {};
return {
inlineStandalone: !0,
open: strip.open,
close: strip.close
}
}, exports["default"] = WhitespaceControl, module.exports = exports["default"]
},
function(module, exports, __webpack_require__) {
"use strict";
function SourceLocation(source, locInfo) {
this.source = source, this.start = {
line: locInfo.first_line,
column: locInfo.first_column
}, this.end = {
line: locInfo.last_line,
column: locInfo.last_column
}
}
function id(token) {
return /^\[.*\]$/.test(token) ? token.substr(1, token.length - 2) : token
}
function stripFlags(open, close) {
return {
open: "~" === open.charAt(2),
close: "~" === close.charAt(close.length - 3)
}
}
function stripComment(comment) {
return comment.replace(/^\{\{~?\!-?-?/, "").replace(/-?-?~?\}\}$/, "")
}
function preparePath(data, parts, locInfo) {
locInfo = this.locInfo(locInfo);
for (var original = data ? "@" : "", dig = [], depth = 0, depthString = "", i = 0, l = parts.length; l > i; i++) {
var part = parts[i].part,
isLiteral = parts[i].original !== part;
if (original += (parts[i].separator || "") + part, isLiteral || ".." !== part && "." !== part && "this" !== part) dig.push(part);
else {
if (dig.length > 0) throw new _Exception2["default"]("Invalid path: " + original, {
loc: locInfo
});
".." === part && (depth++, depthString += "../")
}
}
return new this.PathExpression(data, depth, dig, original, locInfo)
}
function prepareMustache(path, params, hash, open, strip, locInfo) {
var escapeFlag = open.charAt(3) || open.charAt(2),
escaped = "{" !== escapeFlag && "&" !== escapeFlag;
return new this.MustacheStatement(path, params, hash, escaped, strip, this.locInfo(locInfo))
}
function prepareRawBlock(openRawBlock, content, close, locInfo) {
if (openRawBlock.path.original !== close) {
var errorNode = {
loc: openRawBlock.path.loc
};
throw new _Exception2["default"](openRawBlock.path.original + " doesn't match " + close, errorNode)
}
locInfo = this.locInfo(locInfo);
var program = new this.Program([content], null, {}, locInfo);
return new this.BlockStatement(openRawBlock.path, openRawBlock.params, openRawBlock.hash, program, void 0, {}, {}, {}, locInfo)
}
function prepareBlock(openBlock, program, inverseAndProgram, close, inverted, locInfo) {
if (close && close.path && openBlock.path.original !== close.path.original) {
var errorNode = {
loc: openBlock.path.loc
};
throw new _Exception2["default"](openBlock.path.original + " doesn't match " + close.path.original, errorNode)
}
program.blockParams = openBlock.blockParams;
var inverse = void 0,
inverseStrip = void 0;
return inverseAndProgram && (inverseAndProgram.chain && (inverseAndProgram.program.body[0].closeStrip = close.strip), inverseStrip = inverseAndProgram.strip, inverse = inverseAndProgram.program), inverted && (inverted = inverse, inverse = program, program = inverted), new this.BlockStatement(openBlock.path, openBlock.params, openBlock.hash, program, inverse, openBlock.strip, inverseStrip, close && close.strip, this.locInfo(locInfo))
}
var _interopRequireWildcard = __webpack_require__(8)["default"];
exports.__esModule = !0, exports.SourceLocation = SourceLocation, exports.id = id, exports.stripFlags = stripFlags, exports.stripComment = stripComment, exports.preparePath = preparePath, exports.prepareMustache = prepareMustache, exports.prepareRawBlock = prepareRawBlock, exports.prepareBlock = prepareBlock;
var _Exception = __webpack_require__(11),
_Exception2 = _interopRequireWildcard(_Exception)
},
function(module, exports, __webpack_require__) {
"use strict";
function castChunk(chunk, codeGen, loc) {
if (_isArray.isArray(chunk)) {
for (var ret = [], i = 0, len = chunk.length; len > i; i++) ret.push(codeGen.wrap(chunk[i], loc));
return ret
}
return "boolean" == typeof chunk || "number" == typeof chunk ? chunk + "" : chunk
}
function CodeGen(srcFile) {
this.srcFile = srcFile, this.source = []
}
exports.__esModule = !0;
var _isArray = __webpack_require__(12),
SourceNode = void 0;
try {} catch (err) {}
SourceNode || (SourceNode = function(line, column, srcFile, chunks) {
this.src = "", chunks && this.add(chunks)
}, SourceNode.prototype = {
add: function(chunks) {
_isArray.isArray(chunks) && (chunks = chunks.join("")), this.src += chunks
},
prepend: function(chunks) {
_isArray.isArray(chunks) && (chunks = chunks.join("")), this.src = chunks + this.src
},
toStringWithSourceMap: function() {
return {
code: this.toString()
}
},
toString: function() {
return this.src
}
}), CodeGen.prototype = {
prepend: function(source, loc) {
this.source.unshift(this.wrap(source, loc))
},
push: function(source, loc) {
this.source.push(this.wrap(source, loc))
},
merge: function() {
var source = this.empty();
return this.each(function(line) {
source.add([" ", line, "\n"])
}), source
},
each: function(iter) {
for (var i = 0, len = this.source.length; len > i; i++) iter(this.source[i])
},
empty: function() {
var loc = void 0 === arguments[0] ? this.currentLocation || {
start: {}
} : arguments[0];
return new SourceNode(loc.start.line, loc.start.column, this.srcFile)
},
wrap: function(chunk) {
var loc = void 0 === arguments[1] ? this.currentLocation || {
start: {}
} : arguments[1];
return chunk instanceof SourceNode ? chunk : (chunk = castChunk(chunk, this, loc), new SourceNode(loc.start.line, loc.start.column, this.srcFile, chunk))
},
functionCall: function(fn, type, params) {
return params = this.generateList(params), this.wrap([fn, type ? "." + type + "(" : "(", params, ")"])
},
quotedString: function(str) {
return '"' + (str + "").replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, "\\n").replace(/\r/g, "\\r").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029") + '"'
},
objectLiteral: function(obj) {
var pairs = [];
for (var key in obj)
if (obj.hasOwnProperty(key)) {
var value = castChunk(obj[key], this);
"undefined" !== value && pairs.push([this.quotedString(key), ":", value])
}
var ret = this.generateList(pairs);
return ret.prepend("{"), ret.add("}"), ret
},
generateList: function(entries, loc) {
for (var ret = this.empty(loc), i = 0, len = entries.length; len > i; i++) i && ret.add(","), ret.add(castChunk(entries[i], this, loc));
return ret
},
generateArray: function(entries, loc) {
var ret = this.generateList(entries, loc);
return ret.prepend("["), ret.add("]"), ret
}
}, exports["default"] = CodeGen, module.exports = exports["default"]
}
])
}),
function(factory) {
"function" == typeof define && define.amd ? define(["jquery"], factory) : factory("undefined" != typeof jQuery ? jQuery : window.Zepto)
}(function($) {
"use strict";
function doAjaxSubmit(e) {
var options = e.data;
e.isDefaultPrevented() || (e.preventDefault(), $(e.target).ajaxSubmit(options))
}
function captureSubmittingElement(e) {
var target = e.target,
$el = $(target);
if (!$el.is("[type=submit],[type=image]")) {
var t = $el.closest("[type=submit]");
if (0 === t.length) return;
target = t[0]
}
var form = this;
if (form.clk = target, "image" == target.type)
if (void 0 !== e.offsetX) form.clk_x = e.offsetX, form.clk_y = e.offsetY;
else if ("function" == typeof $.fn.offset) {
var offset = $el.offset();
form.clk_x = e.pageX - offset.left, form.clk_y = e.pageY - offset.top
} else form.clk_x = e.pageX - target.offsetLeft, form.clk_y = e.pageY - target.offsetTop;
setTimeout(function() {
form.clk = form.clk_x = form.clk_y = null
}, 100)
}
function log() {
if ($.fn.ajaxSubmit.debug) {
var msg = "[jquery.form] " + Array.prototype.join.call(arguments, "");
window.console && window.console.log ? window.console.log(msg) : window.opera && window.opera.postError && window.opera.postError(msg)
}
}
var feature = {};
feature.fileapi = void 0 !== $("<input type='file'/>").get(0).files, feature.formdata = void 0 !== window.FormData;
var hasProp = !! $.fn.prop;
$.fn.attr2 = function() {
if (!hasProp) return this.attr.apply(this, arguments);
var val = this.prop.apply(this, arguments);
return val && val.jquery || "string" == typeof val ? val : this.attr.apply(this, arguments)
}, $.fn.ajaxSubmit = function(options) {
function deepSerialize(extraData) {
var i, part, serialized = $.param(extraData, options.traditional).split("&"),
len = serialized.length,
result = [];
for (i = 0; len > i; i++) serialized[i] = serialized[i].replace(/\+/g, " "), part = serialized[i].split("="), result.push([decodeURIComponent(part[0]), decodeURIComponent(part[1])]);
return result
}
function fileUploadXhr(a) {
for (var formdata = new FormData, i = 0; i < a.length; i++) formdata.append(a[i].name, a[i].value);
if (options.extraData) {
var serializedData = deepSerialize(options.extraData);
for (i = 0; i < serializedData.length; i++) serializedData[i] && formdata.append(serializedData[i][0], serializedData[i][1])
}
options.data = null;
var s = $.extend(!0, {}, $.ajaxSettings, options, {
contentType: !1,
processData: !1,
cache: !1,
type: method || "POST"
});
options.uploadProgress && (s.xhr = function() {
var xhr = $.ajaxSettings.xhr();
return xhr.upload && xhr.upload.addEventListener("progress", function(event) {
var percent = 0,
position = event.loaded || event.position,
total = event.total;
event.lengthComputable && (percent = Math.ceil(position / total * 100)), options.uploadProgress(event, position, total, percent)
}, !1), xhr
}), s.data = null;
var beforeSend = s.beforeSend;
return s.beforeSend = function(xhr, o) {
o.data = options.formData ? options.formData : formdata, beforeSend && beforeSend.call(this, xhr, o)
}, $.ajax(s)
}
function fileUploadIframe(a) {
function getDoc(frame) {
var doc = null;
try {
frame.contentWindow && (doc = frame.contentWindow.document)
} catch (err) {
log("cannot get iframe.contentWindow document: " + err)
}
if (doc) return doc;
try {
doc = frame.contentDocument ? frame.contentDocument : frame.document
} catch (err) {
log("cannot get iframe.contentDocument: " + err), doc = frame.document
}
return doc
}
function doSubmit() {
function checkState() {
try {
var state = getDoc(io).readyState;
log("state = " + state), state && "uninitialized" == state.toLowerCase() && setTimeout(checkState, 50)
} catch (e) {
log("Server abort: ", e, " (", e.name, ")"), cb(SERVER_ABORT), timeoutHandle && clearTimeout(timeoutHandle), timeoutHandle = void 0
}
}
var t = $form.attr2("target"),
a = $form.attr2("action");
form.setAttribute("target", id), (!method || /post/i.test(method)) && form.setAttribute("method", "POST"), a != s.url && form.setAttribute("action", s.url), s.skipEncodingOverride || method && !/post/i.test(method) || $form.attr({
encoding: "multipart/form-data",
enctype: "multipart/form-data"
}), s.timeout && (timeoutHandle = setTimeout(function() {
timedOut = !0, cb(CLIENT_TIMEOUT_ABORT)
}, s.timeout));
var extraInputs = [];
try {
if (s.extraData)
for (var n in s.extraData) s.extraData.hasOwnProperty(n) && extraInputs.push($.isPlainObject(s.extraData[n]) && s.extraData[n].hasOwnProperty("name") && s.extraData[n].hasOwnProperty("value") ? $('<input type="hidden" name="' + s.extraData[n].name + '">').val(s.extraData[n].value).appendTo(form)[0] : $('<input type="hidden" name="' + n + '">').val(s.extraData[n]).appendTo(form)[0]);
s.iframeTarget || $io.appendTo("body"), io.attachEvent ? io.attachEvent("onload", cb) : io.addEventListener("load", cb, !1), setTimeout(checkState, 15);
try {
form.submit()
} catch (err) {
var submitFn = document.createElement("form").submit;
submitFn.apply(form)
}
} finally {
form.setAttribute("action", a), t ? form.setAttribute("target", t) : $form.removeAttr("target"), $(extraInputs).remove()
}
}
function cb(e) {
if (!xhr.aborted && !callbackProcessed) {
if (doc = getDoc(io), doc || (log("cannot access response document"), e = SERVER_ABORT), e === CLIENT_TIMEOUT_ABORT && xhr) return xhr.abort("timeout"), void deferred.reject(xhr, "timeout");
if (e == SERVER_ABORT && xhr) return xhr.abort("server abort"), void deferred.reject(xhr, "error", "server abort");
if (doc && doc.location.href != s.iframeSrc || timedOut) {
io.detachEvent ? io.detachEvent("onload", cb) : io.removeEventListener("load", cb, !1);
var errMsg, status = "success";
try {
if (timedOut) throw "timeout";
var isXml = "xml" == s.dataType || doc.XMLDocument || $.isXMLDoc(doc);
if (log("isXml=" + isXml), !isXml && window.opera && (null === doc.body || !doc.body.innerHTML) && --domCheckCount) return log("requeing onLoad callback, DOM not available"), void setTimeout(cb, 250);
var docRoot = doc.body ? doc.body : doc.documentElement;
xhr.responseText = docRoot ? docRoot.innerHTML : null, xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc, isXml && (s.dataType = "xml"), xhr.getResponseHeader = function(header) {
var headers = {
"content-type": s.dataType
};
return headers[header.toLowerCase()]
}, docRoot && (xhr.status = Number(docRoot.getAttribute("status")) || xhr.status, xhr.statusText = docRoot.getAttribute("statusText") || xhr.statusText);
var dt = (s.dataType || "").toLowerCase(),
scr = /(json|script|text)/.test(dt);
if (scr || s.textarea) {
var ta = doc.getElementsByTagName("textarea")[0];
if (ta) xhr.responseText = ta.value, xhr.status = Number(ta.getAttribute("status")) || xhr.status, xhr.statusText = ta.getAttribute("statusText") || xhr.statusText;
else if (scr) {
var pre = doc.getElementsByTagName("pre")[0],
b = doc.getElementsByTagName("body")[0];
pre ? xhr.responseText = pre.textContent ? pre.textContent : pre.innerText : b && (xhr.responseText = b.textContent ? b.textContent : b.innerText)
}
} else "xml" == dt && !xhr.responseXML && xhr.responseText && (xhr.responseXML = toXml(xhr.responseText));
try {
data = httpData(xhr, dt, s)
} catch (err) {
status = "parsererror", xhr.error = errMsg = err || status
}
} catch (err) {
log("error caught: ", err), status = "error", xhr.error = errMsg = err || status
}
xhr.aborted && (log("upload aborted"), status = null), xhr.status && (status = xhr.status >= 200 && xhr.status < 300 || 304 === xhr.status ? "success" : "error"), "success" === status ? (s.success && s.success.call(s.context, data, "success", xhr), deferred.resolve(xhr.responseText, "success", xhr), g && $.event.trigger("ajaxSuccess", [xhr, s])) : status && (void 0 === errMsg && (errMsg = xhr.statusText), s.error && s.error.call(s.context, xhr, status, errMsg), deferred.reject(xhr, "error", errMsg), g && $.event.trigger("ajaxError", [xhr, s, errMsg])), g && $.event.trigger("ajaxComplete", [xhr, s]), g && !--$.active && $.event.trigger("ajaxStop"), s.complete && s.complete.call(s.context, xhr, status), callbackProcessed = !0, s.timeout && clearTimeout(timeoutHandle), setTimeout(function() {
s.iframeTarget ? $io.attr("src", s.iframeSrc) : $io.remove(), xhr.responseXML = null
}, 100)
}
}
}
var el, i, s, g, id, $io, io, xhr, sub, n, timedOut, timeoutHandle, form = $form[0],
deferred = $.Deferred();
if (deferred.abort = function(status) {
xhr.abort(status)
}, a)
for (i = 0; i < elements.length; i++) el = $(elements[i]), hasProp ? el.prop("disabled", !1) : el.removeAttr("disabled");
if (s = $.extend(!0, {}, $.ajaxSettings, options), s.context = s.context || s, id = "jqFormIO" + (new Date).getTime(), s.iframeTarget ? ($io = $(s.iframeTarget), n = $io.attr2("name"), n ? id = n : $io.attr2("name", id)) : ($io = $('<iframe name="' + id + '" src="' + s.iframeSrc + '" />'), $io.css({
position: "absolute",
top: "-1000px",
left: "-1000px"
})), io = $io[0], xhr = {
aborted: 0,
responseText: null,
responseXML: null,
status: 0,
statusText: "n/a",
getAllResponseHeaders: function() {},
getResponseHeader: function() {},
setRequestHeader: function() {},
abort: function(status) {
var e = "timeout" === status ? "timeout" : "aborted";
log("aborting upload... " + e), this.aborted = 1;
try {
io.contentWindow.document.execCommand && io.contentWindow.document.execCommand("Stop")
} catch (ignore) {}
$io.attr("src", s.iframeSrc), xhr.error = e, s.error && s.error.call(s.context, xhr, e, status), g && $.event.trigger("ajaxError", [xhr, s, e]), s.complete && s.complete.call(s.context, xhr, e)
}
}, g = s.global, g && 0 === $.active++ && $.event.trigger("ajaxStart"), g && $.event.trigger("ajaxSend", [xhr, s]), s.beforeSend && s.beforeSend.call(s.context, xhr, s) === !1) return s.global && $.active--, deferred.reject(), deferred;
if (xhr.aborted) return deferred.reject(), deferred;
sub = form.clk, sub && (n = sub.name, n && !sub.disabled && (s.extraData = s.extraData || {}, s.extraData[n] = sub.value, "image" == sub.type && (s.extraData[n + ".x"] = form.clk_x, s.extraData[n + ".y"] = form.clk_y)));
var CLIENT_TIMEOUT_ABORT = 1,
SERVER_ABORT = 2,
csrf_token = $("meta[name=csrf-token]").attr("content"),
csrf_param = $("meta[name=csrf-param]").attr("content");
csrf_param && csrf_token && (s.extraData = s.extraData || {}, s.extraData[csrf_param] = csrf_token), s.forceSync ? doSubmit() : setTimeout(doSubmit, 10);
var data, doc, callbackProcessed, domCheckCount = 50,
toXml = $.parseXML || function(s, doc) {
return window.ActiveXObject ? (doc = new ActiveXObject("Microsoft.XMLDOM"), doc.async = "false", doc.loadXML(s)) : doc = (new DOMParser).parseFromString(s, "text/xml"), doc && doc.documentElement && "parsererror" != doc.documentElement.nodeName ? doc : null
}, parseJSON = $.parseJSON || function(s) {
return window.eval("(" + s + ")")
}, httpData = function(xhr, type, s) {
var ct = xhr.getResponseHeader("content-type") || "",
xml = "xml" === type || !type && ct.indexOf("xml") >= 0,
data = xml ? xhr.responseXML : xhr.responseText;
return xml && "parsererror" === data.documentElement.nodeName && $.error && $.error("parsererror"), s && s.dataFilter && (data = s.dataFilter(data, type)), "string" == typeof data && ("json" === type || !type && ct.indexOf("json") >= 0 ? data = parseJSON(data) : ("script" === type || !type && ct.indexOf("javascript") >= 0) && $.globalEval(data)), data
};
return deferred
}
if (!this.length) return log("ajaxSubmit: skipping submit process - no element selected"), this;
var method, action, url, $form = this;
"function" == typeof options ? options = {
success: options
} : void 0 === options && (options = {}), method = options.type || this.attr2("method"), action = options.url || this.attr2("action"), url = "string" == typeof action ? $.trim(action) : "", url = url || window.location.href || "", url && (url = (url.match(/^([^#]+)/) || [])[1]), options = $.extend(!0, {
url: url,
success: $.ajaxSettings.success,
type: method || $.ajaxSettings.type,
iframeSrc: /^https/i.test(window.location.href || "") ? "javascript:false" : "about:blank"
}, options);
var veto = {};
if (this.trigger("form-pre-serialize", [this, options, veto]), veto.veto) return log("ajaxSubmit: submit vetoed via form-pre-serialize trigger"), this;
if (options.beforeSerialize && options.beforeSerialize(this, options) === !1) return log("ajaxSubmit: submit aborted via beforeSerialize callback"), this;
var traditional = options.traditional;
void 0 === traditional && (traditional = $.ajaxSettings.traditional);
var qx, elements = [],
a = this.formToArray(options.semantic, elements);
if (options.data && (options.extraData = options.data, qx = $.param(options.data, traditional)), options.beforeSubmit && options.beforeSubmit(a, this, options) === !1) return log("ajaxSubmit: submit aborted via beforeSubmit callback"), this;
if (this.trigger("form-submit-validate", [a, this, options, veto]), veto.veto) return log("ajaxSubmit: submit vetoed via form-submit-validate trigger"), this;
var q = $.param(a, traditional);
qx && (q = q ? q + "&" + qx : qx), "GET" == options.type.toUpperCase() ? (options.url += (options.url.indexOf("?") >= 0 ? "&" : "?") + q, options.data = null) : options.data = q;
var callbacks = [];
if (options.resetForm && callbacks.push(function() {
$form.resetForm()
}), options.clearForm && callbacks.push(function() {
$form.clearForm(options.includeHidden)
}), !options.dataType && options.target) {
var oldSuccess = options.success || function() {};
callbacks.push(function(data) {
var fn = options.replaceTarget ? "replaceWith" : "html";
$(options.target)[fn](data).each(oldSuccess, arguments)
})
} else options.success && callbacks.push(options.success); if (options.success = function(data, status, xhr) {
for (var context = options.context || this, i = 0, max = callbacks.length; max > i; i++) callbacks[i].apply(context, [data, status, xhr || $form, $form])
}, options.error) {
var oldError = options.error;
options.error = function(xhr, status, error) {
var context = options.context || this;
oldError.apply(context, [xhr, status, error, $form])
}
}
if (options.complete) {
var oldComplete = options.complete;
options.complete = function(xhr, status) {
var context = options.context || this;
oldComplete.apply(context, [xhr, status, $form])
}
}
var fileInputs = $("input[type=file]:enabled", this).filter(function() {
return "" !== $(this).val()
}),
hasFileInputs = fileInputs.length > 0,
mp = "multipart/form-data",
multipart = $form.attr("enctype") == mp || $form.attr("encoding") == mp,
fileAPI = feature.fileapi && feature.formdata;
log("fileAPI :" + fileAPI);
var jqxhr, shouldUseFrame = (hasFileInputs || multipart) && !fileAPI;
options.iframe !== !1 && (options.iframe || shouldUseFrame) ? options.closeKeepAlive ? $.get(options.closeKeepAlive, function() {
jqxhr = fileUploadIframe(a)
}) : jqxhr = fileUploadIframe(a) : jqxhr = (hasFileInputs || multipart) && fileAPI ? fileUploadXhr(a) : $.ajax(options), $form.removeData("jqxhr").data("jqxhr", jqxhr);
for (var k = 0; k < elements.length; k++) elements[k] = null;
return this.trigger("form-submit-notify", [this, options]), this
}, $.fn.ajaxForm = function(options) {
if (options = options || {}, options.delegation = options.delegation && $.isFunction($.fn.on), !options.delegation && 0 === this.length) {
var o = {
s: this.selector,
c: this.context
};
return !$.isReady && o.s ? (log("DOM not ready, queuing ajaxForm"), $(function() {
$(o.s, o.c).ajaxForm(options)
}), this) : (log("terminating; zero elements found by selector" + ($.isReady ? "" : " (DOM not ready)")), this)
}
return options.delegation ? ($(document).off("submit.form-plugin", this.selector, doAjaxSubmit).off("click.form-plugin", this.selector, captureSubmittingElement).on("submit.form-plugin", this.selector, options, doAjaxSubmit).on("click.form-plugin", this.selector, options, captureSubmittingElement), this) : this.ajaxFormUnbind().bind("submit.form-plugin", options, doAjaxSubmit).bind("click.form-plugin", options, captureSubmittingElement)
}, $.fn.ajaxFormUnbind = function() {
return this.unbind("submit.form-plugin click.form-plugin")
}, $.fn.formToArray = function(semantic, elements) {
var a = [];
if (0 === this.length) return a;
var form = this[0],
els = semantic ? form.getElementsByTagName("*") : form.elements;
if (!els) return a;
var i, j, n, v, el, max, jmax;
for (i = 0, max = els.length; max > i; i++)
if (el = els[i], n = el.name, n && !el.disabled)
if (semantic && form.clk && "image" == el.type) form.clk == el && (a.push({
name: n,
value: $(el).val(),
type: el.type
}), a.push({
name: n + ".x",
value: form.clk_x
}, {
name: n + ".y",
value: form.clk_y
}));
else if (v = $.fieldValue(el, !0), v && v.constructor == Array)
for (elements && elements.push(el), j = 0, jmax = v.length; jmax > j; j++) a.push({
name: n,
value: v[j]
});
else if (feature.fileapi && "file" == el.type) {
elements && elements.push(el);
var files = el.files;
if (files.length)
for (j = 0; j < files.length; j++) a.push({
name: n,
value: files[j],
type: el.type
});
else a.push({
name: n,
value: "",
type: el.type
})
} else null !== v && "undefined" != typeof v && (elements && elements.push(el), a.push({
name: n,
value: v,
type: el.type,
required: el.required
})); if (!semantic && form.clk) {
var $input = $(form.clk),
input = $input[0];
n = input.name, n && !input.disabled && "image" == input.type && (a.push({
name: n,
value: $input.val()
}), a.push({
name: n + ".x",
value: form.clk_x
}, {
name: n + ".y",
value: form.clk_y
}))
}
return a
}, $.fn.formSerialize = function(semantic) {
return $.param(this.formToArray(semantic))
}, $.fn.fieldSerialize = function(successful) {
var a = [];
return this.each(function() {
var n = this.name;
if (n) {
var v = $.fieldValue(this, successful);
if (v && v.constructor == Array)
for (var i = 0, max = v.length; max > i; i++) a.push({
name: n,
value: v[i]
});
else null !== v && "undefined" != typeof v && a.push({
name: this.name,
value: v
})
}
}), $.param(a)
}, $.fn.fieldValue = function(successful) {
for (var val = [], i = 0, max = this.length; max > i; i++) {
var el = this[i],
v = $.fieldValue(el, successful);
null === v || "undefined" == typeof v || v.constructor == Array && !v.length || (v.constructor == Array ? $.merge(val, v) : val.push(v))
}
return val
}, $.fieldValue = function(el, successful) {
var n = el.name,
t = el.type,
tag = el.tagName.toLowerCase();
if (void 0 === successful && (successful = !0), successful && (!n || el.disabled || "reset" == t || "button" == t || ("checkbox" == t || "radio" == t) && !el.checked || ("submit" == t || "image" == t) && el.form && el.form.clk != el || "select" == tag && -1 == el.selectedIndex)) return null;
if ("select" == tag) {
var index = el.selectedIndex;
if (0 > index) return null;
for (var a = [], ops = el.options, one = "select-one" == t, max = one ? index + 1 : ops.length, i = one ? index : 0; max > i; i++) {
var op = ops[i];
if (op.selected) {
var v = op.value;
if (v || (v = op.attributes && op.attributes.value && !op.attributes.value.specified ? op.text : op.value), one) return v;
a.push(v)
}
}
return a
}
return $(el).val()
}, $.fn.clearForm = function(includeHidden) {
return this.each(function() {
$("input,select,textarea", this).clearFields(includeHidden)
})
}, $.fn.clearFields = $.fn.clearInputs = function(includeHidden) {
var re = /^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;
return this.each(function() {
var t = this.type,
tag = this.tagName.toLowerCase();
re.test(t) || "textarea" == tag ? this.value = "" : "checkbox" == t || "radio" == t ? this.checked = !1 : "select" == tag ? this.selectedIndex = -1 : "file" == t ? /MSIE/.test(navigator.userAgent) ? $(this).replaceWith($(this).clone(!0)) : $(this).val("") : includeHidden && (includeHidden === !0 && /hidden/.test(t) || "string" == typeof includeHidden && $(this).is(includeHidden)) && (this.value = "")
})
}, $.fn.resetForm = function() {
return this.each(function() {
("function" == typeof this.reset || "object" == typeof this.reset && !this.reset.nodeType) && this.reset()
})
}, $.fn.enable = function(b) {
return void 0 === b && (b = !0), this.each(function() {
this.disabled = !b
})
}, $.fn.selected = function(select) {
return void 0 === select && (select = !0), this.each(function() {
var t = this.type;
if ("checkbox" == t || "radio" == t) this.checked = select;
else if ("option" == this.tagName.toLowerCase()) {
var $sel = $(this).parent("select");
select && $sel[0] && "select-one" == $sel[0].type && $sel.find("option").selected(!1), this.selected = select
}
})
}, $.fn.ajaxSubmit.debug = !1
}),
function(window, document, $) {
function args(elem) {
var newAttrs = {}, rinlinejQuery = /^jQuery\d+$/;
return $.each(elem.attributes, function(i, attr) {
attr.specified && !rinlinejQuery.test(attr.name) && (newAttrs[attr.name] = attr.value)
}), newAttrs
}
function clearPlaceholder(event, value) {
var input = this,
$input = $(input);
if (input.value == $input.attr("placeholder") && $input.hasClass("placeholder"))
if ($input.data("placeholder-password")) {
if ($input = $input.hide().next().show().attr("id", $input.removeAttr("id").data("placeholder-id")), event === !0) return $input[0].value = value;
$input.focus()
} else input.value = "", $input.removeClass("placeholder"), input == safeActiveElement() && input.select()
}
function setPlaceholder() {
var $replacement, input = this,
$input = $(input),
id = this.id;
if ("" == input.value) {
if ("password" == input.type) {
if (!$input.data("placeholder-textinput")) {
try {
$replacement = $input.clone().attr({
type: "text"
})
} catch (e) {
$replacement = $("<input>").attr($.extend(args(this), {
type: "text"
}))
}
$replacement.removeAttr("name").data({
"placeholder-password": $input,
"placeholder-id": id
}).bind("focus.placeholder", clearPlaceholder), $input.data({
"placeholder-textinput": $replacement,
"placeholder-id": id
}).before($replacement)
}
$input = $input.removeAttr("id").hide().prev().attr("id", id).show()
}
$input.addClass("placeholder"), $input[0].value = $input.attr("placeholder")
} else $input.removeClass("placeholder")
}
function safeActiveElement() {
try {
return document.activeElement
} catch (exception) {}
}
var hooks, placeholder, isOperaMini = "[object OperaMini]" == Object.prototype.toString.call(window.operamini),
isInputSupported = "placeholder" in document.createElement("input") && !isOperaMini,
isTextareaSupported = "placeholder" in document.createElement("textarea") && !isOperaMini,
prototype = $.fn,
valHooks = $.valHooks,
propHooks = $.propHooks;
isInputSupported && isTextareaSupported ? (placeholder = prototype.placeholder = function() {
return this
}, placeholder.input = placeholder.textarea = !0) : (placeholder = prototype.placeholder = function() {
var $this = this;
return $this.filter((isInputSupported ? "textarea" : ":input") + "[placeholder]").not(".placeholder").bind({
"focus.placeholder": clearPlaceholder,
"blur.placeholder": setPlaceholder
}).data("placeholder-enabled", !0).trigger("blur.placeholder"), $this
}, placeholder.input = isInputSupported, placeholder.textarea = isTextareaSupported, hooks = {
get: function(element) {
var $element = $(element),
$passwordInput = $element.data("placeholder-password");
return $passwordInput ? $passwordInput[0].value : $element.data("placeholder-enabled") && $element.hasClass("placeholder") ? "" : element.value
},
set: function(element, value) {
var $element = $(element),
$passwordInput = $element.data("placeholder-password");
return $passwordInput ? $passwordInput[0].value = value : $element.data("placeholder-enabled") ? ("" == value ? (element.value = value, element != safeActiveElement() && setPlaceholder.call(element)) : $element.hasClass("placeholder") ? clearPlaceholder.call(element, !0, value) || (element.value = value) : element.value = value, $element) : element.value = value
}
}, isInputSupported || (valHooks.input = hooks, propHooks.value = hooks), isTextareaSupported || (valHooks.textarea = hooks, propHooks.value = hooks), $(function() {
$(document).delegate("form", "submit.placeholder", function() {
var $inputs = $(".placeholder", this).each(clearPlaceholder);
setTimeout(function() {
$inputs.each(setPlaceholder)
}, 10)
})
}), $(window).bind("beforeunload.placeholder", function() {
$(".placeholder").each(function() {
this.value = ""
})
}))
}(this, document, jQuery),
function($) {
function Timepicker() {
this.debug = !0, this._curInst = null, this._disabledInputs = [], this._timepickerShowing = !1, this._inDialog = !1, this._dialogClass = "ui-timepicker-dialog", this._mainDivId = "ui-timepicker-div", this._inlineClass = "ui-timepicker-inline", this._currentClass = "ui-timepicker-current", this._dayOverClass = "ui-timepicker-days-cell-over", this.regional = [], this.regional[""] = {
hourText: "Hour",
minuteText: "Minute",
amPmText: ["AM", "PM"],
closeButtonText: "Done",
nowButtonText: "Now",
deselectButtonText: "Deselect"
}, this._defaults = {
showOn: "focus",
button: null,
showAnim: "fadeIn",
showOptions: {},
appendText: "",
beforeShow: null,
onSelect: null,
onClose: null,
timeSeparator: ":",
periodSeparator: " ",
showPeriod: !1,
showPeriodLabels: !0,
showLeadingZero: !0,
showMinutesLeadingZero: !0,
altField: "",
defaultTime: "now",
myPosition: "left top",
atPosition: "left bottom",
onHourShow: null,
onMinuteShow: null,
hours: {
starts: 0,
ends: 23
},
minutes: {
starts: 0,
ends: 55,
interval: 5,
manual: []
},
rows: 4,
showHours: !0,
showMinutes: !0,
optionalMinutes: !1,
showCloseButton: !1,
showNowButton: !1,
showDeselectButton: !1,
maxTime: {
hour: null,
minute: null
},
minTime: {
hour: null,
minute: null
}
}, $.extend(this._defaults, this.regional[""]), this.tpDiv = $('<div id="' + this._mainDivId + '" class="ui-timepicker ui-widget ui-helper-clearfix ui-corner-all " style="display: none"></div>')
}
function extendRemove(target, props) {
$.extend(target, props);
for (var name in props)(null == props[name] || void 0 == props[name]) && (target[name] = props[name]);
return target
}
$.extend($.ui, {
timepicker: {
version: "0.3.3"
}
});
var PROP_NAME = "timepicker",
tpuuid = (new Date).getTime();
$.extend(Timepicker.prototype, {
markerClassName: "hasTimepicker",
log: function() {
this.debug && console.log.apply("", arguments)
},
_widgetTimepicker: function() {
return this.tpDiv
},
setDefaults: function(settings) {
return extendRemove(this._defaults, settings || {}), this
},
_attachTimepicker: function(target, settings) {
var inlineSettings = null;
for (var attrName in this._defaults) {
var attrValue = target.getAttribute("time:" + attrName);
if (attrValue) {
inlineSettings = inlineSettings || {};
try {
inlineSettings[attrName] = eval(attrValue)
} catch (err) {
inlineSettings[attrName] = attrValue
}
}
}
var nodeName = target.nodeName.toLowerCase(),
inline = "div" == nodeName || "span" == nodeName;
target.id || (this.uuid += 1, target.id = "tp" + this.uuid);
var inst = this._newInst($(target), inline);
inst.settings = $.extend({}, settings || {}, inlineSettings || {}), "input" == nodeName ? (this._connectTimepicker(target, inst), this._setTimeFromField(inst)) : inline && this._inlineTimepicker(target, inst)
},
_newInst: function(target, inline) {
var id = target[0].id.replace(/([^A-Za-z0-9_-])/g, "\\\\$1");
return {
id: id,
input: target,
inline: inline,
tpDiv: inline ? $('<div class="' + this._inlineClass + ' ui-timepicker ui-widget ui-helper-clearfix"></div>') : this.tpDiv
}
},
_connectTimepicker: function(target, inst) {
var input = $(target);
inst.append = $([]), inst.trigger = $([]), input.hasClass(this.markerClassName) || (this._attachments(input, inst), input.addClass(this.markerClassName).keydown(this._doKeyDown).keyup(this._doKeyUp).bind("setData.timepicker", function(event, key, value) {
inst.settings[key] = value
}).bind("getData.timepicker", function(event, key) {
return this._get(inst, key)
}), $.data(target, PROP_NAME, inst))
},
_doKeyDown: function(event) {
var inst = $.timepicker._getInst(event.target),
handled = !0;
if (inst._keyEvent = !0, $.timepicker._timepickerShowing) switch (event.keyCode) {
case 9:
$.timepicker._hideTimepicker(), handled = !1;
break;
case 13:
return $.timepicker._updateSelectedValue(inst), $.timepicker._hideTimepicker(), !1;
case 27:
$.timepicker._hideTimepicker();
break;
default:
handled = !1
} else 36 == event.keyCode && event.ctrlKey ? $.timepicker._showTimepicker(this) : handled = !1;
handled && (event.preventDefault(), event.stopPropagation())
},
_doKeyUp: function(event) {
var inst = $.timepicker._getInst(event.target);
$.timepicker._setTimeFromField(inst), $.timepicker._updateTimepicker(inst)
},
_attachments: function(input, inst) {
var appendText = this._get(inst, "appendText"),
isRTL = this._get(inst, "isRTL");
inst.append && inst.append.remove(), appendText && (inst.append = $('<span class="' + this._appendClass + '">' + appendText + "</span>"), input[isRTL ? "before" : "after"](inst.append)), input.unbind("focus.timepicker", this._showTimepicker), input.unbind("click.timepicker", this._adjustZIndex), inst.trigger && inst.trigger.remove();
var showOn = this._get(inst, "showOn");
if (("focus" == showOn || "both" == showOn) && (input.bind("focus.timepicker", this._showTimepicker), input.bind("click.timepicker", this._adjustZIndex)), "button" == showOn || "both" == showOn) {
var button = this._get(inst, "button");
null == button && (button = $('<button class="ui-timepicker-trigger" type="button">...</button>'), input.after(button)), $(button).bind("click.timepicker", function() {
return $.timepicker._timepickerShowing && $.timepicker._lastInput == input[0] ? $.timepicker._hideTimepicker() : inst.input.is(":disabled") || $.timepicker._showTimepicker(input[0]), !1
})
}
},
_inlineTimepicker: function(target, inst) {
var divSpan = $(target);
divSpan.hasClass(this.markerClassName) || (divSpan.addClass(this.markerClassName).append(inst.tpDiv).bind("setData.timepicker", function(event, key, value) {
inst.settings[key] = value
}).bind("getData.timepicker", function(event, key) {
return this._get(inst, key)
}), $.data(target, PROP_NAME, inst), this._setTimeFromField(inst), this._updateTimepicker(inst), inst.tpDiv.show())
},
_adjustZIndex: function(input) {
input = input.target || input;
var inst = $.timepicker._getInst(input);
inst.tpDiv.css("zIndex", $.timepicker._getZIndex(input) + 1)
},
_showTimepicker: function(input) {
if (input = input.target || input, "input" != input.nodeName.toLowerCase() && (input = $("input", input.parentNode)[0]), !$.timepicker._isDisabledTimepicker(input) && $.timepicker._lastInput != input) {
$.timepicker._hideTimepicker();
var inst = $.timepicker._getInst(input);
$.timepicker._curInst && $.timepicker._curInst != inst && $.timepicker._curInst.tpDiv.stop(!0, !0);
var beforeShow = $.timepicker._get(inst, "beforeShow");
extendRemove(inst.settings, beforeShow ? beforeShow.apply(input, [input, inst]) : {}), inst.lastVal = null, $.timepicker._lastInput = input, $.timepicker._setTimeFromField(inst), $.timepicker._inDialog && (input.value = ""), $.timepicker._pos || ($.timepicker._pos = $.timepicker._findPos(input), $.timepicker._pos[1] += input.offsetHeight);
var isFixed = !1;
$(input).parents().each(function() {
return isFixed |= "fixed" == $(this).css("position"), !isFixed
});
var offset = {
left: $.timepicker._pos[0],
top: $.timepicker._pos[1]
};
if ($.timepicker._pos = null, inst.tpDiv.css({
position: "absolute",
display: "block",
top: "-1000px"
}), $.timepicker._updateTimepicker(inst), !inst.inline && "object" == typeof $.ui.position) {
inst.tpDiv.position({
of: inst.input,
my: $.timepicker._get(inst, "myPosition"),
at: $.timepicker._get(inst, "atPosition"),
collision: "flip"
});
var offset = inst.tpDiv.offset();
$.timepicker._pos = [offset.top, offset.left]
}
if (inst._hoursClicked = !1, inst._minutesClicked = !1, offset = $.timepicker._checkOffset(inst, offset, isFixed), inst.tpDiv.css({
position: $.timepicker._inDialog && $.blockUI ? "static" : isFixed ? "fixed" : "absolute",
display: "none",
left: offset.left + "px",
top: offset.top + "px"
}), !inst.inline) {
var showAnim = $.timepicker._get(inst, "showAnim"),
duration = $.timepicker._get(inst, "duration"),
postProcess = function() {
$.timepicker._timepickerShowing = !0;
var borders = $.timepicker._getBorders(inst.tpDiv);
inst.tpDiv.find("iframe.ui-timepicker-cover").css({
left: -borders[0],
top: -borders[1],
width: inst.tpDiv.outerWidth(),
height: inst.tpDiv.outerHeight()
})
};
$.timepicker._adjustZIndex(input), $.effects && $.effects[showAnim] ? inst.tpDiv.show(showAnim, $.timepicker._get(inst, "showOptions"), duration, postProcess) : inst.tpDiv.show(showAnim ? duration : null, postProcess), showAnim && duration || postProcess(), inst.input.is(":visible") && !inst.input.is(":disabled") && inst.input.focus(), $.timepicker._curInst = inst
}
}
},
_getZIndex: function(target) {
for (var position, value, elem = $(target), maxValue = 0; elem.length && elem[0] !== document;) position = elem.css("position"), ("absolute" === position || "relative" === position || "fixed" === position) && (value = parseInt(elem.css("zIndex"), 10), isNaN(value) || 0 === value || value > maxValue && (maxValue = value)), elem = elem.parent();
return maxValue
},
_refreshTimepicker: function(target) {
var inst = this._getInst(target);
inst && this._updateTimepicker(inst)
},
_updateTimepicker: function(inst) {
inst.tpDiv.empty().append(this._generateHTML(inst)), this._rebindDialogEvents(inst)
},
_rebindDialogEvents: function(inst) {
var borders = $.timepicker._getBorders(inst.tpDiv),
self = this;
inst.tpDiv.find("iframe.ui-timepicker-cover").css({
left: -borders[0],
top: -borders[1],
width: inst.tpDiv.outerWidth(),
height: inst.tpDiv.outerHeight()
}).end().find(".ui-timepicker-minute-cell").unbind().bind("click", {
fromDoubleClick: !1
}, $.proxy($.timepicker.selectMinutes, this)).bind("dblclick", {
fromDoubleClick: !0
}, $.proxy($.timepicker.selectMinutes, this)).end().find(".ui-timepicker-hour-cell").unbind().bind("click", {
fromDoubleClick: !1
}, $.proxy($.timepicker.selectHours, this)).bind("dblclick", {
fromDoubleClick: !0
}, $.proxy($.timepicker.selectHours, this)).end().find(".ui-timepicker td a").unbind().bind("mouseout", function() {
$(this).removeClass("ui-state-hover"), -1 != this.className.indexOf("ui-timepicker-prev") && $(this).removeClass("ui-timepicker-prev-hover"), -1 != this.className.indexOf("ui-timepicker-next") && $(this).removeClass("ui-timepicker-next-hover")
}).bind("mouseover", function() {
self._isDisabledTimepicker(inst.inline ? inst.tpDiv.parent()[0] : inst.input[0]) || ($(this).parents(".ui-timepicker-calendar").find("a").removeClass("ui-state-hover"), $(this).addClass("ui-state-hover"), -1 != this.className.indexOf("ui-timepicker-prev") && $(this).addClass("ui-timepicker-prev-hover"), -1 != this.className.indexOf("ui-timepicker-next") && $(this).addClass("ui-timepicker-next-hover"))
}).end().find("." + this._dayOverClass + " a").trigger("mouseover").end().find(".ui-timepicker-now").bind("click", function(e) {
$.timepicker.selectNow(e)
}).end().find(".ui-timepicker-deselect").bind("click", function(e) {
$.timepicker.deselectTime(e)
}).end().find(".ui-timepicker-close").bind("click", function() {
$.timepicker._hideTimepicker()
}).end()
},
_generateHTML: function(inst) {
var h, row, col, html, showPeriod = 1 == this._get(inst, "showPeriod"),
showPeriodLabels = 1 == this._get(inst, "showPeriodLabels"),
showLeadingZero = 1 == this._get(inst, "showLeadingZero"),
showHours = 1 == this._get(inst, "showHours"),
showMinutes = 1 == this._get(inst, "showMinutes"),
amPmText = this._get(inst, "amPmText"),
rows = this._get(inst, "rows"),
amRows = 0,
pmRows = 0,
amItems = 0,
pmItems = 0,
amFirstRow = 0,
pmFirstRow = 0,
hours = Array(),
hours_options = this._get(inst, "hours"),
hoursPerRow = null,
hourCounter = 0,
hourLabel = this._get(inst, "hourText"),
showCloseButton = this._get(inst, "showCloseButton"),
closeButtonText = this._get(inst, "closeButtonText"),
showNowButton = this._get(inst, "showNowButton"),
nowButtonText = this._get(inst, "nowButtonText"),
showDeselectButton = this._get(inst, "showDeselectButton"),
deselectButtonText = this._get(inst, "deselectButtonText"),
showButtonPanel = showCloseButton || showNowButton || showDeselectButton;
for (h = hours_options.starts; h <= hours_options.ends; h++) hours.push(h);
if (hoursPerRow = Math.ceil(hours.length / rows), showPeriodLabels) {
for (hourCounter = 0; hourCounter < hours.length; hourCounter++) hours[hourCounter] < 12 ? amItems++ : pmItems++;
hourCounter = 0, amRows = Math.floor(amItems / hours.length * rows), pmRows = Math.floor(pmItems / hours.length * rows), rows != amRows + pmRows && (amItems && (!pmItems || !amRows || pmRows && amItems / amRows >= pmItems / pmRows) ? amRows++ : pmRows++), amFirstRow = Math.min(amRows, 1), pmFirstRow = amRows + 1, hoursPerRow = Math.ceil(0 == amRows ? pmItems / pmRows : 0 == pmRows ? amItems / amRows : Math.max(amItems / amRows, pmItems / pmRows))
}
if (html = '<table class="ui-timepicker-table ui-widget-content ui-corner-all"><tr>', showHours) {
for (html += '<td class="ui-timepicker-hours"><div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">' + hourLabel + '</div><table class="ui-timepicker">', row = 1; rows >= row; row++) {
for (html += "<tr>", row == amFirstRow && showPeriodLabels && (html += '<th rowspan="' + amRows.toString() + '" class="periods" scope="row">' + amPmText[0] + "</th>"), row == pmFirstRow && showPeriodLabels && (html += '<th rowspan="' + pmRows.toString() + '" class="periods" scope="row">' + amPmText[1] + "</th>"), col = 1; hoursPerRow >= col; col++) showPeriodLabels && pmFirstRow > row && hours[hourCounter] >= 12 ? html += this._generateHTMLHourCell(inst, void 0, showPeriod, showLeadingZero) : (html += this._generateHTMLHourCell(inst, hours[hourCounter], showPeriod, showLeadingZero), hourCounter++);
html += "</tr>"
}
html += "</table></td>"
}
if (showMinutes && (html += '<td class="ui-timepicker-minutes">', html += this._generateHTMLMinutes(inst), html += "</td>"), html += "</tr>", showButtonPanel) {
var buttonPanel = '<tr><td colspan="3"><div class="ui-timepicker-buttonpane ui-widget-content">';
showNowButton && (buttonPanel += '<button type="button" class="ui-timepicker-now ui-state-default ui-corner-all" data-timepicker-instance-id="#' + inst.id.replace(/\\\\/g, "\\") + '" >' + nowButtonText + "</button>"), showDeselectButton && (buttonPanel += '<button type="button" class="ui-timepicker-deselect ui-state-default ui-corner-all" data-timepicker-instance-id="#' + inst.id.replace(/\\\\/g, "\\") + '" >' + deselectButtonText + "</button>"), showCloseButton && (buttonPanel += '<button type="button" class="ui-timepicker-close ui-state-default ui-corner-all" data-timepicker-instance-id="#' + inst.id.replace(/\\\\/g, "\\") + '" >' + closeButtonText + "</button>"), html += buttonPanel + "</div></td></tr>"
}
return html += "</table>"
},
_updateMinuteDisplay: function(inst) {
var newHtml = this._generateHTMLMinutes(inst);
inst.tpDiv.find("td.ui-timepicker-minutes").html(newHtml), this._rebindDialogEvents(inst)
},
_generateHTMLMinutes: function(inst) {
var m, row, html = "",
rows = this._get(inst, "rows"),
minutes = Array(),
minutes_options = this._get(inst, "minutes"),
minutesPerRow = null,
minuteCounter = 0,
showMinutesLeadingZero = 1 == this._get(inst, "showMinutesLeadingZero"),
onMinuteShow = this._get(inst, "onMinuteShow"),
minuteLabel = this._get(inst, "minuteText");
for (minutes_options.starts || (minutes_options.starts = 0), minutes_options.ends || (minutes_options.ends = 59), minutes_options.manual || (minutes_options.manual = []), m = minutes_options.starts; m <= minutes_options.ends; m += minutes_options.interval) minutes.push(m);
for (i = 0; i < minutes_options.manual.length; i++) {
var currMin = minutes_options.manual[i];
"number" != typeof currMin || 0 > currMin || currMin > 59 || $.inArray(currMin, minutes) >= 0 || minutes.push(currMin)
}
if (minutes.sort(function(a, b) {
return a - b
}), minutesPerRow = Math.round(minutes.length / rows + .49), onMinuteShow && 0 == onMinuteShow.apply(inst.input ? inst.input[0] : null, [inst.hours, inst.minutes]))
for (minuteCounter = 0; minuteCounter < minutes.length; minuteCounter += 1)
if (m = minutes[minuteCounter], onMinuteShow.apply(inst.input ? inst.input[0] : null, [inst.hours, m])) {
inst.minutes = m;
break
}
for (html += '<div class="ui-timepicker-title ui-widget-header ui-helper-clearfix ui-corner-all">' + minuteLabel + '</div><table class="ui-timepicker">', minuteCounter = 0, row = 1; rows >= row; row++) {
for (html += "<tr>"; row * minutesPerRow > minuteCounter;) {
var m = minutes[minuteCounter],
displayText = "";
void 0 !== m && (displayText = 10 > m && showMinutesLeadingZero ? "0" + m.toString() : m.toString()), html += this._generateHTMLMinuteCell(inst, m, displayText), minuteCounter++
}
html += "</tr>"
}
return html += "</table>"
},
_generateHTMLHourCell: function(inst, hour, showPeriod, showLeadingZero) {
var displayHour = hour;
hour > 12 && showPeriod && (displayHour = hour - 12), 0 == displayHour && showPeriod && (displayHour = 12), 10 > displayHour && showLeadingZero && (displayHour = "0" + displayHour);
var html = "",
enabled = !0,
onHourShow = this._get(inst, "onHourShow"),
maxTime = this._get(inst, "maxTime"),
minTime = this._get(inst, "minTime");
return void 0 == hour ? html = '<td><span class="ui-state-default ui-state-disabled"> </span></td>' : (onHourShow && (enabled = onHourShow.apply(inst.input ? inst.input[0] : null, [hour])), enabled && (!isNaN(parseInt(maxTime.hour)) && hour > maxTime.hour && (enabled = !1), !isNaN(parseInt(minTime.hour)) && hour < minTime.hour && (enabled = !1)), html = enabled ? '<td class="ui-timepicker-hour-cell" data-timepicker-instance-id="#' + inst.id.replace(/\\\\/g, "\\") + '" data-hour="' + hour.toString() + '"><a class="ui-state-default ' + (hour == inst.hours ? "ui-state-active" : "") + '">' + displayHour.toString() + "</a></td>" : '<td><span class="ui-state-default ui-state-disabled ' + (hour == inst.hours ? " ui-state-active " : " ") + '">' + displayHour.toString() + "</span></td>")
},
_generateHTMLMinuteCell: function(inst, minute, displayText) {
var html = "",
enabled = !0,
hour = inst.hours,
onMinuteShow = this._get(inst, "onMinuteShow"),
maxTime = this._get(inst, "maxTime"),
minTime = this._get(inst, "minTime");
return onMinuteShow && (enabled = onMinuteShow.apply(inst.input ? inst.input[0] : null, [inst.hours, minute])), void 0 == minute ? html = '<td><span class="ui-state-default ui-state-disabled"> </span></td>' : (enabled && null !== hour && (!isNaN(parseInt(maxTime.hour)) && !isNaN(parseInt(maxTime.minute)) && hour >= maxTime.hour && minute > maxTime.minute && (enabled = !1), !isNaN(parseInt(minTime.hour)) && !isNaN(parseInt(minTime.minute)) && hour <= minTime.hour && minute < minTime.minute && (enabled = !1)), html = enabled ? '<td class="ui-timepicker-minute-cell" data-timepicker-instance-id="#' + inst.id.replace(/\\\\/g, "\\") + '" data-minute="' + minute.toString() + '" ><a class="ui-state-default ' + (minute == inst.minutes ? "ui-state-active" : "") + '" >' + displayText + "</a></td>" : '<td><span class="ui-state-default ui-state-disabled" >' + displayText + "</span></td>")
},
_destroyTimepicker: function(target) {
var $target = $(target),
inst = $.data(target, PROP_NAME);
if ($target.hasClass(this.markerClassName)) {
var nodeName = target.nodeName.toLowerCase();
$.removeData(target, PROP_NAME), "input" == nodeName ? (inst.append.remove(), inst.trigger.remove(), $target.removeClass(this.markerClassName).unbind("focus.timepicker", this._showTimepicker).unbind("click.timepicker", this._adjustZIndex)) : ("div" == nodeName || "span" == nodeName) && $target.removeClass(this.markerClassName).empty()
}
},
_enableTimepicker: function(target) {
var $target = $(target),
target_id = $target.attr("id"),
inst = $.data(target, PROP_NAME);
if ($target.hasClass(this.markerClassName)) {
var nodeName = target.nodeName.toLowerCase();
if ("input" == nodeName) {
target.disabled = !1;
var button = this._get(inst, "button");
$(button).removeClass("ui-state-disabled").disabled = !1, inst.trigger.filter("button").each(function() {
this.disabled = !1
}).end()
} else if ("div" == nodeName || "span" == nodeName) {
var inline = $target.children("." + this._inlineClass);
inline.children().removeClass("ui-state-disabled"), inline.find("button").each(function() {
this.disabled = !1
})
}
this._disabledInputs = $.map(this._disabledInputs, function(value) {
return value == target_id ? null : value
})
}
},
_disableTimepicker: function(target) {
var $target = $(target),
inst = $.data(target, PROP_NAME);
if ($target.hasClass(this.markerClassName)) {
var nodeName = target.nodeName.toLowerCase();
if ("input" == nodeName) {
var button = this._get(inst, "button");
$(button).addClass("ui-state-disabled").disabled = !0, target.disabled = !0, inst.trigger.filter("button").each(function() {
this.disabled = !0
}).end()
} else if ("div" == nodeName || "span" == nodeName) {
var inline = $target.children("." + this._inlineClass);
inline.children().addClass("ui-state-disabled"), inline.find("button").each(function() {
this.disabled = !0
})
}
this._disabledInputs = $.map(this._disabledInputs, function(value) {
return value == target ? null : value
}), this._disabledInputs[this._disabledInputs.length] = $target.attr("id")
}
},
_isDisabledTimepicker: function(target_id) {
if (!target_id) return !1;
for (var i = 0; i < this._disabledInputs.length; i++)
if (this._disabledInputs[i] == target_id) return !0;
return !1
},
_checkOffset: function(inst, offset, isFixed) {
var tpWidth = inst.tpDiv.outerWidth(),
tpHeight = inst.tpDiv.outerHeight(),
inputWidth = inst.input ? inst.input.outerWidth() : 0,
inputHeight = inst.input ? inst.input.outerHeight() : 0,
viewWidth = document.documentElement.clientWidth + $(document).scrollLeft(),
viewHeight = document.documentElement.clientHeight + $(document).scrollTop();
return offset.left -= this._get(inst, "isRTL") ? tpWidth - 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 + tpWidth > viewWidth && viewWidth > tpWidth ? Math.abs(offset.left + tpWidth - viewWidth) : 0), offset.top -= Math.min(offset.top, offset.top + tpHeight > viewHeight && viewHeight > tpHeight ? Math.abs(tpHeight + inputHeight) : 0), offset
},
_findPos: function(obj) {
for (var inst = this._getInst(obj), isRTL = this._get(inst, "isRTL"); obj && ("hidden" == obj.type || 1 != obj.nodeType);) obj = obj[isRTL ? "previousSibling" : "nextSibling"];
var position = $(obj).offset();
return [position.left, position.top]
},
_getBorders: function(elem) {
var convert = function(value) {
return {
thin: 1,
medium: 2,
thick: 3
}[value] || value
};
return [parseFloat(convert(elem.css("border-left-width"))), parseFloat(convert(elem.css("border-top-width")))]
},
_checkExternalClick: function(event) {
if ($.timepicker._curInst) {
var $target = $(event.target);
$target[0].id == $.timepicker._mainDivId || 0 != $target.parents("#" + $.timepicker._mainDivId).length || $target.hasClass($.timepicker.markerClassName) || $target.hasClass($.timepicker._triggerClass) || !$.timepicker._timepickerShowing || $.timepicker._inDialog && $.blockUI || $.timepicker._hideTimepicker()
}
},
_hideTimepicker: function(input) {
var inst = this._curInst;
if (inst && (!input || inst == $.data(input, PROP_NAME)) && this._timepickerShowing) {
var showAnim = this._get(inst, "showAnim"),
duration = this._get(inst, "duration"),
postProcess = function() {
$.timepicker._tidyDialog(inst), this._curInst = null
};
$.effects && $.effects[showAnim] ? inst.tpDiv.hide(showAnim, $.timepicker._get(inst, "showOptions"), duration, postProcess) : inst.tpDiv["slideDown" == showAnim ? "slideUp" : "fadeIn" == showAnim ? "fadeOut" : "hide"](showAnim ? duration : null, postProcess), showAnim || postProcess(), this._timepickerShowing = !1, this._lastInput = null, this._inDialog && (this._dialogInput.css({
position: "absolute",
left: "0",
top: "-100px"
}), $.blockUI && ($.unblockUI(), $("body").append(this.tpDiv))), this._inDialog = !1;
var onClose = this._get(inst, "onClose");
onClose && onClose.apply(inst.input ? inst.input[0] : null, [inst.input ? inst.input.val() : "", inst])
}
},
_tidyDialog: function(inst) {
inst.tpDiv.removeClass(this._dialogClass).unbind(".ui-timepicker")
},
_getInst: function(target) {
try {
return $.data(target, PROP_NAME)
} catch (err) {
throw "Missing instance data for this timepicker"
}
},
_get: function(inst, name) {
return void 0 !== inst.settings[name] ? inst.settings[name] : this._defaults[name]
},
_setTimeFromField: function(inst) {
if (inst.input.val() != inst.lastVal) {
var defaultTime = this._get(inst, "defaultTime"),
timeToParse = "now" == defaultTime ? this._getCurrentTimeRounded(inst) : defaultTime;
if (0 == inst.inline && "" != inst.input.val() && (timeToParse = inst.input.val()), timeToParse instanceof Date) inst.hours = timeToParse.getHours(), inst.minutes = timeToParse.getMinutes();
else {
var timeVal = inst.lastVal = timeToParse;
if ("" == timeToParse) inst.hours = -1, inst.minutes = -1;
else {
var time = this.parseTime(inst, timeVal);
inst.hours = time.hours, inst.minutes = time.minutes
}
}
$.timepicker._updateTimepicker(inst)
}
},
_optionTimepicker: function(target, name, value) {
var inst = this._getInst(target);
if (2 == arguments.length && "string" == typeof name) return "defaults" == name ? $.extend({}, $.timepicker._defaults) : inst ? "all" == name ? $.extend({}, inst.settings) : this._get(inst, name) : null;
var settings = name || {};
"string" == typeof name && (settings = {}, settings[name] = value), inst && (extendRemove(inst.settings, settings), this._curInst == inst && (this._hideTimepicker(), this._updateTimepicker(inst)), inst.inline && this._updateTimepicker(inst))
},
_setTimeTimepicker: function(target, time) {
var inst = this._getInst(target);
inst && (this._setTime(inst, time), this._updateTimepicker(inst), this._updateAlternate(inst, time))
},
_setTime: function(inst, time, noChange) {
var origHours = inst.hours,
origMinutes = inst.minutes;
if (time instanceof Date) inst.hours = time.getHours(), inst.minutes = time.getMinutes();
else {
var time = this.parseTime(inst, time);
inst.hours = time.hours, inst.minutes = time.minutes
}
origHours == inst.hours && origMinutes == inst.minutes || noChange || inst.input.trigger("change"), this._updateTimepicker(inst), this._updateSelectedValue(inst)
},
_getCurrentTimeRounded: function(inst) {
var currentTime = new Date,
currentMinutes = currentTime.getMinutes(),
minutes_options = this._get(inst, "minutes"),
adjustedMinutes = Math.round(currentMinutes / minutes_options.interval) * minutes_options.interval;
return currentTime.setMinutes(adjustedMinutes), currentTime
},
parseTime: function(inst, timeVal) {
var retVal = new Object;
if (retVal.hours = -1, retVal.minutes = -1, !timeVal) return "";
var timeSeparator = this._get(inst, "timeSeparator"),
amPmText = this._get(inst, "amPmText"),
showHours = this._get(inst, "showHours"),
showMinutes = this._get(inst, "showMinutes"),
optionalMinutes = this._get(inst, "optionalMinutes"),
showPeriod = 1 == this._get(inst, "showPeriod"),
p = timeVal.indexOf(timeSeparator);
if (-1 != p ? (retVal.hours = parseInt(timeVal.substr(0, p), 10), retVal.minutes = parseInt(timeVal.substr(p + 1), 10)) : !showHours || showMinutes && !optionalMinutes ? !showHours && showMinutes && (retVal.minutes = parseInt(timeVal, 10)) : retVal.hours = parseInt(timeVal, 10), showHours) {
var timeValUpper = timeVal.toUpperCase();
retVal.hours < 12 && showPeriod && -1 != timeValUpper.indexOf(amPmText[1].toUpperCase()) && (retVal.hours += 12), 12 == retVal.hours && showPeriod && -1 != timeValUpper.indexOf(amPmText[0].toUpperCase()) && (retVal.hours = 0)
}
return retVal
},
selectNow: function(event) {
var id = $(event.target).attr("data-timepicker-instance-id"),
$target = $(id),
inst = this._getInst($target[0]),
currentTime = new Date;
inst.hours = currentTime.getHours(), inst.minutes = currentTime.getMinutes(), this._updateSelectedValue(inst), this._updateTimepicker(inst), this._hideTimepicker()
},
deselectTime: function(event) {
var id = $(event.target).attr("data-timepicker-instance-id"),
$target = $(id),
inst = this._getInst($target[0]);
inst.hours = -1, inst.minutes = -1, this._updateSelectedValue(inst), this._hideTimepicker()
},
selectHours: function(event) {
var $td = $(event.currentTarget),
id = $td.attr("data-timepicker-instance-id"),
newHours = parseInt($td.attr("data-hour")),
fromDoubleClick = event.data.fromDoubleClick,
$target = $(id),
inst = this._getInst($target[0]),
showMinutes = 1 == this._get(inst, "showMinutes");
if ($.timepicker._isDisabledTimepicker($target.attr("id"))) return !1;
$td.parents(".ui-timepicker-hours:first").find("a").removeClass("ui-state-active"), $td.children("a").addClass("ui-state-active"), inst.hours = newHours;
var onMinuteShow = this._get(inst, "onMinuteShow"),
maxTime = this._get(inst, "maxTime"),
minTime = this._get(inst, "minTime");
return !onMinuteShow && isNaN(parseInt(maxTime.minute)) && isNaN(parseInt(minTime.minute)) || this._updateMinuteDisplay(inst), this._updateSelectedValue(inst), inst._hoursClicked = !0, (inst._minutesClicked || fromDoubleClick || 0 == showMinutes) && $.timepicker._hideTimepicker(), !1
},
selectMinutes: function(event) {
var $td = $(event.currentTarget),
id = $td.attr("data-timepicker-instance-id"),
newMinutes = parseInt($td.attr("data-minute")),
fromDoubleClick = event.data.fromDoubleClick,
$target = $(id),
inst = this._getInst($target[0]),
showHours = 1 == this._get(inst, "showHours");
return $.timepicker._isDisabledTimepicker($target.attr("id")) ? !1 : ($td.parents(".ui-timepicker-minutes:first").find("a").removeClass("ui-state-active"), $td.children("a").addClass("ui-state-active"), inst.minutes = newMinutes, this._updateSelectedValue(inst), inst._minutesClicked = !0, inst._hoursClicked || fromDoubleClick || 0 == showHours ? ($.timepicker._hideTimepicker(), !1) : !1)
},
_updateSelectedValue: function(inst) {
var newTime = this._getParsedTime(inst);
inst.input && (inst.input.val(newTime), inst.input.trigger("change"));
var onSelect = this._get(inst, "onSelect");
return onSelect && onSelect.apply(inst.input ? inst.input[0] : null, [newTime, inst]), this._updateAlternate(inst, newTime), newTime
},
_getParsedTime: function(inst) {
if (-1 == inst.hours && -1 == inst.minutes) return "";
(inst.hours < inst.hours.starts || inst.hours > inst.hours.ends) && (inst.hours = 0), (inst.minutes < inst.minutes.starts || inst.minutes > inst.minutes.ends) && (inst.minutes = 0);
var period = "",
showPeriod = 1 == this._get(inst, "showPeriod"),
showLeadingZero = 1 == this._get(inst, "showLeadingZero"),
showHours = 1 == this._get(inst, "showHours"),
showMinutes = 1 == this._get(inst, "showMinutes"),
optionalMinutes = 1 == this._get(inst, "optionalMinutes"),
amPmText = this._get(inst, "amPmText"),
selectedHours = inst.hours ? inst.hours : 0,
selectedMinutes = inst.minutes ? inst.minutes : 0,
displayHours = selectedHours ? selectedHours : 0,
parsedTime = ""; - 1 == displayHours && (displayHours = 0), -1 == selectedMinutes && (selectedMinutes = 0), showPeriod && (0 == inst.hours && (displayHours = 12), inst.hours < 12 ? period = amPmText[0] : (period = amPmText[1], displayHours > 12 && (displayHours -= 12)));
var h = displayHours.toString();
showLeadingZero && 10 > displayHours && (h = "0" + h);
var m = selectedMinutes.toString();
return 10 > selectedMinutes && (m = "0" + m), showHours && (parsedTime += h), !showHours || !showMinutes || optionalMinutes && 0 == m || (parsedTime += this._get(inst, "timeSeparator")), !showMinutes || optionalMinutes && 0 == m || (parsedTime += m), showHours && period.length > 0 && (parsedTime += this._get(inst, "periodSeparator") + period), parsedTime
},
_updateAlternate: function(inst, newTime) {
var altField = this._get(inst, "altField");
altField && $(altField).each(function(i, e) {
$(e).val(newTime)
})
},
_getTimeAsDateTimepicker: function(input) {
var inst = this._getInst(input);
return -1 == inst.hours && -1 == inst.minutes ? "" : ((inst.hours < inst.hours.starts || inst.hours > inst.hours.ends) && (inst.hours = 0), (inst.minutes < inst.minutes.starts || inst.minutes > inst.minutes.ends) && (inst.minutes = 0), new Date(0, 0, 0, inst.hours, inst.minutes, 0))
},
_getTimeTimepicker: function(input) {
var inst = this._getInst(input);
return this._getParsedTime(inst)
},
_getHourTimepicker: function(input) {
var inst = this._getInst(input);
return void 0 == inst ? -1 : inst.hours
},
_getMinuteTimepicker: function(input) {
var inst = this._getInst(input);
return void 0 == inst ? -1 : inst.minutes
}
}), $.fn.timepicker = function(options) {
$.timepicker.initialized || ($(document).mousedown($.timepicker._checkExternalClick), $.timepicker.initialized = !0), 0 === $("#" + $.timepicker._mainDivId).length && $("body").append($.timepicker.tpDiv);
var otherArgs = Array.prototype.slice.call(arguments, 1);
return "string" != typeof options || "getTime" != options && "getTimeAsDate" != options && "getHour" != options && "getMinute" != options ? "option" == options && 2 == arguments.length && "string" == typeof arguments[1] ? $.timepicker["_" + options + "Timepicker"].apply($.timepicker, [this[0]].concat(otherArgs)) : this.each(function() {
"string" == typeof options ? $.timepicker["_" + options + "Timepicker"].apply($.timepicker, [this].concat(otherArgs)) : $.timepicker._attachTimepicker(this, options)
}) : $.timepicker["_" + options + "Timepicker"].apply($.timepicker, [this[0]].concat(otherArgs))
}, $.timepicker = new Timepicker, $.timepicker.initialized = !1, $.timepicker.uuid = (new Date).getTime(), $.timepicker.version = "0.3.3", window["TP_jQuery_" + tpuuid] = $
}(jQuery),
function(factory) {
"object" == typeof exports && exports && "object" == typeof module && module && module.exports === exports ? factory(require("jquery")) : "function" == typeof define && define.amd ? define(["jquery"], factory) : factory(jQuery)
}(function($) {
function _isVisible(elem) {
var el = elem[0];
return el.offsetWidth > 0 && el.offsetHeight > 0
}
function _parseSettings(settings) {
if (settings.minTime && (settings.minTime = _time2int(settings.minTime)), settings.maxTime && (settings.maxTime = _time2int(settings.maxTime)), settings.durationTime && "function" != typeof settings.durationTime && (settings.durationTime = _time2int(settings.durationTime)), "now" == settings.scrollDefault ? settings.scrollDefault = _time2int(new Date) : settings.scrollDefault ? settings.scrollDefault = _time2int(settings.scrollDefault) : settings.minTime && (settings.scrollDefault = settings.minTime), settings.scrollDefault && (settings.scrollDefault = _roundTime(settings.scrollDefault, settings)), "string" === $.type(settings.timeFormat) && settings.timeFormat.match(/[gh]/) && (settings._twelveHourTime = !0), settings.disableTimeRanges.length > 0) {
for (var i in settings.disableTimeRanges) settings.disableTimeRanges[i] = [_time2int(settings.disableTimeRanges[i][0]), _time2int(settings.disableTimeRanges[i][1])];
settings.disableTimeRanges = settings.disableTimeRanges.sort(function(a, b) {
return a[0] - b[0]
});
for (var i = settings.disableTimeRanges.length - 1; i > 0; i--) settings.disableTimeRanges[i][0] <= settings.disableTimeRanges[i - 1][1] && (settings.disableTimeRanges[i - 1] = [Math.min(settings.disableTimeRanges[i][0], settings.disableTimeRanges[i - 1][0]), Math.max(settings.disableTimeRanges[i][1], settings.disableTimeRanges[i - 1][1])], settings.disableTimeRanges.splice(i, 1))
}
return settings
}
function _render(self) {
var settings = self.data("timepicker-settings"),
list = self.data("timepicker-list");
if (list && list.length && (list.remove(), self.data("timepicker-list", !1)), settings.useSelect) {
list = $("<select />", {
"class": "ui-timepicker-select"
});
var wrapped_list = list
} else {
list = $("<ul />", {
"class": "ui-timepicker-list"
});
var wrapped_list = $("<div />", {
"class": "ui-timepicker-wrapper",
tabindex: -1
});
wrapped_list.css({
display: "none",
position: "absolute"
}).append(list)
} if (settings.noneOption)
if (settings.noneOption === !0 && (settings.noneOption = settings.useSelect ? "Time..." : "None"), $.isArray(settings.noneOption)) {
for (var i in settings.noneOption)
if (parseInt(i, 10) == i) {
var noneElement = _generateNoneElement(settings.noneOption[i], settings.useSelect);
list.append(noneElement)
}
} else {
var noneElement = _generateNoneElement(settings.noneOption, settings.useSelect);
list.append(noneElement)
}
settings.className && wrapped_list.addClass(settings.className), null === settings.minTime && null === settings.durationTime || !settings.showDuration || (wrapped_list.addClass("ui-timepicker-with-duration"), wrapped_list.addClass("ui-timepicker-step-" + settings.step));
var durStart = settings.minTime;
"function" == typeof settings.durationTime ? durStart = _time2int(settings.durationTime()) : null !== settings.durationTime && (durStart = settings.durationTime);
var start = null !== settings.minTime ? settings.minTime : 0,
end = null !== settings.maxTime ? settings.maxTime : start + _ONE_DAY - 1;
start >= end && (end += _ONE_DAY), end === _ONE_DAY - 1 && "string" === $.type(settings.timeFormat) && -1 !== settings.timeFormat.indexOf("H") && (end = _ONE_DAY);
for (var dr = settings.disableTimeRanges, drCur = 0, drLen = dr.length, i = start; end >= i; i += 60 * settings.step) {
var timeInt = i,
timeString = _int2time(timeInt, settings.timeFormat);
if (settings.useSelect) {
var row = $("<option />", {
value: timeString
});
row.text(timeString)
} else {
var row = $("<li />");
row.data("time", 86400 >= timeInt ? timeInt : timeInt % 86400), row.text(timeString)
} if ((null !== settings.minTime || null !== settings.durationTime) && settings.showDuration) {
var durationString = _int2duration(i - durStart, settings.step);
if (settings.useSelect) row.text(row.text() + " (" + durationString + ")");
else {
var duration = $("<span />", {
"class": "ui-timepicker-duration"
});
duration.text(" (" + durationString + ")"), row.append(duration)
}
}
drLen > drCur && (timeInt >= dr[drCur][1] && (drCur += 1), dr[drCur] && timeInt >= dr[drCur][0] && timeInt < dr[drCur][1] && (settings.useSelect ? row.prop("disabled", !0) : row.addClass("ui-timepicker-disabled"))), list.append(row)
}
if (wrapped_list.data("timepicker-input", self), self.data("timepicker-list", wrapped_list), settings.useSelect) self.val() && list.val(_roundAndFormatTime(self.val(), settings)), list.on("focus", function() {
$(this).data("timepicker-input").trigger("showTimepicker")
}), list.on("blur", function() {
$(this).data("timepicker-input").trigger("hideTimepicker")
}), list.on("change", function() {
_setTimeValue(self, $(this).val(), "select")
}), _setTimeValue(self, list.val()), self.hide().after(list);
else {
var appendTo = settings.appendTo;
"string" == typeof appendTo ? appendTo = $(appendTo) : "function" == typeof appendTo && (appendTo = appendTo(self)), appendTo.append(wrapped_list), _setSelected(self, list), list.on("mousedown", "li", function() {
self.off("focus.timepicker"), self.on("focus.timepicker-ie-hack", function() {
self.off("focus.timepicker-ie-hack"), self.on("focus.timepicker", methods.show)
}), _hideKeyboard(self) || self[0].focus(), list.find("li").removeClass("ui-timepicker-selected"), $(this).addClass("ui-timepicker-selected"), _selectValue(self) && (self.trigger("hideTimepicker"), wrapped_list.hide())
})
}
}
function _generateNoneElement(optionValue, useSelect) {
var label, className, value;
return "object" == typeof optionValue ? (label = optionValue.label, className = optionValue.className, value = optionValue.value) : "string" == typeof optionValue ? label = optionValue : $.error("Invalid noneOption value"), useSelect ? $("<option />", {
value: value,
"class": className,
text: label
}) : $("<li />", {
"class": className,
text: label
}).data("time", value)
}
function _roundTime(seconds, settings) {
if ($.isNumeric(seconds) || (seconds = _time2int(seconds)), null === seconds) return null;
var offset = seconds % (60 * settings.step);
return offset >= 30 * settings.step ? seconds += 60 * settings.step - offset : seconds -= offset, seconds
}
function _roundAndFormatTime(seconds, settings) {
return seconds = _roundTime(seconds, settings), null !== seconds ? _int2time(seconds, settings.timeFormat) : void 0
}
function _generateBaseDate() {
return new Date(1970, 1, 1, 0, 0, 0)
}
function _closeHandler(e) {
var target = $(e.target),
input = target.closest(".ui-timepicker-input");
0 === input.length && 0 === target.closest(".ui-timepicker-wrapper").length && (methods.hide(), $(document).unbind(".ui-timepicker"))
}
function _hideKeyboard(self) {
var settings = self.data("timepicker-settings");
return (window.navigator.msMaxTouchPoints || "ontouchstart" in document) && settings.disableTouchKeyboard
}
function _findRow(self, list, value) {
if (!value && 0 !== value) return !1;
var settings = self.data("timepicker-settings"),
out = !1,
halfStep = 30 * settings.step;
return list.find("li").each(function(i, obj) {
var jObj = $(obj);
if ("number" == typeof jObj.data("time")) {
var offset = jObj.data("time") - value;
return Math.abs(offset) < halfStep || offset == halfStep ? (out = jObj, !1) : void 0
}
}), out
}
function _setSelected(self, list) {
list.find("li").removeClass("ui-timepicker-selected");
var timeValue = _time2int(_getTimeValue(self), self.data("timepicker-settings"));
if (null !== timeValue) {
var selected = _findRow(self, list, timeValue);
if (selected) {
var topDelta = selected.offset().top - list.offset().top;
(topDelta + selected.outerHeight() > list.outerHeight() || 0 > topDelta) && list.scrollTop(list.scrollTop() + selected.position().top - selected.outerHeight()), selected.addClass("ui-timepicker-selected")
}
}
}
function _formatValue(e, origin) {
if ("" !== this.value && "timepicker" != origin) {
{
var self = $(this);
self.data("timepicker-list")
}
if (!self.is(":focus") || e && "change" == e.type) {
var seconds = _time2int(this.value);
if (null === seconds) return void self.trigger("timeFormatError");
var settings = self.data("timepicker-settings"),
rangeError = !1;
if (null !== settings.minTime && seconds < settings.minTime ? rangeError = !0 : null !== settings.maxTime && seconds > settings.maxTime && (rangeError = !0), $.each(settings.disableTimeRanges, function() {
return seconds >= this[0] && seconds < this[1] ? (rangeError = !0, !1) : void 0
}), settings.forceRoundTime) {
var offset = seconds % (60 * settings.step);
offset >= 30 * settings.step ? seconds += 60 * settings.step - offset : seconds -= offset
}
var prettyTime = _int2time(seconds, settings.timeFormat);
rangeError ? _setTimeValue(self, prettyTime, "error") && self.trigger("timeRangeError") : _setTimeValue(self, prettyTime)
}
}
}
function _getTimeValue(self) {
return self.is("input") ? self.val() : self.data("ui-timepicker-value")
}
function _setTimeValue(self, value, source) {
if (self.is("input")) {
self.val(value);
var settings = self.data("timepicker-settings");
settings.useSelect && "select" != source && self.data("timepicker-list").val(_roundAndFormatTime(value, settings))
}
return self.data("ui-timepicker-value") != value ? (self.data("ui-timepicker-value", value), "select" == source ? self.trigger("selectTime").trigger("changeTime").trigger("change", "timepicker") : "error" != source && self.trigger("changeTime"), !0) : (self.trigger("selectTime"), !1)
}
function _keydownhandler(e) {
var self = $(this),
list = self.data("timepicker-list");
if (!list || !_isVisible(list)) {
if (40 != e.keyCode) return !0;
methods.show.call(self.get(0)), list = self.data("timepicker-list"), _hideKeyboard(self) || self.focus()
}
switch (e.keyCode) {
case 13:
return _selectValue(self) && methods.hide.apply(this), e.preventDefault(), !1;
case 38:
var selected = list.find(".ui-timepicker-selected");
return selected.length ? selected.is(":first-child") || (selected.removeClass("ui-timepicker-selected"), selected.prev().addClass("ui-timepicker-selected"), selected.prev().position().top < selected.outerHeight() && list.scrollTop(list.scrollTop() - selected.outerHeight())) : (list.find("li").each(function(i, obj) {
return $(obj).position().top > 0 ? (selected = $(obj), !1) : void 0
}), selected.addClass("ui-timepicker-selected")), !1;
case 40:
return selected = list.find(".ui-timepicker-selected"), 0 === selected.length ? (list.find("li").each(function(i, obj) {
return $(obj).position().top > 0 ? (selected = $(obj), !1) : void 0
}), selected.addClass("ui-timepicker-selected")) : selected.is(":last-child") || (selected.removeClass("ui-timepicker-selected"), selected.next().addClass("ui-timepicker-selected"), selected.next().position().top + 2 * selected.outerHeight() > list.outerHeight() && list.scrollTop(list.scrollTop() + selected.outerHeight())), !1;
case 27:
list.find("li").removeClass("ui-timepicker-selected"), methods.hide();
break;
case 9:
methods.hide();
break;
default:
return !0
}
}
function _keyuphandler(e) {
var self = $(this),
list = self.data("timepicker-list");
if (!list || !_isVisible(list)) return !0;
if (!self.data("timepicker-settings").typeaheadHighlight) return list.find("li").removeClass("ui-timepicker-selected"), !0;
switch (e.keyCode) {
case 96:
case 97:
case 98:
case 99:
case 100:
case 101:
case 102:
case 103:
case 104:
case 105:
case 48:
case 49:
case 50:
case 51:
case 52:
case 53:
case 54:
case 55:
case 56:
case 57:
case 65:
case 77:
case 80:
case 186:
case 8:
case 46:
_setSelected(self, list);
break;
default:
return
}
}
function _selectValue(self) {
var settings = self.data("timepicker-settings"),
list = self.data("timepicker-list"),
timeValue = null,
cursor = list.find(".ui-timepicker-selected");
if (cursor.hasClass("ui-timepicker-disabled")) return !1;
if (cursor.length && (timeValue = cursor.data("time")), null !== timeValue)
if ("string" == typeof timeValue) self.val(timeValue);
else {
var timeString = _int2time(timeValue, settings.timeFormat);
_setTimeValue(self, timeString, "select")
}
return !0
}
function _int2duration(seconds, step) {
seconds = Math.abs(seconds);
var hours, mins, minutes = Math.round(seconds / 60),
duration = [];
return 60 > minutes ? duration = [minutes, _lang.mins] : (hours = Math.floor(minutes / 60), mins = minutes % 60, 30 == step && 30 == mins && (hours += _lang.decimal + 5), duration.push(hours), duration.push(1 == hours ? _lang.hr : _lang.hrs), 30 != step && mins && (duration.push(mins), duration.push(_lang.mins))), duration.join(" ")
}
function _int2time(seconds, format) {
if (null !== seconds) {
var time = new Date(_baseDate.valueOf() + 1e3 * seconds);
if (!isNaN(time.getTime())) {
if ("function" === $.type(format)) return format(time);
for (var hour, code, output = "", i = 0; i < format.length; i++) switch (code = format.charAt(i)) {
case "a":
output += time.getHours() > 11 ? _lang.pm : _lang.am;
break;
case "A":
output += time.getHours() > 11 ? _lang.pm.toUpperCase() : _lang.am.toUpperCase();
break;
case "g":
hour = time.getHours() % 12, output += 0 === hour ? "12" : hour;
break;
case "G":
output += time.getHours();
break;
case "h":
hour = time.getHours() % 12, 0 !== hour && 10 > hour && (hour = "0" + hour), output += 0 === hour ? "12" : hour;
break;
case "H":
hour = time.getHours(), seconds === _ONE_DAY && (hour = 24), output += hour > 9 ? hour : "0" + hour;
break;
case "i":
var minutes = time.getMinutes();
output += minutes > 9 ? minutes : "0" + minutes;
break;
case "s":
seconds = time.getSeconds(), output += seconds > 9 ? seconds : "0" + seconds;
break;
case "\\":
i++, output += format.charAt(i);
break;
default:
output += code
}
return output
}
}
}
function _time2int(timeString, settings) {
if ("" === timeString) return null;
if (!timeString || timeString + 0 == timeString) return timeString;
if ("object" == typeof timeString) return 3600 * timeString.getHours() + 60 * timeString.getMinutes() + timeString.getSeconds();
timeString = timeString.toLowerCase(), ("a" == timeString.slice(-1) || "p" == timeString.slice(-1)) && (timeString += "m");
var pattern = new RegExp("^([0-2]?[0-9])\\W?([0-5][0-9])?\\W?([0-5][0-9])?\\s*(" + _lang.am + "|" + _lang.pm + ")?$"),
time = timeString.match(pattern);
if (!time) return null;
var hour = parseInt(1 * time[1], 10),
ampm = time[4],
hours = hour;
12 >= hour && ampm && (hours = 12 == hour ? time[4] == _lang.pm ? 12 : 0 : hour + (time[4] == _lang.pm ? 12 : 0));
var minutes = 1 * time[2] || 0,
seconds = 1 * time[3] || 0,
timeInt = 3600 * hours + 60 * minutes + seconds;
if (!ampm && settings && settings._twelveHourTime && settings.scrollDefault) {
var delta = timeInt - settings.scrollDefault;
0 > delta && delta >= _ONE_DAY / -2 && (timeInt = (timeInt + _ONE_DAY / 2) % _ONE_DAY)
}
return timeInt
}
var _baseDate = _generateBaseDate(),
_ONE_DAY = 86400,
_lang = {
am: "am",
pm: "pm",
AM: "AM",
PM: "PM",
decimal: ".",
mins: "mins",
hr: "hr",
hrs: "hrs"
}, methods = {
init: function(options) {
return this.each(function() {
var self = $(this),
attributeOptions = [];
for (var key in $.fn.timepicker.defaults) self.data(key) && (attributeOptions[key] = self.data(key));
var settings = $.extend({}, $.fn.timepicker.defaults, attributeOptions, options);
settings.lang && (_lang = $.extend(_lang, settings.lang)), settings = _parseSettings(settings), self.data("timepicker-settings", settings), self.addClass("ui-timepicker-input"), settings.useSelect ? _render(self) : (self.prop("autocomplete", "off"), self.on("click.timepicker focus.timepicker", methods.show), self.on("change.timepicker", _formatValue), self.on("keydown.timepicker", _keydownhandler), self.on("keyup.timepicker", _keyuphandler), _formatValue.call(self.get(0)))
})
},
show: function(e) {
var self = $(this),
settings = self.data("timepicker-settings");
if (e) {
if (!settings.showOnFocus) return !0;
e.preventDefault()
}
if (settings.useSelect) return void self.data("timepicker-list").focus();
_hideKeyboard(self) && self.blur();
var list = self.data("timepicker-list");
if (!self.prop("readonly") && (list && 0 !== list.length && "function" != typeof settings.durationTime || (_render(self), list = self.data("timepicker-list")), !_isVisible(list))) {
methods.hide(), list.show();
var listOffset = {};
listOffset.left = "rtl" == settings.orientation ? self.offset().left + self.outerWidth() - list.outerWidth() + parseInt(list.css("marginLeft").replace("px", ""), 10) : self.offset().left + parseInt(list.css("marginLeft").replace("px", ""), 10), listOffset.top = self.offset().top + self.outerHeight(!0) + list.outerHeight() > $(window).height() + $(window).scrollTop() ? self.offset().top - list.outerHeight() + parseInt(list.css("marginTop").replace("px", ""), 10) : self.offset().top + self.outerHeight() + parseInt(list.css("marginTop").replace("px", ""), 10), list.offset(listOffset);
var selected = list.find(".ui-timepicker-selected");
if (selected.length || (_getTimeValue(self) ? selected = _findRow(self, list, _time2int(_getTimeValue(self))) : settings.scrollDefault && (selected = _findRow(self, list, settings.scrollDefault))), selected && selected.length) {
var topOffset = list.scrollTop() + selected.position().top - selected.outerHeight();
list.scrollTop(topOffset)
} else list.scrollTop(0);
return $(document).on("touchstart.ui-timepicker mousedown.ui-timepicker", _closeHandler), settings.closeOnWindowScroll && $(document).on("scroll.ui-timepicker", _closeHandler), self.trigger("showTimepicker"), this
}
},
hide: function() {
var self = $(this),
settings = self.data("timepicker-settings");
return settings && settings.useSelect && self.blur(), $(".ui-timepicker-wrapper").each(function() {
var list = $(this);
if (_isVisible(list)) {
var self = list.data("timepicker-input"),
settings = self.data("timepicker-settings");
settings && settings.selectOnBlur && _selectValue(self), list.hide(), self.trigger("hideTimepicker")
}
}), this
},
option: function(key, value) {
return this.each(function() {
var self = $(this),
settings = self.data("timepicker-settings"),
list = self.data("timepicker-list");
if ("object" == typeof key) settings = $.extend(settings, key);
else if ("string" == typeof key && "undefined" != typeof value) settings[key] = value;
else if ("string" == typeof key) return settings[key];
settings = _parseSettings(settings), self.data("timepicker-settings", settings), list && (list.remove(), self.data("timepicker-list", !1)), settings.useSelect && _render(self)
})
},
getSecondsFromMidnight: function() {
return _time2int(_getTimeValue(this))
},
getTime: function(relative_date) {
var self = this,
time_string = _getTimeValue(self);
if (!time_string) return null;
relative_date || (relative_date = new Date);
var offset = _time2int(time_string),
time = new Date(relative_date);
return time.setHours(offset / 3600), time.setMinutes(offset % 3600 / 60), time.setSeconds(offset % 60), time.setMilliseconds(0), time
},
setTime: function(value) {
var self = this,
settings = self.data("timepicker-settings");
if (settings.forceRoundTime) var prettyTime = _roundAndFormatTime(value, settings);
else var prettyTime = _int2time(_time2int(value), settings.timeFormat);
return _setTimeValue(self, prettyTime), self.data("timepicker-list") && _setSelected(self, self.data("timepicker-list")), this
},
remove: function() {
var self = this;
if (self.hasClass("ui-timepicker-input")) {
var settings = self.data("timepicker-settings");
return self.removeAttr("autocomplete", "off"), self.removeClass("ui-timepicker-input"), self.removeData("timepicker-settings"), self.off(".timepicker"), self.data("timepicker-list") && self.data("timepicker-list").remove(), settings.useSelect && self.show(), self.removeData("timepicker-list"), this
}
}
};
$.fn.timepicker = function(method) {
return this.length ? methods[method] ? this.hasClass("ui-timepicker-input") ? methods[method].apply(this, Array.prototype.slice.call(arguments, 1)) : this : "object" != typeof method && method ? void $.error("Method " + method + " does not exist on jQuery.timepicker") : methods.init.apply(this, arguments) : this
}, $.fn.timepicker.defaults = {
className: null,
minTime: null,
maxTime: null,
durationTime: null,
step: 30,
showDuration: !1,
showOnFocus: !0,
timeFormat: "g:ia",
scrollDefault: null,
selectOnBlur: !1,
disableTouchKeyboard: !1,
forceRoundTime: !1,
appendTo: "body",
orientation: "ltr",
disableTimeRanges: [],
closeOnWindowScroll: !1,
typeaheadHighlight: !0,
noneOption: !1
}
}),
function($) {
$.fn.tipTip = function(options) {
var defaults = {
activation: "hover",
keepAlive: !1,
maxWidth: "200px",
edgeOffset: 3,
defaultPosition: "bottom",
delay: 400,
fadeIn: 200,
fadeOut: 200,
attribute: "title",
content: !1,
enter: function() {},
exit: function() {}
}, opts = $.extend(defaults, options);
if ($("#tiptip_holder").length <= 0) {
var tiptip_holder = $('<div id="tiptip_holder" style="max-width:' + opts.maxWidth + ';"></div>'),
tiptip_content = $('<div id="tiptip_content"></div>'),
tiptip_arrow = $('<div id="tiptip_arrow"></div>');
$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))
} else var tiptip_holder = $("#tiptip_holder"),
tiptip_content = $("#tiptip_content"), tiptip_arrow = $("#tiptip_arrow");
return this.each(function() {
function active_tiptip() {
opts.enter.call(this), tiptip_content.html(org_title), tiptip_holder.hide().removeAttr("class").css("margin", "0"), tiptip_arrow.removeAttr("style");
var top = parseInt(org_elem.offset().top),
left = parseInt(org_elem.offset().left),
org_width = parseInt(org_elem.outerWidth()),
org_height = parseInt(org_elem.outerHeight()),
tip_w = tiptip_holder.outerWidth(),
tip_h = tiptip_holder.outerHeight(),
w_compare = Math.round((org_width - tip_w) / 2),
h_compare = Math.round((org_height - tip_h) / 2),
marg_left = Math.round(left + w_compare),
marg_top = Math.round(top + org_height + opts.edgeOffset),
t_class = "",
arrow_top = "",
arrow_left = Math.round(tip_w - 12) / 2;
"bottom" == opts.defaultPosition ? t_class = "_bottom" : "top" == opts.defaultPosition ? t_class = "_top" : "left" == opts.defaultPosition ? t_class = "_left" : "right" == opts.defaultPosition && (t_class = "_right");
var right_compare = w_compare + left < parseInt($(window).scrollLeft()),
left_compare = tip_w + left > parseInt($(window).width());
right_compare && 0 > w_compare || "_right" == t_class && !left_compare || "_left" == t_class && left < tip_w + opts.edgeOffset + 5 ? (t_class = "_right", arrow_top = Math.round(tip_h - 13) / 2, arrow_left = -12, marg_left = Math.round(left + org_width + opts.edgeOffset), marg_top = Math.round(top + h_compare)) : (left_compare && 0 > w_compare || "_left" == t_class && !right_compare) && (t_class = "_left", arrow_top = Math.round(tip_h - 13) / 2, arrow_left = Math.round(tip_w), marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5)), marg_top = Math.round(top + h_compare));
var top_compare = top + org_height + opts.edgeOffset + tip_h + 8 > parseInt($(window).height() + $(window).scrollTop()),
bottom_compare = top + org_height - (opts.edgeOffset + tip_h + 8) < 0;
top_compare || "_bottom" == t_class && top_compare || "_top" == t_class && !bottom_compare ? ("_top" == t_class || "_bottom" == t_class ? t_class = "_top" : t_class += "_top", arrow_top = tip_h, marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset))) : (bottom_compare | ("_top" == t_class && bottom_compare) || "_bottom" == t_class && !top_compare) && ("_top" == t_class || "_bottom" == t_class ? t_class = "_bottom" : t_class += "_bottom", arrow_top = -12, marg_top = Math.round(top + org_height + opts.edgeOffset)), "_right_top" == t_class || "_left_top" == t_class ? marg_top += 5 : ("_right_bottom" == t_class || "_left_bottom" == t_class) && (marg_top -= 5), ("_left_top" == t_class || "_left_bottom" == t_class) && (marg_left += 5), tiptip_arrow.css({
"margin-left": arrow_left + "px",
"margin-top": arrow_top + "px"
}), tiptip_holder.css({
"margin-left": marg_left + "px",
"margin-top": marg_top + "px"
}).attr("class", "tip" + t_class), timeout && clearTimeout(timeout), timeout = setTimeout(function() {
tiptip_holder.stop(!0, !0).fadeIn(opts.fadeIn)
}, opts.delay)
}
function deactive_tiptip() {
opts.exit.call(this), timeout && clearTimeout(timeout), tiptip_holder.fadeOut(opts.fadeOut)
}
var org_elem = $(this);
if (opts.content) var org_title = opts.content;
else var org_title = org_elem.attr(opts.attribute); if ("" != org_title) {
opts.content || org_elem.removeAttr(opts.attribute);
var timeout = !1;
"hover" == opts.activation ? (org_elem.hover(function() {
active_tiptip()
}, function() {
opts.keepAlive || deactive_tiptip()
}), opts.keepAlive && tiptip_holder.hover(function() {}, function() {
deactive_tiptip()
})) : "focus" == opts.activation ? org_elem.focus(function() {
active_tiptip()
}).blur(function() {
deactive_tiptip()
}) : "click" == opts.activation && (org_elem.click(function() {
return active_tiptip(), !1
}).hover(function() {}, function() {
opts.keepAlive || deactive_tiptip()
}), opts.keepAlive && tiptip_holder.hover(function() {}, function() {
deactive_tiptip()
}))
}
})
}
}(jQuery),
function(factory) {
"function" == typeof define && define.amd ? define(["jquery"], factory) : factory("object" == typeof exports ? require("jquery") : jQuery)
}(function($) {
function encode(s) {
return config.raw ? s : encodeURIComponent(s)
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s)
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value))
}
function parseCookieValue(s) {
0 === s.indexOf('"') && (s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, "\\"));
try {
return s = decodeURIComponent(s.replace(pluses, " ")), config.json ? JSON.parse(s) : s
} catch (e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value
}
var pluses = /\+/g,
config = $.cookie = function(key, value, options) {
if (void 0 !== value && !$.isFunction(value)) {
if (options = $.extend({}, config.defaults, options), "number" == typeof options.expires) {
var days = options.expires,
t = options.expires = new Date;
t.setTime(+t + 864e5 * days)
}
return document.cookie = [encode(key), "=", stringifyCookieValue(value), options.expires ? "; expires=" + options.expires.toUTCString() : "", options.path ? "; path=" + options.path : "", options.domain ? "; domain=" + options.domain : "", options.secure ? "; secure" : ""].join("")
}
for (var result = key ? void 0 : {}, cookies = document.cookie ? document.cookie.split("; ") : [], i = 0, l = cookies.length; l > i; i++) {
var parts = cookies[i].split("="),
name = decode(parts.shift()),
cookie = parts.join("=");
if (key && key === name) {
result = read(cookie, value);
break
}
key || void 0 === (cookie = read(cookie)) || (result[name] = cookie)
}
return result
};
config.defaults = {}, $.removeCookie = function(key, options) {
return void 0 === $.cookie(key) ? !1 : ($.cookie(key, "", $.extend({}, options, {
expires: -1
})), !$.cookie(key))
}
}),
function(factory) {
"function" == typeof define && define.amd ? define(["jquery", "jquery-ui/widget", "jquery-ui/tabs"], factory) : factory(jQuery)
}(function($) {
return $.widget("ui.tabs", $.ui.tabs, {
options: {
orientation: "horizontal"
},
_create: function() {
this._super(), this._handleOrientation()
},
_handleOrientation: function() {
this.element.toggleClass("ui-tabs-vertical", "vertical" === this.options.orientation)
},
_setOption: function(key) {
this._superApply(arguments), "orientation" === key && this._handleOrientation()
},
_destroy: function() {
this._super(), this.element.removeClass("ui-tabs-vertical")
}
})
}),
function() {
var $, __indexOf = [].indexOf || function(item) {
for (var i = 0, l = this.length; l > i; i++)
if (i in this && this[i] === item) return i;
return -1
};
$ = jQuery, $.fn.validateCreditCard = function(callback, options) {
var bind, card, card_type, card_types, get_card_type, is_valid_length, is_valid_luhn, normalize, validate, validate_number, _i, _len, _ref;
for (card_types = [{
name: "amex",
pattern: /^3[47]/,
valid_length: [15]
}, {
name: "diners_club_carte_blanche",
pattern: /^30[0-5]/,
valid_length: [14]
}, {
name: "diners_club_international",
pattern: /^36/,
valid_length: [14]
}, {
name: "jcb",
pattern: /^35(2[89]|[3-8][0-9])/,
valid_length: [16]
}, {
name: "laser",
pattern: /^(6304|670[69]|6771)/,
valid_length: [16, 17, 18, 19]
}, {
name: "visa_electron",
pattern: /^(4026|417500|4508|4844|491(3|7))/,
valid_length: [16]
}, {
name: "visa",
pattern: /^4/,
valid_length: [16]
}, {
name: "mastercard",
pattern: /^5[1-5]/,
valid_length: [16]
}, {
name: "maestro",
pattern: /^(5018|5020|5038|6304|6759|676[1-3])/,
valid_length: [12, 13, 14, 15, 16, 17, 18, 19]
}, {
name: "discover",
pattern: /^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)/,
valid_length: [16]
}], bind = !1, callback && ("object" == typeof callback ? (options = callback, bind = !1, callback = null) : "function" == typeof callback && (bind = !0)), null == options && (options = {}), null == options.accept && (options.accept = function() {
var _i, _len, _results;
for (_results = [], _i = 0, _len = card_types.length; _len > _i; _i++) card = card_types[_i], _results.push(card.name);
return _results
}()), _ref = options.accept, _i = 0, _len = _ref.length; _len > _i; _i++)
if (card_type = _ref[_i], __indexOf.call(function() {
var _j, _len1, _results;
for (_results = [], _j = 0, _len1 = card_types.length; _len1 > _j; _j++) card = card_types[_j], _results.push(card.name);
return _results
}(), card_type) < 0) throw "Credit card type '" + card_type + "' is not supported";
return get_card_type = function(number) {
var _j, _len1, _ref1;
for (_ref1 = function() {
var _k, _len1, _ref1, _results;
for (_results = [], _k = 0, _len1 = card_types.length; _len1 > _k; _k++) card = card_types[_k], _ref1 = card.name, __indexOf.call(options.accept, _ref1) >= 0 && _results.push(card);
return _results
}(), _j = 0, _len1 = _ref1.length; _len1 > _j; _j++)
if (card_type = _ref1[_j], number.match(card_type.pattern)) return card_type;
return null
}, is_valid_luhn = function(number) {
var digit, n, sum, _j, _len1, _ref1;
for (sum = 0, _ref1 = number.split("").reverse(), n = _j = 0, _len1 = _ref1.length; _len1 > _j; n = ++_j) digit = _ref1[n], digit = +digit, n % 2 ? (digit *= 2, sum += 10 > digit ? digit : digit - 9) : sum += digit;
return sum % 10 === 0
}, is_valid_length = function(number, card_type) {
var _ref1;
return _ref1 = number.length, __indexOf.call(card_type.valid_length, _ref1) >= 0
}, validate_number = function() {
return function(number) {
var length_valid, luhn_valid;
return card_type = get_card_type(number), luhn_valid = !1, length_valid = !1, null != card_type && (luhn_valid = is_valid_luhn(number), length_valid = is_valid_length(number, card_type)), {
card_type: card_type,
valid: luhn_valid && length_valid,
luhn_valid: luhn_valid,
length_valid: length_valid
}
}
}(this), validate = function(_this) {
return function() {
var number;
return number = normalize($(_this).val()), validate_number(number)
}
}(this), normalize = function(number) {
return number.replace(/[ -]/g, "")
}, bind ? (this.on("input.jccv", function(_this) {
return function() {
return $(_this).off("keyup.jccv"), callback.call(_this, validate())
}
}(this)), this.on("keyup.jccv", function(_this) {
return function() {
return callback.call(_this, validate())
}
}(this)), callback.call(this, validate()), this) : validate()
}
}.call(this),
function(global, factory) {
"object" == typeof exports && "undefined" != typeof module ? module.exports = factory() : "function" == typeof define && define.amd ? define(factory) : global.moment = factory()
}(this, function() {
"use strict";
function utils_hooks__hooks() {
return hookCallback.apply(null, arguments)
}
function setHookCallback(callback) {
hookCallback = callback
}
function isArray(input) {
return "[object Array]" === Object.prototype.toString.call(input)
}
function isDate(input) {
return input instanceof Date || "[object Date]" === Object.prototype.toString.call(input)
}
function map(arr, fn) {
var i, res = [];
for (i = 0; i < arr.length; ++i) res.push(fn(arr[i], i));
return res
}
function hasOwnProp(a, b) {
return Object.prototype.hasOwnProperty.call(a, b)
}
function extend(a, b) {
for (var i in b) hasOwnProp(b, i) && (a[i] = b[i]);
return hasOwnProp(b, "toString") && (a.toString = b.toString), hasOwnProp(b, "valueOf") && (a.valueOf = b.valueOf), a
}
function create_utc__createUTC(input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, !0).utc()
}
function defaultParsingFlags() {
return {
empty: !1,
unusedTokens: [],
unusedInput: [],
overflow: -2,
charsLeftOver: 0,
nullInput: !1,
invalidMonth: null,
invalidFormat: !1,
userInvalidated: !1,
iso: !1
}
}
function getParsingFlags(m) {
return null == m._pf && (m._pf = defaultParsingFlags()), m._pf
}
function valid__isValid(m) {
if (null == m._isValid) {
var flags = getParsingFlags(m);
m._isValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidMonth && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated, m._strict && (m._isValid = m._isValid && 0 === flags.charsLeftOver && 0 === flags.unusedTokens.length && void 0 === flags.bigHour)
}
return m._isValid
}
function valid__createInvalid(flags) {
var m = create_utc__createUTC(0 / 0);
return null != flags ? extend(getParsingFlags(m), flags) : getParsingFlags(m).userInvalidated = !0, m
}
function copyConfig(to, from) {
var i, prop, val;
if ("undefined" != typeof from._isAMomentObject && (to._isAMomentObject = from._isAMomentObject), "undefined" != typeof from._i && (to._i = from._i), "undefined" != typeof from._f && (to._f = from._f), "undefined" != typeof from._l && (to._l = from._l), "undefined" != typeof from._strict && (to._strict = from._strict), "undefined" != typeof from._tzm && (to._tzm = from._tzm), "undefined" != typeof from._isUTC && (to._isUTC = from._isUTC), "undefined" != typeof from._offset && (to._offset = from._offset), "undefined" != typeof from._pf && (to._pf = getParsingFlags(from)), "undefined" != typeof from._locale && (to._locale = from._locale), momentProperties.length > 0)
for (i in momentProperties) prop = momentProperties[i], val = from[prop], "undefined" != typeof val && (to[prop] = val);
return to
}
function Moment(config) {
copyConfig(this, config), this._d = new Date(+config._d), updateInProgress === !1 && (updateInProgress = !0, utils_hooks__hooks.updateOffset(this), updateInProgress = !1)
}
function isMoment(obj) {
return obj instanceof Moment || null != obj && null != obj._isAMomentObject
}
function toInt(argumentForCoercion) {
var coercedNumber = +argumentForCoercion,
value = 0;
return 0 !== coercedNumber && isFinite(coercedNumber) && (value = coercedNumber >= 0 ? Math.floor(coercedNumber) : Math.ceil(coercedNumber)), value
}
function compareArrays(array1, array2, dontConvert) {
var i, len = Math.min(array1.length, array2.length),
lengthDiff = Math.abs(array1.length - array2.length),
diffs = 0;
for (i = 0; len > i; i++)(dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) && diffs++;
return diffs + lengthDiff
}
function Locale() {}
function normalizeLocale(key) {
return key ? key.toLowerCase().replace("_", "-") : key
}
function chooseLocale(names) {
for (var j, next, locale, split, i = 0; i < names.length;) {
for (split = normalizeLocale(names[i]).split("-"), j = split.length, next = normalizeLocale(names[i + 1]), next = next ? next.split("-") : null; j > 0;) {
if (locale = loadLocale(split.slice(0, j).join("-"))) return locale;
if (next && next.length >= j && compareArrays(split, next, !0) >= j - 1) break;
j--
}
i++
}
return null
}
function loadLocale(name) {
var oldLocale = null;
if (!locales[name] && "undefined" != typeof module && module && module.exports) try {
oldLocale = globalLocale._abbr, require("./locale/" + name), locale_locales__getSetGlobalLocale(oldLocale)
} catch (e) {}
return locales[name]
}
function locale_locales__getSetGlobalLocale(key, values) {
var data;
return key && (data = "undefined" == typeof values ? locale_locales__getLocale(key) : defineLocale(key, values), data && (globalLocale = data)), globalLocale._abbr
}
function defineLocale(name, values) {
return null !== values ? (values.abbr = name, locales[name] || (locales[name] = new Locale), locales[name].set(values), locale_locales__getSetGlobalLocale(name), locales[name]) : (delete locales[name], null)
}
function locale_locales__getLocale(key) {
var locale;
if (key && key._locale && key._locale._abbr && (key = key._locale._abbr), !key) return globalLocale;
if (!isArray(key)) {
if (locale = loadLocale(key)) return locale;
key = [key]
}
return chooseLocale(key)
}
function addUnitAlias(unit, shorthand) {
var lowerCase = unit.toLowerCase();
aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit
}
function normalizeUnits(units) {
return "string" == typeof units ? aliases[units] || aliases[units.toLowerCase()] : void 0
}
function normalizeObjectUnits(inputObject) {
var normalizedProp, prop, normalizedInput = {};
for (prop in inputObject) hasOwnProp(inputObject, prop) && (normalizedProp = normalizeUnits(prop), normalizedProp && (normalizedInput[normalizedProp] = inputObject[prop]));
return normalizedInput
}
function makeGetSet(unit, keepTime) {
return function(value) {
return null != value ? (get_set__set(this, unit, value), utils_hooks__hooks.updateOffset(this, keepTime), this) : get_set__get(this, unit)
}
}
function get_set__get(mom, unit) {
return mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]()
}
function get_set__set(mom, unit, value) {
return mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value)
}
function getSet(units, value) {
var unit;
if ("object" == typeof units)
for (unit in units) this.set(unit, units[unit]);
else if (units = normalizeUnits(units), "function" == typeof this[units]) return this[units](value);
return this
}
function zeroFill(number, targetLength, forceSign) {
for (var output = "" + Math.abs(number), sign = number >= 0; output.length < targetLength;) output = "0" + output;
return (sign ? forceSign ? "+" : "" : "-") + output
}
function addFormatToken(token, padded, ordinal, callback) {
var func = callback;
"string" == typeof callback && (func = function() {
return this[callback]()
}), token && (formatTokenFunctions[token] = func), padded && (formatTokenFunctions[padded[0]] = function() {
return zeroFill(func.apply(this, arguments), padded[1], padded[2])
}), ordinal && (formatTokenFunctions[ordinal] = function() {
return this.localeData().ordinal(func.apply(this, arguments), token)
})
}
function removeFormattingTokens(input) {
return input.match(/\[[\s\S]/) ? input.replace(/^\[|\]$/g, "") : input.replace(/\\/g, "")
}
function makeFormatFunction(format) {
var i, length, array = format.match(formattingTokens);
for (i = 0, length = array.length; length > i; i++) array[i] = formatTokenFunctions[array[i]] ? formatTokenFunctions[array[i]] : removeFormattingTokens(array[i]);
return function(mom) {
var output = "";
for (i = 0; length > i; i++) output += array[i] instanceof Function ? array[i].call(mom, format) : array[i];
return output
}
}
function formatMoment(m, format) {
return m.isValid() ? (format = expandFormat(format, m.localeData()), formatFunctions[format] || (formatFunctions[format] = makeFormatFunction(format)), formatFunctions[format](m)) : m.localeData().invalidDate()
}
function expandFormat(format, locale) {
function replaceLongDateFormatTokens(input) {
return locale.longDateFormat(input) || input
}
var i = 5;
for (localFormattingTokens.lastIndex = 0; i >= 0 && localFormattingTokens.test(format);) format = format.replace(localFormattingTokens, replaceLongDateFormatTokens), localFormattingTokens.lastIndex = 0, i -= 1;
return format
}
function addRegexToken(token, regex, strictRegex) {
regexes[token] = "function" == typeof regex ? regex : function(isStrict) {
return isStrict && strictRegex ? strictRegex : regex
}
}
function getParseRegexForToken(token, config) {
return hasOwnProp(regexes, token) ? regexes[token](config._strict, config._locale) : new RegExp(unescapeFormat(token))
}
function unescapeFormat(s) {
return s.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(matched, p1, p2, p3, p4) {
return p1 || p2 || p3 || p4
}).replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
}
function addParseToken(token, callback) {
var i, func = callback;
for ("string" == typeof token && (token = [token]), "number" == typeof callback && (func = function(input, array) {
array[callback] = toInt(input)
}), i = 0; i < token.length; i++) tokens[token[i]] = func
}
function addWeekParseToken(token, callback) {
addParseToken(token, function(input, array, config, token) {
config._w = config._w || {}, callback(input, config._w, config, token)
})
}
function addTimeToArrayFromToken(token, input, config) {
null != input && hasOwnProp(tokens, token) && tokens[token](input, config._a, config, token)
}
function daysInMonth(year, month) {
return new Date(Date.UTC(year, month + 1, 0)).getUTCDate()
}
function localeMonths(m) {
return this._months[m.month()]
}
function localeMonthsShort(m) {
return this._monthsShort[m.month()]
}
function localeMonthsParse(monthName, format, strict) {
var i, mom, regex;
for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), i = 0; 12 > i; i++) {
if (mom = create_utc__createUTC([2e3, i]), strict && !this._longMonthsParse[i] && (this._longMonthsParse[i] = new RegExp("^" + this.months(mom, "").replace(".", "") + "$", "i"), this._shortMonthsParse[i] = new RegExp("^" + this.monthsShort(mom, "").replace(".", "") + "$", "i")), strict || this._monthsParse[i] || (regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, ""), this._monthsParse[i] = new RegExp(regex.replace(".", ""), "i")), strict && "MMMM" === format && this._longMonthsParse[i].test(monthName)) return i;
if (strict && "MMM" === format && this._shortMonthsParse[i].test(monthName)) return i;
if (!strict && this._monthsParse[i].test(monthName)) return i
}
}
function setMonth(mom, value) {
var dayOfMonth;
return "string" == typeof value && (value = mom.localeData().monthsParse(value), "number" != typeof value) ? mom : (dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)), mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value, dayOfMonth), mom)
}
function getSetMonth(value) {
return null != value ? (setMonth(this, value), utils_hooks__hooks.updateOffset(this, !0), this) : get_set__get(this, "Month")
}
function getDaysInMonth() {
return daysInMonth(this.year(), this.month())
}
function checkOverflow(m) {
var overflow, a = m._a;
return a && -2 === getParsingFlags(m).overflow && (overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || 24 === a[HOUR] && (0 !== a[MINUTE] || 0 !== a[SECOND] || 0 !== a[MILLISECOND]) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1, getParsingFlags(m)._overflowDayOfYear && (YEAR > overflow || overflow > DATE) && (overflow = DATE), getParsingFlags(m).overflow = overflow), m
}
function warn(msg) {
utils_hooks__hooks.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + msg)
}
function deprecate(msg, fn) {
var firstTime = !0,
msgWithStack = msg + "\n" + (new Error).stack;
return extend(function() {
return firstTime && (warn(msgWithStack), firstTime = !1), fn.apply(this, arguments)
}, fn)
}
function deprecateSimple(name, msg) {
deprecations[name] || (warn(msg), deprecations[name] = !0)
}
function configFromISO(config) {
var i, l, string = config._i,
match = from_string__isoRegex.exec(string);
if (match) {
for (getParsingFlags(config).iso = !0, i = 0, l = isoDates.length; l > i; i++)
if (isoDates[i][1].exec(string)) {
config._f = isoDates[i][0] + (match[6] || " ");
break
}
for (i = 0, l = isoTimes.length; l > i; i++)
if (isoTimes[i][1].exec(string)) {
config._f += isoTimes[i][0];
break
}
string.match(matchOffset) && (config._f += "Z"), configFromStringAndFormat(config)
} else config._isValid = !1
}
function configFromString(config) {
var matched = aspNetJsonRegex.exec(config._i);
return null !== matched ? void(config._d = new Date(+matched[1])) : (configFromISO(config), void(config._isValid === !1 && (delete config._isValid, utils_hooks__hooks.createFromInputFallback(config))))
}
function createDate(y, m, d, h, M, s, ms) {
var date = new Date(y, m, d, h, M, s, ms);
return 1970 > y && date.setFullYear(y), date
}
function createUTCDate(y) {
var date = new Date(Date.UTC.apply(null, arguments));
return 1970 > y && date.setUTCFullYear(y), date
}
function daysInYear(year) {
return isLeapYear(year) ? 366 : 365
}
function isLeapYear(year) {
return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0
}
function getIsLeapYear() {
return isLeapYear(this.year())
}
function weekOfYear(mom, firstDayOfWeek, firstDayOfWeekOfYear) {
var adjustedMoment, end = firstDayOfWeekOfYear - firstDayOfWeek,
daysToDayOfWeek = firstDayOfWeekOfYear - mom.day();
return daysToDayOfWeek > end && (daysToDayOfWeek -= 7), end - 7 > daysToDayOfWeek && (daysToDayOfWeek += 7), adjustedMoment = local__createLocal(mom).add(daysToDayOfWeek, "d"), {
week: Math.ceil(adjustedMoment.dayOfYear() / 7),
year: adjustedMoment.year()
}
}
function localeWeek(mom) {
return weekOfYear(mom, this._week.dow, this._week.doy).week
}
function localeFirstDayOfWeek() {
return this._week.dow
}
function localeFirstDayOfYear() {
return this._week.doy
}
function getSetWeek(input) {
var week = this.localeData().week(this);
return null == input ? week : this.add(7 * (input - week), "d")
}
function getSetISOWeek(input) {
var week = weekOfYear(this, 1, 4).week;
return null == input ? week : this.add(7 * (input - week), "d")
}
function dayOfYearFromWeeks(year, week, weekday, firstDayOfWeekOfYear, firstDayOfWeek) {
var daysToAdd, dayOfYear, d = createUTCDate(year, 0, 1).getUTCDay();
return d = 0 === d ? 7 : d, weekday = null != weekday ? weekday : firstDayOfWeek, daysToAdd = firstDayOfWeek - d + (d > firstDayOfWeekOfYear ? 7 : 0) - (firstDayOfWeek > d ? 7 : 0), dayOfYear = 7 * (week - 1) + (weekday - firstDayOfWeek) + daysToAdd + 1, {
year: dayOfYear > 0 ? year : year - 1,
dayOfYear: dayOfYear > 0 ? dayOfYear : daysInYear(year - 1) + dayOfYear
}
}
function getSetDayOfYear(input) {
var dayOfYear = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
return null == input ? dayOfYear : this.add(input - dayOfYear, "d")
}
function defaults(a, b, c) {
return null != a ? a : null != b ? b : c
}
function currentDateArray(config) {
var now = new Date;
return config._useUTC ? [now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate()] : [now.getFullYear(), now.getMonth(), now.getDate()]
}
function configFromArray(config) {
var i, date, currentDate, yearToUse, input = [];
if (!config._d) {
for (currentDate = currentDateArray(config), config._w && null == config._a[DATE] && null == config._a[MONTH] && dayOfYearFromWeekInfo(config), config._dayOfYear && (yearToUse = defaults(config._a[YEAR], currentDate[YEAR]), config._dayOfYear > daysInYear(yearToUse) && (getParsingFlags(config)._overflowDayOfYear = !0), date = createUTCDate(yearToUse, 0, config._dayOfYear), config._a[MONTH] = date.getUTCMonth(), config._a[DATE] = date.getUTCDate()), i = 0; 3 > i && null == config._a[i]; ++i) config._a[i] = input[i] = currentDate[i];
for (; 7 > i; i++) config._a[i] = input[i] = null == config._a[i] ? 2 === i ? 1 : 0 : config._a[i];
24 === config._a[HOUR] && 0 === config._a[MINUTE] && 0 === config._a[SECOND] && 0 === config._a[MILLISECOND] && (config._nextDay = !0, config._a[HOUR] = 0), config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input), null != config._tzm && config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm), config._nextDay && (config._a[HOUR] = 24)
}
}
function dayOfYearFromWeekInfo(config) {
var w, weekYear, week, weekday, dow, doy, temp;
w = config._w, null != w.GG || null != w.W || null != w.E ? (dow = 1, doy = 4, weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(local__createLocal(), 1, 4).year), week = defaults(w.W, 1), weekday = defaults(w.E, 1)) : (dow = config._locale._week.dow, doy = config._locale._week.doy, weekYear = defaults(w.gg, config._a[YEAR], weekOfYear(local__createLocal(), dow, doy).year), week = defaults(w.w, 1), null != w.d ? (weekday = w.d, dow > weekday && ++week) : weekday = null != w.e ? w.e + dow : dow), temp = dayOfYearFromWeeks(weekYear, week, weekday, doy, dow), config._a[YEAR] = temp.year, config._dayOfYear = temp.dayOfYear
}
function configFromStringAndFormat(config) {
if (config._f === utils_hooks__hooks.ISO_8601) return void configFromISO(config);
config._a = [], getParsingFlags(config).empty = !0;
var i, parsedInput, tokens, token, skipped, string = "" + config._i,
stringLength = string.length,
totalParsedInputLength = 0;
for (tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [], i = 0; i < tokens.length; i++) token = tokens[i], parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0], parsedInput && (skipped = string.substr(0, string.indexOf(parsedInput)), skipped.length > 0 && getParsingFlags(config).unusedInput.push(skipped), string = string.slice(string.indexOf(parsedInput) + parsedInput.length), totalParsedInputLength += parsedInput.length), formatTokenFunctions[token] ? (parsedInput ? getParsingFlags(config).empty = !1 : getParsingFlags(config).unusedTokens.push(token), addTimeToArrayFromToken(token, parsedInput, config)) : config._strict && !parsedInput && getParsingFlags(config).unusedTokens.push(token);
getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength, string.length > 0 && getParsingFlags(config).unusedInput.push(string), getParsingFlags(config).bigHour === !0 && config._a[HOUR] <= 12 && config._a[HOUR] > 0 && (getParsingFlags(config).bigHour = void 0), config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem), configFromArray(config), checkOverflow(config)
}
function meridiemFixWrap(locale, hour, meridiem) {
var isPm;
return null == meridiem ? hour : null != locale.meridiemHour ? locale.meridiemHour(hour, meridiem) : null != locale.isPM ? (isPm = locale.isPM(meridiem), isPm && 12 > hour && (hour += 12), isPm || 12 !== hour || (hour = 0), hour) : hour
}
function configFromStringAndArray(config) {
var tempConfig, bestMoment, scoreToBeat, i, currentScore;
if (0 === config._f.length) return getParsingFlags(config).invalidFormat = !0, void(config._d = new Date(0 / 0));
for (i = 0; i < config._f.length; i++) currentScore = 0, tempConfig = copyConfig({}, config), null != config._useUTC && (tempConfig._useUTC = config._useUTC), tempConfig._f = config._f[i], configFromStringAndFormat(tempConfig), valid__isValid(tempConfig) && (currentScore += getParsingFlags(tempConfig).charsLeftOver, currentScore += 10 * getParsingFlags(tempConfig).unusedTokens.length, getParsingFlags(tempConfig).score = currentScore, (null == scoreToBeat || scoreToBeat > currentScore) && (scoreToBeat = currentScore, bestMoment = tempConfig));
extend(config, bestMoment || tempConfig)
}
function configFromObject(config) {
if (!config._d) {
var i = normalizeObjectUnits(config._i);
config._a = [i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], configFromArray(config)
}
}
function createFromConfig(config) {
var res, input = config._i,
format = config._f;
return config._locale = config._locale || locale_locales__getLocale(config._l), null === input || void 0 === format && "" === input ? valid__createInvalid({
nullInput: !0
}) : ("string" == typeof input && (config._i = input = config._locale.preparse(input)), isMoment(input) ? new Moment(checkOverflow(input)) : (isArray(format) ? configFromStringAndArray(config) : format ? configFromStringAndFormat(config) : isDate(input) ? config._d = input : configFromInput(config), res = new Moment(checkOverflow(config)), res._nextDay && (res.add(1, "d"), res._nextDay = void 0), res))
}
function configFromInput(config) {
var input = config._i;
void 0 === input ? config._d = new Date : isDate(input) ? config._d = new Date(+input) : "string" == typeof input ? configFromString(config) : isArray(input) ? (config._a = map(input.slice(0), function(obj) {
return parseInt(obj, 10)
}), configFromArray(config)) : "object" == typeof input ? configFromObject(config) : "number" == typeof input ? config._d = new Date(input) : utils_hooks__hooks.createFromInputFallback(config)
}
function createLocalOrUTC(input, format, locale, strict, isUTC) {
var c = {};
return "boolean" == typeof locale && (strict = locale, locale = void 0), c._isAMomentObject = !0, c._useUTC = c._isUTC = isUTC, c._l = locale, c._i = input, c._f = format, c._strict = strict, createFromConfig(c)
}
function local__createLocal(input, format, locale, strict) {
return createLocalOrUTC(input, format, locale, strict, !1)
}
function pickBy(fn, moments) {
var res, i;
if (1 === moments.length && isArray(moments[0]) && (moments = moments[0]), !moments.length) return local__createLocal();
for (res = moments[0], i = 1; i < moments.length; ++i) moments[i][fn](res) && (res = moments[i]);
return res
}
function min() {
var args = [].slice.call(arguments, 0);
return pickBy("isBefore", args)
}
function max() {
var args = [].slice.call(arguments, 0);
return pickBy("isAfter", args)
}
function Duration(duration) {
var normalizedInput = normalizeObjectUnits(duration),
years = normalizedInput.year || 0,
quarters = normalizedInput.quarter || 0,
months = normalizedInput.month || 0,
weeks = normalizedInput.week || 0,
days = normalizedInput.day || 0,
hours = normalizedInput.hour || 0,
minutes = normalizedInput.minute || 0,
seconds = normalizedInput.second || 0,
milliseconds = normalizedInput.millisecond || 0;
this._milliseconds = +milliseconds + 1e3 * seconds + 6e4 * minutes + 36e5 * hours, this._days = +days + 7 * weeks, this._months = +months + 3 * quarters + 12 * years, this._data = {}, this._locale = locale_locales__getLocale(), this._bubble()
}
function isDuration(obj) {
return obj instanceof Duration
}
function offset(token, separator) {
addFormatToken(token, 0, 0, function() {
var offset = this.utcOffset(),
sign = "+";
return 0 > offset && (offset = -offset, sign = "-"), sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2)
})
}
function offsetFromString(string) {
var matches = (string || "").match(matchOffset) || [],
chunk = matches[matches.length - 1] || [],
parts = (chunk + "").match(chunkOffset) || ["-", 0, 0],
minutes = +(60 * parts[1]) + toInt(parts[2]);
return "+" === parts[0] ? minutes : -minutes
}
function cloneWithOffset(input, model) {
var res, diff;
return model._isUTC ? (res = model.clone(), diff = (isMoment(input) || isDate(input) ? +input : +local__createLocal(input)) - +res, res._d.setTime(+res._d + diff), utils_hooks__hooks.updateOffset(res, !1), res) : local__createLocal(input).local()
}
function getDateOffset(m) {
return 15 * -Math.round(m._d.getTimezoneOffset() / 15)
}
function getSetOffset(input, keepLocalTime) {
var localAdjust, offset = this._offset || 0;
return null != input ? ("string" == typeof input && (input = offsetFromString(input)), Math.abs(input) < 16 && (input = 60 * input), !this._isUTC && keepLocalTime && (localAdjust = getDateOffset(this)), this._offset = input, this._isUTC = !0, null != localAdjust && this.add(localAdjust, "m"), offset !== input && (!keepLocalTime || this._changeInProgress ? add_subtract__addSubtract(this, create__createDuration(input - offset, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, utils_hooks__hooks.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? offset : getDateOffset(this)
}
function getSetZone(input, keepLocalTime) {
return null != input ? ("string" != typeof input && (input = -input), this.utcOffset(input, keepLocalTime), this) : -this.utcOffset()
}
function setOffsetToUTC(keepLocalTime) {
return this.utcOffset(0, keepLocalTime)
}
function setOffsetToLocal(keepLocalTime) {
return this._isUTC && (this.utcOffset(0, keepLocalTime), this._isUTC = !1, keepLocalTime && this.subtract(getDateOffset(this), "m")), this
}
function setOffsetToParsedOffset() {
return this._tzm ? this.utcOffset(this._tzm) : "string" == typeof this._i && this.utcOffset(offsetFromString(this._i)), this
}
function hasAlignedHourOffset(input) {
return input = input ? local__createLocal(input).utcOffset() : 0, (this.utcOffset() - input) % 60 === 0
}
function isDaylightSavingTime() {
return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
}
function isDaylightSavingTimeShifted() {
if (this._a) {
var other = this._isUTC ? create_utc__createUTC(this._a) : local__createLocal(this._a);
return this.isValid() && compareArrays(this._a, other.toArray()) > 0
}
return !1
}
function isLocal() {
return !this._isUTC
}
function isUtcOffset() {
return this._isUTC
}
function isUtc() {
return this._isUTC && 0 === this._offset
}
function create__createDuration(input, key) {
var sign, ret, diffRes, duration = input,
match = null;
return isDuration(input) ? duration = {
ms: input._milliseconds,
d: input._days,
M: input._months
} : "number" == typeof input ? (duration = {}, key ? duration[key] = input : duration.milliseconds = input) : (match = aspNetRegex.exec(input)) ? (sign = "-" === match[1] ? -1 : 1, duration = {
y: 0,
d: toInt(match[DATE]) * sign,
h: toInt(match[HOUR]) * sign,
m: toInt(match[MINUTE]) * sign,
s: toInt(match[SECOND]) * sign,
ms: toInt(match[MILLISECOND]) * sign
}) : (match = create__isoRegex.exec(input)) ? (sign = "-" === match[1] ? -1 : 1, duration = {
y: parseIso(match[2], sign),
M: parseIso(match[3], sign),
d: parseIso(match[4], sign),
h: parseIso(match[5], sign),
m: parseIso(match[6], sign),
s: parseIso(match[7], sign),
w: parseIso(match[8], sign)
}) : null == duration ? duration = {} : "object" == typeof duration && ("from" in duration || "to" in duration) && (diffRes = momentsDifference(local__createLocal(duration.from), local__createLocal(duration.to)), duration = {}, duration.ms = diffRes.milliseconds, duration.M = diffRes.months), ret = new Duration(duration), isDuration(input) && hasOwnProp(input, "_locale") && (ret._locale = input._locale), ret
}
function parseIso(inp, sign) {
var res = inp && parseFloat(inp.replace(",", "."));
return (isNaN(res) ? 0 : res) * sign
}
function positiveMomentsDifference(base, other) {
var res = {
milliseconds: 0,
months: 0
};
return res.months = other.month() - base.month() + 12 * (other.year() - base.year()), base.clone().add(res.months, "M").isAfter(other) && --res.months, res.milliseconds = +other - +base.clone().add(res.months, "M"), res
}
function momentsDifference(base, other) {
var res;
return other = cloneWithOffset(other, base), base.isBefore(other) ? res = positiveMomentsDifference(base, other) : (res = positiveMomentsDifference(other, base), res.milliseconds = -res.milliseconds, res.months = -res.months), res
}
function createAdder(direction, name) {
return function(val, period) {
var dur, tmp;
return null === period || isNaN(+period) || (deprecateSimple(name, "moment()." + name + "(period, number) is deprecated. Please use moment()." + name + "(number, period)."), tmp = val, val = period, period = tmp), val = "string" == typeof val ? +val : val, dur = create__createDuration(val, period), add_subtract__addSubtract(this, dur, direction), this
}
}
function add_subtract__addSubtract(mom, duration, isAdding, updateOffset) {
var milliseconds = duration._milliseconds,
days = duration._days,
months = duration._months;
updateOffset = null == updateOffset ? !0 : updateOffset, milliseconds && mom._d.setTime(+mom._d + milliseconds * isAdding), days && get_set__set(mom, "Date", get_set__get(mom, "Date") + days * isAdding), months && setMonth(mom, get_set__get(mom, "Month") + months * isAdding), updateOffset && utils_hooks__hooks.updateOffset(mom, days || months)
}
function moment_calendar__calendar(time) {
var now = time || local__createLocal(),
sod = cloneWithOffset(now, this).startOf("day"),
diff = this.diff(sod, "days", !0),
format = -6 > diff ? "sameElse" : -1 > diff ? "lastWeek" : 0 > diff ? "lastDay" : 1 > diff ? "sameDay" : 2 > diff ? "nextDay" : 7 > diff ? "nextWeek" : "sameElse";
return this.format(this.localeData().calendar(format, this, local__createLocal(now)))
}
function clone() {
return new Moment(this)
}
function isAfter(input, units) {
var inputMs;
return units = normalizeUnits("undefined" != typeof units ? units : "millisecond"), "millisecond" === units ? (input = isMoment(input) ? input : local__createLocal(input), +this > +input) : (inputMs = isMoment(input) ? +input : +local__createLocal(input), inputMs < +this.clone().startOf(units))
}
function isBefore(input, units) {
var inputMs;
return units = normalizeUnits("undefined" != typeof units ? units : "millisecond"), "millisecond" === units ? (input = isMoment(input) ? input : local__createLocal(input), +input > +this) : (inputMs = isMoment(input) ? +input : +local__createLocal(input), +this.clone().endOf(units) < inputMs)
}
function isBetween(from, to, units) {
return this.isAfter(from, units) && this.isBefore(to, units)
}
function isSame(input, units) {
var inputMs;
return units = normalizeUnits(units || "millisecond"), "millisecond" === units ? (input = isMoment(input) ? input : local__createLocal(input), +this === +input) : (inputMs = +local__createLocal(input), +this.clone().startOf(units) <= inputMs && inputMs <= +this.clone().endOf(units))
}
function absFloor(number) {
return 0 > number ? Math.ceil(number) : Math.floor(number)
}
function diff(input, units, asFloat) {
var delta, output, that = cloneWithOffset(input, this),
zoneDelta = 6e4 * (that.utcOffset() - this.utcOffset());
return units = normalizeUnits(units), "year" === units || "month" === units || "quarter" === units ? (output = monthDiff(this, that), "quarter" === units ? output /= 3 : "year" === units && (output /= 12)) : (delta = this - that, output = "second" === units ? delta / 1e3 : "minute" === units ? delta / 6e4 : "hour" === units ? delta / 36e5 : "day" === units ? (delta - zoneDelta) / 864e5 : "week" === units ? (delta - zoneDelta) / 6048e5 : delta), asFloat ? output : absFloor(output)
}
function monthDiff(a, b) {
var anchor2, adjust, wholeMonthDiff = 12 * (b.year() - a.year()) + (b.month() - a.month()),
anchor = a.clone().add(wholeMonthDiff, "months");
return 0 > b - anchor ? (anchor2 = a.clone().add(wholeMonthDiff - 1, "months"), adjust = (b - anchor) / (anchor - anchor2)) : (anchor2 = a.clone().add(wholeMonthDiff + 1, "months"), adjust = (b - anchor) / (anchor2 - anchor)), -(wholeMonthDiff + adjust)
}
function toString() {
return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
}
function moment_format__toISOString() {
var m = this.clone().utc();
return 0 < m.year() && m.year() <= 9999 ? "function" == typeof Date.prototype.toISOString ? this.toDate().toISOString() : formatMoment(m, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : formatMoment(m, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
}
function format(inputString) {
var output = formatMoment(this, inputString || utils_hooks__hooks.defaultFormat);
return this.localeData().postformat(output)
}
function from(time, withoutSuffix) {
return this.isValid() ? create__createDuration({
to: this,
from: time
}).locale(this.locale()).humanize(!withoutSuffix) : this.localeData().invalidDate()
}
function fromNow(withoutSuffix) {
return this.from(local__createLocal(), withoutSuffix)
}
function to(time, withoutSuffix) {
return this.isValid() ? create__createDuration({
from: this,
to: time
}).locale(this.locale()).humanize(!withoutSuffix) : this.localeData().invalidDate()
}
function toNow(withoutSuffix) {
return this.to(local__createLocal(), withoutSuffix)
}
function locale(key) {
var newLocaleData;
return void 0 === key ? this._locale._abbr : (newLocaleData = locale_locales__getLocale(key), null != newLocaleData && (this._locale = newLocaleData), this)
}
function localeData() {
return this._locale
}
function startOf(units) {
switch (units = normalizeUnits(units)) {
case "year":
this.month(0);
case "quarter":
case "month":
this.date(1);
case "week":
case "isoWeek":
case "day":
this.hours(0);
case "hour":
this.minutes(0);
case "minute":
this.seconds(0);
case "second":
this.milliseconds(0)
}
return "week" === units && this.weekday(0), "isoWeek" === units && this.isoWeekday(1), "quarter" === units && this.month(3 * Math.floor(this.month() / 3)), this
}
function endOf(units) {
return units = normalizeUnits(units), void 0 === units || "millisecond" === units ? this : this.startOf(units).add(1, "isoWeek" === units ? "week" : units).subtract(1, "ms")
}
function to_type__valueOf() {
return +this._d - 6e4 * (this._offset || 0)
}
function unix() {
return Math.floor(+this / 1e3)
}
function toDate() {
return this._offset ? new Date(+this) : this._d
}
function toArray() {
var m = this;
return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()]
}
function moment_valid__isValid() {
return valid__isValid(this)
}
function parsingFlags() {
return extend({}, getParsingFlags(this))
}
function invalidAt() {
return getParsingFlags(this).overflow
}
function addWeekYearFormatToken(token, getter) {
addFormatToken(0, [token, token.length], 0, getter)
}
function weeksInYear(year, dow, doy) {
return weekOfYear(local__createLocal([year, 11, 31 + dow - doy]), dow, doy).week
}
function getSetWeekYear(input) {
var year = weekOfYear(this, this.localeData()._week.dow, this.localeData()._week.doy).year;
return null == input ? year : this.add(input - year, "y")
}
function getSetISOWeekYear(input) {
var year = weekOfYear(this, 1, 4).year;
return null == input ? year : this.add(input - year, "y")
}
function getISOWeeksInYear() {
return weeksInYear(this.year(), 1, 4)
}
function getWeeksInYear() {
var weekInfo = this.localeData()._week;
return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy)
}
function getSetQuarter(input) {
return null == input ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (input - 1) + this.month() % 3)
}
function parseWeekday(input, locale) {
if ("string" == typeof input)
if (isNaN(input)) {
if (input = locale.weekdaysParse(input), "number" != typeof input) return null
} else input = parseInt(input, 10);
return input
}
function localeWeekdays(m) {
return this._weekdays[m.day()]
}
function localeWeekdaysShort(m) {
return this._weekdaysShort[m.day()]
}
function localeWeekdaysMin(m) {
return this._weekdaysMin[m.day()]
}
function localeWeekdaysParse(weekdayName) {
var i, mom, regex;
for (this._weekdaysParse || (this._weekdaysParse = []), i = 0; 7 > i; i++)
if (this._weekdaysParse[i] || (mom = local__createLocal([2e3, 1]).day(i), regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, ""), this._weekdaysParse[i] = new RegExp(regex.replace(".", ""), "i")), this._weekdaysParse[i].test(weekdayName)) return i
}
function getSetDayOfWeek(input) {
var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
return null != input ? (input = parseWeekday(input, this.localeData()), this.add(input - day, "d")) : day
}
function getSetLocaleDayOfWeek(input) {
var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
return null == input ? weekday : this.add(input - weekday, "d")
}
function getSetISODayOfWeek(input) {
return null == input ? this.day() || 7 : this.day(this.day() % 7 ? input : input - 7)
}
function meridiem(token, lowercase) {
addFormatToken(token, 0, 0, function() {
return this.localeData().meridiem(this.hours(), this.minutes(), lowercase)
})
}
function matchMeridiem(isStrict, locale) {
return locale._meridiemParse
}
function localeIsPM(input) {
return "p" === (input + "").toLowerCase().charAt(0)
}
function localeMeridiem(hours, minutes, isLower) {
return hours > 11 ? isLower ? "pm" : "PM" : isLower ? "am" : "AM"
}
function millisecond__milliseconds(token) {
addFormatToken(0, [token, 3], 0, "millisecond")
}
function getZoneAbbr() {
return this._isUTC ? "UTC" : ""
}
function getZoneName() {
return this._isUTC ? "Coordinated Universal Time" : ""
}
function moment__createUnix(input) {
return local__createLocal(1e3 * input)
}
function moment__createInZone() {
return local__createLocal.apply(null, arguments).parseZone()
}
function locale_calendar__calendar(key, mom, now) {
var output = this._calendar[key];
return "function" == typeof output ? output.call(mom, now) : output
}
function longDateFormat(key) {
var output = this._longDateFormat[key];
return !output && this._longDateFormat[key.toUpperCase()] && (output = this._longDateFormat[key.toUpperCase()].replace(/MMMM|MM|DD|dddd/g, function(val) {
return val.slice(1)
}), this._longDateFormat[key] = output), output
}
function invalidDate() {
return this._invalidDate
}
function ordinal(number) {
return this._ordinal.replace("%d", number)
}
function preParsePostFormat(string) {
return string
}
function relative__relativeTime(number, withoutSuffix, string, isFuture) {
var output = this._relativeTime[string];
return "function" == typeof output ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number)
}
function pastFuture(diff, output) {
var format = this._relativeTime[diff > 0 ? "future" : "past"];
return "function" == typeof format ? format(output) : format.replace(/%s/i, output)
}
function locale_set__set(config) {
var prop, i;
for (i in config) prop = config[i], "function" == typeof prop ? this[i] = prop : this["_" + i] = prop;
this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source)
}
function lists__get(format, index, field, setter) {
var locale = locale_locales__getLocale(),
utc = create_utc__createUTC().set(setter, index);
return locale[field](utc, format)
}
function list(format, index, field, count, setter) {
if ("number" == typeof format && (index = format, format = void 0), format = format || "", null != index) return lists__get(format, index, field, setter);
var i, out = [];
for (i = 0; count > i; i++) out[i] = lists__get(format, i, field, setter);
return out
}
function lists__listMonths(format, index) {
return list(format, index, "months", 12, "month")
}
function lists__listMonthsShort(format, index) {
return list(format, index, "monthsShort", 12, "month")
}
function lists__listWeekdays(format, index) {
return list(format, index, "weekdays", 7, "day")
}
function lists__listWeekdaysShort(format, index) {
return list(format, index, "weekdaysShort", 7, "day")
}
function lists__listWeekdaysMin(format, index) {
return list(format, index, "weekdaysMin", 7, "day")
}
function duration_abs__abs() {
var data = this._data;
return this._milliseconds = mathAbs(this._milliseconds), this._days = mathAbs(this._days), this._months = mathAbs(this._months), data.milliseconds = mathAbs(data.milliseconds), data.seconds = mathAbs(data.seconds), data.minutes = mathAbs(data.minutes), data.hours = mathAbs(data.hours), data.months = mathAbs(data.months), data.years = mathAbs(data.years), this
}
function duration_add_subtract__addSubtract(duration, input, value, direction) {
var other = create__createDuration(input, value);
return duration._milliseconds += direction * other._milliseconds, duration._days += direction * other._days, duration._months += direction * other._months, duration._bubble()
}
function duration_add_subtract__add(input, value) {
return duration_add_subtract__addSubtract(this, input, value, 1)
}
function duration_add_subtract__subtract(input, value) {
return duration_add_subtract__addSubtract(this, input, value, -1)
}
function bubble() {
var seconds, minutes, hours, milliseconds = this._milliseconds,
days = this._days,
months = this._months,
data = this._data,
years = 0;
return data.milliseconds = milliseconds % 1e3, seconds = absFloor(milliseconds / 1e3), data.seconds = seconds % 60, minutes = absFloor(seconds / 60), data.minutes = minutes % 60, hours = absFloor(minutes / 60), data.hours = hours % 24, days += absFloor(hours / 24), years = absFloor(daysToYears(days)), days -= absFloor(yearsToDays(years)), months += absFloor(days / 30), days %= 30, years += absFloor(months / 12), months %= 12, data.days = days, data.months = months, data.years = years, this
}
function daysToYears(days) {
return 400 * days / 146097
}
function yearsToDays(years) {
return 146097 * years / 400
}
function as(units) {
var days, months, milliseconds = this._milliseconds;
if (units = normalizeUnits(units), "month" === units || "year" === units) return days = this._days + milliseconds / 864e5, months = this._months + 12 * daysToYears(days), "month" === units ? months : months / 12;
switch (days = this._days + Math.round(yearsToDays(this._months / 12)), units) {
case "week":
return days / 7 + milliseconds / 6048e5;
case "day":
return days + milliseconds / 864e5;
case "hour":
return 24 * days + milliseconds / 36e5;
case "minute":
return 1440 * days + milliseconds / 6e4;
case "second":
return 86400 * days + milliseconds / 1e3;
case "millisecond":
return Math.floor(864e5 * days) + milliseconds;
default:
throw new Error("Unknown unit " + units)
}
}
function duration_as__valueOf() {
return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * toInt(this._months / 12)
}
function makeAs(alias) {
return function() {
return this.as(alias)
}
}
function duration_get__get(units) {
return units = normalizeUnits(units), this[units + "s"]()
}
function makeGetter(name) {
return function() {
return this._data[name]
}
}
function weeks() {
return absFloor(this.days() / 7)
}
function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
return locale.relativeTime(number || 1, !! withoutSuffix, string, isFuture)
}
function duration_humanize__relativeTime(posNegDuration, withoutSuffix, locale) {
var duration = create__createDuration(posNegDuration).abs(),
seconds = round(duration.as("s")),
minutes = round(duration.as("m")),
hours = round(duration.as("h")),
days = round(duration.as("d")),
months = round(duration.as("M")),
years = round(duration.as("y")),
a = seconds < thresholds.s && ["s", seconds] || 1 === minutes && ["m"] || minutes < thresholds.m && ["mm", minutes] || 1 === hours && ["h"] || hours < thresholds.h && ["hh", hours] || 1 === days && ["d"] || days < thresholds.d && ["dd", days] || 1 === months && ["M"] || months < thresholds.M && ["MM", months] || 1 === years && ["y"] || ["yy", years];
return a[2] = withoutSuffix, a[3] = +posNegDuration > 0, a[4] = locale, substituteTimeAgo.apply(null, a)
}
function duration_humanize__getSetRelativeTimeThreshold(threshold, limit) {
return void 0 === thresholds[threshold] ? !1 : void 0 === limit ? thresholds[threshold] : (thresholds[threshold] = limit, !0)
}
function humanize(withSuffix) {
var locale = this.localeData(),
output = duration_humanize__relativeTime(this, !withSuffix, locale);
return withSuffix && (output = locale.pastFuture(+this, output)), locale.postformat(output)
}
function iso_string__toISOString() {
var Y = iso_string__abs(this.years()),
M = iso_string__abs(this.months()),
D = iso_string__abs(this.days()),
h = iso_string__abs(this.hours()),
m = iso_string__abs(this.minutes()),
s = iso_string__abs(this.seconds() + this.milliseconds() / 1e3),
total = this.asSeconds();
return total ? (0 > total ? "-" : "") + "P" + (Y ? Y + "Y" : "") + (M ? M + "M" : "") + (D ? D + "D" : "") + (h || m || s ? "T" : "") + (h ? h + "H" : "") + (m ? m + "M" : "") + (s ? s + "S" : "") : "P0D"
}
var hookCallback, globalLocale, momentProperties = utils_hooks__hooks.momentProperties = [],
updateInProgress = !1,
locales = {}, aliases = {}, formattingTokens = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|x|X|zz?|ZZ?|.)/g,
localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
formatFunctions = {}, formatTokenFunctions = {}, match1 = /\d/,
match2 = /\d\d/,
match3 = /\d{3}/,
match4 = /\d{4}/,
match6 = /[+-]?\d{6}/,
match1to2 = /\d\d?/,
match1to3 = /\d{1,3}/,
match1to4 = /\d{1,4}/,
match1to6 = /[+-]?\d{1,6}/,
matchUnsigned = /\d+/,
matchSigned = /[+-]?\d+/,
matchOffset = /Z|[+-]\d\d:?\d\d/gi,
matchTimestamp = /[+-]?\d+(\.\d{1,3})?/,
matchWord = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
regexes = {}, tokens = {}, YEAR = 0,
MONTH = 1,
DATE = 2,
HOUR = 3,
MINUTE = 4,
SECOND = 5,
MILLISECOND = 6;
addFormatToken("M", ["MM", 2], "Mo", function() {
return this.month() + 1
}), addFormatToken("MMM", 0, 0, function(format) {
return this.localeData().monthsShort(this, format)
}), addFormatToken("MMMM", 0, 0, function(format) {
return this.localeData().months(this, format)
}), addUnitAlias("month", "M"), addRegexToken("M", match1to2), addRegexToken("MM", match1to2, match2), addRegexToken("MMM", matchWord), addRegexToken("MMMM", matchWord), addParseToken(["M", "MM"], function(input, array) {
array[MONTH] = toInt(input) - 1
}), addParseToken(["MMM", "MMMM"], function(input, array, config, token) {
var month = config._locale.monthsParse(input, token, config._strict);
null != month ? array[MONTH] = month : getParsingFlags(config).invalidMonth = input
});
var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
deprecations = {};
utils_hooks__hooks.suppressDeprecationWarnings = !1;
var from_string__isoRegex = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
isoDates = [
["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/],
["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/],
["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/],
["GGGG-[W]WW", /\d{4}-W\d{2}/],
["YYYY-DDD", /\d{4}-\d{3}/]
],
isoTimes = [
["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d+/],
["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/],
["HH:mm", /(T| )\d\d:\d\d/],
["HH", /(T| )\d\d/]
],
aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
utils_hooks__hooks.createFromInputFallback = deprecate("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.", function(config) {
config._d = new Date(config._i + (config._useUTC ? " UTC" : ""))
}), addFormatToken(0, ["YY", 2], 0, function() {
return this.year() % 100
}), addFormatToken(0, ["YYYY", 4], 0, "year"), addFormatToken(0, ["YYYYY", 5], 0, "year"), addFormatToken(0, ["YYYYYY", 6, !0], 0, "year"), addUnitAlias("year", "y"), addRegexToken("Y", matchSigned), addRegexToken("YY", match1to2, match2), addRegexToken("YYYY", match1to4, match4), addRegexToken("YYYYY", match1to6, match6), addRegexToken("YYYYYY", match1to6, match6), addParseToken(["YYYY", "YYYYY", "YYYYYY"], YEAR), addParseToken("YY", function(input, array) {
array[YEAR] = utils_hooks__hooks.parseTwoDigitYear(input)
}), utils_hooks__hooks.parseTwoDigitYear = function(input) {
return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3)
};
var getSetYear = makeGetSet("FullYear", !1);
addFormatToken("w", ["ww", 2], "wo", "week"), addFormatToken("W", ["WW", 2], "Wo", "isoWeek"), addUnitAlias("week", "w"), addUnitAlias("isoWeek", "W"), addRegexToken("w", match1to2), addRegexToken("ww", match1to2, match2), addRegexToken("W", match1to2), addRegexToken("WW", match1to2, match2), addWeekParseToken(["w", "ww", "W", "WW"], function(input, week, config, token) {
week[token.substr(0, 1)] = toInt(input)
});
var defaultLocaleWeek = {
dow: 0,
doy: 6
};
addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear"), addUnitAlias("dayOfYear", "DDD"), addRegexToken("DDD", match1to3), addRegexToken("DDDD", match3), addParseToken(["DDD", "DDDD"], function(input, array, config) {
config._dayOfYear = toInt(input)
}), utils_hooks__hooks.ISO_8601 = function() {};
var prototypeMin = deprecate("moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548", function() {
var other = local__createLocal.apply(null, arguments);
return this > other ? this : other
}),
prototypeMax = deprecate("moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548", function() {
var other = local__createLocal.apply(null, arguments);
return other > this ? this : other
});
offset("Z", ":"), offset("ZZ", ""), addRegexToken("Z", matchOffset), addRegexToken("ZZ", matchOffset), addParseToken(["Z", "ZZ"], function(input, array, config) {
config._useUTC = !0, config._tzm = offsetFromString(input)
});
var chunkOffset = /([\+\-]|\d\d)/gi;
utils_hooks__hooks.updateOffset = function() {};
var aspNetRegex = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/,
create__isoRegex = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/;
create__createDuration.fn = Duration.prototype;
var add_subtract__add = createAdder(1, "add"),
add_subtract__subtract = createAdder(-1, "subtract");
utils_hooks__hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ";
var lang = deprecate("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(key) {
return void 0 === key ? this.localeData() : this.locale(key)
});
addFormatToken(0, ["gg", 2], 0, function() {
return this.weekYear() % 100
}), addFormatToken(0, ["GG", 2], 0, function() {
return this.isoWeekYear() % 100
}), addWeekYearFormatToken("gggg", "weekYear"), addWeekYearFormatToken("ggggg", "weekYear"), addWeekYearFormatToken("GGGG", "isoWeekYear"), addWeekYearFormatToken("GGGGG", "isoWeekYear"), addUnitAlias("weekYear", "gg"), addUnitAlias("isoWeekYear", "GG"), addRegexToken("G", matchSigned), addRegexToken("g", matchSigned), addRegexToken("GG", match1to2, match2), addRegexToken("gg", match1to2, match2), addRegexToken("GGGG", match1to4, match4), addRegexToken("gggg", match1to4, match4), addRegexToken("GGGGG", match1to6, match6), addRegexToken("ggggg", match1to6, match6), addWeekParseToken(["gggg", "ggggg", "GGGG", "GGGGG"], function(input, week, config, token) {
week[token.substr(0, 2)] = toInt(input)
}), addWeekParseToken(["gg", "GG"], function(input, week, config, token) {
week[token] = utils_hooks__hooks.parseTwoDigitYear(input)
}), addFormatToken("Q", 0, 0, "quarter"), addUnitAlias("quarter", "Q"), addRegexToken("Q", match1), addParseToken("Q", function(input, array) {
array[MONTH] = 3 * (toInt(input) - 1)
}), addFormatToken("D", ["DD", 2], "Do", "date"), addUnitAlias("date", "D"), addRegexToken("D", match1to2), addRegexToken("DD", match1to2, match2), addRegexToken("Do", function(isStrict, locale) {
return isStrict ? locale._ordinalParse : locale._ordinalParseLenient
}), addParseToken(["D", "DD"], DATE), addParseToken("Do", function(input, array) {
array[DATE] = toInt(input.match(match1to2)[0], 10)
});
var getSetDayOfMonth = makeGetSet("Date", !0);
addFormatToken("d", 0, "do", "day"), addFormatToken("dd", 0, 0, function(format) {
return this.localeData().weekdaysMin(this, format)
}), addFormatToken("ddd", 0, 0, function(format) {
return this.localeData().weekdaysShort(this, format)
}), addFormatToken("dddd", 0, 0, function(format) {
return this.localeData().weekdays(this, format)
}), addFormatToken("e", 0, 0, "weekday"), addFormatToken("E", 0, 0, "isoWeekday"), addUnitAlias("day", "d"), addUnitAlias("weekday", "e"), addUnitAlias("isoWeekday", "E"), addRegexToken("d", match1to2), addRegexToken("e", match1to2), addRegexToken("E", match1to2), addRegexToken("dd", matchWord), addRegexToken("ddd", matchWord), addRegexToken("dddd", matchWord), addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config) {
var weekday = config._locale.weekdaysParse(input);
null != weekday ? week.d = weekday : getParsingFlags(config).invalidWeekday = input
}), addWeekParseToken(["d", "e", "E"], function(input, week, config, token) {
week[token] = toInt(input)
});
var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_");
addFormatToken("H", ["HH", 2], 0, "hour"), addFormatToken("h", ["hh", 2], 0, function() {
return this.hours() % 12 || 12
}), meridiem("a", !0), meridiem("A", !1), addUnitAlias("hour", "h"), addRegexToken("a", matchMeridiem), addRegexToken("A", matchMeridiem), addRegexToken("H", match1to2), addRegexToken("h", match1to2), addRegexToken("HH", match1to2, match2), addRegexToken("hh", match1to2, match2), addParseToken(["H", "HH"], HOUR), addParseToken(["a", "A"], function(input, array, config) {
config._isPm = config._locale.isPM(input), config._meridiem = input
}), addParseToken(["h", "hh"], function(input, array, config) {
array[HOUR] = toInt(input), getParsingFlags(config).bigHour = !0
});
var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
getSetHour = makeGetSet("Hours", !0);
addFormatToken("m", ["mm", 2], 0, "minute"), addUnitAlias("minute", "m"), addRegexToken("m", match1to2), addRegexToken("mm", match1to2, match2), addParseToken(["m", "mm"], MINUTE);
var getSetMinute = makeGetSet("Minutes", !1);
addFormatToken("s", ["ss", 2], 0, "second"), addUnitAlias("second", "s"), addRegexToken("s", match1to2), addRegexToken("ss", match1to2, match2), addParseToken(["s", "ss"], SECOND);
var getSetSecond = makeGetSet("Seconds", !1);
addFormatToken("S", 0, 0, function() {
return~~ (this.millisecond() / 100)
}), addFormatToken(0, ["SS", 2], 0, function() {
return~~ (this.millisecond() / 10)
}), millisecond__milliseconds("SSS"), millisecond__milliseconds("SSSS"), addUnitAlias("millisecond", "ms"), addRegexToken("S", match1to3, match1), addRegexToken("SS", match1to3, match2), addRegexToken("SSS", match1to3, match3), addRegexToken("SSSS", matchUnsigned), addParseToken(["S", "SS", "SSS", "SSSS"], function(input, array) {
array[MILLISECOND] = toInt(1e3 * ("0." + input))
});
var getSetMillisecond = makeGetSet("Milliseconds", !1);
addFormatToken("z", 0, 0, "zoneAbbr"), addFormatToken("zz", 0, 0, "zoneName");
var momentPrototype__proto = Moment.prototype;
momentPrototype__proto.add = add_subtract__add, momentPrototype__proto.calendar = moment_calendar__calendar, momentPrototype__proto.clone = clone, momentPrototype__proto.diff = diff, momentPrototype__proto.endOf = endOf, momentPrototype__proto.format = format, momentPrototype__proto.from = from, momentPrototype__proto.fromNow = fromNow, momentPrototype__proto.to = to, momentPrototype__proto.toNow = toNow, momentPrototype__proto.get = getSet, momentPrototype__proto.invalidAt = invalidAt, momentPrototype__proto.isAfter = isAfter, momentPrototype__proto.isBefore = isBefore, momentPrototype__proto.isBetween = isBetween, momentPrototype__proto.isSame = isSame, momentPrototype__proto.isValid = moment_valid__isValid, momentPrototype__proto.lang = lang, momentPrototype__proto.locale = locale, momentPrototype__proto.localeData = localeData, momentPrototype__proto.max = prototypeMax, momentPrototype__proto.min = prototypeMin, momentPrototype__proto.parsingFlags = parsingFlags, momentPrototype__proto.set = getSet, momentPrototype__proto.startOf = startOf, momentPrototype__proto.subtract = add_subtract__subtract, momentPrototype__proto.toArray = toArray, momentPrototype__proto.toDate = toDate, momentPrototype__proto.toISOString = moment_format__toISOString, momentPrototype__proto.toJSON = moment_format__toISOString, momentPrototype__proto.toString = toString, momentPrototype__proto.unix = unix, momentPrototype__proto.valueOf = to_type__valueOf, momentPrototype__proto.year = getSetYear, momentPrototype__proto.isLeapYear = getIsLeapYear, momentPrototype__proto.weekYear = getSetWeekYear, momentPrototype__proto.isoWeekYear = getSetISOWeekYear, momentPrototype__proto.quarter = momentPrototype__proto.quarters = getSetQuarter, momentPrototype__proto.month = getSetMonth, momentPrototype__proto.daysInMonth = getDaysInMonth, momentPrototype__proto.week = momentPrototype__proto.weeks = getSetWeek, momentPrototype__proto.isoWeek = momentPrototype__proto.isoWeeks = getSetISOWeek, momentPrototype__proto.weeksInYear = getWeeksInYear, momentPrototype__proto.isoWeeksInYear = getISOWeeksInYear, momentPrototype__proto.date = getSetDayOfMonth, momentPrototype__proto.day = momentPrototype__proto.days = getSetDayOfWeek, momentPrototype__proto.weekday = getSetLocaleDayOfWeek, momentPrototype__proto.isoWeekday = getSetISODayOfWeek, momentPrototype__proto.dayOfYear = getSetDayOfYear, momentPrototype__proto.hour = momentPrototype__proto.hours = getSetHour, momentPrototype__proto.minute = momentPrototype__proto.minutes = getSetMinute, momentPrototype__proto.second = momentPrototype__proto.seconds = getSetSecond, momentPrototype__proto.millisecond = momentPrototype__proto.milliseconds = getSetMillisecond, momentPrototype__proto.utcOffset = getSetOffset, momentPrototype__proto.utc = setOffsetToUTC, momentPrototype__proto.local = setOffsetToLocal, momentPrototype__proto.parseZone = setOffsetToParsedOffset, momentPrototype__proto.hasAlignedHourOffset = hasAlignedHourOffset, momentPrototype__proto.isDST = isDaylightSavingTime, momentPrototype__proto.isDSTShifted = isDaylightSavingTimeShifted, momentPrototype__proto.isLocal = isLocal, momentPrototype__proto.isUtcOffset = isUtcOffset, momentPrototype__proto.isUtc = isUtc, momentPrototype__proto.isUTC = isUtc, momentPrototype__proto.zoneAbbr = getZoneAbbr, momentPrototype__proto.zoneName = getZoneName, momentPrototype__proto.dates = deprecate("dates accessor is deprecated. Use date instead.", getSetDayOfMonth), momentPrototype__proto.months = deprecate("months accessor is deprecated. Use month instead", getSetMonth), momentPrototype__proto.years = deprecate("years accessor is deprecated. Use year instead", getSetYear), momentPrototype__proto.zone = deprecate("moment().zone is deprecated, use moment().utcOffset instead. https://github.com/moment/moment/issues/1779", getSetZone);
var momentPrototype = momentPrototype__proto,
defaultCalendar = {
sameDay: "[Today at] LT",
nextDay: "[Tomorrow at] LT",
nextWeek: "dddd [at] LT",
lastDay: "[Yesterday at] LT",
lastWeek: "[Last] dddd [at] LT",
sameElse: "L"
}, defaultLongDateFormat = {
LTS: "h:mm:ss A",
LT: "h:mm A",
L: "MM/DD/YYYY",
LL: "MMMM D, YYYY",
LLL: "MMMM D, YYYY LT",
LLLL: "dddd, MMMM D, YYYY LT"
}, defaultInvalidDate = "Invalid date",
defaultOrdinal = "%d",
defaultOrdinalParse = /\d{1,2}/,
defaultRelativeTime = {
future: "in %s",
past: "%s ago",
s: "a few seconds",
m: "a minute",
mm: "%d minutes",
h: "an hour",
hh: "%d hours",
d: "a day",
dd: "%d days",
M: "a month",
MM: "%d months",
y: "a year",
yy: "%d years"
}, prototype__proto = Locale.prototype;
prototype__proto._calendar = defaultCalendar, prototype__proto.calendar = locale_calendar__calendar, prototype__proto._longDateFormat = defaultLongDateFormat, prototype__proto.longDateFormat = longDateFormat, prototype__proto._invalidDate = defaultInvalidDate, prototype__proto.invalidDate = invalidDate, prototype__proto._ordinal = defaultOrdinal, prototype__proto.ordinal = ordinal, prototype__proto._ordinalParse = defaultOrdinalParse, prototype__proto.preparse = preParsePostFormat, prototype__proto.postformat = preParsePostFormat, prototype__proto._relativeTime = defaultRelativeTime, prototype__proto.relativeTime = relative__relativeTime, prototype__proto.pastFuture = pastFuture, prototype__proto.set = locale_set__set, prototype__proto.months = localeMonths, prototype__proto._months = defaultLocaleMonths, prototype__proto.monthsShort = localeMonthsShort, prototype__proto._monthsShort = defaultLocaleMonthsShort, prototype__proto.monthsParse = localeMonthsParse, prototype__proto.week = localeWeek, prototype__proto._week = defaultLocaleWeek, prototype__proto.firstDayOfYear = localeFirstDayOfYear, prototype__proto.firstDayOfWeek = localeFirstDayOfWeek, prototype__proto.weekdays = localeWeekdays, prototype__proto._weekdays = defaultLocaleWeekdays, prototype__proto.weekdaysMin = localeWeekdaysMin, prototype__proto._weekdaysMin = defaultLocaleWeekdaysMin, prototype__proto.weekdaysShort = localeWeekdaysShort, prototype__proto._weekdaysShort = defaultLocaleWeekdaysShort, prototype__proto.weekdaysParse = localeWeekdaysParse, prototype__proto.isPM = localeIsPM, prototype__proto._meridiemParse = defaultLocaleMeridiemParse, prototype__proto.meridiem = localeMeridiem, locale_locales__getSetGlobalLocale("en", {
ordinalParse: /\d{1,2}(th|st|nd|rd)/,
ordinal: function(number) {
var b = number % 10,
output = 1 === toInt(number % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
return number + output
}
}), utils_hooks__hooks.lang = deprecate("moment.lang is deprecated. Use moment.locale instead.", locale_locales__getSetGlobalLocale), utils_hooks__hooks.langData = deprecate("moment.langData is deprecated. Use moment.localeData instead.", locale_locales__getLocale);
var mathAbs = Math.abs,
asMilliseconds = makeAs("ms"),
asSeconds = makeAs("s"),
asMinutes = makeAs("m"),
asHours = makeAs("h"),
asDays = makeAs("d"),
asWeeks = makeAs("w"),
asMonths = makeAs("M"),
asYears = makeAs("y"),
duration_get__milliseconds = makeGetter("milliseconds"),
seconds = makeGetter("seconds"),
minutes = makeGetter("minutes"),
hours = makeGetter("hours"),
days = makeGetter("days"),
months = makeGetter("months"),
years = makeGetter("years"),
round = Math.round,
thresholds = {
s: 45,
m: 45,
h: 22,
d: 26,
M: 11
}, iso_string__abs = Math.abs,
duration_prototype__proto = Duration.prototype;
duration_prototype__proto.abs = duration_abs__abs, duration_prototype__proto.add = duration_add_subtract__add, duration_prototype__proto.subtract = duration_add_subtract__subtract, duration_prototype__proto.as = as, duration_prototype__proto.asMilliseconds = asMilliseconds, duration_prototype__proto.asSeconds = asSeconds, duration_prototype__proto.asMinutes = asMinutes, duration_prototype__proto.asHours = asHours, duration_prototype__proto.asDays = asDays, duration_prototype__proto.asWeeks = asWeeks, duration_prototype__proto.asMonths = asMonths, duration_prototype__proto.asYears = asYears, duration_prototype__proto.valueOf = duration_as__valueOf, duration_prototype__proto._bubble = bubble, duration_prototype__proto.get = duration_get__get, duration_prototype__proto.milliseconds = duration_get__milliseconds, duration_prototype__proto.seconds = seconds, duration_prototype__proto.minutes = minutes, duration_prototype__proto.hours = hours, duration_prototype__proto.days = days, duration_prototype__proto.weeks = weeks, duration_prototype__proto.months = months, duration_prototype__proto.years = years, duration_prototype__proto.humanize = humanize, duration_prototype__proto.toISOString = iso_string__toISOString, duration_prototype__proto.toString = iso_string__toISOString, duration_prototype__proto.toJSON = iso_string__toISOString, duration_prototype__proto.locale = locale, duration_prototype__proto.localeData = localeData, duration_prototype__proto.toIsoString = deprecate("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", iso_string__toISOString), duration_prototype__proto.lang = lang, addFormatToken("X", 0, 0, "unix"), addFormatToken("x", 0, 0, "valueOf"), addRegexToken("x", matchSigned), addRegexToken("X", matchTimestamp), addParseToken("X", function(input, array, config) {
config._d = new Date(1e3 * parseFloat(input, 10))
}), addParseToken("x", function(input, array, config) {
config._d = new Date(toInt(input))
}), utils_hooks__hooks.version = "2.10.3", setHookCallback(local__createLocal), utils_hooks__hooks.fn = momentPrototype, utils_hooks__hooks.min = min, utils_hooks__hooks.max = max, utils_hooks__hooks.utc = create_utc__createUTC, utils_hooks__hooks.unix = moment__createUnix, utils_hooks__hooks.months = lists__listMonths, utils_hooks__hooks.isDate = isDate, utils_hooks__hooks.locale = locale_locales__getSetGlobalLocale, utils_hooks__hooks.invalid = valid__createInvalid, utils_hooks__hooks.duration = create__createDuration, utils_hooks__hooks.isMoment = isMoment, utils_hooks__hooks.weekdays = lists__listWeekdays, utils_hooks__hooks.parseZone = moment__createInZone, utils_hooks__hooks.localeData = locale_locales__getLocale, utils_hooks__hooks.isDuration = isDuration, utils_hooks__hooks.monthsShort = lists__listMonthsShort, utils_hooks__hooks.weekdaysMin = lists__listWeekdaysMin, utils_hooks__hooks.defineLocale = defineLocale, utils_hooks__hooks.weekdaysShort = lists__listWeekdaysShort, utils_hooks__hooks.normalizeUnits = normalizeUnits, utils_hooks__hooks.relativeTimeThreshold = duration_humanize__getSetRelativeTimeThreshold;
var _moment = utils_hooks__hooks;
return _moment
});
var JSCookies = {
getItem: function(sKey) {
return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null
},
setItem: function(sKey, sValue, vEnd, sPath, sDomain, bSecure) {
if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) return !1;
var sExpires = "";
if (vEnd) switch (vEnd.constructor) {
case Number:
sExpires = 1 / 0 === vEnd ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
break;
case String:
sExpires = "; expires=" + vEnd;
break;
case Date:
sExpires = "; expires=" + vEnd.toUTCString()
}
return document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""), !0
},
removeItem: function(sKey, sPath, sDomain) {
return sKey && this.hasItem(sKey) ? (document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : ""), !0) : !1
},
hasItem: function(sKey) {
return new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=").test(document.cookie)
},
keys: function() {
for (var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/), nIdx = 0; nIdx < aKeys.length; nIdx++) aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]);
return aKeys
}
}, splash = splash || {};
splash.sneakyEmailBox = function($) {
var addEmailToBox = function(email_addresses) {
var $holder = $("#email-holder"),
$adder = $("#sneaky-email-adder");
first_split = email_addresses.replace(/[\n,;]/g, ",").split(/,/);
var email, name, new_block;
for (i = 0; i < first_split.length; i++)
if (email_unformatted = $.trim(first_split[i].replace(/[\n,\",<>]/g, "")), email_arr = email_unformatted.split(/ /), email = "", name = "", email_arr.length > 1 ? (email = email_arr.pop(), name = email_arr.join(" ")) : email = email_arr[0], "" != email) {
var cl = isValidEmail(email) ? "legit" : "invalid";
new_block = "" != name ? '<li class="email-item ' + cl + '"><span>' + email + '</span><input type="hidden" class="name-set" value="' + name + '" /><a class="delete" href="#">x</a></li>' : '<li class="email-item ' + cl + '"><span>' + email + '</span><a class="delete" href="#">x</a></li>', $adder.val("").parent("li").before(new_block).end().adjustWidth()
}
$holder.append($adder.parent("li")), $adder.adjustWidth(), $holder.find("li.email-item").length < 1 || $adder.focus()
};
return $(document).ready(function() {
$(document).on("click", "li.email-item", function() {
var $adder = $("#sneaky-email-adder").parent("li"),
$this = $(this);
$this.index() > 0 ? $this.prev().after($adder) : $("#email-holder").prepend($adder), $("#sneaky-email-adder").val($this.find("span").text()).focus().select().adjustWidth(), setTimeout(function() {
$this.remove()
}, 0)
}), $(document).on("click", ".email-item .delete", function() {
var $this = $(this);
return setTimeout(function() {
$this.parent("li").remove()
}, 0), $("#sneaky-email-address").focus(), !1
}), $(document).on("click", "#email-holder", function() {
$(this).find("textarea").focus()
}), $(document).on({
keyup: function() {
var $this = $(this);
if ($("#email-holder").hasClass("contacts-section")) {
if ($this.val().match(/[,;\n\r]/)) return addEmailToBox($this.val()), !1
} else if ($this.val().match(/[, ;\n\r]/)) return addEmailToBox($this.val()), !1;
$this.adjustWidth()
},
keydown: function(e) {
var $this = $(this);
if (13 == e.keyCode || 9 == e.keyCode || 188 == e.keyCode && 0 == e.shiftKey) return 13 == e.keyCode && "" == $.trim($this.val()) && $this.parents("div.subcontent").find("a.addToList").click(), addEmailToBox($this.val()), !1;
if (32 != e.keyCode || $("#email-holder").hasClass("contacts-section")) {
if (8 == e.keyCode && "" == $.trim($this.val())) {
var $previous_block = $this.parent("li").prev();
$previous_block.hasClass("email-item") && $previous_block.remove()
}
} else if (isValidEmail($.trim($this.val()))) return addEmailToBox($this.val()), !1;
$this.adjustWidth()
},
focusout: function() {
var $obj = $(this),
val = $.trim($obj.val()),
$holder = $("#email-holder");
return "" != val ? (addEmailToBox(val), !1) : void($obj.index() + 1 != $obj.parents("ul").find("li").length && $holder.append($("#sneaky-email-adder").parent("li")))
},
focus: function() {
$(this).adjustWidth()
}
}, "#sneaky-email-adder")
}), {
getEmails: function(obj) {
if ("undefined" == typeof obj && (obj = !1), obj) {
var contacts = [];
return $.each($("#email-holder li.legit"), function() {
var contact = {};
if (contact.primary_email = $(this).find("span").html(), contact.primary_identifier = contact.primary_email, $(this).find("input").length > 0) {
var name = $(this).find("input").val(),
name_array = name.split(/ /);
contact.first_name = name_array[0], contact.last_name = name_array[1], contact.first_name_avatar = contact.first_name[0]
} else contact.first_name_avatar = contact.primary_email[0];
contacts.push(contact)
}), contacts
}
var emails = "";
return $.each($("#email-holder li.legit span"), function() {
emails += $(this).html() + ","
}), emails.replace(/(^,)|(,$)/g, "")
}
}
}(jQuery),
function($) {
$.fn.currency = function(options) {
var settings = $.extend({
url: "/api_currency"
}, options),
elems = [];
return this.each(function(idx) {
var elem = {}, $elem = $(this);
return $elem.hasClass("progress") ? !0 : (elem.code = $elem.data("currency") || "USD", elem.amount = $elem.html().replace(/[^0-9]/g, ""), elem.id = idx, elems.push(elem), void $elem.html("").attr("data-currency-id", elem.id).addClass("splash-progress small"))
}), elems.length < 1 ? !1 : void $.ajax({
global: !1,
complete: function() {
$("[data-currency]").removeClass("splash-progress small")
},
url: settings.url,
method: "POST",
data: {
elems: elems
},
dataType: "JSON",
success: function(data) {
for (var i in data.elems) {
var elem = data.elems[i];
$("[data-currency-id='" + elem.id + "']").html(elem.amount)
}
"undefined" != typeof settings.callback && settings.callback()
}
})
}
}(jQuery, _);
var splash = splash || {};
splash.global = function($) {
$(document).ready(function() {
$("input, text").placeholder()
})
}(jQuery), + function($) {
var version = $.fn.jquery.split(" ")[0].split(".");
(version[0] < 2 && version[1] < 9 || 1 == version[0] && 9 == version[1] && version[2] < 1) && console.log("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")
}(jQuery), + function($) {
"use strict";
function Plugin(option, _relatedTarget) {
return this.each(function() {
var $this = $(this),
data = $this.data("bs.modal"),
options = $.extend({}, Modal.DEFAULTS, $this.data(), "object" == typeof option && option);
data || $this.data("bs.modal", data = new Modal(this, options)), "string" == typeof option ? data[option](_relatedTarget) : options.show && data.show(_relatedTarget)
})
}
var Modal = function(element, options) {
this.options = options, this.$body = $(document.body), this.$element = $(element), this.$backdrop = this.isShown = null, this.scrollbarWidth = 0, this.options.remote && this.$element.find(".modal-content").load(this.options.remote, $.proxy(function() {
this.$element.trigger("loaded.bs.modal")
}, this))
};
Modal.VERSION = "3.3.1", Modal.TRANSITION_DURATION = 300, Modal.BACKDROP_TRANSITION_DURATION = 150, Modal.DEFAULTS = {
backdrop: !0,
keyboard: !0,
show: !0
}, Modal.prototype.toggle = function(_relatedTarget) {
return this.isShown ? this.hide() : this.show(_relatedTarget)
}, Modal.prototype.show = function(_relatedTarget) {
var that = this,
e = $.Event("show.bs.modal", {
relatedTarget: _relatedTarget
});
this.$element.trigger(e), this.isShown || e.isDefaultPrevented() || (this.isShown = !0, this.checkScrollbar(), this.setScrollbar(), this.$body.addClass("modal-open"), this.escape(), this.resize(), this.$element.on("click.dismiss.bs.modal", '[data-dismiss="modal"]', $.proxy(this.hide, this)), this.backdrop(function() {
var transition = $.support.transition && that.$element.hasClass("fade");
that.$element.parent().length || that.$element.appendTo(that.$body), that.$element.show().scrollTop(0), that.options.backdrop && that.adjustBackdrop(), that.adjustDialog(), transition && that.$element[0].offsetWidth, that.$element.addClass("in").attr("aria-hidden", !1), that.enforceFocus();
var e = $.Event("shown.bs.modal", {
relatedTarget: _relatedTarget
});
transition ? that.$element.find(".modal-dialog").one("bsTransitionEnd", function() {
that.$element.trigger("focus").trigger(e)
}).emulateTransitionEnd(Modal.TRANSITION_DURATION) : that.$element.trigger("focus").trigger(e)
}))
}, Modal.prototype.hide = function(e) {
e && e.preventDefault(), e = $.Event("hide.bs.modal"), this.$element.trigger(e), this.isShown && !e.isDefaultPrevented() && (this.isShown = !1, this.escape(), this.resize(), $(document).off("focusin.bs.modal"), this.$element.removeClass("in").attr("aria-hidden", !0).off("click.dismiss.bs.modal"), $.support.transition && this.$element.hasClass("fade") ? this.$element.one("bsTransitionEnd", $.proxy(this.hideModal, this)).emulateTransitionEnd(Modal.TRANSITION_DURATION) : this.hideModal())
}, Modal.prototype.enforceFocus = function() {
$(document).off("focusin.bs.modal").on("focusin.bs.modal", $.proxy(function(e) {
this.$element[0] === e.target || this.$element.has(e.target).length || this.$element.trigger("focus")
}, this))
}, Modal.prototype.escape = function() {
this.isShown && this.options.keyboard ? this.$element.on("keydown.dismiss.bs.modal", $.proxy(function(e) {
27 == e.which && this.hide()
}, this)) : this.isShown || this.$element.off("keydown.dismiss.bs.modal")
}, Modal.prototype.resize = function() {
this.isShown ? $(window).on("resize.bs.modal", $.proxy(this.handleUpdate, this)) : $(window).off("resize.bs.modal")
}, Modal.prototype.hideModal = function() {
var that = this;
this.$element.hide(), this.backdrop(function() {
that.$body.removeClass("modal-open"), that.resetAdjustments(), that.resetScrollbar(), that.$element.trigger("hidden.bs.modal")
})
}, Modal.prototype.removeBackdrop = function() {
this.$backdrop && this.$backdrop.remove(), this.$backdrop = null
}, Modal.prototype.backdrop = function(callback) {
var that = this,
animate = this.$element.hasClass("fade") ? "fade" : "";
if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate;
if (this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />').prependTo(this.$element).on("click.dismiss.bs.modal", $.proxy(function(e) {
e.target === e.currentTarget && ("static" == this.options.backdrop ? this.$element[0].focus.call(this.$element[0]) : this.hide.call(this))
}, this)), doAnimate && this.$backdrop[0].offsetWidth, this.$backdrop.addClass("in"), !callback) return;
doAnimate ? this.$backdrop.one("bsTransitionEnd", callback).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass("in");
var callbackRemove = function() {
that.removeBackdrop(), callback && callback()
};
$.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one("bsTransitionEnd", callbackRemove).emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : callbackRemove()
} else callback && callback()
}, Modal.prototype.handleUpdate = function() {
this.options.backdrop && this.adjustBackdrop(), this.adjustDialog()
}, Modal.prototype.adjustBackdrop = function() {
this.$backdrop.css("height", 0).css("height", this.$element[0].scrollHeight)
}, Modal.prototype.adjustDialog = function() {
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight;
this.$element.css({
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : "",
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ""
})
}, Modal.prototype.resetAdjustments = function() {
this.$element.css({
paddingLeft: "",
paddingRight: ""
})
}, Modal.prototype.checkScrollbar = function() {
this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight, this.scrollbarWidth = this.measureScrollbar()
}, Modal.prototype.setScrollbar = function() {
var bodyPad = parseInt(this.$body.css("padding-right") || 0, 10);
this.bodyIsOverflowing && this.$body.css("padding-right", bodyPad + this.scrollbarWidth)
}, Modal.prototype.resetScrollbar = function() {
this.$body.css("padding-right", "")
}, Modal.prototype.measureScrollbar = function() {
var scrollDiv = document.createElement("div");
scrollDiv.className = "modal-scrollbar-measure", this.$body.append(scrollDiv);
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
return this.$body[0].removeChild(scrollDiv), scrollbarWidth
};
var old = $.fn.modal;
$.fn.modal = Plugin, $.fn.modal.Constructor = Modal, $.fn.modal.noConflict = function() {
return $.fn.modal = old, this
}, $(document).on("click.bs.modal.data-api", '[data-toggle="modal"]', function(e) {
var $this = $(this),
href = $this.attr("href"),
$target = $($this.attr("data-target") || href && href.replace(/.*(?=#[^\s]+$)/, "")),
option = $target.data("bs.modal") ? "toggle" : $.extend({
remote: !/#/.test(href) && href
}, $target.data(), $this.data());
$this.is("a") && e.preventDefault(), $target.one("show.bs.modal", function(showEvent) {
showEvent.isDefaultPrevented() || $target.one("hidden.bs.modal", function() {
$this.is(":visible") && $this.trigger("focus")
})
}), Plugin.call($target, option, this)
})
}(jQuery), + function($) {
"use strict";
function transitionEnd() {
var el = document.createElement("bootstrap"),
transEndEventNames = {
WebkitTransition: "webkitTransitionEnd",
MozTransition: "transitionend",
OTransition: "oTransitionEnd otransitionend",
transition: "transitionend"
};
for (var name in transEndEventNames)
if (void 0 !== el.style[name]) return {
end: transEndEventNames[name]
};
return !1
}
$.fn.emulateTransitionEnd = function(duration) {
var called = !1,
$el = this;
$(this).one("bsTransitionEnd", function() {
called = !0
});
var callback = function() {
called || $($el).trigger($.support.transition.end)
};
return setTimeout(callback, duration), this
}, $(function() {
$.support.transition = transitionEnd(), $.support.transition && ($.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function(e) {
return $(e.target).is(this) ? e.handleObj.handler.apply(this, arguments) : void 0
}
})
})
}(jQuery);
var splash = splash || {};
splash.splashModal = function($, _) {
var _initModals = function() {
console.log("There are " + $(".modal-trigger").length + " modals on this page."), _.each($(".modal-trigger"), function(elem) {
_initModal(elem)
})
}, _initModal = function(elem) {
var modalId = $(elem).attr("id") + "_modal";
0 === $("#" + modalId).length && $(elem).attr("data-target", "#" + modalId).on("click", {
elem: elem,
modalId: modalId
}, splash.splashModal.showModal)
};
return {
initModals: function() {
_initModals()
},
showModal: function(e) {
var modalId = e.data.modalId,
elem = e.data.elem;
return e.preventDefault(), e.stopPropagation(), $.when($.ajax({
url: $(elem).data("template"),
error: function(xhr, status) {
alert("error!: " + JSON.stringify(xhr) + " : " + status)
}
})).done(function(html) {
var _template = html;
$("<div/>").appendTo("body").html(_template).addClass("modal").addClass("fade").attr("id", modalId).attr("role", "dialog").attr("aria-labelledby", "myModalLabel").attr("aria-hidden", "true").find(".modal-header h3").html($(elem).attr("data-title")).end().on("show.bs.modal", function() {
$(elem).find(".datepicker").datepicker(), setTimeout(function() {
$(".datepicker").datepicker()
}, 1500)
}).on("shown.bs.modal", function() {
var callbackName = $(elem).attr("data-on-shown");
"undefined" != typeof callbackName && executeFunctionByName(callbackName, window, modalId)
}).on("hide", function() {
$(elem).remove()
});
var data = {};
if ($(elem).data("params-callback")) {
var callbackName = $(elem).attr("data-params-callback");
data = executeFunctionByName(callbackName, window, modalId)
}
$.ajax({
url: $(elem).attr("href"),
data: data,
success: function(response) {
$("#" + modalId).find(".modal-body").html(response).end().find(".modal-submit").click(function() {
var callbackName = $(elem).attr("data-submit-callback");
executeFunctionByName(callbackName, window, modalId)
}).end().modal(), $(".vertical-tabs").tabs({
orientation: "vertical"
}), $(".tabs").tabs()
}
})
}), !1
}
}
}(jQuery, _), splash = window.splash || {},
function($) {
function customFileUpload(input, opts) {
var $input = $(input),
$container = opts.$container,
file = $input[0].files[0],
uploadImgId = opts.uploadImgId,
$placeholder = opts.$placeholder,
$hiddenInput = opts.$hiddenInput,
$clone = $("<input />", {
type: "file",
"class": $input.attr("class"),
id: $input.attr("id"),
name: $input.attr("name")
}).attr("data-customfield-img", $input.data("customfield-img")).attr("num", $input.attr("num")).attr("data-content", "Click to upload a file."),
isImage = "image/jpg" === file.type || "image/jpeg" === file.type || "image/png" === file.type || "image/gif" === file.type,
afterUpload = opts.afterUpload;
if (!$placeholder || !isImage) return void $placeholder.removeClass("has-img").find("img").remove();
submittable(!1), $placeholder.removeClass("has-img").find("img").remove();
var maxImgWidth = 600,
maxImgHeight = 600;
"undefined" != typeof _event.metadata.growth_machine && "1" == _event.metadata.growth_machine && (maxImgWidth = 1200, maxImgHeight = 1200);
var is_required = !1;
$clone.hasClass("required") && (is_required = !0), canvasResize(file, {
width: maxImgWidth,
height: maxImgHeight,
crop: !1,
quality: 80,
rotate: 0,
callback: function(dataUrl) {
var blob = dataURItoBlob(dataUrl);
if (dataUrl && blob) {
$input.replaceWith($clone), is_required && $clone.removeClass("required"), $container.find(".rsvp-form-uploaded-pic").remove();
var $imgHtml = $("<img>").addClass("rsvp-form-uploaded-pic").attr("src", dataUrl);
$container.addClass("has-img loading").remove("img").append($imgHtml), $container.find(".nu-loader").addClass("loading").show();
var ajaxBlob = new FormData;
ajaxBlob.append("custom_field_" + uploadImgId, blob), ajaxBlob.append("action", "upload-custom-rsvp-file"), $.ajax({
url: window.location.pathname,
type: "POST",
data: ajaxBlob,
dataType: "json",
processData: !1,
contentType: !1
}).done(function(response) {
$hiddenInput.val(response[uploadImgId].path), $hiddenInput.attr("name").match(/custom_field/) && $hiddenInput.attr("name", "custom_field_imgdata[" + uploadImgId + "]"), $container.removeClass("loading").find(".nu-loader").fadeOut(), "function" == typeof afterUpload && afterUpload(response[uploadImgId].path)
}).fail(function() {
$placeholder.fadeOut(), is_required && $clone.addClass("required")
}).always(function() {
submittable(!0)
})
} else submittable(!0), is_required && $clone.addClass("required")
}
})
}
var submittable = function(canSubmit) {
$form = $("#rsvp-real-form.realForm"), $submitButton = $("#rsvp-submit", $form), canSubmit ? ($submitButton.removeAttr("disabled").css("opacity", 1), $submitButton.siblings(".processing-img").hide()) : ($submitButton.attr("disabled", !0).css("opacity", .1), $submitButton.siblings(".processing-img").show())
}, dataURItoBlob = function(dataURI, type) {
for (var byteString = atob(dataURI.split(",")[1]), ab = new ArrayBuffer(byteString.length), ia = new Uint8Array(ab), i = 0; i < byteString.length; i++) ia[i] = byteString.charCodeAt(i);
return new Blob([ab], {
type: type
})
};
splash.customFileUpload = customFileUpload
}(jQuery);
var checkForUpdates = !0,
_gaq = _gaq || [];
_gaq.push(["_setAccount", "UA-19623827-1"]), _gaq.push(["_trackPageview"]);
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
current_text, typingTimer, doneTypingInterval = 600,
openAccountDropdown = !1;
$(document).ready(function() {
$("#plannersDropdown").click(function() {
return $("#event-contact-count").click(), !1
}), $("#accountDropdown").click(function() {
var $this = $(this);
$this.hasClass("open") || ($this.addClass("open"), openAccountDropdown = !0)
}), $("#closeAccountDropdown").click(function() {
return $("#accountDropdown").removeClass("open"), openAccountDropdown = !1, !1
}), $("#dropdownAvatar").click(function() {
return $("#accountDropdown").hasClass("open") ? ($("#accountDropdown").removeClass("open"), openAccountDropdown = !1, !1) : void 0
}), $("html").click(function(e) {
openAccountDropdown && "accountDropdown" != e.target.id && $(e.target).parents("#accountDropdown").length < 1 && ($("#accountDropdown").removeClass("open"), openAccountDropdown = !1)
}), $.fn.truncate = function(limit) {
return $(this).val().length < limit ? $(this).val() : $(this).val().substr(0, limit) + ".."
}, $.fn.adjustWidth = function() {
$(this).width($(this).val().length < 5 ? 50 : 10 * $(this).val().length)
}
});
var modal_visible = !1,
modal_offset;
splash = splash ? splash : {}, splash.analytics = function($) {
var active = !1,
log = !0;
if ("undefined" != typeof splash && "undefined" != typeof splash.server && "undefined" != typeof splash.server._event && "undefined" != typeof splash.server._event.home_page) var pageName = "Loaded Home Page";
else var pageName = "Splash Page Load";
var pathnames = {
"^/events/create/[0-9]+": {
load: function() {
return !0
},
page: "Started Create Flow",
identify: !0
},
"^/events": {
load: function() {
return !0
},
page: "Loaded Event Dashboard",
identify: !0,
condition: function() {
return !1
}
},
"^/email_builder": {
load: function() {
return !0
},
page: "Loaded Event Dashboard",
identify: !0,
condition: function() {
return !1
}
},
"^/photos": {
load: function() {
return !0
},
page: "Loaded Photo Dashboard",
identify: !0,
condition: function() {
return !1
}
},
"^/contacts": {
load: function() {
return !0
},
page: "Loaded Contacts Dashboard",
identify: !0,
condition: function() {
return !1
}
},
"^/address_book/groups": {
load: function() {
return !0
},
page: "Loaded Reporting Dashboard",
identify: !0,
condition: function() {
return !1
}
},
"^/account": {
load: function() {
return !0
},
page: "Loaded Account Page",
identify: !0,
condition: function() {
return !1
}
},
"^/signup$": {
load: function() {
return !0
},
page: "Loaded Signup Page",
identify: !0
},
"^/login$": {
load: function() {
return !0
},
page: "Loaded Login Page",
identify: !0
},
"^/profile": {
load: function() {
return !0
},
page: "Loaded Profile Page",
identify: !0,
condition: function() {
return !1
}
},
"^/packages": {
load: function() {
return !0
},
page: "Loaded packages Page",
identify: !0,
condition: function() {
return !1
}
},
"^/purchase": {
load: function() {
return !0
},
page: "Loaded purchase Page",
identify: !0,
condition: function() {
return !1
}
},
"^/$": {
load: function() {
return !0
},
page: pageName,
identify: !0,
reset: function() {
return !0
}
},
"^/sites/view/": {
load: function() {
return !0
},
page: pageName,
identify: !0,
reset: function() {
return !0
}
},
"/experiential$": {
load: function() {
return !0
},
page: "Loaded " + window.location.pathname.replace("/", "").toUpperCase() + " Page",
identify: !0,
reset: function() {
return !0
}
},
"/(press|terms|careers|privacy|about|ab|enterprise|experiential|halloffame|upgrade|packages|pricing|ebook.best.event.email.marketing.plan|resources|features?)$": {
load: function() {
return !0
},
page: "Loaded " + window.location.pathname.replace("/", "").toUpperCase() + " Page",
identify: !0,
reset: function() {
return !0
}
}
}, _initPage = function(pathname) {
var page_name = pathnames[pathname].page;
_page(null, page_name)
}, _init = function() {
if ("undefined" != typeof splash.server && "undefined" != typeof splash.server.constants && "undefined" != typeof splash.server.constants.segment_write_key && "" != splash.server.constants.segment_write_key) {
("undefined" == typeof splash.server.constants.ocbDomain || "splashthat.com" == splash.server.constants.ocbDomain) && (log = !1);
var currentPathname = window.location.pathname;
for (var pathname in pathnames) {
var re = new RegExp(pathname);
if (currentPathname.match(re) && ("undefined" == typeof pathnames[pathname].load || pathnames[pathname].load())) {
var analyticsSettings = pathnames[pathname];
_load(function() {
_reset(analyticsSettings, function() {
"undefined" != typeof pathnames[pathname].identify ? ("undefined" != typeof splash.server.constants.analyticsAlias && splash.server.constants.analyticsAlias && _alias(), _identify(function() {
_initPage(pathname)
})) : "undefined" != typeof pathnames[pathname].page && _initPage(pathname)
})
});
break
}
}
}
}, _load = function(callback) {
if (active) {
var name = name ? name : $(document).find("title").text();
properties = properties ? properties : {}, options = options ? options : {}, "undefined" != typeof window.location.hash && (properties.hash = window.location.hash), "undefined" != typeof splash.server._event && ("undefined" != typeof splash.server._event.id && (properties.event_id = splash.server._event.id), "undefined" != typeof splash.server._event.domain && "undefined" != typeof splash.server._event.domain.effective && (properties.event_domain = splash.server._event.domain.effective)), "undefined" != typeof splash.server._user && ("undefined" != typeof splash.server._user.id && (properties.user_id = splash.server._user.id, options.userId = splash.server._user.id), "undefined" != typeof splash.server._user.admin && (properties.admin = splash.server._user.admin, options.admin = splash.server._user.admin)), "undefined" != typeof $.browser && ("undefined" != typeof $.browser.name && (properties.browser = $.browser.name), "undefined" != typeof $.browser.fullVersion && (properties.browser_version = $.browser.fullVersion), "undefined" != typeof $.browser.device && (properties.device = 0 != typeof $.browser.device ? $.browser.device : "non-mobile")), "undefined" != typeof navigator && "undefined" != typeof navigator.userAgent && (properties.user_agent = navigator.userAgent), analytics.page(category, name, properties, options, callback), log && _log("page. " + name)
}
}, _identify = function(callback) {
if (active && "undefined" != typeof splash.server._user && "undefined" != typeof splash.server._user.anonymousId) {
var user_id = "undefined" != typeof splash.server._user.id ? splash.server._user.id : null;
analytics.identify(user_id, {}, {}, callback), _log("identify.")
}
}, _track = function(event_name, properties, options, callback) {
if (active) {
properties = properties ? properties : {}, options = options ? options : {}, "undefined" != typeof window.location.href && (properties.path = window.location.href), "undefined" != typeof splash.server._user && ("undefined" != typeof splash.server._user.id && (properties.user_id = splash.server._user.id, options.userId = splash.server._user.id), "undefined" != typeof splash.server._user.organization_id && (properties.user_organization_id = splash.server._user.organization_id, options.userOrganizationId = splash.server._user.organization_id), "undefined" != typeof splash.server._user.created && (properties.user_signup_date = splash.server._user.created, options.userSignupDate = splash.server._user.created), "undefined" != typeof splash.server._user.admin && (properties.admin = splash.server._user.admin, options.admin = splash.server._user.admin)), "undefined" != typeof splash.server._event && ("undefined" != typeof splash.server._event.id && (properties.event_id = splash.server._event.id), "undefined" != typeof splash.server._event.domain && "undefined" != typeof splash.server._event.domain.effective && (properties.event_domain = splash.server._event.domain.effective)), "undefined" != typeof $.browser && ("undefined" != typeof $.browser.name && (properties.browser = $.browser.name), "undefined" != typeof $.browser.fullVersion && (properties.browser_version = $.browser.fullVersion), "undefined" != typeof $.browser.device && (properties.device = 0 != typeof $.browser.device ? $.browser.device : "non-mobile")), "undefined" != typeof navigator && "undefined" != typeof navigator.userAgent && (properties.user_agent = navigator.userAgent), $.ajax({
url: "/tracking/add",
type: "POST",
global: !1,
data: {
items: [{
event_name: event_name,
properties: properties,
options: options
}]
},
success: function() {},
error: function() {}
}), analytics.track(event_name, properties, options, callback);
var logMessage = event_name;
properties.message && (logMessage += ". " + properties.message), _log("event. " + logMessage)
}
}, _alias = function() {
"undefined" != typeof splash.server._user && "undefined" != typeof splash.server._user.id ? (analytics.alias(splash.server._user.id), _log("alias.")) : _log("alias error: undefined ids.")
}, _reset = function(analyticsSettings, callback) {
"undefined" != typeof analyticsSettings.reset && analyticsSettings.reset() && ("undefined" != typeof mixpanel && mixpanel.cookie && mixpanel.cookie.clear(), _log("Mixpanel reset."), analytics.reset(), _log("Reset.")), "function" == typeof callback && callback()
}, _trackError = function(errorCode, message, otherData) {
if (trackingParams = {
errorCode: errorCode,
message: message
}, otherData)
for (var i in otherData) trackingParams[i] = otherData[i];
_track("Error", trackingParams)
}, _isActive = function() {
return active
}, _setLog = function(bool) {
return "undefined" == typeof bool || null == bool ? log : void(log = bool)
}, _log = function(message) {
log && console.log("Segment " + message)
};
return {
init: _init,
load: _load,
page: _page,
identify: _identify,
reset: _reset,
track: _track,
trackError: _trackError,
isActive: _isActive,
setLog: _setLog
}
}(jQuery), splash.analytics.init(), $(document).on("mousedown", ".nu-dropdown", function() {
var $this = $(this);
bindSplashDropdown($this, !0)
}), $(document).on("click", ".nu-accord", function() {
bindSplashAccordion($(this), !0)
}), $(document).on("mouseover", ".nu-tiptip", function() {
var $this = $(this);
$this.data("splash-tip") !== !0 && ($this.data("splash-tip", !0), bindSplashTip($this))
}), $(document).on("click", ".nu-checkbox", function(e) {
"undefined" != typeof e && e.preventDefault && e.preventDefault();
var $this = $(this);
$this.data("splash-check") !== !0 && ($this.data("splash-check", !0), bindSplashCheck($this))
}), $(document).on("click", ".nu-radio", function(ev) {
var $this = $(this);
$this.data("splash-radio") !== !0 && ($this.data("splash-radio", !0), bindSplashRadio($this, ev))
}), $(document).on("click", "a", function(event) {
"#" == $(this).attr("href") && event.preventDefault()
}), $(document).ready(function() {
new Object;
$("#firstViewCloseWrap").on("click", ".viewCloseBtn", function() {
$("body").removeClass("firstViewOpen")
}), $("#flashMessage").length > 0 && setTimeout(function() {
$("#flashMessage").fadeOut()
}, 7e3), $("i.close-flash-message").click(function() {
$("#flashMessage").fadeOut(500)
}), $("#signin-link").click(function(event) {
event.preventDefault();
var $this = $(this),
$form = $("#quick-signin");
return $this.hasClass("in-progress") ? !1 : ($this.addClass("in-progress"), void($this.hasClass("open") ? ($this.removeClass("open"), $form.slideUp(100, function() {
$form.css("height", "0px"), $this.removeClass("in-progress")
})) : ($this.addClass("open"), $form.show().animate({
height: "110px"
}, 500, "easeOutBounce", function() {
$form.find("input:first").focus(), $this.removeClass("in-progress")
}))))
});
var bC = [];
for (var i in $.browser) "version" != i && bC.push(i);
$("body").addClass(bC.join(" "));
var $input_address_autocomplete = $("input.address-autocomplete");
$input_address_autocomplete.length && setAddressAutocomplete($input_address_autocomplete);
var $input_short_date = $("input.input-type-short-date");
$input_short_date.datepicker({
dateFormat: "mm/dd/yy"
});
var $input_short_date = $("input.input-type-time");
$input_short_date.length && ($input_short_date.closest("#rsvp-form-inner").length > 0 ? $input_short_date.timepicker({
appendTo: "#rsvp-form-inner"
}) : $input_short_date.closest("#cc-form").length > 0 ? $input_short_date.timepicker({
appendTo: "#cc-form"
}) : $input_short_date.timepicker()), $(".simple-modal-closing-layer").on("click", function(event) {
"simple-modal-ajax" == splash.modal.stack.getCurrent() && $("#custom-style-editor-header").length || (event.preventDefault(), closeSimpleModal())
}), $("html").keyup(function(e) {
27 == e.which && !splash.finetune && splash.modal.stack.getCurrent() && closeSimpleModal()
})
});
var wasOpen = !1,
typingTimer, domain_focus = !1,
doneTypingInterval = 750,
previousVal = "";
$(document).on("click", ".simple-reveal", function() {
var $link = $(this);
fireAjaxModal($link)
}), $(document).on("click", ".closeSimpleModal, a.close-modal-link, .close-modal, .simple-modal .close-simple-modal", function(event) {
event.preventDefault(), $(this).hasClass("close-persistent") ? closeSimpleModal({
persistent: !0
}) : closeSimpleModal()
}), $(document).on("click", ".sleeker .sections-nav .section", function() {
var $self = $(this),
$modal = $self.parents(".simple-modal:first"),
section = $self.attr("data-opt");
return section && ($modal.find(".content-container").removeClass("active").addClass("hide").end().find('.content-container[data-opt="' + section + '"]').addClass("active").removeClass("hide"), splash.analytics.track("Viewed Section Category", {
type: "add-new-element" === splash.modal.getCurrent().attr("id") ? "element" : "block",
category: section
})), $modal.find(".sections-nav .section").removeClass("active"), $self.addClass("active"), !1
}), splash.modal = function($) {
return {
getCurrent: function() {
var current = splash.modal.stack.getCurrent();
if (current && current.id) {
var id = current.id;
return $("#" + id)
}
return $()
}
}
}(jQuery), splash.modal.stack = function() {
return stack = [], currentModal = null, {
pop: function() {
return currentModal = stack.pop()
},
put: function(modal, persistent) {
"string" == typeof modal && (modal = {
id: modal
}), persistent && 1 == persistent && (modal.persistent = 1), stack.push(currentModal), currentModal = modal
},
getCurrent: function() {
return currentModal
},
editCurrent: function(modalId, params) {
currentModal = {
id: modalId,
params: params
}
},
getStack: function() {
return stack
},
clear: function() {
stack = []
},
isOpen: function(modalId) {
if (currentModal && currentModal.id == modalId) return !0;
for (var i in stack)
if (stack[i] && stack[i].id == modalId) return !0;
return !1
}
}
}(jQuery);
var togglePageLoading = function(isLoading) {
isLoading ? $("body").addClass("loading-page") : $("body").removeClass("loading-page")
}, SplashUI = function() {
{
var $alertHolder = null,
isModalOpen = !1,
_confirm = function(callback, message, button, thisClass, dontClose, params) {
isModalOpen && _hideGrowl(), params || (params = {}), this.hideGrowl();
var btnText = "Confirm",
label = params && params.label ? params.label : "Heads Up:";
"undefined" != typeof button && 0 != button && "" != button && (btnText = button);
var nuClass = "";
"undefined" != typeof thisClass && 0 != thisClass && (nuClass = thisClass);
var html = '<div class="splashui-inner ' + nuClass + '"><p class="splashui-title">' + label + "</p><p>" + message + '</p><button data-confirm-response="1" class="nu-btn nu-btn-sleek splashui-confirm-btn">' + btnText + '</button><button data-confirm-response="0" class="nu-btn nu-btn-sleek plain">Cancel</button></div>',
$modal = $("<div />", {
html: html,
"class": "splashui-confirm"
}).appendTo("body"),
handleResponse = function(response) {
response ? callback.call(null, !0) : callback.call(null, !1), dontClose && 0 != response || ($modal.fadeOut(300, function() {
$(this).remove()
}), $(document).off("keyup.closeConfirm")), isModalOpen = !1
};
$modal.find("input[type=text]:first").length ? $modal.find("input[type=text]:first").focus() : $modal.find('button[data-confirm-response="1"]').focus(), $modal.find("[data-confirm-response]").on("click", function() {
handleResponse("1" == $(this).data("confirm-response"))
}), $modal.on("click", function(e) {
e.stopPropagation()
}), $(document).on("keyup.closeConfirm", function(e) {
27 === e.keyCode && handleResponse(!1)
}), isModalOpen = !0
}, _hideGrowl = function() {
$("#growl-holder").empty(), $(".splashui-confirm,splashui-inner").fadeOut(300, function() {
$(".splashui-confirm,splashui-inner").remove()
}), isModalOpen = !1
}, _isModalOpen = function() {
return isModalOpen
}, _notify = function(message, modal_class, stick_duration) {
this.hideGrowl();
var modal_class = modal_class ? modal_class + " splashui-growl" : "splashui-growl plain",
html = '<div class="splashui-inner"><p>' + message + '</p><button data-dismiss="1" class="nu-btn nu-btn-sleek splashui-confirm-btn">OK</button></div>',
$modal = $("<div />", {
html: html,
"class": modal_class
}).appendTo($alertHolder),
timer = null,
closeModal = function() {
$modal.fadeOut(function() {
$(this).remove()
}), clearTimeout(timer)
}, default_stick_duration = 4e3;
stick_duration !== !1 && (timer = setTimeout(function() {
closeModal()
}, stick_duration || default_stick_duration)), $modal.on("click", function(e) {
e.stopPropagation()
}), $modal.find("[data-dismiss]").on("click", function() {
closeModal()
}), isModalOpen = !0
}, _ask = function(callback, message, confirm_btn_text, stick_duration) {
var confirm_btn_text = confirm_btn_text || "Confirm",
html = '<div class="splashui-inner"><p class="splashui-title">Heads Up:</p><p>' + message + '</p><button data-confirm-response="1" class="nu-btn nu-btn-sleek splashui-confirm-btn">' + confirm_btn_text + '</button><button data-confirm-response="0" class="nu-btn nu-btn-sleek link x-close"></button></div>',
$modal = $("<div />", {
html: html,
"class": "splashui-growl ask"
}),
handleResponse = function(response) {
response ? callback.call(null, !0) : callback.call(null, !1), $modal.fadeOut(300, function() {
$(this).remove()
}), $(document).off("keyup.closeGrowl")
}, timer = null,
closeModal = function() {
$modal.fadeOut(function() {
$(this).remove()
}), clearTimeout(timer)
}, default_stick_duration = 5e3;
stick_duration !== !1 && (timer = setTimeout(function() {
closeModal()
}, stick_duration || default_stick_duration)), $alertHolder.html($modal), $modal.on("click", function(e) {
e.stopPropagation()
}), $modal.find('button[data-confirm-response="1"]').focus(), $modal.find("[data-confirm-response]").on("click", function() {
handleResponse("1" == $(this).data("confirm-response"))
}), $modal.on("click", function(e) {
e.stopPropagation()
}), isModalOpen = !0
};
! function() {
$(function() {
$alertHolder = $("<div />", {
id: "growl-holder"
}).appendTo("body")
})
}()
}
return {
confirm: _confirm,
notify: _notify,
ask: _ask,
hideGrowl: _hideGrowl,
isModalOpen: _isModalOpen
}
}();
if (splash.eventIndex = function($) {
var _getEventCardTemplate = function() {
return $("#template-dashboard-hub-card .event-card").clone()
};
return {
eventCard: function(eventData, event_cards_view) {
if ("undefined" == typeof eventData) return !1;
var title = eventData.Event.title,
event_id = eventData.Event.id,
extra_classes = {
card: "",
chkbox: ""
}, venue_name = "",
venue_city = "",
imgUrl = eventData.image;
"" != eventData.Event.venue_name && null != eventData.Event.venue_name ? venue_name = eventData.Event.venue_name : "" != eventData.Event.address && null != eventData.Event.address && (venue_name = eventData.Event.address), "" != eventData.Event.city && null != eventData.Event.city && (venue_city = eventData.Event.city, "" != eventData.Event.state && null != eventData.Event.state && (venue_city += ", " + eventData.Event.state)), "undefined" != typeof eventData.date_tbd && (eventData.start_day = "Date", eventData.start_month = "TBD"), 1 == eventData.EventSetting.venue_tbd ? (venue_name = "Venue TBD", venue_city = "", extra_classes.card += " venue-tbd ") : "" == venue_name && "" == venue_city && (extra_classes.card += " no-venue "), "undefined" != typeof massSelect && massSelect && (extra_classes.card += "selected", extra_classes.chkbox += "checked"), "undefined" != typeof eventData.EventContact && "0" == eventData.EventContact.confirmed && (extra_classes.card += "joinEvent");
var $eventCard = _getEventCardTemplate();
if ("undefined" != typeof eventData.Event.hub_listing && eventData.Event.hub_listing > 0 && (extra_classes.card += " in-hub ", $eventCard.find(".event-card-hub-icon").removeClass("hide").addClass("inHubIcon").find(".iconText").text("In Hub")), "1" == eventData.Event.hub && (extra_classes.card += " hub ", $eventCard.find(".event-card-hub-icon").removeClass("hide").addClass("hubIcon").find(".iconText").text("Event Hub")), "1" == eventData.Event.external && (extra_classes.card += " external hide ", $eventCard.find(".event-card-external-icon").removeClass("hide").addClass("externalIcon"), imgUrl = "/images/event-profile-image-index.jpg"), "undefined" != typeof eventData.stats.counts) {
var rsvpCount = eventData.stats.counts ? addCommas(eventData.stats.counts) : 0;
if ($eventCard.find(".rsvp-count").removeClass("hide").find(".value").text(rsvpCount), eventData.stats.is_converted_to_tickets_from_rsvp && "tickets" == eventData.EventSetting.rsvp_method) var numeral = "Attendees";
else if ("collect" == eventData.EventSetting.rsvp_method) var numeral = "Attendees";
else var numeral = "Tickets Sold";
1 == rsvpCount && (numeral = numeral.replace("Attendees", "Attendee").replace("Tickets", "Ticket")), $eventCard.find(".rsvp-count .text").text(numeral)
}
if ("undefined" != typeof eventData.Statistic && "undefined" != typeof eventData.Statistic.hits && null != eventData.Statistic.hits) {
var viewCount = eventData.Statistic.hits ? addCommas(eventData.Statistic.hits) : 0;
$eventCard.find(".page-views .value").text(viewCount), $eventCard.find(".page-views .text").text(1 == viewCount ? "View" : "Views")
}
return "undefined" != typeof eventData.domain && "" != eventData.domain ? $eventCard.data("domain", eventData.domain) : $eventCard.removeClass("pointer"), $eventCard.attr("event-id", event_id).addClass(extra_classes.card).find(".event-card-bg").attr("event-id", event_id).find(".the-image").css("background", "url('" + imgUrl + "')").end().end().find("label.nu-checkbox").addClass(extra_classes.chkbox).find("input").attr("id", "event-checkbox-" + event_id).end().end().find(".short-date span").text(eventData.start_month.substring(4)).end().find(".short-date small").text(eventData.start_month.substr(0, eventData.start_month.length - 3)).end().find(".view-contact-nu").attr("id", "event-" + event_id).find(".name").text(title).end().find(".venueName").text(venue_name).end().find(".venueCityState").text(venue_city).end().find(".dow").text(eventData.start_day).end().find(".monthDay").text(eventData.start_month).end(), "undefined" != typeof event_cards_view && "hub_modal" == event_cards_view && $eventCard.find(".quick-utils, .viewPageSettings, .viewPageLink, .nu-checkbox").remove(), $eventCard
},
eventRow: function(eventData) {
if ("undefined" == typeof eventData) return !1;
var event_id = (eventData.Event.title, eventData.Event.id),
extra_classes = {
card: "",
chkbox: ""
}, venue_name = "",
venue_city = "";
"" != eventData.Event.venue_name && null != eventData.Event.venue_name ? venue_name = eventData.Event.venue_name : "" != eventData.Event.address && null != eventData.Event.address && (venue_name = eventData.Event.address), "" != eventData.Event.city && null != eventData.Event.city && (venue_city = eventData.Event.city, "" != eventData.Event.state && null != eventData.Event.state && (venue_city += ", " + eventData.Event.state)), "undefined" != typeof eventData.date_tbd && (eventData.start_day = "Date", eventData.start_month = "TBD"), 1 == eventData.EventSetting.venue_tbd ? (venue_name = "Venue TBD", venue_city = "", extra_classes.card += " venue-tbd ") : "" == venue_name && "" == venue_city && (extra_classes.card += " no-venue "), "1" == eventData.Event.hub && (extra_classes.card += " hub "), "undefined" != typeof eventData.Event.hub_listing && eventData.Event.hub_listing > 0 && (extra_classes.card += " in-hub "), "present" == eventData.status && (eventData.status = "in progress"), extra_classes.card += " " + eventData.status + " ", "undefined" != typeof eventData.EventContact && "0" == eventData.EventContact.confirmed && (extra_classes.card += "joinEvent");
var uniqueRecipientCount = "undefined" != typeof eventData.stats.unique_recipient_count ? eventData.stats.unique_recipient_count : "-",
$eventRow = '<tr event-id="' + event_id + '" class="event-card ' + extra_classes.card + '"><td class="event-input"><label class="nu-checkbox selector"><input type="hidden"></label></td><td class="event-title">' + eventData.Event.title + '</td><td class="event-date">' + eventData.shorter_date + '</td><td class="event-status">' + eventData.status + '</td><td class="event-uniques">' + eventData.stats.uniques + '</td><td class="event-hits">' + eventData.stats.pageviews + '</td><td class="event-invites">' + uniqueRecipientCount + '</td><td class="rsvps-number">' + eventData.stats.rsvps + '</td><td class="rsvps-percent">' + eventData.stats.rsvp_percentage + '</td><td class="checkin-number">' + eventData.stats.checkins + '</td><td class="checkin-percent">' + eventData.stats.checked_in_percentage + "</td></tr>";
return $eventRow
}
}
}(jQuery), timezoneDetector = function($) {
var _getTimezone = function(lat, lng, callback) {
$.ajax({
url: "https://maps.googleapis.com/maps/api/timezone/json?location=" + lat + "," + lng + "×tamp=" + Math.round((new Date).getTime() / 1e3).toString() + "&sensor=false"
}).done(function(response) {
"function" == typeof callback && callback(response)
}).fail(function(xhr, options, error) {
console.log("timezoneDetector error, Response: " + xhr.status + " - " + error), "function" == typeof callback && callback()
})
};
return {
getTimezone: _getTimezone
}
}(jQuery), $.fn.fireSimpleModal = function(args) {
var $modal = $(this);
$("body").addClass("lockItUp showSimple");
var $wrap = $("#simple-modal-wrap");
args = args ? args : {}, "edit-settings" == $modal.attr("id") && splash.modal.settings.prepare($modal, args), "undefined" != typeof args.mode ? $modal.attr("mode", args.mode) : $modal.removeAttr("mode");
var currentModal = splash.modal.stack.getCurrent();
if (currentModal && "edit-settings" == currentModal.id) {
var currentTab = splash.modal.settings.getActiveSettingsTab();
splash.modal.stack.editCurrent("edit-settings", {
tab: currentTab
})
}
var persistent = args.persistent ? args.persistent : 0;
return "undefined" != typeof args.fromStack && args.fromStack || splash.modal.stack.put($modal.attr("id"), persistent), $wrap.show().find(".simple-modal-flow-control > .simple-modal, #simple-modal-ajax").hide(), $modal.show().css("display", "inline-block"), "undefined" != typeof openModal && (openModal = !0), $modal
}, splash.module = {}, splash.module.tags = function($) {
var _removedTags = [],
_flagRemovedTag = function(tagName) {
_removedTags.push(tagName)
};
return {
compile: function($tagsInput, params) {
var tagsArray = $tagsInput.tagit("assignedTags"),
tags = [];
params || (params = {});
for (var i in tagsArray) {
var thisTag = {
name: tagsArray[i]
};
params.forced_event_id ? thisTag.event_id = params.forced_event_id : splash.server && splash.server._event && (thisTag.event_id = splash.server._event.id), tags.push(thisTag)
}
for (var i in _removedTags) {
var thisTag = {
name: _removedTags[i],
deleted: 1
};
splash.server && splash.server._event && (thisTag.event_id = splash.server._event.id), tags.push(thisTag)
}
return _removedTags = [], tags
},
clearAll: function($tagsInput) {
$tagsInput.tagit("removeAll")
},
addTag: function($tagsInput, tagName) {
$tagsInput.tagit("createTag", tagName)
},
init: function($tagsInput) {
return "undefined" == typeof $.fn.tagit ? void console.log("Error: couldn't initialize tagit, library not found") : (_removedTags = [], void $tagsInput.tagit({
allowSpaces: !0,
afterTagRemoved: function(event, ui) {
_flagRemovedTag(ui.tagLabel)
}
}).on("change", function() {
$tagsInput.addClass("changes-made")
}))
}
}
}(jQuery), !jQuery.browser) {
jQuery.browser = {}, jQuery.browser.mozilla = !1, jQuery.browser.webkit = !1, jQuery.browser.opera = !1, jQuery.browser.safari = !1, jQuery.browser.chrome = !1, jQuery.browser.msie = !1, jQuery.browser.android = !1, jQuery.browser.blackberry = !1, jQuery.browser.ios = !1, jQuery.browser.operaMobile = !1, jQuery.browser.windowsMobile = !1, jQuery.browser.mobile = !1, jQuery.browser.device = !1;
var mobileDevices = ["android", "ios", "blackberry", "operaMobile", "windowsMobile"],
nAgt = navigator.userAgent;
jQuery.browser.ua = nAgt, jQuery.browser.name = navigator.appName, jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10);
var nameOffset, verOffset, ix;
if (-1 != (verOffset = nAgt.indexOf("Opera"))) jQuery.browser.opera = !0, jQuery.browser.name = "Opera", jQuery.browser.fullVersion = nAgt.substring(verOffset + 6), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8));
else if (-1 != (verOffset = nAgt.indexOf("MSIE"))) jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer", jQuery.browser.fullVersion = nAgt.substring(verOffset + 5);
else if (-1 != nAgt.indexOf("Trident")) {
jQuery.browser.msie = !0, jQuery.browser.name = "Microsoft Internet Explorer";
var start = nAgt.indexOf("rv:") + 3,
end = start + 4;
jQuery.browser.fullVersion = nAgt.substring(start, end)
} else -1 != (verOffset = nAgt.indexOf("Chrome")) ? (jQuery.browser.webkit = !0, jQuery.browser.chrome = !0, jQuery.browser.name = "Chrome", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7)) : -1 != (verOffset = nAgt.indexOf("Safari")) ? (jQuery.browser.webkit = !0, jQuery.browser.safari = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("AppleWebkit")) ? (jQuery.browser.webkit = !0, jQuery.browser.name = "Safari", jQuery.browser.fullVersion = nAgt.substring(verOffset + 7), -1 != (verOffset = nAgt.indexOf("Version")) && (jQuery.browser.fullVersion = nAgt.substring(verOffset + 8))) : -1 != (verOffset = nAgt.indexOf("Firefox")) ? (jQuery.browser.mozilla = !0, jQuery.browser.name = "Firefox", jQuery.browser.fullVersion = nAgt.substring(verOffset + 8)) : (nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/")) && (jQuery.browser.name = nAgt.substring(nameOffset, verOffset), jQuery.browser.fullVersion = nAgt.substring(verOffset + 1), jQuery.browser.name.toLowerCase() == jQuery.browser.name.toUpperCase() && (jQuery.browser.name = navigator.appName));
if (jQuery.browser.android = /Android/i.test(nAgt), jQuery.browser.blackberry = /BlackBerry/i.test(nAgt), jQuery.browser.ios = /iPhone|iPad|iPod/i.test(nAgt), jQuery.browser.operaMobile = /Opera Mini/i.test(nAgt), jQuery.browser.windowsMobile = /IEMobile/i.test(nAgt), jQuery.browser.mobile = jQuery.browser.android || jQuery.browser.blackberry || jQuery.browser.ios || jQuery.browser.windowsMobile || jQuery.browser.operaMobile, mobileDevices.forEach(function(el) {
jQuery.browser[el] && (jQuery.browser.device = el)
}), -1 != (ix = jQuery.browser.fullVersion.indexOf(";")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), -1 != (ix = jQuery.browser.fullVersion.indexOf(" ")) && (jQuery.browser.fullVersion = jQuery.browser.fullVersion.substring(0, ix)), jQuery.browser.majorVersion = parseInt("" + jQuery.browser.fullVersion, 10), isNaN(jQuery.browser.majorVersion) && (jQuery.browser.fullVersion = "" + parseFloat(navigator.appVersion), jQuery.browser.majorVersion = parseInt(navigator.appVersion, 10)), jQuery.browser.version = jQuery.browser.majorVersion, null != navigator.plugins && navigator.plugins.length > 0) jQuery.browser.flash = navigator.plugins["Shockwave Flash"] && !0;
else if (~navigator.userAgent.toLowerCase().indexOf("webtv")) jQuery.browser.flash = !0;
else if (~navigator.appVersion.indexOf("MSIE") && !~navigator.userAgent.indexOf("Opera")) try {
jQuery.browser.flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash") && !0
} catch (e) {}
"undefined" != typeof jQuery.browser.flash && jQuery.browser.flash || (jQuery.browser.flash = !1)
}
var ImageLoader = function(url) {
this.url = url, this.image = null, this.loadEvent = null
};
ImageLoader.prototype = {
load: function() {
this.image = document.createElement("img");
var url = this.url;
if ("" != url) {
var image = this.image,
loadEvent = this.loadEvent;
addListener(this.image, "load", function() {
null != loadEvent && loadEvent(url, image)
}, !1), this.image.src = this.url
}
},
getImage: function() {
return this.image
}
};
//# sourceMappingURL=base-libs.js.map
A key player at the mall | Lemmon Lines