{"version":3,"file":"/m/all/js/libs/zepto.js.map","sources":["/m/all/js/libs/zepto.js"],"sourcesContent":["/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\n(function(global, factory) {\n if (typeof define === 'function' && define.amd)\n define(function() { return factory(global) })\n else\n factory(global)\n}(this, function(window) {\n var Zepto = (function() {\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {}, classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize, uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray ||\n function(object){ return object instanceof Array }\n\n zepto.matches = function(element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\n element.mozMatchesSelector || element.oMatchesSelector ||\n element.matchesSelector\n if (matchesSelector) return matchesSelector.call(element, selector)\n // fall back to performing a selector:\n var match, parent = element.parentNode, temp = !parent\n if (temp) (parent = tempParent).appendChild(element)\n match = ~zepto.qsa(parent, selector).indexOf(element)\n temp && tempParent.removeChild(element)\n return match\n }\n\n function type(obj) {\n return obj == null ? String(obj) :\n class2type[toString.call(obj)] || \"object\"\n }\n\n function isFunction(value) { return type(value) == \"function\" }\n function isWindow(obj) { return obj != null && obj == obj.window }\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\n function isObject(obj) { return type(obj) == \"object\" }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj)\n\n return 'function' != type && !isWindow(obj) && (\n 'array' == type || length === 0 ||\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\n )\n }\n\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\n function dasherize(str) {\n return str.replace(/::/g, '/')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\n .replace(/_/g, '-')\n .toLowerCase()\n }\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\n\n function classRE(name) {\n return name in classCache ?\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\n }\n\n function maybeAddPx(name, value) {\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\n }\n\n function defaultDisplay(nodeName) {\n var element, display\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName)\n document.body.appendChild(element)\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\n element.parentNode.removeChild(element)\n display == \"none\" && (display = \"block\")\n elementDisplay[nodeName] = display\n }\n return elementDisplay[nodeName]\n }\n\n function children(element) {\n return 'children' in element ?\n slice.call(element.children) :\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\n }\n\n function Z(dom, selector) {\n var i, len = dom ? dom.length : 0\n for (i = 0; i < len; i++) this[i] = dom[i]\n this.length = len\n this.selector = selector || ''\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function(html, name, properties) {\n var dom, nodes, container\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1>\")\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\n if (!(name in containers)) name = '*'\n\n container = containers[name]\n container.innerHTML = '' + html\n dom = $.each(slice.call(container.childNodes), function(){\n container.removeChild(this)\n })\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom)\n $.each(properties, function(key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\n else nodes.attr(key, value)\n })\n }\n\n return dom\n }\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function(dom, selector) {\n return new Z(dom, selector)\n }\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function(object) {\n return object instanceof zepto.Z\n }\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function(selector, context) {\n var dom\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z()\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim()\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector))\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector)\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector\n else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector)\n // Wrap DOM nodes.\n else if (isObject(selector))\n dom = [selector], selector = null\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector))\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector)\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector)\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector)\n }\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function(selector, context){\n return zepto.init(selector, context)\n }\n\n function extend(target, source, deep) {\n for (key in source)\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\n target[key] = {}\n if (isArray(source[key]) && !isArray(target[key]))\n target[key] = []\n extend(target[key], source[key], deep)\n }\n else if (source[key] !== undefined) target[key] = source[key]\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function(target){\n var deep, args = slice.call(arguments, 1)\n if (typeof target == 'boolean') {\n deep = target\n target = args.shift()\n }\n args.forEach(function(arg){ extend(target, arg, deep) })\n return target\n }\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function(element, selector){\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly)\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\n slice.call(\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n )\n }\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector)\n }\n\n $.contains = document.documentElement.contains ?\n function(parent, node) {\n return parent !== node && parent.contains(node)\n } :\n function(parent, node) {\n while (node && (node = node.parentNode))\n if (node === parent) return true\n return false\n }\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value){\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined\n\n if (value === undefined) return svg ? klass.baseVal : klass\n svg ? (klass.baseVal = value) : (node.className = value)\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ?\n value == \"true\" ||\n ( value == \"false\" ? false :\n value == \"null\" ? null :\n +value + \"\" == value ? +value :\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\n value )\n : value\n } catch(e) {\n return value\n }\n }\n\n $.type = type\n $.isFunction = isFunction\n $.isWindow = isWindow\n $.isArray = isArray\n $.isPlainObject = isPlainObject\n\n $.isEmptyObject = function(obj) {\n var name\n for (name in obj) return false\n return true\n }\n\n $.isNumeric = function(val) {\n var num = Number(val), type = typeof val\n return val != null && type != 'boolean' &&\n (type != 'string' || val.length) &&\n !isNaN(num) && isFinite(num) || false\n }\n\n $.inArray = function(elem, array, i){\n return emptyArray.indexOf.call(array, elem, i)\n }\n\n $.camelCase = camelize\n $.trim = function(str) {\n return str == null ? \"\" : String.prototype.trim.call(str)\n }\n\n // plugin compatibility\n $.uuid = 0\n $.support = { }\n $.expr = { }\n $.noop = function() {}\n\n $.map = function(elements, callback){\n var value, values = [], i, key\n if (likeArray(elements))\n for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i)\n if (value != null) values.push(value)\n }\n else\n for (key in elements) {\n value = callback(elements[key], key)\n if (value != null) values.push(value)\n }\n return flatten(values)\n }\n\n $.each = function(elements, callback){\n var i, key\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++)\n if (callback.call(elements[i], i, elements[i]) === false) return elements\n } else {\n for (key in elements)\n if (callback.call(elements[key], key, elements[key]) === false) return elements\n }\n\n return elements\n }\n\n $.grep = function(elements, callback){\n return filter.call(elements, callback)\n }\n\n if (window.JSON) $.parseJSON = JSON.parse\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\n })\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function(){\n var i, value, args = []\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i]\n args[i] = zepto.isZ(value) ? value.toArray() : value\n }\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function(fn){\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\n },\n slice: function(){\n return $(slice.apply(this, arguments))\n },\n\n ready: function(callback){\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($)\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\n return this\n },\n get: function(idx){\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\n },\n toArray: function(){ return this.get() },\n size: function(){\n return this.length\n },\n remove: function(){\n return this.each(function(){\n if (this.parentNode != null)\n this.parentNode.removeChild(this)\n })\n },\n each: function(callback){\n emptyArray.every.call(this, function(el, idx){\n return callback.call(el, idx, el) !== false\n })\n return this\n },\n filter: function(selector){\n if (isFunction(selector)) return this.not(this.not(selector))\n return $(filter.call(this, function(element){\n return zepto.matches(element, selector)\n }))\n },\n add: function(selector,context){\n return $(uniq(this.concat($(selector,context))))\n },\n is: function(selector){\n return this.length > 0 && zepto.matches(this[0], selector)\n },\n not: function(selector){\n var nodes=[]\n if (isFunction(selector) && selector.call !== undefined)\n this.each(function(idx){\n if (!selector.call(this,idx)) nodes.push(this)\n })\n else {\n var excludes = typeof selector == 'string' ? this.filter(selector) :\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\n this.forEach(function(el){\n if (excludes.indexOf(el) < 0) nodes.push(el)\n })\n }\n return $(nodes)\n },\n has: function(selector){\n return this.filter(function(){\n return isObject(selector) ?\n $.contains(this, selector) :\n $(this).find(selector).size()\n })\n },\n eq: function(idx){\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\n },\n first: function(){\n var el = this[0]\n return el && !isObject(el) ? el : $(el)\n },\n last: function(){\n var el = this[this.length - 1]\n return el && !isObject(el) ? el : $(el)\n },\n find: function(selector){\n var result, $this = this\n if (!selector) result = $()\n else if (typeof selector == 'object')\n result = $(selector).filter(function(){\n var node = this\n return emptyArray.some.call($this, function(parent){\n return $.contains(parent, node)\n })\n })\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\n else result = this.map(function(){ return zepto.qsa(this, selector) })\n return result\n },\n closest: function(selector, context){\n var nodes = [], collection = typeof selector == 'object' && $(selector)\n this.each(function(_, node){\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\n node = node !== context && !isDocument(node) && node.parentNode\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\n })\n return $(nodes)\n },\n parents: function(selector){\n var ancestors = [], nodes = this\n while (nodes.length > 0)\n nodes = $.map(nodes, function(node){\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node)\n return node\n }\n })\n return filtered(ancestors, selector)\n },\n parent: function(selector){\n return filtered(uniq(this.pluck('parentNode')), selector)\n },\n children: function(selector){\n return filtered(this.map(function(){ return children(this) }), selector)\n },\n contents: function() {\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\n },\n siblings: function(selector){\n return filtered(this.map(function(i, el){\n return filter.call(children(el.parentNode), function(child){ return child!==el })\n }), selector)\n },\n empty: function(){\n return this.each(function(){ this.innerHTML = '' })\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function(property){\n return $.map(this, function(el){ return el[property] })\n },\n show: function(){\n return this.each(function(){\n this.style.display == \"none\" && (this.style.display = '')\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\n this.style.display = defaultDisplay(this.nodeName)\n })\n },\n replaceWith: function(newContent){\n return this.before(newContent).remove()\n },\n wrap: function(structure){\n var func = isFunction(structure)\n if (this[0] && !func)\n var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1\n\n return this.each(function(index){\n $(this).wrapAll(\n func ? structure.call(this, index) :\n clone ? dom.cloneNode(true) : dom\n )\n })\n },\n wrapAll: function(structure){\n if (this[0]) {\n $(this[0]).before(structure = $(structure))\n var children\n // drill down to the inmost element\n while ((children = structure.children()).length) structure = children.first()\n $(structure).append(this)\n }\n return this\n },\n wrapInner: function(structure){\n var func = isFunction(structure)\n return this.each(function(index){\n var self = $(this), contents = self.contents(),\n dom = func ? structure.call(this, index) : structure\n contents.length ? contents.wrapAll(dom) : self.append(dom)\n })\n },\n unwrap: function(){\n this.parent().each(function(){\n $(this).replaceWith($(this).children())\n })\n return this\n },\n clone: function(){\n return this.map(function(){ return this.cloneNode(true) })\n },\n hide: function(){\n return this.css(\"display\", \"none\")\n },\n toggle: function(setting){\n return this.each(function(){\n var el = $(this)\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\n })\n },\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\n html: function(html){\n return 0 in arguments ?\n this.each(function(idx){\n var originHtml = this.innerHTML\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\n }) :\n (0 in this ? this[0].innerHTML : null)\n },\n text: function(text){\n return 0 in arguments ?\n this.each(function(idx){\n var newText = funcArg(this, text, idx, this.textContent)\n this.textContent = newText == null ? '' : ''+newText\n }) :\n (0 in this ? this.pluck('textContent').join(\"\") : null)\n },\n attr: function(name, value){\n var result\n return (typeof name == 'string' && !(1 in arguments)) ?\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\n this.each(function(idx){\n if (this.nodeType !== 1) return\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\n })\n },\n removeAttr: function(name){\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\n setAttribute(this, attribute)\n }, this)})\n },\n prop: function(name, value){\n name = propMap[name] || name\n return (1 in arguments) ?\n this.each(function(idx){\n this[name] = funcArg(this, value, idx, this[name])\n }) :\n (this[0] && this[0][name])\n },\n removeProp: function(name){\n name = propMap[name] || name\n return this.each(function(){ delete this[name] })\n },\n data: function(name, value){\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\n\n var data = (1 in arguments) ?\n this.attr(attrName, value) :\n this.attr(attrName)\n\n return data !== null ? deserializeValue(data) : undefined\n },\n val: function(value){\n if (0 in arguments) {\n if (value == null) value = \"\"\n return this.each(function(idx){\n this.value = funcArg(this, value, idx, this.value)\n })\n } else {\n return this[0] && (this[0].multiple ?\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\n this[0].value)\n }\n },\n offset: function(coordinates){\n if (coordinates) return this.each(function(index){\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n }\n\n if ($this.css('position') == 'static') props['position'] = 'relative'\n $this.css(props)\n })\n if (!this.length) return null\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\n return {top: 0, left: 0}\n var obj = this[0].getBoundingClientRect()\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n }\n },\n css: function(property, value){\n if (arguments.length < 2) {\n var element = this[0]\n if (typeof property == 'string') {\n if (!element) return\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\n } else if (isArray(property)) {\n if (!element) return\n var props = {}\n var computedStyle = getComputedStyle(element, '')\n $.each(property, function(_, prop){\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\n })\n return props\n }\n }\n\n var css = ''\n if (type(property) == 'string') {\n if (!value && value !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\n else\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\n } else {\n for (key in property)\n if (!property[key] && property[key] !== 0)\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\n else\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\n }\n\n return this.each(function(){ this.style.cssText += ';' + css })\n },\n index: function(element){\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\n },\n hasClass: function(name){\n if (!name) return false\n return emptyArray.some.call(this, function(el){\n return this.test(className(el))\n }, classRE(name))\n },\n addClass: function(name){\n if (!name) return this\n return this.each(function(idx){\n if (!('className' in this)) return\n classList = []\n var cls = className(this), newName = funcArg(this, name, idx, cls)\n newName.split(/\\s+/g).forEach(function(klass){\n if (!$(this).hasClass(klass)) classList.push(klass)\n }, this)\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\n })\n },\n removeClass: function(name){\n return this.each(function(idx){\n if (!('className' in this)) return\n if (name === undefined) return className(this, '')\n classList = className(this)\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\n classList = classList.replace(classRE(klass), \" \")\n })\n className(this, classList.trim())\n })\n },\n toggleClass: function(name, when){\n if (!name) return this\n return this.each(function(idx){\n var $this = $(this), names = funcArg(this, name, idx, className(this))\n names.split(/\\s+/g).forEach(function(klass){\n (when === undefined ? !$this.hasClass(klass) : when) ?\n $this.addClass(klass) : $this.removeClass(klass)\n })\n })\n },\n scrollTop: function(value){\n if (!this.length) return\n var hasScrollTop = 'scrollTop' in this[0]\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\n return this.each(hasScrollTop ?\n function(){ this.scrollTop = value } :\n function(){ this.scrollTo(this.scrollX, value) })\n },\n scrollLeft: function(value){\n if (!this.length) return\n var hasScrollLeft = 'scrollLeft' in this[0]\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\n return this.each(hasScrollLeft ?\n function(){ this.scrollLeft = value } :\n function(){ this.scrollTo(value, this.scrollY) })\n },\n position: function() {\n if (!this.length) return\n\n var elem = this[0],\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\n\n // Add offsetParent borders\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n }\n },\n offsetParent: function() {\n return this.map(function(){\n var parent = this.offsetParent || document.body\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\n parent = parent.offsetParent\n return parent\n })\n }\n }\n\n // for now\n $.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function(dimension){\n var dimensionProperty =\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\n\n $.fn[dimension] = function(value){\n var offset, el = this[0]\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\n (offset = this.offset()) && offset[dimension]\n else return this.each(function(idx){\n el = $(this)\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\n })\n }\n })\n\n function traverseNode(node, fun) {\n fun(node)\n for (var i = 0, len = node.childNodes.length; i < len; i++)\n traverseNode(node.childNodes[i], fun)\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function(operator, operatorIndex) {\n var inside = operatorIndex % 2 //=> prepend, append\n\n $.fn[operator] = function(){\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType, nodes = $.map(arguments, function(arg) {\n var arr = []\n argType = type(arg)\n if (argType == \"array\") {\n arg.forEach(function(el) {\n if (el.nodeType !== undefined) return arr.push(el)\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\n arr = arr.concat(zepto.fragment(el))\n })\n return arr\n }\n return argType == \"object\" || arg == null ?\n arg : zepto.fragment(arg)\n }),\n parent, copyByClone = this.length > 1\n if (nodes.length < 1) return this\n\n return this.each(function(_, target){\n parent = inside ? target : target.parentNode\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling :\n operatorIndex == 1 ? target.firstChild :\n operatorIndex == 2 ? target :\n null\n\n var parentInDocument = $.contains(document.documentElement, parent)\n\n nodes.forEach(function(node){\n if (copyByClone) node = node.cloneNode(true)\n else if (!parent) return $(node).remove()\n\n parent.insertBefore(node, target)\n if (parentInDocument) traverseNode(node, function(el){\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\n (!el.type || el.type === 'text/javascript') && !el.src){\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\n target['eval'].call(target, el.innerHTML)\n }\n })\n })\n })\n }\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\n $(html)[operator](this)\n return this\n }\n })\n\n zepto.Z.prototype = Z.prototype = $.fn\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq\n zepto.deserializeValue = deserializeValue\n $.zepto = zepto\n\n return $\n})()\n\nwindow.Zepto = Zepto\nwindow.$ === undefined && (window.$ = Zepto)\n\n;(function($){\n var _zid = 1, undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function(obj){ return typeof obj == 'string' },\n handlers = {},\n specialEvents={},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\n\n function zid(element) {\n return element._zid || (element._zid = _zid++)\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event)\n if (event.ns) var matcher = matcherFor(event.ns)\n return (handlers[zid(element)] || []).filter(function(handler) {\n return handler\n && (!event.e || handler.e == event.e)\n && (!event.ns || matcher.test(handler.ns))\n && (!fn || zid(handler.fn) === zid(fn))\n && (!selector || handler.sel == selector)\n })\n }\n function parse(event) {\n var parts = ('' + event).split('.')\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del &&\n (!focusinSupported && (handler.e in focus)) ||\n !!captureSetting\n }\n\n function realEvent(type) {\n return hover[type] || (focusinSupported && focus[type]) || type\n }\n\n function add(element, events, fn, data, selector, delegator, capture){\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\n events.split(/\\s/).forEach(function(event){\n if (event == 'ready') return $(document).ready(fn)\n var handler = parse(event)\n handler.fn = fn\n handler.sel = selector\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function(e){\n var related = e.relatedTarget\n if (!related || (related !== this && !$.contains(this, related)))\n return handler.fn.apply(this, arguments)\n }\n handler.del = delegator\n var callback = delegator || fn\n handler.proxy = function(e){\n e = compatible(e)\n if (e.isImmediatePropagationStopped()) return\n e.data = data\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\n if (result === false) e.preventDefault(), e.stopPropagation()\n return result\n }\n handler.i = set.length\n set.push(handler)\n if ('addEventListener' in element)\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n }\n function remove(element, events, fn, selector, capture){\n var id = zid(element)\n ;(events || '').split(/\\s/).forEach(function(event){\n findHandlers(element, event, fn, selector).forEach(function(handler){\n delete handlers[id][handler.i]\n if ('removeEventListener' in element)\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\n })\n })\n }\n\n $.event = { add: add, remove: remove }\n\n $.proxy = function(fn, context) {\n var args = (2 in arguments) && slice.call(arguments, 2)\n if (isFunction(fn)) {\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\n proxyFn._zid = zid(fn)\n return proxyFn\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn)\n return $.proxy.apply(null, args)\n } else {\n return $.proxy(fn[context], fn)\n }\n } else {\n throw new TypeError(\"expected function\")\n }\n }\n\n $.fn.bind = function(event, data, callback){\n return this.on(event, data, callback)\n }\n $.fn.unbind = function(event, callback){\n return this.off(event, callback)\n }\n $.fn.one = function(event, selector, data, callback){\n return this.on(event, selector, data, callback, 1)\n }\n\n var returnTrue = function(){return true},\n returnFalse = function(){return false},\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n }\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event)\n\n $.each(eventMethods, function(name, predicate) {\n var sourceMethod = source[name]\n event[name] = function(){\n this[predicate] = returnTrue\n return sourceMethod && sourceMethod.apply(source, arguments)\n }\n event[predicate] = returnFalse\n })\n\n event.timeStamp || (event.timeStamp = Date.now())\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\n 'returnValue' in source ? source.returnValue === false :\n source.getPreventDefault && source.getPreventDefault())\n event.isDefaultPrevented = returnTrue\n }\n return event\n }\n\n function createProxy(event) {\n var key, proxy = { originalEvent: event }\n for (key in event)\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\n\n return compatible(proxy, event)\n }\n\n $.fn.delegate = function(selector, event, callback){\n return this.on(event, selector, callback)\n }\n $.fn.undelegate = function(selector, event, callback){\n return this.off(event, selector, callback)\n }\n\n $.fn.live = function(event, callback){\n $(document.body).delegate(this.selector, event, callback)\n return this\n }\n $.fn.die = function(event, callback){\n $(document.body).undelegate(this.selector, event, callback)\n return this\n }\n\n $.fn.on = function(event, selector, data, callback, one){\n var autoRemove, delegator, $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.on(type, selector, data, fn, one)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = data, data = selector, selector = undefined\n if (callback === undefined || data === false)\n callback = data, data = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(_, element){\n if (one) autoRemove = function(e){\n remove(element, e.type, callback)\n return callback.apply(this, arguments)\n }\n\n if (selector) delegator = function(e){\n var evt, match = $(e.target).closest(selector, element).get(0)\n if (match && match !== element) {\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\n }\n }\n\n add(element, event, callback, data, selector, delegator || autoRemove)\n })\n }\n $.fn.off = function(event, selector, callback){\n var $this = this\n if (event && !isString(event)) {\n $.each(event, function(type, fn){\n $this.off(type, selector, fn)\n })\n return $this\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false)\n callback = selector, selector = undefined\n\n if (callback === false) callback = returnFalse\n\n return $this.each(function(){\n remove(this, event, callback, selector)\n })\n }\n\n $.fn.trigger = function(event, args){\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\n event._args = args\n return this.each(function(){\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\n else $(this).triggerHandler(event, args)\n })\n }\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function(event, args){\n var e, result\n this.each(function(i, element){\n e = createProxy(isString(event) ? $.Event(event) : event)\n e._args = args\n e.target = element\n $.each(findHandlers(element, event.type || event), function(i, handler){\n result = handler.proxy(e)\n if (e.isImmediatePropagationStopped()) return false\n })\n })\n return result\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\n $.fn[event] = function(callback) {\n return (0 in arguments) ?\n this.bind(event, callback) :\n this.trigger(event)\n }\n })\n\n $.Event = function(type, props) {\n if (!isString(type)) props = type, type = props.type\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\n event.initEvent(type, bubbles, true)\n return compatible(event)\n }\n\n})(Zepto)\n\n;(function($){\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a')\n\n originAnchor.href = window.location.href\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName)\n $(context).trigger(event, data)\n return !event.isDefaultPrevented()\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\n }\n\n // Number of active Ajax requests\n $.active = 0\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\n }\n function ajaxStop(settings) {\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context\n if (settings.beforeSend.call(context, xhr, settings) === false ||\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\n return false\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context, status = 'success'\n settings.success.call(context, data, status, xhr)\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\n ajaxComplete(status, xhr, settings)\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context\n settings.error.call(context, xhr, type, error)\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\n ajaxComplete(type, xhr, settings)\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context\n settings.complete.call(context, xhr, status)\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\n ajaxStop(settings)\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data\n var context = settings.context\n return settings.dataFilter.call(context, data, type)\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function(options, deferred){\n if (!('type' in options)) return $.ajax(options)\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ?\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function(errorType) {\n $(script).triggerHandler('error', errorType || 'abort')\n },\n xhr = { abort: abort }, abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n $(script).on('load error', function(e, errorType){\n clearTimeout(abortTimeout)\n $(script).off().remove()\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred)\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred)\n }\n\n window[callbackName] = originalCallback\n if (responseData && $.isFunction(originalCallback))\n originalCallback(responseData[0])\n\n originalCallback = responseData = undefined\n })\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort')\n return xhr\n }\n\n window[callbackName] = function(){\n responseData = arguments\n }\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\n document.head.appendChild(script)\n\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\n abort('timeout')\n }, options.timeout)\n\n return xhr\n }\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function () {\n return new window.XMLHttpRequest()\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n }\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0]\n return mime && ( mime == htmlType ? 'html' :\n mime == jsonType ? 'json' :\n scriptTypeRE.test(mime) ? 'script' :\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\n }\n\n function appendQuery(url, query) {\n if (query == '') return url\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\")\n options.data = $.param(options.data, options.traditional)\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\n options.url = appendQuery(options.url, options.data), options.data = undefined\n }\n\n $.ajax = function(options){\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor, hashIndex\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\n\n ajaxStart(settings)\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a')\n urlAnchor.href = settings.url\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\n }\n\n if (!settings.url) settings.url = window.location.toString()\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\n serializeData(settings)\n\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\n if (hasPlaceholder) dataType = 'jsonp'\n\n if (settings.cache === false || (\n (!options || options.cache !== true) &&\n ('script' == dataType || 'jsonp' == dataType)\n ))\n settings.url = appendQuery(settings.url, '_=' + Date.now())\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder)\n settings.url = appendQuery(settings.url,\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\n return $.ajaxJSONP(settings, deferred)\n }\n\n var mime = settings.accepts[dataType],\n headers = { },\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout\n\n if (deferred) deferred.promise(xhr)\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\n setHeader('Accept', mime || '*/*')\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\n }\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\n\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\n xhr.setRequestHeader = setHeader\n\n xhr.onreadystatechange = function(){\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty\n clearTimeout(abortTimeout)\n var result, error = false\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\n result = xhr.response\n else {\n result = xhr.responseText\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings)\n if (dataType == 'script') (1,eval)(result)\n else if (dataType == 'xml') result = xhr.responseXML\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\n } catch (e) { error = e }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\n }\n\n ajaxSuccess(result, xhr, settings, deferred)\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\n }\n }\n }\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort()\n ajaxError(null, 'abort', xhr, settings, deferred)\n return xhr\n }\n\n var async = 'async' in settings ? settings.async : true\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\n\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\n\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\n\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\n xhr.onreadystatechange = empty\n xhr.abort()\n ajaxError(null, 'timeout', xhr, settings, deferred)\n }, settings.timeout)\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null)\n return xhr\n }\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\n if (!$.isFunction(success)) dataType = success, success = undefined\n return {\n url: url\n , data: data\n , success: success\n , dataType: dataType\n }\n }\n\n $.get = function(/* url, data, success, dataType */){\n return $.ajax(parseArguments.apply(null, arguments))\n }\n\n $.post = function(/* url, data, success, dataType */){\n var options = parseArguments.apply(null, arguments)\n options.type = 'POST'\n return $.ajax(options)\n }\n\n $.getJSON = function(/* url, data, success */){\n var options = parseArguments.apply(null, arguments)\n options.dataType = 'json'\n return $.ajax(options)\n }\n\n $.fn.load = function(url, data, success){\n if (!this.length) return this\n var self = this, parts = url.split(/\\s/), selector,\n options = parseArguments(url, data, success),\n callback = options.success\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\n options.success = function(response){\n self.html(selector ?\n $('
').html(response.replace(rscript, \"\")).find(selector)\n : response)\n callback && callback.apply(self, arguments)\n }\n $.ajax(options)\n return this\n }\n\n var escape = encodeURIComponent\n\n function serialize(params, obj, traditional, scope){\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\n $.each(obj, function(key, value) {\n type = $.type(value)\n if (scope) key = traditional ? scope :\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value)\n // recurse into nested objects\n else if (type == \"array\" || (!traditional && type == \"object\"))\n serialize(params, value, traditional, key)\n else params.add(key, value)\n })\n }\n\n $.param = function(obj, traditional){\n var params = []\n params.add = function(key, value) {\n if ($.isFunction(value)) value = value()\n if (value == null) value = \"\"\n this.push(escape(key) + '=' + escape(value))\n }\n serialize(params, obj, traditional)\n return params.join('&').replace(/%20/g, '+')\n }\n})(Zepto)\n\n;(function($){\n $.fn.serializeArray = function() {\n var name, type, result = [],\n add = function(value) {\n if (value.forEach) return value.forEach(add)\n result.push({ name: name, value: value })\n }\n if (this[0]) $.each(this[0].elements, function(_, field){\n type = field.type, name = field.name\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\n ((type != 'radio' && type != 'checkbox') || field.checked))\n add($(field).val())\n })\n return result\n }\n\n $.fn.serialize = function(){\n var result = []\n this.serializeArray().forEach(function(elm){\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\n })\n return result.join('&')\n }\n\n $.fn.submit = function(callback) {\n if (0 in arguments) this.bind('submit', callback)\n else if (this.length) {\n var event = $.Event('submit')\n this.eq(0).trigger(event)\n if (!event.isDefaultPrevented()) this.get(0).submit()\n }\n return this\n }\n\n})(Zepto)\n\n;(function(){\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined)\n } catch(e) {\n var nativeGetComputedStyle = getComputedStyle\n window.getComputedStyle = function(element, pseudoElement){\n try {\n return nativeGetComputedStyle(element, pseudoElement)\n } catch(e) {\n return null\n }\n }\n }\n})()\n return Zepto\n}))\n"],"names":["global","factory","define","amd","this","window","Zepto","type","obj","String","class2type","toString","call","isFunction","value","isWindow","isDocument","nodeType","DOCUMENT_NODE","isObject","isPlainObject","Object","getPrototypeOf","prototype","likeArray","length","$","compact","array","filter","item","flatten","fn","concat","apply","dasherize","str","replace","toLowerCase","classRE","name","classCache","RegExp","maybeAddPx","cssNumber","defaultDisplay","nodeName","element","display","elementDisplay","document","createElement","body","appendChild","getComputedStyle","getPropertyValue","parentNode","removeChild","children","slice","map","childNodes","node","Z","dom","selector","i","len","extend","target","source","deep","key","isArray","undefined","filtered","nodes","funcArg","context","arg","idx","payload","setAttribute","removeAttribute","className","klass","svg","baseVal","deserializeValue","test","parseJSON","e","traverseNode","fun","classList","camelize","uniq","emptyArray","column-count","columns","font-weight","line-height","opacity","z-index","zoom","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","tr","tbody","thead","tfoot","td","th","*","readyRE","simpleSelectorRE","zepto","tempParent","propMap","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","Array","object","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","match","parent","temp","qsa","indexOf","chr","toUpperCase","fragment","html","properties","container","$1","innerHTML","each","attr","isZ","init","trim","find","ready","args","arguments","shift","forEach","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","getElementsByTagName","querySelectorAll","contains","documentElement","isEmptyObject","isNumeric","val","num","Number","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","push","grep","JSON","parse","split","constructor","reduce","sort","splice","toArray","el","readyState","addEventListener","get","size","remove","every","not","add","is","excludes","has","eq","first","last","result","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","property","show","style","replaceWith","newContent","before","wrap","structure","func","clone","index","wrapAll","cloneNode","append","wrapInner","self","unwrap","hide","css","toggle","setting","prev","next","originHtml","text","newText","textContent","join","getAttribute","removeAttr","attribute","prop","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","top","left","getBoundingClientRect","pageXOffset","pageYOffset","width","Math","round","height","computedStyle","removeProperty","cssText","hasClass","addClass","cls","newName","removeClass","toggleClass","when","names","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","parseFloat","detach","dimension","dimensionProperty","m","operator","operatorIndex","inside","argType","arr","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","src","ownerDocument","defaultView","zid","_zid","findHandlers","event","ns","matcher","matcherFor","handlers","handler","sel","parts","eventCapture","captureSetting","del","focusinSupported","focus","realEvent","hover","events","delegator","capture","id","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","isDefaultPrevented","eventMethods","predicate","sourceMethod","returnTrue","returnFalse","timeStamp","Date","now","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","ignoreProperties","isString","specialEvents","blur","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","proxyFn","unshift","TypeError","bind","on","unbind","off","one","stopImmediatePropagation","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","triggerAndReturn","eventName","triggerGlobal","settings","ajaxStart","active","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","status","success","resolveWith","ajaxComplete","ajaxError","error","rejectWith","complete","ajaxDataFilter","dataFilter","mimeToDataType","mime","htmlType","jsonType","scriptTypeRE","xmlTypeRE","appendQuery","url","query","serializeData","options","processData","param","traditional","dataType","parseArguments","serialize","params","scope","hash","jsonpID","rscript","blankRE","originAnchor","href","location","ajaxJSONP","ajax","responseData","abortTimeout","_callbackName","jsonpCallback","callbackName","script","originalCallback","abort","errorType","promise","clearTimeout","head","timeout","setTimeout","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","cache","urlAnchor","hashIndex","Deferred","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","async","open","username","password","xhrFields","send","post","getJSON","load","escape","encodeURIComponent","serializeArray","field","disabled","checked","elm","submit","nativeGetComputedStyle","pseudoElement"],"mappings":"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"}