bpm 1.0.0.beta.5 → 1.0.0.beta.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +5 -0
 - data/TODO.md +18 -17
 - data/lib/bpm/pipeline/generated_asset.rb +64 -41
 - data/lib/bpm/pipeline/plugin_context.rb +24 -0
 - data/lib/bpm/pipeline/transport_processor.rb +3 -3
 - data/lib/bpm/pipeline.rb +2 -1
 - data/lib/bpm/project.rb +7 -1
 - data/lib/bpm/version.rb +1 -1
 - data/lib/bpm.rb +1 -0
 - data/spec/fixtures/projects/minitest/minitest.json +4 -2
 - data/spec/fixtures/projects/minitest/packages/uglyduck/minifier/main.js +3 -2
 - data/spec/fixtures/projects/minitrans/lib/main.js +3 -0
 - data/spec/fixtures/projects/minitrans/minitrans.json +25 -0
 - data/spec/fixtures/projects/minitrans/packages/transport/lib/main.js +1 -0
 - data/spec/fixtures/projects/minitrans/packages/transport/package.json +21 -0
 - data/spec/fixtures/projects/minitrans/packages/transport/transports/wrapper.js +6 -0
 - data/spec/fixtures/projects/minitrans/packages/uglyduck/lib/main.js +3 -0
 - data/spec/fixtures/projects/minitrans/packages/uglyduck/minifier/main.js +6 -0
 - data/spec/fixtures/projects/minitrans/packages/uglyduck/package.json +21 -0
 - data/spec/fixtures/projects/transporter/packages/transport/transports/wrapper.js +2 -2
 - data/spec/plugins/minifier_spec.rb +2 -2
 - data/spec/plugins/transport_spec.rb +38 -0
 - metadata +41 -56
 - data/backbone/LICENSE +0 -22
 - data/backbone/README +0 -25
 - data/backbone/Rakefile +0 -42
 - data/backbone/backbone-0.5.1.bpkg +0 -0
 - data/backbone/examples/backbone-localstorage.js +0 -84
 - data/backbone/examples/todos/destroy.png +0 -0
 - data/backbone/examples/todos/index.html +0 -87
 - data/backbone/examples/todos/todos.css +0 -311
 - data/backbone/examples/todos/todos.js +0 -258
 - data/backbone/index.html +0 -2606
 - data/backbone/index.js +0 -1
 - data/backbone/lib/backbone.js +0 -1149
 - data/backbone/lib/index.js +0 -1
 - data/backbone/package.json +0 -14
 - data/backbone/test/collection.js +0 -345
 - data/backbone/test/events.js +0 -70
 - data/backbone/test/model.coffee +0 -43
 - data/backbone/test/model.js +0 -424
 - data/backbone/test/noconflict.js +0 -12
 - data/backbone/test/router.js +0 -116
 - data/backbone/test/speed.js +0 -45
 - data/backbone/test/sync.js +0 -133
 - data/backbone/test/test-zepto.html +0 -30
 - data/backbone/test/test.html +0 -31
 - data/backbone/test/vendor/jquery-1.5.js +0 -8176
 - data/backbone/test/vendor/jslitmus.js +0 -649
 - data/backbone/test/vendor/json2.js +0 -481
 - data/backbone/test/vendor/qunit.css +0 -196
 - data/backbone/test/vendor/qunit.js +0 -1364
 - data/backbone/test/vendor/underscore-1.1.6.js +0 -807
 - data/backbone/test/vendor/zepto-0.6.js +0 -692
 - data/backbone/test/view.js +0 -137
 
| 
         @@ -1,692 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            (function(undefined){
         
     | 
| 
       2 
     | 
    
         
            -
              if (String.prototype.trim === undefined) // fix for iOS 3.2
         
     | 
| 
       3 
     | 
    
         
            -
                String.prototype.trim = function(){ return this.replace(/^\s+/, '').replace(/\s+$/, '') };
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              // For iOS 3.x
         
     | 
| 
       6 
     | 
    
         
            -
              // from https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/reduce
         
     | 
| 
       7 
     | 
    
         
            -
              if (Array.prototype.reduce === undefined)
         
     | 
| 
       8 
     | 
    
         
            -
                Array.prototype.reduce = function(fun){
         
     | 
| 
       9 
     | 
    
         
            -
                  if(this === void 0 || this === null) throw new TypeError();
         
     | 
| 
       10 
     | 
    
         
            -
                  var t = Object(this), len = t.length >>> 0, k = 0, accumulator;
         
     | 
| 
       11 
     | 
    
         
            -
                  if(typeof fun != 'function') throw new TypeError();
         
     | 
| 
       12 
     | 
    
         
            -
                  if(len == 0 && arguments.length == 1) throw new TypeError();
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
                  if(arguments.length >= 2)
         
     | 
| 
       15 
     | 
    
         
            -
                   accumulator = arguments[1];
         
     | 
| 
       16 
     | 
    
         
            -
                  else
         
     | 
| 
       17 
     | 
    
         
            -
                    do{
         
     | 
| 
       18 
     | 
    
         
            -
                      if(k in t){
         
     | 
| 
       19 
     | 
    
         
            -
                        accumulator = t[k++];
         
     | 
| 
       20 
     | 
    
         
            -
                        break;
         
     | 
| 
       21 
     | 
    
         
            -
                      }
         
     | 
| 
       22 
     | 
    
         
            -
                      if(++k >= len) throw new TypeError();
         
     | 
| 
       23 
     | 
    
         
            -
                    } while (true);
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
                  while (k < len){
         
     | 
| 
       26 
     | 
    
         
            -
                    if(k in t) accumulator = fun.call(undefined, accumulator, t[k], k, t);
         
     | 
| 
       27 
     | 
    
         
            -
                    k++;
         
     | 
| 
       28 
     | 
    
         
            -
                  }
         
     | 
| 
       29 
     | 
    
         
            -
                  return accumulator;
         
     | 
| 
       30 
     | 
    
         
            -
                };
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
            })();
         
     | 
| 
       33 
     | 
    
         
            -
            var Zepto = (function() {
         
     | 
| 
       34 
     | 
    
         
            -
              var undefined, key, css, $$, classList,
         
     | 
| 
       35 
     | 
    
         
            -
                emptyArray = [], slice = emptyArray.slice,
         
     | 
| 
       36 
     | 
    
         
            -
                document = window.document,
         
     | 
| 
       37 
     | 
    
         
            -
                elementDisplay = {}, classCache = {},
         
     | 
| 
       38 
     | 
    
         
            -
                getComputedStyle = document.defaultView.getComputedStyle,
         
     | 
| 
       39 
     | 
    
         
            -
                fragmentRE = /^\s*<[^>]+>/,
         
     | 
| 
       40 
     | 
    
         
            -
                container = document.createElement('div');
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
              function isF(value) { return ({}).toString.call(value) == "[object Function]" }
         
     | 
| 
       43 
     | 
    
         
            -
              function isO(value) { return value instanceof Object }
         
     | 
| 
       44 
     | 
    
         
            -
              function isA(value) { return value instanceof Array }
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
              function compact(array) { return array.filter(function(item){ return item !== undefined && item !== null }) }
         
     | 
| 
       47 
     | 
    
         
            -
              function flatten(array) { return [].concat.apply([], array) }
         
     | 
| 
       48 
     | 
    
         
            -
              function camelize(str)  { return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }
         
     | 
| 
       49 
     | 
    
         
            -
              function uniq(array)    { return array.filter(function(item,index,array){ return array.indexOf(item) == index }) }
         
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
              function classRE(name){
         
     | 
| 
       52 
     | 
    
         
            -
                return name in classCache ?
         
     | 
| 
       53 
     | 
    
         
            -
                  classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)'));
         
     | 
| 
       54 
     | 
    
         
            -
              }
         
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
       56 
     | 
    
         
            -
              function defaultDisplay(nodeName) {
         
     | 
| 
       57 
     | 
    
         
            -
                var element, display;
         
     | 
| 
       58 
     | 
    
         
            -
                if (!elementDisplay[nodeName]) {
         
     | 
| 
       59 
     | 
    
         
            -
                  element = document.createElement(nodeName);
         
     | 
| 
       60 
     | 
    
         
            -
                  document.body.insertAdjacentElement("beforeEnd", element);
         
     | 
| 
       61 
     | 
    
         
            -
                  display = getComputedStyle(element, '').getPropertyValue("display");
         
     | 
| 
       62 
     | 
    
         
            -
                  element.parentNode.removeChild(element);
         
     | 
| 
       63 
     | 
    
         
            -
                  display == "none" && (display = "block");
         
     | 
| 
       64 
     | 
    
         
            -
                  elementDisplay[nodeName] = display;
         
     | 
| 
       65 
     | 
    
         
            -
                }
         
     | 
| 
       66 
     | 
    
         
            -
                return elementDisplay[nodeName];
         
     | 
| 
       67 
     | 
    
         
            -
              }
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
              function fragment(html) {
         
     | 
| 
       70 
     | 
    
         
            -
                container.innerHTML = ('' + html).trim();
         
     | 
| 
       71 
     | 
    
         
            -
                return slice.call(container.childNodes);
         
     | 
| 
       72 
     | 
    
         
            -
              }
         
     | 
| 
       73 
     | 
    
         
            -
             
     | 
| 
       74 
     | 
    
         
            -
              function Z(dom, selector){
         
     | 
| 
       75 
     | 
    
         
            -
                dom = dom || emptyArray;
         
     | 
| 
       76 
     | 
    
         
            -
                dom.__proto__ = Z.prototype;
         
     | 
| 
       77 
     | 
    
         
            -
                dom.selector = selector || '';
         
     | 
| 
       78 
     | 
    
         
            -
                return dom;
         
     | 
| 
       79 
     | 
    
         
            -
              }
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
              function $(selector, context){
         
     | 
| 
       82 
     | 
    
         
            -
                if (!selector) return Z();
         
     | 
| 
       83 
     | 
    
         
            -
                if (context !== undefined) return $(context).find(selector);
         
     | 
| 
       84 
     | 
    
         
            -
                else if (isF(selector)) return $(document).ready(selector);
         
     | 
| 
       85 
     | 
    
         
            -
                else if (selector instanceof Z) return selector;
         
     | 
| 
       86 
     | 
    
         
            -
                else {
         
     | 
| 
       87 
     | 
    
         
            -
                  var dom;
         
     | 
| 
       88 
     | 
    
         
            -
                  if (isA(selector)) dom = compact(selector);
         
     | 
| 
       89 
     | 
    
         
            -
                  else if (selector instanceof Element || selector === window || selector === document)
         
     | 
| 
       90 
     | 
    
         
            -
                    dom = [selector], selector = null;
         
     | 
| 
       91 
     | 
    
         
            -
                  else if (fragmentRE.test(selector)) dom = fragment(selector);
         
     | 
| 
       92 
     | 
    
         
            -
                  else if (selector.nodeType && selector.nodeType == 3) dom = [selector];
         
     | 
| 
       93 
     | 
    
         
            -
                  else dom = $$(document, selector);
         
     | 
| 
       94 
     | 
    
         
            -
                  return Z(dom, selector);
         
     | 
| 
       95 
     | 
    
         
            -
                }
         
     | 
| 
       96 
     | 
    
         
            -
              }
         
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
              $.extend = function(target, source){ for (key in source) target[key] = source[key]; return target }
         
     | 
| 
       99 
     | 
    
         
            -
              $.qsa = $$ = function(element, selector){ return slice.call(element.querySelectorAll(selector)) }
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
              function filtered(nodes, selector){
         
     | 
| 
       102 
     | 
    
         
            -
                return selector === undefined ? $(nodes) : $(nodes).filter(selector);
         
     | 
| 
       103 
     | 
    
         
            -
              }
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
              function funcArg(context, arg, idx, payload){
         
     | 
| 
       106 
     | 
    
         
            -
               return isF(arg) ? arg.call(context, idx, payload) : arg;
         
     | 
| 
       107 
     | 
    
         
            -
              }
         
     | 
| 
       108 
     | 
    
         
            -
             
     | 
| 
       109 
     | 
    
         
            -
              $.isFunction = isF;
         
     | 
| 
       110 
     | 
    
         
            -
              $.isObject = isO;
         
     | 
| 
       111 
     | 
    
         
            -
              $.isArray = isA;
         
     | 
| 
       112 
     | 
    
         
            -
             
     | 
| 
       113 
     | 
    
         
            -
              $.fn = {
         
     | 
| 
       114 
     | 
    
         
            -
                forEach: emptyArray.forEach,
         
     | 
| 
       115 
     | 
    
         
            -
                map: emptyArray.map,
         
     | 
| 
       116 
     | 
    
         
            -
                reduce: emptyArray.reduce,
         
     | 
| 
       117 
     | 
    
         
            -
                push: emptyArray.push,
         
     | 
| 
       118 
     | 
    
         
            -
                indexOf: emptyArray.indexOf,
         
     | 
| 
       119 
     | 
    
         
            -
                concat: emptyArray.concat,
         
     | 
| 
       120 
     | 
    
         
            -
                ready: function(callback){
         
     | 
| 
       121 
     | 
    
         
            -
                  if (document.readyState == 'complete' || document.readyState == 'loaded') callback();
         
     | 
| 
       122 
     | 
    
         
            -
                  document.addEventListener('DOMContentLoaded', callback, false); return this;
         
     | 
| 
       123 
     | 
    
         
            -
                },
         
     | 
| 
       124 
     | 
    
         
            -
                get: function(idx){ return idx === undefined ? this : this[idx] },
         
     | 
| 
       125 
     | 
    
         
            -
                size: function(){ return this.length },
         
     | 
| 
       126 
     | 
    
         
            -
                remove: function(){ return this.each(function(){ this.parentNode.removeChild(this) }) },
         
     | 
| 
       127 
     | 
    
         
            -
                each: function(callback){
         
     | 
| 
       128 
     | 
    
         
            -
                  this.forEach(function(el, idx){ callback.call(el, idx, el) });
         
     | 
| 
       129 
     | 
    
         
            -
                  return this;
         
     | 
| 
       130 
     | 
    
         
            -
                },
         
     | 
| 
       131 
     | 
    
         
            -
                filter: function(selector){
         
     | 
| 
       132 
     | 
    
         
            -
                  return $([].filter.call(this, function(element){
         
     | 
| 
       133 
     | 
    
         
            -
                    return $$(element.parentNode, selector).indexOf(element) >= 0;
         
     | 
| 
       134 
     | 
    
         
            -
                  }));
         
     | 
| 
       135 
     | 
    
         
            -
                },
         
     | 
| 
       136 
     | 
    
         
            -
                add:function(selector,context){
         
     | 
| 
       137 
     | 
    
         
            -
                  return $(uniq(this.concat($(selector,context))));
         
     | 
| 
       138 
     | 
    
         
            -
                },
         
     | 
| 
       139 
     | 
    
         
            -
                is: function(selector){
         
     | 
| 
       140 
     | 
    
         
            -
                  return this.length > 0 && $(this[0]).filter(selector).length > 0;
         
     | 
| 
       141 
     | 
    
         
            -
                },
         
     | 
| 
       142 
     | 
    
         
            -
                not: function(selector){
         
     | 
| 
       143 
     | 
    
         
            -
                  var nodes=[];
         
     | 
| 
       144 
     | 
    
         
            -
                  if (isF(selector) && selector.call !== undefined)
         
     | 
| 
       145 
     | 
    
         
            -
                    this.each(function(idx){
         
     | 
| 
       146 
     | 
    
         
            -
                      if (!selector.call(this,idx)) nodes.push(this);
         
     | 
| 
       147 
     | 
    
         
            -
                    });
         
     | 
| 
       148 
     | 
    
         
            -
                  else {
         
     | 
| 
       149 
     | 
    
         
            -
                    var ignores = slice.call(
         
     | 
| 
       150 
     | 
    
         
            -
                      typeof selector == 'string' ?
         
     | 
| 
       151 
     | 
    
         
            -
                        this.filter(selector) :
         
     | 
| 
       152 
     | 
    
         
            -
                        selector instanceof NodeList ? selector : $(selector));
         
     | 
| 
       153 
     | 
    
         
            -
                    slice.call(this).forEach(function(el){
         
     | 
| 
       154 
     | 
    
         
            -
                      if (ignores.indexOf(el) < 0) nodes.push(el);
         
     | 
| 
       155 
     | 
    
         
            -
                    });
         
     | 
| 
       156 
     | 
    
         
            -
                  }
         
     | 
| 
       157 
     | 
    
         
            -
                  return $(nodes);
         
     | 
| 
       158 
     | 
    
         
            -
                },
         
     | 
| 
       159 
     | 
    
         
            -
                eq: function(idx){ return $(this[idx]) },
         
     | 
| 
       160 
     | 
    
         
            -
                first: function(){ return $(this[0]) },
         
     | 
| 
       161 
     | 
    
         
            -
                last: function(){ return $(this[this.length - 1]) },
         
     | 
| 
       162 
     | 
    
         
            -
                find: function(selector){
         
     | 
| 
       163 
     | 
    
         
            -
                  var result;
         
     | 
| 
       164 
     | 
    
         
            -
                  if (this.length == 1) result = $$(this[0], selector);
         
     | 
| 
       165 
     | 
    
         
            -
                  else result = flatten(this.map(function(el){ return $$(el, selector) }));
         
     | 
| 
       166 
     | 
    
         
            -
                  return $(result);
         
     | 
| 
       167 
     | 
    
         
            -
                },
         
     | 
| 
       168 
     | 
    
         
            -
                closest: function(selector, context){
         
     | 
| 
       169 
     | 
    
         
            -
                  var node = this[0], nodes = $$(context !== undefined ? context : document, selector);
         
     | 
| 
       170 
     | 
    
         
            -
                  if (nodes.length === 0) node = null;
         
     | 
| 
       171 
     | 
    
         
            -
                  while(node && node !== document && nodes.indexOf(node) < 0) node = node.parentNode;
         
     | 
| 
       172 
     | 
    
         
            -
                  return $(node !== document && node);
         
     | 
| 
       173 
     | 
    
         
            -
                },
         
     | 
| 
       174 
     | 
    
         
            -
                parents: function(selector){
         
     | 
| 
       175 
     | 
    
         
            -
                  var ancestors = [], nodes = this;
         
     | 
| 
       176 
     | 
    
         
            -
                  while (nodes.length > 0)
         
     | 
| 
       177 
     | 
    
         
            -
                    nodes = compact(nodes.map(function(node){
         
     | 
| 
       178 
     | 
    
         
            -
                      if ((node = node.parentNode) && node !== document && ancestors.indexOf(node) < 0) {
         
     | 
| 
       179 
     | 
    
         
            -
                        ancestors.push(node);
         
     | 
| 
       180 
     | 
    
         
            -
                        return node;
         
     | 
| 
       181 
     | 
    
         
            -
                      }
         
     | 
| 
       182 
     | 
    
         
            -
                    }));
         
     | 
| 
       183 
     | 
    
         
            -
                  return filtered(ancestors, selector);
         
     | 
| 
       184 
     | 
    
         
            -
                },
         
     | 
| 
       185 
     | 
    
         
            -
                parent: function(selector){
         
     | 
| 
       186 
     | 
    
         
            -
                  return filtered(uniq(compact(this.pluck('parentNode'))), selector);
         
     | 
| 
       187 
     | 
    
         
            -
                },
         
     | 
| 
       188 
     | 
    
         
            -
                children: function(selector){
         
     | 
| 
       189 
     | 
    
         
            -
                  return filtered(flatten(this.map(function(el){ return slice.call(el.children) })), selector);
         
     | 
| 
       190 
     | 
    
         
            -
                },
         
     | 
| 
       191 
     | 
    
         
            -
                siblings: function(selector){
         
     | 
| 
       192 
     | 
    
         
            -
                  return filtered(flatten(this.map(function(el){
         
     | 
| 
       193 
     | 
    
         
            -
                    return slice.call(el.parentNode.children).filter(function(child){ return child!==el });
         
     | 
| 
       194 
     | 
    
         
            -
                  })), selector);
         
     | 
| 
       195 
     | 
    
         
            -
                },
         
     | 
| 
       196 
     | 
    
         
            -
                empty: function(){ return this.each(function(){ this.innerHTML = '' }) },
         
     | 
| 
       197 
     | 
    
         
            -
                pluck: function(property){ return this.map(function(element){ return element[property] }) },
         
     | 
| 
       198 
     | 
    
         
            -
                show: function(){
         
     | 
| 
       199 
     | 
    
         
            -
                  return this.each(function() {
         
     | 
| 
       200 
     | 
    
         
            -
                    this.style.display == "none" && (this.style.display = null);
         
     | 
| 
       201 
     | 
    
         
            -
                    if (getComputedStyle(this, '').getPropertyValue("display") == "none") {
         
     | 
| 
       202 
     | 
    
         
            -
                      this.style.display = defaultDisplay(this.nodeName)
         
     | 
| 
       203 
     | 
    
         
            -
                    }
         
     | 
| 
       204 
     | 
    
         
            -
                  })
         
     | 
| 
       205 
     | 
    
         
            -
                },
         
     | 
| 
       206 
     | 
    
         
            -
                replaceWith: function(newContent) {
         
     | 
| 
       207 
     | 
    
         
            -
                  return this.each(function() {
         
     | 
| 
       208 
     | 
    
         
            -
                    var element = $(this),
         
     | 
| 
       209 
     | 
    
         
            -
                        prev = element.prev();
         
     | 
| 
       210 
     | 
    
         
            -
                    element.remove();
         
     | 
| 
       211 
     | 
    
         
            -
                    prev.after(newContent);
         
     | 
| 
       212 
     | 
    
         
            -
                  });
         
     | 
| 
       213 
     | 
    
         
            -
                },
         
     | 
| 
       214 
     | 
    
         
            -
                hide: function(){
         
     | 
| 
       215 
     | 
    
         
            -
                  return this.css("display", "none")
         
     | 
| 
       216 
     | 
    
         
            -
                },
         
     | 
| 
       217 
     | 
    
         
            -
                toggle: function(){
         
     | 
| 
       218 
     | 
    
         
            -
                  return this.css("display") == "none" ? this.show() : this.hide();
         
     | 
| 
       219 
     | 
    
         
            -
                },
         
     | 
| 
       220 
     | 
    
         
            -
                prev: function(){ return $(this.pluck('previousElementSibling')) },
         
     | 
| 
       221 
     | 
    
         
            -
                next: function(){ return $(this.pluck('nextElementSibling')) },
         
     | 
| 
       222 
     | 
    
         
            -
                html: function(html){
         
     | 
| 
       223 
     | 
    
         
            -
                  return html === undefined ?
         
     | 
| 
       224 
     | 
    
         
            -
                    (this.length > 0 ? this[0].innerHTML : null) :
         
     | 
| 
       225 
     | 
    
         
            -
                    this.each(function(idx){ this.innerHTML = funcArg(this, html, idx, this.innerHTML) });
         
     | 
| 
       226 
     | 
    
         
            -
                },
         
     | 
| 
       227 
     | 
    
         
            -
                text: function(text){
         
     | 
| 
       228 
     | 
    
         
            -
                  return text === undefined ?
         
     | 
| 
       229 
     | 
    
         
            -
                    (this.length > 0 ? this[0].innerText : null) :
         
     | 
| 
       230 
     | 
    
         
            -
                    this.each(function(){ this.innerText = text });
         
     | 
| 
       231 
     | 
    
         
            -
                },
         
     | 
| 
       232 
     | 
    
         
            -
                attr: function(name, value){
         
     | 
| 
       233 
     | 
    
         
            -
                  return (typeof name == 'string' && value === undefined) ?
         
     | 
| 
       234 
     | 
    
         
            -
                    (this.length > 0 && this[0].nodeName == 'INPUT' && this[0].type == 'text' && name == 'value') ? (this.val()) :
         
     | 
| 
       235 
     | 
    
         
            -
                    (this.length > 0 ? this[0].getAttribute(name) || (name in this[0] ? this[0][name] : undefined) : undefined) :
         
     | 
| 
       236 
     | 
    
         
            -
                    this.each(function(idx){
         
     | 
| 
       237 
     | 
    
         
            -
                      if (isO(name)) for (key in name) this.setAttribute(key, name[key])
         
     | 
| 
       238 
     | 
    
         
            -
                      else this.setAttribute(name, funcArg(this, value, idx, this.getAttribute(name)));
         
     | 
| 
       239 
     | 
    
         
            -
                    });
         
     | 
| 
       240 
     | 
    
         
            -
                },
         
     | 
| 
       241 
     | 
    
         
            -
                removeAttr: function(name) {
         
     | 
| 
       242 
     | 
    
         
            -
                  return this.each(function() { this.removeAttribute(name); });
         
     | 
| 
       243 
     | 
    
         
            -
                },
         
     | 
| 
       244 
     | 
    
         
            -
                data: function(name, value){
         
     | 
| 
       245 
     | 
    
         
            -
                  return this.attr('data-' + name, value);
         
     | 
| 
       246 
     | 
    
         
            -
                },
         
     | 
| 
       247 
     | 
    
         
            -
                val: function(value){
         
     | 
| 
       248 
     | 
    
         
            -
                  return (value === undefined) ?
         
     | 
| 
       249 
     | 
    
         
            -
                    (this.length > 0 ? this[0].value : null) :
         
     | 
| 
       250 
     | 
    
         
            -
                    this.each(function(){
         
     | 
| 
       251 
     | 
    
         
            -
                      this.value = value;
         
     | 
| 
       252 
     | 
    
         
            -
                    });
         
     | 
| 
       253 
     | 
    
         
            -
                },
         
     | 
| 
       254 
     | 
    
         
            -
                offset: function(){
         
     | 
| 
       255 
     | 
    
         
            -
                  if(this.length==0) return null;
         
     | 
| 
       256 
     | 
    
         
            -
                  var obj = this[0].getBoundingClientRect();
         
     | 
| 
       257 
     | 
    
         
            -
                  return {
         
     | 
| 
       258 
     | 
    
         
            -
                    left: obj.left + document.body.scrollLeft,
         
     | 
| 
       259 
     | 
    
         
            -
                    top: obj.top + document.body.scrollTop,
         
     | 
| 
       260 
     | 
    
         
            -
                    width: obj.width,
         
     | 
| 
       261 
     | 
    
         
            -
                    height: obj.height
         
     | 
| 
       262 
     | 
    
         
            -
                  };
         
     | 
| 
       263 
     | 
    
         
            -
                },
         
     | 
| 
       264 
     | 
    
         
            -
                css: function(property, value){
         
     | 
| 
       265 
     | 
    
         
            -
                  if (value === undefined && typeof property == 'string')
         
     | 
| 
       266 
     | 
    
         
            -
                    return this[0].style[camelize(property)] || getComputedStyle(this[0], '').getPropertyValue(property);
         
     | 
| 
       267 
     | 
    
         
            -
                  css = '';
         
     | 
| 
       268 
     | 
    
         
            -
                  for (key in property) css += key + ':' + property[key] + ';';
         
     | 
| 
       269 
     | 
    
         
            -
                  if (typeof property == 'string') css = property + ':' + value;
         
     | 
| 
       270 
     | 
    
         
            -
                  return this.each(function() { this.style.cssText += ';' + css });
         
     | 
| 
       271 
     | 
    
         
            -
                },
         
     | 
| 
       272 
     | 
    
         
            -
                index: function(element){
         
     | 
| 
       273 
     | 
    
         
            -
                  return this.indexOf($(element)[0]);
         
     | 
| 
       274 
     | 
    
         
            -
                },
         
     | 
| 
       275 
     | 
    
         
            -
                hasClass: function(name){
         
     | 
| 
       276 
     | 
    
         
            -
                  return classRE(name).test(this[0].className);
         
     | 
| 
       277 
     | 
    
         
            -
                },
         
     | 
| 
       278 
     | 
    
         
            -
                addClass: function(name){
         
     | 
| 
       279 
     | 
    
         
            -
                  return this.each(function(idx) {
         
     | 
| 
       280 
     | 
    
         
            -
                    classList = [];
         
     | 
| 
       281 
     | 
    
         
            -
                    var cls = this.className, newName = funcArg(this, name, idx, cls);
         
     | 
| 
       282 
     | 
    
         
            -
                    newName.split(/\s+/g).forEach(function(klass) {
         
     | 
| 
       283 
     | 
    
         
            -
                      if (!$(this).hasClass(klass)) {
         
     | 
| 
       284 
     | 
    
         
            -
                        classList.push(klass)
         
     | 
| 
       285 
     | 
    
         
            -
                      }
         
     | 
| 
       286 
     | 
    
         
            -
                    }, this);
         
     | 
| 
       287 
     | 
    
         
            -
                    classList.length && (this.className += (cls ? " " : "") + classList.join(" "))
         
     | 
| 
       288 
     | 
    
         
            -
                  })
         
     | 
| 
       289 
     | 
    
         
            -
                },
         
     | 
| 
       290 
     | 
    
         
            -
                removeClass: function(name){
         
     | 
| 
       291 
     | 
    
         
            -
                  return this.each(function(idx) {
         
     | 
| 
       292 
     | 
    
         
            -
                    classList = this.className;
         
     | 
| 
       293 
     | 
    
         
            -
                    funcArg(this, name, idx, classList).split(/\s+/g).forEach(function(klass) {
         
     | 
| 
       294 
     | 
    
         
            -
                      classList = classList.replace(classRE(klass), " ")
         
     | 
| 
       295 
     | 
    
         
            -
                    });
         
     | 
| 
       296 
     | 
    
         
            -
                    this.className = classList.trim()
         
     | 
| 
       297 
     | 
    
         
            -
                  })
         
     | 
| 
       298 
     | 
    
         
            -
                },
         
     | 
| 
       299 
     | 
    
         
            -
                toggleClass: function(name, when){
         
     | 
| 
       300 
     | 
    
         
            -
                  return this.each(function(idx){
         
     | 
| 
       301 
     | 
    
         
            -
                   var cls = this.className, newName = funcArg(this, name, idx, cls);
         
     | 
| 
       302 
     | 
    
         
            -
                   ((when !== undefined && !when) || $(this).hasClass(newName)) ?
         
     | 
| 
       303 
     | 
    
         
            -
                     $(this).removeClass(newName) : $(this).addClass(newName)
         
     | 
| 
       304 
     | 
    
         
            -
                  });
         
     | 
| 
       305 
     | 
    
         
            -
                },
         
     | 
| 
       306 
     | 
    
         
            -
                submit: function () {
         
     | 
| 
       307 
     | 
    
         
            -
                  return this.each(function () {
         
     | 
| 
       308 
     | 
    
         
            -
                    try {
         
     | 
| 
       309 
     | 
    
         
            -
                      // Submit first form element
         
     | 
| 
       310 
     | 
    
         
            -
                      this.submit();
         
     | 
| 
       311 
     | 
    
         
            -
                      return;
         
     | 
| 
       312 
     | 
    
         
            -
                    } catch(e) {};
         
     | 
| 
       313 
     | 
    
         
            -
                  });
         
     | 
| 
       314 
     | 
    
         
            -
                }
         
     | 
| 
       315 
     | 
    
         
            -
              };
         
     | 
| 
       316 
     | 
    
         
            -
             
     | 
| 
       317 
     | 
    
         
            -
              ['width', 'height'].forEach(function(property){
         
     | 
| 
       318 
     | 
    
         
            -
                $.fn[property] = function(){ var offset = this.offset(); return offset ? offset[property] : null }
         
     | 
| 
       319 
     | 
    
         
            -
              });
         
     | 
| 
       320 
     | 
    
         
            -
             
     | 
| 
       321 
     | 
    
         
            -
              var adjacencyOperators = [ 'prepend', 'after', 'before', 'append' ];
         
     | 
| 
       322 
     | 
    
         
            -
              function insert(operator, element, other) {
         
     | 
| 
       323 
     | 
    
         
            -
                var parent = (!operator || operator == 3) ? element : element.parentNode;
         
     | 
| 
       324 
     | 
    
         
            -
                parent.insertBefore(other,
         
     | 
| 
       325 
     | 
    
         
            -
                  !operator ? parent.firstChild :         // prepend
         
     | 
| 
       326 
     | 
    
         
            -
                  operator == 1 ? element.nextSibling :   // after
         
     | 
| 
       327 
     | 
    
         
            -
                  operator == 2 ? element :               // before
         
     | 
| 
       328 
     | 
    
         
            -
                  null);                                  // append
         
     | 
| 
       329 
     | 
    
         
            -
              }
         
     | 
| 
       330 
     | 
    
         
            -
             
     | 
| 
       331 
     | 
    
         
            -
              adjacencyOperators.forEach(function(key, operator) {
         
     | 
| 
       332 
     | 
    
         
            -
                $.fn[key] = function(html){
         
     | 
| 
       333 
     | 
    
         
            -
                  if (typeof(html) != 'object')
         
     | 
| 
       334 
     | 
    
         
            -
                    html = fragment(html);
         
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
                  return this.each(function(index, element){
         
     | 
| 
       337 
     | 
    
         
            -
                    if (html.length || html instanceof Z) {
         
     | 
| 
       338 
     | 
    
         
            -
                      dom = html;
         
     | 
| 
       339 
     | 
    
         
            -
                      for (var i=0; i<dom.length; i++) {
         
     | 
| 
       340 
     | 
    
         
            -
                        var e = dom[operator < 2 ? dom.length-i-1 : i];
         
     | 
| 
       341 
     | 
    
         
            -
                        insert(operator, element, e);
         
     | 
| 
       342 
     | 
    
         
            -
                      }
         
     | 
| 
       343 
     | 
    
         
            -
                    } else {
         
     | 
| 
       344 
     | 
    
         
            -
                      insert(operator, element, html);
         
     | 
| 
       345 
     | 
    
         
            -
                    }
         
     | 
| 
       346 
     | 
    
         
            -
                  });
         
     | 
| 
       347 
     | 
    
         
            -
                };
         
     | 
| 
       348 
     | 
    
         
            -
              });
         
     | 
| 
       349 
     | 
    
         
            -
             
     | 
| 
       350 
     | 
    
         
            -
              var reverseAdjacencyOperators = [ 'append', 'prepend' ];
         
     | 
| 
       351 
     | 
    
         
            -
             
     | 
| 
       352 
     | 
    
         
            -
              reverseAdjacencyOperators.forEach(function(key) {
         
     | 
| 
       353 
     | 
    
         
            -
            	$.fn[key+'To'] = function(html){
         
     | 
| 
       354 
     | 
    
         
            -
            		if (typeof(html) != 'object')
         
     | 
| 
       355 
     | 
    
         
            -
            	      html = fragment(html);
         
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
            	    html[key](this);
         
     | 
| 
       358 
     | 
    
         
            -
            	    return this;
         
     | 
| 
       359 
     | 
    
         
            -
            	  };
         
     | 
| 
       360 
     | 
    
         
            -
              });
         
     | 
| 
       361 
     | 
    
         
            -
             
     | 
| 
       362 
     | 
    
         
            -
              Z.prototype = $.fn;
         
     | 
| 
       363 
     | 
    
         
            -
             
     | 
| 
       364 
     | 
    
         
            -
              return $;
         
     | 
| 
       365 
     | 
    
         
            -
            })();
         
     | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
     | 
    
         
            -
            '$' in window || (window.$ = Zepto);
         
     | 
| 
       368 
     | 
    
         
            -
            (function($){
         
     | 
| 
       369 
     | 
    
         
            -
              var $$ = $.qsa, handlers = {}, _zid = 1;
         
     | 
| 
       370 
     | 
    
         
            -
              function zid(element) {
         
     | 
| 
       371 
     | 
    
         
            -
                return element._zid || (element._zid = _zid++);
         
     | 
| 
       372 
     | 
    
         
            -
              }
         
     | 
| 
       373 
     | 
    
         
            -
              function findHandlers(element, event, fn, selector) {
         
     | 
| 
       374 
     | 
    
         
            -
                event = parse(event);
         
     | 
| 
       375 
     | 
    
         
            -
                if (event.ns) var matcher = matcherFor(event.ns);
         
     | 
| 
       376 
     | 
    
         
            -
                return (handlers[zid(element)] || []).filter(function(handler) {
         
     | 
| 
       377 
     | 
    
         
            -
                  return handler
         
     | 
| 
       378 
     | 
    
         
            -
                    && (!event.e  || handler.e == event.e)
         
     | 
| 
       379 
     | 
    
         
            -
                    && (!event.ns || matcher.test(handler.ns))
         
     | 
| 
       380 
     | 
    
         
            -
                    && (!fn       || handler.fn == fn)
         
     | 
| 
       381 
     | 
    
         
            -
                    && (!selector || handler.sel == selector);
         
     | 
| 
       382 
     | 
    
         
            -
                });
         
     | 
| 
       383 
     | 
    
         
            -
              }
         
     | 
| 
       384 
     | 
    
         
            -
              function parse(event) {
         
     | 
| 
       385 
     | 
    
         
            -
                var parts = ('' + event).split('.');
         
     | 
| 
       386 
     | 
    
         
            -
                return {e: parts[0], ns: parts.slice(1).sort().join(' ')};
         
     | 
| 
       387 
     | 
    
         
            -
              }
         
     | 
| 
       388 
     | 
    
         
            -
              function matcherFor(ns) {
         
     | 
| 
       389 
     | 
    
         
            -
                return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');
         
     | 
| 
       390 
     | 
    
         
            -
              }
         
     | 
| 
       391 
     | 
    
         
            -
             
     | 
| 
       392 
     | 
    
         
            -
              function add(element, events, fn, selector, delegate){
         
     | 
| 
       393 
     | 
    
         
            -
                var id = zid(element), set = (handlers[id] || (handlers[id] = []));
         
     | 
| 
       394 
     | 
    
         
            -
                events.split(/\s/).forEach(function(event){
         
     | 
| 
       395 
     | 
    
         
            -
                  var callback = delegate || fn;
         
     | 
| 
       396 
     | 
    
         
            -
                  var proxyfn = function(event) { return callback(event, event.data) };
         
     | 
| 
       397 
     | 
    
         
            -
                  var handler = $.extend(parse(event), {fn: fn, proxy: proxyfn, sel: selector, del: delegate, i: set.length});
         
     | 
| 
       398 
     | 
    
         
            -
                  set.push(handler);
         
     | 
| 
       399 
     | 
    
         
            -
                  element.addEventListener(handler.e, proxyfn, false);
         
     | 
| 
       400 
     | 
    
         
            -
                });
         
     | 
| 
       401 
     | 
    
         
            -
              }
         
     | 
| 
       402 
     | 
    
         
            -
              function remove(element, events, fn, selector){
         
     | 
| 
       403 
     | 
    
         
            -
                var id = zid(element);
         
     | 
| 
       404 
     | 
    
         
            -
                (events || '').split(/\s/).forEach(function(event){
         
     | 
| 
       405 
     | 
    
         
            -
                  findHandlers(element, event, fn, selector).forEach(function(handler){
         
     | 
| 
       406 
     | 
    
         
            -
                    delete handlers[id][handler.i];
         
     | 
| 
       407 
     | 
    
         
            -
                    element.removeEventListener(handler.e, handler.proxy, false);
         
     | 
| 
       408 
     | 
    
         
            -
                  });
         
     | 
| 
       409 
     | 
    
         
            -
                });
         
     | 
| 
       410 
     | 
    
         
            -
              }
         
     | 
| 
       411 
     | 
    
         
            -
             
     | 
| 
       412 
     | 
    
         
            -
              $.event = { add: add, remove: remove }
         
     | 
| 
       413 
     | 
    
         
            -
             
     | 
| 
       414 
     | 
    
         
            -
              $.fn.bind = function(event, callback){
         
     | 
| 
       415 
     | 
    
         
            -
                return this.each(function(){
         
     | 
| 
       416 
     | 
    
         
            -
                  add(this, event, callback);
         
     | 
| 
       417 
     | 
    
         
            -
                });
         
     | 
| 
       418 
     | 
    
         
            -
              };
         
     | 
| 
       419 
     | 
    
         
            -
              $.fn.unbind = function(event, callback){
         
     | 
| 
       420 
     | 
    
         
            -
                return this.each(function(){
         
     | 
| 
       421 
     | 
    
         
            -
                  remove(this, event, callback);
         
     | 
| 
       422 
     | 
    
         
            -
                });
         
     | 
| 
       423 
     | 
    
         
            -
              };
         
     | 
| 
       424 
     | 
    
         
            -
              $.fn.one = function(event, callback){
         
     | 
| 
       425 
     | 
    
         
            -
                return this.each(function(){
         
     | 
| 
       426 
     | 
    
         
            -
                  var self = this;
         
     | 
| 
       427 
     | 
    
         
            -
                  add(this, event, function wrapper(){
         
     | 
| 
       428 
     | 
    
         
            -
                    callback();
         
     | 
| 
       429 
     | 
    
         
            -
                    remove(self, event, arguments.callee);
         
     | 
| 
       430 
     | 
    
         
            -
                  });
         
     | 
| 
       431 
     | 
    
         
            -
                });
         
     | 
| 
       432 
     | 
    
         
            -
              };
         
     | 
| 
       433 
     | 
    
         
            -
             
     | 
| 
       434 
     | 
    
         
            -
              var eventMethods = ['preventDefault', 'stopImmediatePropagation', 'stopPropagation'];
         
     | 
| 
       435 
     | 
    
         
            -
              function createProxy(event) {
         
     | 
| 
       436 
     | 
    
         
            -
                var proxy = $.extend({originalEvent: event}, event);
         
     | 
| 
       437 
     | 
    
         
            -
                eventMethods.forEach(function(key) {
         
     | 
| 
       438 
     | 
    
         
            -
                  proxy[key] = function() {return event[key].apply(event, arguments)};
         
     | 
| 
       439 
     | 
    
         
            -
                });
         
     | 
| 
       440 
     | 
    
         
            -
                return proxy;
         
     | 
| 
       441 
     | 
    
         
            -
              }
         
     | 
| 
       442 
     | 
    
         
            -
             
     | 
| 
       443 
     | 
    
         
            -
              $.fn.delegate = function(selector, event, callback){
         
     | 
| 
       444 
     | 
    
         
            -
                return this.each(function(i, element){
         
     | 
| 
       445 
     | 
    
         
            -
                  add(element, event, callback, selector, function(e, data){
         
     | 
| 
       446 
     | 
    
         
            -
                    var target = e.target, nodes = $$(element, selector);
         
     | 
| 
       447 
     | 
    
         
            -
                    while (target && nodes.indexOf(target) < 0) target = target.parentNode;
         
     | 
| 
       448 
     | 
    
         
            -
                    if (target && !(target === element) && !(target === document)) {
         
     | 
| 
       449 
     | 
    
         
            -
                      callback.call(target, $.extend(createProxy(e), {
         
     | 
| 
       450 
     | 
    
         
            -
                        currentTarget: target, liveFired: element
         
     | 
| 
       451 
     | 
    
         
            -
                      }), data);
         
     | 
| 
       452 
     | 
    
         
            -
                    }
         
     | 
| 
       453 
     | 
    
         
            -
                  });
         
     | 
| 
       454 
     | 
    
         
            -
                });
         
     | 
| 
       455 
     | 
    
         
            -
              };
         
     | 
| 
       456 
     | 
    
         
            -
              $.fn.undelegate = function(selector, event, callback){
         
     | 
| 
       457 
     | 
    
         
            -
                return this.each(function(){
         
     | 
| 
       458 
     | 
    
         
            -
                  remove(this, event, callback, selector);
         
     | 
| 
       459 
     | 
    
         
            -
                });
         
     | 
| 
       460 
     | 
    
         
            -
              }
         
     | 
| 
       461 
     | 
    
         
            -
             
     | 
| 
       462 
     | 
    
         
            -
              $.fn.live = function(event, callback){
         
     | 
| 
       463 
     | 
    
         
            -
                $(document.body).delegate(this.selector, event, callback);
         
     | 
| 
       464 
     | 
    
         
            -
                return this;
         
     | 
| 
       465 
     | 
    
         
            -
              };
         
     | 
| 
       466 
     | 
    
         
            -
              $.fn.die = function(event, callback){
         
     | 
| 
       467 
     | 
    
         
            -
                $(document.body).undelegate(this.selector, event, callback);
         
     | 
| 
       468 
     | 
    
         
            -
                return this;
         
     | 
| 
       469 
     | 
    
         
            -
              };
         
     | 
| 
       470 
     | 
    
         
            -
             
     | 
| 
       471 
     | 
    
         
            -
              $.fn.trigger = function(event, data){
         
     | 
| 
       472 
     | 
    
         
            -
                return this.each(function(){
         
     | 
| 
       473 
     | 
    
         
            -
                  var e = document.createEvent('Events');
         
     | 
| 
       474 
     | 
    
         
            -
                  e.initEvent(event, true, true)
         
     | 
| 
       475 
     | 
    
         
            -
                  e.data = data;
         
     | 
| 
       476 
     | 
    
         
            -
                  this.dispatchEvent(e);
         
     | 
| 
       477 
     | 
    
         
            -
                });
         
     | 
| 
       478 
     | 
    
         
            -
              };
         
     | 
| 
       479 
     | 
    
         
            -
            })(Zepto);
         
     | 
| 
       480 
     | 
    
         
            -
            (function($){
         
     | 
| 
       481 
     | 
    
         
            -
              function detect(ua){
         
     | 
| 
       482 
     | 
    
         
            -
                var ua = ua, os = {},
         
     | 
| 
       483 
     | 
    
         
            -
                  android = ua.match(/(Android)\s+([\d.]+)/),
         
     | 
| 
       484 
     | 
    
         
            -
                  iphone = ua.match(/(iPhone\sOS)\s([\d_]+)/),
         
     | 
| 
       485 
     | 
    
         
            -
                  ipad = ua.match(/(iPad).*OS\s([\d_]+)/),
         
     | 
| 
       486 
     | 
    
         
            -
                  webos = ua.match(/(webOS)\/([\d.]+)/),
         
     | 
| 
       487 
     | 
    
         
            -
                  blackberry = ua.match(/(BlackBerry).*Version\/([\d.]+)/);
         
     | 
| 
       488 
     | 
    
         
            -
                if (android) os.android = true, os.version = android[2];
         
     | 
| 
       489 
     | 
    
         
            -
                if (iphone) os.ios = true, os.version = iphone[2].replace(/_/g, '.'), os.iphone = true;
         
     | 
| 
       490 
     | 
    
         
            -
                if (ipad) os.ios = true, os.version = ipad[2].replace(/_/g, '.'), os.ipad = true;
         
     | 
| 
       491 
     | 
    
         
            -
                if (webos) os.webos = true, os.version = webos[2];
         
     | 
| 
       492 
     | 
    
         
            -
                if (blackberry) os.blackberry = true, os.version = blackberry[2];
         
     | 
| 
       493 
     | 
    
         
            -
                return os;
         
     | 
| 
       494 
     | 
    
         
            -
              }
         
     | 
| 
       495 
     | 
    
         
            -
              $.os = detect(navigator.userAgent);
         
     | 
| 
       496 
     | 
    
         
            -
              $.__detect = detect;
         
     | 
| 
       497 
     | 
    
         
            -
             
     | 
| 
       498 
     | 
    
         
            -
              var v = navigator.userAgent.match(/WebKit\/([\d.]+)/);
         
     | 
| 
       499 
     | 
    
         
            -
              $.browser = v ? { webkit: true, version: v[1] } : { webkit: false };
         
     | 
| 
       500 
     | 
    
         
            -
            })(Zepto);
         
     | 
| 
       501 
     | 
    
         
            -
            (function($, undefined){
         
     | 
| 
       502 
     | 
    
         
            -
              $.fn.anim = function(properties, duration, ease, callback){
         
     | 
| 
       503 
     | 
    
         
            -
                var transforms = [], opacity, key;
         
     | 
| 
       504 
     | 
    
         
            -
                for (key in properties)
         
     | 
| 
       505 
     | 
    
         
            -
                  if (key === 'opacity') opacity = properties[key];
         
     | 
| 
       506 
     | 
    
         
            -
                  else transforms.push(key + '(' + properties[key] + ')');
         
     | 
| 
       507 
     | 
    
         
            -
             
     | 
| 
       508 
     | 
    
         
            -
                $.isFunction(callback) && this.one('webkitTransitionEnd', callback);
         
     | 
| 
       509 
     | 
    
         
            -
             
     | 
| 
       510 
     | 
    
         
            -
                return this.css({
         
     | 
| 
       511 
     | 
    
         
            -
                  '-webkit-transition': 'all ' + (duration !== undefined ? duration : 0.5) + 's ' + (ease || ''),
         
     | 
| 
       512 
     | 
    
         
            -
                  '-webkit-transform': transforms.join(' '),
         
     | 
| 
       513 
     | 
    
         
            -
                  opacity: opacity
         
     | 
| 
       514 
     | 
    
         
            -
                });
         
     | 
| 
       515 
     | 
    
         
            -
              }
         
     | 
| 
       516 
     | 
    
         
            -
            })(Zepto);
         
     | 
| 
       517 
     | 
    
         
            -
            (function($){
         
     | 
| 
       518 
     | 
    
         
            -
              var jsonpID = 0,
         
     | 
| 
       519 
     | 
    
         
            -
                  isObject = $.isObject,
         
     | 
| 
       520 
     | 
    
         
            -
                  key;
         
     | 
| 
       521 
     | 
    
         
            -
             
     | 
| 
       522 
     | 
    
         
            -
              function empty() {}
         
     | 
| 
       523 
     | 
    
         
            -
             
     | 
| 
       524 
     | 
    
         
            -
              $.ajaxJSONP = function(options){
         
     | 
| 
       525 
     | 
    
         
            -
                var jsonpString = 'jsonp' + ++jsonpID,
         
     | 
| 
       526 
     | 
    
         
            -
                    script = document.createElement('script');
         
     | 
| 
       527 
     | 
    
         
            -
                window[jsonpString] = function(data){
         
     | 
| 
       528 
     | 
    
         
            -
                  options.success(data);
         
     | 
| 
       529 
     | 
    
         
            -
                  delete window[jsonpString];
         
     | 
| 
       530 
     | 
    
         
            -
                };
         
     | 
| 
       531 
     | 
    
         
            -
                script.src = options.url.replace(/=\?/, '=' + jsonpString);
         
     | 
| 
       532 
     | 
    
         
            -
                $('head').append(script);
         
     | 
| 
       533 
     | 
    
         
            -
              };
         
     | 
| 
       534 
     | 
    
         
            -
             
     | 
| 
       535 
     | 
    
         
            -
              $.ajaxSettings = {
         
     | 
| 
       536 
     | 
    
         
            -
                type: 'GET',
         
     | 
| 
       537 
     | 
    
         
            -
                beforeSend: empty, success: empty, error: empty, complete: empty,
         
     | 
| 
       538 
     | 
    
         
            -
                accepts: {
         
     | 
| 
       539 
     | 
    
         
            -
                  script: 'text/javascript, application/javascript',
         
     | 
| 
       540 
     | 
    
         
            -
                  json:   'application/json',
         
     | 
| 
       541 
     | 
    
         
            -
                  xml:    'application/xml, text/xml',
         
     | 
| 
       542 
     | 
    
         
            -
                  html:   'text/html',
         
     | 
| 
       543 
     | 
    
         
            -
                  text:   'text/plain'
         
     | 
| 
       544 
     | 
    
         
            -
                }
         
     | 
| 
       545 
     | 
    
         
            -
              };
         
     | 
| 
       546 
     | 
    
         
            -
             
     | 
| 
       547 
     | 
    
         
            -
              $.ajax = function(options){
         
     | 
| 
       548 
     | 
    
         
            -
                options = options || {};
         
     | 
| 
       549 
     | 
    
         
            -
                var settings = $.extend({}, options);
         
     | 
| 
       550 
     | 
    
         
            -
                for (key in $.ajaxSettings) if (!settings[key]) settings[key] = $.ajaxSettings[key];
         
     | 
| 
       551 
     | 
    
         
            -
             
     | 
| 
       552 
     | 
    
         
            -
                if (/=\?/.test(settings.url)) return $.ajaxJSONP(settings);
         
     | 
| 
       553 
     | 
    
         
            -
             
     | 
| 
       554 
     | 
    
         
            -
                if (!settings.url) settings.url = window.location.toString();
         
     | 
| 
       555 
     | 
    
         
            -
                if (settings.data && !settings.contentType) settings.contentType = 'application/x-www-form-urlencoded';
         
     | 
| 
       556 
     | 
    
         
            -
                if (isObject(settings.data)) settings.data = $.param(settings.data);
         
     | 
| 
       557 
     | 
    
         
            -
             
     | 
| 
       558 
     | 
    
         
            -
                if (settings.type.match(/get/i) && settings.data) {
         
     | 
| 
       559 
     | 
    
         
            -
                  var queryString = settings.data;
         
     | 
| 
       560 
     | 
    
         
            -
                  if (settings.url.match(/\?.*=/)) {
         
     | 
| 
       561 
     | 
    
         
            -
                    queryString = '&' + queryString;
         
     | 
| 
       562 
     | 
    
         
            -
                  } else if (queryString[0] != '?') {
         
     | 
| 
       563 
     | 
    
         
            -
                    queryString = '?' + queryString;
         
     | 
| 
       564 
     | 
    
         
            -
                  }
         
     | 
| 
       565 
     | 
    
         
            -
                  settings.url += queryString;
         
     | 
| 
       566 
     | 
    
         
            -
                }
         
     | 
| 
       567 
     | 
    
         
            -
             
     | 
| 
       568 
     | 
    
         
            -
                var mime = settings.accepts[settings.dataType],
         
     | 
| 
       569 
     | 
    
         
            -
                    xhr = new XMLHttpRequest();
         
     | 
| 
       570 
     | 
    
         
            -
             
     | 
| 
       571 
     | 
    
         
            -
                settings.headers = $.extend({'X-Requested-With': 'XMLHttpRequest'}, settings.headers || {});
         
     | 
| 
       572 
     | 
    
         
            -
                if (mime) settings.headers['Accept'] = mime;
         
     | 
| 
       573 
     | 
    
         
            -
             
     | 
| 
       574 
     | 
    
         
            -
                xhr.onreadystatechange = function(){
         
     | 
| 
       575 
     | 
    
         
            -
                  if (xhr.readyState == 4) {
         
     | 
| 
       576 
     | 
    
         
            -
                    var result, error = false;
         
     | 
| 
       577 
     | 
    
         
            -
                    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 0) {
         
     | 
| 
       578 
     | 
    
         
            -
                      if (mime == 'application/json') {
         
     | 
| 
       579 
     | 
    
         
            -
                        try { result = JSON.parse(xhr.responseText); }
         
     | 
| 
       580 
     | 
    
         
            -
                        catch (e) { error = e; }
         
     | 
| 
       581 
     | 
    
         
            -
                      }
         
     | 
| 
       582 
     | 
    
         
            -
                      else result = xhr.responseText;
         
     | 
| 
       583 
     | 
    
         
            -
                      if (error) settings.error(xhr, 'parsererror', error);
         
     | 
| 
       584 
     | 
    
         
            -
                      else settings.success(result, 'success', xhr);
         
     | 
| 
       585 
     | 
    
         
            -
                    } else {
         
     | 
| 
       586 
     | 
    
         
            -
                      error = true;
         
     | 
| 
       587 
     | 
    
         
            -
                      settings.error(xhr, 'error');
         
     | 
| 
       588 
     | 
    
         
            -
                    }
         
     | 
| 
       589 
     | 
    
         
            -
                    settings.complete(xhr, error ? 'error' : 'success');
         
     | 
| 
       590 
     | 
    
         
            -
                  }
         
     | 
| 
       591 
     | 
    
         
            -
                };
         
     | 
| 
       592 
     | 
    
         
            -
             
     | 
| 
       593 
     | 
    
         
            -
                xhr.open(settings.type, settings.url, true);
         
     | 
| 
       594 
     | 
    
         
            -
                if (settings.beforeSend(xhr, settings) === false) {
         
     | 
| 
       595 
     | 
    
         
            -
                  xhr.abort();
         
     | 
| 
       596 
     | 
    
         
            -
                  return false;
         
     | 
| 
       597 
     | 
    
         
            -
                }
         
     | 
| 
       598 
     | 
    
         
            -
             
     | 
| 
       599 
     | 
    
         
            -
                if (settings.contentType) settings.headers['Content-Type'] = settings.contentType;
         
     | 
| 
       600 
     | 
    
         
            -
                for (name in settings.headers) xhr.setRequestHeader(name, settings.headers[name]);
         
     | 
| 
       601 
     | 
    
         
            -
                xhr.send(settings.data);
         
     | 
| 
       602 
     | 
    
         
            -
             
     | 
| 
       603 
     | 
    
         
            -
                return xhr;
         
     | 
| 
       604 
     | 
    
         
            -
              };
         
     | 
| 
       605 
     | 
    
         
            -
             
     | 
| 
       606 
     | 
    
         
            -
              $.get = function(url, success){ $.ajax({ url: url, success: success }) };
         
     | 
| 
       607 
     | 
    
         
            -
              $.post = function(url, data, success, dataType){
         
     | 
| 
       608 
     | 
    
         
            -
                if ($.isFunction(data)) dataType = dataType || success, success = data, data = null;
         
     | 
| 
       609 
     | 
    
         
            -
                $.ajax({ type: 'POST', url: url, data: data, success: success, dataType: dataType });
         
     | 
| 
       610 
     | 
    
         
            -
              };
         
     | 
| 
       611 
     | 
    
         
            -
              $.getJSON = function(url, success){ $.ajax({ url: url, success: success, dataType: 'json' }) };
         
     | 
| 
       612 
     | 
    
         
            -
             
     | 
| 
       613 
     | 
    
         
            -
              $.fn.load = function(url, success){
         
     | 
| 
       614 
     | 
    
         
            -
                if (!this.length) return this;
         
     | 
| 
       615 
     | 
    
         
            -
                var self = this, parts = url.split(/\s/), selector;
         
     | 
| 
       616 
     | 
    
         
            -
                if (parts.length > 1) url = parts[0], selector = parts[1];
         
     | 
| 
       617 
     | 
    
         
            -
                $.get(url, function(response){
         
     | 
| 
       618 
     | 
    
         
            -
                  self.html(selector ?
         
     | 
| 
       619 
     | 
    
         
            -
                    $(document.createElement('div')).html(response).find(selector).html()
         
     | 
| 
       620 
     | 
    
         
            -
                    : response);
         
     | 
| 
       621 
     | 
    
         
            -
                  success && success();
         
     | 
| 
       622 
     | 
    
         
            -
                });
         
     | 
| 
       623 
     | 
    
         
            -
                return this;
         
     | 
| 
       624 
     | 
    
         
            -
              };
         
     | 
| 
       625 
     | 
    
         
            -
             
     | 
| 
       626 
     | 
    
         
            -
              $.param = function(obj, v){
         
     | 
| 
       627 
     | 
    
         
            -
                var result = [], add = function(key, value){
         
     | 
| 
       628 
     | 
    
         
            -
                  result.push(encodeURIComponent(v ? v + '[' + key + ']' : key)
         
     | 
| 
       629 
     | 
    
         
            -
                    + '=' + encodeURIComponent(value));
         
     | 
| 
       630 
     | 
    
         
            -
                  },
         
     | 
| 
       631 
     | 
    
         
            -
                  isObjArray = $.isArray(obj);
         
     | 
| 
       632 
     | 
    
         
            -
             
     | 
| 
       633 
     | 
    
         
            -
                for(key in obj)
         
     | 
| 
       634 
     | 
    
         
            -
                  if(isObject(obj[key]))
         
     | 
| 
       635 
     | 
    
         
            -
                    result.push($.param(obj[key], (v ? v + '[' + key + ']' : key)));
         
     | 
| 
       636 
     | 
    
         
            -
                  else
         
     | 
| 
       637 
     | 
    
         
            -
                    add(isObjArray ? '' : key, obj[key]);
         
     | 
| 
       638 
     | 
    
         
            -
             
     | 
| 
       639 
     | 
    
         
            -
                return result.join('&').replace('%20', '+');
         
     | 
| 
       640 
     | 
    
         
            -
              };
         
     | 
| 
       641 
     | 
    
         
            -
            })(Zepto);
         
     | 
| 
       642 
     | 
    
         
            -
            (function($){
         
     | 
| 
       643 
     | 
    
         
            -
              var touch = {}, touchTimeout;
         
     | 
| 
       644 
     | 
    
         
            -
             
     | 
| 
       645 
     | 
    
         
            -
              function parentIfText(node){
         
     | 
| 
       646 
     | 
    
         
            -
                return 'tagName' in node ? node : node.parentNode;
         
     | 
| 
       647 
     | 
    
         
            -
              }
         
     | 
| 
       648 
     | 
    
         
            -
             
     | 
| 
       649 
     | 
    
         
            -
              function swipeDirection(x1, x2, y1, y2){
         
     | 
| 
       650 
     | 
    
         
            -
                var xDelta = Math.abs(x1 - x2), yDelta = Math.abs(y1 - y2);
         
     | 
| 
       651 
     | 
    
         
            -
                if (xDelta >= yDelta) {
         
     | 
| 
       652 
     | 
    
         
            -
                  return (x1 - x2 > 0 ? 'Left' : 'Right');
         
     | 
| 
       653 
     | 
    
         
            -
                } else {
         
     | 
| 
       654 
     | 
    
         
            -
                  return (y1 - y2 > 0 ? 'Up' : 'Down');
         
     | 
| 
       655 
     | 
    
         
            -
                }
         
     | 
| 
       656 
     | 
    
         
            -
              }
         
     | 
| 
       657 
     | 
    
         
            -
             
     | 
| 
       658 
     | 
    
         
            -
              $(document).ready(function(){
         
     | 
| 
       659 
     | 
    
         
            -
                $(document.body).bind('touchstart', function(e){
         
     | 
| 
       660 
     | 
    
         
            -
                  var now = Date.now(), delta = now - (touch.last || now);
         
     | 
| 
       661 
     | 
    
         
            -
                  touch.target = parentIfText(e.touches[0].target);
         
     | 
| 
       662 
     | 
    
         
            -
                  touchTimeout && clearTimeout(touchTimeout);
         
     | 
| 
       663 
     | 
    
         
            -
                  touch.x1 = e.touches[0].pageX;
         
     | 
| 
       664 
     | 
    
         
            -
                  touch.y1 = e.touches[0].pageY;
         
     | 
| 
       665 
     | 
    
         
            -
                  if (delta > 0 && delta <= 250) touch.isDoubleTap = true;
         
     | 
| 
       666 
     | 
    
         
            -
                  touch.last = now;
         
     | 
| 
       667 
     | 
    
         
            -
                }).bind('touchmove', function(e){
         
     | 
| 
       668 
     | 
    
         
            -
                  touch.x2 = e.touches[0].pageX;
         
     | 
| 
       669 
     | 
    
         
            -
                  touch.y2 = e.touches[0].pageY;
         
     | 
| 
       670 
     | 
    
         
            -
                }).bind('touchend', function(e){
         
     | 
| 
       671 
     | 
    
         
            -
                  if (touch.isDoubleTap) {
         
     | 
| 
       672 
     | 
    
         
            -
                    $(touch.target).trigger('doubleTap');
         
     | 
| 
       673 
     | 
    
         
            -
                    touch = {};
         
     | 
| 
       674 
     | 
    
         
            -
                  } else if (touch.x2 > 0 || touch.y2 > 0) {
         
     | 
| 
       675 
     | 
    
         
            -
                    (Math.abs(touch.x1 - touch.x2) > 30 || Math.abs(touch.y1 - touch.y2) > 30)  &&
         
     | 
| 
       676 
     | 
    
         
            -
                      $(touch.target).trigger('swipe') &&
         
     | 
| 
       677 
     | 
    
         
            -
                      $(touch.target).trigger('swipe' + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2)));
         
     | 
| 
       678 
     | 
    
         
            -
                    touch.x1 = touch.x2 = touch.y1 = touch.y2 = touch.last = 0;
         
     | 
| 
       679 
     | 
    
         
            -
                  } else if ('last' in touch) {
         
     | 
| 
       680 
     | 
    
         
            -
                    touchTimeout = setTimeout(function(){
         
     | 
| 
       681 
     | 
    
         
            -
                      touchTimeout = null;
         
     | 
| 
       682 
     | 
    
         
            -
                      $(touch.target).trigger('tap')
         
     | 
| 
       683 
     | 
    
         
            -
                      touch = {};
         
     | 
| 
       684 
     | 
    
         
            -
                    }, 250);
         
     | 
| 
       685 
     | 
    
         
            -
                  }
         
     | 
| 
       686 
     | 
    
         
            -
                }).bind('touchcancel', function(){ touch = {} });
         
     | 
| 
       687 
     | 
    
         
            -
              });
         
     | 
| 
       688 
     | 
    
         
            -
             
     | 
| 
       689 
     | 
    
         
            -
              ['swipe', 'swipeLeft', 'swipeRight', 'swipeUp', 'swipeDown', 'doubleTap', 'tap'].forEach(function(m){
         
     | 
| 
       690 
     | 
    
         
            -
                $.fn[m] = function(callback){ return this.bind(m, callback) }
         
     | 
| 
       691 
     | 
    
         
            -
              });
         
     | 
| 
       692 
     | 
    
         
            -
            })(Zepto);
         
     |