!function(root, doc, factory) { "function" == typeof define && define.amd ? define([ "jquery" ], function($) { return factory($, root, doc), $.mobile; }) : factory(root.jQuery, root, doc); }(this, document, function(jQuery, window3, document1, undefined9) { var $39, $1, nsNormalizeDict, oldFind, rbrace, jqmDataRE, $2, window1, compensateToolbars, $3, undefined1, uuid1, slice, _cleanData, $4, rcapitals, replaceFunction, $5, doc1, bool, docElem, refNode, fakeBody1, div1, $6, support1, $7, self1, $win1, dummyFnToInitNavigate, $8, undefined2, path2, $base, dialogHashKey, $9, undefined3, $10, path1, initialHref, $11, loc1, $12, undefined4, props1, testElement, vendorPrefixes, $13, heldCall, curr, diff1, handler1, lastCall, $14, baseElement, base1, $15, undefined5, originalWidget, keepNativeFactoryDefault, orig1, $16, undefined6, pageTransitionQueue, isPageTransitioning, $17, window2, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, undefined7, rInitialLetter, iconposClass1, $31, $32, $33, $34, $35, $36, meta, initialContent1, disabledZoom, enabledZoom, disabledInitially, $37, $38, undefined8, rDividerListItem, origDefaultFilterCallback; jQuery.mobile = {}, function($, window, undefined) { $.extend($.mobile, { version: "1.4.2", subPageUrlKey: "ui-page", hideUrlBar: !0, keepNative: ":jqmData(role='none'), :jqmData(role='nojs')", activePageClass: "ui-page-active", activeBtnClass: "ui-btn-active", focusClass: "ui-focus", ajaxEnabled: !0, hashListeningEnabled: !0, linkBindingEnabled: !0, defaultPageTransition: "fade", maxTransitionWidth: !1, minScrollBack: 0, defaultDialogTransition: "pop", pageLoadErrorMessage: "Error Loading Page", pageLoadErrorMessageTheme: "a", phonegapNavigationEnabled: !1, autoInitializePage: !0, pushStateEnabled: !0, ignoreContentEnabled: !1, buttonMarkup: { hoverDelay: 200 }, dynamicBaseEnabled: !0, pageContainer: $(), allowCrossDomainPages: !1, dialogHashKey: "&ui-state=dialog" }); }(jQuery, this), nsNormalizeDict = {}, oldFind = ($1 = jQuery).find, rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/, jqmDataRE = /:jqmData\(([^)]*)\)/g, $1.extend($1.mobile, { ns: "", getAttribute: function(element, key) { var data; (element = element.jquery ? element[0] : element) && element.getAttribute && (data = element.getAttribute("data-" + $1.mobile.ns + key)); try { data = "true" === data || "false" !== data && ("null" === data ? null : +data + "" === data ? +data : rbrace.test(data) ? JSON.parse(data) : data); } catch (err) {} return data; }, nsNormalizeDict: nsNormalizeDict, nsNormalize: function(prop) { return nsNormalizeDict[prop] || (nsNormalizeDict[prop] = $1.camelCase($1.mobile.ns + prop)); }, closestPageData: function($target) { return $target.closest(":jqmData(role='page'), :jqmData(role='dialog')").data("mobile-page"); } }), $1.fn.jqmData = function(prop, value) { var result; return void 0 !== prop && (prop && (prop = $1.mobile.nsNormalize(prop)), result = arguments.length < 2 || void 0 === value ? this.data(prop) : this.data(prop, value)), result; }, $1.jqmData = function(elem, prop, value) { var result; return void 0 !== prop && (result = $1.data(elem, prop ? $1.mobile.nsNormalize(prop) : prop, value)), result; }, $1.fn.jqmRemoveData = function(prop) { return this.removeData($1.mobile.nsNormalize(prop)); }, $1.jqmRemoveData = function(elem, prop) { return $1.removeData(elem, $1.mobile.nsNormalize(prop)); }, $1.find = function(selector, context, ret, extra) { return selector.indexOf(":jqmData") > -1 && (selector = selector.replace(jqmDataRE, "[data-" + ($1.mobile.ns || "") + "$1]")), oldFind.call(this, selector, context, ret, extra); }, $1.extend($1.find, oldFind), function($, undefined) { var removeData, orig2, uuid = 0, runiqueId = /^ui-id-\d+$/; function focusable(element, isTabIndexNotNaN) { var map, mapName, img, nodeName = element.nodeName.toLowerCase(); return "area" === nodeName ? (mapName = (map = element.parentNode).name, !!element.href && !!mapName && "map" === map.nodeName.toLowerCase() && !!(img = $("img[usemap=#" + mapName + "]")[0]) && visible(img)) : (/input|select|textarea|button|object/.test(nodeName) ? !element.disabled : "a" === nodeName && element.href || isTabIndexNotNaN) && visible(element); } function visible(element) { return $.expr.filters.visible(element) && !$(element).parents().addBack().filter(function() { return "hidden" === $.css(this, "visibility"); }).length; } $.ui = $.ui || {}, $.extend($.ui, { version: "c0ab71056b936627e8a7821f03c044aec6280a40", 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({ focus: (orig2 = $.fn.focus, function(delay, fn) { return "number" == typeof delay ? this.each(function() { var elem = this; setTimeout(function() { $(elem).focus(), fn && fn.call(elem); }, delay); }) : orig2.apply(this, arguments); }), scrollParent: function() { var scrollParent; return scrollParent = $.ui.ie && /(static|relative)/.test(this.css("position")) || /absolute/.test(this.css("position")) ? this.parents().filter(function() { return /(relative|absolute|fixed)/.test($.css(this, "position")) && /(auto|scroll)/.test($.css(this, "overflow") + $.css(this, "overflow-y") + $.css(this, "overflow-x")); }).eq(0) : this.parents().filter(function() { return /(auto|scroll)/.test($.css(this, "overflow") + $.css(this, "overflow-y") + $.css(this, "overflow-x")); }).eq(0), /fixed/.test(this.css("position")) || !scrollParent.length ? $(this[0].ownerDocument || document1) : scrollParent; }, uniqueId: function() { return this.each(function() { this.id || (this.id = "ui-id-" + ++uuid); }); }, removeUniqueId: function() { return this.each(function() { runiqueId.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); } }), $("").outerWidth(1).jquery || $.each([ "Width", "Height" ], function(i, name) { var side = "Width" === name ? [ "Left", "Right" ] : [ "Top", "Bottom" ], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; 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; } $.fn["inner" + name] = function(size) { return size === undefined ? 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)); }), $("").data("a-b", "a").removeData("a-b").data("a-b") && ($.fn.removeData = (removeData = $.fn.removeData, function(key) { return arguments.length ? removeData.call(this, $.camelCase(key)) : removeData.call(this); })), $.ui.ie = !!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()), $.support.selectstart = "onselectstart" in document1.createElement("div"), $.fn.extend({ disableSelection: function() { return this.bind(($.support.selectstart ? "selectstart" : "mousedown") + ".ui-disableSelection", function(event) { event.preventDefault(); }); }, enableSelection: function() { return this.unbind(".ui-disableSelection"); }, zIndex: function(zIndex) { if (zIndex !== undefined) return this.css("zIndex", zIndex); if (this.length) for(var position, value, elem = $(this[0]); elem.length && elem[0] !== document1;){ if (("absolute" === (position = elem.css("position")) || "relative" === position || "fixed" === position) && !isNaN(value = parseInt(elem.css("zIndex"), 10)) && 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); } }; }(jQuery), $2 = jQuery, window1 = this, compensateToolbars = function(page, desiredHeight) { var pageParent = page.parent(), toolbarsAffectingHeight = [], externalHeaders = pageParent.children(":jqmData(role='header')"), internalHeaders = page.children(":jqmData(role='header')"), externalFooters = pageParent.children(":jqmData(role='footer')"), internalFooters = page.children(":jqmData(role='footer')"); return 0 === internalHeaders.length && externalHeaders.length > 0 && (toolbarsAffectingHeight = toolbarsAffectingHeight.concat(externalHeaders.toArray())), 0 === internalFooters.length && externalFooters.length > 0 && (toolbarsAffectingHeight = toolbarsAffectingHeight.concat(externalFooters.toArray())), $2.each(toolbarsAffectingHeight, function(index, value) { desiredHeight -= $2(value).outerHeight(); }), Math.max(0, desiredHeight); }, $2.extend($2.mobile, { window: $2(window1), document: $2(document1), keyCode: $2.ui.keyCode, behaviors: {}, silentScroll: function(ypos) { "number" !== $2.type(ypos) && (ypos = $2.mobile.defaultHomeScroll), $2.event.special.scrollstart.enabled = !1, setTimeout(function() { window1.scrollTo(0, ypos), $2.mobile.document.trigger("silentscroll", { x: 0, y: ypos }); }, 20), setTimeout(function() { $2.event.special.scrollstart.enabled = !0; }, 150); }, getClosestBaseUrl: function(ele) { var url = $2(ele).closest(".ui-page").jqmData("url"), base = $2.mobile.path.documentBase.hrefNoHash; return $2.mobile.dynamicBaseEnabled && url && $2.mobile.path.isPath(url) || (url = base), $2.mobile.path.makeUrlAbsolute(url, base); }, removeActiveLinkClass: function(forceRemoval) { $2.mobile.activeClickedLink && (!$2.mobile.activeClickedLink.closest("." + $2.mobile.activePageClass).length || forceRemoval) && $2.mobile.activeClickedLink.removeClass($2.mobile.activeBtnClass), $2.mobile.activeClickedLink = null; }, getInheritedTheme: function(el, defaultTheme) { for(var c, m, e = el[0], ltr = "", re = /ui-(bar|body|overlay)-([a-z])\b/; e && (!((c = e.className || "") && (m = re.exec(c))) || !(ltr = m[2]));)e = e.parentNode; return ltr || defaultTheme || "a"; }, enhanceable: function(elements) { return this.haveParents(elements, "enhance"); }, hijackable: function(elements) { return this.haveParents(elements, "ajax"); }, haveParents: function(elements, attr) { if (!$2.mobile.ignoreContentEnabled) return elements; var e, $element, excluded, i, count = elements.length, $newSet = $2(); for(i = 0; i < count; i++){ for($element = elements.eq(i), excluded = !1, e = elements[i]; e;){ if ("false" === (e.getAttribute ? e.getAttribute("data-" + $2.mobile.ns + attr) : "")) { excluded = !0; break; } e = e.parentNode; } excluded || ($newSet = $newSet.add($element)); } return $newSet; }, getScreenHeight: function() { return window1.innerHeight || $2.mobile.window.height(); }, resetActivePageHeight: function(height) { var page = $2("." + $2.mobile.activePageClass), pageHeight = page.height(), pageOuterHeight = page.outerHeight(!0); height = compensateToolbars(page, "number" == typeof height ? height : $2.mobile.getScreenHeight()), page.css("min-height", height - (pageOuterHeight - pageHeight)); }, loading: function() { var loader = this.loading._widget || $2($2.mobile.loader.prototype.defaultHtml).loader(), returnValue = loader.loader.apply(loader, arguments); return this.loading._widget = loader, returnValue; } }), $2.addDependents = function(elem, newDependents) { var $elem = $2(elem), dependents = $elem.jqmData("dependents") || $2(); $elem.jqmData("dependents", $2(dependents).add(newDependents)); }, $2.fn.extend({ removeWithDependents: function() { $2.removeWithDependents(this); }, enhanceWithin: function() { var index, widgetElements = {}, keepNative = $2.mobile.page.prototype.keepNativeSelector(), that = this; for(index in $2.mobile.nojs && $2.mobile.nojs(this), $2.mobile.links && $2.mobile.links(this), $2.mobile.degradeInputsWithin && $2.mobile.degradeInputsWithin(this), $2.fn.buttonMarkup && this.find($2.fn.buttonMarkup.initSelector).not(keepNative).jqmEnhanceable().buttonMarkup(), $2.fn.fieldcontain && this.find(":jqmData(role='fieldcontain')").not(keepNative).jqmEnhanceable().fieldcontain(), $2.each($2.mobile.widgets, function(name, constructor) { if (constructor.initSelector) { var elements = $2.mobile.enhanceable(that.find(constructor.initSelector)); elements.length > 0 && (elements = elements.not(keepNative)), elements.length > 0 && (widgetElements[constructor.prototype.widgetName] = elements); } }), widgetElements)widgetElements[index][index](); return this; }, addDependents: function(newDependents) { $2.addDependents(this, newDependents); }, getEncodedText: function() { return $2("").text(this.text()).html(); }, jqmEnhanceable: function() { return $2.mobile.enhanceable(this); }, jqmHijackable: function() { return $2.mobile.hijackable(this); } }), $2.removeWithDependents = function(nativeElement) { var element = $2(nativeElement); (element.jqmData("dependents") || $2()).remove(), element.remove(); }, $2.addDependents = function(nativeElement, newDependents) { var element = $2(nativeElement), dependents = element.jqmData("dependents") || $2(); element.jqmData("dependents", $2(dependents).add(newDependents)); }, $2.find.matches = function(expr, set) { return $2.find(expr, null, null, set); }, $2.find.matchesSelector = function(node, expr) { return $2.find(expr, null, null, [ node ]).length > 0; }, $3 = jQuery, uuid1 = 0, slice = Array.prototype.slice, _cleanData = $3.cleanData, $3.cleanData = function(elems) { for(var elem, i = 0; null != (elem = elems[i]); i++)try { $3(elem).triggerHandler("remove"); } catch (e) {} _cleanData(elems); }, $3.widget = function(name, base, prototype) { var fullName, existingConstructor, constructor, basePrototype, proxiedPrototype = {}, namespace = name.split(".")[0]; return fullName = namespace + "-" + (name = name.split(".")[1]), prototype || (prototype = base, base = $3.Widget), $3.expr[":"][fullName.toLowerCase()] = function(elem) { return !!$3.data(elem, fullName); }, $3[namespace] = $3[namespace] || {}, existingConstructor = $3[namespace][name], constructor = $3[namespace][name] = function(options, element) { if (!this._createWidget) return new constructor(options, element); arguments.length && this._createWidget(options, element); }, $3.extend(constructor, existingConstructor, { version: prototype.version, _proto: $3.extend({}, prototype), _childConstructors: [] }), basePrototype = new base(), basePrototype.options = $3.widget.extend({}, basePrototype.options), $3.each(prototype, function(prop, value) { if (!$3.isFunction(value)) { proxiedPrototype[prop] = value; return; } proxiedPrototype[prop] = function() { var returnValue, __super = this._super, __superApply = this._superApply; return this._super = function() { return base.prototype[prop].apply(this, arguments); }, this._superApply = function(args) { return base.prototype[prop].apply(this, args); }, returnValue = value.apply(this, arguments), this._super = __super, this._superApply = __superApply, returnValue; }; }), constructor.prototype = $3.widget.extend(basePrototype, { widgetEventPrefix: existingConstructor && basePrototype.widgetEventPrefix || name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName }), existingConstructor ? ($3.each(existingConstructor._childConstructors, function(i, child) { var childPrototype = child.prototype; $3.widget(childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto); }), delete existingConstructor._childConstructors) : base._childConstructors.push(constructor), $3.widget.bridge(name, constructor), constructor; }, $3.widget.extend = function(target) { for(var key, value, input = slice.call(arguments, 1), inputIndex = 0, inputLength = input.length; inputIndex < inputLength; inputIndex++)for(key in input[inputIndex])value = input[inputIndex][key], input[inputIndex].hasOwnProperty(key) && value !== undefined1 && ($3.isPlainObject(value) ? target[key] = $3.isPlainObject(target[key]) ? $3.widget.extend({}, target[key], value) : $3.widget.extend({}, value) : target[key] = value); return target; }, $3.widget.bridge = function(name, object) { var fullName = object.prototype.widgetFullName || name; $3.fn[name] = function(options) { var isMethodCall = "string" == typeof options, args = slice.call(arguments, 1), returnValue = this; return options = !isMethodCall && args.length ? $3.widget.extend.apply(null, [ options ].concat(args)) : options, isMethodCall ? this.each(function() { var methodValue, instance = $3.data(this, fullName); return "instance" === options ? (returnValue = instance, !1) : instance ? $3.isFunction(instance[options]) && "_" !== options.charAt(0) ? (methodValue = instance[options].apply(instance, args)) !== instance && methodValue !== undefined1 ? (returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue, !1) : void 0 : $3.error("no such method '" + options + "' for " + name + " widget instance") : $3.error("cannot call methods on " + name + " prior to initialization; attempted to call method '" + options + "'"); }) : this.each(function() { var instance = $3.data(this, fullName); instance ? instance.option(options || {})._init() : $3.data(this, fullName, new object(options, this)); }), returnValue; }; }, $3.Widget = function() {}, $3.Widget._childConstructors = [], $3.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "
", options: { disabled: !1, create: null }, _createWidget: function(options, element) { element = $3(element || this.defaultElement || this)[0], this.element = $3(element), this.uuid = uuid1++, this.eventNamespace = "." + this.widgetName + this.uuid, this.options = $3.widget.extend({}, this.options, this._getCreateOptions(), options), this.bindings = $3(), this.hoverable = $3(), this.focusable = $3(), element !== this && ($3.data(element, this.widgetFullName, this), this._on(!0, this.element, { remove: function(event) { event.target === element && this.destroy(); } }), this.document = $3(element.style ? element.ownerDocument : element.document || element), this.window = $3(this.document[0].defaultView || this.document[0].parentWindow)), this._create(), this._trigger("create", null, this._getCreateEventData()), this._init(); }, _getCreateOptions: $3.noop, _getCreateEventData: $3.noop, _create: $3.noop, _init: $3.noop, destroy: function() { this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData($3.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: $3.noop, widget: function() { return this.element; }, option: function(key, value) { var parts, curOption, i, options = key; if (0 === arguments.length) return $3.widget.extend({}, this.options); if ("string" == typeof key) { if (options = {}, key = (parts = key.split(".")).shift(), parts.length) { for(i = 0, curOption = options[key] = $3.widget.extend({}, this.options[key]); i < parts.length - 1; i++)curOption[parts[i]] = curOption[parts[i]] || {}, curOption = curOption[parts[i]]; if (key = parts.pop(), value === undefined1) return undefined1 === curOption[key] ? null : curOption[key]; curOption[key] = value; } else { if (value === undefined1) return undefined1 === 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), 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 = $3(element), this.bindings = this.bindings.add(element)) : (handlers = element, element = this.element, delegateElement = this.widget()), $3.each(handlers, function(event, handler) { function handlerProxy() { if (!(!suppressDisabledCheck && (!0 === instance.options.disabled || $3(this).hasClass("ui-state-disabled")))) return ("string" == typeof handler ? instance[handler] : handler).apply(instance, arguments); } "string" != typeof handler && (handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $3.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) { var instance = this; return setTimeout(function() { return ("string" == typeof handler ? instance[handler] : handler).apply(instance, arguments); }, delay || 0); }, _hoverable: function(element) { this.hoverable = this.hoverable.add(element), this._on(element, { mouseenter: function(event) { $3(event.currentTarget).addClass("ui-state-hover"); }, mouseleave: function(event) { $3(event.currentTarget).removeClass("ui-state-hover"); } }); }, _focusable: function(element) { this.focusable = this.focusable.add(element), this._on(element, { focusin: function(event) { $3(event.currentTarget).addClass("ui-state-focus"); }, focusout: function(event) { $3(event.currentTarget).removeClass("ui-state-focus"); } }); }, _trigger: function(type, event, data) { var prop, orig, callback = this.options[type]; if (data = data || {}, (event = $3.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), !($3.isFunction(callback) && !1 === callback.apply(this.element[0], [ event ].concat(data)) || event.isDefaultPrevented()); } }, $3.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect) { $3.Widget.prototype["_" + method] = function(element, options, callback) { "string" == typeof options && (options = { effect: options }); var hasOptions, effectName = options ? !0 === options || "number" == typeof options ? defaultEffect : options.effect || defaultEffect : method; "number" == typeof (options = options || {}) && (options = { duration: options }), hasOptions = !$3.isEmptyObject(options), options.complete = callback, options.delay && element.delay(options.delay), hasOptions && $3.effects && $3.effects.effect[effectName] ? element[method](options) : effectName !== method && element[effectName] ? element[effectName](options.duration, options.easing, callback) : element.queue(function(next) { $3(this)[method](), callback && callback.call(element[0]), next(); }); }; }), $4 = jQuery, rcapitals = /[A-Z]/g, replaceFunction = function(c) { return "-" + c.toLowerCase(); }, $4.extend($4.Widget.prototype, { _getCreateOptions: function() { var option, value, elem = this.element[0], options = {}; if (!$4.mobile.getAttribute(elem, "defaults")) for(option in this.options)null != (value = $4.mobile.getAttribute(elem, option.replace(rcapitals, replaceFunction))) && (options[option] = value); return options; } }), $4.mobile.widget = $4.Widget, function($) { var loaderClass = "ui-loader", $html = $("html"); $.widget("mobile.loader", { options: { theme: "a", textVisible: !1, html: "", text: "loading" }, defaultHtml: "

", fakeFixLoader: function() { var activeBtn = $("." + $.mobile.activeBtnClass).first(); this.element.css({ top: $.support.scrollTop && this.window.scrollTop() + this.window.height() / 2 || activeBtn.length && activeBtn.offset().top || 100 }); }, checkLoaderPosition: function() { var offset = this.element.offset(), scrollTop = this.window.scrollTop(), screenHeight = $.mobile.getScreenHeight(); (offset.top < scrollTop || offset.top - scrollTop > screenHeight) && (this.element.addClass("ui-loader-fakefix"), this.fakeFixLoader(), this.window.unbind("scroll", this.checkLoaderPosition).bind("scroll", $.proxy(this.fakeFixLoader, this))); }, resetHtml: function() { this.element.html($(this.defaultHtml).html()); }, show: function(theme, msgText, textonly) { var textVisible, message, loadSettings; this.resetHtml(), "object" === $.type(theme) ? theme = (loadSettings = $.extend({}, this.options, theme)).theme : (loadSettings = this.options, theme = theme || loadSettings.theme), message = msgText || (!1 === loadSettings.text ? "" : loadSettings.text), $html.addClass("ui-loading"), textVisible = loadSettings.textVisible, this.element.attr("class", loaderClass + " ui-corner-all ui-body-" + theme + " ui-loader-" + (textVisible || msgText || theme.text ? "verbose" : "default") + (loadSettings.textonly || textonly ? " ui-loader-textonly" : "")), loadSettings.html ? this.element.html(loadSettings.html) : this.element.find("h1").text(message), this.element.appendTo($.mobile.pageContainer), this.checkLoaderPosition(), this.window.bind("scroll", $.proxy(this.checkLoaderPosition, this)); }, hide: function() { $html.removeClass("ui-loading"), this.options.text && this.element.removeClass("ui-loader-fakefix"), $.mobile.window.unbind("scroll", this.fakeFixLoader), $.mobile.window.unbind("scroll", this.checkLoaderPosition); } }); }(jQuery, this), function($, window, undefined) { var fake_onhashchange, str_hashchange = "hashchange", doc = document1, special = $.event.special, doc_mode = doc.documentMode, supports_onhashchange = "on" + str_hashchange in window && (doc_mode === undefined || doc_mode > 7); function get_fragment(url) { return "#" + (url = url || location.href).replace(/^[^#]*#?(.*)$/, "$1"); } $.fn[str_hashchange] = function(fn) { return fn ? this.bind(str_hashchange, fn) : this.trigger(str_hashchange); }, $.fn[str_hashchange].delay = 50, special[str_hashchange] = $.extend(special[str_hashchange], { setup: function() { if (supports_onhashchange) return !1; $(fake_onhashchange.start); }, teardown: function() { if (supports_onhashchange) return !1; $(fake_onhashchange.stop); } }), fake_onhashchange = function() { var iframe, iframe_src, timeout_id, self = {}, last_hash = get_fragment(), fn_retval = function(val) { return val; }, history_set = fn_retval, history_get = fn_retval; function poll() { var hash = get_fragment(), history_hash = history_get(last_hash); hash !== last_hash ? (history_set(last_hash = hash, history_hash), $(window).trigger(str_hashchange)) : history_hash !== last_hash && (location.href = location.href.replace(/#.*/, "") + history_hash), timeout_id = setTimeout(poll, $.fn[str_hashchange].delay); } return self.start = function() { timeout_id || poll(); }, self.stop = function() { timeout_id && clearTimeout(timeout_id), timeout_id = undefined; }, !window.attachEvent || window.addEventListener || supports_onhashchange || (self.start = function() { iframe || (iframe_src = (iframe_src = $.fn[str_hashchange].src) && iframe_src + get_fragment(), iframe = $('