From 54e4644f5dfee7038ab3783da2f87beb5df6a9a7 Mon Sep 17 00:00:00 2001 From: dnco Date: Wed, 11 Dec 2013 14:52:04 +0000 Subject: [PATCH 1/2] Update quo.js to v2.3.6 --- ajax/libs/quo.js/2.3.6/quo.js | 1357 +++++++++++++++++++++++++++++ ajax/libs/quo.js/2.3.6/quo.min.js | 4 + 2 files changed, 1361 insertions(+) create mode 100755 ajax/libs/quo.js/2.3.6/quo.js create mode 100755 ajax/libs/quo.js/2.3.6/quo.min.js diff --git a/ajax/libs/quo.js/2.3.6/quo.js b/ajax/libs/quo.js/2.3.6/quo.js new file mode 100755 index 000000000..8aa4de1c5 --- /dev/null +++ b/ajax/libs/quo.js/2.3.6/quo.js @@ -0,0 +1,1357 @@ +/* QuoJS v2.3.6 - 2013/5/13 + http://quojs.tapquo.com + Copyright (c) 2013 Javi Jimenez Villar (@soyjavi) - Licensed MIT */ +(function() { + var Quo; + + Quo = (function() { + var $$, EMPTY_ARRAY, Q; + + EMPTY_ARRAY = []; + $$ = function(selector, children) { + var dom; + + if (!selector) { + return Q(); + } else if ($$.toType(selector) === "function") { + return $$(document).ready(selector); + } else { + dom = $$.getDOMObject(selector, children); + return Q(dom, selector); + } + }; + Q = function(dom, selector) { + dom = dom || EMPTY_ARRAY; + dom.__proto__ = Q.prototype; + dom.selector = selector || ''; + return dom; + }; + $$.extend = function(target) { + Array.prototype.slice.call(arguments, 1).forEach(function(source) { + var key, _results; + + _results = []; + for (key in source) { + _results.push(target[key] = source[key]); + } + return _results; + }); + return target; + }; + Q.prototype = $$.fn = {}; + return $$; + })(); + + window.Quo = Quo; + + "$$" in window || (window.$$ = Quo); + +}).call(this); + +(function() { + (function($$) { + var DEFAULT, JSONP_ID, MIME_TYPES, _isJsonP, _parseResponse, _xhrError, _xhrForm, _xhrHeaders, _xhrStatus, _xhrSuccess, _xhrTimeout; + + DEFAULT = { + TYPE: "GET", + MIME: "json" + }; + MIME_TYPES = { + script: "text/javascript, application/javascript", + json: "application/json", + xml: "application/xml, text/xml", + html: "text/html", + text: "text/plain" + }; + JSONP_ID = 0; + $$.ajaxSettings = { + type: DEFAULT.TYPE, + async: true, + success: {}, + error: {}, + context: null, + dataType: DEFAULT.MIME, + headers: {}, + xhr: function() { + return new window.XMLHttpRequest(); + }, + crossDomain: false, + timeout: 0 + }; + $$.ajax = function(options) { + var abortTimeout, error, settings, xhr; + + settings = $$.mix($$.ajaxSettings, options); + if (settings.type === DEFAULT.TYPE) { + settings.url += $$.serializeParameters(settings.data, "?"); + } else { + settings.data = $$.serializeParameters(settings.data); + } + if (_isJsonP(settings.url)) { + return $$.jsonp(settings); + } + xhr = settings.xhr(); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + clearTimeout(abortTimeout); + return _xhrStatus(xhr, settings); + } + }; + xhr.open(settings.type, settings.url, settings.async); + _xhrHeaders(xhr, settings); + if (settings.timeout > 0) { + abortTimeout = setTimeout((function() { + return _xhrTimeout(xhr, settings); + }), settings.timeout); + } + try { + xhr.send(settings.data); + } catch (_error) { + error = _error; + xhr = error; + _xhrError("Resource not found", xhr, settings); + } + if (settings.async) { + return xhr; + } else { + return _parseResponse(xhr, settings); + } + }; + $$.jsonp = function(settings) { + var abortTimeout, callbackName, script, xhr; + + if (settings.async) { + callbackName = "jsonp" + (++JSONP_ID); + script = document.createElement("script"); + xhr = { + abort: function() { + $$(script).remove(); + if (callbackName in window) { + return window[callbackName] = {}; + } + } + }; + abortTimeout = void 0; + window[callbackName] = function(response) { + clearTimeout(abortTimeout); + $$(script).remove(); + delete window[callbackName]; + return _xhrSuccess(response, xhr, settings); + }; + script.src = settings.url.replace(RegExp("=\\?"), "=" + callbackName); + $$("head").append(script); + if (settings.timeout > 0) { + abortTimeout = setTimeout((function() { + return _xhrTimeout(xhr, settings); + }), settings.timeout); + } + return xhr; + } else { + return console.error("QuoJS.ajax: Unable to make jsonp synchronous call."); + } + }; + $$.get = function(url, data, success, dataType) { + return $$.ajax({ + url: url, + data: data, + success: success, + dataType: dataType + }); + }; + $$.post = function(url, data, success, dataType) { + return _xhrForm("POST", url, data, success, dataType); + }; + $$.put = function(url, data, success, dataType) { + return _xhrForm("PUT", url, data, success, dataType); + }; + $$["delete"] = function(url, data, success, dataType) { + return _xhrForm("DELETE", url, data, success, dataType); + }; + $$.json = function(url, data, success) { + return $$.ajax({ + url: url, + data: data, + success: success, + dataType: DEFAULT.MIME + }); + }; + $$.serializeParameters = function(parameters, character) { + var parameter, serialize; + + if (character == null) { + character = ""; + } + serialize = character; + for (parameter in parameters) { + if (parameters.hasOwnProperty(parameter)) { + if (serialize !== character) { + serialize += "&"; + } + serialize += "" + (encodeURIComponent(parameter)) + "=" + (encodeURIComponent(parameters[parameter])); + } + } + if (serialize === character) { + return ""; + } else { + return serialize; + } + }; + _xhrStatus = function(xhr, settings) { + if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 0) { + if (settings.async) { + _xhrSuccess(_parseResponse(xhr, settings), xhr, settings); + } + } else { + _xhrError("QuoJS.ajax: Unsuccesful request", xhr, settings); + } + }; + _xhrSuccess = function(response, xhr, settings) { + settings.success.call(settings.context, response, xhr); + }; + _xhrError = function(type, xhr, settings) { + settings.error.call(settings.context, type, xhr, settings); + }; + _xhrHeaders = function(xhr, settings) { + var header; + + if (settings.contentType) { + settings.headers["Content-Type"] = settings.contentType; + } + if (settings.dataType) { + settings.headers["Accept"] = MIME_TYPES[settings.dataType]; + } + for (header in settings.headers) { + xhr.setRequestHeader(header, settings.headers[header]); + } + }; + _xhrTimeout = function(xhr, settings) { + xhr.onreadystatechange = {}; + xhr.abort(); + _xhrError("QuoJS.ajax: Timeout exceeded", xhr, settings); + }; + _xhrForm = function(method, url, data, success, dataType) { + return $$.ajax({ + type: method, + url: url, + data: data, + success: success, + dataType: dataType, + contentType: "application/x-www-form-urlencoded" + }); + }; + _parseResponse = function(xhr, settings) { + var error, response; + + response = xhr.responseText; + if (response) { + if (settings.dataType === DEFAULT.MIME) { + try { + response = JSON.parse(response); + } catch (_error) { + error = _error; + response = error; + _xhrError("QuoJS.ajax: Parse Error", xhr, settings); + } + } else { + if (settings.dataType === "xml") { + response = xhr.responseXML; + } + } + } + return response; + }; + return _isJsonP = function(url) { + return RegExp("=\\?").test(url); + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var EMPTY_ARRAY, HTML_CONTAINERS, IS_HTML_FRAGMENT, OBJECT_PROTOTYPE, TABLE, TABLE_ROW, _compact, _flatten; + + EMPTY_ARRAY = []; + OBJECT_PROTOTYPE = Object.prototype; + IS_HTML_FRAGMENT = /^\s*<(\w+|!)[^>]*>/; + TABLE = document.createElement('table'); + TABLE_ROW = document.createElement('tr'); + HTML_CONTAINERS = { + "tr": document.createElement("tbody"), + "tbody": TABLE, + "thead": TABLE, + "tfoot": TABLE, + "td": TABLE_ROW, + "th": TABLE_ROW, + "*": document.createElement("div") + }; + $$.toType = function(obj) { + return OBJECT_PROTOTYPE.toString.call(obj).match(/\s([a-z|A-Z]+)/)[1].toLowerCase(); + }; + $$.isOwnProperty = function(object, property) { + return OBJECT_PROTOTYPE.hasOwnProperty.call(object, property); + }; + $$.getDOMObject = function(selector, children) { + var domain, elementTypes, type; + + domain = null; + elementTypes = [1, 9, 11]; + type = $$.toType(selector); + if (type === "array") { + domain = _compact(selector); + } else if (type === "string" && IS_HTML_FRAGMENT.test(selector)) { + domain = $$.fragment(selector.trim(), RegExp.$1); + selector = null; + } else if (type === "string") { + domain = $$.query(document, selector); + if (children) { + if (domain.length === 1) { + domain = $$.query(domain[0], children); + } else { + domain = $$.map(function() { + return $$.query(domain, children); + }); + } + } + } else if (elementTypes.indexOf(selector.nodeType) >= 0 || selector === window) { + domain = [selector]; + selector = null; + } + return domain; + }; + $$.map = function(elements, callback) { + var i, key, value, values; + + values = []; + i = void 0; + key = void 0; + if ($$.toType(elements) === "array") { + i = 0; + while (i < elements.length) { + value = callback(elements[i], i); + if (value != null) { + values.push(value); + } + i++; + } + } else { + for (key in elements) { + value = callback(elements[key], key); + if (value != null) { + values.push(value); + } + } + } + return _flatten(values); + }; + $$.each = function(elements, callback) { + var i, key; + + i = void 0; + key = void 0; + if ($$.toType(elements) === "array") { + i = 0; + while (i < elements.length) { + if (callback.call(elements[i], i, elements[i]) === false) { + return elements; + } + i++; + } + } else { + for (key in elements) { + if (callback.call(elements[key], key, elements[key]) === false) { + return elements; + } + } + } + return elements; + }; + $$.mix = function() { + var arg, argument, child, len, prop; + + child = {}; + arg = 0; + len = arguments.length; + while (arg < len) { + argument = arguments[arg]; + for (prop in argument) { + if ($$.isOwnProperty(argument, prop) && argument[prop] !== undefined) { + child[prop] = argument[prop]; + } + } + arg++; + } + return child; + }; + $$.fragment = function(markup, tag) { + var container; + + if (tag == null) { + tag = "*"; + } + if (!(tag in HTML_CONTAINERS)) { + tag = "*"; + } + container = HTML_CONTAINERS[tag]; + container.innerHTML = "" + markup; + return $$.each(Array.prototype.slice.call(container.childNodes), function() { + return container.removeChild(this); + }); + }; + $$.fn.map = function(fn) { + return $$.map(this, function(el, i) { + return fn.call(el, i, el); + }); + }; + $$.fn.instance = function(property) { + return this.map(function() { + return this[property]; + }); + }; + $$.fn.filter = function(selector) { + return $$([].filter.call(this, function(element) { + return element.parentNode && $$.query(element.parentNode, selector).indexOf(element) >= 0; + })); + }; + $$.fn.forEach = EMPTY_ARRAY.forEach; + $$.fn.indexOf = EMPTY_ARRAY.indexOf; + _compact = function(array) { + return array.filter(function(item) { + return item !== void 0 && item !== null; + }); + }; + return _flatten = function(array) { + if (array.length > 0) { + return [].concat.apply([], array); + } else { + return array; + } + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + $$.fn.attr = function(name, value) { + if (this.length === 0) { + null; + } + if ($$.toType(name) === "string" && value === void 0) { + return this[0].getAttribute(name); + } else { + return this.each(function() { + return this.setAttribute(name, value); + }); + } + }; + $$.fn.removeAttr = function(name) { + return this.each(function() { + return this.removeAttribute(name); + }); + }; + $$.fn.data = function(name, value) { + return this.attr("data-" + name, value); + }; + $$.fn.removeData = function(name) { + return this.removeAttr("data-" + name); + }; + $$.fn.val = function(value) { + if ($$.toType(value) === "string") { + return this.each(function() { + return this.value = value; + }); + } else { + if (this.length > 0) { + return this[0].value; + } else { + return null; + } + } + }; + $$.fn.show = function() { + return this.style("display", "block"); + }; + $$.fn.hide = function() { + return this.style("display", "none"); + }; + $$.fn.height = function() { + var offset; + + offset = this.offset(); + return offset.height; + }; + $$.fn.width = function() { + var offset; + + offset = this.offset(); + return offset.width; + }; + $$.fn.offset = function() { + var bounding; + + bounding = this[0].getBoundingClientRect(); + return { + left: bounding.left + window.pageXOffset, + top: bounding.top + window.pageYOffset, + width: bounding.width, + height: bounding.height + }; + }; + return $$.fn.remove = function() { + return this.each(function() { + if (this.parentNode != null) { + return this.parentNode.removeChild(this); + } + }); + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var IS_WEBKIT, SUPPORTED_OS, _current, _detectBrowser, _detectEnvironment, _detectOS, _detectScreen; + + _current = null; + IS_WEBKIT = /WebKit\/([\d.]+)/; + SUPPORTED_OS = { + Android: /(Android)\s+([\d.]+)/, + ipad: /(iPad).*OS\s([\d_]+)/, + iphone: /(iPhone\sOS)\s([\d_]+)/, + Blackberry: /(BlackBerry|BB10|Playbook).*Version\/([\d.]+)/, + FirefoxOS: /(Mozilla).*Mobile[^\/]*\/([\d\.]*)/, + webOS: /(webOS|hpwOS)[\s\/]([\d.]+)/ + }; + $$.isMobile = function() { + _current = _current || _detectEnvironment(); + return _current.isMobile && _current.os.name !== "firefoxOS"; + }; + $$.environment = function() { + _current = _current || _detectEnvironment(); + return _current; + }; + $$.isOnline = function() { + return navigator.onLine; + }; + _detectEnvironment = function() { + var environment, user_agent; + + user_agent = navigator.userAgent; + environment = {}; + environment.browser = _detectBrowser(user_agent); + environment.os = _detectOS(user_agent); + environment.isMobile = !!environment.os; + environment.screen = _detectScreen(); + return environment; + }; + _detectBrowser = function(user_agent) { + var is_webkit; + + is_webkit = user_agent.match(IS_WEBKIT); + if (is_webkit) { + return is_webkit[0]; + } else { + return user_agent; + } + }; + _detectOS = function(user_agent) { + var detected_os, os, supported; + + detected_os = null; + for (os in SUPPORTED_OS) { + supported = user_agent.match(SUPPORTED_OS[os]); + if (supported) { + detected_os = { + name: (os === "iphone" || os === "ipad" ? "ios" : os), + version: supported[2].replace("_", ".") + }; + break; + } + } + return detected_os; + }; + return _detectScreen = function() { + return { + width: window.innerWidth, + height: window.innerHeight + }; + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var ELEMENT_ID, EVENTS_DESKTOP, EVENT_METHODS, HANDLERS, READY_EXPRESSION, _createProxy, _createProxyCallback, _environmentEvent, _findHandlers, _getElementId, _subscribe, _unsubscribe; + + ELEMENT_ID = 1; + HANDLERS = {}; + EVENT_METHODS = { + preventDefault: "isDefaultPrevented", + stopImmediatePropagation: "isImmediatePropagationStopped", + stopPropagation: "isPropagationStopped" + }; + EVENTS_DESKTOP = { + touchstart: "mousedown", + touchmove: "mousemove", + touchend: "mouseup", + touch: "click", + doubletap: "dblclick", + orientationchange: "resize" + }; + READY_EXPRESSION = /complete|loaded|interactive/; + $$.fn.on = function(event, selector, callback) { + if (selector === "undefined" || $$.toType(selector) === "function") { + return this.bind(event, selector); + } else { + return this.delegate(selector, event, callback); + } + }; + $$.fn.off = function(event, selector, callback) { + if (selector === "undefined" || $$.toType(selector) === "function") { + return this.unbind(event, selector); + } else { + return this.undelegate(selector, event, callback); + } + }; + $$.fn.ready = function(callback) { + if (READY_EXPRESSION.test(document.readyState)) { + return callback($$); + } else { + return $$.fn.addEvent(document, "DOMContentLoaded", function() { + return callback($$); + }); + } + }; + $$.Event = function(type, touch) { + var event, property; + + event = document.createEvent("Events"); + event.initEvent(type, true, true, null, null, null, null, null, null, null, null, null, null, null, null); + if (touch) { + for (property in touch) { + event[property] = touch[property]; + } + } + return event; + }; + $$.fn.bind = function(event, callback) { + return this.each(function() { + _subscribe(this, event, callback); + }); + }; + $$.fn.unbind = function(event, callback) { + return this.each(function() { + _unsubscribe(this, event, callback); + }); + }; + $$.fn.delegate = function(selector, event, callback) { + return this.each(function(i, element) { + _subscribe(element, event, callback, selector, function(fn) { + return function(e) { + var evt, match; + + match = $$(e.target).closest(selector, element).get(0); + if (match) { + evt = $$.extend(_createProxy(e), { + currentTarget: match, + liveFired: element + }); + return fn.apply(match, [evt].concat([].slice.call(arguments, 1))); + } + }; + }); + }); + }; + $$.fn.undelegate = function(selector, event, callback) { + return this.each(function() { + _unsubscribe(this, event, callback, selector); + }); + }; + $$.fn.trigger = function(event, touch, originalEvent) { + if ($$.toType(event) === "string") { + event = $$.Event(event, touch); + } + if (originalEvent != null) { + event.originalEvent = originalEvent; + } + return this.each(function() { + this.dispatchEvent(event); + }); + }; + $$.fn.addEvent = function(element, event_name, callback) { + if (element.addEventListener) { + return element.addEventListener(event_name, callback, false); + } else if (element.attachEvent) { + return element.attachEvent("on" + event_name, callback); + } else { + return element["on" + event_name] = callback; + } + }; + $$.fn.removeEvent = function(element, event_name, callback) { + if (element.removeEventListener) { + return element.removeEventListener(event_name, callback, false); + } else if (element.detachEvent) { + return element.detachEvent("on" + event_name, callback); + } else { + return element["on" + event_name] = null; + } + }; + _subscribe = function(element, event, callback, selector, delegate_callback) { + var delegate, element_handlers, element_id, handler; + + event = _environmentEvent(event); + element_id = _getElementId(element); + element_handlers = HANDLERS[element_id] || (HANDLERS[element_id] = []); + delegate = delegate_callback && delegate_callback(callback, event); + handler = { + event: event, + callback: callback, + selector: selector, + proxy: _createProxyCallback(delegate, callback, element), + delegate: delegate, + index: element_handlers.length + }; + element_handlers.push(handler); + return $$.fn.addEvent(element, handler.event, handler.proxy); + }; + _unsubscribe = function(element, event, callback, selector) { + var element_id; + + event = _environmentEvent(event); + element_id = _getElementId(element); + return _findHandlers(element_id, event, callback, selector).forEach(function(handler) { + delete HANDLERS[element_id][handler.index]; + return $$.fn.removeEvent(element, handler.event, handler.proxy); + }); + }; + _getElementId = function(element) { + return element._id || (element._id = ELEMENT_ID++); + }; + _environmentEvent = function(event) { + var environment_event; + + environment_event = ($$.isMobile() ? event : EVENTS_DESKTOP[event]); + return environment_event || event; + }; + _createProxyCallback = function(delegate, callback, element) { + var proxy; + + callback = delegate || callback; + proxy = function(event) { + var result; + + result = callback.apply(element, [event].concat(event.data)); + if (result === false) { + event.preventDefault(); + } + return result; + }; + return proxy; + }; + _findHandlers = function(element_id, event, fn, selector) { + return (HANDLERS[element_id] || []).filter(function(handler) { + return handler && (!event || handler.event === event) && (!fn || handler.callback === fn) && (!selector || handler.selector === selector); + }); + }; + return _createProxy = function(event) { + var proxy; + + proxy = $$.extend({ + originalEvent: event + }, event); + $$.each(EVENT_METHODS, function(name, method) { + proxy[name] = function() { + this[method] = function() { + return true; + }; + return event[name].apply(event, arguments); + }; + return proxy[method] = function() { + return false; + }; + }); + return proxy; + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var CURRENT_TOUCH, EVENT, FIRST_TOUCH, GESTURE, GESTURES, HOLD_DELAY, TAPS, TOUCH_TIMEOUT, _angle, _capturePinch, _captureRotation, _cleanGesture, _distance, _fingersPosition, _getTouches, _hold, _isSwipe, _listenTouches, _onTouchEnd, _onTouchMove, _onTouchStart, _parentIfText, _swipeDirection, _trigger; + + TAPS = null; + EVENT = void 0; + GESTURE = {}; + FIRST_TOUCH = []; + CURRENT_TOUCH = []; + TOUCH_TIMEOUT = void 0; + HOLD_DELAY = 650; + GESTURES = ["touch", "tap", "singleTap", "doubleTap", "hold", "swipe", "swiping", "swipeLeft", "swipeRight", "swipeUp", "swipeDown", "rotate", "rotating", "rotateLeft", "rotateRight", "pinch", "pinching", "pinchIn", "pinchOut", "drag", "dragLeft", "dragRight", "dragUp", "dragDown"]; + GESTURES.forEach(function(event) { + $$.fn[event] = function(callback) { + var event_name; + + event_name = event === "touch" ? "touchend" : event; + return $$(document.body).delegate(this.selector, event_name, callback); + }; + return this; + }); + $$(document).ready(function() { + return _listenTouches(); + }); + _listenTouches = function() { + var environment; + + environment = $$(document.body); + environment.bind("touchstart", _onTouchStart); + environment.bind("touchmove", _onTouchMove); + environment.bind("touchend", _onTouchEnd); + return environment.bind("touchcancel", _cleanGesture); + }; + _onTouchStart = function(event) { + var delta, fingers, now, touches; + + EVENT = event; + now = Date.now(); + delta = now - (GESTURE.last || now); + TOUCH_TIMEOUT && clearTimeout(TOUCH_TIMEOUT); + touches = _getTouches(event); + fingers = touches.length; + FIRST_TOUCH = _fingersPosition(touches, fingers); + GESTURE.el = $$(_parentIfText(touches[0].target)); + GESTURE.fingers = fingers; + GESTURE.last = now; + if (!GESTURE.taps) { + GESTURE.taps = 0; + } + GESTURE.taps++; + if (fingers === 1) { + if (fingers >= 1) { + GESTURE.gap = delta > 0 && delta <= 250; + } + return setTimeout(_hold, HOLD_DELAY); + } else if (fingers === 2) { + GESTURE.initial_angle = parseInt(_angle(FIRST_TOUCH), 10); + GESTURE.initial_distance = parseInt(_distance(FIRST_TOUCH), 10); + GESTURE.angle_difference = 0; + return GESTURE.distance_difference = 0; + } + }; + _onTouchMove = function(event) { + var fingers, is_swipe, touches; + + EVENT = event; + if (GESTURE.el) { + touches = _getTouches(event); + fingers = touches.length; + if (fingers === GESTURE.fingers) { + CURRENT_TOUCH = _fingersPosition(touches, fingers); + is_swipe = _isSwipe(event); + if (is_swipe) { + GESTURE.prevSwipe = true; + } + if (is_swipe || GESTURE.prevSwipe === true) { + _trigger("swiping"); + } + if (fingers === 2) { + _captureRotation(); + _capturePinch(); + event.preventDefault(); + } + } else { + _cleanGesture(); + } + } + return true; + }; + _isSwipe = function(event) { + var it_is, move_horizontal, move_vertical; + + it_is = false; + if (CURRENT_TOUCH[0]) { + move_horizontal = Math.abs(FIRST_TOUCH[0].x - CURRENT_TOUCH[0].x) > 30; + move_vertical = Math.abs(FIRST_TOUCH[0].y - CURRENT_TOUCH[0].y) > 30; + it_is = GESTURE.el && (move_horizontal || move_vertical); + } + return it_is; + }; + _onTouchEnd = function(event) { + var anyevent, drag_direction, pinch_direction, rotation_direction, swipe_direction; + + EVENT = event; + _trigger("touch"); + if (GESTURE.fingers === 1) { + if (GESTURE.taps === 2 && GESTURE.gap) { + _trigger("doubleTap"); + _cleanGesture(); + } else if (_isSwipe() || GESTURE.prevSwipe) { + _trigger("swipe"); + swipe_direction = _swipeDirection(FIRST_TOUCH[0].x, CURRENT_TOUCH[0].x, FIRST_TOUCH[0].y, CURRENT_TOUCH[0].y); + _trigger("swipe" + swipe_direction); + _cleanGesture(); + } else { + _trigger("tap"); + if (GESTURE.taps === 1) { + TOUCH_TIMEOUT = setTimeout((function() { + _trigger("singleTap"); + return _cleanGesture(); + }), 100); + } + } + } else { + anyevent = false; + if (GESTURE.angle_difference !== 0) { + _trigger("rotate", { + angle: GESTURE.angle_difference + }); + rotation_direction = GESTURE.angle_difference > 0 ? "rotateRight" : "rotateLeft"; + _trigger(rotation_direction, { + angle: GESTURE.angle_difference + }); + anyevent = true; + } + if (GESTURE.distance_difference !== 0) { + _trigger("pinch", { + angle: GESTURE.distance_difference + }); + pinch_direction = GESTURE.distance_difference > 0 ? "pinchOut" : "pinchIn"; + _trigger(pinch_direction, { + distance: GESTURE.distance_difference + }); + anyevent = true; + } + if (!anyevent && CURRENT_TOUCH[0]) { + if (Math.abs(FIRST_TOUCH[0].x - CURRENT_TOUCH[0].x) > 10 || Math.abs(FIRST_TOUCH[0].y - CURRENT_TOUCH[0].y) > 10) { + _trigger("drag"); + drag_direction = _swipeDirection(FIRST_TOUCH[0].x, CURRENT_TOUCH[0].x, FIRST_TOUCH[0].y, CURRENT_TOUCH[0].y); + _trigger("drag" + drag_direction); + } + } + _cleanGesture(); + } + return EVENT = void 0; + }; + _fingersPosition = function(touches, fingers) { + var i, result; + + result = []; + i = 0; + touches = touches[0].targetTouches ? touches[0].targetTouches : touches; + while (i < fingers) { + result.push({ + x: touches[i].pageX, + y: touches[i].pageY + }); + i++; + } + return result; + }; + _captureRotation = function() { + var angle, diff, i, symbol; + + angle = parseInt(_angle(CURRENT_TOUCH), 10); + diff = parseInt(GESTURE.initial_angle - angle, 10); + if (Math.abs(diff) > 20 || GESTURE.angle_difference !== 0) { + i = 0; + symbol = GESTURE.angle_difference < 0 ? "-" : "+"; + while (Math.abs(diff - GESTURE.angle_difference) > 90 && i++ < 10) { + eval("diff " + symbol + "= 180;"); + } + GESTURE.angle_difference = parseInt(diff, 10); + return _trigger("rotating", { + angle: GESTURE.angle_difference + }); + } + }; + _capturePinch = function() { + var diff, distance; + + distance = parseInt(_distance(CURRENT_TOUCH), 10); + diff = GESTURE.initial_distance - distance; + if (Math.abs(diff) > 10) { + GESTURE.distance_difference = diff; + return _trigger("pinching", { + distance: diff + }); + } + }; + _trigger = function(type, params) { + if (GESTURE.el) { + params = params || {}; + if (CURRENT_TOUCH[0]) { + params.iniTouch = (GESTURE.fingers > 1 ? FIRST_TOUCH : FIRST_TOUCH[0]); + params.currentTouch = (GESTURE.fingers > 1 ? CURRENT_TOUCH : CURRENT_TOUCH[0]); + } + return GESTURE.el.trigger(type, params, EVENT); + } + }; + _cleanGesture = function(event) { + FIRST_TOUCH = []; + CURRENT_TOUCH = []; + GESTURE = {}; + return clearTimeout(TOUCH_TIMEOUT); + }; + _angle = function(touches_data) { + var A, B, angle; + + A = touches_data[0]; + B = touches_data[1]; + angle = Math.atan((B.y - A.y) * -1 / (B.x - A.x)) * (180 / Math.PI); + if (angle < 0) { + return angle + 180; + } else { + return angle; + } + }; + _distance = function(touches_data) { + var A, B; + + A = touches_data[0]; + B = touches_data[1]; + return Math.sqrt((B.x - A.x) * (B.x - A.x) + (B.y - A.y) * (B.y - A.y)) * -1; + }; + _getTouches = function(event) { + if ($$.isMobile()) { + return event.touches; + } else { + return [event]; + } + }; + _parentIfText = function(node) { + if ("tagName" in node) { + return node; + } else { + return node.parentNode; + } + }; + _swipeDirection = function(x1, x2, y1, y2) { + var xDelta, yDelta; + + xDelta = Math.abs(x1 - x2); + yDelta = Math.abs(y1 - y2); + if (xDelta >= yDelta) { + if (x1 - x2 > 0) { + return "Left"; + } else { + return "Right"; + } + } else { + if (y1 - y2 > 0) { + return "Up"; + } else { + return "Down"; + } + } + }; + return _hold = function() { + if (GESTURE.last && (Date.now() - GESTURE.last >= HOLD_DELAY)) { + _trigger("hold"); + return GESTURE.taps = 0; + } + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + $$.fn.text = function(value) { + if (value || $$.toType(value) === "number") { + return this.each(function() { + return this.textContent = value; + }); + } else { + return this[0].textContent; + } + }; + $$.fn.html = function(value) { + var type; + + type = $$.toType(value); + if (value || type === "number" || type === "string") { + return this.each(function() { + var element, _i, _len, _results; + + if (type === "string" || type === "number") { + return this.innerHTML = value; + } else { + this.innerHTML = null; + if (type === "array") { + _results = []; + for (_i = 0, _len = value.length; _i < _len; _i++) { + element = value[_i]; + _results.push(this.appendChild(element)); + } + return _results; + } else { + return this.appendChild(value); + } + } + }); + } else { + return this[0].innerHTML; + } + }; + $$.fn.append = function(value) { + var type; + + type = $$.toType(value); + return this.each(function() { + var _this = this; + + if (type === "string") { + return this.insertAdjacentHTML("beforeend", value); + } else if (type === "array") { + return value.each(function(index, value) { + return _this.appendChild(value); + }); + } else { + return this.appendChild(value); + } + }); + }; + $$.fn.prepend = function(value) { + var type; + + type = $$.toType(value); + return this.each(function() { + var _this = this; + + if (type === "string") { + return this.insertAdjacentHTML("afterbegin", value); + } else if (type === "array") { + return value.each(function(index, value) { + return _this.insertBefore(value, _this.firstChild); + }); + } else { + return this.insertBefore(value, this.firstChild); + } + }); + }; + $$.fn.replaceWith = function(value) { + var type; + + type = $$.toType(value); + this.each(function() { + var _this = this; + + if (this.parentNode) { + if (type === "string") { + return this.insertAdjacentHTML("beforeBegin", value); + } else if (type === "array") { + return value.each(function(index, value) { + return _this.parentNode.insertBefore(value, _this); + }); + } else { + return this.parentNode.insertBefore(value, this); + } + } + }); + return this.remove(); + }; + return $$.fn.empty = function() { + return this.each(function() { + return this.innerHTML = null; + }); + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var CLASS_SELECTOR, ID_SELECTOR, PARENT_NODE, TAG_SELECTOR, _filtered, _findAncestors; + + PARENT_NODE = "parentNode"; + CLASS_SELECTOR = /^\.([\w-]+)$/; + ID_SELECTOR = /^#[\w\d-]+$/; + TAG_SELECTOR = /^[\w-]+$/; + $$.query = function(domain, selector) { + var elements; + + selector = selector.trim(); + if (CLASS_SELECTOR.test(selector)) { + elements = domain.getElementsByClassName(selector.replace(".", "")); + } else if (TAG_SELECTOR.test(selector)) { + elements = domain.getElementsByTagName(selector); + } else if (ID_SELECTOR.test(selector) && domain === document) { + elements = domain.getElementById(selector.replace("#", "")); + if (!elements) { + elements = []; + } + } else { + elements = domain.querySelectorAll(selector); + } + if (elements.nodeType) { + return [elements]; + } else { + return Array.prototype.slice.call(elements); + } + }; + $$.fn.find = function(selector) { + var result; + + if (this.length === 1) { + result = Quo.query(this[0], selector); + } else { + result = this.map(function() { + return Quo.query(this, selector); + }); + } + return $$(result); + }; + $$.fn.parent = function(selector) { + var ancestors; + + ancestors = (selector ? _findAncestors(this) : this.instance(PARENT_NODE)); + return _filtered(ancestors, selector); + }; + $$.fn.siblings = function(selector) { + var siblings_elements; + + siblings_elements = this.map(function(index, element) { + return Array.prototype.slice.call(element.parentNode.children).filter(function(child) { + return child !== element; + }); + }); + return _filtered(siblings_elements, selector); + }; + $$.fn.children = function(selector) { + var children_elements; + + children_elements = this.map(function() { + return Array.prototype.slice.call(this.children); + }); + return _filtered(children_elements, selector); + }; + $$.fn.get = function(index) { + if (index === undefined) { + return this; + } else { + return this[index]; + } + }; + $$.fn.first = function() { + return $$(this[0]); + }; + $$.fn.last = function() { + return $$(this[this.length - 1]); + }; + $$.fn.closest = function(selector, context) { + var candidates, node; + + node = this[0]; + candidates = $$(selector); + if (!candidates.length) { + node = null; + } + while (node && candidates.indexOf(node) < 0) { + node = node !== context && node !== document && node.parentNode; + } + return $$(node); + }; + $$.fn.each = function(callback) { + this.forEach(function(element, index) { + return callback.call(element, index, element); + }); + return this; + }; + _findAncestors = function(nodes) { + var ancestors; + + ancestors = []; + while (nodes.length > 0) { + nodes = $$.map(nodes, function(node) { + if ((node = node.parentNode) && node !== document && ancestors.indexOf(node) < 0) { + ancestors.push(node); + return node; + } + }); + } + return ancestors; + }; + return _filtered = function(nodes, selector) { + if (selector === undefined) { + return $$(nodes); + } else { + return $$(nodes).filter(selector); + } + }; + })(Quo); + +}).call(this); + +(function() { + (function($$) { + var VENDORS, _computedStyle, _existsClass; + + VENDORS = ["-webkit-", "-moz-", "-ms-", "-o-", ""]; + $$.fn.addClass = function(name) { + return this.each(function() { + if (!_existsClass(name, this.className)) { + this.className += " " + name; + return this.className = this.className.trim(); + } + }); + }; + $$.fn.removeClass = function(name) { + return this.each(function() { + if (!name) { + return this.className = ""; + } else { + if (_existsClass(name, this.className)) { + return this.className = this.className.replace(name, " ").replace(/\s+/g, " ").trim(); + } + } + }); + }; + $$.fn.toggleClass = function(name) { + return this.each(function() { + if (_existsClass(name, this.className)) { + return this.className = this.className.replace(name, " "); + } else { + this.className += " " + name; + return this.className = this.className.trim(); + } + }); + }; + $$.fn.hasClass = function(name) { + return _existsClass(name, this[0].className); + }; + $$.fn.style = function(property, value) { + if (value) { + return this.each(function() { + return this.style[property] = value; + }); + } else { + return this[0].style[property] || _computedStyle(this[0], property); + } + }; + $$.fn.css = function(property, value) { + return this.style(property, value); + }; + $$.fn.vendor = function(property, value) { + var vendor, _i, _len, _results; + + _results = []; + for (_i = 0, _len = VENDORS.length; _i < _len; _i++) { + vendor = VENDORS[_i]; + _results.push(this.style("" + vendor + property, value)); + } + return _results; + }; + _existsClass = function(name, className) { + var classes; + + classes = className.split(/\s+/g); + return classes.indexOf(name) >= 0; + }; + return _computedStyle = function(element, property) { + return document.defaultView.getComputedStyle(element, "")[property]; + }; + })(Quo); + +}).call(this); diff --git a/ajax/libs/quo.js/2.3.6/quo.min.js b/ajax/libs/quo.js/2.3.6/quo.min.js new file mode 100755 index 000000000..c621f3756 --- /dev/null +++ b/ajax/libs/quo.js/2.3.6/quo.min.js @@ -0,0 +1,4 @@ +/* QuoJS v2.3.6 - 2013/5/13 + http://quojs.tapquo.com + Copyright (c) 2013 Javi Jimenez Villar (@soyjavi) - Licensed MIT */ +(function(){var e;e=function(){var e,t,n;t=[];e=function(t,r){var i;if(!t){return n()}else if(e.toType(t)==="function"){return e(document).ready(t)}else{i=e.getDOMObject(t,r);return n(i,t)}};n=function(e,r){e=e||t;e.__proto__=n.prototype;e.selector=r||"";return e};e.extend=function(e){Array.prototype.slice.call(arguments,1).forEach(function(t){var n,r;r=[];for(n in t){r.push(e[n]=t[n])}return r});return e};n.prototype=e.fn={};return e}();window.Quo=e;"$$"in window||(window.$$=e)}).call(this);(function(){(function(e){var t,n,r,i,u,a,o,s,c,f,l;t={TYPE:"GET",MIME:"json"};r={script:"text/javascript, application/javascript",json:"application/json",xml:"application/xml, text/xml",html:"text/html",text:"text/plain"};n=0;e.ajaxSettings={type:t.TYPE,async:true,success:{},error:{},context:null,dataType:t.MIME,headers:{},xhr:function(){return new window.XMLHttpRequest},crossDomain:false,timeout:0};e.ajax=function(n){var r,o,f,h;f=e.mix(e.ajaxSettings,n);if(f.type===t.TYPE){f.url+=e.serializeParameters(f.data,"?")}else{f.data=e.serializeParameters(f.data)}if(i(f.url)){return e.jsonp(f)}h=f.xhr();h.onreadystatechange=function(){if(h.readyState===4){clearTimeout(r);return c(h,f)}};h.open(f.type,f.url,f.async);s(h,f);if(f.timeout>0){r=setTimeout(function(){return l(h,f)},f.timeout)}try{h.send(f.data)}catch(d){o=d;h=o;a("Resource not found",h,f)}if(f.async){return h}else{return u(h,f)}};e.jsonp=function(t){var r,i,u,a;if(t.async){i="jsonp"+ ++n;u=document.createElement("script");a={abort:function(){e(u).remove();if(i in window){return window[i]={}}}};r=void 0;window[i]=function(n){clearTimeout(r);e(u).remove();delete window[i];return f(n,a,t)};u.src=t.url.replace(RegExp("=\\?"),"="+i);e("head").append(u);if(t.timeout>0){r=setTimeout(function(){return l(a,t)},t.timeout)}return a}else{return console.error("QuoJS.ajax: Unable to make jsonp synchronous call.")}};e.get=function(t,n,r,i){return e.ajax({url:t,data:n,success:r,dataType:i})};e.post=function(e,t,n,r){return o("POST",e,t,n,r)};e.put=function(e,t,n,r){return o("PUT",e,t,n,r)};e["delete"]=function(e,t,n,r){return o("DELETE",e,t,n,r)};e.json=function(n,r,i){return e.ajax({url:n,data:r,success:i,dataType:t.MIME})};e.serializeParameters=function(e,t){var n,r;if(t==null){t=""}r=t;for(n in e){if(e.hasOwnProperty(n)){if(r!==t){r+="&"}r+=""+encodeURIComponent(n)+"="+encodeURIComponent(e[n])}}if(r===t){return""}else{return r}};c=function(e,t){if(e.status>=200&&e.status<300||e.status===0){if(t.async){f(u(e,t),e,t)}}else{a("QuoJS.ajax: Unsuccesful request",e,t)}};f=function(e,t,n){n.success.call(n.context,e,t)};a=function(e,t,n){n.error.call(n.context,e,t,n)};s=function(e,t){var n;if(t.contentType){t.headers["Content-Type"]=t.contentType}if(t.dataType){t.headers["Accept"]=r[t.dataType]}for(n in t.headers){e.setRequestHeader(n,t.headers[n])}};l=function(e,t){e.onreadystatechange={};e.abort();a("QuoJS.ajax: Timeout exceeded",e,t)};o=function(t,n,r,i,u){return e.ajax({type:t,url:n,data:r,success:i,dataType:u,contentType:"application/x-www-form-urlencoded"})};u=function(e,n){var r,i;i=e.responseText;if(i){if(n.dataType===t.MIME){try{i=JSON.parse(i)}catch(u){r=u;i=r;a("QuoJS.ajax: Parse Error",e,n)}}else{if(n.dataType==="xml"){i=e.responseXML}}}return i};return i=function(e){return RegExp("=\\?").test(e)}})(Quo)}).call(this);(function(){(function(e){var t,n,r,i,u,a,o,s;t=[];i=Object.prototype;r=/^\s*<(\w+|!)[^>]*>/;u=document.createElement("table");a=document.createElement("tr");n={tr:document.createElement("tbody"),tbody:u,thead:u,tfoot:u,td:a,th:a,"*":document.createElement("div")};e.toType=function(e){return i.toString.call(e).match(/\s([a-z|A-Z]+)/)[1].toLowerCase()};e.isOwnProperty=function(e,t){return i.hasOwnProperty.call(e,t)};e.getDOMObject=function(t,n){var i,u,a;i=null;u=[1,9,11];a=e.toType(t);if(a==="array"){i=o(t)}else if(a==="string"&&r.test(t)){i=e.fragment(t.trim(),RegExp.$1);t=null}else if(a==="string"){i=e.query(document,t);if(n){if(i.length===1){i=e.query(i[0],n)}else{i=e.map(function(){return e.query(i,n)})}}}else if(u.indexOf(t.nodeType)>=0||t===window){i=[t];t=null}return i};e.map=function(t,n){var r,i,u,a;a=[];r=void 0;i=void 0;if(e.toType(t)==="array"){r=0;while(r=0}))};e.fn.forEach=t.forEach;e.fn.indexOf=t.indexOf;o=function(e){return e.filter(function(e){return e!==void 0&&e!==null})};return s=function(e){if(e.length>0){return[].concat.apply([],e)}else{return e}}})(Quo)}).call(this);(function(){(function(e){e.fn.attr=function(t,n){if(this.length===0){null}if(e.toType(t)==="string"&&n===void 0){return this[0].getAttribute(t)}else{return this.each(function(){return this.setAttribute(t,n)})}};e.fn.removeAttr=function(e){return this.each(function(){return this.removeAttribute(e)})};e.fn.data=function(e,t){return this.attr("data-"+e,t)};e.fn.removeData=function(e){return this.removeAttr("data-"+e)};e.fn.val=function(t){if(e.toType(t)==="string"){return this.each(function(){return this.value=t})}else{if(this.length>0){return this[0].value}else{return null}}};e.fn.show=function(){return this.style("display","block")};e.fn.hide=function(){return this.style("display","none")};e.fn.height=function(){var e;e=this.offset();return e.height};e.fn.width=function(){var e;e=this.offset();return e.width};e.fn.offset=function(){var e;e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:e.width,height:e.height}};return e.fn.remove=function(){return this.each(function(){if(this.parentNode!=null){return this.parentNode.removeChild(this)}})}})(Quo)}).call(this);(function(){(function(e){var t,n,r,i,u,a,o;r=null;t=/WebKit\/([\d.]+)/;n={Android:/(Android)\s+([\d.]+)/,ipad:/(iPad).*OS\s([\d_]+)/,iphone:/(iPhone\sOS)\s([\d_]+)/,Blackberry:/(BlackBerry|BB10|Playbook).*Version\/([\d.]+)/,FirefoxOS:/(Mozilla).*Mobile[^\/]*\/([\d\.]*)/,webOS:/(webOS|hpwOS)[\s\/]([\d.]+)/};e.isMobile=function(){r=r||u();return r.isMobile&&r.os.name!=="firefoxOS"};e.environment=function(){r=r||u();return r};e.isOnline=function(){return navigator.onLine};u=function(){var e,t;t=navigator.userAgent;e={};e.browser=i(t);e.os=a(t);e.isMobile=!!e.os;e.screen=o();return e};i=function(e){var n;n=e.match(t);if(n){return n[0]}else{return e}};a=function(e){var t,r,i;t=null;for(r in n){i=e.match(n[r]);if(i){t={name:r==="iphone"||r==="ipad"?"ios":r,version:i[2].replace("_",".")};break}}return t};return o=function(){return{width:window.innerWidth,height:window.innerHeight}}})(Quo)}).call(this);(function(){(function(e){var t,n,r,i,u,a,o,s,c,f,l,h;t=1;i={};r={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};n={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",touch:"click",doubletap:"dblclick",orientationchange:"resize"};u=/complete|loaded|interactive/;e.fn.on=function(t,n,r){if(n==="undefined"||e.toType(n)==="function"){return this.bind(t,n)}else{return this.delegate(n,t,r)}};e.fn.off=function(t,n,r){if(n==="undefined"||e.toType(n)==="function"){return this.unbind(t,n)}else{return this.undelegate(n,t,r)}};e.fn.ready=function(t){if(u.test(document.readyState)){return t(e)}else{return e.fn.addEvent(document,"DOMContentLoaded",function(){return t(e)})}};e.Event=function(e,t){var n,r;n=document.createEvent("Events");n.initEvent(e,true,true,null,null,null,null,null,null,null,null,null,null,null,null);if(t){for(r in t){n[r]=t[r]}}return n};e.fn.bind=function(e,t){return this.each(function(){l(this,e,t)})};e.fn.unbind=function(e,t){return this.each(function(){h(this,e,t)})};e.fn.delegate=function(t,n,r){return this.each(function(i,u){l(u,n,r,t,function(n){return function(r){var i,o;o=e(r.target).closest(t,u).get(0);if(o){i=e.extend(a(r),{currentTarget:o,liveFired:u});return n.apply(o,[i].concat([].slice.call(arguments,1)))}}})})};e.fn.undelegate=function(e,t,n){return this.each(function(){h(this,t,n,e)})};e.fn.trigger=function(t,n,r){if(e.toType(t)==="string"){t=e.Event(t,n)}if(r!=null){t.originalEvent=r}return this.each(function(){this.dispatchEvent(t)})};e.fn.addEvent=function(e,t,n){if(e.addEventListener){return e.addEventListener(t,n,false)}else if(e.attachEvent){return e.attachEvent("on"+t,n)}else{return e["on"+t]=n}};e.fn.removeEvent=function(e,t,n){if(e.removeEventListener){return e.removeEventListener(t,n,false)}else if(e.detachEvent){return e.detachEvent("on"+t,n)}else{return e["on"+t]=null}};l=function(t,n,r,u,a){var c,l,h,d;n=s(n);h=f(t);l=i[h]||(i[h]=[]);c=a&&a(r,n);d={event:n,callback:r,selector:u,proxy:o(c,r,t),delegate:c,index:l.length};l.push(d);return e.fn.addEvent(t,d.event,d.proxy)};h=function(t,n,r,u){var a;n=s(n);a=f(t);return c(a,n,r,u).forEach(function(n){delete i[a][n.index];return e.fn.removeEvent(t,n.event,n.proxy)})};f=function(e){return e._id||(e._id=t++)};s=function(t){var r;r=e.isMobile()?t:n[t];return r||t};o=function(e,t,n){var r;t=e||t;r=function(e){var r;r=t.apply(n,[e].concat(e.data));if(r===false){e.preventDefault()}return r};return r};c=function(e,t,n,r){return(i[e]||[]).filter(function(e){return e&&(!t||e.event===t)&&(!n||e.callback===n)&&(!r||e.selector===r)})};return a=function(t){var n;n=e.extend({originalEvent:t},t);e.each(r,function(e,r){n[e]=function(){this[r]=function(){return true};return t[e].apply(t,arguments)};return n[r]=function(){return false}});return n}})(Quo)}).call(this);(function(){(function($$){var CURRENT_TOUCH,EVENT,FIRST_TOUCH,GESTURE,GESTURES,HOLD_DELAY,TAPS,TOUCH_TIMEOUT,_angle,_capturePinch,_captureRotation,_cleanGesture,_distance,_fingersPosition,_getTouches,_hold,_isSwipe,_listenTouches,_onTouchEnd,_onTouchMove,_onTouchStart,_parentIfText,_swipeDirection,_trigger;TAPS=null;EVENT=void 0;GESTURE={};FIRST_TOUCH=[];CURRENT_TOUCH=[];TOUCH_TIMEOUT=void 0;HOLD_DELAY=650;GESTURES=["touch","tap","singleTap","doubleTap","hold","swipe","swiping","swipeLeft","swipeRight","swipeUp","swipeDown","rotate","rotating","rotateLeft","rotateRight","pinch","pinching","pinchIn","pinchOut","drag","dragLeft","dragRight","dragUp","dragDown"];GESTURES.forEach(function(e){$$.fn[e]=function(t){var n;n=e==="touch"?"touchend":e;return $$(document.body).delegate(this.selector,n,t)};return this});$$(document).ready(function(){return _listenTouches()});_listenTouches=function(){var e;e=$$(document.body);e.bind("touchstart",_onTouchStart);e.bind("touchmove",_onTouchMove);e.bind("touchend",_onTouchEnd);return e.bind("touchcancel",_cleanGesture)};_onTouchStart=function(e){var t,n,r,i;EVENT=e;r=Date.now();t=r-(GESTURE.last||r);TOUCH_TIMEOUT&&clearTimeout(TOUCH_TIMEOUT);i=_getTouches(e);n=i.length;FIRST_TOUCH=_fingersPosition(i,n);GESTURE.el=$$(_parentIfText(i[0].target));GESTURE.fingers=n;GESTURE.last=r;if(!GESTURE.taps){GESTURE.taps=0}GESTURE.taps++;if(n===1){if(n>=1){GESTURE.gap=t>0&&t<=250}return setTimeout(_hold,HOLD_DELAY)}else if(n===2){GESTURE.initial_angle=parseInt(_angle(FIRST_TOUCH),10);GESTURE.initial_distance=parseInt(_distance(FIRST_TOUCH),10);GESTURE.angle_difference=0;return GESTURE.distance_difference=0}};_onTouchMove=function(e){var t,n,r;EVENT=e;if(GESTURE.el){r=_getTouches(e);t=r.length;if(t===GESTURE.fingers){CURRENT_TOUCH=_fingersPosition(r,t);n=_isSwipe(e);if(n){GESTURE.prevSwipe=true}if(n||GESTURE.prevSwipe===true){_trigger("swiping")}if(t===2){_captureRotation();_capturePinch();e.preventDefault()}}else{_cleanGesture()}}return true};_isSwipe=function(e){var t,n,r;t=false;if(CURRENT_TOUCH[0]){n=Math.abs(FIRST_TOUCH[0].x-CURRENT_TOUCH[0].x)>30;r=Math.abs(FIRST_TOUCH[0].y-CURRENT_TOUCH[0].y)>30;t=GESTURE.el&&(n||r)}return t};_onTouchEnd=function(e){var t,n,r,i,u;EVENT=e;_trigger("touch");if(GESTURE.fingers===1){if(GESTURE.taps===2&&GESTURE.gap){_trigger("doubleTap");_cleanGesture()}else if(_isSwipe()||GESTURE.prevSwipe){_trigger("swipe");u=_swipeDirection(FIRST_TOUCH[0].x,CURRENT_TOUCH[0].x,FIRST_TOUCH[0].y,CURRENT_TOUCH[0].y);_trigger("swipe"+u);_cleanGesture()}else{_trigger("tap");if(GESTURE.taps===1){TOUCH_TIMEOUT=setTimeout(function(){_trigger("singleTap");return _cleanGesture()},100)}}}else{t=false;if(GESTURE.angle_difference!==0){_trigger("rotate",{angle:GESTURE.angle_difference});i=GESTURE.angle_difference>0?"rotateRight":"rotateLeft";_trigger(i,{angle:GESTURE.angle_difference});t=true}if(GESTURE.distance_difference!==0){_trigger("pinch",{angle:GESTURE.distance_difference});r=GESTURE.distance_difference>0?"pinchOut":"pinchIn";_trigger(r,{distance:GESTURE.distance_difference});t=true}if(!t&&CURRENT_TOUCH[0]){if(Math.abs(FIRST_TOUCH[0].x-CURRENT_TOUCH[0].x)>10||Math.abs(FIRST_TOUCH[0].y-CURRENT_TOUCH[0].y)>10){_trigger("drag");n=_swipeDirection(FIRST_TOUCH[0].x,CURRENT_TOUCH[0].x,FIRST_TOUCH[0].y,CURRENT_TOUCH[0].y);_trigger("drag"+n)}}_cleanGesture()}return EVENT=void 0};_fingersPosition=function(e,t){var n,r;r=[];n=0;e=e[0].targetTouches?e[0].targetTouches:e;while(n20||GESTURE.angle_difference!==0){i=0;symbol=GESTURE.angle_difference<0?"-":"+";while(Math.abs(diff-GESTURE.angle_difference)>90&&i++<10){eval("diff "+symbol+"= 180;")}GESTURE.angle_difference=parseInt(diff,10);return _trigger("rotating",{angle:GESTURE.angle_difference})}};_capturePinch=function(){var e,t;t=parseInt(_distance(CURRENT_TOUCH),10);e=GESTURE.initial_distance-t;if(Math.abs(e)>10){GESTURE.distance_difference=e;return _trigger("pinching",{distance:e})}};_trigger=function(e,t){if(GESTURE.el){t=t||{};if(CURRENT_TOUCH[0]){t.iniTouch=GESTURE.fingers>1?FIRST_TOUCH:FIRST_TOUCH[0];t.currentTouch=GESTURE.fingers>1?CURRENT_TOUCH:CURRENT_TOUCH[0]}return GESTURE.el.trigger(e,t,EVENT)}};_cleanGesture=function(e){FIRST_TOUCH=[];CURRENT_TOUCH=[];GESTURE={};return clearTimeout(TOUCH_TIMEOUT)};_angle=function(e){var t,n,r;t=e[0];n=e[1];r=Math.atan((n.y-t.y)*-1/(n.x-t.x))*(180/Math.PI);if(r<0){return r+180}else{return r}};_distance=function(e){var t,n;t=e[0];n=e[1];return Math.sqrt((n.x-t.x)*(n.x-t.x)+(n.y-t.y)*(n.y-t.y))*-1};_getTouches=function(e){if($$.isMobile()){return e.touches}else{return[e]}};_parentIfText=function(e){if("tagName"in e){return e}else{return e.parentNode}};_swipeDirection=function(e,t,n,r){var i,u;i=Math.abs(e-t);u=Math.abs(n-r);if(i>=u){if(e-t>0){return"Left"}else{return"Right"}}else{if(n-r>0){return"Up"}else{return"Down"}}};return _hold=function(){if(GESTURE.last&&Date.now()-GESTURE.last>=HOLD_DELAY){_trigger("hold");return GESTURE.taps=0}}})(Quo)}).call(this);(function(){(function(e){e.fn.text=function(t){if(t||e.toType(t)==="number"){return this.each(function(){return this.textContent=t})}else{return this[0].textContent}};e.fn.html=function(t){var n;n=e.toType(t);if(t||n==="number"||n==="string"){return this.each(function(){var e,r,i,u;if(n==="string"||n==="number"){return this.innerHTML=t}else{this.innerHTML=null;if(n==="array"){u=[];for(r=0,i=t.length;r0){t=e.map(t,function(e){if((e=e.parentNode)&&e!==document&&n.indexOf(e)<0){n.push(e);return e}})}return n};return u=function(t,n){if(n===undefined){return e(t)}else{return e(t).filter(n)}}})(Quo)}).call(this);(function(){(function(e){var t,n,r;t=["-webkit-","-moz-","-ms-","-o-",""];e.fn.addClass=function(e){return this.each(function(){if(!r(e,this.className)){this.className+=" "+e;return this.className=this.className.trim()}})};e.fn.removeClass=function(e){return this.each(function(){if(!e){return this.className=""}else{if(r(e,this.className)){return this.className=this.className.replace(e," ").replace(/\s+/g," ").trim()}}})};e.fn.toggleClass=function(e){return this.each(function(){if(r(e,this.className)){return this.className=this.className.replace(e," ")}else{this.className+=" "+e;return this.className=this.className.trim()}})};e.fn.hasClass=function(e){return r(e,this[0].className)};e.fn.style=function(e,t){if(t){return this.each(function(){return this.style[e]=t})}else{return this[0].style[e]||n(this[0],e)}};e.fn.css=function(e,t){return this.style(e,t)};e.fn.vendor=function(e,n){var r,i,u,a;a=[];for(i=0,u=t.length;i=0};return n=function(e,t){return document.defaultView.getComputedStyle(e,"")[t]}})(Quo)}).call(this); \ No newline at end of file From 84418d59b35d331d8184714e4a964de056755d09 Mon Sep 17 00:00:00 2001 From: dnco Date: Wed, 11 Dec 2013 14:54:55 +0000 Subject: [PATCH 2/2] Update package.json to include new 'version' --- ajax/libs/quo.js/package.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/ajax/libs/quo.js/package.json b/ajax/libs/quo.js/package.json index 0bd79d56f..bc56a82b5 100644 --- a/ajax/libs/quo.js/package.json +++ b/ajax/libs/quo.js/package.json @@ -1,17 +1,17 @@ { "name": "quo.js", "filename": "quo.js", - "version": "2.3.1", + "version": "2.3.6", "description": "A micro JavaScript Library for Mobile Devices", "homepage": "http://quojs.tapquo.com", "keywords": ["mobile","touch"], - "maintainers": [{ - "name": "soyjavi", - "email": "javi@tapquo.com", - "web": "http://www.tapquo.com" - }], - "repositories": [{ - "type": "git", - "url": "https://github.com/soyjavi/QuoJS" - }] -} \ No newline at end of file + "maintainers": [{ + "name": "soyjavi", + "email": "javi@tapquo.com", + "web": "http://www.tapquo.com" + }], + "repositories": [{ + "type": "git", + "url": "https://github.com/soyjavi/QuoJS" + }] +}