From b35951ba87f4ce7721b04a38c09f51d8d3f6cbe5 Mon Sep 17 00:00:00 2001 From: Ziad Khoury Hanna Date: Thu, 4 Jul 2013 12:21:02 +0300 Subject: [PATCH 01/25] Add Dustjs-linkedin v1.2.3 --- ajax/libs/dustjs-linkedin/1.2.3/dust-core.js | 622 +++ .../dustjs-linkedin/1.2.3/dust-core.min.js | 1 + ajax/libs/dustjs-linkedin/1.2.3/dust-full.js | 3599 +++++++++++++++++ .../dustjs-linkedin/1.2.3/dust-full.min.js | 1 + ajax/libs/dustjs-linkedin/package.json | 2 +- 5 files changed, 4224 insertions(+), 1 deletion(-) create mode 100644 ajax/libs/dustjs-linkedin/1.2.3/dust-core.js create mode 100644 ajax/libs/dustjs-linkedin/1.2.3/dust-core.min.js create mode 100644 ajax/libs/dustjs-linkedin/1.2.3/dust-full.js create mode 100644 ajax/libs/dustjs-linkedin/1.2.3/dust-full.min.js diff --git a/ajax/libs/dustjs-linkedin/1.2.3/dust-core.js b/ajax/libs/dustjs-linkedin/1.2.3/dust-core.js new file mode 100644 index 000000000..afa0f604b --- /dev/null +++ b/ajax/libs/dustjs-linkedin/1.2.3/dust-core.js @@ -0,0 +1,622 @@ +// +// Dust - Asynchronous Templating v1.2.3 +// http://akdubya.github.com/dustjs +// +// Copyright (c) 2010, Aleksander Williams +// Released under the MIT License. +// + +var dust = {}; + +function getGlobal(){ + return (function(){ + return this.dust; + }).call(null); +} + +(function(dust) { + +dust.helpers = {}; + +dust.cache = {}; + +dust.register = function(name, tmpl) { + if (!name) return; + dust.cache[name] = tmpl; +}; + +dust.render = function(name, context, callback) { + var chunk = new Stub(callback).head; + dust.load(name, chunk, Context.wrap(context)).end(); +}; + +dust.stream = function(name, context) { + var stream = new Stream(); + dust.nextTick(function() { + dust.load(name, stream.head, Context.wrap(context)).end(); + }); + return stream; +}; + +dust.renderSource = function(source, context, callback) { + return dust.compileFn(source)(context, callback); +}; + +dust.compileFn = function(source, name) { + var tmpl = dust.loadSource(dust.compile(source, name)); + return function(context, callback) { + var master = callback ? new Stub(callback) : new Stream(); + dust.nextTick(function() { + tmpl(master.head, Context.wrap(context)).end(); + }); + return master; + }; +}; + +dust.load = function(name, chunk, context) { + var tmpl = dust.cache[name]; + if (tmpl) { + return tmpl(chunk, context); + } else { + if (dust.onLoad) { + return chunk.map(function(chunk) { + dust.onLoad(name, function(err, src) { + if (err) return chunk.setError(err); + if (!dust.cache[name]) dust.loadSource(dust.compile(src, name)); + dust.cache[name](chunk, context).end(); + }); + }); + } + return chunk.setError(new Error("Template Not Found: " + name)); + } +}; + +dust.loadSource = function(source, path) { + return eval(source); +}; + +if (Array.isArray) { + dust.isArray = Array.isArray; +} else { + dust.isArray = function(arr) { + return Object.prototype.toString.call(arr) == "[object Array]"; + }; +} + +dust.nextTick = (function() { + if (typeof process !== "undefined") { + return process.nextTick; + } else { + return function(callback) { + setTimeout(callback,0); + }; + } +} )(); + +dust.isEmpty = function(value) { + if (dust.isArray(value) && !value.length) return true; + if (value === 0) return false; + return (!value); +}; + +// apply the filter chain and return the output string +dust.filter = function(string, auto, filters) { + if (filters) { + for (var i=0, len=filters.length; i 0) { + // any custom helper can blow up the stack + // and store a flattened context, guard defensively + if(context.stack.head) { + context.stack.head['$len'] = len; + } + for (var i=0; i\"\']/), + AMP = /&/g, + LT = //g, + QUOT = /\"/g, + SQUOT = /\'/g; + +dust.escapeHtml = function(s) { + if (typeof s === "string") { + if (!HCHARS.test(s)) { + return s; + } + return s.replace(AMP,'&').replace(LT,'<').replace(GT,'>').replace(QUOT,'"').replace(SQUOT, '''); + } + return s; +}; + +var BS = /\\/g, + FS = /\//g, + CR = /\r/g, + LS = /\u2028/g, + PS = /\u2029/g, + NL = /\n/g, + LF = /\f/g, + SQ = /'/g, + DQ = /"/g, + TB = /\t/g; + +dust.escapeJs = function(s) { + if (typeof s === "string") { + return s + .replace(BS, '\\\\') + .replace(FS, '\\/') + .replace(DQ, '\\"') + .replace(SQ, "\\'") + .replace(CR, '\\r') + .replace(LS, '\\u2028') + .replace(PS, '\\u2029') + .replace(NL, '\\n') + .replace(LF, '\\f') + .replace(TB, "\\t"); + } + return s; +}; + +})(dust); + +if (typeof exports !== "undefined") { + if (typeof process !== "undefined") { + require('./server')(dust); + } + module.exports = dust; +} diff --git a/ajax/libs/dustjs-linkedin/1.2.3/dust-core.min.js b/ajax/libs/dustjs-linkedin/1.2.3/dust-core.min.js new file mode 100644 index 000000000..531634f7c --- /dev/null +++ b/ajax/libs/dustjs-linkedin/1.2.3/dust-core.min.js @@ -0,0 +1 @@ +function getGlobal(){return function(){return this.dust}.call(null)}var dust={};(function(dust){function Context(e,t,n){this.stack=e,this.global=t,this.blocks=n}function Stack(e,t,n,r){this.tail=t,this.isObject=!dust.isArray(e)&&e&&typeof e=="object",this.head=e,this.index=n,this.of=r}function Stub(e){this.head=new Chunk(this),this.callback=e,this.out=""}function Stream(){this.head=new Chunk(this)}function Chunk(e,t,n){this.root=e,this.next=t,this.data=[],this.flushable=!1,this.taps=n}function Tap(e,t){this.head=e,this.tail=t}dust.helpers={},dust.cache={},dust.register=function(e,t){if(!e)return;dust.cache[e]=t},dust.render=function(e,t,n){var r=(new Stub(n)).head;dust.load(e,r,Context.wrap(t)).end()},dust.stream=function(e,t){var n=new Stream;return dust.nextTick(function(){dust.load(e,n.head,Context.wrap(t)).end()}),n},dust.renderSource=function(e,t,n){return dust.compileFn(e)(t,n)},dust.compileFn=function(e,t){var n=dust.loadSource(dust.compile(e,t));return function(e,t){var r=t?new Stub(t):new Stream;return dust.nextTick(function(){n(r.head,Context.wrap(e)).end()}),r}},dust.load=function(e,t,n){var r=dust.cache[e];return r?r(t,n):dust.onLoad?t.map(function(t){dust.onLoad(e,function(r,i){if(r)return t.setError(r);dust.cache[e]||dust.loadSource(dust.compile(i,e)),dust.cache[e](t,n).end()})}):t.setError(new Error("Template Not Found: "+e))},dust.loadSource=function(source,path){return eval(source)},Array.isArray?dust.isArray=Array.isArray:dust.isArray=function(e){return Object.prototype.toString.call(e)=="[object Array]"},dust.nextTick=function(){return typeof process!="undefined"?process.nextTick:function(e){setTimeout(e,0)}}(),dust.isEmpty=function(e){return dust.isArray(e)&&!e.length?!0:e===0?!1:!e},dust.filter=function(e,t,n){if(n)for(var r=0,i=n.length;r0){t.stack.head&&(t.stack.head.$len=o);for(var a=0;a\"\']/),AMP=/&/g,LT=//g,QUOT=/\"/g,SQUOT=/\'/g;dust.escapeHtml=function(e){return typeof e=="string"?HCHARS.test(e)?e.replace(AMP,"&").replace(LT,"<").replace(GT,">").replace(QUOT,""").replace(SQUOT,"'"):e:e};var BS=/\\/g,CR=/\r/g,LS=/\u2028/g,PS=/\u2029/g,NL=/\n/g,LF=/\f/g,SQ=/'/g,DQ=/"/g,TB=/\t/g;dust.escapeJs=function(e){return typeof e=="string"?e.replace(BS,"\\\\").replace(DQ,'\\"').replace(SQ,"\\'").replace(CR,"\\r").replace(LS,"\\u2028").replace(PS,"\\u2029").replace(NL,"\\n").replace(LF,"\\f").replace(TB,"\\t"):e}})(dust),typeof exports!="undefined"&&(typeof process!="undefined"&&require("./server")(dust),module.exports=dust) \ No newline at end of file diff --git a/ajax/libs/dustjs-linkedin/1.2.3/dust-full.js b/ajax/libs/dustjs-linkedin/1.2.3/dust-full.js new file mode 100644 index 000000000..d11d61cce --- /dev/null +++ b/ajax/libs/dustjs-linkedin/1.2.3/dust-full.js @@ -0,0 +1,3599 @@ +// +// Dust - Asynchronous Templating v1.2.3 +// http://akdubya.github.com/dustjs +// +// Copyright (c) 2010, Aleksander Williams +// Released under the MIT License. +// + +var dust = {}; + +function getGlobal(){ + return (function(){ + return this.dust; + }).call(null); +} + +(function(dust) { + +dust.helpers = {}; + +dust.cache = {}; + +dust.register = function(name, tmpl) { + if (!name) return; + dust.cache[name] = tmpl; +}; + +dust.render = function(name, context, callback) { + var chunk = new Stub(callback).head; + dust.load(name, chunk, Context.wrap(context)).end(); +}; + +dust.stream = function(name, context) { + var stream = new Stream(); + dust.nextTick(function() { + dust.load(name, stream.head, Context.wrap(context)).end(); + }); + return stream; +}; + +dust.renderSource = function(source, context, callback) { + return dust.compileFn(source)(context, callback); +}; + +dust.compileFn = function(source, name) { + var tmpl = dust.loadSource(dust.compile(source, name)); + return function(context, callback) { + var master = callback ? new Stub(callback) : new Stream(); + dust.nextTick(function() { + tmpl(master.head, Context.wrap(context)).end(); + }); + return master; + }; +}; + +dust.load = function(name, chunk, context) { + var tmpl = dust.cache[name]; + if (tmpl) { + return tmpl(chunk, context); + } else { + if (dust.onLoad) { + return chunk.map(function(chunk) { + dust.onLoad(name, function(err, src) { + if (err) return chunk.setError(err); + if (!dust.cache[name]) dust.loadSource(dust.compile(src, name)); + dust.cache[name](chunk, context).end(); + }); + }); + } + return chunk.setError(new Error("Template Not Found: " + name)); + } +}; + +dust.loadSource = function(source, path) { + return eval(source); +}; + +if (Array.isArray) { + dust.isArray = Array.isArray; +} else { + dust.isArray = function(arr) { + return Object.prototype.toString.call(arr) == "[object Array]"; + }; +} + +dust.nextTick = (function() { + if (typeof process !== "undefined") { + return process.nextTick; + } else { + return function(callback) { + setTimeout(callback,0); + }; + } +} )(); + +dust.isEmpty = function(value) { + if (dust.isArray(value) && !value.length) return true; + if (value === 0) return false; + return (!value); +}; + +// apply the filter chain and return the output string +dust.filter = function(string, auto, filters) { + if (filters) { + for (var i=0, len=filters.length; i 0) { + // any custom helper can blow up the stack + // and store a flattened context, guard defensively + if(context.stack.head) { + context.stack.head['$len'] = len; + } + for (var i=0; i\"\']/), + AMP = /&/g, + LT = //g, + QUOT = /\"/g, + SQUOT = /\'/g; + +dust.escapeHtml = function(s) { + if (typeof s === "string") { + if (!HCHARS.test(s)) { + return s; + } + return s.replace(AMP,'&').replace(LT,'<').replace(GT,'>').replace(QUOT,'"').replace(SQUOT, '''); + } + return s; +}; + +var BS = /\\/g, + FS = /\//g, + CR = /\r/g, + LS = /\u2028/g, + PS = /\u2029/g, + NL = /\n/g, + LF = /\f/g, + SQ = /'/g, + DQ = /"/g, + TB = /\t/g; + +dust.escapeJs = function(s) { + if (typeof s === "string") { + return s + .replace(BS, '\\\\') + .replace(FS, '\\/') + .replace(DQ, '\\"') + .replace(SQ, "\\'") + .replace(CR, '\\r') + .replace(LS, '\\u2028') + .replace(PS, '\\u2029') + .replace(NL, '\\n') + .replace(LF, '\\f') + .replace(TB, "\\t"); + } + return s; +}; + +})(dust); + +if (typeof exports !== "undefined") { + if (typeof process !== "undefined") { + require('./server')(dust); + } + module.exports = dust; +} +var dustCompiler = (function(dust) { + +dust.compile = function(source, name, strip) { + try { + if (strip) { + source = source.replace(/^\s+/mg, '').replace(/\n/mg, ''); + } + var ast = filterAST(dust.parse(source)); + return compile(ast, name); + } + catch(err) + { + if(!err.line || !err.column) throw err; + throw new SyntaxError(err.message + " At line : " + err.line + ", column : " + err.column); + } +}; + +function filterAST(ast) { + var context = {}; + return dust.filterNode(context, ast); +}; + +dust.filterNode = function(context, node) { + return dust.optimizers[node[0]](context, node); +}; + +dust.optimizers = { + body: compactBuffers, + buffer: noop, + special: convertSpecial, + format: nullify, // TODO: convert format + reference: visit, + "#": visit, + "?": visit, + "^": visit, + "<": visit, + "+": visit, + "@": visit, + "%": visit, + partial: visit, + context: visit, + params: visit, + bodies: visit, + param: visit, + filters: noop, + key: noop, + path: noop, + literal: noop, + comment: nullify +}; + +dust.pragmas = { + esc: function(compiler, context, bodies, params) { + var old = compiler.auto; + if (!context) context = 'h'; + compiler.auto = (context === 's') ? '' : context; + var out = compileParts(compiler, bodies.block); + compiler.auto = old; + return out; + } +}; + +function visit(context, node) { + var out = [node[0]]; + for (var i=1, len=node.length; i rightmostFailuresPos.offset) { + rightmostFailuresPos = clone(pos); + rightmostFailuresExpected = []; + } + + rightmostFailuresExpected.push(failure); + } + + function parse_body() { + var result0, result1; + var pos0; + + pos0 = clone(pos); + result0 = []; + result1 = parse_part(); + while (result1 !== null) { + result0.push(result1); + result1 = parse_part(); + } + if (result0 !== null) { + result0 = (function(offset, line, column, p) { return ["body"].concat(p) })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + return result0; + } + + function parse_part() { + var result0; + + result0 = parse_comment(); + if (result0 === null) { + result0 = parse_section(); + if (result0 === null) { + result0 = parse_partial(); + if (result0 === null) { + result0 = parse_special(); + if (result0 === null) { + result0 = parse_reference(); + if (result0 === null) { + result0 = parse_buffer(); + } + } + } + } + } + return result0; + } + + function parse_section() { + var result0, result1, result2, result3, result4, result5, result6; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_sec_tag_start(); + if (result0 !== null) { + result1 = []; + result2 = parse_ws(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + if (result1 !== null) { + result2 = parse_rd(); + if (result2 !== null) { + result3 = parse_body(); + if (result3 !== null) { + result4 = parse_bodies(); + if (result4 !== null) { + result5 = parse_end_tag(); + result5 = result5 !== null ? result5 : ""; + if (result5 !== null) { + result6 = (function(offset, line, column, t, b, e, n) {if( (!n) || (t[1].text !== n.text) ) { throw new Error("Expected end tag for "+t[1].text+" but it was not found. At line : "+line+", column : " + column)} return true;})(pos.offset, pos.line, pos.column, result0, result3, result4, result5) ? "" : null; + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, t, b, e, n) { e.push(["param", ["literal", "block"], b]); t.push(e); return t })(pos0.offset, pos0.line, pos0.column, result0[0], result0[3], result0[4], result0[5]); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_sec_tag_start(); + if (result0 !== null) { + result1 = []; + result2 = parse_ws(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + if (result1 !== null) { + if (input.charCodeAt(pos.offset) === 47) { + result2 = "/"; + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"/\""); + } + } + if (result2 !== null) { + result3 = parse_rd(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, t) { t.push(["bodies"]); return t })(pos0.offset, pos0.line, pos0.column, result0[0]); + } + if (result0 === null) { + pos = clone(pos0); + } + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("section"); + } + return result0; + } + + function parse_sec_tag_start() { + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + if (/^[#?^<+@%]/.test(input.charAt(pos.offset))) { + result1 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[#?^<+@%]"); + } + } + if (result1 !== null) { + result2 = []; + result3 = parse_ws(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_ws(); + } + if (result2 !== null) { + result3 = parse_identifier(); + if (result3 !== null) { + result4 = parse_context(); + if (result4 !== null) { + result5 = parse_params(); + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, t, n, c, p) { return [t, n, c, p] })(pos0.offset, pos0.line, pos0.column, result0[1], result0[3], result0[4], result0[5]); + } + if (result0 === null) { + pos = clone(pos0); + } + return result0; + } + + function parse_end_tag() { + var result0, result1, result2, result3, result4, result5; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + if (input.charCodeAt(pos.offset) === 47) { + result1 = "/"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"/\""); + } + } + if (result1 !== null) { + result2 = []; + result3 = parse_ws(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_ws(); + } + if (result2 !== null) { + result3 = parse_identifier(); + if (result3 !== null) { + result4 = []; + result5 = parse_ws(); + while (result5 !== null) { + result4.push(result5); + result5 = parse_ws(); + } + if (result4 !== null) { + result5 = parse_rd(); + if (result5 !== null) { + result0 = [result0, result1, result2, result3, result4, result5]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, n) { return n })(pos0.offset, pos0.line, pos0.column, result0[3]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("end tag"); + } + return result0; + } + + function parse_context() { + var result0, result1; + var pos0, pos1, pos2; + + pos0 = clone(pos); + pos1 = clone(pos); + pos2 = clone(pos); + if (input.charCodeAt(pos.offset) === 58) { + result0 = ":"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\":\""); + } + } + if (result0 !== null) { + result1 = parse_identifier(); + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos2); + } + } else { + result0 = null; + pos = clone(pos2); + } + if (result0 !== null) { + result0 = (function(offset, line, column, n) {return n})(pos1.offset, pos1.line, pos1.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos1); + } + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result0 = (function(offset, line, column, n) { return n ? ["context", n] : ["context"] })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + return result0; + } + + function parse_params() { + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2; + + reportFailures++; + pos0 = clone(pos); + result0 = []; + pos1 = clone(pos); + pos2 = clone(pos); + result2 = parse_ws(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + if (input.charCodeAt(pos.offset) === 61) { + result3 = "="; + advance(pos, 1); + } else { + result3 = null; + if (reportFailures === 0) { + matchFailed("\"=\""); + } + } + if (result3 !== null) { + result4 = parse_number(); + if (result4 === null) { + result4 = parse_identifier(); + if (result4 === null) { + result4 = parse_inline(); + } + } + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k, v) {return ["param", ["literal", k], v]})(pos1.offset, pos1.line, pos1.column, result1[1], result1[3]); + } + if (result1 === null) { + pos = clone(pos1); + } + while (result1 !== null) { + result0.push(result1); + pos1 = clone(pos); + pos2 = clone(pos); + result2 = parse_ws(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + } else { + result1 = null; + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + if (input.charCodeAt(pos.offset) === 61) { + result3 = "="; + advance(pos, 1); + } else { + result3 = null; + if (reportFailures === 0) { + matchFailed("\"=\""); + } + } + if (result3 !== null) { + result4 = parse_number(); + if (result4 === null) { + result4 = parse_identifier(); + if (result4 === null) { + result4 = parse_inline(); + } + } + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k, v) {return ["param", ["literal", k], v]})(pos1.offset, pos1.line, pos1.column, result1[1], result1[3]); + } + if (result1 === null) { + pos = clone(pos1); + } + } + if (result0 !== null) { + result0 = (function(offset, line, column, p) { return ["params"].concat(p) })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("params"); + } + return result0; + } + + function parse_bodies() { + var result0, result1, result2, result3, result4, result5; + var pos0, pos1, pos2; + + reportFailures++; + pos0 = clone(pos); + result0 = []; + pos1 = clone(pos); + pos2 = clone(pos); + result1 = parse_ld(); + if (result1 !== null) { + if (input.charCodeAt(pos.offset) === 58) { + result2 = ":"; + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\":\""); + } + } + if (result2 !== null) { + result3 = parse_key(); + if (result3 !== null) { + result4 = parse_rd(); + if (result4 !== null) { + result5 = parse_body(); + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k, v) {return ["param", ["literal", k], v]})(pos1.offset, pos1.line, pos1.column, result1[2], result1[4]); + } + if (result1 === null) { + pos = clone(pos1); + } + while (result1 !== null) { + result0.push(result1); + pos1 = clone(pos); + pos2 = clone(pos); + result1 = parse_ld(); + if (result1 !== null) { + if (input.charCodeAt(pos.offset) === 58) { + result2 = ":"; + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\":\""); + } + } + if (result2 !== null) { + result3 = parse_key(); + if (result3 !== null) { + result4 = parse_rd(); + if (result4 !== null) { + result5 = parse_body(); + if (result5 !== null) { + result1 = [result1, result2, result3, result4, result5]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k, v) {return ["param", ["literal", k], v]})(pos1.offset, pos1.line, pos1.column, result1[2], result1[4]); + } + if (result1 === null) { + pos = clone(pos1); + } + } + if (result0 !== null) { + result0 = (function(offset, line, column, p) { return ["bodies"].concat(p) })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("bodies"); + } + return result0; + } + + function parse_reference() { + var result0, result1, result2, result3; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + result1 = parse_identifier(); + if (result1 !== null) { + result2 = parse_filters(); + if (result2 !== null) { + result3 = parse_rd(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, n, f) { return ["reference", n, f] })(pos0.offset, pos0.line, pos0.column, result0[1], result0[2]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("reference"); + } + return result0; + } + + function parse_partial() { + var result0, result1, result2, result3, result4, result5, result6, result7, result8; + var pos0, pos1, pos2; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + if (input.charCodeAt(pos.offset) === 62) { + result1 = ">"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\">\""); + } + } + if (result1 === null) { + if (input.charCodeAt(pos.offset) === 43) { + result1 = "+"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"+\""); + } + } + } + if (result1 !== null) { + result2 = []; + result3 = parse_ws(); + while (result3 !== null) { + result2.push(result3); + result3 = parse_ws(); + } + if (result2 !== null) { + pos2 = clone(pos); + result3 = parse_key(); + if (result3 !== null) { + result3 = (function(offset, line, column, k) {return ["literal", k]})(pos2.offset, pos2.line, pos2.column, result3); + } + if (result3 === null) { + pos = clone(pos2); + } + if (result3 === null) { + result3 = parse_inline(); + } + if (result3 !== null) { + result4 = parse_context(); + if (result4 !== null) { + result5 = parse_params(); + if (result5 !== null) { + result6 = []; + result7 = parse_ws(); + while (result7 !== null) { + result6.push(result7); + result7 = parse_ws(); + } + if (result6 !== null) { + if (input.charCodeAt(pos.offset) === 47) { + result7 = "/"; + advance(pos, 1); + } else { + result7 = null; + if (reportFailures === 0) { + matchFailed("\"/\""); + } + } + if (result7 !== null) { + result8 = parse_rd(); + if (result8 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, s, n, c, p) { var key = (s ===">")? "partial" : s; return [key, n, c, p] })(pos0.offset, pos0.line, pos0.column, result0[1], result0[3], result0[4], result0[5]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("partial"); + } + return result0; + } + + function parse_filters() { + var result0, result1, result2; + var pos0, pos1, pos2; + + reportFailures++; + pos0 = clone(pos); + result0 = []; + pos1 = clone(pos); + pos2 = clone(pos); + if (input.charCodeAt(pos.offset) === 124) { + result1 = "|"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"|\""); + } + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, n) {return n})(pos1.offset, pos1.line, pos1.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos1); + } + while (result1 !== null) { + result0.push(result1); + pos1 = clone(pos); + pos2 = clone(pos); + if (input.charCodeAt(pos.offset) === 124) { + result1 = "|"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"|\""); + } + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, n) {return n})(pos1.offset, pos1.line, pos1.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos1); + } + } + if (result0 !== null) { + result0 = (function(offset, line, column, f) { return ["filters"].concat(f) })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("filters"); + } + return result0; + } + + function parse_special() { + var result0, result1, result2, result3; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + if (input.charCodeAt(pos.offset) === 126) { + result1 = "~"; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"~\""); + } + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + result3 = parse_rd(); + if (result3 !== null) { + result0 = [result0, result1, result2, result3]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, k) { return ["special", k] })(pos0.offset, pos0.line, pos0.column, result0[2]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("special"); + } + return result0; + } + + function parse_identifier() { + var result0; + var pos0; + + reportFailures++; + pos0 = clone(pos); + result0 = parse_path(); + if (result0 !== null) { + result0 = (function(offset, line, column, p) { var arr = ["path"].concat(p); arr.text = p[1].join('.'); return arr; })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + result0 = parse_key(); + if (result0 !== null) { + result0 = (function(offset, line, column, k) { var arr = ["key", k]; arr.text = k; return arr; })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("identifier"); + } + return result0; + } + + function parse_number() { + var result0; + var pos0; + + reportFailures++; + pos0 = clone(pos); + result0 = parse_frac(); + if (result0 === null) { + result0 = parse_integer(); + } + if (result0 !== null) { + result0 = (function(offset, line, column, n) { return ['literal', n]; })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("number"); + } + return result0; + } + + function parse_frac() { + var result0, result1, result2, result3; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_integer(); + if (result0 !== null) { + if (input.charCodeAt(pos.offset) === 46) { + result1 = "."; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\".\""); + } + } + if (result1 !== null) { + result3 = parse_integer(); + if (result3 !== null) { + result2 = []; + while (result3 !== null) { + result2.push(result3); + result3 = parse_integer(); + } + } else { + result2 = null; + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, l, r) { return parseFloat(l + "." + r.join('')); })(pos0.offset, pos0.line, pos0.column, result0[0], result0[2]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("frac"); + } + return result0; + } + + function parse_integer() { + var result0, result1; + var pos0; + + reportFailures++; + pos0 = clone(pos); + if (/^[0-9]/.test(input.charAt(pos.offset))) { + result1 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[0-9]"); + } + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + if (/^[0-9]/.test(input.charAt(pos.offset))) { + result1 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("[0-9]"); + } + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, line, column, digits) { return parseInt(digits.join(""), 10); })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("integer"); + } + return result0; + } + + function parse_path() { + var result0, result1, result2; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_key(); + result0 = result0 !== null ? result0 : ""; + if (result0 !== null) { + result2 = parse_array_part(); + if (result2 === null) { + result2 = parse_array(); + } + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_array_part(); + if (result2 === null) { + result2 = parse_array(); + } + } + } else { + result1 = null; + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, k, d) { + d = d[0]; + if (k && d) { + d.unshift(k); + return [false, d]; + } + return [true, d]; + })(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + pos1 = clone(pos); + if (input.charCodeAt(pos.offset) === 46) { + result0 = "."; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\".\""); + } + } + if (result0 !== null) { + result1 = []; + result2 = parse_array_part(); + if (result2 === null) { + result2 = parse_array(); + } + while (result2 !== null) { + result1.push(result2); + result2 = parse_array_part(); + if (result2 === null) { + result2 = parse_array(); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, d) { + if (d.length > 0) { + return [true, d[0]]; + } + return [true, []] + })(pos0.offset, pos0.line, pos0.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("path"); + } + return result0; + } + + function parse_key() { + var result0, result1, result2; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + if (/^[a-zA-Z_$]/.test(input.charAt(pos.offset))) { + result0 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("[a-zA-Z_$]"); + } + } + if (result0 !== null) { + result1 = []; + if (/^[0-9a-zA-Z_$\-]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[0-9a-zA-Z_$\\-]"); + } + } + while (result2 !== null) { + result1.push(result2); + if (/^[0-9a-zA-Z_$\-]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[0-9a-zA-Z_$\\-]"); + } + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, h, t) { return h + t.join('') })(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("key"); + } + return result0; + } + + function parse_array() { + var result0, result1, result2; + var pos0, pos1, pos2, pos3, pos4; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + result0 = parse_lb(); + if (result0 !== null) { + pos4 = clone(pos); + if (/^[0-9]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[0-9]"); + } + } + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + if (/^[0-9]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[0-9]"); + } + } + } + } else { + result1 = null; + } + if (result1 !== null) { + result1 = (function(offset, line, column, n) {return n.join('')})(pos4.offset, pos4.line, pos4.column, result1); + } + if (result1 === null) { + pos = clone(pos4); + } + if (result1 === null) { + result1 = parse_identifier(); + } + if (result1 !== null) { + result2 = parse_rb(); + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = clone(pos3); + } + } else { + result0 = null; + pos = clone(pos3); + } + } else { + result0 = null; + pos = clone(pos3); + } + if (result0 !== null) { + result0 = (function(offset, line, column, a) {return a; })(pos2.offset, pos2.line, pos2.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos2); + } + if (result0 !== null) { + result1 = parse_array_part(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, i, nk) { if(nk) { nk.unshift(i); } else {nk = [i] } return nk; })(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("array"); + } + return result0; + } + + function parse_array_part() { + var result0, result1, result2; + var pos0, pos1, pos2, pos3; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + if (input.charCodeAt(pos.offset) === 46) { + result1 = "."; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\".\""); + } + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos3); + } + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k) {return k})(pos2.offset, pos2.line, pos2.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos2); + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos2 = clone(pos); + pos3 = clone(pos); + if (input.charCodeAt(pos.offset) === 46) { + result1 = "."; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\".\""); + } + } + if (result1 !== null) { + result2 = parse_key(); + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos3); + } + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + result1 = (function(offset, line, column, k) {return k})(pos2.offset, pos2.line, pos2.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos2); + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result1 = parse_array(); + result1 = result1 !== null ? result1 : ""; + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, d, a) { if (a) { return d.concat(a); } else { return d; } })(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("array_part"); + } + return result0; + } + + function parse_inline() { + var result0, result1, result2; + var pos0, pos1; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + if (input.charCodeAt(pos.offset) === 34) { + result0 = "\""; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result0 !== null) { + if (input.charCodeAt(pos.offset) === 34) { + result1 = "\""; + advance(pos, 1); + } else { + result1 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column) { return ["literal", ""] })(pos0.offset, pos0.line, pos0.column); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + pos1 = clone(pos); + if (input.charCodeAt(pos.offset) === 34) { + result0 = "\""; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result0 !== null) { + result1 = parse_literal(); + if (result1 !== null) { + if (input.charCodeAt(pos.offset) === 34) { + result2 = "\""; + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, l) { return ["literal", l] })(pos0.offset, pos0.line, pos0.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + pos1 = clone(pos); + if (input.charCodeAt(pos.offset) === 34) { + result0 = "\""; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result0 !== null) { + result2 = parse_inline_part(); + if (result2 !== null) { + result1 = []; + while (result2 !== null) { + result1.push(result2); + result2 = parse_inline_part(); + } + } else { + result1 = null; + } + if (result1 !== null) { + if (input.charCodeAt(pos.offset) === 34) { + result2 = "\""; + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"\\\"\""); + } + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, p) { return ["body"].concat(p) })(pos0.offset, pos0.line, pos0.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + } + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("inline"); + } + return result0; + } + + function parse_inline_part() { + var result0; + var pos0; + + result0 = parse_special(); + if (result0 === null) { + result0 = parse_reference(); + if (result0 === null) { + pos0 = clone(pos); + result0 = parse_literal(); + if (result0 !== null) { + result0 = (function(offset, line, column, l) { return ["buffer", l] })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + } + } + return result0; + } + + function parse_buffer() { + var result0, result1, result2, result3, result4; + var pos0, pos1, pos2, pos3; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + result0 = parse_eol(); + if (result0 !== null) { + result1 = []; + result2 = parse_ws(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + if (result1 !== null) { + result0 = [result0, result1]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, e, w) { return ["format", e, w.join('')] })(pos0.offset, pos0.line, pos0.column, result0[0], result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + if (result0 === null) { + pos0 = clone(pos); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + reportFailures++; + result1 = parse_tag(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + pos3 = clone(pos); + reportFailures++; + result2 = parse_comment(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = clone(pos3); + } + if (result2 !== null) { + pos3 = clone(pos); + reportFailures++; + result3 = parse_eol(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = clone(pos3); + } + if (result3 !== null) { + if (input.length > pos.offset) { + result4 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result4 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, c) {return c})(pos1.offset, pos1.line, pos1.column, result1[3]); + } + if (result1 === null) { + pos = clone(pos1); + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + reportFailures++; + result1 = parse_tag(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + pos3 = clone(pos); + reportFailures++; + result2 = parse_comment(); + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = clone(pos3); + } + if (result2 !== null) { + pos3 = clone(pos); + reportFailures++; + result3 = parse_eol(); + reportFailures--; + if (result3 === null) { + result3 = ""; + } else { + result3 = null; + pos = clone(pos3); + } + if (result3 !== null) { + if (input.length > pos.offset) { + result4 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result4 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result4 !== null) { + result1 = [result1, result2, result3, result4]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, c) {return c})(pos1.offset, pos1.line, pos1.column, result1[3]); + } + if (result1 === null) { + pos = clone(pos1); + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, line, column, b) { return ["buffer", b.join('')] })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("buffer"); + } + return result0; + } + + function parse_literal() { + var result0, result1, result2; + var pos0, pos1, pos2, pos3; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + reportFailures++; + result1 = parse_tag(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + result2 = parse_esc(); + if (result2 === null) { + if (/^[^"]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[^\"]"); + } + } + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, c) {return c})(pos1.offset, pos1.line, pos1.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos1); + } + if (result1 !== null) { + result0 = []; + while (result1 !== null) { + result0.push(result1); + pos1 = clone(pos); + pos2 = clone(pos); + pos3 = clone(pos); + reportFailures++; + result1 = parse_tag(); + reportFailures--; + if (result1 === null) { + result1 = ""; + } else { + result1 = null; + pos = clone(pos3); + } + if (result1 !== null) { + result2 = parse_esc(); + if (result2 === null) { + if (/^[^"]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[^\"]"); + } + } + } + if (result2 !== null) { + result1 = [result1, result2]; + } else { + result1 = null; + pos = clone(pos2); + } + } else { + result1 = null; + pos = clone(pos2); + } + if (result1 !== null) { + result1 = (function(offset, line, column, c) {return c})(pos1.offset, pos1.line, pos1.column, result1[1]); + } + if (result1 === null) { + pos = clone(pos1); + } + } + } else { + result0 = null; + } + if (result0 !== null) { + result0 = (function(offset, line, column, b) { return b.join('') })(pos0.offset, pos0.line, pos0.column, result0); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("literal"); + } + return result0; + } + + function parse_esc() { + var result0; + var pos0; + + pos0 = clone(pos); + if (input.substr(pos.offset, 2) === "\\\"") { + result0 = "\\\""; + advance(pos, 2); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\\\\\\"\""); + } + } + if (result0 !== null) { + result0 = (function(offset, line, column) { return '"' })(pos0.offset, pos0.line, pos0.column); + } + if (result0 === null) { + pos = clone(pos0); + } + return result0; + } + + function parse_comment() { + var result0, result1, result2, result3; + var pos0, pos1, pos2, pos3, pos4; + + reportFailures++; + pos0 = clone(pos); + pos1 = clone(pos); + if (input.substr(pos.offset, 2) === "{!") { + result0 = "{!"; + advance(pos, 2); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"{!\""); + } + } + if (result0 !== null) { + result1 = []; + pos2 = clone(pos); + pos3 = clone(pos); + pos4 = clone(pos); + reportFailures++; + if (input.substr(pos.offset, 2) === "!}") { + result2 = "!}"; + advance(pos, 2); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"!}\""); + } + } + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = clone(pos4); + } + if (result2 !== null) { + if (input.length > pos.offset) { + result3 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result3 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = clone(pos3); + } + } else { + result2 = null; + pos = clone(pos3); + } + if (result2 !== null) { + result2 = (function(offset, line, column, c) {return c})(pos2.offset, pos2.line, pos2.column, result2[1]); + } + if (result2 === null) { + pos = clone(pos2); + } + while (result2 !== null) { + result1.push(result2); + pos2 = clone(pos); + pos3 = clone(pos); + pos4 = clone(pos); + reportFailures++; + if (input.substr(pos.offset, 2) === "!}") { + result2 = "!}"; + advance(pos, 2); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"!}\""); + } + } + reportFailures--; + if (result2 === null) { + result2 = ""; + } else { + result2 = null; + pos = clone(pos4); + } + if (result2 !== null) { + if (input.length > pos.offset) { + result3 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result3 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result3 !== null) { + result2 = [result2, result3]; + } else { + result2 = null; + pos = clone(pos3); + } + } else { + result2 = null; + pos = clone(pos3); + } + if (result2 !== null) { + result2 = (function(offset, line, column, c) {return c})(pos2.offset, pos2.line, pos2.column, result2[1]); + } + if (result2 === null) { + pos = clone(pos2); + } + } + if (result1 !== null) { + if (input.substr(pos.offset, 2) === "!}") { + result2 = "!}"; + advance(pos, 2); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("\"!}\""); + } + } + if (result2 !== null) { + result0 = [result0, result1, result2]; + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + } else { + result0 = null; + pos = clone(pos1); + } + if (result0 !== null) { + result0 = (function(offset, line, column, c) { return ["comment", c.join('')] })(pos0.offset, pos0.line, pos0.column, result0[1]); + } + if (result0 === null) { + pos = clone(pos0); + } + reportFailures--; + if (reportFailures === 0 && result0 === null) { + matchFailed("comment"); + } + return result0; + } + + function parse_tag() { + var result0, result1, result2, result3, result4, result5, result6, result7; + var pos0, pos1, pos2; + + pos0 = clone(pos); + result0 = parse_ld(); + if (result0 !== null) { + result1 = []; + result2 = parse_ws(); + while (result2 !== null) { + result1.push(result2); + result2 = parse_ws(); + } + if (result1 !== null) { + if (/^[#?^><+%:@\/~%]/.test(input.charAt(pos.offset))) { + result2 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result2 = null; + if (reportFailures === 0) { + matchFailed("[#?^><+%:@\\/~%]"); + } + } + if (result2 !== null) { + result3 = []; + result4 = parse_ws(); + while (result4 !== null) { + result3.push(result4); + result4 = parse_ws(); + } + if (result3 !== null) { + pos1 = clone(pos); + pos2 = clone(pos); + reportFailures++; + result5 = parse_rd(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = clone(pos2); + } + if (result5 !== null) { + pos2 = clone(pos); + reportFailures++; + result6 = parse_eol(); + reportFailures--; + if (result6 === null) { + result6 = ""; + } else { + result6 = null; + pos = clone(pos2); + } + if (result6 !== null) { + if (input.length > pos.offset) { + result7 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result7 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result7 !== null) { + result5 = [result5, result6, result7]; + } else { + result5 = null; + pos = clone(pos1); + } + } else { + result5 = null; + pos = clone(pos1); + } + } else { + result5 = null; + pos = clone(pos1); + } + if (result5 !== null) { + result4 = []; + while (result5 !== null) { + result4.push(result5); + pos1 = clone(pos); + pos2 = clone(pos); + reportFailures++; + result5 = parse_rd(); + reportFailures--; + if (result5 === null) { + result5 = ""; + } else { + result5 = null; + pos = clone(pos2); + } + if (result5 !== null) { + pos2 = clone(pos); + reportFailures++; + result6 = parse_eol(); + reportFailures--; + if (result6 === null) { + result6 = ""; + } else { + result6 = null; + pos = clone(pos2); + } + if (result6 !== null) { + if (input.length > pos.offset) { + result7 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result7 = null; + if (reportFailures === 0) { + matchFailed("any character"); + } + } + if (result7 !== null) { + result5 = [result5, result6, result7]; + } else { + result5 = null; + pos = clone(pos1); + } + } else { + result5 = null; + pos = clone(pos1); + } + } else { + result5 = null; + pos = clone(pos1); + } + } + } else { + result4 = null; + } + if (result4 !== null) { + result5 = []; + result6 = parse_ws(); + while (result6 !== null) { + result5.push(result6); + result6 = parse_ws(); + } + if (result5 !== null) { + result6 = parse_rd(); + if (result6 !== null) { + result0 = [result0, result1, result2, result3, result4, result5, result6]; + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + } else { + result0 = null; + pos = clone(pos0); + } + if (result0 === null) { + result0 = parse_reference(); + } + return result0; + } + + function parse_ld() { + var result0; + + if (input.charCodeAt(pos.offset) === 123) { + result0 = "{"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"{\""); + } + } + return result0; + } + + function parse_rd() { + var result0; + + if (input.charCodeAt(pos.offset) === 125) { + result0 = "}"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"}\""); + } + } + return result0; + } + + function parse_lb() { + var result0; + + if (input.charCodeAt(pos.offset) === 91) { + result0 = "["; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"[\""); + } + } + return result0; + } + + function parse_rb() { + var result0; + + if (input.charCodeAt(pos.offset) === 93) { + result0 = "]"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"]\""); + } + } + return result0; + } + + function parse_eol() { + var result0; + + if (input.charCodeAt(pos.offset) === 10) { + result0 = "\n"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\n\""); + } + } + if (result0 === null) { + if (input.substr(pos.offset, 2) === "\r\n") { + result0 = "\r\n"; + advance(pos, 2); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\r\\n\""); + } + } + if (result0 === null) { + if (input.charCodeAt(pos.offset) === 13) { + result0 = "\r"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\r\""); + } + } + if (result0 === null) { + if (input.charCodeAt(pos.offset) === 8232) { + result0 = "\u2028"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\u2028\""); + } + } + if (result0 === null) { + if (input.charCodeAt(pos.offset) === 8233) { + result0 = "\u2029"; + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("\"\\u2029\""); + } + } + } + } + } + } + return result0; + } + + function parse_ws() { + var result0; + + if (/^[\t\x0B\f \xA0\uFEFF]/.test(input.charAt(pos.offset))) { + result0 = input.charAt(pos.offset); + advance(pos, 1); + } else { + result0 = null; + if (reportFailures === 0) { + matchFailed("[\\t\\x0B\\f \\xA0\\uFEFF]"); + } + } + if (result0 === null) { + result0 = parse_eol(); + } + return result0; + } + + + function cleanupExpected(expected) { + expected.sort(); + + var lastExpected = null; + var cleanExpected = []; + for (var i = 0; i < expected.length; i++) { + if (expected[i] !== lastExpected) { + cleanExpected.push(expected[i]); + lastExpected = expected[i]; + } + } + return cleanExpected; + } + + + + var result = parseFunctions[startRule](); + + /* + * The parser is now in one of the following three states: + * + * 1. The parser successfully parsed the whole input. + * + * - |result !== null| + * - |pos.offset === input.length| + * - |rightmostFailuresExpected| may or may not contain something + * + * 2. The parser successfully parsed only a part of the input. + * + * - |result !== null| + * - |pos.offset < input.length| + * - |rightmostFailuresExpected| may or may not contain something + * + * 3. The parser did not successfully parse any part of the input. + * + * - |result === null| + * - |pos.offset === 0| + * - |rightmostFailuresExpected| contains at least one failure + * + * All code following this comment (including called functions) must + * handle these states. + */ + if (result === null || pos.offset !== input.length) { + var offset = Math.max(pos.offset, rightmostFailuresPos.offset); + var found = offset < input.length ? input.charAt(offset) : null; + var errorPosition = pos.offset > rightmostFailuresPos.offset ? pos : rightmostFailuresPos; + + throw new parser.SyntaxError( + cleanupExpected(rightmostFailuresExpected), + found, + offset, + errorPosition.line, + errorPosition.column + ); + } + + return result; + }, + + /* Returns the parser source code. */ + toSource: function() { return this._source; } + }; + + /* Thrown when a parser encounters a syntax error. */ + + result.SyntaxError = function(expected, found, offset, line, column) { + function buildMessage(expected, found) { + var expectedHumanized, foundHumanized; + + switch (expected.length) { + case 0: + expectedHumanized = "end of input"; + break; + case 1: + expectedHumanized = expected[0]; + break; + default: + expectedHumanized = expected.slice(0, expected.length - 1).join(", ") + + " or " + + expected[expected.length - 1]; + } + + foundHumanized = found ? quote(found) : "end of input"; + + return "Expected " + expectedHumanized + " but " + foundHumanized + " found."; + } + + this.name = "SyntaxError"; + this.expected = expected; + this.found = found; + this.message = buildMessage(expected, found); + this.offset = offset; + this.line = line; + this.column = column; + }; + + result.SyntaxError.prototype = Error.prototype; + + return result; +})(); + +dust.parse = parser.parse; + +})(typeof exports !== 'undefined' ? exports : getGlobal()); \ No newline at end of file diff --git a/ajax/libs/dustjs-linkedin/1.2.3/dust-full.min.js b/ajax/libs/dustjs-linkedin/1.2.3/dust-full.min.js new file mode 100644 index 000000000..cf9a7093d --- /dev/null +++ b/ajax/libs/dustjs-linkedin/1.2.3/dust-full.min.js @@ -0,0 +1 @@ +function getGlobal(){return function(){return this.dust}.call(null)}var dust={};(function(dust){function Context(e,t,n){this.stack=e,this.global=t,this.blocks=n}function Stack(e,t,n,r){this.tail=t,this.isObject=!dust.isArray(e)&&e&&typeof e=="object",this.head=e,this.index=n,this.of=r}function Stub(e){this.head=new Chunk(this),this.callback=e,this.out=""}function Stream(){this.head=new Chunk(this)}function Chunk(e,t,n){this.root=e,this.next=t,this.data=[],this.flushable=!1,this.taps=n}function Tap(e,t){this.head=e,this.tail=t}dust.helpers={},dust.cache={},dust.register=function(e,t){if(!e)return;dust.cache[e]=t},dust.render=function(e,t,n){var r=(new Stub(n)).head;dust.load(e,r,Context.wrap(t)).end()},dust.stream=function(e,t){var n=new Stream;return dust.nextTick(function(){dust.load(e,n.head,Context.wrap(t)).end()}),n},dust.renderSource=function(e,t,n){return dust.compileFn(e)(t,n)},dust.compileFn=function(e,t){var n=dust.loadSource(dust.compile(e,t));return function(e,t){var r=t?new Stub(t):new Stream;return dust.nextTick(function(){n(r.head,Context.wrap(e)).end()}),r}},dust.load=function(e,t,n){var r=dust.cache[e];return r?r(t,n):dust.onLoad?t.map(function(t){dust.onLoad(e,function(r,i){if(r)return t.setError(r);dust.cache[e]||dust.loadSource(dust.compile(i,e)),dust.cache[e](t,n).end()})}):t.setError(new Error("Template Not Found: "+e))},dust.loadSource=function(source,path){return eval(source)},Array.isArray?dust.isArray=Array.isArray:dust.isArray=function(e){return Object.prototype.toString.call(e)=="[object Array]"},dust.nextTick=function(){return typeof process!="undefined"?process.nextTick:function(e){setTimeout(e,0)}}(),dust.isEmpty=function(e){return dust.isArray(e)&&!e.length?!0:e===0?!1:!e},dust.filter=function(e,t,n){if(n)for(var r=0,i=n.length;r0){t.stack.head&&(t.stack.head.$len=o);for(var a=0;a\"\']/),AMP=/&/g,LT=//g,QUOT=/\"/g,SQUOT=/\'/g;dust.escapeHtml=function(e){return typeof e=="string"?HCHARS.test(e)?e.replace(AMP,"&").replace(LT,"<").replace(GT,">").replace(QUOT,""").replace(SQUOT,"'"):e:e};var BS=/\\/g,CR=/\r/g,LS=/\u2028/g,PS=/\u2029/g,NL=/\n/g,LF=/\f/g,SQ=/'/g,DQ=/"/g,TB=/\t/g;dust.escapeJs=function(e){return typeof e=="string"?e.replace(BS,"\\\\").replace(DQ,'\\"').replace(SQ,"\\'").replace(CR,"\\r").replace(LS,"\\u2028").replace(PS,"\\u2029").replace(NL,"\\n").replace(LF,"\\f").replace(TB,"\\t"):e}})(dust),typeof exports!="undefined"&&(typeof process!="undefined"&&require("./server")(dust),module.exports=dust);var dustCompiler=function(e){function t(t){var n={};return e.filterNode(n,t)}function n(t,n){var r=[n[0]];for(var i=1,s=n.length;iu.offset&&(u=c(s),a=[]),a.push(e)}function d(){var e,t,n;n=c(s),e=[],t=v();while(t!==null)e.push(t),t=v();return e!==null&&(e=function(e,t,n,r){return["body"].concat(r)}(n.offset,n.line,n.column,e)),e===null&&(s=c(n)),e}function v(){var e;return e=I(),e===null&&(e=m(),e===null&&(e=x(),e===null&&(e=N(),e===null&&(e=S(),e===null&&(e=B()))))),e}function m(){var e,t,r,i,u,a,f,l,v;o++,l=c(s),v=c(s),e=g();if(e!==null){t=[],r=V();while(r!==null)t.push(r),r=V();t!==null?(r=U(),r!==null?(i=d(),i!==null?(u=E(),u!==null?(a=y(),a=a!==null?a:"",a!==null?(f=function(e,t,n,r,i,s,o){if(!o||r[1].text!==o.text)throw new Error("Expected end tag for "+r[1].text+" but it was not found. At line : "+t+", column : "+n);return!0}(s.offset,s.line,s.column,e,i,u,a)?"":null,f!==null?e=[e,t,r,i,u,a,f]:(e=null,s=c(v))):(e=null,s=c(v))):(e=null,s=c(v))):(e=null,s=c(v))):(e=null,s=c(v))):(e=null,s=c(v))}else e=null,s=c(v);e!==null&&(e=function(e,t,n,r,i,s,o){return s.push(["param",["literal","block"],i]),r.push(s),r}(l.offset,l.line,l.column,e[0],e[3],e[4],e[5])),e===null&&(s=c(l));if(e===null){l=c(s),v=c(s),e=g();if(e!==null){t=[],r=V();while(r!==null)t.push(r),r=V();t!==null?(n.charCodeAt(s.offset)===47?(r="/",h(s,1)):(r=null,o===0&&p('"/"')),r!==null?(i=U(),i!==null?e=[e,t,r,i]:(e=null,s=c(v))):(e=null,s=c(v))):(e=null,s=c(v))}else e=null,s=c(v);e!==null&&(e=function(e,t,n,r){return r.push(["bodies"]),r}(l.offset,l.line,l.column,e[0])),e===null&&(s=c(l))}return o--,o===0&&e===null&&p("section"),e}function g(){var e,t,r,i,u,a,f,l;f=c(s),l=c(s),e=R();if(e!==null){/^[#?^<+@%]/.test(n.charAt(s.offset))?(t=n.charAt(s.offset),h(s,1)):(t=null,o===0&&p("[#?^<+@%]"));if(t!==null){r=[],i=V();while(i!==null)r.push(i),i=V();r!==null?(i=C(),i!==null?(u=b(),u!==null?(a=w(),a!==null?e=[e,t,r,i,u,a]:(e=null,s=c(l))):(e=null,s=c(l))):(e=null,s=c(l))):(e=null,s=c(l))}else e=null,s=c(l)}else e=null,s=c(l);return e!==null&&(e=function(e,t,n,r,i,s,o){return[r,i,s,o]}(f.offset,f.line,f.column,e[1],e[3],e[4],e[5])),e===null&&(s=c(f)),e}function y(){var e,t,r,i,u,a,f,l;o++,f=c(s),l=c(s),e=R();if(e!==null){n.charCodeAt(s.offset)===47?(t="/",h(s,1)):(t=null,o===0&&p('"/"'));if(t!==null){r=[],i=V();while(i!==null)r.push(i),i=V();if(r!==null){i=C();if(i!==null){u=[],a=V();while(a!==null)u.push(a),a=V();u!==null?(a=U(),a!==null?e=[e,t,r,i,u,a]:(e=null,s=c(l))):(e=null,s=c(l))}else e=null,s=c(l)}else e=null,s=c(l)}else e=null,s=c(l)}else e=null,s=c(l);return e!==null&&(e=function(e,t,n,r){return r}(f.offset,f.line,f.column,e[3])),e===null&&(s=c(f)),o--,o===0&&e===null&&p("end tag"),e}function b(){var e,t,r,i,u;return r=c(s),i=c(s),u=c(s),n.charCodeAt(s.offset)===58?(e=":",h(s,1)):(e=null,o===0&&p('":"')),e!==null?(t=C(),t!==null?e=[e,t]:(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n,r){return r}(i.offset,i.line,i.column,e[1])),e===null&&(s=c(i)),e=e!==null?e:"",e!==null&&(e=function(e,t,n,r){return r?["context",r]:["context"]}(r.offset,r.line,r.column,e)),e===null&&(s=c(r)),e}function w(){var e,t,r,i,u,a,f,l;o++,a=c(s),e=[],f=c(s),l=c(s),r=V();if(r!==null){t=[];while(r!==null)t.push(r),r=V()}else t=null;t!==null?(r=M(),r!==null?(n.charCodeAt(s.offset)===61?(i="=",h(s,1)):(i=null,o===0&&p('"="')),i!==null?(u=k(),u===null&&(u=C(),u===null&&(u=P())),u!==null?t=[t,r,i,u]:(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l)),t!==null&&(t=function(e,t,n,r,i){return["param",["literal",r],i]}(f.offset,f.line,f.column,t[1],t[3])),t===null&&(s=c(f));while(t!==null){e.push(t),f=c(s),l=c(s),r=V();if(r!==null){t=[];while(r!==null)t.push(r),r=V()}else t=null;t!==null?(r=M(),r!==null?(n.charCodeAt(s.offset)===61?(i="=",h(s,1)):(i=null,o===0&&p('"="')),i!==null?(u=k(),u===null&&(u=C(),u===null&&(u=P())),u!==null?t=[t,r,i,u]:(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l)),t!==null&&(t=function(e,t,n,r,i){return["param",["literal",r],i]}(f.offset,f.line,f.column,t[1],t[3])),t===null&&(s=c(f))}return e!==null&&(e=function(e,t,n,r){return["params"].concat(r)}(a.offset,a.line,a.column,e)),e===null&&(s=c(a)),o--,o===0&&e===null&&p("params"),e}function E(){var e,t,r,i,u,a,f,l,v;o++,f=c(s),e=[],l=c(s),v=c(s),t=R(),t!==null?(n.charCodeAt(s.offset)===58?(r=":",h(s,1)):(r=null,o===0&&p('":"')),r!==null?(i=M(),i!==null?(u=U(),u!==null?(a=d(),a!==null?t=[t,r,i,u,a]:(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v)),t!==null&&(t=function(e,t,n,r,i){return["param",["literal",r],i]}(l.offset,l.line,l.column,t[2],t[4])),t===null&&(s=c(l));while(t!==null)e.push(t),l=c(s),v=c(s),t=R(),t!==null?(n.charCodeAt(s.offset)===58?(r=":",h(s,1)):(r=null,o===0&&p('":"')),r!==null?(i=M(),i!==null?(u=U(),u!==null?(a=d(),a!==null?t=[t,r,i,u,a]:(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v))):(t=null,s=c(v)),t!==null&&(t=function(e,t,n,r,i){return["param",["literal",r],i]}(l.offset,l.line,l.column,t[2],t[4])),t===null&&(s=c(l));return e!==null&&(e=function(e,t,n,r){return["bodies"].concat(r)}(f.offset,f.line,f.column,e)),e===null&&(s=c(f)),o--,o===0&&e===null&&p("bodies"),e}function S(){var e,t,n,r,i,u;return o++,i=c(s),u=c(s),e=R(),e!==null?(t=C(),t!==null?(n=T(),n!==null?(r=U(),r!==null?e=[e,t,n,r]:(e=null,s=c(u))):(e=null,s=c(u))):(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n,r,i){return["reference",r,i]}(i.offset,i.line,i.column,e[1],e[2])),e===null&&(s=c(i)),o--,o===0&&e===null&&p("reference"),e}function x(){var e,t,r,i,u,a,f,l,d,v,m,g;o++,v=c(s),m=c(s),e=R();if(e!==null){n.charCodeAt(s.offset)===62?(t=">",h(s,1)):(t=null,o===0&&p('">"')),t===null&&(n.charCodeAt(s.offset)===43?(t="+",h(s,1)):(t=null,o===0&&p('"+"')));if(t!==null){r=[],i=V();while(i!==null)r.push(i),i=V();if(r!==null){g=c(s),i=M(),i!==null&&(i=function(e,t,n,r){return["literal",r]}(g.offset,g.line,g.column,i)),i===null&&(s=c(g)),i===null&&(i=P());if(i!==null){u=b();if(u!==null){a=w();if(a!==null){f=[],l=V();while(l!==null)f.push(l),l=V();f!==null?(n.charCodeAt(s.offset)===47?(l="/",h(s,1)):(l=null,o===0&&p('"/"')),l!==null?(d=U(),d!==null?e=[e,t,r,i,u,a,f,l,d]:(e=null,s=c(m))):(e=null,s=c(m))):(e=null,s=c(m))}else e=null,s=c(m)}else e=null,s=c(m)}else e=null,s=c(m)}else e=null,s=c(m)}else e=null,s=c(m)}else e=null,s=c(m);return e!==null&&(e=function(e,t,n,r,i,s,o){var u=r===">"?"partial":r;return[u,i,s,o]}(v.offset,v.line,v.column,e[1],e[3],e[4],e[5])),e===null&&(s=c(v)),o--,o===0&&e===null&&p("partial"),e}function T(){var e,t,r,i,u,a;o++,i=c(s),e=[],u=c(s),a=c(s),n.charCodeAt(s.offset)===124?(t="|",h(s,1)):(t=null,o===0&&p('"|"')),t!==null?(r=M(),r!==null?t=[t,r]:(t=null,s=c(a))):(t=null,s=c(a)),t!==null&&(t=function(e,t,n,r){return r}(u.offset,u.line,u.column,t[1])),t===null&&(s=c(u));while(t!==null)e.push(t),u=c(s),a=c(s),n.charCodeAt(s.offset)===124?(t="|",h(s,1)):(t=null,o===0&&p('"|"')),t!==null?(r=M(),r!==null?t=[t,r]:(t=null,s=c(a))):(t=null,s=c(a)),t!==null&&(t=function(e,t,n,r){return r}(u.offset,u.line,u.column,t[1])),t===null&&(s=c(u));return e!==null&&(e=function(e,t,n,r){return["filters"].concat(r)}(i.offset,i.line,i.column,e)),e===null&&(s=c(i)),o--,o===0&&e===null&&p("filters"),e}function N(){var e,t,r,i,u,a;return o++,u=c(s),a=c(s),e=R(),e!==null?(n.charCodeAt(s.offset)===126?(t="~",h(s,1)):(t=null,o===0&&p('"~"')),t!==null?(r=M(),r!==null?(i=U(),i!==null?e=[e,t,r,i]:(e=null,s=c(a))):(e=null,s=c(a))):(e=null,s=c(a))):(e=null,s=c(a)),e!==null&&(e=function(e,t,n,r){return["special",r]}(u.offset,u.line,u.column,e[2])),e===null&&(s=c(u)),o--,o===0&&e===null&&p("special"),e}function C(){var e,t;return o++,t=c(s),e=O(),e!==null&&(e=function(e,t,n,r){var i=["path"].concat(r);return i.text=r[1].join("."),i}(t.offset,t.line,t.column,e)),e===null&&(s=c(t)),e===null&&(t=c(s),e=M(),e!==null&&(e=function(e,t,n,r){var i=["key",r];return i.text=r,i}(t.offset,t.line,t.column,e)),e===null&&(s=c(t))),o--,o===0&&e===null&&p("identifier"),e}function k(){var e,t;return o++,t=c(s),e=L(),e===null&&(e=A()),e!==null&&(e=function(e,t,n,r){return["literal",r]}(t.offset,t.line,t.column,e)),e===null&&(s=c(t)),o--,o===0&&e===null&&p("number"),e}function L(){var e,t,r,i,u,a;o++,u=c(s),a=c(s),e=A();if(e!==null){n.charCodeAt(s.offset)===46?(t=".",h(s,1)):(t=null,o===0&&p('"."'));if(t!==null){i=A();if(i!==null){r=[];while(i!==null)r.push(i),i=A()}else r=null;r!==null?e=[e,t,r]:(e=null,s=c(a))}else e=null,s=c(a)}else e=null,s=c(a);return e!==null&&(e=function(e,t,n,r,i){return parseFloat(r+"."+i.join(""))}(u.offset,u.line,u.column,e[0],e[2])),e===null&&(s=c(u)),o--,o===0&&e===null&&p("frac"),e}function A(){var e,t,r;o++,r=c(s),/^[0-9]/.test(n.charAt(s.offset))?(t=n.charAt(s.offset),h(s,1)):(t=null,o===0&&p("[0-9]"));if(t!==null){e=[];while(t!==null)e.push(t),/^[0-9]/.test(n.charAt(s.offset))?(t=n.charAt(s.offset),h(s,1)):(t=null,o===0&&p("[0-9]"))}else e=null;return e!==null&&(e=function(e,t,n,r){return parseInt(r.join(""),10)}(r.offset,r.line,r.column,e)),e===null&&(s=c(r)),o--,o===0&&e===null&&p("integer"),e}function O(){var e,t,r,i,u;o++,i=c(s),u=c(s),e=M(),e=e!==null?e:"";if(e!==null){r=D(),r===null&&(r=_());if(r!==null){t=[];while(r!==null)t.push(r),r=D(),r===null&&(r=_())}else t=null;t!==null?e=[e,t]:(e=null,s=c(u))}else e=null,s=c(u);e!==null&&(e=function(e,t,n,r,i){return i=i[0],r&&i?(i.unshift(r),[!1,i]):[!0,i]}(i.offset,i.line,i.column,e[0],e[1])),e===null&&(s=c(i));if(e===null){i=c(s),u=c(s),n.charCodeAt(s.offset)===46?(e=".",h(s,1)):(e=null,o===0&&p('"."'));if(e!==null){t=[],r=D(),r===null&&(r=_());while(r!==null)t.push(r),r=D(),r===null&&(r=_());t!==null?e=[e,t]:(e=null,s=c(u))}else e=null,s=c(u);e!==null&&(e=function(e,t,n,r){return r.length>0?[!0,r[0]]:[!0,[]]}(i.offset,i.line,i.column,e[1])),e===null&&(s=c(i))}return o--,o===0&&e===null&&p("path"),e}function M(){var e,t,r,i,u;o++,i=c(s),u=c(s),/^[a-zA-Z_$]/.test(n.charAt(s.offset))?(e=n.charAt(s.offset),h(s,1)):(e=null,o===0&&p("[a-zA-Z_$]"));if(e!==null){t=[],/^[0-9a-zA-Z_$\-]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p("[0-9a-zA-Z_$\\-]"));while(r!==null)t.push(r),/^[0-9a-zA-Z_$\-]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p("[0-9a-zA-Z_$\\-]"));t!==null?e=[e,t]:(e=null,s=c(u))}else e=null,s=c(u);return e!==null&&(e=function(e,t,n,r,i){return r+i.join("")}(i.offset,i.line,i.column,e[0],e[1])),e===null&&(s=c(i)),o--,o===0&&e===null&&p("key"),e}function _(){var e,t,r,i,u,a,f,l;o++,i=c(s),u=c(s),a=c(s),f=c(s),e=z();if(e!==null){l=c(s),/^[0-9]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p("[0-9]"));if(r!==null){t=[];while(r!==null)t.push(r),/^[0-9]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p("[0-9]"))}else t=null;t!==null&&(t=function(e,t,n,r){return r.join("")}(l.offset,l.line,l.column,t)),t===null&&(s=c(l)),t===null&&(t=C()),t!==null?(r=W(),r!==null?e=[e,t,r]:(e=null,s=c(f))):(e=null,s=c(f))}else e=null,s=c(f);return e!==null&&(e=function(e,t,n,r){return r}(a.offset,a.line,a.column,e[1])),e===null&&(s=c(a)),e!==null?(t=D(),t=t!==null?t:"",t!==null?e=[e,t]:(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n,r,i){return i?i.unshift(r):i=[r],i}(i.offset,i.line,i.column,e[0],e[1])),e===null&&(s=c(i)),o--,o===0&&e===null&&p("array"),e}function D(){var e,t,r,i,u,a,f;o++,i=c(s),u=c(s),a=c(s),f=c(s),n.charCodeAt(s.offset)===46?(t=".",h(s,1)):(t=null,o===0&&p('"."')),t!==null?(r=M(),r!==null?t=[t,r]:(t=null,s=c(f))):(t=null,s=c(f)),t!==null&&(t=function(e,t,n,r){return r}(a.offset,a.line,a.column,t[1])),t===null&&(s=c(a));if(t!==null){e=[];while(t!==null)e.push(t),a=c(s),f=c(s),n.charCodeAt(s.offset)===46?(t=".",h(s,1)):(t=null,o===0&&p('"."')),t!==null?(r=M(),r!==null?t=[t,r]:(t=null,s=c(f))):(t=null,s=c(f)),t!==null&&(t=function(e,t,n,r){return r}(a.offset,a.line,a.column,t[1])),t===null&&(s=c(a))}else e=null;return e!==null?(t=_(),t=t!==null?t:"",t!==null?e=[e,t]:(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n,r,i){return i?r.concat(i):r}(i.offset,i.line,i.column,e[0],e[1])),e===null&&(s=c(i)),o--,o===0&&e===null&&p("array_part"),e}function P(){var e,t,r,i,u;o++,i=c(s),u=c(s),n.charCodeAt(s.offset)===34?(e='"',h(s,1)):(e=null,o===0&&p('"\\""')),e!==null?(n.charCodeAt(s.offset)===34?(t='"',h(s,1)):(t=null,o===0&&p('"\\""')),t!==null?e=[e,t]:(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n){return["literal",""]}(i.offset,i.line,i.column)),e===null&&(s=c(i));if(e===null){i=c(s),u=c(s),n.charCodeAt(s.offset)===34?(e='"',h(s,1)):(e=null,o===0&&p('"\\""')),e!==null?(t=j(),t!==null?(n.charCodeAt(s.offset)===34?(r='"',h(s,1)):(r=null,o===0&&p('"\\""')),r!==null?e=[e,t,r]:(e=null,s=c(u))):(e=null,s=c(u))):(e=null,s=c(u)),e!==null&&(e=function(e,t,n,r){return["literal",r]}(i.offset,i.line,i.column,e[1])),e===null&&(s=c(i));if(e===null){i=c(s),u=c(s),n.charCodeAt(s.offset)===34?(e='"',h(s,1)):(e=null,o===0&&p('"\\""'));if(e!==null){r=H();if(r!==null){t=[];while(r!==null)t.push(r),r=H()}else t=null;t!==null?(n.charCodeAt(s.offset)===34?(r='"',h(s,1)):(r=null,o===0&&p('"\\""')),r!==null?e=[e,t,r]:(e=null,s=c(u))):(e=null,s=c(u))}else e=null,s=c(u);e!==null&&(e=function(e,t,n,r){return["body"].concat(r)}(i.offset,i.line,i.column,e[1])),e===null&&(s=c(i))}}return o--,o===0&&e===null&&p("inline"),e}function H(){var e,t;return e=N(),e===null&&(e=S(),e===null&&(t=c(s),e=j(),e!==null&&(e=function(e,t,n,r){return["buffer",r]}(t.offset,t.line,t.column,e)),e===null&&(s=c(t)))),e}function B(){var e,t,r,i,u,a,f,l,d;o++,a=c(s),f=c(s),e=X();if(e!==null){t=[],r=V();while(r!==null)t.push(r),r=V();t!==null?e=[e,t]:(e=null,s=c(f))}else e=null,s=c(f);e!==null&&(e=function(e,t,n,r,i){return["format",r,i.join("")]}(a.offset,a.line,a.column,e[0],e[1])),e===null&&(s=c(a));if(e===null){a=c(s),f=c(s),l=c(s),d=c(s),o++,t=q(),o--,t===null?t="":(t=null,s=c(d)),t!==null?(d=c(s),o++,r=I(),o--,r===null?r="":(r=null,s=c(d)),r!==null?(d=c(s),o++,i=X(),o--,i===null?i="":(i=null,s=c(d)),i!==null?(n.length>s.offset?(u=n.charAt(s.offset),h(s,1)):(u=null,o===0&&p("any character")),u!==null?t=[t,r,i,u]:(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l)),t!==null&&(t=function(e,t,n,r){return r}(f.offset,f.line,f.column,t[3])),t===null&&(s=c(f));if(t!==null){e=[];while(t!==null)e.push(t),f=c(s),l=c(s),d=c(s),o++,t=q(),o--,t===null?t="":(t=null,s=c(d)),t!==null?(d=c(s),o++,r=I(),o--,r===null?r="":(r=null,s=c(d)),r!==null?(d=c(s),o++,i=X(),o--,i===null?i="":(i=null,s=c(d)),i!==null?(n.length>s.offset?(u=n.charAt(s.offset),h(s,1)):(u=null,o===0&&p("any character")),u!==null?t=[t,r,i,u]:(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l))):(t=null,s=c(l)),t!==null&&(t=function(e,t,n,r){return r}(f.offset,f.line,f.column,t[3])),t===null&&(s=c(f))}else e=null;e!==null&&(e=function(e,t,n,r){return["buffer",r.join("")]}(a.offset,a.line,a.column,e)),e===null&&(s=c(a))}return o--,o===0&&e===null&&p("buffer"),e}function j(){var e,t,r,i,u,a,f;o++,i=c(s),u=c(s),a=c(s),f=c(s),o++,t=q(),o--,t===null?t="":(t=null,s=c(f)),t!==null?(r=F(),r===null&&(/^[^"]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p('[^"]'))),r!==null?t=[t,r]:(t=null,s=c(a))):(t=null,s=c(a)),t!==null&&(t=function(e,t,n,r){return r}(u.offset,u.line,u.column,t[1])),t===null&&(s=c(u));if(t!==null){e=[];while(t!==null)e.push(t),u=c(s),a=c(s),f=c(s),o++,t=q(),o--,t===null?t="":(t=null,s=c(f)),t!==null?(r=F(),r===null&&(/^[^"]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p('[^"]'))),r!==null?t=[t,r]:(t=null,s=c(a))):(t=null,s=c(a)),t!==null&&(t=function(e,t,n,r){return r}(u.offset,u.line,u.column,t[1])),t===null&&(s=c(u))}else e=null;return e!==null&&(e=function(e,t,n,r){return r.join("")}(i.offset,i.line,i.column,e)),e===null&&(s=c(i)),o--,o===0&&e===null&&p("literal"),e}function F(){var e,t;return t=c(s),n.substr(s.offset,2)==='\\"'?(e='\\"',h(s,2)):(e=null,o===0&&p('"\\\\\\""')),e!==null&&(e=function(e,t,n){return'"'}(t.offset,t.line,t.column)),e===null&&(s=c(t)),e}function I(){var e,t,r,i,u,a,f,l,d;o++,u=c(s),a=c(s),n.substr(s.offset,2)==="{!"?(e="{!",h(s,2)):(e=null,o===0&&p('"{!"'));if(e!==null){t=[],f=c(s),l=c(s),d=c(s),o++,n.substr(s.offset,2)==="!}"?(r="!}",h(s,2)):(r=null,o===0&&p('"!}"')),o--,r===null?r="":(r=null,s=c(d)),r!==null?(n.length>s.offset?(i=n.charAt(s.offset),h(s,1)):(i=null,o===0&&p("any character")),i!==null?r=[r,i]:(r=null,s=c(l))):(r=null,s=c(l)),r!==null&&(r=function(e,t,n,r){return r}(f.offset,f.line,f.column,r[1])),r===null&&(s=c(f));while(r!==null)t.push(r),f=c(s),l=c(s),d=c(s),o++,n.substr(s.offset,2)==="!}"?(r="!}",h(s,2)):(r=null,o===0&&p('"!}"')),o--,r===null?r="":(r=null,s=c(d)),r!==null?(n.length>s.offset?(i=n.charAt(s.offset),h(s,1)):(i=null,o===0&&p("any character")),i!==null?r=[r,i]:(r=null,s=c(l))):(r=null,s=c(l)),r!==null&&(r=function(e,t,n,r){return r}(f.offset,f.line,f.column,r[1])),r===null&&(s=c(f));t!==null?(n.substr(s.offset,2)==="!}"?(r="!}",h(s,2)):(r=null,o===0&&p('"!}"')),r!==null?e=[e,t,r]:(e=null,s=c(a))):(e=null,s=c(a))}else e=null,s=c(a);return e!==null&&(e=function(e,t,n,r){return["comment",r.join("")]}(u.offset,u.line,u.column,e[1])),e===null&&(s=c(u)),o--,o===0&&e===null&&p("comment"),e}function q(){var e,t,r,i,u,a,f,l,d,v,m;d=c(s),e=R();if(e!==null){t=[],r=V();while(r!==null)t.push(r),r=V();if(t!==null){/^[#?^><+%:@\/~%]/.test(n.charAt(s.offset))?(r=n.charAt(s.offset),h(s,1)):(r=null,o===0&&p("[#?^><+%:@\\/~%]"));if(r!==null){i=[],u=V();while(u!==null)i.push(u),u=V();if(i!==null){v=c(s),m=c(s),o++,a=U(),o--,a===null?a="":(a=null,s=c(m)),a!==null?(m=c(s),o++,f=X(),o--,f===null?f="":(f=null,s=c(m)),f!==null?(n.length>s.offset?(l=n.charAt(s.offset),h(s,1)):(l=null,o===0&&p("any character")),l!==null?a=[a,f,l]:(a=null,s=c(v))):(a=null,s=c(v))):(a=null,s=c(v));if(a!==null){u=[];while(a!==null)u.push(a),v=c(s),m=c(s),o++,a=U(),o--,a===null?a="":(a=null,s=c(m)),a!==null?(m=c(s),o++,f=X(),o--,f===null?f="":(f=null,s=c(m)),f!==null?(n.length>s.offset?(l=n.charAt(s.offset),h(s,1)):(l=null,o===0&&p("any character")),l!==null?a=[a,f,l]:(a=null,s=c(v))):(a=null,s=c(v))):(a=null,s=c(v))}else u=null;if(u!==null){a=[],f=V();while(f!==null)a.push(f),f=V();a!==null?(f=U(),f!==null?e=[e,t,r,i,u,a,f]:(e=null,s=c(d))):(e=null,s=c(d))}else e=null,s=c(d)}else e=null,s=c(d)}else e=null,s=c(d)}else e=null,s=c(d)}else e=null,s=c(d);return e===null&&(e=S()),e}function R(){var e;return n.charCodeAt(s.offset)===123?(e="{",h(s,1)):(e=null,o===0&&p('"{"')),e}function U(){var e;return n.charCodeAt(s.offset)===125?(e="}",h(s,1)):(e=null,o===0&&p('"}"')),e}function z(){var e;return n.charCodeAt(s.offset)===91?(e="[",h(s,1)):(e=null,o===0&&p('"["')),e}function W(){var e;return n.charCodeAt(s.offset)===93?(e="]",h(s,1)):(e=null,o===0&&p('"]"')),e}function X(){var e;return n.charCodeAt(s.offset)===10?(e="\n",h(s,1)):(e=null,o===0&&p('"\\n"')),e===null&&(n.substr(s.offset,2)==="\r\n"?(e="\r\n",h(s,2)):(e=null,o===0&&p('"\\r\\n"')),e===null&&(n.charCodeAt(s.offset)===13?(e="\r",h(s,1)):(e=null,o===0&&p('"\\r"')),e===null&&(n.charCodeAt(s.offset)===8232?(e="\u2028",h(s,1)):(e=null,o===0&&p('"\\u2028"')),e===null&&(n.charCodeAt(s.offset)===8233?(e="\u2029",h(s,1)):(e=null,o===0&&p('"\\u2029"')))))),e}function V(){var e;return/^[\t\x0B\f \xA0\uFEFF]/.test(n.charAt(s.offset))?(e=n.charAt(s.offset),h(s,1)):(e=null,o===0&&p("[\\t\\x0B\\f \\xA0\\uFEFF]")),e===null&&(e=X()),e}function $(e){e.sort();var t=null,n=[];for(var r=0;ru.offset?s:u;throw new t.SyntaxError($(a),Q,K,G.line,G.column)}return J},toSource:function(){return this._source}};return n.SyntaxError=function(t,n,r,i,s){function o(t,n){var r,i;switch(t.length){case 0:r="end of input";break;case 1:r=t[0];break;default:r=t.slice(0,t.length-1).join(", ")+" or "+t[t.length-1]}return i=n?e(n):"end of input","Expected "+r+" but "+i+" found."}this.name="SyntaxError",this.expected=t,this.found=n,this.message=o(t,n),this.offset=r,this.line=i,this.column=s},n.SyntaxError.prototype=Error.prototype,n}();e.parse=t.parse}(typeof exports!="undefined"?exports:getGlobal()) \ No newline at end of file diff --git a/ajax/libs/dustjs-linkedin/package.json b/ajax/libs/dustjs-linkedin/package.json index 75fba1eae..53cdcc648 100755 --- a/ajax/libs/dustjs-linkedin/package.json +++ b/ajax/libs/dustjs-linkedin/package.json @@ -1,7 +1,7 @@ { "name": "dustjs-linkedin", "filename": "dust-core.min.js", - "version": "1.2.0", + "version": "1.2.3", "description": "Asynchronous templates for the browser and node.js ( LinkedIn fork )", "homepage": "http://linkedin.github.com/dustjs/", "keywords": [ From be7dfa88e024395eb2d4aff2112e831f22a594cd Mon Sep 17 00:00:00 2001 From: AdmiralsMaster Date: Thu, 4 Jul 2013 23:31:01 +0200 Subject: [PATCH 02/25] adding klass 1.0 --- ajax/libs/klass/1.0/klass.js | 85 ++++++++++++++++++++++++++++++++ ajax/libs/klass/1.0/klass.min.js | 7 +++ ajax/libs/klass/package.json | 22 +++++++++ 3 files changed, 114 insertions(+) create mode 100755 ajax/libs/klass/1.0/klass.js create mode 100755 ajax/libs/klass/1.0/klass.min.js create mode 100644 ajax/libs/klass/package.json diff --git a/ajax/libs/klass/1.0/klass.js b/ajax/libs/klass/1.0/klass.js new file mode 100755 index 000000000..57075fbb3 --- /dev/null +++ b/ajax/libs/klass/1.0/klass.js @@ -0,0 +1,85 @@ +/** + * Klass.js - copyright @dedfat + * https://github.com/polvero/klass + * Follow our software http://twitter.com/dedfat + * MIT License + */ +!function(context, f) { + var fnTest = /xyz/.test(function (){xyz;}) ? /\bsupr\b/ : /.*/, + noop = function(){}, + proto = 'prototype', + isFn = function (o) { + return typeof o === f; + }; + + function klass(o) { + return extend.call(typeof o == f ? o : noop, o, 1); + } + + + function wrap(k, fn, supr) { + return function () { + var tmp = this.supr; + this.supr = supr[proto][k]; + var ret = fn.apply(this, arguments); + this.supr = tmp; + return ret; + }; + } + + function process(what, o, supr) { + for (var k in o) { + if (o.hasOwnProperty(k)) { + what[k] = typeof o[k] == f + && typeof supr[proto][k] == f + && fnTest.test(o[k]) + ? wrap(k, o[k], supr) : o[k]; + } + } + } + + function extend(o, fromSub) { + var supr = this, + prototype = new noop(), + isFunction = typeof o == f, + _constructor = isFunction ? o : this, + _methods = isFunction ? {} : o, + fn = function () { + fromSub || isFn(o) && supr.apply(this, arguments); + _constructor.apply(this, arguments); + }; + + fn.methods = function (o) { + process(prototype, o, supr); + fn[proto] = prototype; + return this; + }; + + fn.methods.call(fn, _methods).constructor = this; + + fn.extend = arguments.callee; + + fn[proto].implement = fn.statics = function (o) { + process(this, o, supr); + return this; + }; + if (isFunction) { + for (var p in this.prototype) { + if (p.match(/supr|implement/)) { + continue + } + fn[proto][p] = this.prototype[p]; + } + + } + + return fn; + } + + if (typeof module !== 'undefined' && module.exports) { + module.exports = klass; + } else { + context.klass = klass; + } + +}(this, 'function'); diff --git a/ajax/libs/klass/1.0/klass.min.js b/ajax/libs/klass/1.0/klass.min.js new file mode 100755 index 000000000..b60152b4b --- /dev/null +++ b/ajax/libs/klass/1.0/klass.min.js @@ -0,0 +1,7 @@ +/** + * Klass.js - copyright @dedfat + * https://github.com/polvero/klass + * Follow our software http://twitter.com/dedfat + * MIT License + */ +!function(a,b){function j(a,c){var g=this,h=new d,j=typeof a==b,k=j?a:this,l=j?{}:a,m=function(){c||f(a)&&g.apply(this,arguments),k.apply(this,arguments)};m.methods=function(a){i(h,a,g),m[e]=h;return this},m.methods.call(m,l).constructor=this,m.extend=arguments.callee,m[e].implement=m.statics=function(a){i(this,a,g);return this};if(j)for(var n in this.prototype){if(n.match(/supr|implement/))continue;m[e][n]=this.prototype[n]}return m}function i(a,d,f){for(var g in d)d.hasOwnProperty(g)&&(a[g]=typeof d[g]==b&&typeof f[e][g]==b&&c.test(d[g])?h(g,d[g],f):d[g])}function h(a,b,c){return function(){var d=this.supr;this.supr=c[e][a];var f=b.apply(this,arguments);this.supr=d;return f}}function g(a){return j.call(typeof a==b?a:d,a,1)}var c=/xyz/.test(function(){xyz})?/\bsupr\b/:/.*/,d=function(){},e="prototype",f=function(a){return typeof a===b};typeof module!="undefined"&&module.exports?module.exports=g:a.klass=g}(this,"function") \ No newline at end of file diff --git a/ajax/libs/klass/package.json b/ajax/libs/klass/package.json new file mode 100644 index 000000000..bea7de978 --- /dev/null +++ b/ajax/libs/klass/package.json @@ -0,0 +1,22 @@ +{ + "name": "klass", + "filename": "klass.js", + "version": "1.0", + "description": "An expressive, cross platform JavaScript Class provider with a classical interface to prototypal inheritance.", + "homepage": "http://dustindiaz.com/klass", + "keywords": [ + "javascript" + ], + "maintainers": [ + { + "name": "Dustin Diaz" + } + ], + "repository": [ + { + "type": "git", + "url": "https://github.com/ded/klass.git" + } + ] +} + From 8f571149e78ca62c29bcc040b5a45c19261ef3d7 Mon Sep 17 00:00:00 2001 From: AdmiralsMaster Date: Fri, 5 Jul 2013 00:04:30 +0200 Subject: [PATCH 03/25] adding photoswipe 3.0.5 --- .../3.0.5/code.photoswipe.jquery.js | 6424 ++++++++++++++++ .../3.0.5/code.photoswipe.jquery.min.js | 164 + ajax/libs/photoswipe/3.0.5/code.photoswipe.js | 6690 +++++++++++++++++ .../photoswipe/3.0.5/code.photoswipe.min.js | 172 + .../3.0.5/code.photoswipe.noutil.jquery.js | 4344 +++++++++++ .../code.photoswipe.noutil.jquery.min.js | 119 + .../3.0.5/code.photoswipe.noutil.js | 4344 +++++++++++ .../3.0.5/code.photoswipe.noutil.min.js | 119 + ajax/libs/photoswipe/3.0.5/error.gif | Bin 0 -> 3431 bytes ajax/libs/photoswipe/3.0.5/icons.png | Bin 0 -> 3346 bytes ajax/libs/photoswipe/3.0.5/icons@2x.png | Bin 0 -> 5445 bytes ajax/libs/photoswipe/3.0.5/loader.gif | Bin 0 -> 3208 bytes ajax/libs/photoswipe/3.0.5/photoswipe.css | 176 + ajax/libs/photoswipe/3.0.5/photoswipe.min.css | 1 + ajax/libs/photoswipe/package.json | 16 + 15 files changed, 22569 insertions(+) create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.min.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.min.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.min.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.js create mode 100755 ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.min.js create mode 100755 ajax/libs/photoswipe/3.0.5/error.gif create mode 100755 ajax/libs/photoswipe/3.0.5/icons.png create mode 100755 ajax/libs/photoswipe/3.0.5/icons@2x.png create mode 100755 ajax/libs/photoswipe/3.0.5/loader.gif create mode 100755 ajax/libs/photoswipe/3.0.5/photoswipe.css create mode 100755 ajax/libs/photoswipe/3.0.5/photoswipe.min.css create mode 100644 ajax/libs/photoswipe/package.json diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.js new file mode 100755 index 000000000..5b39c6cf8 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.js @@ -0,0 +1,6424 @@ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function (window) { + + // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind + if (!Function.prototype.bind ) { + + Function.prototype.bind = function( obj ) { + var slice = [].slice, + args = slice.call(arguments, 1), + self = this, + nop = function () {}, + bound = function () { + return self.apply( this instanceof nop ? this : ( obj || {} ), + args.concat( slice.call(arguments) ) ); + }; + + nop.prototype = self.prototype; + + bound.prototype = new nop(); + + return bound; + }; + } + + + + if (typeof window.Code === "undefined") { + window.Code = {}; + } + + + + window.Code.Util = { + + + /* + * Function: registerNamespace + */ + registerNamespace: function () { + var + args = arguments, obj = null, i, j, ns, nsParts, root, argsLen, nsPartsLens; + for (i=0, argsLen=args.length; i Util.DOM.windowHeight()); + } + }; + + Util.Browser._detect(); + +} +( + window, + window.Code.Util +)) +; +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function (window, $, Util) { + + Util.extend(Util, { + + Events: { + + + /* + * Function: add + * Add an event handler + */ + add: function(obj, type, handler){ + + $(obj).bind(type, handler); + + }, + + + + /* + * Function: remove + * Removes a handler or all handlers associated with a type + */ + remove: function(obj, type, handler){ + + $(obj).unbind(type, handler); + + }, + + + /* + * Function: fire + * Fire an event + */ + fire: function(obj, type){ + + var + event, + args = Array.prototype.slice.call(arguments).splice(2); + + if (typeof type === "string"){ + event = { type: type }; + } + else{ + event = type; + } + + $(obj).trigger( $.Event(event.type, event), args); + + }, + + + /* + * Function: getMousePosition + */ + getMousePosition: function(event){ + + var retval = { + x: event.pageX, + y: event.pageY + }; + + return retval; + + }, + + + /* + * Function: getTouchEvent + */ + getTouchEvent: function(event){ + + return event.originalEvent; + + }, + + + + /* + * Function: getWheelDelta + */ + getWheelDelta: function(event){ + + var delta = 0; + + if (!Util.isNothing(event.wheelDelta)){ + delta = event.wheelDelta / 120; + } + else if (!Util.isNothing(event.detail)){ + delta = -event.detail / 3; + } + + return delta; + + }, + + + /* + * Function: domReady + */ + domReady: function(handler){ + + $(document).ready(handler); + + } + + + } + + + }); + + +} +( + window, + window.jQuery, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function (window, $, Util) { + + Util.extend(Util, { + + DOM: { + + + + /* + * Function: setData + */ + setData: function(el, key, value){ + + if (Util.isLikeArray(el)){ + var i, len; + for (i=0, len=el.length; i'); + retval.attr(attributes); + retval.append(content); + + return retval[0]; + + }, + + + + /* + * Function: appendChild + */ + appendChild: function(childEl, parentEl){ + + $(parentEl).append(childEl); + + }, + + + + /* + * Function: insertBefore + */ + insertBefore: function(newEl, refEl, parentEl){ + + $(newEl).insertBefore(refEl); + + }, + + + + /* + * Function: appendText + */ + appendText: function(text, parentEl){ + + $(parentEl).text(text); + + }, + + + + /* + * Function: appendToBody + */ + appendToBody: function(childEl){ + + $('body').append(childEl); + + }, + + + + /* + * Function: removeChild + */ + removeChild: function(childEl, parentEl){ + + $(childEl).empty().remove(); + + }, + + + + /* + * Function: removeChildren + */ + removeChildren: function(parentEl){ + + $(parentEl).empty(); + + }, + + + + /* + * Function: hasAttribute + */ + hasAttribute: function(el, attributeName){ + + return !Util.isNothing( $(el).attr(attributeName) ); + + }, + + + + /* + * Function: getAttribute + */ + getAttribute: function(el, attributeName, defaultValue){ + + var retval = $(el).attr(attributeName); + if (Util.isNothing(retval) && !Util.isNothing(defaultValue)){ + retval = defaultValue; + } + return retval; + + }, + + + + /* + * Function: el, attributeName + */ + setAttribute: function(el, attributeName, value){ + + if (Util.isLikeArray(el)){ + var i, len; + for (i=0, len=el.length; i= 1){ + Util.DOM.setStyle(el, 'opacity', 0); + } + + if (Util.Browser.isCSSTransformSupported){ + this._applyTransition(el, 'opacity', opacity, speed, callback, timingFunction); + } + else if (!Util.isNothing(window.jQuery)){ + window.jQuery(el).fadeTo(speed, opacity, callback); + } + + }, + + + + /* + * Function: fadeTo + */ + fadeTo: function(el, opacity, speed, callback, timingFunction){ + this.fadeIn(el, speed, callback, timingFunction, opacity); + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(el, speed, callback, timingFunction){ + + if (speed <= 0){ + Util.DOM.setStyle(el, 'opacity', 0); + if (!Util.isNothing(callback)){ + callback(el); + return; + } + } + + if (Util.Browser.isCSSTransformSupported){ + + this._applyTransition(el, 'opacity', 0, speed, callback, timingFunction); + + } + else{ + + window.jQuery(el).fadeTo(speed, 0, callback); + + } + + }, + + + + /* + * Function: slideBy + */ + slideBy: function(el, x, y, speed, callback, timingFunction){ + + var style = {}; + + x = Util.coalesce(x, 0); + y = Util.coalesce(y, 0); + timingFunction = Util.coalesce(timingFunction, 'ease-out'); + + style[this._transitionPrefix + 'Property'] = 'all'; + style[this._transitionPrefix + 'Delay'] = '0'; + + if (speed === 0){ + style[this._transitionPrefix + 'Duration'] = ''; + style[this._transitionPrefix + 'TimingFunction'] = ''; + } + else{ + style[this._transitionPrefix + 'Duration'] = speed + 'ms'; + style[this._transitionPrefix + 'TimingFunction'] = Util.coalesce(timingFunction, 'ease-out'); + + Util.Events.add(el, this._transitionEndLabel, this._getTransitionEndHandler()); + + } + + style[this._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + x + 'px, ' + y + 'px, 0px)' : 'translate(' + x + 'px, ' + y + 'px)'; + + if (!Util.isNothing(callback)){ + el.cclallcallback = callback; + } + + Util.DOM.setStyle(el, style); + + if (speed === 0){ + window.setTimeout(function(){ + this._leaveTransforms(el); + }.bind(this), this._applyTransitionDelay); + } + + }, + + + + /* + * Function: + */ + resetTranslate: function(el){ + + var style = {}; + style[this._transformLabel] = style[this._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(0px, 0px, 0px)' : 'translate(0px, 0px)'; + Util.DOM.setStyle(el, style); + + }, + + + + /* + * Function: _applyTransition + */ + _applyTransition: function(el, property, val, speed, callback, timingFunction){ + + var style = {}; + + timingFunction = Util.coalesce(timingFunction, 'ease-in'); + + style[this._transitionPrefix + 'Property'] = property; + style[this._transitionPrefix + 'Duration'] = speed + 'ms'; + style[this._transitionPrefix + 'TimingFunction'] = timingFunction; + style[this._transitionPrefix + 'Delay'] = '0'; + + Util.Events.add(el, this._transitionEndLabel, this._getTransitionEndHandler()); + + Util.DOM.setStyle(el, style); + + if (!Util.isNothing(callback)){ + el['ccl' + property + 'callback'] = callback; + } + + window.setTimeout(function(){ + Util.DOM.setStyle(el, property, val); + }, this._applyTransitionDelay); + + }, + + + + /* + * Function: _onTransitionEnd + */ + _onTransitionEnd: function(e){ + + Util.Events.remove(e.currentTarget, this._transitionEndLabel, this._getTransitionEndHandler()); + this._leaveTransforms(e.currentTarget); + + }, + + + + /* + * Function: _leaveTransforms + */ + _leaveTransforms: function(el){ + + var + property = el.style[this._transitionPrefix + 'Property'], + callbackLabel = (property !== '') ? 'ccl' + property + 'callback' : 'cclallcallback', + callback, + transform = Util.coalesce(el.style.webkitTransform, el.style.MozTransform, el.style.transform), + transformMatch, + transformExploded, + domX = window.parseInt(Util.DOM.getStyle(el, 'left'), 0), + domY = window.parseInt(Util.DOM.getStyle(el, 'top'), 0), + transformedX, + transformedY, + style = {}; + + if (transform !== ''){ + if (Util.Browser.is3dSupported){ + transformMatch = transform.match( /translate3d\((.*?)\)/ ); + } + else{ + transformMatch = transform.match( /translate\((.*?)\)/ ); + } + if (!Util.isNothing(transformMatch)){ + transformExploded = transformMatch[1].split(', '); + transformedX = window.parseInt(transformExploded[0], 0); + transformedY = window.parseInt(transformExploded[1], 0); + } + } + + style[this._transitionPrefix + 'Property'] = ''; + style[this._transitionPrefix + 'Duration'] = ''; + style[this._transitionPrefix + 'TimingFunction'] = ''; + style[this._transitionPrefix + 'Delay'] = ''; + + Util.DOM.setStyle(el, style); + + window.setTimeout(function(){ + + if(!Util.isNothing(transformExploded)){ + + style = {}; + style[this._transformLabel] = ''; + style.left = (domX + transformedX) + 'px'; + style.top = (domY + transformedY) + 'px'; + + Util.DOM.setStyle(el, style); + + } + + if (!Util.isNothing(el[callbackLabel])){ + callback = el[callbackLabel]; + delete el[callbackLabel]; + callback(el); + } + + }.bind(this), this._applyTransitionDelay); + + } + + + } + + + }); + + +} +( + window, + window.Code.Util +)); +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.Util.TouchElement'); + + + Util.TouchElement.EventTypes = { + + onTouch: 'CodeUtilTouchElementOnTouch' + + }; + + + Util.TouchElement.ActionTypes = { + + touchStart: 'touchStart', + touchMove: 'touchMove', + touchEnd: 'touchEnd', + touchMoveEnd: 'touchMoveEnd', + tap: 'tap', + doubleTap: 'doubleTap', + swipeLeft: 'swipeLeft', + swipeRight: 'swipeRight', + swipeUp: 'swipeUp', + swipeDown: 'swipeDown', + gestureStart: 'gestureStart', + gestureChange: 'gestureChange', + gestureEnd: 'gestureEnd' + + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.Util.TouchElement'); + + + Util.TouchElement.TouchElementClass = klass({ + + el: null, + + captureSettings: null, + + touchStartPoint: null, + touchEndPoint: null, + touchStartTime: null, + doubleTapTimeout: null, + + touchStartHandler: null, + touchMoveHandler: null, + touchEndHandler: null, + + mouseDownHandler: null, + mouseMoveHandler: null, + mouseUpHandler: null, + mouseOutHandler: null, + + gestureStartHandler: null, + gestureChangeHandler: null, + gestureEndHandler: null, + + swipeThreshold: null, + swipeTimeThreshold: null, + doubleTapSpeed: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(el, captureSettings){ + + this.el = el; + + this.captureSettings = { + swipe: false, + move: false, + gesture: false, + doubleTap: false, + preventDefaultTouchEvents: true + }; + + Util.extend(this.captureSettings, captureSettings); + + this.swipeThreshold = 50; + this.swipeTimeThreshold = 250; + this.doubleTapSpeed = 250; + + this.touchStartPoint = { x: 0, y: 0 }; + this.touchEndPoint = { x: 0, y: 0 }; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.touchStartHandler)){ + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.touchEndHandler = this.onTouchEnd.bind(this); + this.mouseDownHandler = this.onMouseDown.bind(this); + this.mouseMoveHandler = this.onMouseMove.bind(this); + this.mouseUpHandler = this.onMouseUp.bind(this); + this.mouseOutHandler = this.onMouseOut.bind(this); + this.gestureStartHandler = this.onGestureStart.bind(this); + this.gestureChangeHandler = this.onGestureChange.bind(this); + this.gestureEndHandler = this.onGestureEnd.bind(this); + } + + Util.Events.add(this.el, 'touchstart', this.touchStartHandler); + if (this.captureSettings.move){ + Util.Events.add(this.el, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.el, 'touchend', this.touchEndHandler); + + Util.Events.add(this.el, 'mousedown', this.mouseDownHandler); + + if (Util.Browser.isGestureSupported && this.captureSettings.gesture){ + Util.Events.add(this.el, 'gesturestart', this.gestureStartHandler); + Util.Events.add(this.el, 'gesturechange', this.gestureChangeHandler); + Util.Events.add(this.el, 'gestureend', this.gestureEndHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + Util.Events.remove(this.el, 'touchstart', this.touchStartHandler); + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.el, 'touchend', this.touchEndHandler); + Util.Events.remove(this.el, 'mousedown', this.mouseDownHandler); + + if (Util.Browser.isGestureSupported && this.captureSettings.gesture){ + Util.Events.remove(this.el, 'gesturestart', this.gestureStartHandler); + Util.Events.remove(this.el, 'gesturechange', this.gestureChangeHandler); + Util.Events.remove(this.el, 'gestureend', this.gestureEndHandler); + } + + }, + + + + /* + * Function: getTouchPoint + */ + getTouchPoint: function(touches){ + + return { + x: touches[0].pageX, + y: touches[0].pageY + }; + + }, + + + + /* + * Function: fireTouchEvent + */ + fireTouchEvent: function(e){ + + var + action, + distX = 0, + distY = 0, + dist = 0, + self, + endTime, + diffTime; + + distX = this.touchEndPoint.x - this.touchStartPoint.x; + distY = this.touchEndPoint.y - this.touchStartPoint.y; + dist = Math.sqrt( (distX * distX) + (distY * distY) ); + + if (this.captureSettings.swipe){ + endTime = new Date(); + diffTime = endTime - this.touchStartTime; + + // See if there was a swipe gesture + if (diffTime <= this.swipeTimeThreshold){ + + if (window.Math.abs(distX) >= this.swipeThreshold){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: (distX < 0) ? Util.TouchElement.ActionTypes.swipeLeft : Util.TouchElement.ActionTypes.swipeRight, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + + if (window.Math.abs(distY) >= this.swipeThreshold){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: (distY < 0) ? Util.TouchElement.ActionTypes.swipeUp : Util.TouchElement.ActionTypes.swipeDown, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + } + } + + + if (dist > 1){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMoveEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + } + + + if (!this.captureSettings.doubleTap){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.tap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + if (Util.isNothing(this.doubleTapTimeout)){ + + this.doubleTapTimeout = window.setTimeout(function(){ + + this.doubleTapTimeout = null; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.tap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }.bind(this), this.doubleTapSpeed); + + return; + + } + else{ + + window.clearTimeout(this.doubleTapTimeout); + this.doubleTapTimeout = null; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.doubleTap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + } + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + // No longer need mouse events + Util.Events.remove(this.el, 'mousedown', this.mouseDownHandler); + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = touchEvent.touches; + + if (touches.length > 1 && this.captureSettings.gesture){ + this.isGesture = true; + return; + } + + this.touchStartTime = new Date(); + this.isGesture = false; + this.touchStartPoint = this.getTouchPoint(touches); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchStart, + point: this.touchStartPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + if (this.isGesture && this.captureSettings.gesture){ + return; + } + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = touchEvent.touches; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMove, + point: this.getTouchPoint(touches), + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onTouchEnd + */ + onTouchEnd: function(e){ + + if (this.isGesture && this.captureSettings.gesture){ + return; + } + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + // http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html + // iOS removed the current touch from e.touches on "touchend" + // Need to look into e.changedTouches + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = (!Util.isNothing(touchEvent.changedTouches)) ? touchEvent.changedTouches : touchEvent.touches; + + this.touchEndPoint = this.getTouchPoint(touches); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onMouseDown + */ + onMouseDown: function(e){ + + e.preventDefault(); + + // No longer need touch events + Util.Events.remove(this.el, 'touchstart', this.mouseDownHandler); + Util.Events.remove(this.el, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.el, 'touchend', this.touchEndHandler); + + // Add move/up/out + if (this.captureSettings.move){ + Util.Events.add(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.add(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.add(this.el, 'mouseout', this.mouseOutHandler); + + this.touchStartTime = new Date(); + this.isGesture = false; + this.touchStartPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchStart, + point: this.touchStartPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onMouseMove + */ + onMouseMove: function(e){ + + e.preventDefault(); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMove, + point: Util.Events.getMousePosition(e), + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onMouseUp + */ + onMouseUp: function(e){ + + e.preventDefault(); + + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.remove(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.remove(this.el, 'mouseout', this.mouseOutHandler); + + this.touchEndPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onMouseOut + */ + onMouseOut: function(e){ + + /* + * http://blog.stchur.com/2007/03/15/mouseenter-and-mouseleave-events-for-firefox-and-other-non-ie-browsers/ + */ + var relTarget = e.relatedTarget; + if (this.el === relTarget || Util.DOM.isChildOf(relTarget, this.el)){ + return; + } + + e.preventDefault(); + + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.remove(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.remove(this.el, 'mouseout', this.mouseOutHandler); + + this.touchEndPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onGestureStart + */ + onGestureStart: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureStart, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onGestureChange + */ + onGestureChange: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureChange, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onGestureEnd + */ + onGestureEnd: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureEnd, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.EventTypes = { + + onLoad: 'onLoad', + onError: 'onError' + + }; + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.ImageClass = klass({ + + + + refObj: null, + imageEl: null, + src: null, + caption: null, + metaData: null, + imageLoadHandler: null, + imageErrorHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i; + + this.shrinkImage(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(refObj, src, caption, metaData){ + + this.refObj = refObj; + // This is needed. Webkit resolves the src + // value which means we can't compare against it in the load function + this.originalSrc = src; + this.src = src; + this.caption = caption; + this.metaData = metaData; + + this.imageEl = new window.Image(); + + this.imageLoadHandler = this.onImageLoad.bind(this); + this.imageErrorHandler = this.onImageError.bind(this); + + }, + + + + /* + * Function: load + */ + load: function(){ + + this.imageEl.originalSrc = Util.coalesce(this.imageEl.originalSrc, ''); + + if (this.imageEl.originalSrc === this.src){ + + if (this.imageEl.isError){ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + } + else{ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + } + return; + } + + this.imageEl.isError = false; + this.imageEl.isLoading = true; + this.imageEl.naturalWidth = null; + this.imageEl.naturalHeight = null; + this.imageEl.isLandscape = false; + this.imageEl.onload = this.imageLoadHandler; + this.imageEl.onerror = this.imageErrorHandler; + this.imageEl.onabort = this.imageErrorHandler; + this.imageEl.originalSrc = this.src; + this.imageEl.src = this.src; + + }, + + + + /* + * Function: shrinkImage + */ + shrinkImage: function(){ + + if (Util.isNothing(this.imageEl)){ + return; + } + + if (this.imageEl.src.indexOf(this.src) > -1){ + this.imageEl.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + if (!Util.isNothing(this.imageEl.parentNode)){ + Util.DOM.removeChild(this.imageEl, this.imageEl.parentNode); + } + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + this.imageEl.onload = null; + this.imageEl.naturalWidth = Util.coalesce(this.imageEl.naturalWidth, this.imageEl.width); + this.imageEl.naturalHeight = Util.coalesce(this.imageEl.naturalHeight, this.imageEl.height); + this.imageEl.isLandscape = (this.imageEl.naturalWidth > this.imageEl.naturalHeight); + this.imageEl.isLoading = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + this.imageEl.onload = null; + this.imageEl.onerror = null; + this.imageEl.onabort = null; + this.imageEl.isLoading = false; + this.imageEl.isError = true; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Cache'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Cache.Mode = { + + normal: 'normal', + aggressive: 'aggressive' + + }; + + + + PhotoSwipe.Cache.Functions = { + + /* + * Function: getImageSource + * Default method for returning an image's source + */ + getImageSource: function(el){ + return el.href; + }, + + + + /* + * Function: getImageCaption + * Default method for returning an image's caption + * Assumes the el is an anchor and the first child is the + * image. The returned value is the "alt" attribute of the + * image. + */ + getImageCaption: function(el){ + + if (el.nodeName === "IMG"){ + return Util.DOM.getAttribute(el, 'alt'); + } + var i, j, childEl; + for (i=0, j=el.childNodes.length; i height){ + height = Util.DOM.windowHeight(); + } + + } + else{ + + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + + } + + Util.DOM.setStyle(this.el, { + width: width, + height: height, + top: top + }); + + }, + + + + /* + * Function: fadeIn + */ + fadeIn: function(speed, callback){ + + this.resetPosition(); + + Util.DOM.setStyle(this.el, 'opacity', 0); + Util.DOM.show(this.el); + + Util.Animation.fadeIn(this.el, speed, callback); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Carousel.EventTypes = { + + onSlideByEnd: 'PhotoSwipeCarouselOnSlideByEnd', + onSlideshowStart: 'PhotoSwipeCarouselOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeCarouselOnSlideshowStop' + + }; + + + + PhotoSwipe.Carousel.CssClasses = { + carousel: 'ps-carousel', + content: 'ps-carousel-content', + item: 'ps-carousel-item', + itemLoading: 'ps-carousel-item-loading', + itemError: 'ps-carousel-item-error' + }; + + + + PhotoSwipe.Carousel.SlideByAction = { + previous: 'previous', + current: 'current', + next: 'next' + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = klass({ + + + + el: null, + contentEl: null, + settings: null, + cache: null, + slideByEndHandler: null, + currentCacheIndex: null, + isSliding: null, + isSlideshowActive: null, + lastSlideByAction: null, + touchStartPoint: null, + touchStartPosition: null, + imageLoadHandler: null, + imageErrorHandler: null, + slideshowTimeout: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i, j; + + for (i=0, j=this.cache.images.length; i 0){ + Util.DOM.setStyle(itemEl, { + marginRight: this.settings.margin + 'px' + }); + } + + Util.DOM.appendChild(itemEl, this.contentEl); + + } + + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + }, + + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, height, top, itemWidth, itemEls, contentWidth, i, j, itemEl, imageEl; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + } + + itemWidth = (this.settings.margin > 0) ? width + this.settings.margin : width; + itemEls = Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + contentWidth = itemWidth * itemEls.length; + + + // Set the height and width to fill the document + Util.DOM.setStyle(this.el, { + top: top, + width: width, + height: height + }); + + + // Set the height and width of the content el + Util.DOM.setStyle(this.contentEl, { + width: contentWidth, + height: height + }); + + + // Set the height and width of item elements + for (i=0, j=itemEls.length; i maxWidth){ + scale = maxWidth / newWidth; + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + if (newHeight > maxHeight){ + scale = maxHeight / newHeight; + newHeight = Math.round(newHeight * scale); + newWidth = Math.round(newWidth * scale); + } + + } + else{ + + if (imageEl.isLandscape) { + // Ensure the width fits the screen + scale = maxWidth / imageEl.naturalWidth; + } + else { + // Ensure the height fits the screen + scale = maxHeight / imageEl.naturalHeight; + } + + newWidth = Math.round(imageEl.naturalWidth * scale); + newHeight = Math.round(imageEl.naturalHeight * scale); + + if (this.settings.imageScaleMethod === 'zoom'){ + + scale = 1; + if (newHeight < maxHeight){ + scale = maxHeight /newHeight; + } + else if (newWidth < maxWidth){ + scale = maxWidth /newWidth; + } + + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + } + else if (this.settings.imageScaleMethod === 'fit') { + // Rescale again to ensure full image fits into the viewport + scale = 1; + if (newWidth > maxWidth) { + scale = maxWidth / newWidth; + } + else if (newHeight > maxHeight) { + scale = maxHeight / newHeight; + } + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + } + + } + + newTop = Math.round( ((maxHeight - newHeight) / 2) ) + 'px'; + newLeft = Math.round( ((maxWidth - newWidth) / 2) ) + 'px'; + + Util.DOM.setStyle(imageEl, { + position: 'absolute', + width: newWidth, + height: newHeight, + top: newTop, + left: newLeft, + display: 'block' + }); + + }, + + + + /* + * Function: setContentLeftPosition + */ + setContentLeftPosition: function(){ + + var width, itemEls, left; + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + } + else{ + width = Util.DOM.width(this.settings.target); + } + + itemEls = this.getItemEls(); + left = 0; + + if (this.settings.loop){ + left = (width + this.settings.margin) * -1; + } + else{ + + if (this.currentCacheIndex === this.cache.images.length-1){ + left = ((itemEls.length-1) * (width + this.settings.margin)) * -1; + } + else if (this.currentCacheIndex > 0){ + left = (width + this.settings.margin) * -1; + } + + } + + Util.DOM.setStyle(this.contentEl, { + left: left + 'px' + }); + + }, + + + + /* + * Function: + */ + show: function(index){ + + this.currentCacheIndex = index; + this.resetPosition(); + this.setImages(false); + Util.DOM.show(this.el); + + Util.Animation.resetTranslate(this.contentEl); + var + itemEls = this.getItemEls(), + i, j; + for (i=0, j=itemEls.length; i this.cache.images.length-1){ + nextCacheIndex = 0; + } + if (previousCacheIndex < 0){ + previousCacheIndex = this.cache.images.length-1; + } + + cacheImages = this.cache.getImages([ + previousCacheIndex, + this.currentCacheIndex, + nextCacheIndex + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + + } + else{ + + if (itemEls.length === 1){ + if (!ignoreCurrent){ + // Current + cacheImages = this.cache.getImages([ + this.currentCacheIndex + ]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + } + else if (itemEls.length === 2){ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + else{ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1, + this.currentCacheIndex + 2 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + else if (this.currentCacheIndex === this.cache.images.length-1){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 2, + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + + } + + }, + + + + /* + * Function: addCacheImageToItemEl + */ + addCacheImageToItemEl: function(cacheImage, itemEl){ + + Util.DOM.removeClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemError); + Util.DOM.addClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemLoading); + + Util.DOM.removeChildren(itemEl); + + Util.DOM.setStyle(cacheImage.imageEl, { + display: 'none' + }); + Util.DOM.appendChild(cacheImage.imageEl, itemEl); + + Util.Animation.resetTranslate(cacheImage.imageEl); + + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + cacheImage.load(); + + }, + + + + /* + * Function: slideCarousel + */ + slideCarousel: function(point, action, speed){ + + if (this.isSliding){ + return; + } + + var width, diffX, slideBy; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth() + this.settings.margin; + } + else{ + width = Util.DOM.width(this.settings.target) + this.settings.margin; + } + + speed = Util.coalesce(speed, this.settings.slideSpeed); + + if (window.Math.abs(diffX) < 1){ + return; + } + + + switch (action){ + + case Util.TouchElement.ActionTypes.swipeLeft: + + slideBy = width * -1; + break; + + case Util.TouchElement.ActionTypes.swipeRight: + + slideBy = width; + break; + + default: + + diffX = point.x - this.touchStartPoint.x; + + if (window.Math.abs(diffX) > width / 2){ + slideBy = (diffX > 0) ? width : width * -1; + } + else{ + slideBy = 0; + } + break; + + } + + if (slideBy < 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.next; + } + else if (slideBy > 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.previous; + } + else{ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + + // Check for non-looping carousels + // If we are at the start or end, spring back to the current item element + if (!this.settings.loop){ + if ( (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous && this.currentCacheIndex === 0 ) || (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next && this.currentCacheIndex === this.cache.images.length-1) ){ + slideBy = 0; + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + } + + this.isSliding = true; + this.doSlideCarousel(slideBy, speed); + + }, + + + + /* + * Function: + */ + moveCarousel: function(point){ + + if (this.isSliding){ + return; + } + + if (!this.settings.enableDrag){ + return; + } + + this.doMoveCarousel(point.x - this.touchStartPoint.x); + + }, + + + + /* + * Function: getItemEls + */ + getItemEls: function(){ + + return Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeRight, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: next + */ + next: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: slideshowNext + */ + slideshowNext: function(){ + + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft); + + }, + + + + + /* + * Function: startSlideshow + */ + startSlideshow: function(){ + + this.stopSlideshow(); + + this.isSlideshowActive = true; + + this.slideshowTimeout = window.setTimeout(this.slideshowNext.bind(this), this.settings.slideshowDelay); + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: stopSlideshow + */ + stopSlideshow: function(){ + + if (!Util.isNothing(this.slideshowTimeout)){ + + window.clearTimeout(this.slideshowTimeout); + this.slideshowTimeout = null; + this.isSlideshowActive = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStop, + target: this + }); + + } + + }, + + + + /* + * Function: onSlideByEnd + */ + onSlideByEnd: function(e){ + + if (Util.isNothing(this.isSliding)){ + return; + } + + var itemEls = this.getItemEls(); + + this.isSliding = false; + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + this.currentCacheIndex = this.currentCacheIndex + 1; + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + this.currentCacheIndex = this.currentCacheIndex - 1; + } + + if (this.settings.loop){ + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + + if (this.currentCacheIndex < 0){ + this.currentCacheIndex = this.cache.images.length - 1; + } + else if (this.currentCacheIndex === this.cache.images.length){ + this.currentCacheIndex = 0; + } + + } + else{ + + if (this.cache.images.length > 3){ + + if (this.currentCacheIndex > 1 && this.currentCacheIndex < this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === 1){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + } + + } + + + } + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.setContentLeftPosition(); + this.setImages(true); + } + + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideByEnd, + target: this, + action: this.lastSlideByAction, + cacheIndex: this.currentCacheIndex + }); + + + if (this.isSlideshowActive){ + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.startSlideshow(); + } + else{ + this.stopSlideshow(); + } + + } + + + }, + + + + /* + * Function: onTouch + */ + onTouch: function(action, point){ + + this.stopSlideshow(); + + switch(action){ + + case Util.TouchElement.ActionTypes.touchStart: + this.touchStartPoint = point; + this.touchStartPosition = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.moveCarousel(point); + break; + + case Util.TouchElement.ActionTypes.touchMoveEnd: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + this.slideCarousel(point, action); + break; + + case Util.TouchElement.ActionTypes.tap: + break; + + case Util.TouchElement.ActionTypes.doubleTap: + break; + + + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + this.resetImagePosition(cacheImage.imageEl); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + Util.DOM.addClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemError); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util, TouchElement){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = PhotoSwipe.Carousel.CarouselClass.extend({ + + + /* + * Function: getStartingPos + */ + getStartingPos: function(){ + + var startingPos = this.touchStartPosition; + + if (Util.isNothing(startingPos)){ + startingPos = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + } + + return startingPos; + + }, + + + + /* + * Function: doMoveCarousel + */ + doMoveCarousel: function(xVal){ + + var style; + + if (Util.Browser.isCSSTransformSupported){ + + style = {}; + + style[Util.Animation._transitionPrefix + 'Property'] = 'all'; + style[Util.Animation._transitionPrefix + 'Duration'] = ''; + style[Util.Animation._transitionPrefix + 'TimingFunction'] = ''; + style[Util.Animation._transitionPrefix + 'Delay'] = '0'; + style[Util.Animation._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + xVal + 'px, 0px, 0px)' : 'translate(' + xVal + 'px, 0px)'; + + Util.DOM.setStyle(this.contentEl, style); + + } + else if (!Util.isNothing(window.jQuery)){ + + + window.jQuery(this.contentEl).stop().css('left', this.getStartingPos().x + xVal + 'px'); + + } + + }, + + + + /* + * Function: doSlideCarousel + */ + doSlideCarousel: function(xVal, speed){ + + var animateProps, transform; + + if (speed <= 0){ + + this.slideByEndHandler(); + return; + + } + + + if (Util.Browser.isCSSTransformSupported){ + + transform = Util.coalesce(this.contentEl.style.webkitTransform, this.contentEl.style.MozTransform, this.contentEl.style.transform, ''); + if (transform.indexOf('translate3d(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + else if (transform.indexOf('translate(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + + Util.Animation.slideBy(this.contentEl, xVal, 0, speed, this.slideByEndHandler, this.settings.slideTimingFunction); + + } + else if (!Util.isNothing(window.jQuery)){ + + animateProps = { + left: this.getStartingPos().x + xVal + 'px' + }; + + if (this.settings.animationTimingFunction === 'ease-out'){ + this.settings.animationTimingFunction = 'easeOutQuad'; + } + + if ( Util.isNothing(window.jQuery.easing[this.settings.animationTimingFunction]) ){ + this.settings.animationTimingFunction = 'linear'; + } + + window.jQuery(this.contentEl).animate( + animateProps, + this.settings.slideSpeed, + this.settings.animationTimingFunction, + this.slideByEndHandler + ); + + } + + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.TouchElement +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.CssClasses = { + toolbar: 'ps-toolbar', + toolbarContent: 'ps-toolbar-content', + toolbarTop: 'ps-toolbar-top', + caption: 'ps-caption', + captionBottom: 'ps-caption-bottom', + captionContent: 'ps-caption-content', + close: 'ps-toolbar-close', + play: 'ps-toolbar-play', + previous: 'ps-toolbar-previous', + previousDisabled: 'ps-toolbar-previous-disabled', + next: 'ps-toolbar-next', + nextDisabled: 'ps-toolbar-next-disabled' + }; + + + + PhotoSwipe.Toolbar.ToolbarAction = { + close: 'close', + play: 'play', + next: 'next', + previous: 'previous', + none: 'none' + }; + + + + PhotoSwipe.Toolbar.EventTypes = { + onTap: 'PhotoSwipeToolbarOnClick', + onBeforeShow: 'PhotoSwipeToolbarOnBeforeShow', + onShow: 'PhotoSwipeToolbarOnShow', + onBeforeHide: 'PhotoSwipeToolbarOnBeforeHide', + onHide: 'PhotoSwipeToolbarOnHide' + }; + + + + PhotoSwipe.Toolbar.getToolbar = function(){ + + return '
'; + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.ToolbarClass = klass({ + + + + toolbarEl: null, + closeEl: null, + playEl: null, + previousEl: null, + nextEl: null, + captionEl: null, + captionContentEl: null, + currentCaption: null, + settings: null, + cache: null, + timeout: null, + isVisible: null, + fadeOutHandler: null, + touchStartHandler: null, + touchMoveHandler: null, + clickHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.clearTimeout(); + + this.removeEventHandlers(); + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + Util.DOM.removeChild(this.toolbarEl, this.toolbarEl.parentNode); + Util.DOM.removeChild(this.captionEl, this.captionEl.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(cache, options){ + + var cssClass; + + this.settings = options; + this.cache = cache; + this.isVisible = false; + + this.fadeOutHandler = this.onFadeOut.bind(this); + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.clickHandler = this.onClick.bind(this); + + + cssClass = PhotoSwipe.Toolbar.CssClasses.toolbar; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.toolbarTop; + } + + + // Toolbar + this.toolbarEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + this.settings.getToolbar() + ); + + + Util.DOM.setStyle(this.toolbarEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.toolbarEl); + } + else{ + Util.DOM.appendChild(this.toolbarEl, this.settings.target); + } + Util.DOM.hide(this.toolbarEl); + + this.closeEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.close, this.toolbarEl)[0]; + if (this.settings.preventHide && !Util.isNothing(this.closeEl)){ + Util.DOM.hide(this.closeEl); + } + + this.playEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.play, this.toolbarEl)[0]; + if (this.settings.preventSlideshow && !Util.isNothing(this.playEl)){ + Util.DOM.hide(this.playEl); + } + + this.nextEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.next, this.toolbarEl)[0]; + this.previousEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.previous, this.toolbarEl)[0]; + + + // Caption + cssClass = PhotoSwipe.Toolbar.CssClasses.caption; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.captionBottom; + } + + this.captionEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + '' + ); + Util.DOM.setStyle(this.captionEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.captionEl); + } + else{ + Util.DOM.appendChild(this.captionEl, this.settings.target); + } + Util.DOM.hide(this.captionEl); + + this.captionContentEl = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.Toolbar.CssClasses.captionContent + }, + '' + ); + Util.DOM.appendChild(this.captionContentEl, this.captionEl); + + this.addEventHandlers(); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, toolbarTop, captionTop; + + if (this.settings.target === window){ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = Util.DOM.windowScrollTop(); + captionTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.captionEl); + } + else { + toolbarTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.toolbarEl); + captionTop = Util.DOM.windowScrollTop(); + } + width = Util.DOM.windowWidth(); + } + else{ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = '0'; + captionTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.captionEl); + } + else{ + toolbarTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.toolbarEl); + captionTop = 0; + } + width = Util.DOM.width(this.settings.target); + } + + Util.DOM.setStyle(this.toolbarEl, { + top: toolbarTop + 'px', + width: width + }); + + Util.DOM.setStyle(this.captionEl, { + top: captionTop + 'px', + width: width + }); + }, + + + + /* + * Function: toggleVisibility + */ + toggleVisibility: function(index){ + + if (this.isVisible){ + this.fadeOut(); + } + else{ + this.show(index); + } + + }, + + + + /* + * Function: show + */ + show: function(index){ + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + this.resetPosition(); + this.setToolbarStatus(index); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeShow, + target: this + }); + + this.showToolbar(); + this.setCaption(index); + this.showCaption(); + + this.isVisible = true; + + this.setTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onShow, + target: this + }); + + }, + + + + /* + * Function: setTimeout + */ + setTimeout: function(){ + + if (this.settings.captionAndToolbarAutoHideDelay > 0){ + // Set a timeout to hide the toolbar + this.clearTimeout(); + this.timeout = window.setTimeout(this.fadeOut.bind(this), this.settings.captionAndToolbarAutoHideDelay); + } + + }, + + + + /* + * Function: clearTimeout + */ + clearTimeout: function(){ + + if (!Util.isNothing(this.timeout)){ + window.clearTimeout(this.timeout); + this.timeout = null; + } + + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(){ + + this.clearTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeHide, + target: this + }); + + Util.Animation.fadeOut(this.toolbarEl, this.settings.fadeOutSpeed); + Util.Animation.fadeOut(this.captionEl, this.settings.fadeOutSpeed, this.fadeOutHandler); + + this.isVisible = false; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.add(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.add(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.add(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.remove(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.remove(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: handleTap + */ + handleTap: function(e){ + + this.clearTimeout(); + + var action; + + if (e.target === this.nextEl || Util.DOM.isChildOf(e.target, this.nextEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.next; + } + else if (e.target === this.previousEl || Util.DOM.isChildOf(e.target, this.previousEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.previous; + } + else if (e.target === this.closeEl || Util.DOM.isChildOf(e.target, this.closeEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.close; + } + else if (e.target === this.playEl || Util.DOM.isChildOf(e.target, this.playEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.play; + } + + this.setTimeout(); + + if (Util.isNothing(action)){ + action = PhotoSwipe.Toolbar.ToolbarAction.none; + } + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onTap, + target: this, + action: action, + tapTarget: e.target + }); + + }, + + + + /* + * Function: setCaption + */ + setCaption: function(index){ + + Util.DOM.removeChildren(this.captionContentEl); + + this.currentCaption = Util.coalesce(this.cache.images[index].caption, '\u00A0'); + + if (Util.isObject(this.currentCaption)){ + Util.DOM.appendChild(this.currentCaption, this.captionContentEl); + } + else{ + if (this.currentCaption === ''){ + this.currentCaption = '\u00A0'; + } + Util.DOM.appendText(this.currentCaption, this.captionContentEl); + } + + this.currentCaption = (this.currentCaption === '\u00A0') ? '' : this.currentCaption; + this.resetPosition(); + + }, + + + + /* + * Function: showToolbar + */ + showToolbar: function(){ + + Util.DOM.setStyle(this.toolbarEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.toolbarEl); + + }, + + + + /* + * Function: showCaption + */ + showCaption: function(){ + + if (this.currentCaption === '' || this.captionContentEl.childNodes.length < 1){ + // Empty caption + if (!this.settings.captionAndToolbarShowEmptyCaptions){ + Util.DOM.hide(this.captionEl); + return; + } + } + Util.DOM.setStyle(this.captionEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.captionEl); + + }, + + + + /* + * Function: setToolbarStatus + */ + setToolbarStatus: function(index){ + + if (this.settings.loop){ + return; + } + + Util.DOM.removeClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + Util.DOM.removeClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + + if (index > 0 && index < this.cache.images.length-1){ + return; + } + + if (index === 0){ + if (!Util.isNothing(this.previousEl)){ + Util.DOM.addClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + } + } + + if (index === this.cache.images.length-1){ + if (!Util.isNothing(this.nextEl)){ + Util.DOM.addClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + } + } + + }, + + + + /* + * Function: onFadeOut + */ + onFadeOut: function(){ + + Util.DOM.hide(this.toolbarEl); + Util.DOM.hide(this.captionEl); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onHide, + target: this + }); + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + e.preventDefault(); + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + this.handleTap(e); + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + e.preventDefault(); + + }, + + + + /* + * Function: onClick + */ + onClick: function(e){ + + e.preventDefault(); + this.handleTap(e); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.UILayer.CssClasses = { + uiLayer: 'ps-uilayer' + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.UILayer.UILayerClass = Util.TouchElement.TouchElementClass.extend({ + + + + el: null, + settings: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options){ + + this.settings = options; + + // Main container + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.UILayer.CssClasses.uiLayer + }, + '' + ); + Util.DOM.setStyle(this.el, { + display: 'block', + position: 'absolute', + left: 0, + top: 0, + overflow: 'hidden', + zIndex: this.settings.zIndex, + opacity: 0 + }); + Util.DOM.hide(this.el); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + this.supr(this.el, { + swipe: true, + move: true, + gesture: Util.Browser.iOS, + doubleTap: true, + preventDefaultTouchEvents: this.settings.preventDefaultTouchEvents + }); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + // Set the height and width to fill the document + if (this.settings.target === window){ + Util.DOM.setStyle(this.el, { + top: Util.DOM.windowScrollTop() + 'px', + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }); + } + else{ + Util.DOM.setStyle(this.el, { + top: '0px', + width: Util.DOM.width(this.settings.target), + height: Util.DOM.height(this.settings.target) + }); + } + + }, + + + + /* + * Function: show + */ + show: function(){ + + this.resetPosition(); + Util.DOM.show(this.el); + this.addEventHandlers(); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + this.supr(); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + this.supr(); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.ZoomPanRotate.CssClasses = { + zoomPanRotate: 'ps-zoom-pan-rotate' + }; + + + PhotoSwipe.ZoomPanRotate.EventTypes = { + + onTransform: 'PhotoSwipeZoomPanRotateOnTransform' + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.ZoomPanRotate.ZoomPanRotateClass = klass({ + + el: null, + settings: null, + containerEl: null, + imageEl: null, + transformSettings: null, + panStartingPoint: null, + transformEl: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options, cacheImage, uiLayer){ + + var parentEl, width, height, top; + + this.settings = options; + + if (this.settings.target === window){ + parentEl = document.body; + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + parentEl = this.settings.target; + width = Util.DOM.width(parentEl); + height = Util.DOM.height(parentEl); + top = '0px'; + } + + this.imageEl = cacheImage.imageEl.cloneNode(false); + Util.DOM.setStyle(this.imageEl, { + + zIndex: 1 + + }); + + this.transformSettings = { + + startingScale: 1.0, + scale: 1.0, + startingRotation: 0, + rotation: 0, + startingTranslateX: 0, + startingTranslateY: 0, + translateX: 0, + translateY: 0 + + }; + + + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.ZoomPanRotate.CssClasses.zoomPanRotate + }, + '' + ); + Util.DOM.setStyle(this.el, { + left: 0, + top: top, + position: 'absolute', + width: width, + height: height, + zIndex: this.settings.zIndex, + display: 'block' + }); + + Util.DOM.insertBefore(this.el, uiLayer.el, parentEl); + + if (Util.Browser.iOS){ + this.containerEl = Util.DOM.createElement('div','',''); + Util.DOM.setStyle(this.containerEl, { + left: 0, + top: 0, + width: width, + height: height, + position: 'absolute', + zIndex: 1 + }); + Util.DOM.appendChild(this.imageEl, this.containerEl); + Util.DOM.appendChild(this.containerEl, this.el); + Util.Animation.resetTranslate(this.containerEl); + Util.Animation.resetTranslate(this.imageEl); + this.transformEl = this.containerEl; + } + else{ + Util.DOM.appendChild(this.imageEl, this.el); + this.transformEl = this.imageEl; + } + + }, + + + + /* + * Function: setStartingTranslateFromCurrentTransform + */ + setStartingTranslateFromCurrentTransform: function(){ + + var + transformValue = Util.coalesce(this.transformEl.style.webkitTransform, this.transformEl.style.MozTransform, this.transformEl.style.transform), + transformExploded; + + if (!Util.isNothing(transformValue)){ + + transformExploded = transformValue.match( /translate\((.*?)\)/ ); + + if (!Util.isNothing(transformExploded)){ + + transformExploded = transformExploded[1].split(', '); + this.transformSettings.startingTranslateX = window.parseInt(transformExploded[0], 10); + this.transformSettings.startingTranslateY = window.parseInt(transformExploded[1], 10); + + } + + } + + }, + + + + /* + * Function: getScale + */ + getScale: function(scaleValue){ + + var scale = this.transformSettings.startingScale * scaleValue; + + if (this.settings.minUserZoom !== 0 && scale < this.settings.minUserZoom){ + scale = this.settings.minUserZoom; + } + else if (this.settings.maxUserZoom !== 0 && scale > this.settings.maxUserZoom){ + scale = this.settings.maxUserZoom; + } + + return scale; + + }, + + + + /* + * Function: setStartingScaleAndRotation + */ + setStartingScaleAndRotation: function(scaleValue, rotationValue){ + + this.transformSettings.startingScale = this.getScale(scaleValue); + + this.transformSettings.startingRotation = + (this.transformSettings.startingRotation + rotationValue) % 360; + + }, + + + + /* + * Function: zoomRotate + */ + zoomRotate: function(scaleValue, rotationValue){ + + this.transformSettings.scale = this.getScale(scaleValue); + + this.transformSettings.rotation = + this.transformSettings.startingRotation + rotationValue; + + this.applyTransform(); + + }, + + + + /* + * Function: panStart + */ + panStart: function(point){ + + this.setStartingTranslateFromCurrentTransform(); + + this.panStartingPoint = { + x: point.x, + y: point.y + }; + + }, + + + + /* + * Function: pan + */ + pan: function(point){ + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale , + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + this.transformSettings.startingTranslateX + dxScaleAdjust; + + this.transformSettings.translateY = + this.transformSettings.startingTranslateY + dyScaleAdjust; + + this.applyTransform(); + + }, + + + + /* + * Function: zoomAndPanToPoint + */ + zoomAndPanToPoint: function(scaleValue, point){ + + + if (this.settings.target === window){ + + this.panStart({ + x: Util.DOM.windowWidth() / 2, + y: Util.DOM.windowHeight() / 2 + }); + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale, + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + (this.transformSettings.startingTranslateX + dxScaleAdjust) * -1; + + this.transformSettings.translateY = + (this.transformSettings.startingTranslateY + dyScaleAdjust) * -1; + + } + + + this.setStartingScaleAndRotation(scaleValue, 0); + this.transformSettings.scale = this.transformSettings.startingScale; + + this.transformSettings.rotation = 0; + + this.applyTransform(); + + }, + + + + /* + * Function: applyTransform + */ + applyTransform: function(){ + + var + rotationDegs = this.transformSettings.rotation % 360, + translateX = window.parseInt(this.transformSettings.translateX, 10), + translateY = window.parseInt(this.transformSettings.translateY, 10), + transform = 'scale(' + this.transformSettings.scale + ') rotate(' + rotationDegs + 'deg) translate(' + translateX + 'px, ' + translateY + 'px)'; + + Util.DOM.setStyle(this.transformEl, { + webkitTransform: transform, + MozTransform: transform, + msTransform: transform, + transform: transform + }); + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, + scale: this.transformSettings.scale, + rotation: this.transformSettings.rotation, + rotationDegs: rotationDegs, + translateX: translateX, + translateY: translateY + }); + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, Util){ + + + Util.registerNamespace('Code.PhotoSwipe'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.CssClasses = { + buildingBody: 'ps-building', + activeBody: 'ps-active' + }; + + + + PhotoSwipe.EventTypes = { + + onBeforeShow: 'PhotoSwipeOnBeforeShow', + onShow: 'PhotoSwipeOnShow', + onBeforeHide: 'PhotoSwipeOnBeforeHide', + onHide: 'PhotoSwipeOnHide', + onDisplayImage: 'PhotoSwipeOnDisplayImage', + onResetPosition: 'PhotoSwipeOnResetPosition', + onSlideshowStart: 'PhotoSwipeOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeOnSlideshowStop', + onTouch: 'PhotoSwipeOnTouch', + onBeforeCaptionAndToolbarShow: 'PhotoSwipeOnBeforeCaptionAndToolbarShow', + onCaptionAndToolbarShow: 'PhotoSwipeOnCaptionAndToolbarShow', + onBeforeCaptionAndToolbarHide: 'PhotoSwipeOnBeforeCaptionAndToolbarHide', + onCaptionAndToolbarHide: 'PhotoSwipeOnCaptionAndToolbarHide', + onToolbarTap: 'PhotoSwipeOnToolbarTap', + onBeforeZoomPanRotateShow: 'PhotoSwipeOnBeforeZoomPanRotateShow', + onZoomPanRotateShow: 'PhotoSwipeOnZoomPanRotateShow', + onBeforeZoomPanRotateHide: 'PhotoSwipeOnBeforeZoomPanRotateHide', + onZoomPanRotateHide: 'PhotoSwipeOnZoomPanRotateHide', + onZoomPanRotateTransform: 'PhotoSwipeOnZoomPanRotateTransform' + + }; + + + + PhotoSwipe.instances = []; + PhotoSwipe.activeInstances = []; + + + + /* + * Function: Code.PhotoSwipe.setActivateInstance + */ + PhotoSwipe.setActivateInstance = function(instance){ + + // Can only have one instance per target (i.e. window or div) + var index = Util.arrayIndexOf(instance.settings.target, PhotoSwipe.activeInstances, 'target'); + if (index > -1){ + throw 'Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target'; + } + PhotoSwipe.activeInstances.push({ + target: instance.settings.target, + instance: instance + }); + + }; + + + + /* + * Function: Code.PhotoSwipe.unsetActivateInstance + */ + PhotoSwipe.unsetActivateInstance = function(instance){ + + var index = Util.arrayIndexOf(instance, PhotoSwipe.activeInstances, 'instance'); + PhotoSwipe.activeInstances.splice(index, 1); + + }; + + + + /* + * Function: Code.PhotoSwipe.attach + */ + PhotoSwipe.attach = function(images, options, id){ + + var i, j, instance, image; + + instance = PhotoSwipe.createInstance(images, options, id); + + // Add click event handlers if applicable + for (i=0, j=images.length; i= 2.1){ + this.isBackEventSupported = true; + } + } + + if (!this.isBackEventSupported){ + this.isBackEventSupported = Util.objectHasProperty(window, 'onhashchange'); + } + + this.settings = { + + // General + fadeInSpeed: 250, + fadeOutSpeed: 250, + preventHide: false, + preventSlideshow: false, + zIndex: 1000, + backButtonHideEnabled: true, + enableKeyboard: true, + enableMouseWheel: true, + mouseWheelSpeed: 350, + autoStartSlideshow: false, + jQueryMobile: ( !Util.isNothing(window.jQuery) && !Util.isNothing(window.jQuery.mobile) ), + jQueryMobileDialogHash: '&ui-state=dialog', + enableUIWebViewRepositionTimeout: false, + uiWebViewResetPositionDelay: 500, + target: window, + preventDefaultTouchEvents: true, + + + // Carousel + loop: true, + slideSpeed: 250, + nextPreviousSlideSpeed: 0, + enableDrag: true, + swipeThreshold: 50, + swipeTimeThreshold: 250, + slideTimingFunction: 'ease-out', + slideshowDelay: 3000, + doubleTapSpeed: 250, + margin: 20, + imageScaleMethod: 'fit', // Either "fit", "fitNoUpscale" or "zoom", + + + // Toolbar + captionAndToolbarHide: false, + captionAndToolbarFlipPosition: false, + captionAndToolbarAutoHideDelay: 5000, + captionAndToolbarOpacity: 0.8, + captionAndToolbarShowEmptyCaptions: true, + getToolbar: PhotoSwipe.Toolbar.getToolbar, + + + // ZoomPanRotate + allowUserZoom: true, + allowRotationOnUserZoom: false, + maxUserZoom: 5.0, + minUserZoom: 0.5, + doubleTapZoomLevel: 2.5, + + + // Cache + getImageSource: PhotoSwipe.Cache.Functions.getImageSource, + getImageCaption: PhotoSwipe.Cache.Functions.getImageCaption, + getImageMetaData: PhotoSwipe.Cache.Functions.getImageMetaData, + cacheMode: PhotoSwipe.Cache.Mode.normal + + }; + + Util.extend(this.settings, options); + + if (this.settings.target !== window){ + targetPosition = Util.DOM.getStyle(this.settings.target, 'position'); + if (targetPosition !== 'relative' || targetPosition !== 'absolute'){ + Util.DOM.setStyle(this.settings.target, 'position', 'relative'); + } + } + + if (this.settings.target !== window){ + this.isBackEventSupported = false; + this.settings.backButtonHideEnabled = false; + } + else{ + if (this.settings.preventHide){ + this.settings.backButtonHideEnabled = false; + } + } + + this.cache = new Cache.CacheClass(images, this.settings); + + }, + + + + /* + * Function: show + */ + show: function(obj){ + + var i, j; + + this._isResettingPosition = false; + this.backButtonClicked = false; + + // Work out what the starting index is + if (Util.isNumber(obj)){ + this.currentIndex = obj; + } + else{ + + this.currentIndex = -1; + for (i=0, j=this.originalImages.length; i this.originalImages.length-1){ + throw "Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range"; + } + + // Store a reference to the current window dimensions + // Use this later to double check that a window has actually + // been resized. + this.isAlreadyGettingPage = this.getWindowDimensions(); + + // Set this instance to be the active instance + PhotoSwipe.setActivateInstance(this); + + this.windowDimensions = this.getWindowDimensions(); + + // Create components + if (this.settings.target === window){ + Util.DOM.addClass(window.document.body, PhotoSwipe.CssClasses.buildingBody); + } + else{ + Util.DOM.addClass(this.settings.target, PhotoSwipe.CssClasses.buildingBody); + } + this.createComponents(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeShow, + target: this + }); + + // Fade in the document overlay + this.documentOverlay.fadeIn(this.settings.fadeInSpeed, this.onDocumentOverlayFadeIn.bind(this)); + + }, + + + + /* + * Function: getWindowDimensions + */ + getWindowDimensions: function(){ + + return { + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }; + + }, + + + + /* + * Function: createComponents + */ + createComponents: function(){ + + this.documentOverlay = new DocumentOverlay.DocumentOverlayClass(this.settings); + this.carousel = new Carousel.CarouselClass(this.cache, this.settings); + this.uiLayer = new UILayer.UILayerClass(this.settings); + if (!this.settings.captionAndToolbarHide){ + this.toolbar = new Toolbar.ToolbarClass(this.cache, this.settings); + } + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + if (this._isResettingPosition){ + return; + } + + var newWindowDimensions = this.getWindowDimensions(); + if (!Util.isNothing(this.windowDimensions)){ + if (newWindowDimensions.width === this.windowDimensions.width && newWindowDimensions.height === this.windowDimensions.height){ + // This was added as a fudge for iOS + return; + } + } + + this._isResettingPosition = true; + + this.windowDimensions = newWindowDimensions; + + this.destroyZoomPanRotate(); + + this.documentOverlay.resetPosition(); + this.carousel.resetPosition(); + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.resetPosition(); + } + + this.uiLayer.resetPosition(); + + this._isResettingPosition = false; + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onResetPosition, + target: this + }); + + }, + + + + /* + * Function: addEventHandler + */ + addEventHandler: function(type, handler){ + + Util.Events.add(this, type, handler); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.windowOrientationChangeHandler)){ + + this.windowOrientationChangeHandler = this.onWindowOrientationChange.bind(this); + this.windowScrollHandler = this.onWindowScroll.bind(this); + this.keyDownHandler = this.onKeyDown.bind(this); + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + this.uiLayerTouchHandler = this.onUILayerTouch.bind(this); + this.carouselSlideByEndHandler = this.onCarouselSlideByEnd.bind(this); + this.carouselSlideshowStartHandler = this.onCarouselSlideshowStart.bind(this); + this.carouselSlideshowStopHandler = this.onCarouselSlideshowStop.bind(this); + this.toolbarTapHandler = this.onToolbarTap.bind(this); + this.toolbarBeforeShowHandler = this.onToolbarBeforeShow.bind(this); + this.toolbarShowHandler = this.onToolbarShow.bind(this); + this.toolbarBeforeHideHandler = this.onToolbarBeforeHide.bind(this); + this.toolbarHideHandler = this.onToolbarHide.bind(this); + this.mouseWheelHandler = this.onMouseWheel.bind(this); + this.zoomPanRotateTransformHandler = this.onZoomPanRotateTransform.bind(this); + + } + + // Set window handlers + if (Util.Browser.android){ + // For some reason, resize was more stable than orientationchange in Android + this.orientationEventName = 'resize'; + } + else if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.add(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + else{ + var supportsOrientationChange = !Util.isNothing(window.onorientationchange); + this.orientationEventName = supportsOrientationChange ? 'orientationchange' : 'resize'; + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.add(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + if (this.settings.target === window){ + Util.Events.add(window, 'scroll', this.windowScrollHandler); + } + + if (this.settings.enableKeyboard){ + Util.Events.add(window.document, 'keydown', this.keyDownHandler); + } + + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + + if (this.settings.jQueryMobile){ + window.location.hash = this.settings.jQueryMobileDialogHash; + } + else{ + this.currentHistoryHashValue = 'PhotoSwipe' + new Date().getTime().toString(); + window.location.hash = this.currentHistoryHashValue; + } + + Util.Events.add(window, 'hashchange', this.windowHashChangeHandler); + + } + + if (this.settings.enableMouseWheel){ + Util.Events.add(window, 'mousewheel', this.mouseWheelHandler); + } + + Util.Events.add(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + + if (!Util.isNothing(this.toolbar)){ + Util.Events.add(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.remove(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.remove(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + + Util.Events.remove(window, 'scroll', this.windowScrollHandler); + + if (this.settings.enableKeyboard){ + Util.Events.remove(window.document, 'keydown', this.keyDownHandler); + } + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler); + } + + if (this.settings.enableMouseWheel){ + Util.Events.remove(window, 'mousewheel', this.mouseWheelHandler); + } + + if (!Util.isNothing(this.uiLayer)){ + Util.Events.remove(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + + /* + * Function: hide + */ + hide: function(){ + + if (this.settings.preventHide){ + return; + } + + if (Util.isNothing(this.documentOverlay)){ + throw "Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden"; + } + + if (!Util.isNothing(this.hiding)){ + return; + } + + this.clearUIWebViewResetPositionTimeout(); + + this.destroyZoomPanRotate(); + + this.removeEventHandlers(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeHide, + target: this + }); + + this.uiLayer.dispose(); + this.uiLayer = null; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.dispose(); + this.toolbar = null; + } + + this.carousel.dispose(); + this.carousel = null; + + Util.DOM.removeClass(window.document.body, PhotoSwipe.CssClasses.activeBody); + + this.documentOverlay.dispose(); + this.documentOverlay = null; + + this._isResettingPosition = false; + + // Deactive this instance + PhotoSwipe.unsetActivateInstance(this); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onHide, + target: this + }); + + this.goBackInHistory(); + + }, + + + + /* + * Function: goBackInHistory + */ + goBackInHistory: function(){ + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + if ( !this.backButtonClicked ){ + window.history.back(); + } + } + + }, + + + + /* + * Function: play + */ + play: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!this.settings.preventSlideshow){ + if (!Util.isNothing(this.carousel)){ + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + this.carousel.startSlideshow(); + } + } + + }, + + + + /* + * Function: stop + */ + stop: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.stopSlideshow(); + } + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.previous(); + } + + }, + + + + /* + * Function: next + */ + next: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.next(); + } + + }, + + + + /* + * Function: toggleToolbar + */ + toggleToolbar: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.toggleVisibility(this.currentIndex); + } + + }, + + + + /* + * Function: fadeOutToolbarIfVisible + */ + fadeOutToolbarIfVisible: function(){ + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible && this.settings.captionAndToolbarAutoHideDelay > 0){ + this.toolbar.fadeOut(); + } + + }, + + + + /* + * Function: createZoomPanRotate + */ + createZoomPanRotate: function(){ + + this.stop(); + + if (this.canUserZoom() && !this.isZoomActive()){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateShow); + + this.zoomPanRotate = new ZoomPanRotate.ZoomPanRotateClass( + this.settings, + this.cache.images[this.currentIndex], + this.uiLayer + ); + + // If we don't override this in the event of false + // you will be unable to pan around a zoomed image effectively + this.uiLayer.captureSettings.preventDefaultTouchEvents = true; + + Util.Events.add(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateShow); + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + + } + + }, + + + + /* + * Function: destroyZoomPanRotate + */ + destroyZoomPanRotate: function(){ + + if (!Util.isNothing(this.zoomPanRotate)){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateHide); + + Util.Events.remove(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + this.zoomPanRotate.dispose(); + this.zoomPanRotate = null; + + // Set the preventDefaultTouchEvents back to it was + this.uiLayer.captureSettings.preventDefaultTouchEvents = this.settings.preventDefaultTouchEvents; + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateHide); + + } + + }, + + + + /* + * Function: canUserZoom + */ + canUserZoom: function(){ + + var testEl, cacheImage; + + if (Util.Browser.msie){ + testEl = document.createElement('div'); + if (Util.isNothing(testEl.style.msTransform)){ + return false; + } + } + else if (!Util.Browser.isCSSTransformSupported){ + return false; + } + + if (!this.settings.allowUserZoom){ + return false; + } + + + if (this.carousel.isSliding){ + return false; + } + + cacheImage = this.cache.images[this.currentIndex]; + + if (Util.isNothing(cacheImage)){ + return false; + } + + if (cacheImage.isLoading){ + return false; + } + + return true; + + }, + + + + /* + * Function: isZoomActive + */ + isZoomActive: function(){ + + return (!Util.isNothing(this.zoomPanRotate)); + + }, + + + + /* + * Function: getCurrentImage + */ + getCurrentImage: function(){ + + return this.cache.images[this.currentIndex]; + + }, + + + + /* + * Function: onDocumentOverlayFadeIn + */ + onDocumentOverlayFadeIn: function(e){ + + window.setTimeout(function(){ + + var el = (this.settings.target === window) ? window.document.body : this.settings.target; + + Util.DOM.removeClass(el, PhotoSwipe.CssClasses.buildingBody); + Util.DOM.addClass(el, PhotoSwipe.CssClasses.activeBody); + + this.addEventHandlers(); + + this.carousel.show(this.currentIndex); + + this.uiLayer.show(); + + if (this.settings.autoStartSlideshow){ + this.play(); + } + else if (!Util.isNothing(this.toolbar)){ + this.toolbar.show(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onShow, + target: this + }); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), 250); + + + }, + + + + /* + * Function: setUIWebViewResetPositionTimeout + */ + setUIWebViewResetPositionTimeout: function(){ + + if (!this.settings.enableUIWebViewRepositionTimeout){ + return; + } + + if (!(Util.Browser.iOS && (!Util.Browser.safari))){ + return; + } + + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + this._uiWebViewResetPositionTimeout = window.setTimeout(function(){ + + this.resetPosition(); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), this.settings.uiWebViewResetPositionDelay); + + }, + + + + /* + * Function: clearUIWebViewResetPositionTimeout + */ + clearUIWebViewResetPositionTimeout: function(){ + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + }, + + + + /* + * Function: onWindowScroll + */ + onWindowScroll: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowOrientationChange + */ + onWindowOrientationChange: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowHashChange + */ + onWindowHashChange: function(e){ + + var compareHash = '#' + + ((this.settings.jQueryMobile) ? this.settings.jQueryMobileDialogHash : this.currentHistoryHashValue); + + if (window.location.hash !== compareHash){ + this.backButtonClicked = true; + this.hide(); + } + + }, + + + + /* + * Function: onKeyDown + */ + onKeyDown: function(e){ + + if (e.keyCode === 37) { // Left + e.preventDefault(); + this.previous(); + } + else if (e.keyCode === 39) { // Right + e.preventDefault(); + this.next(); + } + else if (e.keyCode === 38 || e.keyCode === 40) { // Up and down + e.preventDefault(); + } + else if (e.keyCode === 27) { // Escape + e.preventDefault(); + this.hide(); + } + else if (e.keyCode === 32) { // Spacebar + if (!this.settings.hideToolbar){ + this.toggleToolbar(); + } + else{ + this.hide(); + } + e.preventDefault(); + } + else if (e.keyCode === 13) { // Enter + e.preventDefault(); + this.play(); + } + + }, + + + + /* + * Function: onUILayerTouch + */ + onUILayerTouch: function(e){ + + if (this.isZoomActive()){ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.gestureChange: + this.zoomPanRotate.zoomRotate(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.gestureEnd: + this.zoomPanRotate.setStartingScaleAndRotation(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.touchStart: + this.zoomPanRotate.panStart(e.point); + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.zoomPanRotate.pan(e.point); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + this.destroyZoomPanRotate(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeLeft: + this.destroyZoomPanRotate(); + this.next(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeRight: + this.destroyZoomPanRotate(); + this.previous(); + this.toggleToolbar(); + break; + } + + } + else{ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.touchMove: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + + // Hide the toolbar if need be + this.fadeOutToolbarIfVisible(); + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.touchStart: + case Util.TouchElement.ActionTypes.touchMoveEnd: + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.tap: + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + + // Take into consideration the window scroll + if (this.settings.target === window){ + e.point.x -= Util.DOM.windowScrollLeft(); + e.point.y -= Util.DOM.windowScrollTop(); + } + + // Just make sure that if the user clicks out of the image + // that the image does not pan out of view! + var + cacheImageEl = this.cache.images[this.currentIndex].imageEl, + + imageTop = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'top'), 10), + imageLeft = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'left'), 10), + imageRight = imageLeft + Util.DOM.width(cacheImageEl), + imageBottom = imageTop + Util.DOM.height(cacheImageEl); + + if (e.point.x < imageLeft){ + e.point.x = imageLeft; + } + else if (e.point.x > imageRight){ + e.point.x = imageRight; + } + + if (e.point.y < imageTop){ + e.point.y = imageTop; + } + else if (e.point.y > imageBottom){ + e.point.y = imageBottom; + } + + this.createZoomPanRotate(); + if (this.isZoomActive()){ + this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel, e.point); + } + + break; + + case Util.TouchElement.ActionTypes.gestureStart: + this.createZoomPanRotate(); + break; + } + + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onTouch, + target: this, + point: e.point, + action: e.action + }); + + }, + + + + /* + * Function: onCarouselSlideByEnd + */ + onCarouselSlideByEnd: function(e){ + + this.currentIndex = e.cacheIndex; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.setCaption(this.currentIndex); + this.toolbar.setToolbarStatus(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onDisplayImage, + target: this, + action: e.action, + index: e.cacheIndex + }); + + }, + + + + /* + * Function: onToolbarTap + */ + onToolbarTap: function(e){ + + switch(e.action){ + + case Toolbar.ToolbarAction.next: + this.next(); + break; + + case Toolbar.ToolbarAction.previous: + this.previous(); + break; + + case Toolbar.ToolbarAction.close: + this.hide(); + break; + + case Toolbar.ToolbarAction.play: + this.play(); + break; + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onToolbarTap, + target: this, + toolbarAction: e.action, + tapTarget: e.tapTarget + }); + + }, + + + + /* + * Function: onMouseWheel + */ + onMouseWheel: function(e){ + + var + delta = Util.Events.getWheelDelta(e), + dt = e.timeStamp - (this.mouseWheelStartTime || 0); + + if (dt < this.settings.mouseWheelSpeed) { + return; + } + + this.mouseWheelStartTime = e.timeStamp; + + if (this.settings.invertMouseWheel){ + delta = delta * -1; + } + + if (delta < 0){ + this.next(); + } + else if (delta > 0){ + this.previous(); + } + + }, + + + + /* + * Function: onCarouselSlideshowStart + */ + onCarouselSlideshowStart: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: onCarouselSlideshowStop + */ + onCarouselSlideshowStop: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStop, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeShow + */ + onToolbarBeforeShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarShow + */ + onToolbarShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeHide + */ + onToolbarBeforeHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onToolbarHide + */ + onToolbarHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onZoomPanRotateTransform + */ + onZoomPanRotateTransform: function(e){ + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.EventTypes.onZoomPanRotateTransform, + scale: e.scale, + rotation: e.rotation, + rotationDegs: e.rotationDegs, + translateX: e.translateX, + translateY: e.translateY + }); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.Cache, + window.Code.PhotoSwipe.DocumentOverlay, + window.Code.PhotoSwipe.Carousel, + window.Code.PhotoSwipe.Toolbar, + window.Code.PhotoSwipe.UILayer, + window.Code.PhotoSwipe.ZoomPanRotate +)); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.min.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.min.js new file mode 100755 index 000000000..640176a33 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.jquery.min.js @@ -0,0 +1,164 @@ +// PhotoSwipe - http://www.photoswipe.com/ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 +(function(e){if(!Function.prototype.bind)Function.prototype.bind=function(d){var a=[].slice,b=a.call(arguments,1),c=this,g=function(){},f=function(){return c.apply(this instanceof g?this:d||{},b.concat(a.call(arguments)))};g.prototype=c.prototype;f.prototype=new g;return f};if(typeof e.Code==="undefined")e.Code={};e.Code.Util={registerNamespace:function(){var d=arguments,a=null,b,c,g,f,i;b=0;for(f=d.length;bd.DOM.windowHeight()}};d.Browser._detect()})(window,window.Code.Util); +(function(e,d,a){a.extend(a,{Events:{add:function(a,c,g){d(a).bind(c,g)},remove:function(a,c,g){d(a).unbind(c,g)},fire:function(a,c){var g,f=Array.prototype.slice.call(arguments).splice(2);g=typeof c==="string"?{type:c}:c;d(a).trigger(d.Event(g.type,g),f)},getMousePosition:function(a){return{x:a.pageX,y:a.pageY}},getTouchEvent:function(a){return a.originalEvent},getWheelDelta:function(b){var c=0;a.isNothing(b.wheelDelta)?a.isNothing(b.detail)||(c=-b.detail/3):c=b.wheelDelta/120;return c},domReady:function(a){d(document).ready(a)}}})})(window, +window.jQuery,window.Code.Util); +(function(e,d,a){a.extend(a,{DOM:{setData:function(b,c,g){if(a.isLikeArray(b)){var f,d;f=0;for(d=b.length;f");a.attr(c);a.append(g);return a[0]},appendChild:function(a,c){d(c).append(a)},insertBefore:function(a,c){d(a).insertBefore(c)},appendText:function(a,c){d(c).text(a)},appendToBody:function(a){d("body").append(a)},removeChild:function(a){d(a).empty().remove()},removeChildren:function(a){d(a).empty()}, +hasAttribute:function(b,c){return!a.isNothing(d(b).attr(c))},getAttribute:function(b,c,g){b=d(b).attr(c);a.isNothing(b)&&!a.isNothing(g)&&(b=g);return b},setAttribute:function(b,c,g){if(a.isLikeArray(b)){var f,d;f=0;for(d=b.length;f=1&&d.DOM.setStyle(a,"opacity",0);d.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",f,b,c,g):d.isNothing(e.jQuery)||e.jQuery(a).fadeTo(b,f,c)},fadeTo:function(a,b,c,g,f){this.fadeIn(a, +c,g,f,b)},fadeOut:function(a,b,c,g){if(b<=0&&(d.DOM.setStyle(a,"opacity",0),!d.isNothing(c))){c(a);return}d.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",0,b,c,g):e.jQuery(a).fadeTo(b,0,c)},slideBy:function(a,b,c,g,f,i){var j={},b=d.coalesce(b,0),c=d.coalesce(c,0),i=d.coalesce(i,"ease-out");j[this._transitionPrefix+"Property"]="all";j[this._transitionPrefix+"Delay"]="0";g===0?(j[this._transitionPrefix+"Duration"]="",j[this._transitionPrefix+"TimingFunction"]=""):(j[this._transitionPrefix+ +"Duration"]=g+"ms",j[this._transitionPrefix+"TimingFunction"]=d.coalesce(i,"ease-out"),d.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler()));j[this._transformLabel]=d.Browser.is3dSupported?"translate3d("+b+"px, "+c+"px, 0px)":"translate("+b+"px, "+c+"px)";if(!d.isNothing(f))a.cclallcallback=f;d.DOM.setStyle(a,j);g===0&&e.setTimeout(function(){this._leaveTransforms(a)}.bind(this),this._applyTransitionDelay)},resetTranslate:function(a){var b={};b[this._transformLabel]=b[this._transformLabel]= +d.Browser.is3dSupported?"translate3d(0px, 0px, 0px)":"translate(0px, 0px)";d.DOM.setStyle(a,b)},_applyTransition:function(a,b,c,g,f,i){var j={},i=d.coalesce(i,"ease-in");j[this._transitionPrefix+"Property"]=b;j[this._transitionPrefix+"Duration"]=g+"ms";j[this._transitionPrefix+"TimingFunction"]=i;j[this._transitionPrefix+"Delay"]="0";d.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler());d.DOM.setStyle(a,j);d.isNothing(f)||(a["ccl"+b+"callback"]=f);e.setTimeout(function(){d.DOM.setStyle(a, +b,c)},this._applyTransitionDelay)},_onTransitionEnd:function(a){d.Events.remove(a.currentTarget,this._transitionEndLabel,this._getTransitionEndHandler());this._leaveTransforms(a.currentTarget)},_leaveTransforms:function(a){var b=a.style[this._transitionPrefix+"Property"],c=b!==""?"ccl"+b+"callback":"cclallcallback",g,b=d.coalesce(a.style.webkitTransform,a.style.MozTransform,a.style.transform),f,i=e.parseInt(d.DOM.getStyle(a,"left"),0),j=e.parseInt(d.DOM.getStyle(a,"top"),0),h,l,k={};b!==""&&(b=d.Browser.is3dSupported? +b.match(/translate3d\((.*?)\)/):b.match(/translate\((.*?)\)/),d.isNothing(b)||(f=b[1].split(", "),h=e.parseInt(f[0],0),l=e.parseInt(f[1],0)));k[this._transitionPrefix+"Property"]="";k[this._transitionPrefix+"Duration"]="";k[this._transitionPrefix+"TimingFunction"]="";k[this._transitionPrefix+"Delay"]="";d.DOM.setStyle(a,k);e.setTimeout(function(){if(!d.isNothing(f))k={},k[this._transformLabel]="",k.left=i+h+"px",k.top=j+l+"px",d.DOM.setStyle(a,k);d.isNothing(a[c])||(g=a[c],delete a[c],g(a))}.bind(this), +this._applyTransitionDelay)}}})})(window,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.EventTypes={onTouch:"CodeUtilTouchElementOnTouch"};a.TouchElement.ActionTypes={touchStart:"touchStart",touchMove:"touchMove",touchEnd:"touchEnd",touchMoveEnd:"touchMoveEnd",tap:"tap",doubleTap:"doubleTap",swipeLeft:"swipeLeft",swipeRight:"swipeRight",swipeUp:"swipeUp",swipeDown:"swipeDown",gestureStart:"gestureStart",gestureChange:"gestureChange",gestureEnd:"gestureEnd"}})(window,window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.TouchElementClass=d({el:null,captureSettings:null,touchStartPoint:null,touchEndPoint:null,touchStartTime:null,doubleTapTimeout:null,touchStartHandler:null,touchMoveHandler:null,touchEndHandler:null,mouseDownHandler:null,mouseMoveHandler:null,mouseUpHandler:null,mouseOutHandler:null,gestureStartHandler:null,gestureChangeHandler:null,gestureEndHandler:null,swipeThreshold:null,swipeTimeThreshold:null,doubleTapSpeed:null,dispose:function(){var b; +this.removeEventHandlers();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(b,c){this.el=b;this.captureSettings={swipe:!1,move:!1,gesture:!1,doubleTap:!1,preventDefaultTouchEvents:!0};a.extend(this.captureSettings,c);this.swipeThreshold=50;this.doubleTapSpeed=this.swipeTimeThreshold=250;this.touchStartPoint={x:0,y:0};this.touchEndPoint={x:0,y:0}},addEventHandlers:function(){if(a.isNothing(this.touchStartHandler))this.touchStartHandler=this.onTouchStart.bind(this),this.touchMoveHandler= +this.onTouchMove.bind(this),this.touchEndHandler=this.onTouchEnd.bind(this),this.mouseDownHandler=this.onMouseDown.bind(this),this.mouseMoveHandler=this.onMouseMove.bind(this),this.mouseUpHandler=this.onMouseUp.bind(this),this.mouseOutHandler=this.onMouseOut.bind(this),this.gestureStartHandler=this.onGestureStart.bind(this),this.gestureChangeHandler=this.onGestureChange.bind(this),this.gestureEndHandler=this.onGestureEnd.bind(this);a.Events.add(this.el,"touchstart",this.touchStartHandler);this.captureSettings.move&& +a.Events.add(this.el,"touchmove",this.touchMoveHandler);a.Events.add(this.el,"touchend",this.touchEndHandler);a.Events.add(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.add(this.el,"gesturestart",this.gestureStartHandler),a.Events.add(this.el,"gesturechange",this.gestureChangeHandler),a.Events.add(this.el,"gestureend",this.gestureEndHandler))},removeEventHandlers:function(){a.Events.remove(this.el,"touchstart",this.touchStartHandler); +this.captureSettings.move&&a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);a.Events.remove(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.remove(this.el,"gesturestart",this.gestureStartHandler),a.Events.remove(this.el,"gesturechange",this.gestureChangeHandler),a.Events.remove(this.el,"gestureend",this.gestureEndHandler))},getTouchPoint:function(a){return{x:a[0].pageX, +y:a[0].pageY}},fireTouchEvent:function(b){var c=0,g=0,f=0,d,c=this.touchEndPoint.x-this.touchStartPoint.x,g=this.touchEndPoint.y-this.touchStartPoint.y,f=Math.sqrt(c*c+g*g);if(this.captureSettings.swipe&&(d=new Date,d-=this.touchStartTime,d<=this.swipeTimeThreshold)){if(e.Math.abs(c)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:c<0?a.TouchElement.ActionTypes.swipeLeft:a.TouchElement.ActionTypes.swipeRight,targetEl:b.target, +currentTargetEl:b.currentTarget});return}if(e.Math.abs(g)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:g<0?a.TouchElement.ActionTypes.swipeUp:a.TouchElement.ActionTypes.swipeDown,targetEl:b.target,currentTargetEl:b.currentTarget});return}}f>1?a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMoveEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}): +this.captureSettings.doubleTap?a.isNothing(this.doubleTapTimeout)?this.doubleTapTimeout=e.setTimeout(function(){this.doubleTapTimeout=null;a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})}.bind(this),this.doubleTapSpeed):(e.clearTimeout(this.doubleTapTimeout),this.doubleTapTimeout=null,a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint, +action:a.TouchElement.ActionTypes.doubleTap,targetEl:b.target,currentTargetEl:b.currentTarget})):a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})},onTouchStart:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();a.Events.remove(this.el,"mousedown",this.mouseDownHandler);var c=a.Events.getTouchEvent(b).touches;c.length>1&&this.captureSettings.gesture? +this.isGesture=!0:(this.touchStartTime=new Date,this.isGesture=!1,this.touchStartPoint=this.getTouchPoint(c),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget}))},onTouchMove:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();if(!this.isGesture||!this.captureSettings.gesture){var c=a.Events.getTouchEvent(b).touches;a.Events.fire(this, +{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,point:this.getTouchPoint(c),targetEl:b.target,currentTargetEl:b.currentTarget})}},onTouchEnd:function(b){if(!this.isGesture||!this.captureSettings.gesture){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();var c=a.Events.getTouchEvent(b);this.touchEndPoint=this.getTouchPoint(!a.isNothing(c.changedTouches)?c.changedTouches:c.touches);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch, +target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)}},onMouseDown:function(b){b.preventDefault();a.Events.remove(this.el,"touchstart",this.mouseDownHandler);a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);this.captureSettings.move&&a.Events.add(this.el,"mousemove",this.mouseMoveHandler);a.Events.add(this.el,"mouseup",this.mouseUpHandler); +a.Events.add(this.el,"mouseout",this.mouseOutHandler);this.touchStartTime=new Date;this.isGesture=!1;this.touchStartPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseMove:function(b){b.preventDefault();a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove, +point:a.Events.getMousePosition(b),targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseUp:function(b){b.preventDefault();this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler);a.Events.remove(this.el,"mouseup",this.mouseUpHandler);a.Events.remove(this.el,"mouseout",this.mouseOutHandler);this.touchEndPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint, +targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)},onMouseOut:function(b){var c=b.relatedTarget;if(!(this.el===c||a.DOM.isChildOf(c,this.el)))b.preventDefault(),this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler),a.Events.remove(this.el,"mouseup",this.mouseUpHandler),a.Events.remove(this.el,"mouseout",this.mouseOutHandler),this.touchEndPoint=a.Events.getMousePosition(b),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this, +action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}),this.fireTouchEvent(b)},onGestureStart:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureStart,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureChange:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b); +a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureChange,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureEnd:function(b){b.preventDefault();var c=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureEnd,scale:c.scale,rotation:c.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})}})})(window,window.klass, +window.Code.Util);(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Image");e.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=e.Code.PhotoSwipe;b.Image.ImageClass=d({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var c;this.shrinkImage();for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(a,b,f,d){this.refObj=a;this.src=this.originalSrc=b;this.caption=f;this.metaData=d;this.imageEl=new e.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler= +this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror= +this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth, +this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window, +window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Cache");e=e.Code.PhotoSwipe;e.Cache.Mode={normal:"normal",aggressive:"aggressive"};e.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var c,g,f;c=0;for(g=b.childNodes.length;cb&& +(b=a.DOM.windowHeight())}else c=a.DOM.width(this.settings.target),b=a.DOM.height(this.settings.target),f="0px";a.DOM.setStyle(this.el,{width:c,height:b,top:f})},fadeIn:function(c,b){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,c,b)}})})(window,window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Carousel");e=e.Code.PhotoSwipe;e.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};e.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};e.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window, +window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=e.Code.PhotoSwipe;b.Carousel.CarouselClass=d({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var c,g,f;g=0;for(f=this.cache.images.length;g0&&a.DOM.setStyle(j,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(j,this.contentEl);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)}, +resetPosition:function(){var c,g,f,d,j,h;this.settings.target===e?(c=a.DOM.windowWidth(),g=a.DOM.windowHeight(),f=a.DOM.windowScrollTop()+"px"):(c=a.DOM.width(this.settings.target),g=a.DOM.height(this.settings.target),f="0px");d=this.settings.margin>0?c+this.settings.margin:c;j=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);d*=j.length;a.DOM.setStyle(this.el,{top:f,width:c,height:g});a.DOM.setStyle(this.contentEl,{width:d,height:g});f=0;for(d=j.length;fe&&(b=e/f,f=Math.round(f*b),d=Math.round(d*b)),d>h&&(b=h/d,d=Math.round(d*b),f=Math.round(f*b))):(b=c.isLandscape?e/c.naturalWidth:h/c.naturalHeight,f=Math.round(c.naturalWidth* +b),d=Math.round(c.naturalHeight*b),this.settings.imageScaleMethod==="zoom"?(b=1,de?b=e/f:d>h&&(b=h/d),b!==1&&(f=Math.round(f*b),d=Math.round(d*b))));a.DOM.setStyle(c,{position:"absolute",width:f,height:d,top:Math.round((h-d)/2)+"px",left:Math.round((e-f)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var c,b,d;c=this.settings.target===e?a.DOM.windowWidth():a.DOM.width(this.settings.target); +b=this.getItemEls();d=0;this.settings.loop?d=(c+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?d=(b.length-1)*(c+this.settings.margin)*-1:this.currentCacheIndex>0&&(d=(c+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:d+"px"})},show:function(c){this.currentCacheIndex=c;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var c=this.getItemEls(),d,f;d=0;for(f=c.length;dthis.cache.images.length-1&&(b=0),e<0&&(e=this.cache.images.length-1),b=this.cache.getImages([e,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[0], +d[0])):d.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],d[0])):d.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[0],d[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex, +this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]), +a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])),this.addCacheImageToItemEl(b[0],d[0]))},addCacheImageToItemEl:function(c,d){a.DOM.removeClass(d,b.Carousel.CssClasses.itemError);a.DOM.addClass(d,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(d);a.DOM.setStyle(c.imageEl,{display:"none"});a.DOM.appendChild(c.imageEl,d);a.Animation.resetTranslate(c.imageEl);a.Events.add(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(c,b.Image.EventTypes.onError, +this.imageErrorHandler);c.load()},slideCarousel:function(c,d,f){if(!this.isSliding){var i,j;i=this.settings.target===e?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;f=a.coalesce(f,this.settings.slideSpeed);if(!(e.Math.abs(j)<1)){switch(d){case a.TouchElement.ActionTypes.swipeLeft:c=i*-1;break;case a.TouchElement.ActionTypes.swipeRight:c=i;break;default:j=c.x-this.touchStartPoint.x,c=e.Math.abs(j)>i/2?j>0?i:i*-1:0}this.lastSlideByAction=c<0?b.Carousel.SlideByAction.next: +c>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))c=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(c,f)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)}, +getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow(); +this.isSlideshowActive=!0;this.slideshowTimeout=e.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))e.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var c=this.getItemEls(); +this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(c[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex=== +this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex
'}})(window,window.klass,window.Code.Util); +(function(e,d,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.ToolbarClass=d({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var b;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl); +a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(c,d){var f;this.settings=d;this.cache=c;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);f=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&& +(f=f+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":f},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl); +this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];f=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(f=f+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":f},"");a.DOM.setStyle(this.captionEl, +{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var b,d,f;this.settings.target===e?(this.settings.captionAndToolbarFlipPosition? +(d=a.DOM.windowScrollTop(),f=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(d=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),f=a.DOM.windowScrollTop()),b=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(d="0",f=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(d=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),f=0),b=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:d+"px", +width:b});a.DOM.setStyle(this.captionEl,{top:f+"px",width:b})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(c){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(c);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(c);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay> +0)this.clearTimeout(),this.timeout=e.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))e.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&& +(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl, +"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(c){this.clearTimeout();var d;if(c.target===this.nextEl||a.DOM.isChildOf(c.target,this.nextEl))d=b.Toolbar.ToolbarAction.next;else if(c.target===this.previousEl||a.DOM.isChildOf(c.target,this.previousEl))d=b.Toolbar.ToolbarAction.previous;else if(c.target===this.closeEl||a.DOM.isChildOf(c.target,this.closeEl))d=b.Toolbar.ToolbarAction.close;else if(c.target===this.playEl||a.DOM.isChildOf(c.target, +this.playEl))d=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(d))d=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:d,tapTarget:c.target})},setCaption:function(b){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[b].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0"; +a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}), +a.DOM.show(this.captionEl))},setToolbarStatus:function(c){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),c>0&&cthis.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint= +{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,d){if(this.settings.target===e){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var f=(d.y-this.panStartingPoint.y)/this.transformSettings.scale; +this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(d.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+f)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,d=e.parseInt(this.transformSettings.translateX,10), +f=e.parseInt(this.transformSettings.translateY,10),i="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+d+"px, "+f+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:i,MozTransform:i,msTransform:i,transform:i});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:d,translateY:f})}})})(window,window.klass,window.Code.Util); +(function(e,d){d.registerNamespace("Code.PhotoSwipe");var a=e.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow", +onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"}; +a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(d.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=d.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,c,e){var f,i;f=a.createInstance(b,c,e);c=0;for(e= +b.length;c=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(e,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0, +mouseWheelSpeed:350,autoStartSlideshow:!1,jQueryMobile:!a.isNothing(e.jQuery)&&!a.isNothing(e.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:e,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1, +captionAndToolbarAutoHideDelay:5E3,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:h.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:h.Cache.Functions.getImageSource,getImageCaption:h.Cache.Functions.getImageCaption,getImageMetaData:h.Cache.Functions.getImageMetaData,cacheMode:h.Cache.Mode.normal};a.extend(this.settings,d);this.settings.target!==e&&(d=a.DOM.getStyle(this.settings.target, +"position"),(d!=="relative"||d!=="absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==e)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,d;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(d=this.originalImages.length;cthis.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();h.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===e?a.DOM.addClass(e.document.body,h.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,h.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:h.EventTypes.onBeforeShow, +target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new c.DocumentOverlayClass(this.settings);this.carousel=new g.CarouselClass(this.cache,this.settings);this.uiLayer=new i.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new f.ToolbarClass(this.cache,this.settings)}, +resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:h.EventTypes.onResetPosition, +target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this), +this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler= +this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(e.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(e.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(e,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===e&&a.Events.add(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&& +a.Events.add(e.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?e.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),e.location.hash=this.currentHistoryHashValue),a.Events.add(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(e,"mousewheel", +this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,g.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,g.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,g.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,f.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar, +f.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,f.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,f.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,f.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(e.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(e,this.orientationEventName, +this.windowOrientationChangeHandler);a.Events.remove(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(e.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(e,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler); +a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,g.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,g.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,g.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,f.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,f.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar, +f.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,f.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,f.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this, +{type:h.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(e.document.body,h.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;h.unsetActivateInstance(this);a.Events.fire(this,{type:h.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&& +this.settings.backButtonHideEnabled&&(this.backButtonClicked||e.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()|| +a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,h.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new j.ZoomPanRotateClass(this.settings, +this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,h.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,h.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,h.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate, +h.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,h.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1; +b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){e.setTimeout(function(){var b=this.settings.target===e?e.document.body:this.settings.target;a.DOM.removeClass(b,h.CssClasses.buildingBody);a.DOM.addClass(b,h.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex); +this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:h.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout= +e.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(e.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash: +this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale, +this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate(); +this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point); +break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===e&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,d=e.parseInt(a.DOM.getStyle(c,"top"),10),f=e.parseInt(a.DOM.getStyle(c,"left"),10),g=f+a.DOM.width(c),c=d+a.DOM.height(c);if(b.point.xg)b.point.x=g;if(b.point.yc)b.point.y=c; +this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:h.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:h.EventTypes.onDisplayImage, +target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case f.ToolbarAction.next:this.next();break;case f.ToolbarAction.previous:this.previous();break;case f.ToolbarAction.close:this.hide();break;case f.ToolbarAction.play:this.play()}a.Events.fire(this,{type:h.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:h.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:h.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:h.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:h.EventTypes.onCaptionAndToolbarShow, +target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:h.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:h.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:h.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache, +window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.js new file mode 100755 index 000000000..f7b47e126 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.js @@ -0,0 +1,6690 @@ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function (window) { + + // https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Function/bind + if (!Function.prototype.bind ) { + + Function.prototype.bind = function( obj ) { + var slice = [].slice, + args = slice.call(arguments, 1), + self = this, + nop = function () {}, + bound = function () { + return self.apply( this instanceof nop ? this : ( obj || {} ), + args.concat( slice.call(arguments) ) ); + }; + + nop.prototype = self.prototype; + + bound.prototype = new nop(); + + return bound; + }; + } + + + + if (typeof window.Code === "undefined") { + window.Code = {}; + } + + + + window.Code.Util = { + + + /* + * Function: registerNamespace + */ + registerNamespace: function () { + var + args = arguments, obj = null, i, j, ns, nsParts, root, argsLen, nsPartsLens; + for (i=0, argsLen=args.length; i Util.DOM.windowHeight()); + } + }; + + Util.Browser._detect(); + +} +( + window, + window.Code.Util +)) +; +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function (window, Util) { + + Util.extend(Util, { + + Events: { + + + /* + * Function: add + * Add an event handler + */ + add: function(obj, type, handler){ + + this._checkHandlersProperty(obj); + + if (type === 'mousewheel'){ + type = this._normaliseMouseWheelType(); + } + + if (typeof obj.__eventHandlers[type] === 'undefined'){ + obj.__eventHandlers[type] = []; + } + obj.__eventHandlers[type].push(handler); + + // DOM element + if (this._isBrowserObject(obj)){ + obj.addEventListener(type, handler, false); + } + + }, + + + + /* + * Function: remove + * Removes a handler or all handlers associated with a type + */ + remove: function(obj, type, handler){ + + this._checkHandlersProperty(obj); + + if (type === 'mousewheel'){ + type = this._normaliseMouseWheelType(); + } + + if (obj.__eventHandlers[type] instanceof Array){ + + var + i, j, + handlers = obj.__eventHandlers[type]; + + // Removing all handlers for a type + if (Util.isNothing(handler)){ + + if (this._isBrowserObject(obj)){ + for (i=0, j=handlers.length; i= 1){ + parentEl.removeChild(parentEl.childNodes[parentEl.childNodes.length -1]); + } + + } + + }, + + + + /* + * Function: hasAttribute + */ + hasAttribute: function(el, attributeName){ + + return !Util.isNothing(el.getAttribute(attributeName)); + + }, + + + + /* + * Function: getAttribute + */ + getAttribute: function(el, attributeName, defaultValue){ + + var retval = el.getAttribute(attributeName); + if (Util.isNothing(retval) && !Util.isNothing(defaultValue)){ + retval = defaultValue; + } + return retval; + + }, + + + + /* + * Function: el, attributeName + */ + setAttribute: function(el, attributeName, value){ + + if (Util.isLikeArray(el)){ + var i, len; + for (i=0, len=el.length; i= 1){ + Util.DOM.setStyle(el, 'opacity', 0); + } + + if (Util.Browser.isCSSTransformSupported){ + this._applyTransition(el, 'opacity', opacity, speed, callback, timingFunction); + } + else if (!Util.isNothing(window.jQuery)){ + window.jQuery(el).fadeTo(speed, opacity, callback); + } + + }, + + + + /* + * Function: fadeTo + */ + fadeTo: function(el, opacity, speed, callback, timingFunction){ + this.fadeIn(el, speed, callback, timingFunction, opacity); + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(el, speed, callback, timingFunction){ + + if (speed <= 0){ + Util.DOM.setStyle(el, 'opacity', 0); + if (!Util.isNothing(callback)){ + callback(el); + return; + } + } + + if (Util.Browser.isCSSTransformSupported){ + + this._applyTransition(el, 'opacity', 0, speed, callback, timingFunction); + + } + else{ + + window.jQuery(el).fadeTo(speed, 0, callback); + + } + + }, + + + + /* + * Function: slideBy + */ + slideBy: function(el, x, y, speed, callback, timingFunction){ + + var style = {}; + + x = Util.coalesce(x, 0); + y = Util.coalesce(y, 0); + timingFunction = Util.coalesce(timingFunction, 'ease-out'); + + style[this._transitionPrefix + 'Property'] = 'all'; + style[this._transitionPrefix + 'Delay'] = '0'; + + if (speed === 0){ + style[this._transitionPrefix + 'Duration'] = ''; + style[this._transitionPrefix + 'TimingFunction'] = ''; + } + else{ + style[this._transitionPrefix + 'Duration'] = speed + 'ms'; + style[this._transitionPrefix + 'TimingFunction'] = Util.coalesce(timingFunction, 'ease-out'); + + Util.Events.add(el, this._transitionEndLabel, this._getTransitionEndHandler()); + + } + + style[this._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + x + 'px, ' + y + 'px, 0px)' : 'translate(' + x + 'px, ' + y + 'px)'; + + if (!Util.isNothing(callback)){ + el.cclallcallback = callback; + } + + Util.DOM.setStyle(el, style); + + if (speed === 0){ + window.setTimeout(function(){ + this._leaveTransforms(el); + }.bind(this), this._applyTransitionDelay); + } + + }, + + + + /* + * Function: + */ + resetTranslate: function(el){ + + var style = {}; + style[this._transformLabel] = style[this._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(0px, 0px, 0px)' : 'translate(0px, 0px)'; + Util.DOM.setStyle(el, style); + + }, + + + + /* + * Function: _applyTransition + */ + _applyTransition: function(el, property, val, speed, callback, timingFunction){ + + var style = {}; + + timingFunction = Util.coalesce(timingFunction, 'ease-in'); + + style[this._transitionPrefix + 'Property'] = property; + style[this._transitionPrefix + 'Duration'] = speed + 'ms'; + style[this._transitionPrefix + 'TimingFunction'] = timingFunction; + style[this._transitionPrefix + 'Delay'] = '0'; + + Util.Events.add(el, this._transitionEndLabel, this._getTransitionEndHandler()); + + Util.DOM.setStyle(el, style); + + if (!Util.isNothing(callback)){ + el['ccl' + property + 'callback'] = callback; + } + + window.setTimeout(function(){ + Util.DOM.setStyle(el, property, val); + }, this._applyTransitionDelay); + + }, + + + + /* + * Function: _onTransitionEnd + */ + _onTransitionEnd: function(e){ + + Util.Events.remove(e.currentTarget, this._transitionEndLabel, this._getTransitionEndHandler()); + this._leaveTransforms(e.currentTarget); + + }, + + + + /* + * Function: _leaveTransforms + */ + _leaveTransforms: function(el){ + + var + property = el.style[this._transitionPrefix + 'Property'], + callbackLabel = (property !== '') ? 'ccl' + property + 'callback' : 'cclallcallback', + callback, + transform = Util.coalesce(el.style.webkitTransform, el.style.MozTransform, el.style.transform), + transformMatch, + transformExploded, + domX = window.parseInt(Util.DOM.getStyle(el, 'left'), 0), + domY = window.parseInt(Util.DOM.getStyle(el, 'top'), 0), + transformedX, + transformedY, + style = {}; + + if (transform !== ''){ + if (Util.Browser.is3dSupported){ + transformMatch = transform.match( /translate3d\((.*?)\)/ ); + } + else{ + transformMatch = transform.match( /translate\((.*?)\)/ ); + } + if (!Util.isNothing(transformMatch)){ + transformExploded = transformMatch[1].split(', '); + transformedX = window.parseInt(transformExploded[0], 0); + transformedY = window.parseInt(transformExploded[1], 0); + } + } + + style[this._transitionPrefix + 'Property'] = ''; + style[this._transitionPrefix + 'Duration'] = ''; + style[this._transitionPrefix + 'TimingFunction'] = ''; + style[this._transitionPrefix + 'Delay'] = ''; + + Util.DOM.setStyle(el, style); + + window.setTimeout(function(){ + + if(!Util.isNothing(transformExploded)){ + + style = {}; + style[this._transformLabel] = ''; + style.left = (domX + transformedX) + 'px'; + style.top = (domY + transformedY) + 'px'; + + Util.DOM.setStyle(el, style); + + } + + if (!Util.isNothing(el[callbackLabel])){ + callback = el[callbackLabel]; + delete el[callbackLabel]; + callback(el); + } + + }.bind(this), this._applyTransitionDelay); + + } + + + } + + + }); + + +} +( + window, + window.Code.Util +)); +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.Util.TouchElement'); + + + Util.TouchElement.EventTypes = { + + onTouch: 'CodeUtilTouchElementOnTouch' + + }; + + + Util.TouchElement.ActionTypes = { + + touchStart: 'touchStart', + touchMove: 'touchMove', + touchEnd: 'touchEnd', + touchMoveEnd: 'touchMoveEnd', + tap: 'tap', + doubleTap: 'doubleTap', + swipeLeft: 'swipeLeft', + swipeRight: 'swipeRight', + swipeUp: 'swipeUp', + swipeDown: 'swipeDown', + gestureStart: 'gestureStart', + gestureChange: 'gestureChange', + gestureEnd: 'gestureEnd' + + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.Util.TouchElement'); + + + Util.TouchElement.TouchElementClass = klass({ + + el: null, + + captureSettings: null, + + touchStartPoint: null, + touchEndPoint: null, + touchStartTime: null, + doubleTapTimeout: null, + + touchStartHandler: null, + touchMoveHandler: null, + touchEndHandler: null, + + mouseDownHandler: null, + mouseMoveHandler: null, + mouseUpHandler: null, + mouseOutHandler: null, + + gestureStartHandler: null, + gestureChangeHandler: null, + gestureEndHandler: null, + + swipeThreshold: null, + swipeTimeThreshold: null, + doubleTapSpeed: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(el, captureSettings){ + + this.el = el; + + this.captureSettings = { + swipe: false, + move: false, + gesture: false, + doubleTap: false, + preventDefaultTouchEvents: true + }; + + Util.extend(this.captureSettings, captureSettings); + + this.swipeThreshold = 50; + this.swipeTimeThreshold = 250; + this.doubleTapSpeed = 250; + + this.touchStartPoint = { x: 0, y: 0 }; + this.touchEndPoint = { x: 0, y: 0 }; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.touchStartHandler)){ + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.touchEndHandler = this.onTouchEnd.bind(this); + this.mouseDownHandler = this.onMouseDown.bind(this); + this.mouseMoveHandler = this.onMouseMove.bind(this); + this.mouseUpHandler = this.onMouseUp.bind(this); + this.mouseOutHandler = this.onMouseOut.bind(this); + this.gestureStartHandler = this.onGestureStart.bind(this); + this.gestureChangeHandler = this.onGestureChange.bind(this); + this.gestureEndHandler = this.onGestureEnd.bind(this); + } + + Util.Events.add(this.el, 'touchstart', this.touchStartHandler); + if (this.captureSettings.move){ + Util.Events.add(this.el, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.el, 'touchend', this.touchEndHandler); + + Util.Events.add(this.el, 'mousedown', this.mouseDownHandler); + + if (Util.Browser.isGestureSupported && this.captureSettings.gesture){ + Util.Events.add(this.el, 'gesturestart', this.gestureStartHandler); + Util.Events.add(this.el, 'gesturechange', this.gestureChangeHandler); + Util.Events.add(this.el, 'gestureend', this.gestureEndHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + Util.Events.remove(this.el, 'touchstart', this.touchStartHandler); + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.el, 'touchend', this.touchEndHandler); + Util.Events.remove(this.el, 'mousedown', this.mouseDownHandler); + + if (Util.Browser.isGestureSupported && this.captureSettings.gesture){ + Util.Events.remove(this.el, 'gesturestart', this.gestureStartHandler); + Util.Events.remove(this.el, 'gesturechange', this.gestureChangeHandler); + Util.Events.remove(this.el, 'gestureend', this.gestureEndHandler); + } + + }, + + + + /* + * Function: getTouchPoint + */ + getTouchPoint: function(touches){ + + return { + x: touches[0].pageX, + y: touches[0].pageY + }; + + }, + + + + /* + * Function: fireTouchEvent + */ + fireTouchEvent: function(e){ + + var + action, + distX = 0, + distY = 0, + dist = 0, + self, + endTime, + diffTime; + + distX = this.touchEndPoint.x - this.touchStartPoint.x; + distY = this.touchEndPoint.y - this.touchStartPoint.y; + dist = Math.sqrt( (distX * distX) + (distY * distY) ); + + if (this.captureSettings.swipe){ + endTime = new Date(); + diffTime = endTime - this.touchStartTime; + + // See if there was a swipe gesture + if (diffTime <= this.swipeTimeThreshold){ + + if (window.Math.abs(distX) >= this.swipeThreshold){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: (distX < 0) ? Util.TouchElement.ActionTypes.swipeLeft : Util.TouchElement.ActionTypes.swipeRight, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + + if (window.Math.abs(distY) >= this.swipeThreshold){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: (distY < 0) ? Util.TouchElement.ActionTypes.swipeUp : Util.TouchElement.ActionTypes.swipeDown, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + } + } + + + if (dist > 1){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMoveEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + } + + + if (!this.captureSettings.doubleTap){ + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.tap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + return; + + } + + if (Util.isNothing(this.doubleTapTimeout)){ + + this.doubleTapTimeout = window.setTimeout(function(){ + + this.doubleTapTimeout = null; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.tap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }.bind(this), this.doubleTapSpeed); + + return; + + } + else{ + + window.clearTimeout(this.doubleTapTimeout); + this.doubleTapTimeout = null; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + point: this.touchEndPoint, + action: Util.TouchElement.ActionTypes.doubleTap, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + } + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + // No longer need mouse events + Util.Events.remove(this.el, 'mousedown', this.mouseDownHandler); + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = touchEvent.touches; + + if (touches.length > 1 && this.captureSettings.gesture){ + this.isGesture = true; + return; + } + + this.touchStartTime = new Date(); + this.isGesture = false; + this.touchStartPoint = this.getTouchPoint(touches); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchStart, + point: this.touchStartPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + if (this.isGesture && this.captureSettings.gesture){ + return; + } + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = touchEvent.touches; + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMove, + point: this.getTouchPoint(touches), + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onTouchEnd + */ + onTouchEnd: function(e){ + + if (this.isGesture && this.captureSettings.gesture){ + return; + } + + if (this.captureSettings.preventDefaultTouchEvents){ + e.preventDefault(); + } + + // http://backtothecode.blogspot.com/2009/10/javascript-touch-and-gesture-events.html + // iOS removed the current touch from e.touches on "touchend" + // Need to look into e.changedTouches + + var + touchEvent = Util.Events.getTouchEvent(e), + touches = (!Util.isNothing(touchEvent.changedTouches)) ? touchEvent.changedTouches : touchEvent.touches; + + this.touchEndPoint = this.getTouchPoint(touches); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onMouseDown + */ + onMouseDown: function(e){ + + e.preventDefault(); + + // No longer need touch events + Util.Events.remove(this.el, 'touchstart', this.mouseDownHandler); + Util.Events.remove(this.el, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.el, 'touchend', this.touchEndHandler); + + // Add move/up/out + if (this.captureSettings.move){ + Util.Events.add(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.add(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.add(this.el, 'mouseout', this.mouseOutHandler); + + this.touchStartTime = new Date(); + this.isGesture = false; + this.touchStartPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchStart, + point: this.touchStartPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onMouseMove + */ + onMouseMove: function(e){ + + e.preventDefault(); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchMove, + point: Util.Events.getMousePosition(e), + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onMouseUp + */ + onMouseUp: function(e){ + + e.preventDefault(); + + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.remove(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.remove(this.el, 'mouseout', this.mouseOutHandler); + + this.touchEndPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onMouseOut + */ + onMouseOut: function(e){ + + /* + * http://blog.stchur.com/2007/03/15/mouseenter-and-mouseleave-events-for-firefox-and-other-non-ie-browsers/ + */ + var relTarget = e.relatedTarget; + if (this.el === relTarget || Util.DOM.isChildOf(relTarget, this.el)){ + return; + } + + e.preventDefault(); + + if (this.captureSettings.move){ + Util.Events.remove(this.el, 'mousemove', this.mouseMoveHandler); + } + Util.Events.remove(this.el, 'mouseup', this.mouseUpHandler); + Util.Events.remove(this.el, 'mouseout', this.mouseOutHandler); + + this.touchEndPoint = Util.Events.getMousePosition(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.touchEnd, + point: this.touchEndPoint, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + this.fireTouchEvent(e); + + }, + + + + /* + * Function: onGestureStart + */ + onGestureStart: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureStart, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onGestureChange + */ + onGestureChange: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureChange, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + }, + + + + /* + * Function: onGestureEnd + */ + onGestureEnd: function(e){ + + e.preventDefault(); + + var touchEvent = Util.Events.getTouchEvent(e); + + Util.Events.fire(this, { + type: Util.TouchElement.EventTypes.onTouch, + target: this, + action: Util.TouchElement.ActionTypes.gestureEnd, + scale: touchEvent.scale, + rotation: touchEvent.rotation, + targetEl: e.target, + currentTargetEl: e.currentTarget + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.EventTypes = { + + onLoad: 'onLoad', + onError: 'onError' + + }; + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.ImageClass = klass({ + + + + refObj: null, + imageEl: null, + src: null, + caption: null, + metaData: null, + imageLoadHandler: null, + imageErrorHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i; + + this.shrinkImage(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(refObj, src, caption, metaData){ + + this.refObj = refObj; + // This is needed. Webkit resolves the src + // value which means we can't compare against it in the load function + this.originalSrc = src; + this.src = src; + this.caption = caption; + this.metaData = metaData; + + this.imageEl = new window.Image(); + + this.imageLoadHandler = this.onImageLoad.bind(this); + this.imageErrorHandler = this.onImageError.bind(this); + + }, + + + + /* + * Function: load + */ + load: function(){ + + this.imageEl.originalSrc = Util.coalesce(this.imageEl.originalSrc, ''); + + if (this.imageEl.originalSrc === this.src){ + + if (this.imageEl.isError){ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + } + else{ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + } + return; + } + + this.imageEl.isError = false; + this.imageEl.isLoading = true; + this.imageEl.naturalWidth = null; + this.imageEl.naturalHeight = null; + this.imageEl.isLandscape = false; + this.imageEl.onload = this.imageLoadHandler; + this.imageEl.onerror = this.imageErrorHandler; + this.imageEl.onabort = this.imageErrorHandler; + this.imageEl.originalSrc = this.src; + this.imageEl.src = this.src; + + }, + + + + /* + * Function: shrinkImage + */ + shrinkImage: function(){ + + if (Util.isNothing(this.imageEl)){ + return; + } + + if (this.imageEl.src.indexOf(this.src) > -1){ + this.imageEl.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + if (!Util.isNothing(this.imageEl.parentNode)){ + Util.DOM.removeChild(this.imageEl, this.imageEl.parentNode); + } + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + this.imageEl.onload = null; + this.imageEl.naturalWidth = Util.coalesce(this.imageEl.naturalWidth, this.imageEl.width); + this.imageEl.naturalHeight = Util.coalesce(this.imageEl.naturalHeight, this.imageEl.height); + this.imageEl.isLandscape = (this.imageEl.naturalWidth > this.imageEl.naturalHeight); + this.imageEl.isLoading = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + this.imageEl.onload = null; + this.imageEl.onerror = null; + this.imageEl.onabort = null; + this.imageEl.isLoading = false; + this.imageEl.isError = true; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Cache'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Cache.Mode = { + + normal: 'normal', + aggressive: 'aggressive' + + }; + + + + PhotoSwipe.Cache.Functions = { + + /* + * Function: getImageSource + * Default method for returning an image's source + */ + getImageSource: function(el){ + return el.href; + }, + + + + /* + * Function: getImageCaption + * Default method for returning an image's caption + * Assumes the el is an anchor and the first child is the + * image. The returned value is the "alt" attribute of the + * image. + */ + getImageCaption: function(el){ + + if (el.nodeName === "IMG"){ + return Util.DOM.getAttribute(el, 'alt'); + } + var i, j, childEl; + for (i=0, j=el.childNodes.length; i height){ + height = Util.DOM.windowHeight(); + } + + } + else{ + + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + + } + + Util.DOM.setStyle(this.el, { + width: width, + height: height, + top: top + }); + + }, + + + + /* + * Function: fadeIn + */ + fadeIn: function(speed, callback){ + + this.resetPosition(); + + Util.DOM.setStyle(this.el, 'opacity', 0); + Util.DOM.show(this.el); + + Util.Animation.fadeIn(this.el, speed, callback); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Carousel.EventTypes = { + + onSlideByEnd: 'PhotoSwipeCarouselOnSlideByEnd', + onSlideshowStart: 'PhotoSwipeCarouselOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeCarouselOnSlideshowStop' + + }; + + + + PhotoSwipe.Carousel.CssClasses = { + carousel: 'ps-carousel', + content: 'ps-carousel-content', + item: 'ps-carousel-item', + itemLoading: 'ps-carousel-item-loading', + itemError: 'ps-carousel-item-error' + }; + + + + PhotoSwipe.Carousel.SlideByAction = { + previous: 'previous', + current: 'current', + next: 'next' + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = klass({ + + + + el: null, + contentEl: null, + settings: null, + cache: null, + slideByEndHandler: null, + currentCacheIndex: null, + isSliding: null, + isSlideshowActive: null, + lastSlideByAction: null, + touchStartPoint: null, + touchStartPosition: null, + imageLoadHandler: null, + imageErrorHandler: null, + slideshowTimeout: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i, j; + + for (i=0, j=this.cache.images.length; i 0){ + Util.DOM.setStyle(itemEl, { + marginRight: this.settings.margin + 'px' + }); + } + + Util.DOM.appendChild(itemEl, this.contentEl); + + } + + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + }, + + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, height, top, itemWidth, itemEls, contentWidth, i, j, itemEl, imageEl; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + } + + itemWidth = (this.settings.margin > 0) ? width + this.settings.margin : width; + itemEls = Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + contentWidth = itemWidth * itemEls.length; + + + // Set the height and width to fill the document + Util.DOM.setStyle(this.el, { + top: top, + width: width, + height: height + }); + + + // Set the height and width of the content el + Util.DOM.setStyle(this.contentEl, { + width: contentWidth, + height: height + }); + + + // Set the height and width of item elements + for (i=0, j=itemEls.length; i maxWidth){ + scale = maxWidth / newWidth; + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + if (newHeight > maxHeight){ + scale = maxHeight / newHeight; + newHeight = Math.round(newHeight * scale); + newWidth = Math.round(newWidth * scale); + } + + } + else{ + + if (imageEl.isLandscape) { + // Ensure the width fits the screen + scale = maxWidth / imageEl.naturalWidth; + } + else { + // Ensure the height fits the screen + scale = maxHeight / imageEl.naturalHeight; + } + + newWidth = Math.round(imageEl.naturalWidth * scale); + newHeight = Math.round(imageEl.naturalHeight * scale); + + if (this.settings.imageScaleMethod === 'zoom'){ + + scale = 1; + if (newHeight < maxHeight){ + scale = maxHeight /newHeight; + } + else if (newWidth < maxWidth){ + scale = maxWidth /newWidth; + } + + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + } + else if (this.settings.imageScaleMethod === 'fit') { + // Rescale again to ensure full image fits into the viewport + scale = 1; + if (newWidth > maxWidth) { + scale = maxWidth / newWidth; + } + else if (newHeight > maxHeight) { + scale = maxHeight / newHeight; + } + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + } + + } + + newTop = Math.round( ((maxHeight - newHeight) / 2) ) + 'px'; + newLeft = Math.round( ((maxWidth - newWidth) / 2) ) + 'px'; + + Util.DOM.setStyle(imageEl, { + position: 'absolute', + width: newWidth, + height: newHeight, + top: newTop, + left: newLeft, + display: 'block' + }); + + }, + + + + /* + * Function: setContentLeftPosition + */ + setContentLeftPosition: function(){ + + var width, itemEls, left; + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + } + else{ + width = Util.DOM.width(this.settings.target); + } + + itemEls = this.getItemEls(); + left = 0; + + if (this.settings.loop){ + left = (width + this.settings.margin) * -1; + } + else{ + + if (this.currentCacheIndex === this.cache.images.length-1){ + left = ((itemEls.length-1) * (width + this.settings.margin)) * -1; + } + else if (this.currentCacheIndex > 0){ + left = (width + this.settings.margin) * -1; + } + + } + + Util.DOM.setStyle(this.contentEl, { + left: left + 'px' + }); + + }, + + + + /* + * Function: + */ + show: function(index){ + + this.currentCacheIndex = index; + this.resetPosition(); + this.setImages(false); + Util.DOM.show(this.el); + + Util.Animation.resetTranslate(this.contentEl); + var + itemEls = this.getItemEls(), + i, j; + for (i=0, j=itemEls.length; i this.cache.images.length-1){ + nextCacheIndex = 0; + } + if (previousCacheIndex < 0){ + previousCacheIndex = this.cache.images.length-1; + } + + cacheImages = this.cache.getImages([ + previousCacheIndex, + this.currentCacheIndex, + nextCacheIndex + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + + } + else{ + + if (itemEls.length === 1){ + if (!ignoreCurrent){ + // Current + cacheImages = this.cache.getImages([ + this.currentCacheIndex + ]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + } + else if (itemEls.length === 2){ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + else{ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1, + this.currentCacheIndex + 2 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + else if (this.currentCacheIndex === this.cache.images.length-1){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 2, + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + + } + + }, + + + + /* + * Function: addCacheImageToItemEl + */ + addCacheImageToItemEl: function(cacheImage, itemEl){ + + Util.DOM.removeClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemError); + Util.DOM.addClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemLoading); + + Util.DOM.removeChildren(itemEl); + + Util.DOM.setStyle(cacheImage.imageEl, { + display: 'none' + }); + Util.DOM.appendChild(cacheImage.imageEl, itemEl); + + Util.Animation.resetTranslate(cacheImage.imageEl); + + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + cacheImage.load(); + + }, + + + + /* + * Function: slideCarousel + */ + slideCarousel: function(point, action, speed){ + + if (this.isSliding){ + return; + } + + var width, diffX, slideBy; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth() + this.settings.margin; + } + else{ + width = Util.DOM.width(this.settings.target) + this.settings.margin; + } + + speed = Util.coalesce(speed, this.settings.slideSpeed); + + if (window.Math.abs(diffX) < 1){ + return; + } + + + switch (action){ + + case Util.TouchElement.ActionTypes.swipeLeft: + + slideBy = width * -1; + break; + + case Util.TouchElement.ActionTypes.swipeRight: + + slideBy = width; + break; + + default: + + diffX = point.x - this.touchStartPoint.x; + + if (window.Math.abs(diffX) > width / 2){ + slideBy = (diffX > 0) ? width : width * -1; + } + else{ + slideBy = 0; + } + break; + + } + + if (slideBy < 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.next; + } + else if (slideBy > 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.previous; + } + else{ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + + // Check for non-looping carousels + // If we are at the start or end, spring back to the current item element + if (!this.settings.loop){ + if ( (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous && this.currentCacheIndex === 0 ) || (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next && this.currentCacheIndex === this.cache.images.length-1) ){ + slideBy = 0; + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + } + + this.isSliding = true; + this.doSlideCarousel(slideBy, speed); + + }, + + + + /* + * Function: + */ + moveCarousel: function(point){ + + if (this.isSliding){ + return; + } + + if (!this.settings.enableDrag){ + return; + } + + this.doMoveCarousel(point.x - this.touchStartPoint.x); + + }, + + + + /* + * Function: getItemEls + */ + getItemEls: function(){ + + return Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeRight, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: next + */ + next: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: slideshowNext + */ + slideshowNext: function(){ + + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft); + + }, + + + + + /* + * Function: startSlideshow + */ + startSlideshow: function(){ + + this.stopSlideshow(); + + this.isSlideshowActive = true; + + this.slideshowTimeout = window.setTimeout(this.slideshowNext.bind(this), this.settings.slideshowDelay); + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: stopSlideshow + */ + stopSlideshow: function(){ + + if (!Util.isNothing(this.slideshowTimeout)){ + + window.clearTimeout(this.slideshowTimeout); + this.slideshowTimeout = null; + this.isSlideshowActive = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStop, + target: this + }); + + } + + }, + + + + /* + * Function: onSlideByEnd + */ + onSlideByEnd: function(e){ + + if (Util.isNothing(this.isSliding)){ + return; + } + + var itemEls = this.getItemEls(); + + this.isSliding = false; + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + this.currentCacheIndex = this.currentCacheIndex + 1; + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + this.currentCacheIndex = this.currentCacheIndex - 1; + } + + if (this.settings.loop){ + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + + if (this.currentCacheIndex < 0){ + this.currentCacheIndex = this.cache.images.length - 1; + } + else if (this.currentCacheIndex === this.cache.images.length){ + this.currentCacheIndex = 0; + } + + } + else{ + + if (this.cache.images.length > 3){ + + if (this.currentCacheIndex > 1 && this.currentCacheIndex < this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === 1){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + } + + } + + + } + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.setContentLeftPosition(); + this.setImages(true); + } + + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideByEnd, + target: this, + action: this.lastSlideByAction, + cacheIndex: this.currentCacheIndex + }); + + + if (this.isSlideshowActive){ + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.startSlideshow(); + } + else{ + this.stopSlideshow(); + } + + } + + + }, + + + + /* + * Function: onTouch + */ + onTouch: function(action, point){ + + this.stopSlideshow(); + + switch(action){ + + case Util.TouchElement.ActionTypes.touchStart: + this.touchStartPoint = point; + this.touchStartPosition = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.moveCarousel(point); + break; + + case Util.TouchElement.ActionTypes.touchMoveEnd: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + this.slideCarousel(point, action); + break; + + case Util.TouchElement.ActionTypes.tap: + break; + + case Util.TouchElement.ActionTypes.doubleTap: + break; + + + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + this.resetImagePosition(cacheImage.imageEl); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + Util.DOM.addClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemError); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util, TouchElement){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = PhotoSwipe.Carousel.CarouselClass.extend({ + + + /* + * Function: getStartingPos + */ + getStartingPos: function(){ + + var startingPos = this.touchStartPosition; + + if (Util.isNothing(startingPos)){ + startingPos = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + } + + return startingPos; + + }, + + + + /* + * Function: doMoveCarousel + */ + doMoveCarousel: function(xVal){ + + var style; + + if (Util.Browser.isCSSTransformSupported){ + + style = {}; + + style[Util.Animation._transitionPrefix + 'Property'] = 'all'; + style[Util.Animation._transitionPrefix + 'Duration'] = ''; + style[Util.Animation._transitionPrefix + 'TimingFunction'] = ''; + style[Util.Animation._transitionPrefix + 'Delay'] = '0'; + style[Util.Animation._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + xVal + 'px, 0px, 0px)' : 'translate(' + xVal + 'px, 0px)'; + + Util.DOM.setStyle(this.contentEl, style); + + } + else if (!Util.isNothing(window.jQuery)){ + + + window.jQuery(this.contentEl).stop().css('left', this.getStartingPos().x + xVal + 'px'); + + } + + }, + + + + /* + * Function: doSlideCarousel + */ + doSlideCarousel: function(xVal, speed){ + + var animateProps, transform; + + if (speed <= 0){ + + this.slideByEndHandler(); + return; + + } + + + if (Util.Browser.isCSSTransformSupported){ + + transform = Util.coalesce(this.contentEl.style.webkitTransform, this.contentEl.style.MozTransform, this.contentEl.style.transform, ''); + if (transform.indexOf('translate3d(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + else if (transform.indexOf('translate(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + + Util.Animation.slideBy(this.contentEl, xVal, 0, speed, this.slideByEndHandler, this.settings.slideTimingFunction); + + } + else if (!Util.isNothing(window.jQuery)){ + + animateProps = { + left: this.getStartingPos().x + xVal + 'px' + }; + + if (this.settings.animationTimingFunction === 'ease-out'){ + this.settings.animationTimingFunction = 'easeOutQuad'; + } + + if ( Util.isNothing(window.jQuery.easing[this.settings.animationTimingFunction]) ){ + this.settings.animationTimingFunction = 'linear'; + } + + window.jQuery(this.contentEl).animate( + animateProps, + this.settings.slideSpeed, + this.settings.animationTimingFunction, + this.slideByEndHandler + ); + + } + + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.TouchElement +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.CssClasses = { + toolbar: 'ps-toolbar', + toolbarContent: 'ps-toolbar-content', + toolbarTop: 'ps-toolbar-top', + caption: 'ps-caption', + captionBottom: 'ps-caption-bottom', + captionContent: 'ps-caption-content', + close: 'ps-toolbar-close', + play: 'ps-toolbar-play', + previous: 'ps-toolbar-previous', + previousDisabled: 'ps-toolbar-previous-disabled', + next: 'ps-toolbar-next', + nextDisabled: 'ps-toolbar-next-disabled' + }; + + + + PhotoSwipe.Toolbar.ToolbarAction = { + close: 'close', + play: 'play', + next: 'next', + previous: 'previous', + none: 'none' + }; + + + + PhotoSwipe.Toolbar.EventTypes = { + onTap: 'PhotoSwipeToolbarOnClick', + onBeforeShow: 'PhotoSwipeToolbarOnBeforeShow', + onShow: 'PhotoSwipeToolbarOnShow', + onBeforeHide: 'PhotoSwipeToolbarOnBeforeHide', + onHide: 'PhotoSwipeToolbarOnHide' + }; + + + + PhotoSwipe.Toolbar.getToolbar = function(){ + + return '
'; + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.ToolbarClass = klass({ + + + + toolbarEl: null, + closeEl: null, + playEl: null, + previousEl: null, + nextEl: null, + captionEl: null, + captionContentEl: null, + currentCaption: null, + settings: null, + cache: null, + timeout: null, + isVisible: null, + fadeOutHandler: null, + touchStartHandler: null, + touchMoveHandler: null, + clickHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.clearTimeout(); + + this.removeEventHandlers(); + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + Util.DOM.removeChild(this.toolbarEl, this.toolbarEl.parentNode); + Util.DOM.removeChild(this.captionEl, this.captionEl.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(cache, options){ + + var cssClass; + + this.settings = options; + this.cache = cache; + this.isVisible = false; + + this.fadeOutHandler = this.onFadeOut.bind(this); + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.clickHandler = this.onClick.bind(this); + + + cssClass = PhotoSwipe.Toolbar.CssClasses.toolbar; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.toolbarTop; + } + + + // Toolbar + this.toolbarEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + this.settings.getToolbar() + ); + + + Util.DOM.setStyle(this.toolbarEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.toolbarEl); + } + else{ + Util.DOM.appendChild(this.toolbarEl, this.settings.target); + } + Util.DOM.hide(this.toolbarEl); + + this.closeEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.close, this.toolbarEl)[0]; + if (this.settings.preventHide && !Util.isNothing(this.closeEl)){ + Util.DOM.hide(this.closeEl); + } + + this.playEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.play, this.toolbarEl)[0]; + if (this.settings.preventSlideshow && !Util.isNothing(this.playEl)){ + Util.DOM.hide(this.playEl); + } + + this.nextEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.next, this.toolbarEl)[0]; + this.previousEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.previous, this.toolbarEl)[0]; + + + // Caption + cssClass = PhotoSwipe.Toolbar.CssClasses.caption; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.captionBottom; + } + + this.captionEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + '' + ); + Util.DOM.setStyle(this.captionEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.captionEl); + } + else{ + Util.DOM.appendChild(this.captionEl, this.settings.target); + } + Util.DOM.hide(this.captionEl); + + this.captionContentEl = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.Toolbar.CssClasses.captionContent + }, + '' + ); + Util.DOM.appendChild(this.captionContentEl, this.captionEl); + + this.addEventHandlers(); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, toolbarTop, captionTop; + + if (this.settings.target === window){ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = Util.DOM.windowScrollTop(); + captionTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.captionEl); + } + else { + toolbarTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.toolbarEl); + captionTop = Util.DOM.windowScrollTop(); + } + width = Util.DOM.windowWidth(); + } + else{ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = '0'; + captionTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.captionEl); + } + else{ + toolbarTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.toolbarEl); + captionTop = 0; + } + width = Util.DOM.width(this.settings.target); + } + + Util.DOM.setStyle(this.toolbarEl, { + top: toolbarTop + 'px', + width: width + }); + + Util.DOM.setStyle(this.captionEl, { + top: captionTop + 'px', + width: width + }); + }, + + + + /* + * Function: toggleVisibility + */ + toggleVisibility: function(index){ + + if (this.isVisible){ + this.fadeOut(); + } + else{ + this.show(index); + } + + }, + + + + /* + * Function: show + */ + show: function(index){ + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + this.resetPosition(); + this.setToolbarStatus(index); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeShow, + target: this + }); + + this.showToolbar(); + this.setCaption(index); + this.showCaption(); + + this.isVisible = true; + + this.setTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onShow, + target: this + }); + + }, + + + + /* + * Function: setTimeout + */ + setTimeout: function(){ + + if (this.settings.captionAndToolbarAutoHideDelay > 0){ + // Set a timeout to hide the toolbar + this.clearTimeout(); + this.timeout = window.setTimeout(this.fadeOut.bind(this), this.settings.captionAndToolbarAutoHideDelay); + } + + }, + + + + /* + * Function: clearTimeout + */ + clearTimeout: function(){ + + if (!Util.isNothing(this.timeout)){ + window.clearTimeout(this.timeout); + this.timeout = null; + } + + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(){ + + this.clearTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeHide, + target: this + }); + + Util.Animation.fadeOut(this.toolbarEl, this.settings.fadeOutSpeed); + Util.Animation.fadeOut(this.captionEl, this.settings.fadeOutSpeed, this.fadeOutHandler); + + this.isVisible = false; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.add(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.add(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.add(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.remove(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.remove(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: handleTap + */ + handleTap: function(e){ + + this.clearTimeout(); + + var action; + + if (e.target === this.nextEl || Util.DOM.isChildOf(e.target, this.nextEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.next; + } + else if (e.target === this.previousEl || Util.DOM.isChildOf(e.target, this.previousEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.previous; + } + else if (e.target === this.closeEl || Util.DOM.isChildOf(e.target, this.closeEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.close; + } + else if (e.target === this.playEl || Util.DOM.isChildOf(e.target, this.playEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.play; + } + + this.setTimeout(); + + if (Util.isNothing(action)){ + action = PhotoSwipe.Toolbar.ToolbarAction.none; + } + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onTap, + target: this, + action: action, + tapTarget: e.target + }); + + }, + + + + /* + * Function: setCaption + */ + setCaption: function(index){ + + Util.DOM.removeChildren(this.captionContentEl); + + this.currentCaption = Util.coalesce(this.cache.images[index].caption, '\u00A0'); + + if (Util.isObject(this.currentCaption)){ + Util.DOM.appendChild(this.currentCaption, this.captionContentEl); + } + else{ + if (this.currentCaption === ''){ + this.currentCaption = '\u00A0'; + } + Util.DOM.appendText(this.currentCaption, this.captionContentEl); + } + + this.currentCaption = (this.currentCaption === '\u00A0') ? '' : this.currentCaption; + this.resetPosition(); + + }, + + + + /* + * Function: showToolbar + */ + showToolbar: function(){ + + Util.DOM.setStyle(this.toolbarEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.toolbarEl); + + }, + + + + /* + * Function: showCaption + */ + showCaption: function(){ + + if (this.currentCaption === '' || this.captionContentEl.childNodes.length < 1){ + // Empty caption + if (!this.settings.captionAndToolbarShowEmptyCaptions){ + Util.DOM.hide(this.captionEl); + return; + } + } + Util.DOM.setStyle(this.captionEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.captionEl); + + }, + + + + /* + * Function: setToolbarStatus + */ + setToolbarStatus: function(index){ + + if (this.settings.loop){ + return; + } + + Util.DOM.removeClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + Util.DOM.removeClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + + if (index > 0 && index < this.cache.images.length-1){ + return; + } + + if (index === 0){ + if (!Util.isNothing(this.previousEl)){ + Util.DOM.addClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + } + } + + if (index === this.cache.images.length-1){ + if (!Util.isNothing(this.nextEl)){ + Util.DOM.addClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + } + } + + }, + + + + /* + * Function: onFadeOut + */ + onFadeOut: function(){ + + Util.DOM.hide(this.toolbarEl); + Util.DOM.hide(this.captionEl); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onHide, + target: this + }); + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + e.preventDefault(); + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + this.handleTap(e); + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + e.preventDefault(); + + }, + + + + /* + * Function: onClick + */ + onClick: function(e){ + + e.preventDefault(); + this.handleTap(e); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.UILayer.CssClasses = { + uiLayer: 'ps-uilayer' + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.UILayer.UILayerClass = Util.TouchElement.TouchElementClass.extend({ + + + + el: null, + settings: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options){ + + this.settings = options; + + // Main container + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.UILayer.CssClasses.uiLayer + }, + '' + ); + Util.DOM.setStyle(this.el, { + display: 'block', + position: 'absolute', + left: 0, + top: 0, + overflow: 'hidden', + zIndex: this.settings.zIndex, + opacity: 0 + }); + Util.DOM.hide(this.el); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + this.supr(this.el, { + swipe: true, + move: true, + gesture: Util.Browser.iOS, + doubleTap: true, + preventDefaultTouchEvents: this.settings.preventDefaultTouchEvents + }); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + // Set the height and width to fill the document + if (this.settings.target === window){ + Util.DOM.setStyle(this.el, { + top: Util.DOM.windowScrollTop() + 'px', + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }); + } + else{ + Util.DOM.setStyle(this.el, { + top: '0px', + width: Util.DOM.width(this.settings.target), + height: Util.DOM.height(this.settings.target) + }); + } + + }, + + + + /* + * Function: show + */ + show: function(){ + + this.resetPosition(); + Util.DOM.show(this.el); + this.addEventHandlers(); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + this.supr(); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + this.supr(); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.ZoomPanRotate.CssClasses = { + zoomPanRotate: 'ps-zoom-pan-rotate' + }; + + + PhotoSwipe.ZoomPanRotate.EventTypes = { + + onTransform: 'PhotoSwipeZoomPanRotateOnTransform' + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.ZoomPanRotate.ZoomPanRotateClass = klass({ + + el: null, + settings: null, + containerEl: null, + imageEl: null, + transformSettings: null, + panStartingPoint: null, + transformEl: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options, cacheImage, uiLayer){ + + var parentEl, width, height, top; + + this.settings = options; + + if (this.settings.target === window){ + parentEl = document.body; + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + parentEl = this.settings.target; + width = Util.DOM.width(parentEl); + height = Util.DOM.height(parentEl); + top = '0px'; + } + + this.imageEl = cacheImage.imageEl.cloneNode(false); + Util.DOM.setStyle(this.imageEl, { + + zIndex: 1 + + }); + + this.transformSettings = { + + startingScale: 1.0, + scale: 1.0, + startingRotation: 0, + rotation: 0, + startingTranslateX: 0, + startingTranslateY: 0, + translateX: 0, + translateY: 0 + + }; + + + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.ZoomPanRotate.CssClasses.zoomPanRotate + }, + '' + ); + Util.DOM.setStyle(this.el, { + left: 0, + top: top, + position: 'absolute', + width: width, + height: height, + zIndex: this.settings.zIndex, + display: 'block' + }); + + Util.DOM.insertBefore(this.el, uiLayer.el, parentEl); + + if (Util.Browser.iOS){ + this.containerEl = Util.DOM.createElement('div','',''); + Util.DOM.setStyle(this.containerEl, { + left: 0, + top: 0, + width: width, + height: height, + position: 'absolute', + zIndex: 1 + }); + Util.DOM.appendChild(this.imageEl, this.containerEl); + Util.DOM.appendChild(this.containerEl, this.el); + Util.Animation.resetTranslate(this.containerEl); + Util.Animation.resetTranslate(this.imageEl); + this.transformEl = this.containerEl; + } + else{ + Util.DOM.appendChild(this.imageEl, this.el); + this.transformEl = this.imageEl; + } + + }, + + + + /* + * Function: setStartingTranslateFromCurrentTransform + */ + setStartingTranslateFromCurrentTransform: function(){ + + var + transformValue = Util.coalesce(this.transformEl.style.webkitTransform, this.transformEl.style.MozTransform, this.transformEl.style.transform), + transformExploded; + + if (!Util.isNothing(transformValue)){ + + transformExploded = transformValue.match( /translate\((.*?)\)/ ); + + if (!Util.isNothing(transformExploded)){ + + transformExploded = transformExploded[1].split(', '); + this.transformSettings.startingTranslateX = window.parseInt(transformExploded[0], 10); + this.transformSettings.startingTranslateY = window.parseInt(transformExploded[1], 10); + + } + + } + + }, + + + + /* + * Function: getScale + */ + getScale: function(scaleValue){ + + var scale = this.transformSettings.startingScale * scaleValue; + + if (this.settings.minUserZoom !== 0 && scale < this.settings.minUserZoom){ + scale = this.settings.minUserZoom; + } + else if (this.settings.maxUserZoom !== 0 && scale > this.settings.maxUserZoom){ + scale = this.settings.maxUserZoom; + } + + return scale; + + }, + + + + /* + * Function: setStartingScaleAndRotation + */ + setStartingScaleAndRotation: function(scaleValue, rotationValue){ + + this.transformSettings.startingScale = this.getScale(scaleValue); + + this.transformSettings.startingRotation = + (this.transformSettings.startingRotation + rotationValue) % 360; + + }, + + + + /* + * Function: zoomRotate + */ + zoomRotate: function(scaleValue, rotationValue){ + + this.transformSettings.scale = this.getScale(scaleValue); + + this.transformSettings.rotation = + this.transformSettings.startingRotation + rotationValue; + + this.applyTransform(); + + }, + + + + /* + * Function: panStart + */ + panStart: function(point){ + + this.setStartingTranslateFromCurrentTransform(); + + this.panStartingPoint = { + x: point.x, + y: point.y + }; + + }, + + + + /* + * Function: pan + */ + pan: function(point){ + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale , + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + this.transformSettings.startingTranslateX + dxScaleAdjust; + + this.transformSettings.translateY = + this.transformSettings.startingTranslateY + dyScaleAdjust; + + this.applyTransform(); + + }, + + + + /* + * Function: zoomAndPanToPoint + */ + zoomAndPanToPoint: function(scaleValue, point){ + + + if (this.settings.target === window){ + + this.panStart({ + x: Util.DOM.windowWidth() / 2, + y: Util.DOM.windowHeight() / 2 + }); + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale, + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + (this.transformSettings.startingTranslateX + dxScaleAdjust) * -1; + + this.transformSettings.translateY = + (this.transformSettings.startingTranslateY + dyScaleAdjust) * -1; + + } + + + this.setStartingScaleAndRotation(scaleValue, 0); + this.transformSettings.scale = this.transformSettings.startingScale; + + this.transformSettings.rotation = 0; + + this.applyTransform(); + + }, + + + + /* + * Function: applyTransform + */ + applyTransform: function(){ + + var + rotationDegs = this.transformSettings.rotation % 360, + translateX = window.parseInt(this.transformSettings.translateX, 10), + translateY = window.parseInt(this.transformSettings.translateY, 10), + transform = 'scale(' + this.transformSettings.scale + ') rotate(' + rotationDegs + 'deg) translate(' + translateX + 'px, ' + translateY + 'px)'; + + Util.DOM.setStyle(this.transformEl, { + webkitTransform: transform, + MozTransform: transform, + msTransform: transform, + transform: transform + }); + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, + scale: this.transformSettings.scale, + rotation: this.transformSettings.rotation, + rotationDegs: rotationDegs, + translateX: translateX, + translateY: translateY + }); + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, Util){ + + + Util.registerNamespace('Code.PhotoSwipe'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.CssClasses = { + buildingBody: 'ps-building', + activeBody: 'ps-active' + }; + + + + PhotoSwipe.EventTypes = { + + onBeforeShow: 'PhotoSwipeOnBeforeShow', + onShow: 'PhotoSwipeOnShow', + onBeforeHide: 'PhotoSwipeOnBeforeHide', + onHide: 'PhotoSwipeOnHide', + onDisplayImage: 'PhotoSwipeOnDisplayImage', + onResetPosition: 'PhotoSwipeOnResetPosition', + onSlideshowStart: 'PhotoSwipeOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeOnSlideshowStop', + onTouch: 'PhotoSwipeOnTouch', + onBeforeCaptionAndToolbarShow: 'PhotoSwipeOnBeforeCaptionAndToolbarShow', + onCaptionAndToolbarShow: 'PhotoSwipeOnCaptionAndToolbarShow', + onBeforeCaptionAndToolbarHide: 'PhotoSwipeOnBeforeCaptionAndToolbarHide', + onCaptionAndToolbarHide: 'PhotoSwipeOnCaptionAndToolbarHide', + onToolbarTap: 'PhotoSwipeOnToolbarTap', + onBeforeZoomPanRotateShow: 'PhotoSwipeOnBeforeZoomPanRotateShow', + onZoomPanRotateShow: 'PhotoSwipeOnZoomPanRotateShow', + onBeforeZoomPanRotateHide: 'PhotoSwipeOnBeforeZoomPanRotateHide', + onZoomPanRotateHide: 'PhotoSwipeOnZoomPanRotateHide', + onZoomPanRotateTransform: 'PhotoSwipeOnZoomPanRotateTransform' + + }; + + + + PhotoSwipe.instances = []; + PhotoSwipe.activeInstances = []; + + + + /* + * Function: Code.PhotoSwipe.setActivateInstance + */ + PhotoSwipe.setActivateInstance = function(instance){ + + // Can only have one instance per target (i.e. window or div) + var index = Util.arrayIndexOf(instance.settings.target, PhotoSwipe.activeInstances, 'target'); + if (index > -1){ + throw 'Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target'; + } + PhotoSwipe.activeInstances.push({ + target: instance.settings.target, + instance: instance + }); + + }; + + + + /* + * Function: Code.PhotoSwipe.unsetActivateInstance + */ + PhotoSwipe.unsetActivateInstance = function(instance){ + + var index = Util.arrayIndexOf(instance, PhotoSwipe.activeInstances, 'instance'); + PhotoSwipe.activeInstances.splice(index, 1); + + }; + + + + /* + * Function: Code.PhotoSwipe.attach + */ + PhotoSwipe.attach = function(images, options, id){ + + var i, j, instance, image; + + instance = PhotoSwipe.createInstance(images, options, id); + + // Add click event handlers if applicable + for (i=0, j=images.length; i= 2.1){ + this.isBackEventSupported = true; + } + } + + if (!this.isBackEventSupported){ + this.isBackEventSupported = Util.objectHasProperty(window, 'onhashchange'); + } + + this.settings = { + + // General + fadeInSpeed: 250, + fadeOutSpeed: 250, + preventHide: false, + preventSlideshow: false, + zIndex: 1000, + backButtonHideEnabled: true, + enableKeyboard: true, + enableMouseWheel: true, + mouseWheelSpeed: 350, + autoStartSlideshow: false, + jQueryMobile: ( !Util.isNothing(window.jQuery) && !Util.isNothing(window.jQuery.mobile) ), + jQueryMobileDialogHash: '&ui-state=dialog', + enableUIWebViewRepositionTimeout: false, + uiWebViewResetPositionDelay: 500, + target: window, + preventDefaultTouchEvents: true, + + + // Carousel + loop: true, + slideSpeed: 250, + nextPreviousSlideSpeed: 0, + enableDrag: true, + swipeThreshold: 50, + swipeTimeThreshold: 250, + slideTimingFunction: 'ease-out', + slideshowDelay: 3000, + doubleTapSpeed: 250, + margin: 20, + imageScaleMethod: 'fit', // Either "fit", "fitNoUpscale" or "zoom", + + + // Toolbar + captionAndToolbarHide: false, + captionAndToolbarFlipPosition: false, + captionAndToolbarAutoHideDelay: 5000, + captionAndToolbarOpacity: 0.8, + captionAndToolbarShowEmptyCaptions: true, + getToolbar: PhotoSwipe.Toolbar.getToolbar, + + + // ZoomPanRotate + allowUserZoom: true, + allowRotationOnUserZoom: false, + maxUserZoom: 5.0, + minUserZoom: 0.5, + doubleTapZoomLevel: 2.5, + + + // Cache + getImageSource: PhotoSwipe.Cache.Functions.getImageSource, + getImageCaption: PhotoSwipe.Cache.Functions.getImageCaption, + getImageMetaData: PhotoSwipe.Cache.Functions.getImageMetaData, + cacheMode: PhotoSwipe.Cache.Mode.normal + + }; + + Util.extend(this.settings, options); + + if (this.settings.target !== window){ + targetPosition = Util.DOM.getStyle(this.settings.target, 'position'); + if (targetPosition !== 'relative' || targetPosition !== 'absolute'){ + Util.DOM.setStyle(this.settings.target, 'position', 'relative'); + } + } + + if (this.settings.target !== window){ + this.isBackEventSupported = false; + this.settings.backButtonHideEnabled = false; + } + else{ + if (this.settings.preventHide){ + this.settings.backButtonHideEnabled = false; + } + } + + this.cache = new Cache.CacheClass(images, this.settings); + + }, + + + + /* + * Function: show + */ + show: function(obj){ + + var i, j; + + this._isResettingPosition = false; + this.backButtonClicked = false; + + // Work out what the starting index is + if (Util.isNumber(obj)){ + this.currentIndex = obj; + } + else{ + + this.currentIndex = -1; + for (i=0, j=this.originalImages.length; i this.originalImages.length-1){ + throw "Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range"; + } + + // Store a reference to the current window dimensions + // Use this later to double check that a window has actually + // been resized. + this.isAlreadyGettingPage = this.getWindowDimensions(); + + // Set this instance to be the active instance + PhotoSwipe.setActivateInstance(this); + + this.windowDimensions = this.getWindowDimensions(); + + // Create components + if (this.settings.target === window){ + Util.DOM.addClass(window.document.body, PhotoSwipe.CssClasses.buildingBody); + } + else{ + Util.DOM.addClass(this.settings.target, PhotoSwipe.CssClasses.buildingBody); + } + this.createComponents(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeShow, + target: this + }); + + // Fade in the document overlay + this.documentOverlay.fadeIn(this.settings.fadeInSpeed, this.onDocumentOverlayFadeIn.bind(this)); + + }, + + + + /* + * Function: getWindowDimensions + */ + getWindowDimensions: function(){ + + return { + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }; + + }, + + + + /* + * Function: createComponents + */ + createComponents: function(){ + + this.documentOverlay = new DocumentOverlay.DocumentOverlayClass(this.settings); + this.carousel = new Carousel.CarouselClass(this.cache, this.settings); + this.uiLayer = new UILayer.UILayerClass(this.settings); + if (!this.settings.captionAndToolbarHide){ + this.toolbar = new Toolbar.ToolbarClass(this.cache, this.settings); + } + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + if (this._isResettingPosition){ + return; + } + + var newWindowDimensions = this.getWindowDimensions(); + if (!Util.isNothing(this.windowDimensions)){ + if (newWindowDimensions.width === this.windowDimensions.width && newWindowDimensions.height === this.windowDimensions.height){ + // This was added as a fudge for iOS + return; + } + } + + this._isResettingPosition = true; + + this.windowDimensions = newWindowDimensions; + + this.destroyZoomPanRotate(); + + this.documentOverlay.resetPosition(); + this.carousel.resetPosition(); + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.resetPosition(); + } + + this.uiLayer.resetPosition(); + + this._isResettingPosition = false; + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onResetPosition, + target: this + }); + + }, + + + + /* + * Function: addEventHandler + */ + addEventHandler: function(type, handler){ + + Util.Events.add(this, type, handler); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.windowOrientationChangeHandler)){ + + this.windowOrientationChangeHandler = this.onWindowOrientationChange.bind(this); + this.windowScrollHandler = this.onWindowScroll.bind(this); + this.keyDownHandler = this.onKeyDown.bind(this); + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + this.uiLayerTouchHandler = this.onUILayerTouch.bind(this); + this.carouselSlideByEndHandler = this.onCarouselSlideByEnd.bind(this); + this.carouselSlideshowStartHandler = this.onCarouselSlideshowStart.bind(this); + this.carouselSlideshowStopHandler = this.onCarouselSlideshowStop.bind(this); + this.toolbarTapHandler = this.onToolbarTap.bind(this); + this.toolbarBeforeShowHandler = this.onToolbarBeforeShow.bind(this); + this.toolbarShowHandler = this.onToolbarShow.bind(this); + this.toolbarBeforeHideHandler = this.onToolbarBeforeHide.bind(this); + this.toolbarHideHandler = this.onToolbarHide.bind(this); + this.mouseWheelHandler = this.onMouseWheel.bind(this); + this.zoomPanRotateTransformHandler = this.onZoomPanRotateTransform.bind(this); + + } + + // Set window handlers + if (Util.Browser.android){ + // For some reason, resize was more stable than orientationchange in Android + this.orientationEventName = 'resize'; + } + else if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.add(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + else{ + var supportsOrientationChange = !Util.isNothing(window.onorientationchange); + this.orientationEventName = supportsOrientationChange ? 'orientationchange' : 'resize'; + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.add(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + if (this.settings.target === window){ + Util.Events.add(window, 'scroll', this.windowScrollHandler); + } + + if (this.settings.enableKeyboard){ + Util.Events.add(window.document, 'keydown', this.keyDownHandler); + } + + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + + if (this.settings.jQueryMobile){ + window.location.hash = this.settings.jQueryMobileDialogHash; + } + else{ + this.currentHistoryHashValue = 'PhotoSwipe' + new Date().getTime().toString(); + window.location.hash = this.currentHistoryHashValue; + } + + Util.Events.add(window, 'hashchange', this.windowHashChangeHandler); + + } + + if (this.settings.enableMouseWheel){ + Util.Events.add(window, 'mousewheel', this.mouseWheelHandler); + } + + Util.Events.add(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + + if (!Util.isNothing(this.toolbar)){ + Util.Events.add(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.remove(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.remove(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + + Util.Events.remove(window, 'scroll', this.windowScrollHandler); + + if (this.settings.enableKeyboard){ + Util.Events.remove(window.document, 'keydown', this.keyDownHandler); + } + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler); + } + + if (this.settings.enableMouseWheel){ + Util.Events.remove(window, 'mousewheel', this.mouseWheelHandler); + } + + if (!Util.isNothing(this.uiLayer)){ + Util.Events.remove(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + + /* + * Function: hide + */ + hide: function(){ + + if (this.settings.preventHide){ + return; + } + + if (Util.isNothing(this.documentOverlay)){ + throw "Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden"; + } + + if (!Util.isNothing(this.hiding)){ + return; + } + + this.clearUIWebViewResetPositionTimeout(); + + this.destroyZoomPanRotate(); + + this.removeEventHandlers(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeHide, + target: this + }); + + this.uiLayer.dispose(); + this.uiLayer = null; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.dispose(); + this.toolbar = null; + } + + this.carousel.dispose(); + this.carousel = null; + + Util.DOM.removeClass(window.document.body, PhotoSwipe.CssClasses.activeBody); + + this.documentOverlay.dispose(); + this.documentOverlay = null; + + this._isResettingPosition = false; + + // Deactive this instance + PhotoSwipe.unsetActivateInstance(this); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onHide, + target: this + }); + + this.goBackInHistory(); + + }, + + + + /* + * Function: goBackInHistory + */ + goBackInHistory: function(){ + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + if ( !this.backButtonClicked ){ + window.history.back(); + } + } + + }, + + + + /* + * Function: play + */ + play: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!this.settings.preventSlideshow){ + if (!Util.isNothing(this.carousel)){ + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + this.carousel.startSlideshow(); + } + } + + }, + + + + /* + * Function: stop + */ + stop: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.stopSlideshow(); + } + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.previous(); + } + + }, + + + + /* + * Function: next + */ + next: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.next(); + } + + }, + + + + /* + * Function: toggleToolbar + */ + toggleToolbar: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.toggleVisibility(this.currentIndex); + } + + }, + + + + /* + * Function: fadeOutToolbarIfVisible + */ + fadeOutToolbarIfVisible: function(){ + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible && this.settings.captionAndToolbarAutoHideDelay > 0){ + this.toolbar.fadeOut(); + } + + }, + + + + /* + * Function: createZoomPanRotate + */ + createZoomPanRotate: function(){ + + this.stop(); + + if (this.canUserZoom() && !this.isZoomActive()){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateShow); + + this.zoomPanRotate = new ZoomPanRotate.ZoomPanRotateClass( + this.settings, + this.cache.images[this.currentIndex], + this.uiLayer + ); + + // If we don't override this in the event of false + // you will be unable to pan around a zoomed image effectively + this.uiLayer.captureSettings.preventDefaultTouchEvents = true; + + Util.Events.add(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateShow); + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + + } + + }, + + + + /* + * Function: destroyZoomPanRotate + */ + destroyZoomPanRotate: function(){ + + if (!Util.isNothing(this.zoomPanRotate)){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateHide); + + Util.Events.remove(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + this.zoomPanRotate.dispose(); + this.zoomPanRotate = null; + + // Set the preventDefaultTouchEvents back to it was + this.uiLayer.captureSettings.preventDefaultTouchEvents = this.settings.preventDefaultTouchEvents; + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateHide); + + } + + }, + + + + /* + * Function: canUserZoom + */ + canUserZoom: function(){ + + var testEl, cacheImage; + + if (Util.Browser.msie){ + testEl = document.createElement('div'); + if (Util.isNothing(testEl.style.msTransform)){ + return false; + } + } + else if (!Util.Browser.isCSSTransformSupported){ + return false; + } + + if (!this.settings.allowUserZoom){ + return false; + } + + + if (this.carousel.isSliding){ + return false; + } + + cacheImage = this.cache.images[this.currentIndex]; + + if (Util.isNothing(cacheImage)){ + return false; + } + + if (cacheImage.isLoading){ + return false; + } + + return true; + + }, + + + + /* + * Function: isZoomActive + */ + isZoomActive: function(){ + + return (!Util.isNothing(this.zoomPanRotate)); + + }, + + + + /* + * Function: getCurrentImage + */ + getCurrentImage: function(){ + + return this.cache.images[this.currentIndex]; + + }, + + + + /* + * Function: onDocumentOverlayFadeIn + */ + onDocumentOverlayFadeIn: function(e){ + + window.setTimeout(function(){ + + var el = (this.settings.target === window) ? window.document.body : this.settings.target; + + Util.DOM.removeClass(el, PhotoSwipe.CssClasses.buildingBody); + Util.DOM.addClass(el, PhotoSwipe.CssClasses.activeBody); + + this.addEventHandlers(); + + this.carousel.show(this.currentIndex); + + this.uiLayer.show(); + + if (this.settings.autoStartSlideshow){ + this.play(); + } + else if (!Util.isNothing(this.toolbar)){ + this.toolbar.show(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onShow, + target: this + }); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), 250); + + + }, + + + + /* + * Function: setUIWebViewResetPositionTimeout + */ + setUIWebViewResetPositionTimeout: function(){ + + if (!this.settings.enableUIWebViewRepositionTimeout){ + return; + } + + if (!(Util.Browser.iOS && (!Util.Browser.safari))){ + return; + } + + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + this._uiWebViewResetPositionTimeout = window.setTimeout(function(){ + + this.resetPosition(); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), this.settings.uiWebViewResetPositionDelay); + + }, + + + + /* + * Function: clearUIWebViewResetPositionTimeout + */ + clearUIWebViewResetPositionTimeout: function(){ + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + }, + + + + /* + * Function: onWindowScroll + */ + onWindowScroll: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowOrientationChange + */ + onWindowOrientationChange: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowHashChange + */ + onWindowHashChange: function(e){ + + var compareHash = '#' + + ((this.settings.jQueryMobile) ? this.settings.jQueryMobileDialogHash : this.currentHistoryHashValue); + + if (window.location.hash !== compareHash){ + this.backButtonClicked = true; + this.hide(); + } + + }, + + + + /* + * Function: onKeyDown + */ + onKeyDown: function(e){ + + if (e.keyCode === 37) { // Left + e.preventDefault(); + this.previous(); + } + else if (e.keyCode === 39) { // Right + e.preventDefault(); + this.next(); + } + else if (e.keyCode === 38 || e.keyCode === 40) { // Up and down + e.preventDefault(); + } + else if (e.keyCode === 27) { // Escape + e.preventDefault(); + this.hide(); + } + else if (e.keyCode === 32) { // Spacebar + if (!this.settings.hideToolbar){ + this.toggleToolbar(); + } + else{ + this.hide(); + } + e.preventDefault(); + } + else if (e.keyCode === 13) { // Enter + e.preventDefault(); + this.play(); + } + + }, + + + + /* + * Function: onUILayerTouch + */ + onUILayerTouch: function(e){ + + if (this.isZoomActive()){ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.gestureChange: + this.zoomPanRotate.zoomRotate(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.gestureEnd: + this.zoomPanRotate.setStartingScaleAndRotation(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.touchStart: + this.zoomPanRotate.panStart(e.point); + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.zoomPanRotate.pan(e.point); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + this.destroyZoomPanRotate(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeLeft: + this.destroyZoomPanRotate(); + this.next(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeRight: + this.destroyZoomPanRotate(); + this.previous(); + this.toggleToolbar(); + break; + } + + } + else{ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.touchMove: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + + // Hide the toolbar if need be + this.fadeOutToolbarIfVisible(); + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.touchStart: + case Util.TouchElement.ActionTypes.touchMoveEnd: + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.tap: + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + + // Take into consideration the window scroll + if (this.settings.target === window){ + e.point.x -= Util.DOM.windowScrollLeft(); + e.point.y -= Util.DOM.windowScrollTop(); + } + + // Just make sure that if the user clicks out of the image + // that the image does not pan out of view! + var + cacheImageEl = this.cache.images[this.currentIndex].imageEl, + + imageTop = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'top'), 10), + imageLeft = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'left'), 10), + imageRight = imageLeft + Util.DOM.width(cacheImageEl), + imageBottom = imageTop + Util.DOM.height(cacheImageEl); + + if (e.point.x < imageLeft){ + e.point.x = imageLeft; + } + else if (e.point.x > imageRight){ + e.point.x = imageRight; + } + + if (e.point.y < imageTop){ + e.point.y = imageTop; + } + else if (e.point.y > imageBottom){ + e.point.y = imageBottom; + } + + this.createZoomPanRotate(); + if (this.isZoomActive()){ + this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel, e.point); + } + + break; + + case Util.TouchElement.ActionTypes.gestureStart: + this.createZoomPanRotate(); + break; + } + + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onTouch, + target: this, + point: e.point, + action: e.action + }); + + }, + + + + /* + * Function: onCarouselSlideByEnd + */ + onCarouselSlideByEnd: function(e){ + + this.currentIndex = e.cacheIndex; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.setCaption(this.currentIndex); + this.toolbar.setToolbarStatus(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onDisplayImage, + target: this, + action: e.action, + index: e.cacheIndex + }); + + }, + + + + /* + * Function: onToolbarTap + */ + onToolbarTap: function(e){ + + switch(e.action){ + + case Toolbar.ToolbarAction.next: + this.next(); + break; + + case Toolbar.ToolbarAction.previous: + this.previous(); + break; + + case Toolbar.ToolbarAction.close: + this.hide(); + break; + + case Toolbar.ToolbarAction.play: + this.play(); + break; + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onToolbarTap, + target: this, + toolbarAction: e.action, + tapTarget: e.tapTarget + }); + + }, + + + + /* + * Function: onMouseWheel + */ + onMouseWheel: function(e){ + + var + delta = Util.Events.getWheelDelta(e), + dt = e.timeStamp - (this.mouseWheelStartTime || 0); + + if (dt < this.settings.mouseWheelSpeed) { + return; + } + + this.mouseWheelStartTime = e.timeStamp; + + if (this.settings.invertMouseWheel){ + delta = delta * -1; + } + + if (delta < 0){ + this.next(); + } + else if (delta > 0){ + this.previous(); + } + + }, + + + + /* + * Function: onCarouselSlideshowStart + */ + onCarouselSlideshowStart: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: onCarouselSlideshowStop + */ + onCarouselSlideshowStop: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStop, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeShow + */ + onToolbarBeforeShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarShow + */ + onToolbarShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeHide + */ + onToolbarBeforeHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onToolbarHide + */ + onToolbarHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onZoomPanRotateTransform + */ + onZoomPanRotateTransform: function(e){ + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.EventTypes.onZoomPanRotateTransform, + scale: e.scale, + rotation: e.rotation, + rotationDegs: e.rotationDegs, + translateX: e.translateX, + translateY: e.translateY + }); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.Cache, + window.Code.PhotoSwipe.DocumentOverlay, + window.Code.PhotoSwipe.Carousel, + window.Code.PhotoSwipe.Toolbar, + window.Code.PhotoSwipe.UILayer, + window.Code.PhotoSwipe.ZoomPanRotate +)); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.min.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.min.js new file mode 100755 index 000000000..95bc29020 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.min.js @@ -0,0 +1,172 @@ +// PhotoSwipe - http://www.photoswipe.com/ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 +(function(e){if(!Function.prototype.bind)Function.prototype.bind=function(c){var a=[].slice,b=a.call(arguments,1),d=this,f=function(){},g=function(){return d.apply(this instanceof f?this:c||{},b.concat(a.call(arguments)))};f.prototype=d.prototype;g.prototype=new f;return g};if(typeof e.Code==="undefined")e.Code={};e.Code.Util={registerNamespace:function(){var c=arguments,a=null,b,d,f,g,h;b=0;for(g=c.length;bc.DOM.windowHeight()}};c.Browser._detect()})(window,window.Code.Util); +(function(e,c){c.extend(c,{Events:{add:function(a,b,d){this._checkHandlersProperty(a);b==="mousewheel"&&(b=this._normaliseMouseWheelType());typeof a.__eventHandlers[b]==="undefined"&&(a.__eventHandlers[b]=[]);a.__eventHandlers[b].push(d);this._isBrowserObject(a)&&a.addEventListener(b,d,!1)},remove:function(a,b,d){this._checkHandlersProperty(a);b==="mousewheel"&&(b=this._normaliseMouseWheelType());if(a.__eventHandlers[b]instanceof Array){var f,g,e=a.__eventHandlers[b];if(c.isNothing(d)){if(this._isBrowserObject(a)){f= +0;for(g=e.length;f=1;)a.removeChild(a.childNodes[a.childNodes.length-1])},hasAttribute:function(a,b){return!c.isNothing(a.getAttribute(b))},getAttribute:function(a,b,d){a=a.getAttribute(b);c.isNothing(a)&&!c.isNothing(d)&&(a=d);return a},setAttribute:function(a,b,d){if(c.isLikeArray(a)){var f,g;f=0;for(g=a.length;f=1&&c.DOM.setStyle(a,"opacity",0);c.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",g,b,d,f):c.isNothing(e.jQuery)||e.jQuery(a).fadeTo(b,g,d)},fadeTo:function(a,b,d,f,c){this.fadeIn(a, +d,f,c,b)},fadeOut:function(a,b,d,f){if(b<=0&&(c.DOM.setStyle(a,"opacity",0),!c.isNothing(d))){d(a);return}c.Browser.isCSSTransformSupported?this._applyTransition(a,"opacity",0,b,d,f):e.jQuery(a).fadeTo(b,0,d)},slideBy:function(a,b,d,f,g,h){var j={},b=c.coalesce(b,0),d=c.coalesce(d,0),h=c.coalesce(h,"ease-out");j[this._transitionPrefix+"Property"]="all";j[this._transitionPrefix+"Delay"]="0";f===0?(j[this._transitionPrefix+"Duration"]="",j[this._transitionPrefix+"TimingFunction"]=""):(j[this._transitionPrefix+ +"Duration"]=f+"ms",j[this._transitionPrefix+"TimingFunction"]=c.coalesce(h,"ease-out"),c.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler()));j[this._transformLabel]=c.Browser.is3dSupported?"translate3d("+b+"px, "+d+"px, 0px)":"translate("+b+"px, "+d+"px)";if(!c.isNothing(g))a.cclallcallback=g;c.DOM.setStyle(a,j);f===0&&e.setTimeout(function(){this._leaveTransforms(a)}.bind(this),this._applyTransitionDelay)},resetTranslate:function(a){var b={};b[this._transformLabel]=b[this._transformLabel]= +c.Browser.is3dSupported?"translate3d(0px, 0px, 0px)":"translate(0px, 0px)";c.DOM.setStyle(a,b)},_applyTransition:function(a,b,d,f,g,h){var j={},h=c.coalesce(h,"ease-in");j[this._transitionPrefix+"Property"]=b;j[this._transitionPrefix+"Duration"]=f+"ms";j[this._transitionPrefix+"TimingFunction"]=h;j[this._transitionPrefix+"Delay"]="0";c.Events.add(a,this._transitionEndLabel,this._getTransitionEndHandler());c.DOM.setStyle(a,j);c.isNothing(g)||(a["ccl"+b+"callback"]=g);e.setTimeout(function(){c.DOM.setStyle(a, +b,d)},this._applyTransitionDelay)},_onTransitionEnd:function(a){c.Events.remove(a.currentTarget,this._transitionEndLabel,this._getTransitionEndHandler());this._leaveTransforms(a.currentTarget)},_leaveTransforms:function(a){var b=a.style[this._transitionPrefix+"Property"],d=b!==""?"ccl"+b+"callback":"cclallcallback",f,b=c.coalesce(a.style.webkitTransform,a.style.MozTransform,a.style.transform),g,h=e.parseInt(c.DOM.getStyle(a,"left"),0),j=e.parseInt(c.DOM.getStyle(a,"top"),0),i,l,k={};b!==""&&(b=c.Browser.is3dSupported? +b.match(/translate3d\((.*?)\)/):b.match(/translate\((.*?)\)/),c.isNothing(b)||(g=b[1].split(", "),i=e.parseInt(g[0],0),l=e.parseInt(g[1],0)));k[this._transitionPrefix+"Property"]="";k[this._transitionPrefix+"Duration"]="";k[this._transitionPrefix+"TimingFunction"]="";k[this._transitionPrefix+"Delay"]="";c.DOM.setStyle(a,k);e.setTimeout(function(){if(!c.isNothing(g))k={},k[this._transformLabel]="",k.left=h+i+"px",k.top=j+l+"px",c.DOM.setStyle(a,k);c.isNothing(a[d])||(f=a[d],delete a[d],f(a))}.bind(this), +this._applyTransitionDelay)}}})})(window,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.EventTypes={onTouch:"CodeUtilTouchElementOnTouch"};a.TouchElement.ActionTypes={touchStart:"touchStart",touchMove:"touchMove",touchEnd:"touchEnd",touchMoveEnd:"touchMoveEnd",tap:"tap",doubleTap:"doubleTap",swipeLeft:"swipeLeft",swipeRight:"swipeRight",swipeUp:"swipeUp",swipeDown:"swipeDown",gestureStart:"gestureStart",gestureChange:"gestureChange",gestureEnd:"gestureEnd"}})(window,window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.Util.TouchElement");a.TouchElement.TouchElementClass=c({el:null,captureSettings:null,touchStartPoint:null,touchEndPoint:null,touchStartTime:null,doubleTapTimeout:null,touchStartHandler:null,touchMoveHandler:null,touchEndHandler:null,mouseDownHandler:null,mouseMoveHandler:null,mouseUpHandler:null,mouseOutHandler:null,gestureStartHandler:null,gestureChangeHandler:null,gestureEndHandler:null,swipeThreshold:null,swipeTimeThreshold:null,doubleTapSpeed:null,dispose:function(){var b; +this.removeEventHandlers();for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(b,d){this.el=b;this.captureSettings={swipe:!1,move:!1,gesture:!1,doubleTap:!1,preventDefaultTouchEvents:!0};a.extend(this.captureSettings,d);this.swipeThreshold=50;this.doubleTapSpeed=this.swipeTimeThreshold=250;this.touchStartPoint={x:0,y:0};this.touchEndPoint={x:0,y:0}},addEventHandlers:function(){if(a.isNothing(this.touchStartHandler))this.touchStartHandler=this.onTouchStart.bind(this),this.touchMoveHandler= +this.onTouchMove.bind(this),this.touchEndHandler=this.onTouchEnd.bind(this),this.mouseDownHandler=this.onMouseDown.bind(this),this.mouseMoveHandler=this.onMouseMove.bind(this),this.mouseUpHandler=this.onMouseUp.bind(this),this.mouseOutHandler=this.onMouseOut.bind(this),this.gestureStartHandler=this.onGestureStart.bind(this),this.gestureChangeHandler=this.onGestureChange.bind(this),this.gestureEndHandler=this.onGestureEnd.bind(this);a.Events.add(this.el,"touchstart",this.touchStartHandler);this.captureSettings.move&& +a.Events.add(this.el,"touchmove",this.touchMoveHandler);a.Events.add(this.el,"touchend",this.touchEndHandler);a.Events.add(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.add(this.el,"gesturestart",this.gestureStartHandler),a.Events.add(this.el,"gesturechange",this.gestureChangeHandler),a.Events.add(this.el,"gestureend",this.gestureEndHandler))},removeEventHandlers:function(){a.Events.remove(this.el,"touchstart",this.touchStartHandler); +this.captureSettings.move&&a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);a.Events.remove(this.el,"mousedown",this.mouseDownHandler);a.Browser.isGestureSupported&&this.captureSettings.gesture&&(a.Events.remove(this.el,"gesturestart",this.gestureStartHandler),a.Events.remove(this.el,"gesturechange",this.gestureChangeHandler),a.Events.remove(this.el,"gestureend",this.gestureEndHandler))},getTouchPoint:function(a){return{x:a[0].pageX, +y:a[0].pageY}},fireTouchEvent:function(b){var d=0,f=0,c=0,h,d=this.touchEndPoint.x-this.touchStartPoint.x,f=this.touchEndPoint.y-this.touchStartPoint.y,c=Math.sqrt(d*d+f*f);if(this.captureSettings.swipe&&(h=new Date,h-=this.touchStartTime,h<=this.swipeTimeThreshold)){if(e.Math.abs(d)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:d<0?a.TouchElement.ActionTypes.swipeLeft:a.TouchElement.ActionTypes.swipeRight,targetEl:b.target, +currentTargetEl:b.currentTarget});return}if(e.Math.abs(f)>=this.swipeThreshold){a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:f<0?a.TouchElement.ActionTypes.swipeUp:a.TouchElement.ActionTypes.swipeDown,targetEl:b.target,currentTargetEl:b.currentTarget});return}}c>1?a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMoveEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}): +this.captureSettings.doubleTap?a.isNothing(this.doubleTapTimeout)?this.doubleTapTimeout=e.setTimeout(function(){this.doubleTapTimeout=null;a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})}.bind(this),this.doubleTapSpeed):(e.clearTimeout(this.doubleTapTimeout),this.doubleTapTimeout=null,a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint, +action:a.TouchElement.ActionTypes.doubleTap,targetEl:b.target,currentTargetEl:b.currentTarget})):a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,point:this.touchEndPoint,action:a.TouchElement.ActionTypes.tap,targetEl:b.target,currentTargetEl:b.currentTarget})},onTouchStart:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();a.Events.remove(this.el,"mousedown",this.mouseDownHandler);var d=a.Events.getTouchEvent(b).touches;d.length>1&&this.captureSettings.gesture? +this.isGesture=!0:(this.touchStartTime=new Date,this.isGesture=!1,this.touchStartPoint=this.getTouchPoint(d),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget}))},onTouchMove:function(b){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();if(!this.isGesture||!this.captureSettings.gesture){var d=a.Events.getTouchEvent(b).touches;a.Events.fire(this, +{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove,point:this.getTouchPoint(d),targetEl:b.target,currentTargetEl:b.currentTarget})}},onTouchEnd:function(b){if(!this.isGesture||!this.captureSettings.gesture){this.captureSettings.preventDefaultTouchEvents&&b.preventDefault();var d=a.Events.getTouchEvent(b);this.touchEndPoint=this.getTouchPoint(!a.isNothing(d.changedTouches)?d.changedTouches:d.touches);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch, +target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)}},onMouseDown:function(b){b.preventDefault();a.Events.remove(this.el,"touchstart",this.mouseDownHandler);a.Events.remove(this.el,"touchmove",this.touchMoveHandler);a.Events.remove(this.el,"touchend",this.touchEndHandler);this.captureSettings.move&&a.Events.add(this.el,"mousemove",this.mouseMoveHandler);a.Events.add(this.el,"mouseup",this.mouseUpHandler); +a.Events.add(this.el,"mouseout",this.mouseOutHandler);this.touchStartTime=new Date;this.isGesture=!1;this.touchStartPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchStart,point:this.touchStartPoint,targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseMove:function(b){b.preventDefault();a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchMove, +point:a.Events.getMousePosition(b),targetEl:b.target,currentTargetEl:b.currentTarget})},onMouseUp:function(b){b.preventDefault();this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler);a.Events.remove(this.el,"mouseup",this.mouseUpHandler);a.Events.remove(this.el,"mouseout",this.mouseOutHandler);this.touchEndPoint=a.Events.getMousePosition(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint, +targetEl:b.target,currentTargetEl:b.currentTarget});this.fireTouchEvent(b)},onMouseOut:function(b){var d=b.relatedTarget;if(!(this.el===d||a.DOM.isChildOf(d,this.el)))b.preventDefault(),this.captureSettings.move&&a.Events.remove(this.el,"mousemove",this.mouseMoveHandler),a.Events.remove(this.el,"mouseup",this.mouseUpHandler),a.Events.remove(this.el,"mouseout",this.mouseOutHandler),this.touchEndPoint=a.Events.getMousePosition(b),a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this, +action:a.TouchElement.ActionTypes.touchEnd,point:this.touchEndPoint,targetEl:b.target,currentTargetEl:b.currentTarget}),this.fireTouchEvent(b)},onGestureStart:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureStart,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureChange:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b); +a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureChange,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})},onGestureEnd:function(b){b.preventDefault();var d=a.Events.getTouchEvent(b);a.Events.fire(this,{type:a.TouchElement.EventTypes.onTouch,target:this,action:a.TouchElement.ActionTypes.gestureEnd,scale:d.scale,rotation:d.rotation,targetEl:b.target,currentTargetEl:b.currentTarget})}})})(window,window.klass, +window.Code.Util);(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Image");e.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=e.Code.PhotoSwipe;b.Image.ImageClass=c({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var d;this.shrinkImage();for(d in this)a.objectHasProperty(this,d)&&(this[d]=null)},initialize:function(a,b,c,h){this.refObj=a;this.src=this.originalSrc=b;this.caption=c;this.metaData=h;this.imageEl=new e.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler= +this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror= +this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth, +this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window, +window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Cache");e=e.Code.PhotoSwipe;e.Cache.Mode={normal:"normal",aggressive:"aggressive"};e.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var d,f,c;d=0;for(f=b.childNodes.length;df&& +(f=a.DOM.windowHeight())}else b=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),c="0px";a.DOM.setStyle(this.el,{width:b,height:f,top:c})},fadeIn:function(b,f){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,b,f)}})})(window,window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Carousel");e=e.Code.PhotoSwipe;e.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};e.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};e.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window, +window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=e.Code.PhotoSwipe;b.Carousel.CarouselClass=c({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var d,f,c;f=0;for(c=this.cache.images.length;f0&&a.DOM.setStyle(j,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(j,this.contentEl);this.settings.target===e?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)}, +resetPosition:function(){var d,f,c,h,j,i;this.settings.target===e?(d=a.DOM.windowWidth(),f=a.DOM.windowHeight(),c=a.DOM.windowScrollTop()+"px"):(d=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),c="0px");h=this.settings.margin>0?d+this.settings.margin:d;j=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);h*=j.length;a.DOM.setStyle(this.el,{top:c,width:d,height:f});a.DOM.setStyle(this.contentEl,{width:h,height:f});c=0;for(h=j.length;cj&&(c=j/e,e=Math.round(e*c),h=Math.round(h*c)),h>i&&(c=i/h,h=Math.round(h*c),e=Math.round(e*c))):(c=b.isLandscape?j/b.naturalWidth:i/b.naturalHeight,e=Math.round(b.naturalWidth* +c),h=Math.round(b.naturalHeight*c),this.settings.imageScaleMethod==="zoom"?(c=1,hj?c=j/e:h>i&&(c=i/h),c!==1&&(e=Math.round(e*c),h=Math.round(h*c))));a.DOM.setStyle(b,{position:"absolute",width:e,height:h,top:Math.round((i-h)/2)+"px",left:Math.round((j-e)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var b,c,g;b=this.settings.target===e?a.DOM.windowWidth():a.DOM.width(this.settings.target); +c=this.getItemEls();g=0;this.settings.loop?g=(b+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?g=(c.length-1)*(b+this.settings.margin)*-1:this.currentCacheIndex>0&&(g=(b+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:g+"px"})},show:function(d){this.currentCacheIndex=d;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var d=this.getItemEls(),c,e;c=0;for(e=d.length;cthis.cache.images.length-1&&(b=0),e<0&&(e=this.cache.images.length-1),b=this.cache.getImages([e,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2]),this.addCacheImageToItemEl(b[0], +c[0])):c.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],c[0])):c.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],c[0]),this.addCacheImageToItemEl(b[1],c[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[0],c[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex, +this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],c[0]),this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],c[2]),this.addCacheImageToItemEl(b[1],c[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]), +a||this.addCacheImageToItemEl(b[1],c[1]),this.addCacheImageToItemEl(b[2],c[2])),this.addCacheImageToItemEl(b[0],c[0]))},addCacheImageToItemEl:function(d,c){a.DOM.removeClass(c,b.Carousel.CssClasses.itemError);a.DOM.addClass(c,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(c);a.DOM.setStyle(d.imageEl,{display:"none"});a.DOM.appendChild(d.imageEl,c);a.Animation.resetTranslate(d.imageEl);a.Events.add(d,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(d,b.Image.EventTypes.onError, +this.imageErrorHandler);d.load()},slideCarousel:function(d,c,g){if(!this.isSliding){var h,j;h=this.settings.target===e?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;g=a.coalesce(g,this.settings.slideSpeed);if(!(e.Math.abs(j)<1)){switch(c){case a.TouchElement.ActionTypes.swipeLeft:d=h*-1;break;case a.TouchElement.ActionTypes.swipeRight:d=h;break;default:j=d.x-this.touchStartPoint.x,d=e.Math.abs(j)>h/2?j>0?h:h*-1:0}this.lastSlideByAction=d<0?b.Carousel.SlideByAction.next: +d>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))d=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(d,g)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)}, +getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow(); +this.isSlideshowActive=!0;this.slideshowTimeout=e.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))e.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var d=this.getItemEls(); +this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(d[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(d[d.length-1],d[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex=== +this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex
'}})(window,window.klass,window.Code.Util); +(function(e,c,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=e.Code.PhotoSwipe;b.Toolbar.ToolbarClass=c({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var b;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl); +a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(b in this)a.objectHasProperty(this,b)&&(this[b]=null)},initialize:function(d,c){var g;this.settings=c;this.cache=d;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);g=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&& +(g=g+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":g},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl); +this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];g=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(g=g+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":g},"");a.DOM.setStyle(this.captionEl, +{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===e?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var b,c,g;this.settings.target===e?(this.settings.captionAndToolbarFlipPosition? +(c=a.DOM.windowScrollTop(),g=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(c=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),g=a.DOM.windowScrollTop()),b=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(c="0",g=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(c=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),g=0),b=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:c+"px", +width:b});a.DOM.setStyle(this.captionEl,{top:g+"px",width:b})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(d){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(d);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(d);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay> +0)this.clearTimeout(),this.timeout=e.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))e.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&& +(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl, +"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(d){this.clearTimeout();var c;if(d.target===this.nextEl||a.DOM.isChildOf(d.target,this.nextEl))c=b.Toolbar.ToolbarAction.next;else if(d.target===this.previousEl||a.DOM.isChildOf(d.target,this.previousEl))c=b.Toolbar.ToolbarAction.previous;else if(d.target===this.closeEl||a.DOM.isChildOf(d.target,this.closeEl))c=b.Toolbar.ToolbarAction.close;else if(d.target===this.playEl||a.DOM.isChildOf(d.target, +this.playEl))c=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(c))c=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:c,tapTarget:d.target})},setCaption:function(b){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[b].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0"; +a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}), +a.DOM.show(this.captionEl))},setToolbarStatus:function(d){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),d>0&&dthis.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint= +{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,c){if(this.settings.target===e){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var g=(c.y-this.panStartingPoint.y)/this.transformSettings.scale; +this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(c.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+g)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,f=e.parseInt(this.transformSettings.translateX,10), +g=e.parseInt(this.transformSettings.translateY,10),h="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+f+"px, "+g+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:h,MozTransform:h,msTransform:h,transform:h});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:f,translateY:g})}})})(window,window.klass,window.Code.Util); +(function(e,c){c.registerNamespace("Code.PhotoSwipe");var a=e.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow", +onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"}; +a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(c.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=c.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,d,e){var g,h;g=a.createInstance(b,d,e);d=0;for(e= +b.length;d=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(e,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0, +mouseWheelSpeed:350,autoStartSlideshow:!1,jQueryMobile:!a.isNothing(e.jQuery)&&!a.isNothing(e.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:e,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1, +captionAndToolbarAutoHideDelay:5E3,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:i.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:i.Cache.Functions.getImageSource,getImageCaption:i.Cache.Functions.getImageCaption,getImageMetaData:i.Cache.Functions.getImageMetaData,cacheMode:i.Cache.Mode.normal};a.extend(this.settings,d);this.settings.target!==e&&(d=a.DOM.getStyle(this.settings.target, +"position"),(d!=="relative"||d!=="absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==e)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,d;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(d=this.originalImages.length;cthis.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();i.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===e?a.DOM.addClass(e.document.body,i.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,i.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:i.EventTypes.onBeforeShow, +target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new d.DocumentOverlayClass(this.settings);this.carousel=new f.CarouselClass(this.cache,this.settings);this.uiLayer=new h.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new g.ToolbarClass(this.cache,this.settings)}, +resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:i.EventTypes.onResetPosition, +target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this), +this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler= +this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(e.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(e.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(e,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===e&&a.Events.add(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&& +a.Events.add(e.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?e.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),e.location.hash=this.currentHistoryHashValue),a.Events.add(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(e,"mousewheel", +this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,g.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar, +g.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,g.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,g.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,g.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(e.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(e,this.orientationEventName, +this.windowOrientationChangeHandler);a.Events.remove(e,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(e.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(e,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(e,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler); +a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,g.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,g.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar, +g.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,g.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,g.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this, +{type:i.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(e.document.body,i.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;i.unsetActivateInstance(this);a.Events.fire(this,{type:i.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&& +this.settings.backButtonHideEnabled&&(this.backButtonClicked||e.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()|| +a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,i.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new j.ZoomPanRotateClass(this.settings, +this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,i.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,i.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,i.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate, +i.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,i.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1; +b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){e.setTimeout(function(){var b=this.settings.target===e?e.document.body:this.settings.target;a.DOM.removeClass(b,i.CssClasses.buildingBody);a.DOM.addClass(b,i.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex); +this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:i.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout= +e.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||e.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(e.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash: +this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale, +this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate(); +this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point); +break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===e&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,d=e.parseInt(a.DOM.getStyle(c,"top"),10),f=e.parseInt(a.DOM.getStyle(c,"left"),10),g=f+a.DOM.width(c),c=d+a.DOM.height(c);if(b.point.xg)b.point.x=g;if(b.point.yc)b.point.y=c; +this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:i.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:i.EventTypes.onDisplayImage, +target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case g.ToolbarAction.next:this.next();break;case g.ToolbarAction.previous:this.previous();break;case g.ToolbarAction.close:this.hide();break;case g.ToolbarAction.play:this.play()}a.Events.fire(this,{type:i.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:i.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:i.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:i.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:i.EventTypes.onCaptionAndToolbarShow, +target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:i.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:i.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:i.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache, +window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.js new file mode 100755 index 000000000..39330fb41 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.js @@ -0,0 +1,4344 @@ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.EventTypes = { + + onLoad: 'onLoad', + onError: 'onError' + + }; + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.ImageClass = klass({ + + + + refObj: null, + imageEl: null, + src: null, + caption: null, + metaData: null, + imageLoadHandler: null, + imageErrorHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i; + + this.shrinkImage(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(refObj, src, caption, metaData){ + + this.refObj = refObj; + // This is needed. Webkit resolves the src + // value which means we can't compare against it in the load function + this.originalSrc = src; + this.src = src; + this.caption = caption; + this.metaData = metaData; + + this.imageEl = new window.Image(); + + this.imageLoadHandler = this.onImageLoad.bind(this); + this.imageErrorHandler = this.onImageError.bind(this); + + }, + + + + /* + * Function: load + */ + load: function(){ + + this.imageEl.originalSrc = Util.coalesce(this.imageEl.originalSrc, ''); + + if (this.imageEl.originalSrc === this.src){ + + if (this.imageEl.isError){ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + } + else{ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + } + return; + } + + this.imageEl.isError = false; + this.imageEl.isLoading = true; + this.imageEl.naturalWidth = null; + this.imageEl.naturalHeight = null; + this.imageEl.isLandscape = false; + this.imageEl.onload = this.imageLoadHandler; + this.imageEl.onerror = this.imageErrorHandler; + this.imageEl.onabort = this.imageErrorHandler; + this.imageEl.originalSrc = this.src; + this.imageEl.src = this.src; + + }, + + + + /* + * Function: shrinkImage + */ + shrinkImage: function(){ + + if (Util.isNothing(this.imageEl)){ + return; + } + + if (this.imageEl.src.indexOf(this.src) > -1){ + this.imageEl.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + if (!Util.isNothing(this.imageEl.parentNode)){ + Util.DOM.removeChild(this.imageEl, this.imageEl.parentNode); + } + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + this.imageEl.onload = null; + this.imageEl.naturalWidth = Util.coalesce(this.imageEl.naturalWidth, this.imageEl.width); + this.imageEl.naturalHeight = Util.coalesce(this.imageEl.naturalHeight, this.imageEl.height); + this.imageEl.isLandscape = (this.imageEl.naturalWidth > this.imageEl.naturalHeight); + this.imageEl.isLoading = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + this.imageEl.onload = null; + this.imageEl.onerror = null; + this.imageEl.onabort = null; + this.imageEl.isLoading = false; + this.imageEl.isError = true; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Cache'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Cache.Mode = { + + normal: 'normal', + aggressive: 'aggressive' + + }; + + + + PhotoSwipe.Cache.Functions = { + + /* + * Function: getImageSource + * Default method for returning an image's source + */ + getImageSource: function(el){ + return el.href; + }, + + + + /* + * Function: getImageCaption + * Default method for returning an image's caption + * Assumes the el is an anchor and the first child is the + * image. The returned value is the "alt" attribute of the + * image. + */ + getImageCaption: function(el){ + + if (el.nodeName === "IMG"){ + return Util.DOM.getAttribute(el, 'alt'); + } + var i, j, childEl; + for (i=0, j=el.childNodes.length; i height){ + height = Util.DOM.windowHeight(); + } + + } + else{ + + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + + } + + Util.DOM.setStyle(this.el, { + width: width, + height: height, + top: top + }); + + }, + + + + /* + * Function: fadeIn + */ + fadeIn: function(speed, callback){ + + this.resetPosition(); + + Util.DOM.setStyle(this.el, 'opacity', 0); + Util.DOM.show(this.el); + + Util.Animation.fadeIn(this.el, speed, callback); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Carousel.EventTypes = { + + onSlideByEnd: 'PhotoSwipeCarouselOnSlideByEnd', + onSlideshowStart: 'PhotoSwipeCarouselOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeCarouselOnSlideshowStop' + + }; + + + + PhotoSwipe.Carousel.CssClasses = { + carousel: 'ps-carousel', + content: 'ps-carousel-content', + item: 'ps-carousel-item', + itemLoading: 'ps-carousel-item-loading', + itemError: 'ps-carousel-item-error' + }; + + + + PhotoSwipe.Carousel.SlideByAction = { + previous: 'previous', + current: 'current', + next: 'next' + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = klass({ + + + + el: null, + contentEl: null, + settings: null, + cache: null, + slideByEndHandler: null, + currentCacheIndex: null, + isSliding: null, + isSlideshowActive: null, + lastSlideByAction: null, + touchStartPoint: null, + touchStartPosition: null, + imageLoadHandler: null, + imageErrorHandler: null, + slideshowTimeout: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i, j; + + for (i=0, j=this.cache.images.length; i 0){ + Util.DOM.setStyle(itemEl, { + marginRight: this.settings.margin + 'px' + }); + } + + Util.DOM.appendChild(itemEl, this.contentEl); + + } + + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + }, + + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, height, top, itemWidth, itemEls, contentWidth, i, j, itemEl, imageEl; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + } + + itemWidth = (this.settings.margin > 0) ? width + this.settings.margin : width; + itemEls = Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + contentWidth = itemWidth * itemEls.length; + + + // Set the height and width to fill the document + Util.DOM.setStyle(this.el, { + top: top, + width: width, + height: height + }); + + + // Set the height and width of the content el + Util.DOM.setStyle(this.contentEl, { + width: contentWidth, + height: height + }); + + + // Set the height and width of item elements + for (i=0, j=itemEls.length; i maxWidth){ + scale = maxWidth / newWidth; + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + if (newHeight > maxHeight){ + scale = maxHeight / newHeight; + newHeight = Math.round(newHeight * scale); + newWidth = Math.round(newWidth * scale); + } + + } + else{ + + if (imageEl.isLandscape) { + // Ensure the width fits the screen + scale = maxWidth / imageEl.naturalWidth; + } + else { + // Ensure the height fits the screen + scale = maxHeight / imageEl.naturalHeight; + } + + newWidth = Math.round(imageEl.naturalWidth * scale); + newHeight = Math.round(imageEl.naturalHeight * scale); + + if (this.settings.imageScaleMethod === 'zoom'){ + + scale = 1; + if (newHeight < maxHeight){ + scale = maxHeight /newHeight; + } + else if (newWidth < maxWidth){ + scale = maxWidth /newWidth; + } + + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + } + else if (this.settings.imageScaleMethod === 'fit') { + // Rescale again to ensure full image fits into the viewport + scale = 1; + if (newWidth > maxWidth) { + scale = maxWidth / newWidth; + } + else if (newHeight > maxHeight) { + scale = maxHeight / newHeight; + } + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + } + + } + + newTop = Math.round( ((maxHeight - newHeight) / 2) ) + 'px'; + newLeft = Math.round( ((maxWidth - newWidth) / 2) ) + 'px'; + + Util.DOM.setStyle(imageEl, { + position: 'absolute', + width: newWidth, + height: newHeight, + top: newTop, + left: newLeft, + display: 'block' + }); + + }, + + + + /* + * Function: setContentLeftPosition + */ + setContentLeftPosition: function(){ + + var width, itemEls, left; + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + } + else{ + width = Util.DOM.width(this.settings.target); + } + + itemEls = this.getItemEls(); + left = 0; + + if (this.settings.loop){ + left = (width + this.settings.margin) * -1; + } + else{ + + if (this.currentCacheIndex === this.cache.images.length-1){ + left = ((itemEls.length-1) * (width + this.settings.margin)) * -1; + } + else if (this.currentCacheIndex > 0){ + left = (width + this.settings.margin) * -1; + } + + } + + Util.DOM.setStyle(this.contentEl, { + left: left + 'px' + }); + + }, + + + + /* + * Function: + */ + show: function(index){ + + this.currentCacheIndex = index; + this.resetPosition(); + this.setImages(false); + Util.DOM.show(this.el); + + Util.Animation.resetTranslate(this.contentEl); + var + itemEls = this.getItemEls(), + i, j; + for (i=0, j=itemEls.length; i this.cache.images.length-1){ + nextCacheIndex = 0; + } + if (previousCacheIndex < 0){ + previousCacheIndex = this.cache.images.length-1; + } + + cacheImages = this.cache.getImages([ + previousCacheIndex, + this.currentCacheIndex, + nextCacheIndex + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + + } + else{ + + if (itemEls.length === 1){ + if (!ignoreCurrent){ + // Current + cacheImages = this.cache.getImages([ + this.currentCacheIndex + ]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + } + else if (itemEls.length === 2){ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + else{ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1, + this.currentCacheIndex + 2 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + else if (this.currentCacheIndex === this.cache.images.length-1){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 2, + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + + } + + }, + + + + /* + * Function: addCacheImageToItemEl + */ + addCacheImageToItemEl: function(cacheImage, itemEl){ + + Util.DOM.removeClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemError); + Util.DOM.addClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemLoading); + + Util.DOM.removeChildren(itemEl); + + Util.DOM.setStyle(cacheImage.imageEl, { + display: 'none' + }); + Util.DOM.appendChild(cacheImage.imageEl, itemEl); + + Util.Animation.resetTranslate(cacheImage.imageEl); + + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + cacheImage.load(); + + }, + + + + /* + * Function: slideCarousel + */ + slideCarousel: function(point, action, speed){ + + if (this.isSliding){ + return; + } + + var width, diffX, slideBy; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth() + this.settings.margin; + } + else{ + width = Util.DOM.width(this.settings.target) + this.settings.margin; + } + + speed = Util.coalesce(speed, this.settings.slideSpeed); + + if (window.Math.abs(diffX) < 1){ + return; + } + + + switch (action){ + + case Util.TouchElement.ActionTypes.swipeLeft: + + slideBy = width * -1; + break; + + case Util.TouchElement.ActionTypes.swipeRight: + + slideBy = width; + break; + + default: + + diffX = point.x - this.touchStartPoint.x; + + if (window.Math.abs(diffX) > width / 2){ + slideBy = (diffX > 0) ? width : width * -1; + } + else{ + slideBy = 0; + } + break; + + } + + if (slideBy < 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.next; + } + else if (slideBy > 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.previous; + } + else{ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + + // Check for non-looping carousels + // If we are at the start or end, spring back to the current item element + if (!this.settings.loop){ + if ( (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous && this.currentCacheIndex === 0 ) || (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next && this.currentCacheIndex === this.cache.images.length-1) ){ + slideBy = 0; + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + } + + this.isSliding = true; + this.doSlideCarousel(slideBy, speed); + + }, + + + + /* + * Function: + */ + moveCarousel: function(point){ + + if (this.isSliding){ + return; + } + + if (!this.settings.enableDrag){ + return; + } + + this.doMoveCarousel(point.x - this.touchStartPoint.x); + + }, + + + + /* + * Function: getItemEls + */ + getItemEls: function(){ + + return Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeRight, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: next + */ + next: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: slideshowNext + */ + slideshowNext: function(){ + + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft); + + }, + + + + + /* + * Function: startSlideshow + */ + startSlideshow: function(){ + + this.stopSlideshow(); + + this.isSlideshowActive = true; + + this.slideshowTimeout = window.setTimeout(this.slideshowNext.bind(this), this.settings.slideshowDelay); + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: stopSlideshow + */ + stopSlideshow: function(){ + + if (!Util.isNothing(this.slideshowTimeout)){ + + window.clearTimeout(this.slideshowTimeout); + this.slideshowTimeout = null; + this.isSlideshowActive = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStop, + target: this + }); + + } + + }, + + + + /* + * Function: onSlideByEnd + */ + onSlideByEnd: function(e){ + + if (Util.isNothing(this.isSliding)){ + return; + } + + var itemEls = this.getItemEls(); + + this.isSliding = false; + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + this.currentCacheIndex = this.currentCacheIndex + 1; + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + this.currentCacheIndex = this.currentCacheIndex - 1; + } + + if (this.settings.loop){ + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + + if (this.currentCacheIndex < 0){ + this.currentCacheIndex = this.cache.images.length - 1; + } + else if (this.currentCacheIndex === this.cache.images.length){ + this.currentCacheIndex = 0; + } + + } + else{ + + if (this.cache.images.length > 3){ + + if (this.currentCacheIndex > 1 && this.currentCacheIndex < this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === 1){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + } + + } + + + } + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.setContentLeftPosition(); + this.setImages(true); + } + + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideByEnd, + target: this, + action: this.lastSlideByAction, + cacheIndex: this.currentCacheIndex + }); + + + if (this.isSlideshowActive){ + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.startSlideshow(); + } + else{ + this.stopSlideshow(); + } + + } + + + }, + + + + /* + * Function: onTouch + */ + onTouch: function(action, point){ + + this.stopSlideshow(); + + switch(action){ + + case Util.TouchElement.ActionTypes.touchStart: + this.touchStartPoint = point; + this.touchStartPosition = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.moveCarousel(point); + break; + + case Util.TouchElement.ActionTypes.touchMoveEnd: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + this.slideCarousel(point, action); + break; + + case Util.TouchElement.ActionTypes.tap: + break; + + case Util.TouchElement.ActionTypes.doubleTap: + break; + + + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + this.resetImagePosition(cacheImage.imageEl); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + Util.DOM.addClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemError); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util, TouchElement){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = PhotoSwipe.Carousel.CarouselClass.extend({ + + + /* + * Function: getStartingPos + */ + getStartingPos: function(){ + + var startingPos = this.touchStartPosition; + + if (Util.isNothing(startingPos)){ + startingPos = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + } + + return startingPos; + + }, + + + + /* + * Function: doMoveCarousel + */ + doMoveCarousel: function(xVal){ + + var style; + + if (Util.Browser.isCSSTransformSupported){ + + style = {}; + + style[Util.Animation._transitionPrefix + 'Property'] = 'all'; + style[Util.Animation._transitionPrefix + 'Duration'] = ''; + style[Util.Animation._transitionPrefix + 'TimingFunction'] = ''; + style[Util.Animation._transitionPrefix + 'Delay'] = '0'; + style[Util.Animation._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + xVal + 'px, 0px, 0px)' : 'translate(' + xVal + 'px, 0px)'; + + Util.DOM.setStyle(this.contentEl, style); + + } + else if (!Util.isNothing(window.jQuery)){ + + + window.jQuery(this.contentEl).stop().css('left', this.getStartingPos().x + xVal + 'px'); + + } + + }, + + + + /* + * Function: doSlideCarousel + */ + doSlideCarousel: function(xVal, speed){ + + var animateProps, transform; + + if (speed <= 0){ + + this.slideByEndHandler(); + return; + + } + + + if (Util.Browser.isCSSTransformSupported){ + + transform = Util.coalesce(this.contentEl.style.webkitTransform, this.contentEl.style.MozTransform, this.contentEl.style.transform, ''); + if (transform.indexOf('translate3d(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + else if (transform.indexOf('translate(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + + Util.Animation.slideBy(this.contentEl, xVal, 0, speed, this.slideByEndHandler, this.settings.slideTimingFunction); + + } + else if (!Util.isNothing(window.jQuery)){ + + animateProps = { + left: this.getStartingPos().x + xVal + 'px' + }; + + if (this.settings.animationTimingFunction === 'ease-out'){ + this.settings.animationTimingFunction = 'easeOutQuad'; + } + + if ( Util.isNothing(window.jQuery.easing[this.settings.animationTimingFunction]) ){ + this.settings.animationTimingFunction = 'linear'; + } + + window.jQuery(this.contentEl).animate( + animateProps, + this.settings.slideSpeed, + this.settings.animationTimingFunction, + this.slideByEndHandler + ); + + } + + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.TouchElement +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.CssClasses = { + toolbar: 'ps-toolbar', + toolbarContent: 'ps-toolbar-content', + toolbarTop: 'ps-toolbar-top', + caption: 'ps-caption', + captionBottom: 'ps-caption-bottom', + captionContent: 'ps-caption-content', + close: 'ps-toolbar-close', + play: 'ps-toolbar-play', + previous: 'ps-toolbar-previous', + previousDisabled: 'ps-toolbar-previous-disabled', + next: 'ps-toolbar-next', + nextDisabled: 'ps-toolbar-next-disabled' + }; + + + + PhotoSwipe.Toolbar.ToolbarAction = { + close: 'close', + play: 'play', + next: 'next', + previous: 'previous', + none: 'none' + }; + + + + PhotoSwipe.Toolbar.EventTypes = { + onTap: 'PhotoSwipeToolbarOnClick', + onBeforeShow: 'PhotoSwipeToolbarOnBeforeShow', + onShow: 'PhotoSwipeToolbarOnShow', + onBeforeHide: 'PhotoSwipeToolbarOnBeforeHide', + onHide: 'PhotoSwipeToolbarOnHide' + }; + + + + PhotoSwipe.Toolbar.getToolbar = function(){ + + return '
'; + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.ToolbarClass = klass({ + + + + toolbarEl: null, + closeEl: null, + playEl: null, + previousEl: null, + nextEl: null, + captionEl: null, + captionContentEl: null, + currentCaption: null, + settings: null, + cache: null, + timeout: null, + isVisible: null, + fadeOutHandler: null, + touchStartHandler: null, + touchMoveHandler: null, + clickHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.clearTimeout(); + + this.removeEventHandlers(); + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + Util.DOM.removeChild(this.toolbarEl, this.toolbarEl.parentNode); + Util.DOM.removeChild(this.captionEl, this.captionEl.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(cache, options){ + + var cssClass; + + this.settings = options; + this.cache = cache; + this.isVisible = false; + + this.fadeOutHandler = this.onFadeOut.bind(this); + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.clickHandler = this.onClick.bind(this); + + + cssClass = PhotoSwipe.Toolbar.CssClasses.toolbar; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.toolbarTop; + } + + + // Toolbar + this.toolbarEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + this.settings.getToolbar() + ); + + + Util.DOM.setStyle(this.toolbarEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.toolbarEl); + } + else{ + Util.DOM.appendChild(this.toolbarEl, this.settings.target); + } + Util.DOM.hide(this.toolbarEl); + + this.closeEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.close, this.toolbarEl)[0]; + if (this.settings.preventHide && !Util.isNothing(this.closeEl)){ + Util.DOM.hide(this.closeEl); + } + + this.playEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.play, this.toolbarEl)[0]; + if (this.settings.preventSlideshow && !Util.isNothing(this.playEl)){ + Util.DOM.hide(this.playEl); + } + + this.nextEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.next, this.toolbarEl)[0]; + this.previousEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.previous, this.toolbarEl)[0]; + + + // Caption + cssClass = PhotoSwipe.Toolbar.CssClasses.caption; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.captionBottom; + } + + this.captionEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + '' + ); + Util.DOM.setStyle(this.captionEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.captionEl); + } + else{ + Util.DOM.appendChild(this.captionEl, this.settings.target); + } + Util.DOM.hide(this.captionEl); + + this.captionContentEl = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.Toolbar.CssClasses.captionContent + }, + '' + ); + Util.DOM.appendChild(this.captionContentEl, this.captionEl); + + this.addEventHandlers(); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, toolbarTop, captionTop; + + if (this.settings.target === window){ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = Util.DOM.windowScrollTop(); + captionTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.captionEl); + } + else { + toolbarTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.toolbarEl); + captionTop = Util.DOM.windowScrollTop(); + } + width = Util.DOM.windowWidth(); + } + else{ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = '0'; + captionTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.captionEl); + } + else{ + toolbarTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.toolbarEl); + captionTop = 0; + } + width = Util.DOM.width(this.settings.target); + } + + Util.DOM.setStyle(this.toolbarEl, { + top: toolbarTop + 'px', + width: width + }); + + Util.DOM.setStyle(this.captionEl, { + top: captionTop + 'px', + width: width + }); + }, + + + + /* + * Function: toggleVisibility + */ + toggleVisibility: function(index){ + + if (this.isVisible){ + this.fadeOut(); + } + else{ + this.show(index); + } + + }, + + + + /* + * Function: show + */ + show: function(index){ + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + this.resetPosition(); + this.setToolbarStatus(index); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeShow, + target: this + }); + + this.showToolbar(); + this.setCaption(index); + this.showCaption(); + + this.isVisible = true; + + this.setTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onShow, + target: this + }); + + }, + + + + /* + * Function: setTimeout + */ + setTimeout: function(){ + + if (this.settings.captionAndToolbarAutoHideDelay > 0){ + // Set a timeout to hide the toolbar + this.clearTimeout(); + this.timeout = window.setTimeout(this.fadeOut.bind(this), this.settings.captionAndToolbarAutoHideDelay); + } + + }, + + + + /* + * Function: clearTimeout + */ + clearTimeout: function(){ + + if (!Util.isNothing(this.timeout)){ + window.clearTimeout(this.timeout); + this.timeout = null; + } + + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(){ + + this.clearTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeHide, + target: this + }); + + Util.Animation.fadeOut(this.toolbarEl, this.settings.fadeOutSpeed); + Util.Animation.fadeOut(this.captionEl, this.settings.fadeOutSpeed, this.fadeOutHandler); + + this.isVisible = false; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.add(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.add(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.add(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.remove(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.remove(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: handleTap + */ + handleTap: function(e){ + + this.clearTimeout(); + + var action; + + if (e.target === this.nextEl || Util.DOM.isChildOf(e.target, this.nextEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.next; + } + else if (e.target === this.previousEl || Util.DOM.isChildOf(e.target, this.previousEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.previous; + } + else if (e.target === this.closeEl || Util.DOM.isChildOf(e.target, this.closeEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.close; + } + else if (e.target === this.playEl || Util.DOM.isChildOf(e.target, this.playEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.play; + } + + this.setTimeout(); + + if (Util.isNothing(action)){ + action = PhotoSwipe.Toolbar.ToolbarAction.none; + } + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onTap, + target: this, + action: action, + tapTarget: e.target + }); + + }, + + + + /* + * Function: setCaption + */ + setCaption: function(index){ + + Util.DOM.removeChildren(this.captionContentEl); + + this.currentCaption = Util.coalesce(this.cache.images[index].caption, '\u00A0'); + + if (Util.isObject(this.currentCaption)){ + Util.DOM.appendChild(this.currentCaption, this.captionContentEl); + } + else{ + if (this.currentCaption === ''){ + this.currentCaption = '\u00A0'; + } + Util.DOM.appendText(this.currentCaption, this.captionContentEl); + } + + this.currentCaption = (this.currentCaption === '\u00A0') ? '' : this.currentCaption; + this.resetPosition(); + + }, + + + + /* + * Function: showToolbar + */ + showToolbar: function(){ + + Util.DOM.setStyle(this.toolbarEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.toolbarEl); + + }, + + + + /* + * Function: showCaption + */ + showCaption: function(){ + + if (this.currentCaption === '' || this.captionContentEl.childNodes.length < 1){ + // Empty caption + if (!this.settings.captionAndToolbarShowEmptyCaptions){ + Util.DOM.hide(this.captionEl); + return; + } + } + Util.DOM.setStyle(this.captionEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.captionEl); + + }, + + + + /* + * Function: setToolbarStatus + */ + setToolbarStatus: function(index){ + + if (this.settings.loop){ + return; + } + + Util.DOM.removeClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + Util.DOM.removeClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + + if (index > 0 && index < this.cache.images.length-1){ + return; + } + + if (index === 0){ + if (!Util.isNothing(this.previousEl)){ + Util.DOM.addClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + } + } + + if (index === this.cache.images.length-1){ + if (!Util.isNothing(this.nextEl)){ + Util.DOM.addClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + } + } + + }, + + + + /* + * Function: onFadeOut + */ + onFadeOut: function(){ + + Util.DOM.hide(this.toolbarEl); + Util.DOM.hide(this.captionEl); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onHide, + target: this + }); + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + e.preventDefault(); + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + this.handleTap(e); + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + e.preventDefault(); + + }, + + + + /* + * Function: onClick + */ + onClick: function(e){ + + e.preventDefault(); + this.handleTap(e); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.UILayer.CssClasses = { + uiLayer: 'ps-uilayer' + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.UILayer.UILayerClass = Util.TouchElement.TouchElementClass.extend({ + + + + el: null, + settings: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options){ + + this.settings = options; + + // Main container + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.UILayer.CssClasses.uiLayer + }, + '' + ); + Util.DOM.setStyle(this.el, { + display: 'block', + position: 'absolute', + left: 0, + top: 0, + overflow: 'hidden', + zIndex: this.settings.zIndex, + opacity: 0 + }); + Util.DOM.hide(this.el); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + this.supr(this.el, { + swipe: true, + move: true, + gesture: Util.Browser.iOS, + doubleTap: true, + preventDefaultTouchEvents: this.settings.preventDefaultTouchEvents + }); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + // Set the height and width to fill the document + if (this.settings.target === window){ + Util.DOM.setStyle(this.el, { + top: Util.DOM.windowScrollTop() + 'px', + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }); + } + else{ + Util.DOM.setStyle(this.el, { + top: '0px', + width: Util.DOM.width(this.settings.target), + height: Util.DOM.height(this.settings.target) + }); + } + + }, + + + + /* + * Function: show + */ + show: function(){ + + this.resetPosition(); + Util.DOM.show(this.el); + this.addEventHandlers(); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + this.supr(); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + this.supr(); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.ZoomPanRotate.CssClasses = { + zoomPanRotate: 'ps-zoom-pan-rotate' + }; + + + PhotoSwipe.ZoomPanRotate.EventTypes = { + + onTransform: 'PhotoSwipeZoomPanRotateOnTransform' + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.ZoomPanRotate.ZoomPanRotateClass = klass({ + + el: null, + settings: null, + containerEl: null, + imageEl: null, + transformSettings: null, + panStartingPoint: null, + transformEl: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options, cacheImage, uiLayer){ + + var parentEl, width, height, top; + + this.settings = options; + + if (this.settings.target === window){ + parentEl = document.body; + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + parentEl = this.settings.target; + width = Util.DOM.width(parentEl); + height = Util.DOM.height(parentEl); + top = '0px'; + } + + this.imageEl = cacheImage.imageEl.cloneNode(false); + Util.DOM.setStyle(this.imageEl, { + + zIndex: 1 + + }); + + this.transformSettings = { + + startingScale: 1.0, + scale: 1.0, + startingRotation: 0, + rotation: 0, + startingTranslateX: 0, + startingTranslateY: 0, + translateX: 0, + translateY: 0 + + }; + + + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.ZoomPanRotate.CssClasses.zoomPanRotate + }, + '' + ); + Util.DOM.setStyle(this.el, { + left: 0, + top: top, + position: 'absolute', + width: width, + height: height, + zIndex: this.settings.zIndex, + display: 'block' + }); + + Util.DOM.insertBefore(this.el, uiLayer.el, parentEl); + + if (Util.Browser.iOS){ + this.containerEl = Util.DOM.createElement('div','',''); + Util.DOM.setStyle(this.containerEl, { + left: 0, + top: 0, + width: width, + height: height, + position: 'absolute', + zIndex: 1 + }); + Util.DOM.appendChild(this.imageEl, this.containerEl); + Util.DOM.appendChild(this.containerEl, this.el); + Util.Animation.resetTranslate(this.containerEl); + Util.Animation.resetTranslate(this.imageEl); + this.transformEl = this.containerEl; + } + else{ + Util.DOM.appendChild(this.imageEl, this.el); + this.transformEl = this.imageEl; + } + + }, + + + + /* + * Function: setStartingTranslateFromCurrentTransform + */ + setStartingTranslateFromCurrentTransform: function(){ + + var + transformValue = Util.coalesce(this.transformEl.style.webkitTransform, this.transformEl.style.MozTransform, this.transformEl.style.transform), + transformExploded; + + if (!Util.isNothing(transformValue)){ + + transformExploded = transformValue.match( /translate\((.*?)\)/ ); + + if (!Util.isNothing(transformExploded)){ + + transformExploded = transformExploded[1].split(', '); + this.transformSettings.startingTranslateX = window.parseInt(transformExploded[0], 10); + this.transformSettings.startingTranslateY = window.parseInt(transformExploded[1], 10); + + } + + } + + }, + + + + /* + * Function: getScale + */ + getScale: function(scaleValue){ + + var scale = this.transformSettings.startingScale * scaleValue; + + if (this.settings.minUserZoom !== 0 && scale < this.settings.minUserZoom){ + scale = this.settings.minUserZoom; + } + else if (this.settings.maxUserZoom !== 0 && scale > this.settings.maxUserZoom){ + scale = this.settings.maxUserZoom; + } + + return scale; + + }, + + + + /* + * Function: setStartingScaleAndRotation + */ + setStartingScaleAndRotation: function(scaleValue, rotationValue){ + + this.transformSettings.startingScale = this.getScale(scaleValue); + + this.transformSettings.startingRotation = + (this.transformSettings.startingRotation + rotationValue) % 360; + + }, + + + + /* + * Function: zoomRotate + */ + zoomRotate: function(scaleValue, rotationValue){ + + this.transformSettings.scale = this.getScale(scaleValue); + + this.transformSettings.rotation = + this.transformSettings.startingRotation + rotationValue; + + this.applyTransform(); + + }, + + + + /* + * Function: panStart + */ + panStart: function(point){ + + this.setStartingTranslateFromCurrentTransform(); + + this.panStartingPoint = { + x: point.x, + y: point.y + }; + + }, + + + + /* + * Function: pan + */ + pan: function(point){ + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale , + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + this.transformSettings.startingTranslateX + dxScaleAdjust; + + this.transformSettings.translateY = + this.transformSettings.startingTranslateY + dyScaleAdjust; + + this.applyTransform(); + + }, + + + + /* + * Function: zoomAndPanToPoint + */ + zoomAndPanToPoint: function(scaleValue, point){ + + + if (this.settings.target === window){ + + this.panStart({ + x: Util.DOM.windowWidth() / 2, + y: Util.DOM.windowHeight() / 2 + }); + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale, + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + (this.transformSettings.startingTranslateX + dxScaleAdjust) * -1; + + this.transformSettings.translateY = + (this.transformSettings.startingTranslateY + dyScaleAdjust) * -1; + + } + + + this.setStartingScaleAndRotation(scaleValue, 0); + this.transformSettings.scale = this.transformSettings.startingScale; + + this.transformSettings.rotation = 0; + + this.applyTransform(); + + }, + + + + /* + * Function: applyTransform + */ + applyTransform: function(){ + + var + rotationDegs = this.transformSettings.rotation % 360, + translateX = window.parseInt(this.transformSettings.translateX, 10), + translateY = window.parseInt(this.transformSettings.translateY, 10), + transform = 'scale(' + this.transformSettings.scale + ') rotate(' + rotationDegs + 'deg) translate(' + translateX + 'px, ' + translateY + 'px)'; + + Util.DOM.setStyle(this.transformEl, { + webkitTransform: transform, + MozTransform: transform, + msTransform: transform, + transform: transform + }); + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, + scale: this.transformSettings.scale, + rotation: this.transformSettings.rotation, + rotationDegs: rotationDegs, + translateX: translateX, + translateY: translateY + }); + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, Util){ + + + Util.registerNamespace('Code.PhotoSwipe'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.CssClasses = { + buildingBody: 'ps-building', + activeBody: 'ps-active' + }; + + + + PhotoSwipe.EventTypes = { + + onBeforeShow: 'PhotoSwipeOnBeforeShow', + onShow: 'PhotoSwipeOnShow', + onBeforeHide: 'PhotoSwipeOnBeforeHide', + onHide: 'PhotoSwipeOnHide', + onDisplayImage: 'PhotoSwipeOnDisplayImage', + onResetPosition: 'PhotoSwipeOnResetPosition', + onSlideshowStart: 'PhotoSwipeOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeOnSlideshowStop', + onTouch: 'PhotoSwipeOnTouch', + onBeforeCaptionAndToolbarShow: 'PhotoSwipeOnBeforeCaptionAndToolbarShow', + onCaptionAndToolbarShow: 'PhotoSwipeOnCaptionAndToolbarShow', + onBeforeCaptionAndToolbarHide: 'PhotoSwipeOnBeforeCaptionAndToolbarHide', + onCaptionAndToolbarHide: 'PhotoSwipeOnCaptionAndToolbarHide', + onToolbarTap: 'PhotoSwipeOnToolbarTap', + onBeforeZoomPanRotateShow: 'PhotoSwipeOnBeforeZoomPanRotateShow', + onZoomPanRotateShow: 'PhotoSwipeOnZoomPanRotateShow', + onBeforeZoomPanRotateHide: 'PhotoSwipeOnBeforeZoomPanRotateHide', + onZoomPanRotateHide: 'PhotoSwipeOnZoomPanRotateHide', + onZoomPanRotateTransform: 'PhotoSwipeOnZoomPanRotateTransform' + + }; + + + + PhotoSwipe.instances = []; + PhotoSwipe.activeInstances = []; + + + + /* + * Function: Code.PhotoSwipe.setActivateInstance + */ + PhotoSwipe.setActivateInstance = function(instance){ + + // Can only have one instance per target (i.e. window or div) + var index = Util.arrayIndexOf(instance.settings.target, PhotoSwipe.activeInstances, 'target'); + if (index > -1){ + throw 'Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target'; + } + PhotoSwipe.activeInstances.push({ + target: instance.settings.target, + instance: instance + }); + + }; + + + + /* + * Function: Code.PhotoSwipe.unsetActivateInstance + */ + PhotoSwipe.unsetActivateInstance = function(instance){ + + var index = Util.arrayIndexOf(instance, PhotoSwipe.activeInstances, 'instance'); + PhotoSwipe.activeInstances.splice(index, 1); + + }; + + + + /* + * Function: Code.PhotoSwipe.attach + */ + PhotoSwipe.attach = function(images, options, id){ + + var i, j, instance, image; + + instance = PhotoSwipe.createInstance(images, options, id); + + // Add click event handlers if applicable + for (i=0, j=images.length; i= 2.1){ + this.isBackEventSupported = true; + } + } + + if (!this.isBackEventSupported){ + this.isBackEventSupported = Util.objectHasProperty(window, 'onhashchange'); + } + + this.settings = { + + // General + fadeInSpeed: 250, + fadeOutSpeed: 250, + preventHide: false, + preventSlideshow: false, + zIndex: 1000, + backButtonHideEnabled: true, + enableKeyboard: true, + enableMouseWheel: true, + mouseWheelSpeed: 350, + autoStartSlideshow: false, + jQueryMobile: ( !Util.isNothing(window.jQuery) && !Util.isNothing(window.jQuery.mobile) ), + jQueryMobileDialogHash: '&ui-state=dialog', + enableUIWebViewRepositionTimeout: false, + uiWebViewResetPositionDelay: 500, + target: window, + preventDefaultTouchEvents: true, + + + // Carousel + loop: true, + slideSpeed: 250, + nextPreviousSlideSpeed: 0, + enableDrag: true, + swipeThreshold: 50, + swipeTimeThreshold: 250, + slideTimingFunction: 'ease-out', + slideshowDelay: 3000, + doubleTapSpeed: 250, + margin: 20, + imageScaleMethod: 'fit', // Either "fit", "fitNoUpscale" or "zoom", + + + // Toolbar + captionAndToolbarHide: false, + captionAndToolbarFlipPosition: false, + captionAndToolbarAutoHideDelay: 5000, + captionAndToolbarOpacity: 0.8, + captionAndToolbarShowEmptyCaptions: true, + getToolbar: PhotoSwipe.Toolbar.getToolbar, + + + // ZoomPanRotate + allowUserZoom: true, + allowRotationOnUserZoom: false, + maxUserZoom: 5.0, + minUserZoom: 0.5, + doubleTapZoomLevel: 2.5, + + + // Cache + getImageSource: PhotoSwipe.Cache.Functions.getImageSource, + getImageCaption: PhotoSwipe.Cache.Functions.getImageCaption, + getImageMetaData: PhotoSwipe.Cache.Functions.getImageMetaData, + cacheMode: PhotoSwipe.Cache.Mode.normal + + }; + + Util.extend(this.settings, options); + + if (this.settings.target !== window){ + targetPosition = Util.DOM.getStyle(this.settings.target, 'position'); + if (targetPosition !== 'relative' || targetPosition !== 'absolute'){ + Util.DOM.setStyle(this.settings.target, 'position', 'relative'); + } + } + + if (this.settings.target !== window){ + this.isBackEventSupported = false; + this.settings.backButtonHideEnabled = false; + } + else{ + if (this.settings.preventHide){ + this.settings.backButtonHideEnabled = false; + } + } + + this.cache = new Cache.CacheClass(images, this.settings); + + }, + + + + /* + * Function: show + */ + show: function(obj){ + + var i, j; + + this._isResettingPosition = false; + this.backButtonClicked = false; + + // Work out what the starting index is + if (Util.isNumber(obj)){ + this.currentIndex = obj; + } + else{ + + this.currentIndex = -1; + for (i=0, j=this.originalImages.length; i this.originalImages.length-1){ + throw "Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range"; + } + + // Store a reference to the current window dimensions + // Use this later to double check that a window has actually + // been resized. + this.isAlreadyGettingPage = this.getWindowDimensions(); + + // Set this instance to be the active instance + PhotoSwipe.setActivateInstance(this); + + this.windowDimensions = this.getWindowDimensions(); + + // Create components + if (this.settings.target === window){ + Util.DOM.addClass(window.document.body, PhotoSwipe.CssClasses.buildingBody); + } + else{ + Util.DOM.addClass(this.settings.target, PhotoSwipe.CssClasses.buildingBody); + } + this.createComponents(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeShow, + target: this + }); + + // Fade in the document overlay + this.documentOverlay.fadeIn(this.settings.fadeInSpeed, this.onDocumentOverlayFadeIn.bind(this)); + + }, + + + + /* + * Function: getWindowDimensions + */ + getWindowDimensions: function(){ + + return { + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }; + + }, + + + + /* + * Function: createComponents + */ + createComponents: function(){ + + this.documentOverlay = new DocumentOverlay.DocumentOverlayClass(this.settings); + this.carousel = new Carousel.CarouselClass(this.cache, this.settings); + this.uiLayer = new UILayer.UILayerClass(this.settings); + if (!this.settings.captionAndToolbarHide){ + this.toolbar = new Toolbar.ToolbarClass(this.cache, this.settings); + } + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + if (this._isResettingPosition){ + return; + } + + var newWindowDimensions = this.getWindowDimensions(); + if (!Util.isNothing(this.windowDimensions)){ + if (newWindowDimensions.width === this.windowDimensions.width && newWindowDimensions.height === this.windowDimensions.height){ + // This was added as a fudge for iOS + return; + } + } + + this._isResettingPosition = true; + + this.windowDimensions = newWindowDimensions; + + this.destroyZoomPanRotate(); + + this.documentOverlay.resetPosition(); + this.carousel.resetPosition(); + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.resetPosition(); + } + + this.uiLayer.resetPosition(); + + this._isResettingPosition = false; + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onResetPosition, + target: this + }); + + }, + + + + /* + * Function: addEventHandler + */ + addEventHandler: function(type, handler){ + + Util.Events.add(this, type, handler); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.windowOrientationChangeHandler)){ + + this.windowOrientationChangeHandler = this.onWindowOrientationChange.bind(this); + this.windowScrollHandler = this.onWindowScroll.bind(this); + this.keyDownHandler = this.onKeyDown.bind(this); + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + this.uiLayerTouchHandler = this.onUILayerTouch.bind(this); + this.carouselSlideByEndHandler = this.onCarouselSlideByEnd.bind(this); + this.carouselSlideshowStartHandler = this.onCarouselSlideshowStart.bind(this); + this.carouselSlideshowStopHandler = this.onCarouselSlideshowStop.bind(this); + this.toolbarTapHandler = this.onToolbarTap.bind(this); + this.toolbarBeforeShowHandler = this.onToolbarBeforeShow.bind(this); + this.toolbarShowHandler = this.onToolbarShow.bind(this); + this.toolbarBeforeHideHandler = this.onToolbarBeforeHide.bind(this); + this.toolbarHideHandler = this.onToolbarHide.bind(this); + this.mouseWheelHandler = this.onMouseWheel.bind(this); + this.zoomPanRotateTransformHandler = this.onZoomPanRotateTransform.bind(this); + + } + + // Set window handlers + if (Util.Browser.android){ + // For some reason, resize was more stable than orientationchange in Android + this.orientationEventName = 'resize'; + } + else if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.add(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + else{ + var supportsOrientationChange = !Util.isNothing(window.onorientationchange); + this.orientationEventName = supportsOrientationChange ? 'orientationchange' : 'resize'; + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.add(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + if (this.settings.target === window){ + Util.Events.add(window, 'scroll', this.windowScrollHandler); + } + + if (this.settings.enableKeyboard){ + Util.Events.add(window.document, 'keydown', this.keyDownHandler); + } + + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + + if (this.settings.jQueryMobile){ + window.location.hash = this.settings.jQueryMobileDialogHash; + } + else{ + this.currentHistoryHashValue = 'PhotoSwipe' + new Date().getTime().toString(); + window.location.hash = this.currentHistoryHashValue; + } + + Util.Events.add(window, 'hashchange', this.windowHashChangeHandler); + + } + + if (this.settings.enableMouseWheel){ + Util.Events.add(window, 'mousewheel', this.mouseWheelHandler); + } + + Util.Events.add(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + + if (!Util.isNothing(this.toolbar)){ + Util.Events.add(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.remove(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.remove(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + + Util.Events.remove(window, 'scroll', this.windowScrollHandler); + + if (this.settings.enableKeyboard){ + Util.Events.remove(window.document, 'keydown', this.keyDownHandler); + } + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler); + } + + if (this.settings.enableMouseWheel){ + Util.Events.remove(window, 'mousewheel', this.mouseWheelHandler); + } + + if (!Util.isNothing(this.uiLayer)){ + Util.Events.remove(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + + /* + * Function: hide + */ + hide: function(){ + + if (this.settings.preventHide){ + return; + } + + if (Util.isNothing(this.documentOverlay)){ + throw "Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden"; + } + + if (!Util.isNothing(this.hiding)){ + return; + } + + this.clearUIWebViewResetPositionTimeout(); + + this.destroyZoomPanRotate(); + + this.removeEventHandlers(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeHide, + target: this + }); + + this.uiLayer.dispose(); + this.uiLayer = null; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.dispose(); + this.toolbar = null; + } + + this.carousel.dispose(); + this.carousel = null; + + Util.DOM.removeClass(window.document.body, PhotoSwipe.CssClasses.activeBody); + + this.documentOverlay.dispose(); + this.documentOverlay = null; + + this._isResettingPosition = false; + + // Deactive this instance + PhotoSwipe.unsetActivateInstance(this); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onHide, + target: this + }); + + this.goBackInHistory(); + + }, + + + + /* + * Function: goBackInHistory + */ + goBackInHistory: function(){ + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + if ( !this.backButtonClicked ){ + window.history.back(); + } + } + + }, + + + + /* + * Function: play + */ + play: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!this.settings.preventSlideshow){ + if (!Util.isNothing(this.carousel)){ + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + this.carousel.startSlideshow(); + } + } + + }, + + + + /* + * Function: stop + */ + stop: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.stopSlideshow(); + } + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.previous(); + } + + }, + + + + /* + * Function: next + */ + next: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.next(); + } + + }, + + + + /* + * Function: toggleToolbar + */ + toggleToolbar: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.toggleVisibility(this.currentIndex); + } + + }, + + + + /* + * Function: fadeOutToolbarIfVisible + */ + fadeOutToolbarIfVisible: function(){ + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible && this.settings.captionAndToolbarAutoHideDelay > 0){ + this.toolbar.fadeOut(); + } + + }, + + + + /* + * Function: createZoomPanRotate + */ + createZoomPanRotate: function(){ + + this.stop(); + + if (this.canUserZoom() && !this.isZoomActive()){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateShow); + + this.zoomPanRotate = new ZoomPanRotate.ZoomPanRotateClass( + this.settings, + this.cache.images[this.currentIndex], + this.uiLayer + ); + + // If we don't override this in the event of false + // you will be unable to pan around a zoomed image effectively + this.uiLayer.captureSettings.preventDefaultTouchEvents = true; + + Util.Events.add(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateShow); + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + + } + + }, + + + + /* + * Function: destroyZoomPanRotate + */ + destroyZoomPanRotate: function(){ + + if (!Util.isNothing(this.zoomPanRotate)){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateHide); + + Util.Events.remove(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + this.zoomPanRotate.dispose(); + this.zoomPanRotate = null; + + // Set the preventDefaultTouchEvents back to it was + this.uiLayer.captureSettings.preventDefaultTouchEvents = this.settings.preventDefaultTouchEvents; + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateHide); + + } + + }, + + + + /* + * Function: canUserZoom + */ + canUserZoom: function(){ + + var testEl, cacheImage; + + if (Util.Browser.msie){ + testEl = document.createElement('div'); + if (Util.isNothing(testEl.style.msTransform)){ + return false; + } + } + else if (!Util.Browser.isCSSTransformSupported){ + return false; + } + + if (!this.settings.allowUserZoom){ + return false; + } + + + if (this.carousel.isSliding){ + return false; + } + + cacheImage = this.cache.images[this.currentIndex]; + + if (Util.isNothing(cacheImage)){ + return false; + } + + if (cacheImage.isLoading){ + return false; + } + + return true; + + }, + + + + /* + * Function: isZoomActive + */ + isZoomActive: function(){ + + return (!Util.isNothing(this.zoomPanRotate)); + + }, + + + + /* + * Function: getCurrentImage + */ + getCurrentImage: function(){ + + return this.cache.images[this.currentIndex]; + + }, + + + + /* + * Function: onDocumentOverlayFadeIn + */ + onDocumentOverlayFadeIn: function(e){ + + window.setTimeout(function(){ + + var el = (this.settings.target === window) ? window.document.body : this.settings.target; + + Util.DOM.removeClass(el, PhotoSwipe.CssClasses.buildingBody); + Util.DOM.addClass(el, PhotoSwipe.CssClasses.activeBody); + + this.addEventHandlers(); + + this.carousel.show(this.currentIndex); + + this.uiLayer.show(); + + if (this.settings.autoStartSlideshow){ + this.play(); + } + else if (!Util.isNothing(this.toolbar)){ + this.toolbar.show(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onShow, + target: this + }); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), 250); + + + }, + + + + /* + * Function: setUIWebViewResetPositionTimeout + */ + setUIWebViewResetPositionTimeout: function(){ + + if (!this.settings.enableUIWebViewRepositionTimeout){ + return; + } + + if (!(Util.Browser.iOS && (!Util.Browser.safari))){ + return; + } + + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + this._uiWebViewResetPositionTimeout = window.setTimeout(function(){ + + this.resetPosition(); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), this.settings.uiWebViewResetPositionDelay); + + }, + + + + /* + * Function: clearUIWebViewResetPositionTimeout + */ + clearUIWebViewResetPositionTimeout: function(){ + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + }, + + + + /* + * Function: onWindowScroll + */ + onWindowScroll: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowOrientationChange + */ + onWindowOrientationChange: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowHashChange + */ + onWindowHashChange: function(e){ + + var compareHash = '#' + + ((this.settings.jQueryMobile) ? this.settings.jQueryMobileDialogHash : this.currentHistoryHashValue); + + if (window.location.hash !== compareHash){ + this.backButtonClicked = true; + this.hide(); + } + + }, + + + + /* + * Function: onKeyDown + */ + onKeyDown: function(e){ + + if (e.keyCode === 37) { // Left + e.preventDefault(); + this.previous(); + } + else if (e.keyCode === 39) { // Right + e.preventDefault(); + this.next(); + } + else if (e.keyCode === 38 || e.keyCode === 40) { // Up and down + e.preventDefault(); + } + else if (e.keyCode === 27) { // Escape + e.preventDefault(); + this.hide(); + } + else if (e.keyCode === 32) { // Spacebar + if (!this.settings.hideToolbar){ + this.toggleToolbar(); + } + else{ + this.hide(); + } + e.preventDefault(); + } + else if (e.keyCode === 13) { // Enter + e.preventDefault(); + this.play(); + } + + }, + + + + /* + * Function: onUILayerTouch + */ + onUILayerTouch: function(e){ + + if (this.isZoomActive()){ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.gestureChange: + this.zoomPanRotate.zoomRotate(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.gestureEnd: + this.zoomPanRotate.setStartingScaleAndRotation(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.touchStart: + this.zoomPanRotate.panStart(e.point); + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.zoomPanRotate.pan(e.point); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + this.destroyZoomPanRotate(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeLeft: + this.destroyZoomPanRotate(); + this.next(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeRight: + this.destroyZoomPanRotate(); + this.previous(); + this.toggleToolbar(); + break; + } + + } + else{ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.touchMove: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + + // Hide the toolbar if need be + this.fadeOutToolbarIfVisible(); + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.touchStart: + case Util.TouchElement.ActionTypes.touchMoveEnd: + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.tap: + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + + // Take into consideration the window scroll + if (this.settings.target === window){ + e.point.x -= Util.DOM.windowScrollLeft(); + e.point.y -= Util.DOM.windowScrollTop(); + } + + // Just make sure that if the user clicks out of the image + // that the image does not pan out of view! + var + cacheImageEl = this.cache.images[this.currentIndex].imageEl, + + imageTop = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'top'), 10), + imageLeft = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'left'), 10), + imageRight = imageLeft + Util.DOM.width(cacheImageEl), + imageBottom = imageTop + Util.DOM.height(cacheImageEl); + + if (e.point.x < imageLeft){ + e.point.x = imageLeft; + } + else if (e.point.x > imageRight){ + e.point.x = imageRight; + } + + if (e.point.y < imageTop){ + e.point.y = imageTop; + } + else if (e.point.y > imageBottom){ + e.point.y = imageBottom; + } + + this.createZoomPanRotate(); + if (this.isZoomActive()){ + this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel, e.point); + } + + break; + + case Util.TouchElement.ActionTypes.gestureStart: + this.createZoomPanRotate(); + break; + } + + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onTouch, + target: this, + point: e.point, + action: e.action + }); + + }, + + + + /* + * Function: onCarouselSlideByEnd + */ + onCarouselSlideByEnd: function(e){ + + this.currentIndex = e.cacheIndex; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.setCaption(this.currentIndex); + this.toolbar.setToolbarStatus(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onDisplayImage, + target: this, + action: e.action, + index: e.cacheIndex + }); + + }, + + + + /* + * Function: onToolbarTap + */ + onToolbarTap: function(e){ + + switch(e.action){ + + case Toolbar.ToolbarAction.next: + this.next(); + break; + + case Toolbar.ToolbarAction.previous: + this.previous(); + break; + + case Toolbar.ToolbarAction.close: + this.hide(); + break; + + case Toolbar.ToolbarAction.play: + this.play(); + break; + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onToolbarTap, + target: this, + toolbarAction: e.action, + tapTarget: e.tapTarget + }); + + }, + + + + /* + * Function: onMouseWheel + */ + onMouseWheel: function(e){ + + var + delta = Util.Events.getWheelDelta(e), + dt = e.timeStamp - (this.mouseWheelStartTime || 0); + + if (dt < this.settings.mouseWheelSpeed) { + return; + } + + this.mouseWheelStartTime = e.timeStamp; + + if (this.settings.invertMouseWheel){ + delta = delta * -1; + } + + if (delta < 0){ + this.next(); + } + else if (delta > 0){ + this.previous(); + } + + }, + + + + /* + * Function: onCarouselSlideshowStart + */ + onCarouselSlideshowStart: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: onCarouselSlideshowStop + */ + onCarouselSlideshowStop: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStop, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeShow + */ + onToolbarBeforeShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarShow + */ + onToolbarShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeHide + */ + onToolbarBeforeHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onToolbarHide + */ + onToolbarHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onZoomPanRotateTransform + */ + onZoomPanRotateTransform: function(e){ + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.EventTypes.onZoomPanRotateTransform, + scale: e.scale, + rotation: e.rotation, + rotationDegs: e.rotationDegs, + translateX: e.translateX, + translateY: e.translateY + }); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.Cache, + window.Code.PhotoSwipe.DocumentOverlay, + window.Code.PhotoSwipe.Carousel, + window.Code.PhotoSwipe.Toolbar, + window.Code.PhotoSwipe.UILayer, + window.Code.PhotoSwipe.ZoomPanRotate +)); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.min.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.min.js new file mode 100755 index 000000000..aad1982a0 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.jquery.min.js @@ -0,0 +1,119 @@ +// PhotoSwipe - http://www.photoswipe.com/ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Image");d.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=d.Code.PhotoSwipe;b.Image.ImageClass=j({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var c;this.shrinkImage();for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(a,f,b,i){this.refObj=a;this.src=this.originalSrc=f;this.caption=b;this.metaData=i;this.imageEl=new d.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler= +this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror= +this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth, +this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window, +window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Cache");d=d.Code.PhotoSwipe;d.Cache.Mode={normal:"normal",aggressive:"aggressive"};d.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var c,f,e;c=0;for(f=b.childNodes.length;cf&& +(f=a.DOM.windowHeight())}else c=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),b="0px";a.DOM.setStyle(this.el,{width:c,height:f,top:b})},fadeIn:function(c,f){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,c,f)}})})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Carousel");d=d.Code.PhotoSwipe;d.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};d.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};d.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window, +window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=d.Code.PhotoSwipe;b.Carousel.CarouselClass=j({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var c,f,e;f=0;for(e=this.cache.images.length;f0&&a.DOM.setStyle(h,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(h,this.contentEl);this.settings.target===d?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)}, +resetPosition:function(){var c,f,e,i,h,g;this.settings.target===d?(c=a.DOM.windowWidth(),f=a.DOM.windowHeight(),e=a.DOM.windowScrollTop()+"px"):(c=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),e="0px");i=this.settings.margin>0?c+this.settings.margin:c;h=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);i*=h.length;a.DOM.setStyle(this.el,{top:e,width:c,height:f});a.DOM.setStyle(this.contentEl,{width:i,height:f});e=0;for(i=h.length;eh&&(f=h/b,b=Math.round(b*f),d=Math.round(d*f)),d>g&&(f=g/d,d=Math.round(d*f),b=Math.round(b*f))):(f=c.isLandscape?h/c.naturalWidth:g/c.naturalHeight,b=Math.round(c.naturalWidth* +f),d=Math.round(c.naturalHeight*f),this.settings.imageScaleMethod==="zoom"?(f=1,dh?f=h/b:d>g&&(f=g/d),f!==1&&(b=Math.round(b*f),d=Math.round(d*f))));a.DOM.setStyle(c,{position:"absolute",width:b,height:d,top:Math.round((g-d)/2)+"px",left:Math.round((h-b)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var c,b,e;c=this.settings.target===d?a.DOM.windowWidth():a.DOM.width(this.settings.target); +b=this.getItemEls();e=0;this.settings.loop?e=(c+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?e=(b.length-1)*(c+this.settings.margin)*-1:this.currentCacheIndex>0&&(e=(c+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:e+"px"})},show:function(c){this.currentCacheIndex=c;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var c=this.getItemEls(),f,d;f=0;for(d=c.length;fthis.cache.images.length-1&&(b=0),i<0&&(i=this.cache.images.length-1),b=this.cache.getImages([i,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[0], +d[0])):d.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],d[0])):d.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[0],d[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex, +this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]), +a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])),this.addCacheImageToItemEl(b[0],d[0]))},addCacheImageToItemEl:function(c,d){a.DOM.removeClass(d,b.Carousel.CssClasses.itemError);a.DOM.addClass(d,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(d);a.DOM.setStyle(c.imageEl,{display:"none"});a.DOM.appendChild(c.imageEl,d);a.Animation.resetTranslate(c.imageEl);a.Events.add(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(c,b.Image.EventTypes.onError, +this.imageErrorHandler);c.load()},slideCarousel:function(c,f,e){if(!this.isSliding){var i,h;i=this.settings.target===d?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;e=a.coalesce(e,this.settings.slideSpeed);if(!(d.Math.abs(h)<1)){switch(f){case a.TouchElement.ActionTypes.swipeLeft:c=i*-1;break;case a.TouchElement.ActionTypes.swipeRight:c=i;break;default:h=c.x-this.touchStartPoint.x,c=d.Math.abs(h)>i/2?h>0?i:i*-1:0}this.lastSlideByAction=c<0?b.Carousel.SlideByAction.next: +c>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))c=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(c,e)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)}, +getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow(); +this.isSlideshowActive=!0;this.slideshowTimeout=d.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))d.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var c=this.getItemEls(); +this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(c[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex=== +this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex
'}})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=d.Code.PhotoSwipe;b.Toolbar.ToolbarClass=j({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var c;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl); +a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(c,f){var e;this.settings=f;this.cache=c;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);e=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&& +(e=e+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":e},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===d?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl); +this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];e=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(e=e+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":e},"");a.DOM.setStyle(this.captionEl, +{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===d?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var c,b,e;this.settings.target===d?(this.settings.captionAndToolbarFlipPosition? +(b=a.DOM.windowScrollTop(),e=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(b=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),e=a.DOM.windowScrollTop()),c=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(b="0",e=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(b=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),e=0),c=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:b+"px", +width:c});a.DOM.setStyle(this.captionEl,{top:e+"px",width:c})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(c){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(c);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(c);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay> +0)this.clearTimeout(),this.timeout=d.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))d.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&& +(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl, +"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(c){this.clearTimeout();var d;if(c.target===this.nextEl||a.DOM.isChildOf(c.target,this.nextEl))d=b.Toolbar.ToolbarAction.next;else if(c.target===this.previousEl||a.DOM.isChildOf(c.target,this.previousEl))d=b.Toolbar.ToolbarAction.previous;else if(c.target===this.closeEl||a.DOM.isChildOf(c.target,this.closeEl))d=b.Toolbar.ToolbarAction.close;else if(c.target===this.playEl||a.DOM.isChildOf(c.target, +this.playEl))d=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(d))d=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:d,tapTarget:c.target})},setCaption:function(c){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[c].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0"; +a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}), +a.DOM.show(this.captionEl))},setToolbarStatus:function(c){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),c>0&&cthis.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint= +{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,f){if(this.settings.target===d){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var e=(f.y-this.panStartingPoint.y)/this.transformSettings.scale; +this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(f.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+e)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,f=d.parseInt(this.transformSettings.translateX,10), +e=d.parseInt(this.transformSettings.translateY,10),i="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+f+"px, "+e+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:i,MozTransform:i,msTransform:i,transform:i});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:f,translateY:e})}})})(window,window.klass,window.Code.Util); +(function(d,j){j.registerNamespace("Code.PhotoSwipe");var a=d.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow", +onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"}; +a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(j.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=j.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,c,d){var e,i;e=a.createInstance(b,c,d);c=0;for(d= +b.length;c=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(d,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0, +mouseWheelSpeed:350,autoStartSlideshow:!1,jQueryMobile:!a.isNothing(d.jQuery)&&!a.isNothing(d.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:d,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1, +captionAndToolbarAutoHideDelay:5E3,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:g.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:g.Cache.Functions.getImageSource,getImageCaption:g.Cache.Functions.getImageCaption,getImageMetaData:g.Cache.Functions.getImageMetaData,cacheMode:g.Cache.Mode.normal};a.extend(this.settings,e);this.settings.target!==d&&(e=a.DOM.getStyle(this.settings.target, +"position"),(e!=="relative"||e!=="absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==d)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,e;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(e=this.originalImages.length;cthis.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();g.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===d?a.DOM.addClass(d.document.body,g.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,g.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:g.EventTypes.onBeforeShow, +target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new c.DocumentOverlayClass(this.settings);this.carousel=new f.CarouselClass(this.cache,this.settings);this.uiLayer=new i.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new e.ToolbarClass(this.cache,this.settings)}, +resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:g.EventTypes.onResetPosition, +target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this), +this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler= +this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(d.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(d.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(d,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===d&&a.Events.add(d,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&& +a.Events.add(d.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?d.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),d.location.hash=this.currentHistoryHashValue),a.Events.add(d,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(d,"mousewheel", +this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,e.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar, +e.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,e.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,e.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,e.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(d.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(d,this.orientationEventName, +this.windowOrientationChangeHandler);a.Events.remove(d,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(d.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(d,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(d,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler); +a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,e.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,e.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar, +e.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,e.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,e.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this, +{type:g.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(d.document.body,g.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;g.unsetActivateInstance(this);a.Events.fire(this,{type:g.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&& +this.settings.backButtonHideEnabled&&(this.backButtonClicked||d.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()|| +a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,g.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new h.ZoomPanRotateClass(this.settings, +this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,g.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,g.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,g.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate, +g.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,g.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1; +b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){d.setTimeout(function(){var b=this.settings.target===d?d.document.body:this.settings.target;a.DOM.removeClass(b,g.CssClasses.buildingBody);a.DOM.addClass(b,g.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex); +this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:g.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||d.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout= +d.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||d.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(d.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash: +this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale, +this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate(); +this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point); +break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===d&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,e=d.parseInt(a.DOM.getStyle(c,"top"),10),f=d.parseInt(a.DOM.getStyle(c,"left"),10),h=f+a.DOM.width(c),c=e+a.DOM.height(c);if(b.point.xh)b.point.x=h;if(b.point.yc)b.point.y=c; +this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:g.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:g.EventTypes.onDisplayImage, +target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case e.ToolbarAction.next:this.next();break;case e.ToolbarAction.previous:this.previous();break;case e.ToolbarAction.close:this.hide();break;case e.ToolbarAction.play:this.play()}a.Events.fire(this,{type:g.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:g.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:g.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:g.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:g.EventTypes.onCaptionAndToolbarShow, +target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:g.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:g.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:g.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache, +window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.js new file mode 100755 index 000000000..39330fb41 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.js @@ -0,0 +1,4344 @@ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.EventTypes = { + + onLoad: 'onLoad', + onError: 'onError' + + }; + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Image'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Image.ImageClass = klass({ + + + + refObj: null, + imageEl: null, + src: null, + caption: null, + metaData: null, + imageLoadHandler: null, + imageErrorHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i; + + this.shrinkImage(); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(refObj, src, caption, metaData){ + + this.refObj = refObj; + // This is needed. Webkit resolves the src + // value which means we can't compare against it in the load function + this.originalSrc = src; + this.src = src; + this.caption = caption; + this.metaData = metaData; + + this.imageEl = new window.Image(); + + this.imageLoadHandler = this.onImageLoad.bind(this); + this.imageErrorHandler = this.onImageError.bind(this); + + }, + + + + /* + * Function: load + */ + load: function(){ + + this.imageEl.originalSrc = Util.coalesce(this.imageEl.originalSrc, ''); + + if (this.imageEl.originalSrc === this.src){ + + if (this.imageEl.isError){ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + } + else{ + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + } + return; + } + + this.imageEl.isError = false; + this.imageEl.isLoading = true; + this.imageEl.naturalWidth = null; + this.imageEl.naturalHeight = null; + this.imageEl.isLandscape = false; + this.imageEl.onload = this.imageLoadHandler; + this.imageEl.onerror = this.imageErrorHandler; + this.imageEl.onabort = this.imageErrorHandler; + this.imageEl.originalSrc = this.src; + this.imageEl.src = this.src; + + }, + + + + /* + * Function: shrinkImage + */ + shrinkImage: function(){ + + if (Util.isNothing(this.imageEl)){ + return; + } + + if (this.imageEl.src.indexOf(this.src) > -1){ + this.imageEl.src = 'data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs='; + if (!Util.isNothing(this.imageEl.parentNode)){ + Util.DOM.removeChild(this.imageEl, this.imageEl.parentNode); + } + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + this.imageEl.onload = null; + this.imageEl.naturalWidth = Util.coalesce(this.imageEl.naturalWidth, this.imageEl.width); + this.imageEl.naturalHeight = Util.coalesce(this.imageEl.naturalHeight, this.imageEl.height); + this.imageEl.isLandscape = (this.imageEl.naturalWidth > this.imageEl.naturalHeight); + this.imageEl.isLoading = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onLoad, + target: this + }); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + this.imageEl.onload = null; + this.imageEl.onerror = null; + this.imageEl.onabort = null; + this.imageEl.isLoading = false; + this.imageEl.isError = true; + + Util.Events.fire(this, { + type: PhotoSwipe.Image.EventTypes.onError, + target: this + }); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Cache'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Cache.Mode = { + + normal: 'normal', + aggressive: 'aggressive' + + }; + + + + PhotoSwipe.Cache.Functions = { + + /* + * Function: getImageSource + * Default method for returning an image's source + */ + getImageSource: function(el){ + return el.href; + }, + + + + /* + * Function: getImageCaption + * Default method for returning an image's caption + * Assumes the el is an anchor and the first child is the + * image. The returned value is the "alt" attribute of the + * image. + */ + getImageCaption: function(el){ + + if (el.nodeName === "IMG"){ + return Util.DOM.getAttribute(el, 'alt'); + } + var i, j, childEl; + for (i=0, j=el.childNodes.length; i height){ + height = Util.DOM.windowHeight(); + } + + } + else{ + + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + + } + + Util.DOM.setStyle(this.el, { + width: width, + height: height, + top: top + }); + + }, + + + + /* + * Function: fadeIn + */ + fadeIn: function(speed, callback){ + + this.resetPosition(); + + Util.DOM.setStyle(this.el, 'opacity', 0); + Util.DOM.show(this.el); + + Util.Animation.fadeIn(this.el, speed, callback); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.Carousel.EventTypes = { + + onSlideByEnd: 'PhotoSwipeCarouselOnSlideByEnd', + onSlideshowStart: 'PhotoSwipeCarouselOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeCarouselOnSlideshowStop' + + }; + + + + PhotoSwipe.Carousel.CssClasses = { + carousel: 'ps-carousel', + content: 'ps-carousel-content', + item: 'ps-carousel-item', + itemLoading: 'ps-carousel-item-loading', + itemError: 'ps-carousel-item-error' + }; + + + + PhotoSwipe.Carousel.SlideByAction = { + previous: 'previous', + current: 'current', + next: 'next' + }; + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = klass({ + + + + el: null, + contentEl: null, + settings: null, + cache: null, + slideByEndHandler: null, + currentCacheIndex: null, + isSliding: null, + isSlideshowActive: null, + lastSlideByAction: null, + touchStartPoint: null, + touchStartPosition: null, + imageLoadHandler: null, + imageErrorHandler: null, + slideshowTimeout: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop, i, j; + + for (i=0, j=this.cache.images.length; i 0){ + Util.DOM.setStyle(itemEl, { + marginRight: this.settings.margin + 'px' + }); + } + + Util.DOM.appendChild(itemEl, this.contentEl); + + } + + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + }, + + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, height, top, itemWidth, itemEls, contentWidth, i, j, itemEl, imageEl; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + width = Util.DOM.width(this.settings.target); + height = Util.DOM.height(this.settings.target); + top = '0px'; + } + + itemWidth = (this.settings.margin > 0) ? width + this.settings.margin : width; + itemEls = Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + contentWidth = itemWidth * itemEls.length; + + + // Set the height and width to fill the document + Util.DOM.setStyle(this.el, { + top: top, + width: width, + height: height + }); + + + // Set the height and width of the content el + Util.DOM.setStyle(this.contentEl, { + width: contentWidth, + height: height + }); + + + // Set the height and width of item elements + for (i=0, j=itemEls.length; i maxWidth){ + scale = maxWidth / newWidth; + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + if (newHeight > maxHeight){ + scale = maxHeight / newHeight; + newHeight = Math.round(newHeight * scale); + newWidth = Math.round(newWidth * scale); + } + + } + else{ + + if (imageEl.isLandscape) { + // Ensure the width fits the screen + scale = maxWidth / imageEl.naturalWidth; + } + else { + // Ensure the height fits the screen + scale = maxHeight / imageEl.naturalHeight; + } + + newWidth = Math.round(imageEl.naturalWidth * scale); + newHeight = Math.round(imageEl.naturalHeight * scale); + + if (this.settings.imageScaleMethod === 'zoom'){ + + scale = 1; + if (newHeight < maxHeight){ + scale = maxHeight /newHeight; + } + else if (newWidth < maxWidth){ + scale = maxWidth /newWidth; + } + + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + + } + else if (this.settings.imageScaleMethod === 'fit') { + // Rescale again to ensure full image fits into the viewport + scale = 1; + if (newWidth > maxWidth) { + scale = maxWidth / newWidth; + } + else if (newHeight > maxHeight) { + scale = maxHeight / newHeight; + } + if (scale !== 1) { + newWidth = Math.round(newWidth * scale); + newHeight = Math.round(newHeight * scale); + } + } + + } + + newTop = Math.round( ((maxHeight - newHeight) / 2) ) + 'px'; + newLeft = Math.round( ((maxWidth - newWidth) / 2) ) + 'px'; + + Util.DOM.setStyle(imageEl, { + position: 'absolute', + width: newWidth, + height: newHeight, + top: newTop, + left: newLeft, + display: 'block' + }); + + }, + + + + /* + * Function: setContentLeftPosition + */ + setContentLeftPosition: function(){ + + var width, itemEls, left; + if (this.settings.target === window){ + width = Util.DOM.windowWidth(); + } + else{ + width = Util.DOM.width(this.settings.target); + } + + itemEls = this.getItemEls(); + left = 0; + + if (this.settings.loop){ + left = (width + this.settings.margin) * -1; + } + else{ + + if (this.currentCacheIndex === this.cache.images.length-1){ + left = ((itemEls.length-1) * (width + this.settings.margin)) * -1; + } + else if (this.currentCacheIndex > 0){ + left = (width + this.settings.margin) * -1; + } + + } + + Util.DOM.setStyle(this.contentEl, { + left: left + 'px' + }); + + }, + + + + /* + * Function: + */ + show: function(index){ + + this.currentCacheIndex = index; + this.resetPosition(); + this.setImages(false); + Util.DOM.show(this.el); + + Util.Animation.resetTranslate(this.contentEl); + var + itemEls = this.getItemEls(), + i, j; + for (i=0, j=itemEls.length; i this.cache.images.length-1){ + nextCacheIndex = 0; + } + if (previousCacheIndex < 0){ + previousCacheIndex = this.cache.images.length-1; + } + + cacheImages = this.cache.getImages([ + previousCacheIndex, + this.currentCacheIndex, + nextCacheIndex + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + + } + else{ + + if (itemEls.length === 1){ + if (!ignoreCurrent){ + // Current + cacheImages = this.cache.getImages([ + this.currentCacheIndex + ]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + } + else if (itemEls.length === 2){ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + else{ + + if (this.currentCacheIndex === 0){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex, + this.currentCacheIndex + 1, + this.currentCacheIndex + 2 + ]); + if (!ignoreCurrent){ + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + else if (this.currentCacheIndex === this.cache.images.length-1){ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 2, + this.currentCacheIndex - 1, + this.currentCacheIndex + ]); + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + } + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + else{ + cacheImages = this.cache.getImages([ + this.currentCacheIndex - 1, + this.currentCacheIndex, + this.currentCacheIndex + 1 + ]); + + if (!ignoreCurrent){ + // Current + this.addCacheImageToItemEl(cacheImages[1], itemEls[1]); + } + // Next + this.addCacheImageToItemEl(cacheImages[2], itemEls[2]); + // Previous + this.addCacheImageToItemEl(cacheImages[0], itemEls[0]); + } + + } + + } + + }, + + + + /* + * Function: addCacheImageToItemEl + */ + addCacheImageToItemEl: function(cacheImage, itemEl){ + + Util.DOM.removeClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemError); + Util.DOM.addClass(itemEl, PhotoSwipe.Carousel.CssClasses.itemLoading); + + Util.DOM.removeChildren(itemEl); + + Util.DOM.setStyle(cacheImage.imageEl, { + display: 'none' + }); + Util.DOM.appendChild(cacheImage.imageEl, itemEl); + + Util.Animation.resetTranslate(cacheImage.imageEl); + + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.add(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + cacheImage.load(); + + }, + + + + /* + * Function: slideCarousel + */ + slideCarousel: function(point, action, speed){ + + if (this.isSliding){ + return; + } + + var width, diffX, slideBy; + + if (this.settings.target === window){ + width = Util.DOM.windowWidth() + this.settings.margin; + } + else{ + width = Util.DOM.width(this.settings.target) + this.settings.margin; + } + + speed = Util.coalesce(speed, this.settings.slideSpeed); + + if (window.Math.abs(diffX) < 1){ + return; + } + + + switch (action){ + + case Util.TouchElement.ActionTypes.swipeLeft: + + slideBy = width * -1; + break; + + case Util.TouchElement.ActionTypes.swipeRight: + + slideBy = width; + break; + + default: + + diffX = point.x - this.touchStartPoint.x; + + if (window.Math.abs(diffX) > width / 2){ + slideBy = (diffX > 0) ? width : width * -1; + } + else{ + slideBy = 0; + } + break; + + } + + if (slideBy < 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.next; + } + else if (slideBy > 0){ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.previous; + } + else{ + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + + // Check for non-looping carousels + // If we are at the start or end, spring back to the current item element + if (!this.settings.loop){ + if ( (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous && this.currentCacheIndex === 0 ) || (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next && this.currentCacheIndex === this.cache.images.length-1) ){ + slideBy = 0; + this.lastSlideByAction = PhotoSwipe.Carousel.SlideByAction.current; + } + } + + this.isSliding = true; + this.doSlideCarousel(slideBy, speed); + + }, + + + + /* + * Function: + */ + moveCarousel: function(point){ + + if (this.isSliding){ + return; + } + + if (!this.settings.enableDrag){ + return; + } + + this.doMoveCarousel(point.x - this.touchStartPoint.x); + + }, + + + + /* + * Function: getItemEls + */ + getItemEls: function(){ + + return Util.DOM.find('.' + PhotoSwipe.Carousel.CssClasses.item, this.contentEl); + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeRight, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: next + */ + next: function(){ + + this.stopSlideshow(); + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft, this.settings.nextPreviousSlideSpeed); + + }, + + + + /* + * Function: slideshowNext + */ + slideshowNext: function(){ + + this.slideCarousel({x:0, y:0}, Util.TouchElement.ActionTypes.swipeLeft); + + }, + + + + + /* + * Function: startSlideshow + */ + startSlideshow: function(){ + + this.stopSlideshow(); + + this.isSlideshowActive = true; + + this.slideshowTimeout = window.setTimeout(this.slideshowNext.bind(this), this.settings.slideshowDelay); + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: stopSlideshow + */ + stopSlideshow: function(){ + + if (!Util.isNothing(this.slideshowTimeout)){ + + window.clearTimeout(this.slideshowTimeout); + this.slideshowTimeout = null; + this.isSlideshowActive = false; + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideshowStop, + target: this + }); + + } + + }, + + + + /* + * Function: onSlideByEnd + */ + onSlideByEnd: function(e){ + + if (Util.isNothing(this.isSliding)){ + return; + } + + var itemEls = this.getItemEls(); + + this.isSliding = false; + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + this.currentCacheIndex = this.currentCacheIndex + 1; + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + this.currentCacheIndex = this.currentCacheIndex - 1; + } + + if (this.settings.loop){ + + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + + if (this.currentCacheIndex < 0){ + this.currentCacheIndex = this.cache.images.length - 1; + } + else if (this.currentCacheIndex === this.cache.images.length){ + this.currentCacheIndex = 0; + } + + } + else{ + + if (this.cache.images.length > 3){ + + if (this.currentCacheIndex > 1 && this.currentCacheIndex < this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + else if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === 1){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.previous){ + // Move the last to the first + Util.DOM.insertBefore(itemEls[itemEls.length-1], itemEls[0], this.contentEl); + } + } + else if (this.currentCacheIndex === this.cache.images.length-2){ + if (this.lastSlideByAction === PhotoSwipe.Carousel.SlideByAction.next){ + // Move first to the last + Util.DOM.appendChild(itemEls[0], this.contentEl); + } + } + + } + + + } + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.setContentLeftPosition(); + this.setImages(true); + } + + + Util.Events.fire(this, { + type: PhotoSwipe.Carousel.EventTypes.onSlideByEnd, + target: this, + action: this.lastSlideByAction, + cacheIndex: this.currentCacheIndex + }); + + + if (this.isSlideshowActive){ + + if (this.lastSlideByAction !== PhotoSwipe.Carousel.SlideByAction.current){ + this.startSlideshow(); + } + else{ + this.stopSlideshow(); + } + + } + + + }, + + + + /* + * Function: onTouch + */ + onTouch: function(action, point){ + + this.stopSlideshow(); + + switch(action){ + + case Util.TouchElement.ActionTypes.touchStart: + this.touchStartPoint = point; + this.touchStartPosition = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.moveCarousel(point); + break; + + case Util.TouchElement.ActionTypes.touchMoveEnd: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + this.slideCarousel(point, action); + break; + + case Util.TouchElement.ActionTypes.tap: + break; + + case Util.TouchElement.ActionTypes.doubleTap: + break; + + + } + + }, + + + + /* + * Function: onImageLoad + */ + onImageLoad: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + this.resetImagePosition(cacheImage.imageEl); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + }, + + + + /* + * Function: onImageError + */ + onImageError: function(e){ + + var cacheImage = e.target; + + if (!Util.isNothing(cacheImage.imageEl.parentNode)){ + Util.DOM.removeClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemLoading); + Util.DOM.addClass(cacheImage.imageEl.parentNode, PhotoSwipe.Carousel.CssClasses.itemError); + } + + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onLoad, this.imageLoadHandler); + Util.Events.remove(cacheImage, PhotoSwipe.Image.EventTypes.onError, this.imageErrorHandler); + + } + + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util, TouchElement){ + + + Util.registerNamespace('Code.PhotoSwipe.Carousel'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Carousel.CarouselClass = PhotoSwipe.Carousel.CarouselClass.extend({ + + + /* + * Function: getStartingPos + */ + getStartingPos: function(){ + + var startingPos = this.touchStartPosition; + + if (Util.isNothing(startingPos)){ + startingPos = { + x: window.parseInt(Util.DOM.getStyle(this.contentEl, 'left'), 0), + y: window.parseInt(Util.DOM.getStyle(this.contentEl, 'top'), 0) + }; + } + + return startingPos; + + }, + + + + /* + * Function: doMoveCarousel + */ + doMoveCarousel: function(xVal){ + + var style; + + if (Util.Browser.isCSSTransformSupported){ + + style = {}; + + style[Util.Animation._transitionPrefix + 'Property'] = 'all'; + style[Util.Animation._transitionPrefix + 'Duration'] = ''; + style[Util.Animation._transitionPrefix + 'TimingFunction'] = ''; + style[Util.Animation._transitionPrefix + 'Delay'] = '0'; + style[Util.Animation._transformLabel] = (Util.Browser.is3dSupported) ? 'translate3d(' + xVal + 'px, 0px, 0px)' : 'translate(' + xVal + 'px, 0px)'; + + Util.DOM.setStyle(this.contentEl, style); + + } + else if (!Util.isNothing(window.jQuery)){ + + + window.jQuery(this.contentEl).stop().css('left', this.getStartingPos().x + xVal + 'px'); + + } + + }, + + + + /* + * Function: doSlideCarousel + */ + doSlideCarousel: function(xVal, speed){ + + var animateProps, transform; + + if (speed <= 0){ + + this.slideByEndHandler(); + return; + + } + + + if (Util.Browser.isCSSTransformSupported){ + + transform = Util.coalesce(this.contentEl.style.webkitTransform, this.contentEl.style.MozTransform, this.contentEl.style.transform, ''); + if (transform.indexOf('translate3d(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + else if (transform.indexOf('translate(' + xVal) === 0){ + this.slideByEndHandler(); + return; + } + + Util.Animation.slideBy(this.contentEl, xVal, 0, speed, this.slideByEndHandler, this.settings.slideTimingFunction); + + } + else if (!Util.isNothing(window.jQuery)){ + + animateProps = { + left: this.getStartingPos().x + xVal + 'px' + }; + + if (this.settings.animationTimingFunction === 'ease-out'){ + this.settings.animationTimingFunction = 'easeOutQuad'; + } + + if ( Util.isNothing(window.jQuery.easing[this.settings.animationTimingFunction]) ){ + this.settings.animationTimingFunction = 'linear'; + } + + window.jQuery(this.contentEl).animate( + animateProps, + this.settings.slideSpeed, + this.settings.animationTimingFunction, + this.slideByEndHandler + ); + + } + + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.TouchElement +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.CssClasses = { + toolbar: 'ps-toolbar', + toolbarContent: 'ps-toolbar-content', + toolbarTop: 'ps-toolbar-top', + caption: 'ps-caption', + captionBottom: 'ps-caption-bottom', + captionContent: 'ps-caption-content', + close: 'ps-toolbar-close', + play: 'ps-toolbar-play', + previous: 'ps-toolbar-previous', + previousDisabled: 'ps-toolbar-previous-disabled', + next: 'ps-toolbar-next', + nextDisabled: 'ps-toolbar-next-disabled' + }; + + + + PhotoSwipe.Toolbar.ToolbarAction = { + close: 'close', + play: 'play', + next: 'next', + previous: 'previous', + none: 'none' + }; + + + + PhotoSwipe.Toolbar.EventTypes = { + onTap: 'PhotoSwipeToolbarOnClick', + onBeforeShow: 'PhotoSwipeToolbarOnBeforeShow', + onShow: 'PhotoSwipeToolbarOnShow', + onBeforeHide: 'PhotoSwipeToolbarOnBeforeHide', + onHide: 'PhotoSwipeToolbarOnHide' + }; + + + + PhotoSwipe.Toolbar.getToolbar = function(){ + + return '
'; + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.Toolbar'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.Toolbar.ToolbarClass = klass({ + + + + toolbarEl: null, + closeEl: null, + playEl: null, + previousEl: null, + nextEl: null, + captionEl: null, + captionContentEl: null, + currentCaption: null, + settings: null, + cache: null, + timeout: null, + isVisible: null, + fadeOutHandler: null, + touchStartHandler: null, + touchMoveHandler: null, + clickHandler: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.clearTimeout(); + + this.removeEventHandlers(); + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + Util.DOM.removeChild(this.toolbarEl, this.toolbarEl.parentNode); + Util.DOM.removeChild(this.captionEl, this.captionEl.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(cache, options){ + + var cssClass; + + this.settings = options; + this.cache = cache; + this.isVisible = false; + + this.fadeOutHandler = this.onFadeOut.bind(this); + this.touchStartHandler = this.onTouchStart.bind(this); + this.touchMoveHandler = this.onTouchMove.bind(this); + this.clickHandler = this.onClick.bind(this); + + + cssClass = PhotoSwipe.Toolbar.CssClasses.toolbar; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.toolbarTop; + } + + + // Toolbar + this.toolbarEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + this.settings.getToolbar() + ); + + + Util.DOM.setStyle(this.toolbarEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.toolbarEl); + } + else{ + Util.DOM.appendChild(this.toolbarEl, this.settings.target); + } + Util.DOM.hide(this.toolbarEl); + + this.closeEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.close, this.toolbarEl)[0]; + if (this.settings.preventHide && !Util.isNothing(this.closeEl)){ + Util.DOM.hide(this.closeEl); + } + + this.playEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.play, this.toolbarEl)[0]; + if (this.settings.preventSlideshow && !Util.isNothing(this.playEl)){ + Util.DOM.hide(this.playEl); + } + + this.nextEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.next, this.toolbarEl)[0]; + this.previousEl = Util.DOM.find('.' + PhotoSwipe.Toolbar.CssClasses.previous, this.toolbarEl)[0]; + + + // Caption + cssClass = PhotoSwipe.Toolbar.CssClasses.caption; + if (this.settings.captionAndToolbarFlipPosition){ + cssClass = cssClass + ' ' + PhotoSwipe.Toolbar.CssClasses.captionBottom; + } + + this.captionEl = Util.DOM.createElement( + 'div', + { + 'class': cssClass + }, + '' + ); + Util.DOM.setStyle(this.captionEl, { + left: 0, + position: 'absolute', + overflow: 'hidden', + zIndex: this.settings.zIndex + }); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.captionEl); + } + else{ + Util.DOM.appendChild(this.captionEl, this.settings.target); + } + Util.DOM.hide(this.captionEl); + + this.captionContentEl = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.Toolbar.CssClasses.captionContent + }, + '' + ); + Util.DOM.appendChild(this.captionContentEl, this.captionEl); + + this.addEventHandlers(); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + var width, toolbarTop, captionTop; + + if (this.settings.target === window){ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = Util.DOM.windowScrollTop(); + captionTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.captionEl); + } + else { + toolbarTop = (Util.DOM.windowScrollTop() + Util.DOM.windowHeight()) - Util.DOM.height(this.toolbarEl); + captionTop = Util.DOM.windowScrollTop(); + } + width = Util.DOM.windowWidth(); + } + else{ + if (this.settings.captionAndToolbarFlipPosition){ + toolbarTop = '0'; + captionTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.captionEl); + } + else{ + toolbarTop = Util.DOM.height(this.settings.target) - Util.DOM.height(this.toolbarEl); + captionTop = 0; + } + width = Util.DOM.width(this.settings.target); + } + + Util.DOM.setStyle(this.toolbarEl, { + top: toolbarTop + 'px', + width: width + }); + + Util.DOM.setStyle(this.captionEl, { + top: captionTop + 'px', + width: width + }); + }, + + + + /* + * Function: toggleVisibility + */ + toggleVisibility: function(index){ + + if (this.isVisible){ + this.fadeOut(); + } + else{ + this.show(index); + } + + }, + + + + /* + * Function: show + */ + show: function(index){ + + Util.Animation.stop(this.toolbarEl); + Util.Animation.stop(this.captionEl); + + this.resetPosition(); + this.setToolbarStatus(index); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeShow, + target: this + }); + + this.showToolbar(); + this.setCaption(index); + this.showCaption(); + + this.isVisible = true; + + this.setTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onShow, + target: this + }); + + }, + + + + /* + * Function: setTimeout + */ + setTimeout: function(){ + + if (this.settings.captionAndToolbarAutoHideDelay > 0){ + // Set a timeout to hide the toolbar + this.clearTimeout(); + this.timeout = window.setTimeout(this.fadeOut.bind(this), this.settings.captionAndToolbarAutoHideDelay); + } + + }, + + + + /* + * Function: clearTimeout + */ + clearTimeout: function(){ + + if (!Util.isNothing(this.timeout)){ + window.clearTimeout(this.timeout); + this.timeout = null; + } + + }, + + + + /* + * Function: fadeOut + */ + fadeOut: function(){ + + this.clearTimeout(); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onBeforeHide, + target: this + }); + + Util.Animation.fadeOut(this.toolbarEl, this.settings.fadeOutSpeed); + Util.Animation.fadeOut(this.captionEl, this.settings.fadeOutSpeed, this.fadeOutHandler); + + this.isVisible = false; + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.add(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.add(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.add(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.add(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.isTouchSupported){ + if (!Util.Browser.blackberry){ + // Had an issue with touchstart, animation and Blackberry. BB will default to click + Util.Events.remove(this.toolbarEl, 'touchstart', this.touchStartHandler); + } + Util.Events.remove(this.toolbarEl, 'touchmove', this.touchMoveHandler); + Util.Events.remove(this.captionEl, 'touchmove', this.touchMoveHandler); + } + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + + }, + + + + /* + * Function: handleTap + */ + handleTap: function(e){ + + this.clearTimeout(); + + var action; + + if (e.target === this.nextEl || Util.DOM.isChildOf(e.target, this.nextEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.next; + } + else if (e.target === this.previousEl || Util.DOM.isChildOf(e.target, this.previousEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.previous; + } + else if (e.target === this.closeEl || Util.DOM.isChildOf(e.target, this.closeEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.close; + } + else if (e.target === this.playEl || Util.DOM.isChildOf(e.target, this.playEl)){ + action = PhotoSwipe.Toolbar.ToolbarAction.play; + } + + this.setTimeout(); + + if (Util.isNothing(action)){ + action = PhotoSwipe.Toolbar.ToolbarAction.none; + } + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onTap, + target: this, + action: action, + tapTarget: e.target + }); + + }, + + + + /* + * Function: setCaption + */ + setCaption: function(index){ + + Util.DOM.removeChildren(this.captionContentEl); + + this.currentCaption = Util.coalesce(this.cache.images[index].caption, '\u00A0'); + + if (Util.isObject(this.currentCaption)){ + Util.DOM.appendChild(this.currentCaption, this.captionContentEl); + } + else{ + if (this.currentCaption === ''){ + this.currentCaption = '\u00A0'; + } + Util.DOM.appendText(this.currentCaption, this.captionContentEl); + } + + this.currentCaption = (this.currentCaption === '\u00A0') ? '' : this.currentCaption; + this.resetPosition(); + + }, + + + + /* + * Function: showToolbar + */ + showToolbar: function(){ + + Util.DOM.setStyle(this.toolbarEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.toolbarEl); + + }, + + + + /* + * Function: showCaption + */ + showCaption: function(){ + + if (this.currentCaption === '' || this.captionContentEl.childNodes.length < 1){ + // Empty caption + if (!this.settings.captionAndToolbarShowEmptyCaptions){ + Util.DOM.hide(this.captionEl); + return; + } + } + Util.DOM.setStyle(this.captionEl, { + opacity: this.settings.captionAndToolbarOpacity + }); + Util.DOM.show(this.captionEl); + + }, + + + + /* + * Function: setToolbarStatus + */ + setToolbarStatus: function(index){ + + if (this.settings.loop){ + return; + } + + Util.DOM.removeClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + Util.DOM.removeClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + + if (index > 0 && index < this.cache.images.length-1){ + return; + } + + if (index === 0){ + if (!Util.isNothing(this.previousEl)){ + Util.DOM.addClass(this.previousEl, PhotoSwipe.Toolbar.CssClasses.previousDisabled); + } + } + + if (index === this.cache.images.length-1){ + if (!Util.isNothing(this.nextEl)){ + Util.DOM.addClass(this.nextEl, PhotoSwipe.Toolbar.CssClasses.nextDisabled); + } + } + + }, + + + + /* + * Function: onFadeOut + */ + onFadeOut: function(){ + + Util.DOM.hide(this.toolbarEl); + Util.DOM.hide(this.captionEl); + + Util.Events.fire(this, { + type: PhotoSwipe.Toolbar.EventTypes.onHide, + target: this + }); + + }, + + + + /* + * Function: onTouchStart + */ + onTouchStart: function(e){ + + e.preventDefault(); + Util.Events.remove(this.toolbarEl, 'click', this.clickHandler); + this.handleTap(e); + + }, + + + + /* + * Function: onTouchMove + */ + onTouchMove: function(e){ + + e.preventDefault(); + + }, + + + + /* + * Function: onClick + */ + onClick: function(e){ + + e.preventDefault(); + this.handleTap(e); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.UILayer.CssClasses = { + uiLayer: 'ps-uilayer' + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.UILayer'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.UILayer.UILayerClass = Util.TouchElement.TouchElementClass.extend({ + + + + el: null, + settings: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + this.removeEventHandlers(); + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options){ + + this.settings = options; + + // Main container + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.UILayer.CssClasses.uiLayer + }, + '' + ); + Util.DOM.setStyle(this.el, { + display: 'block', + position: 'absolute', + left: 0, + top: 0, + overflow: 'hidden', + zIndex: this.settings.zIndex, + opacity: 0 + }); + Util.DOM.hide(this.el); + + if (this.settings.target === window){ + Util.DOM.appendToBody(this.el); + } + else{ + Util.DOM.appendChild(this.el, this.settings.target); + } + + this.supr(this.el, { + swipe: true, + move: true, + gesture: Util.Browser.iOS, + doubleTap: true, + preventDefaultTouchEvents: this.settings.preventDefaultTouchEvents + }); + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + // Set the height and width to fill the document + if (this.settings.target === window){ + Util.DOM.setStyle(this.el, { + top: Util.DOM.windowScrollTop() + 'px', + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }); + } + else{ + Util.DOM.setStyle(this.el, { + top: '0px', + width: Util.DOM.width(this.settings.target), + height: Util.DOM.height(this.settings.target) + }); + } + + }, + + + + /* + * Function: show + */ + show: function(){ + + this.resetPosition(); + Util.DOM.show(this.el); + this.addEventHandlers(); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + this.supr(); + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + this.supr(); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + PhotoSwipe.ZoomPanRotate.CssClasses = { + zoomPanRotate: 'ps-zoom-pan-rotate' + }; + + + PhotoSwipe.ZoomPanRotate.EventTypes = { + + onTransform: 'PhotoSwipeZoomPanRotateOnTransform' + + }; + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, klass, Util){ + + + Util.registerNamespace('Code.PhotoSwipe.ZoomPanRotate'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + PhotoSwipe.ZoomPanRotate.ZoomPanRotateClass = klass({ + + el: null, + settings: null, + containerEl: null, + imageEl: null, + transformSettings: null, + panStartingPoint: null, + transformEl: null, + + + + /* + * Function: dispose + */ + dispose: function(){ + + var prop; + + Util.DOM.removeChild(this.el, this.el.parentNode); + + for (prop in this) { + if (Util.objectHasProperty(this, prop)) { + this[prop] = null; + } + } + + }, + + + + /* + * Function: initialize + */ + initialize: function(options, cacheImage, uiLayer){ + + var parentEl, width, height, top; + + this.settings = options; + + if (this.settings.target === window){ + parentEl = document.body; + width = Util.DOM.windowWidth(); + height = Util.DOM.windowHeight(); + top = Util.DOM.windowScrollTop() + 'px'; + } + else{ + parentEl = this.settings.target; + width = Util.DOM.width(parentEl); + height = Util.DOM.height(parentEl); + top = '0px'; + } + + this.imageEl = cacheImage.imageEl.cloneNode(false); + Util.DOM.setStyle(this.imageEl, { + + zIndex: 1 + + }); + + this.transformSettings = { + + startingScale: 1.0, + scale: 1.0, + startingRotation: 0, + rotation: 0, + startingTranslateX: 0, + startingTranslateY: 0, + translateX: 0, + translateY: 0 + + }; + + + this.el = Util.DOM.createElement( + 'div', + { + 'class': PhotoSwipe.ZoomPanRotate.CssClasses.zoomPanRotate + }, + '' + ); + Util.DOM.setStyle(this.el, { + left: 0, + top: top, + position: 'absolute', + width: width, + height: height, + zIndex: this.settings.zIndex, + display: 'block' + }); + + Util.DOM.insertBefore(this.el, uiLayer.el, parentEl); + + if (Util.Browser.iOS){ + this.containerEl = Util.DOM.createElement('div','',''); + Util.DOM.setStyle(this.containerEl, { + left: 0, + top: 0, + width: width, + height: height, + position: 'absolute', + zIndex: 1 + }); + Util.DOM.appendChild(this.imageEl, this.containerEl); + Util.DOM.appendChild(this.containerEl, this.el); + Util.Animation.resetTranslate(this.containerEl); + Util.Animation.resetTranslate(this.imageEl); + this.transformEl = this.containerEl; + } + else{ + Util.DOM.appendChild(this.imageEl, this.el); + this.transformEl = this.imageEl; + } + + }, + + + + /* + * Function: setStartingTranslateFromCurrentTransform + */ + setStartingTranslateFromCurrentTransform: function(){ + + var + transformValue = Util.coalesce(this.transformEl.style.webkitTransform, this.transformEl.style.MozTransform, this.transformEl.style.transform), + transformExploded; + + if (!Util.isNothing(transformValue)){ + + transformExploded = transformValue.match( /translate\((.*?)\)/ ); + + if (!Util.isNothing(transformExploded)){ + + transformExploded = transformExploded[1].split(', '); + this.transformSettings.startingTranslateX = window.parseInt(transformExploded[0], 10); + this.transformSettings.startingTranslateY = window.parseInt(transformExploded[1], 10); + + } + + } + + }, + + + + /* + * Function: getScale + */ + getScale: function(scaleValue){ + + var scale = this.transformSettings.startingScale * scaleValue; + + if (this.settings.minUserZoom !== 0 && scale < this.settings.minUserZoom){ + scale = this.settings.minUserZoom; + } + else if (this.settings.maxUserZoom !== 0 && scale > this.settings.maxUserZoom){ + scale = this.settings.maxUserZoom; + } + + return scale; + + }, + + + + /* + * Function: setStartingScaleAndRotation + */ + setStartingScaleAndRotation: function(scaleValue, rotationValue){ + + this.transformSettings.startingScale = this.getScale(scaleValue); + + this.transformSettings.startingRotation = + (this.transformSettings.startingRotation + rotationValue) % 360; + + }, + + + + /* + * Function: zoomRotate + */ + zoomRotate: function(scaleValue, rotationValue){ + + this.transformSettings.scale = this.getScale(scaleValue); + + this.transformSettings.rotation = + this.transformSettings.startingRotation + rotationValue; + + this.applyTransform(); + + }, + + + + /* + * Function: panStart + */ + panStart: function(point){ + + this.setStartingTranslateFromCurrentTransform(); + + this.panStartingPoint = { + x: point.x, + y: point.y + }; + + }, + + + + /* + * Function: pan + */ + pan: function(point){ + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale , + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + this.transformSettings.startingTranslateX + dxScaleAdjust; + + this.transformSettings.translateY = + this.transformSettings.startingTranslateY + dyScaleAdjust; + + this.applyTransform(); + + }, + + + + /* + * Function: zoomAndPanToPoint + */ + zoomAndPanToPoint: function(scaleValue, point){ + + + if (this.settings.target === window){ + + this.panStart({ + x: Util.DOM.windowWidth() / 2, + y: Util.DOM.windowHeight() / 2 + }); + + var + dx = point.x - this.panStartingPoint.x, + dy = point.y - this.panStartingPoint.y, + dxScaleAdjust = dx / this.transformSettings.scale, + dyScaleAdjust = dy / this.transformSettings.scale; + + this.transformSettings.translateX = + (this.transformSettings.startingTranslateX + dxScaleAdjust) * -1; + + this.transformSettings.translateY = + (this.transformSettings.startingTranslateY + dyScaleAdjust) * -1; + + } + + + this.setStartingScaleAndRotation(scaleValue, 0); + this.transformSettings.scale = this.transformSettings.startingScale; + + this.transformSettings.rotation = 0; + + this.applyTransform(); + + }, + + + + /* + * Function: applyTransform + */ + applyTransform: function(){ + + var + rotationDegs = this.transformSettings.rotation % 360, + translateX = window.parseInt(this.transformSettings.translateX, 10), + translateY = window.parseInt(this.transformSettings.translateY, 10), + transform = 'scale(' + this.transformSettings.scale + ') rotate(' + rotationDegs + 'deg) translate(' + translateX + 'px, ' + translateY + 'px)'; + + Util.DOM.setStyle(this.transformEl, { + webkitTransform: transform, + MozTransform: transform, + msTransform: transform, + transform: transform + }); + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, + scale: this.transformSettings.scale, + rotation: this.transformSettings.rotation, + rotationDegs: rotationDegs, + translateX: translateX, + translateY: translateY + }); + + } + + }); + + + +} +( + window, + window.klass, + window.Code.Util +));// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 + +(function(window, Util){ + + + Util.registerNamespace('Code.PhotoSwipe'); + var PhotoSwipe = window.Code.PhotoSwipe; + + + + PhotoSwipe.CssClasses = { + buildingBody: 'ps-building', + activeBody: 'ps-active' + }; + + + + PhotoSwipe.EventTypes = { + + onBeforeShow: 'PhotoSwipeOnBeforeShow', + onShow: 'PhotoSwipeOnShow', + onBeforeHide: 'PhotoSwipeOnBeforeHide', + onHide: 'PhotoSwipeOnHide', + onDisplayImage: 'PhotoSwipeOnDisplayImage', + onResetPosition: 'PhotoSwipeOnResetPosition', + onSlideshowStart: 'PhotoSwipeOnSlideshowStart', + onSlideshowStop: 'PhotoSwipeOnSlideshowStop', + onTouch: 'PhotoSwipeOnTouch', + onBeforeCaptionAndToolbarShow: 'PhotoSwipeOnBeforeCaptionAndToolbarShow', + onCaptionAndToolbarShow: 'PhotoSwipeOnCaptionAndToolbarShow', + onBeforeCaptionAndToolbarHide: 'PhotoSwipeOnBeforeCaptionAndToolbarHide', + onCaptionAndToolbarHide: 'PhotoSwipeOnCaptionAndToolbarHide', + onToolbarTap: 'PhotoSwipeOnToolbarTap', + onBeforeZoomPanRotateShow: 'PhotoSwipeOnBeforeZoomPanRotateShow', + onZoomPanRotateShow: 'PhotoSwipeOnZoomPanRotateShow', + onBeforeZoomPanRotateHide: 'PhotoSwipeOnBeforeZoomPanRotateHide', + onZoomPanRotateHide: 'PhotoSwipeOnZoomPanRotateHide', + onZoomPanRotateTransform: 'PhotoSwipeOnZoomPanRotateTransform' + + }; + + + + PhotoSwipe.instances = []; + PhotoSwipe.activeInstances = []; + + + + /* + * Function: Code.PhotoSwipe.setActivateInstance + */ + PhotoSwipe.setActivateInstance = function(instance){ + + // Can only have one instance per target (i.e. window or div) + var index = Util.arrayIndexOf(instance.settings.target, PhotoSwipe.activeInstances, 'target'); + if (index > -1){ + throw 'Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target'; + } + PhotoSwipe.activeInstances.push({ + target: instance.settings.target, + instance: instance + }); + + }; + + + + /* + * Function: Code.PhotoSwipe.unsetActivateInstance + */ + PhotoSwipe.unsetActivateInstance = function(instance){ + + var index = Util.arrayIndexOf(instance, PhotoSwipe.activeInstances, 'instance'); + PhotoSwipe.activeInstances.splice(index, 1); + + }; + + + + /* + * Function: Code.PhotoSwipe.attach + */ + PhotoSwipe.attach = function(images, options, id){ + + var i, j, instance, image; + + instance = PhotoSwipe.createInstance(images, options, id); + + // Add click event handlers if applicable + for (i=0, j=images.length; i= 2.1){ + this.isBackEventSupported = true; + } + } + + if (!this.isBackEventSupported){ + this.isBackEventSupported = Util.objectHasProperty(window, 'onhashchange'); + } + + this.settings = { + + // General + fadeInSpeed: 250, + fadeOutSpeed: 250, + preventHide: false, + preventSlideshow: false, + zIndex: 1000, + backButtonHideEnabled: true, + enableKeyboard: true, + enableMouseWheel: true, + mouseWheelSpeed: 350, + autoStartSlideshow: false, + jQueryMobile: ( !Util.isNothing(window.jQuery) && !Util.isNothing(window.jQuery.mobile) ), + jQueryMobileDialogHash: '&ui-state=dialog', + enableUIWebViewRepositionTimeout: false, + uiWebViewResetPositionDelay: 500, + target: window, + preventDefaultTouchEvents: true, + + + // Carousel + loop: true, + slideSpeed: 250, + nextPreviousSlideSpeed: 0, + enableDrag: true, + swipeThreshold: 50, + swipeTimeThreshold: 250, + slideTimingFunction: 'ease-out', + slideshowDelay: 3000, + doubleTapSpeed: 250, + margin: 20, + imageScaleMethod: 'fit', // Either "fit", "fitNoUpscale" or "zoom", + + + // Toolbar + captionAndToolbarHide: false, + captionAndToolbarFlipPosition: false, + captionAndToolbarAutoHideDelay: 5000, + captionAndToolbarOpacity: 0.8, + captionAndToolbarShowEmptyCaptions: true, + getToolbar: PhotoSwipe.Toolbar.getToolbar, + + + // ZoomPanRotate + allowUserZoom: true, + allowRotationOnUserZoom: false, + maxUserZoom: 5.0, + minUserZoom: 0.5, + doubleTapZoomLevel: 2.5, + + + // Cache + getImageSource: PhotoSwipe.Cache.Functions.getImageSource, + getImageCaption: PhotoSwipe.Cache.Functions.getImageCaption, + getImageMetaData: PhotoSwipe.Cache.Functions.getImageMetaData, + cacheMode: PhotoSwipe.Cache.Mode.normal + + }; + + Util.extend(this.settings, options); + + if (this.settings.target !== window){ + targetPosition = Util.DOM.getStyle(this.settings.target, 'position'); + if (targetPosition !== 'relative' || targetPosition !== 'absolute'){ + Util.DOM.setStyle(this.settings.target, 'position', 'relative'); + } + } + + if (this.settings.target !== window){ + this.isBackEventSupported = false; + this.settings.backButtonHideEnabled = false; + } + else{ + if (this.settings.preventHide){ + this.settings.backButtonHideEnabled = false; + } + } + + this.cache = new Cache.CacheClass(images, this.settings); + + }, + + + + /* + * Function: show + */ + show: function(obj){ + + var i, j; + + this._isResettingPosition = false; + this.backButtonClicked = false; + + // Work out what the starting index is + if (Util.isNumber(obj)){ + this.currentIndex = obj; + } + else{ + + this.currentIndex = -1; + for (i=0, j=this.originalImages.length; i this.originalImages.length-1){ + throw "Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range"; + } + + // Store a reference to the current window dimensions + // Use this later to double check that a window has actually + // been resized. + this.isAlreadyGettingPage = this.getWindowDimensions(); + + // Set this instance to be the active instance + PhotoSwipe.setActivateInstance(this); + + this.windowDimensions = this.getWindowDimensions(); + + // Create components + if (this.settings.target === window){ + Util.DOM.addClass(window.document.body, PhotoSwipe.CssClasses.buildingBody); + } + else{ + Util.DOM.addClass(this.settings.target, PhotoSwipe.CssClasses.buildingBody); + } + this.createComponents(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeShow, + target: this + }); + + // Fade in the document overlay + this.documentOverlay.fadeIn(this.settings.fadeInSpeed, this.onDocumentOverlayFadeIn.bind(this)); + + }, + + + + /* + * Function: getWindowDimensions + */ + getWindowDimensions: function(){ + + return { + width: Util.DOM.windowWidth(), + height: Util.DOM.windowHeight() + }; + + }, + + + + /* + * Function: createComponents + */ + createComponents: function(){ + + this.documentOverlay = new DocumentOverlay.DocumentOverlayClass(this.settings); + this.carousel = new Carousel.CarouselClass(this.cache, this.settings); + this.uiLayer = new UILayer.UILayerClass(this.settings); + if (!this.settings.captionAndToolbarHide){ + this.toolbar = new Toolbar.ToolbarClass(this.cache, this.settings); + } + + }, + + + + /* + * Function: resetPosition + */ + resetPosition: function(){ + + if (this._isResettingPosition){ + return; + } + + var newWindowDimensions = this.getWindowDimensions(); + if (!Util.isNothing(this.windowDimensions)){ + if (newWindowDimensions.width === this.windowDimensions.width && newWindowDimensions.height === this.windowDimensions.height){ + // This was added as a fudge for iOS + return; + } + } + + this._isResettingPosition = true; + + this.windowDimensions = newWindowDimensions; + + this.destroyZoomPanRotate(); + + this.documentOverlay.resetPosition(); + this.carousel.resetPosition(); + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.resetPosition(); + } + + this.uiLayer.resetPosition(); + + this._isResettingPosition = false; + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onResetPosition, + target: this + }); + + }, + + + + /* + * Function: addEventHandler + */ + addEventHandler: function(type, handler){ + + Util.Events.add(this, type, handler); + + }, + + + + /* + * Function: addEventHandlers + */ + addEventHandlers: function(){ + + if (Util.isNothing(this.windowOrientationChangeHandler)){ + + this.windowOrientationChangeHandler = this.onWindowOrientationChange.bind(this); + this.windowScrollHandler = this.onWindowScroll.bind(this); + this.keyDownHandler = this.onKeyDown.bind(this); + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + this.uiLayerTouchHandler = this.onUILayerTouch.bind(this); + this.carouselSlideByEndHandler = this.onCarouselSlideByEnd.bind(this); + this.carouselSlideshowStartHandler = this.onCarouselSlideshowStart.bind(this); + this.carouselSlideshowStopHandler = this.onCarouselSlideshowStop.bind(this); + this.toolbarTapHandler = this.onToolbarTap.bind(this); + this.toolbarBeforeShowHandler = this.onToolbarBeforeShow.bind(this); + this.toolbarShowHandler = this.onToolbarShow.bind(this); + this.toolbarBeforeHideHandler = this.onToolbarBeforeHide.bind(this); + this.toolbarHideHandler = this.onToolbarHide.bind(this); + this.mouseWheelHandler = this.onMouseWheel.bind(this); + this.zoomPanRotateTransformHandler = this.onZoomPanRotateTransform.bind(this); + + } + + // Set window handlers + if (Util.Browser.android){ + // For some reason, resize was more stable than orientationchange in Android + this.orientationEventName = 'resize'; + } + else if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.add(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + else{ + var supportsOrientationChange = !Util.isNothing(window.onorientationchange); + this.orientationEventName = supportsOrientationChange ? 'orientationchange' : 'resize'; + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.add(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + if (this.settings.target === window){ + Util.Events.add(window, 'scroll', this.windowScrollHandler); + } + + if (this.settings.enableKeyboard){ + Util.Events.add(window.document, 'keydown', this.keyDownHandler); + } + + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + + this.windowHashChangeHandler = this.onWindowHashChange.bind(this); + + if (this.settings.jQueryMobile){ + window.location.hash = this.settings.jQueryMobileDialogHash; + } + else{ + this.currentHistoryHashValue = 'PhotoSwipe' + new Date().getTime().toString(); + window.location.hash = this.currentHistoryHashValue; + } + + Util.Events.add(window, 'hashchange', this.windowHashChangeHandler); + + } + + if (this.settings.enableMouseWheel){ + Util.Events.add(window, 'mousewheel', this.mouseWheelHandler); + } + + Util.Events.add(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.add(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + + if (!Util.isNothing(this.toolbar)){ + Util.Events.add(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.add(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + /* + * Function: removeEventHandlers + */ + removeEventHandlers: function(){ + + if (Util.Browser.iOS && (!Util.Browser.safari)){ + Util.Events.remove(window.document.body, 'orientationchange', this.windowOrientationChangeHandler); + } + + if (!Util.isNothing(this.orientationEventName)){ + Util.Events.remove(window, this.orientationEventName, this.windowOrientationChangeHandler); + } + + Util.Events.remove(window, 'scroll', this.windowScrollHandler); + + if (this.settings.enableKeyboard){ + Util.Events.remove(window.document, 'keydown', this.keyDownHandler); + } + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + Util.Events.remove(window, 'hashchange', this.windowHashChangeHandler); + } + + if (this.settings.enableMouseWheel){ + Util.Events.remove(window, 'mousewheel', this.mouseWheelHandler); + } + + if (!Util.isNothing(this.uiLayer)){ + Util.Events.remove(this.uiLayer, Util.TouchElement.EventTypes.onTouch, this.uiLayerTouchHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideByEnd, this.carouselSlideByEndHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStart, this.carouselSlideshowStartHandler); + Util.Events.remove(this.carousel, Carousel.EventTypes.onSlideshowStop, this.carouselSlideshowStopHandler); + } + + if (!Util.isNothing(this.toolbar)){ + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onTap, this.toolbarTapHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeShow, this.toolbarBeforeShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onShow, this.toolbarShowHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onBeforeHide, this.toolbarBeforeHideHandler); + Util.Events.remove(this.toolbar, Toolbar.EventTypes.onHide, this.toolbarHideHandler); + } + + }, + + + + + /* + * Function: hide + */ + hide: function(){ + + if (this.settings.preventHide){ + return; + } + + if (Util.isNothing(this.documentOverlay)){ + throw "Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden"; + } + + if (!Util.isNothing(this.hiding)){ + return; + } + + this.clearUIWebViewResetPositionTimeout(); + + this.destroyZoomPanRotate(); + + this.removeEventHandlers(); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeHide, + target: this + }); + + this.uiLayer.dispose(); + this.uiLayer = null; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.dispose(); + this.toolbar = null; + } + + this.carousel.dispose(); + this.carousel = null; + + Util.DOM.removeClass(window.document.body, PhotoSwipe.CssClasses.activeBody); + + this.documentOverlay.dispose(); + this.documentOverlay = null; + + this._isResettingPosition = false; + + // Deactive this instance + PhotoSwipe.unsetActivateInstance(this); + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onHide, + target: this + }); + + this.goBackInHistory(); + + }, + + + + /* + * Function: goBackInHistory + */ + goBackInHistory: function(){ + + if (this.isBackEventSupported && this.settings.backButtonHideEnabled){ + if ( !this.backButtonClicked ){ + window.history.back(); + } + } + + }, + + + + /* + * Function: play + */ + play: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!this.settings.preventSlideshow){ + if (!Util.isNothing(this.carousel)){ + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + this.carousel.startSlideshow(); + } + } + + }, + + + + /* + * Function: stop + */ + stop: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.stopSlideshow(); + } + + }, + + + + /* + * Function: previous + */ + previous: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.previous(); + } + + }, + + + + /* + * Function: next + */ + next: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.carousel)){ + this.carousel.next(); + } + + }, + + + + /* + * Function: toggleToolbar + */ + toggleToolbar: function(){ + + if (this.isZoomActive()){ + return; + } + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.toggleVisibility(this.currentIndex); + } + + }, + + + + /* + * Function: fadeOutToolbarIfVisible + */ + fadeOutToolbarIfVisible: function(){ + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible && this.settings.captionAndToolbarAutoHideDelay > 0){ + this.toolbar.fadeOut(); + } + + }, + + + + /* + * Function: createZoomPanRotate + */ + createZoomPanRotate: function(){ + + this.stop(); + + if (this.canUserZoom() && !this.isZoomActive()){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateShow); + + this.zoomPanRotate = new ZoomPanRotate.ZoomPanRotateClass( + this.settings, + this.cache.images[this.currentIndex], + this.uiLayer + ); + + // If we don't override this in the event of false + // you will be unable to pan around a zoomed image effectively + this.uiLayer.captureSettings.preventDefaultTouchEvents = true; + + Util.Events.add(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateShow); + + if (!Util.isNothing(this.toolbar) && this.toolbar.isVisible){ + this.toolbar.fadeOut(); + } + + } + + }, + + + + /* + * Function: destroyZoomPanRotate + */ + destroyZoomPanRotate: function(){ + + if (!Util.isNothing(this.zoomPanRotate)){ + + Util.Events.fire(this, PhotoSwipe.EventTypes.onBeforeZoomPanRotateHide); + + Util.Events.remove(this.zoomPanRotate, PhotoSwipe.ZoomPanRotate.EventTypes.onTransform, this.zoomPanRotateTransformHandler); + this.zoomPanRotate.dispose(); + this.zoomPanRotate = null; + + // Set the preventDefaultTouchEvents back to it was + this.uiLayer.captureSettings.preventDefaultTouchEvents = this.settings.preventDefaultTouchEvents; + + Util.Events.fire(this, PhotoSwipe.EventTypes.onZoomPanRotateHide); + + } + + }, + + + + /* + * Function: canUserZoom + */ + canUserZoom: function(){ + + var testEl, cacheImage; + + if (Util.Browser.msie){ + testEl = document.createElement('div'); + if (Util.isNothing(testEl.style.msTransform)){ + return false; + } + } + else if (!Util.Browser.isCSSTransformSupported){ + return false; + } + + if (!this.settings.allowUserZoom){ + return false; + } + + + if (this.carousel.isSliding){ + return false; + } + + cacheImage = this.cache.images[this.currentIndex]; + + if (Util.isNothing(cacheImage)){ + return false; + } + + if (cacheImage.isLoading){ + return false; + } + + return true; + + }, + + + + /* + * Function: isZoomActive + */ + isZoomActive: function(){ + + return (!Util.isNothing(this.zoomPanRotate)); + + }, + + + + /* + * Function: getCurrentImage + */ + getCurrentImage: function(){ + + return this.cache.images[this.currentIndex]; + + }, + + + + /* + * Function: onDocumentOverlayFadeIn + */ + onDocumentOverlayFadeIn: function(e){ + + window.setTimeout(function(){ + + var el = (this.settings.target === window) ? window.document.body : this.settings.target; + + Util.DOM.removeClass(el, PhotoSwipe.CssClasses.buildingBody); + Util.DOM.addClass(el, PhotoSwipe.CssClasses.activeBody); + + this.addEventHandlers(); + + this.carousel.show(this.currentIndex); + + this.uiLayer.show(); + + if (this.settings.autoStartSlideshow){ + this.play(); + } + else if (!Util.isNothing(this.toolbar)){ + this.toolbar.show(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onShow, + target: this + }); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), 250); + + + }, + + + + /* + * Function: setUIWebViewResetPositionTimeout + */ + setUIWebViewResetPositionTimeout: function(){ + + if (!this.settings.enableUIWebViewRepositionTimeout){ + return; + } + + if (!(Util.Browser.iOS && (!Util.Browser.safari))){ + return; + } + + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + this._uiWebViewResetPositionTimeout = window.setTimeout(function(){ + + this.resetPosition(); + + this.setUIWebViewResetPositionTimeout(); + + }.bind(this), this.settings.uiWebViewResetPositionDelay); + + }, + + + + /* + * Function: clearUIWebViewResetPositionTimeout + */ + clearUIWebViewResetPositionTimeout: function(){ + if (!Util.isNothing(this._uiWebViewResetPositionTimeout)){ + window.clearTimeout(this._uiWebViewResetPositionTimeout); + } + }, + + + + /* + * Function: onWindowScroll + */ + onWindowScroll: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowOrientationChange + */ + onWindowOrientationChange: function(e){ + + this.resetPosition(); + + }, + + + + /* + * Function: onWindowHashChange + */ + onWindowHashChange: function(e){ + + var compareHash = '#' + + ((this.settings.jQueryMobile) ? this.settings.jQueryMobileDialogHash : this.currentHistoryHashValue); + + if (window.location.hash !== compareHash){ + this.backButtonClicked = true; + this.hide(); + } + + }, + + + + /* + * Function: onKeyDown + */ + onKeyDown: function(e){ + + if (e.keyCode === 37) { // Left + e.preventDefault(); + this.previous(); + } + else if (e.keyCode === 39) { // Right + e.preventDefault(); + this.next(); + } + else if (e.keyCode === 38 || e.keyCode === 40) { // Up and down + e.preventDefault(); + } + else if (e.keyCode === 27) { // Escape + e.preventDefault(); + this.hide(); + } + else if (e.keyCode === 32) { // Spacebar + if (!this.settings.hideToolbar){ + this.toggleToolbar(); + } + else{ + this.hide(); + } + e.preventDefault(); + } + else if (e.keyCode === 13) { // Enter + e.preventDefault(); + this.play(); + } + + }, + + + + /* + * Function: onUILayerTouch + */ + onUILayerTouch: function(e){ + + if (this.isZoomActive()){ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.gestureChange: + this.zoomPanRotate.zoomRotate(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.gestureEnd: + this.zoomPanRotate.setStartingScaleAndRotation(e.scale, (this.settings.allowRotationOnUserZoom) ? e.rotation : 0); + break; + + case Util.TouchElement.ActionTypes.touchStart: + this.zoomPanRotate.panStart(e.point); + break; + + case Util.TouchElement.ActionTypes.touchMove: + this.zoomPanRotate.pan(e.point); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + this.destroyZoomPanRotate(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeLeft: + this.destroyZoomPanRotate(); + this.next(); + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.swipeRight: + this.destroyZoomPanRotate(); + this.previous(); + this.toggleToolbar(); + break; + } + + } + else{ + + switch (e.action){ + + case Util.TouchElement.ActionTypes.touchMove: + case Util.TouchElement.ActionTypes.swipeLeft: + case Util.TouchElement.ActionTypes.swipeRight: + + // Hide the toolbar if need be + this.fadeOutToolbarIfVisible(); + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.touchStart: + case Util.TouchElement.ActionTypes.touchMoveEnd: + + // Pass the touch onto the carousel + this.carousel.onTouch(e.action, e.point); + break; + + case Util.TouchElement.ActionTypes.tap: + this.toggleToolbar(); + break; + + case Util.TouchElement.ActionTypes.doubleTap: + + // Take into consideration the window scroll + if (this.settings.target === window){ + e.point.x -= Util.DOM.windowScrollLeft(); + e.point.y -= Util.DOM.windowScrollTop(); + } + + // Just make sure that if the user clicks out of the image + // that the image does not pan out of view! + var + cacheImageEl = this.cache.images[this.currentIndex].imageEl, + + imageTop = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'top'), 10), + imageLeft = window.parseInt(Util.DOM.getStyle(cacheImageEl, 'left'), 10), + imageRight = imageLeft + Util.DOM.width(cacheImageEl), + imageBottom = imageTop + Util.DOM.height(cacheImageEl); + + if (e.point.x < imageLeft){ + e.point.x = imageLeft; + } + else if (e.point.x > imageRight){ + e.point.x = imageRight; + } + + if (e.point.y < imageTop){ + e.point.y = imageTop; + } + else if (e.point.y > imageBottom){ + e.point.y = imageBottom; + } + + this.createZoomPanRotate(); + if (this.isZoomActive()){ + this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel, e.point); + } + + break; + + case Util.TouchElement.ActionTypes.gestureStart: + this.createZoomPanRotate(); + break; + } + + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onTouch, + target: this, + point: e.point, + action: e.action + }); + + }, + + + + /* + * Function: onCarouselSlideByEnd + */ + onCarouselSlideByEnd: function(e){ + + this.currentIndex = e.cacheIndex; + + if (!Util.isNothing(this.toolbar)){ + this.toolbar.setCaption(this.currentIndex); + this.toolbar.setToolbarStatus(this.currentIndex); + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onDisplayImage, + target: this, + action: e.action, + index: e.cacheIndex + }); + + }, + + + + /* + * Function: onToolbarTap + */ + onToolbarTap: function(e){ + + switch(e.action){ + + case Toolbar.ToolbarAction.next: + this.next(); + break; + + case Toolbar.ToolbarAction.previous: + this.previous(); + break; + + case Toolbar.ToolbarAction.close: + this.hide(); + break; + + case Toolbar.ToolbarAction.play: + this.play(); + break; + + } + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onToolbarTap, + target: this, + toolbarAction: e.action, + tapTarget: e.tapTarget + }); + + }, + + + + /* + * Function: onMouseWheel + */ + onMouseWheel: function(e){ + + var + delta = Util.Events.getWheelDelta(e), + dt = e.timeStamp - (this.mouseWheelStartTime || 0); + + if (dt < this.settings.mouseWheelSpeed) { + return; + } + + this.mouseWheelStartTime = e.timeStamp; + + if (this.settings.invertMouseWheel){ + delta = delta * -1; + } + + if (delta < 0){ + this.next(); + } + else if (delta > 0){ + this.previous(); + } + + }, + + + + /* + * Function: onCarouselSlideshowStart + */ + onCarouselSlideshowStart: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStart, + target: this + }); + + }, + + + + /* + * Function: onCarouselSlideshowStop + */ + onCarouselSlideshowStop: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onSlideshowStop, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeShow + */ + onToolbarBeforeShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarShow + */ + onToolbarShow: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarShow, + target: this + }); + + }, + + + + /* + * Function: onToolbarBeforeHide + */ + onToolbarBeforeHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onBeforeCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onToolbarHide + */ + onToolbarHide: function(e){ + + Util.Events.fire(this, { + type: PhotoSwipe.EventTypes.onCaptionAndToolbarHide, + target: this + }); + + }, + + + + /* + * Function: onZoomPanRotateTransform + */ + onZoomPanRotateTransform: function(e){ + + Util.Events.fire(this, { + target: this, + type: PhotoSwipe.EventTypes.onZoomPanRotateTransform, + scale: e.scale, + rotation: e.rotation, + rotationDegs: e.rotationDegs, + translateX: e.translateX, + translateY: e.translateY + }); + + } + + + }); + + + +} +( + window, + window.klass, + window.Code.Util, + window.Code.PhotoSwipe.Cache, + window.Code.PhotoSwipe.DocumentOverlay, + window.Code.PhotoSwipe.Carousel, + window.Code.PhotoSwipe.Toolbar, + window.Code.PhotoSwipe.UILayer, + window.Code.PhotoSwipe.ZoomPanRotate +)); diff --git a/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.min.js b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.min.js new file mode 100755 index 000000000..aad1982a0 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/code.photoswipe.noutil.min.js @@ -0,0 +1,119 @@ +// PhotoSwipe - http://www.photoswipe.com/ +// Copyright (c) 2012 by Code Computerlove (http://www.codecomputerlove.com) +// Licensed under the MIT license +// version: 3.0.5 +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Image");d.Code.PhotoSwipe.Image.EventTypes={onLoad:"onLoad",onError:"onError"}})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Image");var b=d.Code.PhotoSwipe;b.Image.ImageClass=j({refObj:null,imageEl:null,src:null,caption:null,metaData:null,imageLoadHandler:null,imageErrorHandler:null,dispose:function(){var c;this.shrinkImage();for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(a,f,b,i){this.refObj=a;this.src=this.originalSrc=f;this.caption=b;this.metaData=i;this.imageEl=new d.Image;this.imageLoadHandler=this.onImageLoad.bind(this);this.imageErrorHandler= +this.onImageError.bind(this)},load:function(){this.imageEl.originalSrc=a.coalesce(this.imageEl.originalSrc,"");this.imageEl.originalSrc===this.src?this.imageEl.isError?a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this}):a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this}):(this.imageEl.isError=!1,this.imageEl.isLoading=!0,this.imageEl.naturalWidth=null,this.imageEl.naturalHeight=null,this.imageEl.isLandscape=!1,this.imageEl.onload=this.imageLoadHandler,this.imageEl.onerror= +this.imageErrorHandler,this.imageEl.onabort=this.imageErrorHandler,this.imageEl.originalSrc=this.src,this.imageEl.src=this.src)},shrinkImage:function(){if(!a.isNothing(this.imageEl)&&this.imageEl.src.indexOf(this.src)>-1)this.imageEl.src="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=",a.isNothing(this.imageEl.parentNode)||a.DOM.removeChild(this.imageEl,this.imageEl.parentNode)},onImageLoad:function(){this.imageEl.onload=null;this.imageEl.naturalWidth=a.coalesce(this.imageEl.naturalWidth, +this.imageEl.width);this.imageEl.naturalHeight=a.coalesce(this.imageEl.naturalHeight,this.imageEl.height);this.imageEl.isLandscape=this.imageEl.naturalWidth>this.imageEl.naturalHeight;this.imageEl.isLoading=!1;a.Events.fire(this,{type:b.Image.EventTypes.onLoad,target:this})},onImageError:function(){this.imageEl.onload=null;this.imageEl.onerror=null;this.imageEl.onabort=null;this.imageEl.isLoading=!1;this.imageEl.isError=!0;a.Events.fire(this,{type:b.Image.EventTypes.onError,target:this})}})})(window, +window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Cache");d=d.Code.PhotoSwipe;d.Cache.Mode={normal:"normal",aggressive:"aggressive"};d.Cache.Functions={getImageSource:function(a){return a.href},getImageCaption:function(b){if(b.nodeName==="IMG")return a.DOM.getAttribute(b,"alt");var c,f,e;c=0;for(f=b.childNodes.length;cf&& +(f=a.DOM.windowHeight())}else c=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),b="0px";a.DOM.setStyle(this.el,{width:c,height:f,top:b})},fadeIn:function(c,f){this.resetPosition();a.DOM.setStyle(this.el,"opacity",0);a.DOM.show(this.el);a.Animation.fadeIn(this.el,c,f)}})})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Carousel");d=d.Code.PhotoSwipe;d.Carousel.EventTypes={onSlideByEnd:"PhotoSwipeCarouselOnSlideByEnd",onSlideshowStart:"PhotoSwipeCarouselOnSlideshowStart",onSlideshowStop:"PhotoSwipeCarouselOnSlideshowStop"};d.Carousel.CssClasses={carousel:"ps-carousel",content:"ps-carousel-content",item:"ps-carousel-item",itemLoading:"ps-carousel-item-loading",itemError:"ps-carousel-item-error"};d.Carousel.SlideByAction={previous:"previous",current:"current",next:"next"}})(window, +window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Carousel");var b=d.Code.PhotoSwipe;b.Carousel.CarouselClass=j({el:null,contentEl:null,settings:null,cache:null,slideByEndHandler:null,currentCacheIndex:null,isSliding:null,isSlideshowActive:null,lastSlideByAction:null,touchStartPoint:null,touchStartPosition:null,imageLoadHandler:null,imageErrorHandler:null,slideshowTimeout:null,dispose:function(){var c,f,e;f=0;for(e=this.cache.images.length;f0&&a.DOM.setStyle(h,{marginRight:this.settings.margin+"px"}),a.DOM.appendChild(h,this.contentEl);this.settings.target===d?a.DOM.appendToBody(this.el):a.DOM.appendChild(this.el,this.settings.target)}, +resetPosition:function(){var c,f,e,i,h,g;this.settings.target===d?(c=a.DOM.windowWidth(),f=a.DOM.windowHeight(),e=a.DOM.windowScrollTop()+"px"):(c=a.DOM.width(this.settings.target),f=a.DOM.height(this.settings.target),e="0px");i=this.settings.margin>0?c+this.settings.margin:c;h=a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl);i*=h.length;a.DOM.setStyle(this.el,{top:e,width:c,height:f});a.DOM.setStyle(this.contentEl,{width:i,height:f});e=0;for(i=h.length;eh&&(f=h/b,b=Math.round(b*f),d=Math.round(d*f)),d>g&&(f=g/d,d=Math.round(d*f),b=Math.round(b*f))):(f=c.isLandscape?h/c.naturalWidth:g/c.naturalHeight,b=Math.round(c.naturalWidth* +f),d=Math.round(c.naturalHeight*f),this.settings.imageScaleMethod==="zoom"?(f=1,dh?f=h/b:d>g&&(f=g/d),f!==1&&(b=Math.round(b*f),d=Math.round(d*f))));a.DOM.setStyle(c,{position:"absolute",width:b,height:d,top:Math.round((g-d)/2)+"px",left:Math.round((h-b)/2)+"px",display:"block"})}},setContentLeftPosition:function(){var c,b,e;c=this.settings.target===d?a.DOM.windowWidth():a.DOM.width(this.settings.target); +b=this.getItemEls();e=0;this.settings.loop?e=(c+this.settings.margin)*-1:this.currentCacheIndex===this.cache.images.length-1?e=(b.length-1)*(c+this.settings.margin)*-1:this.currentCacheIndex>0&&(e=(c+this.settings.margin)*-1);a.DOM.setStyle(this.contentEl,{left:e+"px"})},show:function(c){this.currentCacheIndex=c;this.resetPosition();this.setImages(!1);a.DOM.show(this.el);a.Animation.resetTranslate(this.contentEl);var c=this.getItemEls(),f,d;f=0;for(d=c.length;fthis.cache.images.length-1&&(b=0),i<0&&(i=this.cache.images.length-1),b=this.cache.getImages([i,this.currentCacheIndex,b]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[0], +d[0])):d.length===1?a||(b=this.cache.getImages([this.currentCacheIndex]),this.addCacheImageToItemEl(b[0],d[0])):d.length===2?this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex,this.currentCacheIndex+1]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[0],d[0])):this.currentCacheIndex===0?(b=this.cache.getImages([this.currentCacheIndex, +this.currentCacheIndex+1,this.currentCacheIndex+2]),a||this.addCacheImageToItemEl(b[0],d[0]),this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])):(this.currentCacheIndex===this.cache.images.length-1?(b=this.cache.getImages([this.currentCacheIndex-2,this.currentCacheIndex-1,this.currentCacheIndex]),a||this.addCacheImageToItemEl(b[2],d[2]),this.addCacheImageToItemEl(b[1],d[1])):(b=this.cache.getImages([this.currentCacheIndex-1,this.currentCacheIndex,this.currentCacheIndex+1]), +a||this.addCacheImageToItemEl(b[1],d[1]),this.addCacheImageToItemEl(b[2],d[2])),this.addCacheImageToItemEl(b[0],d[0]))},addCacheImageToItemEl:function(c,d){a.DOM.removeClass(d,b.Carousel.CssClasses.itemError);a.DOM.addClass(d,b.Carousel.CssClasses.itemLoading);a.DOM.removeChildren(d);a.DOM.setStyle(c.imageEl,{display:"none"});a.DOM.appendChild(c.imageEl,d);a.Animation.resetTranslate(c.imageEl);a.Events.add(c,b.Image.EventTypes.onLoad,this.imageLoadHandler);a.Events.add(c,b.Image.EventTypes.onError, +this.imageErrorHandler);c.load()},slideCarousel:function(c,f,e){if(!this.isSliding){var i,h;i=this.settings.target===d?a.DOM.windowWidth()+this.settings.margin:a.DOM.width(this.settings.target)+this.settings.margin;e=a.coalesce(e,this.settings.slideSpeed);if(!(d.Math.abs(h)<1)){switch(f){case a.TouchElement.ActionTypes.swipeLeft:c=i*-1;break;case a.TouchElement.ActionTypes.swipeRight:c=i;break;default:h=c.x-this.touchStartPoint.x,c=d.Math.abs(h)>i/2?h>0?i:i*-1:0}this.lastSlideByAction=c<0?b.Carousel.SlideByAction.next: +c>0?b.Carousel.SlideByAction.previous:b.Carousel.SlideByAction.current;if(!this.settings.loop&&(this.lastSlideByAction===b.Carousel.SlideByAction.previous&&this.currentCacheIndex===0||this.lastSlideByAction===b.Carousel.SlideByAction.next&&this.currentCacheIndex===this.cache.images.length-1))c=0,this.lastSlideByAction=b.Carousel.SlideByAction.current;this.isSliding=!0;this.doSlideCarousel(c,e)}}},moveCarousel:function(a){this.isSliding||this.settings.enableDrag&&this.doMoveCarousel(a.x-this.touchStartPoint.x)}, +getItemEls:function(){return a.DOM.find("."+b.Carousel.CssClasses.item,this.contentEl)},previous:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeRight,this.settings.nextPreviousSlideSpeed)},next:function(){this.stopSlideshow();this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft,this.settings.nextPreviousSlideSpeed)},slideshowNext:function(){this.slideCarousel({x:0,y:0},a.TouchElement.ActionTypes.swipeLeft)},startSlideshow:function(){this.stopSlideshow(); +this.isSlideshowActive=!0;this.slideshowTimeout=d.setTimeout(this.slideshowNext.bind(this),this.settings.slideshowDelay);a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStart,target:this})},stopSlideshow:function(){if(!a.isNothing(this.slideshowTimeout))d.clearTimeout(this.slideshowTimeout),this.slideshowTimeout=null,this.isSlideshowActive=!1,a.Events.fire(this,{type:b.Carousel.EventTypes.onSlideshowStop,target:this})},onSlideByEnd:function(){if(!a.isNothing(this.isSliding)){var c=this.getItemEls(); +this.isSliding=!1;this.lastSlideByAction===b.Carousel.SlideByAction.next?this.currentCacheIndex+=1:this.lastSlideByAction===b.Carousel.SlideByAction.previous&&(this.currentCacheIndex-=1);if(this.settings.loop)if(this.lastSlideByAction===b.Carousel.SlideByAction.next?a.DOM.appendChild(c[0],this.contentEl):this.lastSlideByAction===b.Carousel.SlideByAction.previous&&a.DOM.insertBefore(c[c.length-1],c[0],this.contentEl),this.currentCacheIndex<0)this.currentCacheIndex=this.cache.images.length-1;else{if(this.currentCacheIndex=== +this.cache.images.length)this.currentCacheIndex=0}else this.cache.images.length>3&&(this.currentCacheIndex>1&&this.currentCacheIndex
'}})(window,window.klass,window.Code.Util); +(function(d,j,a){a.registerNamespace("Code.PhotoSwipe.Toolbar");var b=d.Code.PhotoSwipe;b.Toolbar.ToolbarClass=j({toolbarEl:null,closeEl:null,playEl:null,previousEl:null,nextEl:null,captionEl:null,captionContentEl:null,currentCaption:null,settings:null,cache:null,timeout:null,isVisible:null,fadeOutHandler:null,touchStartHandler:null,touchMoveHandler:null,clickHandler:null,dispose:function(){var c;this.clearTimeout();this.removeEventHandlers();a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl); +a.DOM.removeChild(this.toolbarEl,this.toolbarEl.parentNode);a.DOM.removeChild(this.captionEl,this.captionEl.parentNode);for(c in this)a.objectHasProperty(this,c)&&(this[c]=null)},initialize:function(c,f){var e;this.settings=f;this.cache=c;this.isVisible=!1;this.fadeOutHandler=this.onFadeOut.bind(this);this.touchStartHandler=this.onTouchStart.bind(this);this.touchMoveHandler=this.onTouchMove.bind(this);this.clickHandler=this.onClick.bind(this);e=b.Toolbar.CssClasses.toolbar;this.settings.captionAndToolbarFlipPosition&& +(e=e+" "+b.Toolbar.CssClasses.toolbarTop);this.toolbarEl=a.DOM.createElement("div",{"class":e},this.settings.getToolbar());a.DOM.setStyle(this.toolbarEl,{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===d?a.DOM.appendToBody(this.toolbarEl):a.DOM.appendChild(this.toolbarEl,this.settings.target);a.DOM.hide(this.toolbarEl);this.closeEl=a.DOM.find("."+b.Toolbar.CssClasses.close,this.toolbarEl)[0];this.settings.preventHide&&!a.isNothing(this.closeEl)&&a.DOM.hide(this.closeEl); +this.playEl=a.DOM.find("."+b.Toolbar.CssClasses.play,this.toolbarEl)[0];this.settings.preventSlideshow&&!a.isNothing(this.playEl)&&a.DOM.hide(this.playEl);this.nextEl=a.DOM.find("."+b.Toolbar.CssClasses.next,this.toolbarEl)[0];this.previousEl=a.DOM.find("."+b.Toolbar.CssClasses.previous,this.toolbarEl)[0];e=b.Toolbar.CssClasses.caption;this.settings.captionAndToolbarFlipPosition&&(e=e+" "+b.Toolbar.CssClasses.captionBottom);this.captionEl=a.DOM.createElement("div",{"class":e},"");a.DOM.setStyle(this.captionEl, +{left:0,position:"absolute",overflow:"hidden",zIndex:this.settings.zIndex});this.settings.target===d?a.DOM.appendToBody(this.captionEl):a.DOM.appendChild(this.captionEl,this.settings.target);a.DOM.hide(this.captionEl);this.captionContentEl=a.DOM.createElement("div",{"class":b.Toolbar.CssClasses.captionContent},"");a.DOM.appendChild(this.captionContentEl,this.captionEl);this.addEventHandlers()},resetPosition:function(){var c,b,e;this.settings.target===d?(this.settings.captionAndToolbarFlipPosition? +(b=a.DOM.windowScrollTop(),e=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.captionEl)):(b=a.DOM.windowScrollTop()+a.DOM.windowHeight()-a.DOM.height(this.toolbarEl),e=a.DOM.windowScrollTop()),c=a.DOM.windowWidth()):(this.settings.captionAndToolbarFlipPosition?(b="0",e=a.DOM.height(this.settings.target)-a.DOM.height(this.captionEl)):(b=a.DOM.height(this.settings.target)-a.DOM.height(this.toolbarEl),e=0),c=a.DOM.width(this.settings.target));a.DOM.setStyle(this.toolbarEl,{top:b+"px", +width:c});a.DOM.setStyle(this.captionEl,{top:e+"px",width:c})},toggleVisibility:function(a){this.isVisible?this.fadeOut():this.show(a)},show:function(c){a.Animation.stop(this.toolbarEl);a.Animation.stop(this.captionEl);this.resetPosition();this.setToolbarStatus(c);a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeShow,target:this});this.showToolbar();this.setCaption(c);this.showCaption();this.isVisible=!0;this.setTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onShow,target:this})},setTimeout:function(){if(this.settings.captionAndToolbarAutoHideDelay> +0)this.clearTimeout(),this.timeout=d.setTimeout(this.fadeOut.bind(this),this.settings.captionAndToolbarAutoHideDelay)},clearTimeout:function(){if(!a.isNothing(this.timeout))d.clearTimeout(this.timeout),this.timeout=null},fadeOut:function(){this.clearTimeout();a.Events.fire(this,{type:b.Toolbar.EventTypes.onBeforeHide,target:this});a.Animation.fadeOut(this.toolbarEl,this.settings.fadeOutSpeed);a.Animation.fadeOut(this.captionEl,this.settings.fadeOutSpeed,this.fadeOutHandler);this.isVisible=!1},addEventHandlers:function(){a.Browser.isTouchSupported&& +(a.Browser.blackberry||a.Events.add(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.add(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.add(this.captionEl,"touchmove",this.touchMoveHandler));a.Events.add(this.toolbarEl,"click",this.clickHandler)},removeEventHandlers:function(){a.Browser.isTouchSupported&&(a.Browser.blackberry||a.Events.remove(this.toolbarEl,"touchstart",this.touchStartHandler),a.Events.remove(this.toolbarEl,"touchmove",this.touchMoveHandler),a.Events.remove(this.captionEl, +"touchmove",this.touchMoveHandler));a.Events.remove(this.toolbarEl,"click",this.clickHandler)},handleTap:function(c){this.clearTimeout();var d;if(c.target===this.nextEl||a.DOM.isChildOf(c.target,this.nextEl))d=b.Toolbar.ToolbarAction.next;else if(c.target===this.previousEl||a.DOM.isChildOf(c.target,this.previousEl))d=b.Toolbar.ToolbarAction.previous;else if(c.target===this.closeEl||a.DOM.isChildOf(c.target,this.closeEl))d=b.Toolbar.ToolbarAction.close;else if(c.target===this.playEl||a.DOM.isChildOf(c.target, +this.playEl))d=b.Toolbar.ToolbarAction.play;this.setTimeout();if(a.isNothing(d))d=b.Toolbar.ToolbarAction.none;a.Events.fire(this,{type:b.Toolbar.EventTypes.onTap,target:this,action:d,tapTarget:c.target})},setCaption:function(c){a.DOM.removeChildren(this.captionContentEl);this.currentCaption=a.coalesce(this.cache.images[c].caption,"\u00a0");if(a.isObject(this.currentCaption))a.DOM.appendChild(this.currentCaption,this.captionContentEl);else{if(this.currentCaption==="")this.currentCaption="\u00a0"; +a.DOM.appendText(this.currentCaption,this.captionContentEl)}this.currentCaption=this.currentCaption==="\u00a0"?"":this.currentCaption;this.resetPosition()},showToolbar:function(){a.DOM.setStyle(this.toolbarEl,{opacity:this.settings.captionAndToolbarOpacity});a.DOM.show(this.toolbarEl)},showCaption:function(){(this.currentCaption===""||this.captionContentEl.childNodes.length<1)&&!this.settings.captionAndToolbarShowEmptyCaptions?a.DOM.hide(this.captionEl):(a.DOM.setStyle(this.captionEl,{opacity:this.settings.captionAndToolbarOpacity}), +a.DOM.show(this.captionEl))},setToolbarStatus:function(c){this.settings.loop||(a.DOM.removeClass(this.previousEl,b.Toolbar.CssClasses.previousDisabled),a.DOM.removeClass(this.nextEl,b.Toolbar.CssClasses.nextDisabled),c>0&&cthis.settings.maxUserZoom)a=this.settings.maxUserZoom;return a},setStartingScaleAndRotation:function(a,b){this.transformSettings.startingScale=this.getScale(a);this.transformSettings.startingRotation=(this.transformSettings.startingRotation+b)%360},zoomRotate:function(a,b){this.transformSettings.scale=this.getScale(a);this.transformSettings.rotation=this.transformSettings.startingRotation+b;this.applyTransform()},panStart:function(a){this.setStartingTranslateFromCurrentTransform();this.panStartingPoint= +{x:a.x,y:a.y}},pan:function(a){var b=(a.y-this.panStartingPoint.y)/this.transformSettings.scale;this.transformSettings.translateX=this.transformSettings.startingTranslateX+(a.x-this.panStartingPoint.x)/this.transformSettings.scale;this.transformSettings.translateY=this.transformSettings.startingTranslateY+b;this.applyTransform()},zoomAndPanToPoint:function(b,f){if(this.settings.target===d){this.panStart({x:a.DOM.windowWidth()/2,y:a.DOM.windowHeight()/2});var e=(f.y-this.panStartingPoint.y)/this.transformSettings.scale; +this.transformSettings.translateX=(this.transformSettings.startingTranslateX+(f.x-this.panStartingPoint.x)/this.transformSettings.scale)*-1;this.transformSettings.translateY=(this.transformSettings.startingTranslateY+e)*-1}this.setStartingScaleAndRotation(b,0);this.transformSettings.scale=this.transformSettings.startingScale;this.transformSettings.rotation=0;this.applyTransform()},applyTransform:function(){var c=this.transformSettings.rotation%360,f=d.parseInt(this.transformSettings.translateX,10), +e=d.parseInt(this.transformSettings.translateY,10),i="scale("+this.transformSettings.scale+") rotate("+c+"deg) translate("+f+"px, "+e+"px)";a.DOM.setStyle(this.transformEl,{webkitTransform:i,MozTransform:i,msTransform:i,transform:i});a.Events.fire(this,{target:this,type:b.ZoomPanRotate.EventTypes.onTransform,scale:this.transformSettings.scale,rotation:this.transformSettings.rotation,rotationDegs:c,translateX:f,translateY:e})}})})(window,window.klass,window.Code.Util); +(function(d,j){j.registerNamespace("Code.PhotoSwipe");var a=d.Code.PhotoSwipe;a.CssClasses={buildingBody:"ps-building",activeBody:"ps-active"};a.EventTypes={onBeforeShow:"PhotoSwipeOnBeforeShow",onShow:"PhotoSwipeOnShow",onBeforeHide:"PhotoSwipeOnBeforeHide",onHide:"PhotoSwipeOnHide",onDisplayImage:"PhotoSwipeOnDisplayImage",onResetPosition:"PhotoSwipeOnResetPosition",onSlideshowStart:"PhotoSwipeOnSlideshowStart",onSlideshowStop:"PhotoSwipeOnSlideshowStop",onTouch:"PhotoSwipeOnTouch",onBeforeCaptionAndToolbarShow:"PhotoSwipeOnBeforeCaptionAndToolbarShow", +onCaptionAndToolbarShow:"PhotoSwipeOnCaptionAndToolbarShow",onBeforeCaptionAndToolbarHide:"PhotoSwipeOnBeforeCaptionAndToolbarHide",onCaptionAndToolbarHide:"PhotoSwipeOnCaptionAndToolbarHide",onToolbarTap:"PhotoSwipeOnToolbarTap",onBeforeZoomPanRotateShow:"PhotoSwipeOnBeforeZoomPanRotateShow",onZoomPanRotateShow:"PhotoSwipeOnZoomPanRotateShow",onBeforeZoomPanRotateHide:"PhotoSwipeOnBeforeZoomPanRotateHide",onZoomPanRotateHide:"PhotoSwipeOnZoomPanRotateHide",onZoomPanRotateTransform:"PhotoSwipeOnZoomPanRotateTransform"}; +a.instances=[];a.activeInstances=[];a.setActivateInstance=function(b){if(j.arrayIndexOf(b.settings.target,a.activeInstances,"target")>-1)throw"Code.PhotoSwipe.activateInstance: Unable to active instance as another instance is already active for this target";a.activeInstances.push({target:b.settings.target,instance:b})};a.unsetActivateInstance=function(b){b=j.arrayIndexOf(b,a.activeInstances,"instance");a.activeInstances.splice(b,1)};a.attach=function(b,c,d){var e,i;e=a.createInstance(b,c,d);c=0;for(d= +b.length;c=2.1)this.isBackEventSupported=!0;if(!this.isBackEventSupported)this.isBackEventSupported=a.objectHasProperty(d,"onhashchange");this.settings={fadeInSpeed:250,fadeOutSpeed:250,preventHide:!1,preventSlideshow:!1,zIndex:1E3,backButtonHideEnabled:!0,enableKeyboard:!0,enableMouseWheel:!0, +mouseWheelSpeed:350,autoStartSlideshow:!1,jQueryMobile:!a.isNothing(d.jQuery)&&!a.isNothing(d.jQuery.mobile),jQueryMobileDialogHash:"&ui-state=dialog",enableUIWebViewRepositionTimeout:!1,uiWebViewResetPositionDelay:500,target:d,preventDefaultTouchEvents:!0,loop:!0,slideSpeed:250,nextPreviousSlideSpeed:0,enableDrag:!0,swipeThreshold:50,swipeTimeThreshold:250,slideTimingFunction:"ease-out",slideshowDelay:3E3,doubleTapSpeed:250,margin:20,imageScaleMethod:"fit",captionAndToolbarHide:!1,captionAndToolbarFlipPosition:!1, +captionAndToolbarAutoHideDelay:5E3,captionAndToolbarOpacity:0.8,captionAndToolbarShowEmptyCaptions:!0,getToolbar:g.Toolbar.getToolbar,allowUserZoom:!0,allowRotationOnUserZoom:!1,maxUserZoom:5,minUserZoom:0.5,doubleTapZoomLevel:2.5,getImageSource:g.Cache.Functions.getImageSource,getImageCaption:g.Cache.Functions.getImageCaption,getImageMetaData:g.Cache.Functions.getImageMetaData,cacheMode:g.Cache.Mode.normal};a.extend(this.settings,e);this.settings.target!==d&&(e=a.DOM.getStyle(this.settings.target, +"position"),(e!=="relative"||e!=="absolute")&&a.DOM.setStyle(this.settings.target,"position","relative"));if(this.settings.target!==d)this.isBackEventSupported=!1,this.settings.backButtonHideEnabled=!1;else if(this.settings.preventHide)this.settings.backButtonHideEnabled=!1;this.cache=new b.CacheClass(c,this.settings)},show:function(b){var c,e;this.backButtonClicked=this._isResettingPosition=!1;if(a.isNumber(b))this.currentIndex=b;else{this.currentIndex=-1;c=0;for(e=this.originalImages.length;cthis.originalImages.length-1)throw"Code.PhotoSwipe.PhotoSwipeClass.show: Starting index out of range";this.isAlreadyGettingPage=this.getWindowDimensions();g.setActivateInstance(this);this.windowDimensions=this.getWindowDimensions();this.settings.target===d?a.DOM.addClass(d.document.body,g.CssClasses.buildingBody):a.DOM.addClass(this.settings.target,g.CssClasses.buildingBody);this.createComponents();a.Events.fire(this,{type:g.EventTypes.onBeforeShow, +target:this});this.documentOverlay.fadeIn(this.settings.fadeInSpeed,this.onDocumentOverlayFadeIn.bind(this))},getWindowDimensions:function(){return{width:a.DOM.windowWidth(),height:a.DOM.windowHeight()}},createComponents:function(){this.documentOverlay=new c.DocumentOverlayClass(this.settings);this.carousel=new f.CarouselClass(this.cache,this.settings);this.uiLayer=new i.UILayerClass(this.settings);if(!this.settings.captionAndToolbarHide)this.toolbar=new e.ToolbarClass(this.cache,this.settings)}, +resetPosition:function(){if(!this._isResettingPosition){var b=this.getWindowDimensions();if(a.isNothing(this.windowDimensions)||!(b.width===this.windowDimensions.width&&b.height===this.windowDimensions.height))this._isResettingPosition=!0,this.windowDimensions=b,this.destroyZoomPanRotate(),this.documentOverlay.resetPosition(),this.carousel.resetPosition(),a.isNothing(this.toolbar)||this.toolbar.resetPosition(),this.uiLayer.resetPosition(),this._isResettingPosition=!1,a.Events.fire(this,{type:g.EventTypes.onResetPosition, +target:this})}},addEventHandler:function(b,c){a.Events.add(this,b,c)},addEventHandlers:function(){if(a.isNothing(this.windowOrientationChangeHandler))this.windowOrientationChangeHandler=this.onWindowOrientationChange.bind(this),this.windowScrollHandler=this.onWindowScroll.bind(this),this.keyDownHandler=this.onKeyDown.bind(this),this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.uiLayerTouchHandler=this.onUILayerTouch.bind(this),this.carouselSlideByEndHandler=this.onCarouselSlideByEnd.bind(this), +this.carouselSlideshowStartHandler=this.onCarouselSlideshowStart.bind(this),this.carouselSlideshowStopHandler=this.onCarouselSlideshowStop.bind(this),this.toolbarTapHandler=this.onToolbarTap.bind(this),this.toolbarBeforeShowHandler=this.onToolbarBeforeShow.bind(this),this.toolbarShowHandler=this.onToolbarShow.bind(this),this.toolbarBeforeHideHandler=this.onToolbarBeforeHide.bind(this),this.toolbarHideHandler=this.onToolbarHide.bind(this),this.mouseWheelHandler=this.onMouseWheel.bind(this),this.zoomPanRotateTransformHandler= +this.onZoomPanRotateTransform.bind(this);a.Browser.android?this.orientationEventName="resize":a.Browser.iOS&&!a.Browser.safari?a.Events.add(d.document.body,"orientationchange",this.windowOrientationChangeHandler):this.orientationEventName=!a.isNothing(d.onorientationchange)?"orientationchange":"resize";a.isNothing(this.orientationEventName)||a.Events.add(d,this.orientationEventName,this.windowOrientationChangeHandler);this.settings.target===d&&a.Events.add(d,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&& +a.Events.add(d.document,"keydown",this.keyDownHandler);if(this.isBackEventSupported&&this.settings.backButtonHideEnabled)this.windowHashChangeHandler=this.onWindowHashChange.bind(this),this.settings.jQueryMobile?d.location.hash=this.settings.jQueryMobileDialogHash:(this.currentHistoryHashValue="PhotoSwipe"+(new Date).getTime().toString(),d.location.hash=this.currentHistoryHashValue),a.Events.add(d,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.add(d,"mousewheel", +this.mouseWheelHandler);a.Events.add(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler);a.Events.add(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler);a.Events.add(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler);a.isNothing(this.toolbar)||(a.Events.add(this.toolbar,e.EventTypes.onTap,this.toolbarTapHandler),a.Events.add(this.toolbar, +e.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.add(this.toolbar,e.EventTypes.onShow,this.toolbarShowHandler),a.Events.add(this.toolbar,e.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.add(this.toolbar,e.EventTypes.onHide,this.toolbarHideHandler))},removeEventHandlers:function(){a.Browser.iOS&&!a.Browser.safari&&a.Events.remove(d.document.body,"orientationchange",this.windowOrientationChangeHandler);a.isNothing(this.orientationEventName)||a.Events.remove(d,this.orientationEventName, +this.windowOrientationChangeHandler);a.Events.remove(d,"scroll",this.windowScrollHandler);this.settings.enableKeyboard&&a.Events.remove(d.document,"keydown",this.keyDownHandler);this.isBackEventSupported&&this.settings.backButtonHideEnabled&&a.Events.remove(d,"hashchange",this.windowHashChangeHandler);this.settings.enableMouseWheel&&a.Events.remove(d,"mousewheel",this.mouseWheelHandler);a.isNothing(this.uiLayer)||a.Events.remove(this.uiLayer,a.TouchElement.EventTypes.onTouch,this.uiLayerTouchHandler); +a.isNothing(this.toolbar)||(a.Events.remove(this.carousel,f.EventTypes.onSlideByEnd,this.carouselSlideByEndHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStart,this.carouselSlideshowStartHandler),a.Events.remove(this.carousel,f.EventTypes.onSlideshowStop,this.carouselSlideshowStopHandler));a.isNothing(this.toolbar)||(a.Events.remove(this.toolbar,e.EventTypes.onTap,this.toolbarTapHandler),a.Events.remove(this.toolbar,e.EventTypes.onBeforeShow,this.toolbarBeforeShowHandler),a.Events.remove(this.toolbar, +e.EventTypes.onShow,this.toolbarShowHandler),a.Events.remove(this.toolbar,e.EventTypes.onBeforeHide,this.toolbarBeforeHideHandler),a.Events.remove(this.toolbar,e.EventTypes.onHide,this.toolbarHideHandler))},hide:function(){if(!this.settings.preventHide){if(a.isNothing(this.documentOverlay))throw"Code.PhotoSwipe.PhotoSwipeClass.hide: PhotoSwipe instance is already hidden";if(a.isNothing(this.hiding)){this.clearUIWebViewResetPositionTimeout();this.destroyZoomPanRotate();this.removeEventHandlers();a.Events.fire(this, +{type:g.EventTypes.onBeforeHide,target:this});this.uiLayer.dispose();this.uiLayer=null;if(!a.isNothing(this.toolbar))this.toolbar.dispose(),this.toolbar=null;this.carousel.dispose();this.carousel=null;a.DOM.removeClass(d.document.body,g.CssClasses.activeBody);this.documentOverlay.dispose();this.documentOverlay=null;this._isResettingPosition=!1;g.unsetActivateInstance(this);a.Events.fire(this,{type:g.EventTypes.onHide,target:this});this.goBackInHistory()}}},goBackInHistory:function(){this.isBackEventSupported&& +this.settings.backButtonHideEnabled&&(this.backButtonClicked||d.history.back())},play:function(){!this.isZoomActive()&&!this.settings.preventSlideshow&&!a.isNothing(this.carousel)&&(!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut(),this.carousel.startSlideshow())},stop:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.stopSlideshow()},previous:function(){this.isZoomActive()||a.isNothing(this.carousel)||this.carousel.previous()},next:function(){this.isZoomActive()|| +a.isNothing(this.carousel)||this.carousel.next()},toggleToolbar:function(){this.isZoomActive()||a.isNothing(this.toolbar)||this.toolbar.toggleVisibility(this.currentIndex)},fadeOutToolbarIfVisible:function(){!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.settings.captionAndToolbarAutoHideDelay>0&&this.toolbar.fadeOut()},createZoomPanRotate:function(){this.stop();if(this.canUserZoom()&&!this.isZoomActive())a.Events.fire(this,g.EventTypes.onBeforeZoomPanRotateShow),this.zoomPanRotate=new h.ZoomPanRotateClass(this.settings, +this.cache.images[this.currentIndex],this.uiLayer),this.uiLayer.captureSettings.preventDefaultTouchEvents=!0,a.Events.add(this.zoomPanRotate,g.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),a.Events.fire(this,g.EventTypes.onZoomPanRotateShow),!a.isNothing(this.toolbar)&&this.toolbar.isVisible&&this.toolbar.fadeOut()},destroyZoomPanRotate:function(){if(!a.isNothing(this.zoomPanRotate))a.Events.fire(this,g.EventTypes.onBeforeZoomPanRotateHide),a.Events.remove(this.zoomPanRotate, +g.ZoomPanRotate.EventTypes.onTransform,this.zoomPanRotateTransformHandler),this.zoomPanRotate.dispose(),this.zoomPanRotate=null,this.uiLayer.captureSettings.preventDefaultTouchEvents=this.settings.preventDefaultTouchEvents,a.Events.fire(this,g.EventTypes.onZoomPanRotateHide)},canUserZoom:function(){var b;if(a.Browser.msie){if(b=document.createElement("div"),a.isNothing(b.style.msTransform))return!1}else if(!a.Browser.isCSSTransformSupported)return!1;if(!this.settings.allowUserZoom)return!1;if(this.carousel.isSliding)return!1; +b=this.cache.images[this.currentIndex];if(a.isNothing(b))return!1;if(b.isLoading)return!1;return!0},isZoomActive:function(){return!a.isNothing(this.zoomPanRotate)},getCurrentImage:function(){return this.cache.images[this.currentIndex]},onDocumentOverlayFadeIn:function(){d.setTimeout(function(){var b=this.settings.target===d?d.document.body:this.settings.target;a.DOM.removeClass(b,g.CssClasses.buildingBody);a.DOM.addClass(b,g.CssClasses.activeBody);this.addEventHandlers();this.carousel.show(this.currentIndex); +this.uiLayer.show();this.settings.autoStartSlideshow?this.play():a.isNothing(this.toolbar)||this.toolbar.show(this.currentIndex);a.Events.fire(this,{type:g.EventTypes.onShow,target:this});this.setUIWebViewResetPositionTimeout()}.bind(this),250)},setUIWebViewResetPositionTimeout:function(){if(this.settings.enableUIWebViewRepositionTimeout&&a.Browser.iOS&&!a.Browser.safari)a.isNothing(this._uiWebViewResetPositionTimeout)||d.clearTimeout(this._uiWebViewResetPositionTimeout),this._uiWebViewResetPositionTimeout= +d.setTimeout(function(){this.resetPosition();this.setUIWebViewResetPositionTimeout()}.bind(this),this.settings.uiWebViewResetPositionDelay)},clearUIWebViewResetPositionTimeout:function(){a.isNothing(this._uiWebViewResetPositionTimeout)||d.clearTimeout(this._uiWebViewResetPositionTimeout)},onWindowScroll:function(){this.resetPosition()},onWindowOrientationChange:function(){this.resetPosition()},onWindowHashChange:function(){if(d.location.hash!=="#"+(this.settings.jQueryMobile?this.settings.jQueryMobileDialogHash: +this.currentHistoryHashValue))this.backButtonClicked=!0,this.hide()},onKeyDown:function(a){a.keyCode===37?(a.preventDefault(),this.previous()):a.keyCode===39?(a.preventDefault(),this.next()):a.keyCode===38||a.keyCode===40?a.preventDefault():a.keyCode===27?(a.preventDefault(),this.hide()):a.keyCode===32?(this.settings.hideToolbar?this.hide():this.toggleToolbar(),a.preventDefault()):a.keyCode===13&&(a.preventDefault(),this.play())},onUILayerTouch:function(b){if(this.isZoomActive())switch(b.action){case a.TouchElement.ActionTypes.gestureChange:this.zoomPanRotate.zoomRotate(b.scale, +this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.gestureEnd:this.zoomPanRotate.setStartingScaleAndRotation(b.scale,this.settings.allowRotationOnUserZoom?b.rotation:0);break;case a.TouchElement.ActionTypes.touchStart:this.zoomPanRotate.panStart(b.point);break;case a.TouchElement.ActionTypes.touchMove:this.zoomPanRotate.pan(b.point);break;case a.TouchElement.ActionTypes.doubleTap:this.destroyZoomPanRotate();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeLeft:this.destroyZoomPanRotate(); +this.next();this.toggleToolbar();break;case a.TouchElement.ActionTypes.swipeRight:this.destroyZoomPanRotate(),this.previous(),this.toggleToolbar()}else switch(b.action){case a.TouchElement.ActionTypes.touchMove:case a.TouchElement.ActionTypes.swipeLeft:case a.TouchElement.ActionTypes.swipeRight:this.fadeOutToolbarIfVisible();this.carousel.onTouch(b.action,b.point);break;case a.TouchElement.ActionTypes.touchStart:case a.TouchElement.ActionTypes.touchMoveEnd:this.carousel.onTouch(b.action,b.point); +break;case a.TouchElement.ActionTypes.tap:this.toggleToolbar();break;case a.TouchElement.ActionTypes.doubleTap:this.settings.target===d&&(b.point.x-=a.DOM.windowScrollLeft(),b.point.y-=a.DOM.windowScrollTop());var c=this.cache.images[this.currentIndex].imageEl,e=d.parseInt(a.DOM.getStyle(c,"top"),10),f=d.parseInt(a.DOM.getStyle(c,"left"),10),h=f+a.DOM.width(c),c=e+a.DOM.height(c);if(b.point.xh)b.point.x=h;if(b.point.yc)b.point.y=c; +this.createZoomPanRotate();this.isZoomActive()&&this.zoomPanRotate.zoomAndPanToPoint(this.settings.doubleTapZoomLevel,b.point);break;case a.TouchElement.ActionTypes.gestureStart:this.createZoomPanRotate()}a.Events.fire(this,{type:g.EventTypes.onTouch,target:this,point:b.point,action:b.action})},onCarouselSlideByEnd:function(b){this.currentIndex=b.cacheIndex;a.isNothing(this.toolbar)||(this.toolbar.setCaption(this.currentIndex),this.toolbar.setToolbarStatus(this.currentIndex));a.Events.fire(this,{type:g.EventTypes.onDisplayImage, +target:this,action:b.action,index:b.cacheIndex})},onToolbarTap:function(b){switch(b.action){case e.ToolbarAction.next:this.next();break;case e.ToolbarAction.previous:this.previous();break;case e.ToolbarAction.close:this.hide();break;case e.ToolbarAction.play:this.play()}a.Events.fire(this,{type:g.EventTypes.onToolbarTap,target:this,toolbarAction:b.action,tapTarget:b.tapTarget})},onMouseWheel:function(b){var c=a.Events.getWheelDelta(b);if(!(b.timeStamp-(this.mouseWheelStartTime||0)0&&this.previous()},onCarouselSlideshowStart:function(){a.Events.fire(this,{type:g.EventTypes.onSlideshowStart,target:this})},onCarouselSlideshowStop:function(){a.Events.fire(this,{type:g.EventTypes.onSlideshowStop,target:this})},onToolbarBeforeShow:function(){a.Events.fire(this,{type:g.EventTypes.onBeforeCaptionAndToolbarShow,target:this})},onToolbarShow:function(){a.Events.fire(this,{type:g.EventTypes.onCaptionAndToolbarShow, +target:this})},onToolbarBeforeHide:function(){a.Events.fire(this,{type:g.EventTypes.onBeforeCaptionAndToolbarHide,target:this})},onToolbarHide:function(){a.Events.fire(this,{type:g.EventTypes.onCaptionAndToolbarHide,target:this})},onZoomPanRotateTransform:function(b){a.Events.fire(this,{target:this,type:g.EventTypes.onZoomPanRotateTransform,scale:b.scale,rotation:b.rotation,rotationDegs:b.rotationDegs,translateX:b.translateX,translateY:b.translateY})}})})(window,window.klass,window.Code.Util,window.Code.PhotoSwipe.Cache, +window.Code.PhotoSwipe.DocumentOverlay,window.Code.PhotoSwipe.Carousel,window.Code.PhotoSwipe.Toolbar,window.Code.PhotoSwipe.UILayer,window.Code.PhotoSwipe.ZoomPanRotate); diff --git a/ajax/libs/photoswipe/3.0.5/error.gif b/ajax/libs/photoswipe/3.0.5/error.gif new file mode 100755 index 0000000000000000000000000000000000000000..6a96f4d61b7b8f63458103f934473dc5bb9123e6 GIT binary patch literal 3431 zcmZ?wbhEHbRA5kG*v!D->+8E_%^FEb$(ov)&6_u0x^$_qu+Y%Zu&Jp@OG}H3i_6Z= zZvX!MXU?2qU|_g;^QPi|?g-xi1((EJTWZ)~7zXkle&WMycf00l~RTnaWtDQQ+gE^bikfIM5JjFOT9D}DX)@^Za$W4-*M zbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7sK5Hnm-i<65o3raHc^Atd4CMM;Vme?vO z0p%57e#tF>8=hCJ2lkgJ3rU7i8p@`0v<(cc3=H6^ee+W?(<+Hp4UFFuVCo@8 zeM+)bT7FS(A~1*(3kq^FlM_K9uV0pz0u5KVhry14^Q@fnbMlLT?gF~s7){F4**Tyn zKP@u{C|4Zh?xf)9>TG6cX=bKtq-Ut44@xci(BuM4srvAw3Q7aC2cwpd6vm^$H5yzb zg#by4M^o2maFG-OBq<(ET|+ClxDbuq)I4Adw;b4%W&Ho|@1Nhle*XCW?dzA%pFVzg z|L*OZ*RNi_c>e6^lgE!9KDdAH?w#AWZr-?l?dp}wmo8p7f9~v=)2B|JIDYKtk;8`$ z9@xKc@1EVecJA1|ZR?iJn>KD(zi#cC)vH#nSiWrOlEsS_E|@=W?wr}PX3m&CZR(WC zlO|5+@9XX9?&|DlZ)=-aG z=zs`NpMrtq|AmvDccm1kOh3LV;RT1s=Q$a-6q-1++Gd_xwQ$EIfeU|Rwk%>|eknaqbN!V- z=CoXO22Y+^1{T7KP92v=z^a@NEjlvcvEDCF0rnGX#YU7l( zQwo=ETt3;Bcb@vDS?i*vZ=aRDg`-z%hw`Zd3|y;QSG1q%(qJ_|q@EzMXl7bQqw==f zv#(9!Vkz{Gt9)9RTCb5M{31TYmX-UZCQD5AHlGTU3&xHf2jtwHK63qV7Uqd?;kuzP aZL!NlQ5H?D9RdmRjSO-ue_A^j7_0$ekM4y4 literal 0 HcmV?d00001 diff --git a/ajax/libs/photoswipe/3.0.5/icons.png b/ajax/libs/photoswipe/3.0.5/icons.png new file mode 100755 index 0000000000000000000000000000000000000000..c4011d1d0cc4fe3338ed01ae89be440a4cce25cb GIT binary patch literal 3346 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 literal 0 HcmV?d00001 diff --git a/ajax/libs/photoswipe/3.0.5/icons@2x.png b/ajax/libs/photoswipe/3.0.5/icons@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..87b63455d6822aa6c8771e9bb23f1cc77bbf034b GIT binary patch literal 5445 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 literal 0 HcmV?d00001 diff --git a/ajax/libs/photoswipe/3.0.5/loader.gif b/ajax/libs/photoswipe/3.0.5/loader.gif new file mode 100755 index 0000000000000000000000000000000000000000..c95d05a053b2272a04f2d337277705303a372501 GIT binary patch literal 3208 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 literal 0 HcmV?d00001 diff --git a/ajax/libs/photoswipe/3.0.5/photoswipe.css b/ajax/libs/photoswipe/3.0.5/photoswipe.css new file mode 100755 index 000000000..192d19f3a --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/photoswipe.css @@ -0,0 +1,176 @@ +/* + * photoswipe.css + * Copyright (c) %%year%% by Code Computerlove (http://www.codecomputerlove.com) + * Licensed under the MIT license + * + * Default styles for PhotoSwipe + * Avoid any position or dimension based styles + * where possible, unless specified already here. + * The gallery automatically works out gallery item + * positions etc. + */ + + +body.ps-active, body.ps-building, div.ps-active, div.ps-building +{ + background: #000; + overflow: hidden; +} +body.ps-active *, div.ps-active * +{ + -webkit-tap-highlight-color: rgba(255, 255, 255, 0); + display: none; +} +body.ps-active *:focus, div.ps-active *:focus +{ + outline: 0; +} + + +/* Document overlay */ +div.ps-document-overlay +{ + background: #000; +} + + +/* UILayer */ +div.ps-uilayer { + + background: #000; + cursor: pointer; + +} + + +/* Zoom/pan/rotate layer */ +div.ps-zoom-pan-rotate{ + background: #000; +} +div.ps-zoom-pan-rotate * { display: block; } + + +/* Carousel */ +div.ps-carousel-item-loading +{ + background: url(loader.gif) no-repeat center center; +} + +div.ps-carousel-item-error +{ + background: url(error.gif) no-repeat center center; +} + + +/* Caption */ +div.ps-caption +{ + background: #000000; + background: -moz-linear-gradient(top, #303130 0%, #000101 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#303130), color-stop(100%,#000101)); + border-bottom: 1px solid #42403f; + color: #ffffff; + font-size: 13px; + font-family: "Lucida Grande", Helvetica, Arial,Verdana, sans-serif; + text-align: center; +} +div.ps-caption * { display: inline; } + +div.ps-caption-bottom +{ + border-top: 1px solid #42403f; + border-bottom: none; + min-height: 44px; +} + +div.ps-caption-content +{ + padding: 13px; + display: block; +} + + +/* Toolbar */ +div.ps-toolbar +{ + background: #000000; + background: -moz-linear-gradient(top, #303130 0%, #000101 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#303130), color-stop(100%,#000101)); + border-top: 1px solid #42403f; + color: #ffffff; + font-size: 13px; + font-family: "Lucida Grande", Helvetica, Arial,Verdana, sans-serif; + text-align: center; + height: 44px; + display: table; + table-layout: fixed; +} +div.ps-toolbar * { + display: block; +} + +div.ps-toolbar-top +{ + border-bottom: 1px solid #42403f; + border-top: none; +} + +div.ps-toolbar-close, div.ps-toolbar-previous, div.ps-toolbar-next, div.ps-toolbar-play +{ + cursor: pointer; + display: table-cell; +} + +div.ps-toolbar div div.ps-toolbar-content +{ + width: 44px; + height: 44px; + margin: 0 auto 0; + background-image: url(icons.png); + background-repeat: no-repeat; +} + +div.ps-toolbar-close div.ps-toolbar-content +{ + background-position: 0 0; +} + +div.ps-toolbar-previous div.ps-toolbar-content +{ + background-position: -44px 0; +} + +div.ps-toolbar-previous-disabled div.ps-toolbar-content +{ + background-position: -44px -44px; +} + +div.ps-toolbar-next div.ps-toolbar-content +{ + background-position: -132px 0; +} + +div.ps-toolbar-next-disabled div.ps-toolbar-content +{ + background-position: -132px -44px; +} + +div.ps-toolbar-play div.ps-toolbar-content +{ + background-position: -88px 0; +} + +/* Hi-res display */ +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), + only screen and (-moz-min-device-pixel-ratio: 1.5), + only screen and (min-resolution: 240dpi) +{ + div.ps-toolbar div div.ps-toolbar-content + { + -moz-background-size: 176px 88px; + -o-background-size: 176px 88px; + -webkit-background-size: 176px 88px; + background-size: 176px 88px; + background-image: url(icons@2x.png); + } +} diff --git a/ajax/libs/photoswipe/3.0.5/photoswipe.min.css b/ajax/libs/photoswipe/3.0.5/photoswipe.min.css new file mode 100755 index 000000000..e81f7f291 --- /dev/null +++ b/ajax/libs/photoswipe/3.0.5/photoswipe.min.css @@ -0,0 +1 @@ +body.ps-active,body.ps-building,div.ps-active,div.ps-building{background:#000;overflow:hidden;}body.ps-active *,div.ps-active *{-webkit-tap-highlight-color:rgba(255,255,255,0);display:none;}body.ps-active *:focus,div.ps-active *:focus{outline:0;}div.ps-document-overlay{background:#000;}div.ps-uilayer{background:#000;cursor:pointer;}div.ps-zoom-pan-rotate{background:#000;}div.ps-zoom-pan-rotate *{display:block;}div.ps-carousel-item-loading{background:url(loader.gif) no-repeat center center;}div.ps-carousel-item-error{background:url(error.gif) no-repeat center center;}div.ps-caption{background:#000;background:-moz-linear-gradient(top,#303130 0,#000101 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#303130),color-stop(100%,#000101));border-bottom:1px solid #42403f;color:#fff;font-size:13px;font-family:"Lucida Grande",Helvetica,Arial,Verdana,sans-serif;text-align:center;}div.ps-caption *{display:inline;}div.ps-caption-bottom{border-top:1px solid #42403f;border-bottom:none;min-height:44px;}div.ps-caption-content{padding:13px;display:block;}div.ps-toolbar{background:#000;background:-moz-linear-gradient(top,#303130 0,#000101 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#303130),color-stop(100%,#000101));border-top:1px solid #42403f;color:#fff;font-size:13px;font-family:"Lucida Grande",Helvetica,Arial,Verdana,sans-serif;text-align:center;height:44px;display:table;table-layout:fixed;}div.ps-toolbar *{display:block;}div.ps-toolbar-top{border-bottom:1px solid #42403f;border-top:none;}div.ps-toolbar-close,div.ps-toolbar-previous,div.ps-toolbar-next,div.ps-toolbar-play{cursor:pointer;display:table-cell;}div.ps-toolbar div div.ps-toolbar-content{width:44px;height:44px;margin:0 auto 0;background-image:url(icons.png);background-repeat:no-repeat;}div.ps-toolbar-close div.ps-toolbar-content{background-position:0 0;}div.ps-toolbar-previous div.ps-toolbar-content{background-position:-44px 0;}div.ps-toolbar-previous-disabled div.ps-toolbar-content{background-position:-44px -44px;}div.ps-toolbar-next div.ps-toolbar-content{background-position:-132px 0;}div.ps-toolbar-next-disabled div.ps-toolbar-content{background-position:-132px -44px;}div.ps-toolbar-play div.ps-toolbar-content{background-position:-88px 0;}@media only screen and(-webkit-min-device-pixel-ratio:1.5),only screen and(-moz-min-device-pixel-ratio:1.5),only screen and (min-resolution:240dpi){div.ps-toolbar div div.ps-toolbar-content{-moz-background-size:176px 88px;-o-background-size:176px 88px;-webkit-background-size:176px 88px;background-size:176px 88px;background-image:url(icons@2x.png);}} \ No newline at end of file diff --git a/ajax/libs/photoswipe/package.json b/ajax/libs/photoswipe/package.json new file mode 100644 index 000000000..18bf43744 --- /dev/null +++ b/ajax/libs/photoswipe/package.json @@ -0,0 +1,16 @@ +{ + "name": "photoswipe", + "filename": "code.photoswipe.js", + "version": "3.0.5", + "description": "Image Gallery for mobile and touch devices.", + "homepage": "http://www.photoswipe.com/", + "keywords": [ + "image", + "gallery" + ], + "maintainers": [ + { + "name": "Computerlove" + } + ] +} From 421741abc1c8440da24f2c83aa36bf060dc47f5a Mon Sep 17 00:00:00 2001 From: AdmiralsMaster Date: Fri, 5 Jul 2013 00:23:39 +0200 Subject: [PATCH 04/25] adding timelinejs 2.24 --- ajax/libs/timelinejs/2.24/css/loading.gif | Bin 0 -> 6909 bytes ajax/libs/timelinejs/2.24/css/themes/dark.css | 284 + .../css/themes/font/AbrilFatface-Average.css | 6 + .../2.24/css/themes/font/Arvo-PTSans.css | 6 + .../2.24/css/themes/font/Bevan-PotanoSans.css | 6 + .../css/themes/font/BreeSerif-OpenSans.css | 6 + .../css/themes/font/DroidSerif-DroidSans.css | 7 + .../css/themes/font/Georgia-Helvetica.css | 6 + .../2.24/css/themes/font/Lekton-Molengo.css | 6 + .../2.24/css/themes/font/Lora-Istok.css | 6 + .../themes/font/Merriweather-NewsCycle.css | 8 + .../themes/font/NewsCycle-Merriweather.css | 8 + .../2.24/css/themes/font/NixieOne-Ledger.css | 6 + .../timelinejs/2.24/css/themes/font/PT.css | 7 + .../2.24/css/themes/font/PTSerif-PTSans.css | 6 + .../2.24/css/themes/font/Pacifico-Arimo.css | 6 + .../css/themes/font/PlayfairDisplay-Muli.css | 6 + .../css/themes/font/PoiretOne-Molengo.css | 8 + .../2.24/css/themes/font/Rancho-Gudea.css | 6 + .../css/themes/font/SansitaOne-Kameron.css | 6 + .../2.24/css/themes/timeline-dark.png | Bin 0 -> 20265 bytes .../2.24/css/themes/timeline-dark@2x.png | Bin 0 -> 49145 bytes .../2.24/css/themes/timeline-texture.png | Bin 0 -> 42976 bytes ajax/libs/timelinejs/2.24/css/timeline.css | 284 + ajax/libs/timelinejs/2.24/css/timeline.png | Bin 0 -> 19872 bytes ajax/libs/timelinejs/2.24/css/timeline@2x.png | Bin 0 -> 49364 bytes ajax/libs/timelinejs/2.24/js/locale/ar.js | 2 + ajax/libs/timelinejs/2.24/js/locale/bg.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ca.js | 2 + ajax/libs/timelinejs/2.24/js/locale/cz.js | 2 + ajax/libs/timelinejs/2.24/js/locale/da.js | 2 + ajax/libs/timelinejs/2.24/js/locale/de.js | 2 + ajax/libs/timelinejs/2.24/js/locale/el.js | 2 + ajax/libs/timelinejs/2.24/js/locale/en.js | 2 + ajax/libs/timelinejs/2.24/js/locale/es.js | 2 + ajax/libs/timelinejs/2.24/js/locale/eu.js | 2 + ajax/libs/timelinejs/2.24/js/locale/fi.js | 2 + ajax/libs/timelinejs/2.24/js/locale/fo.js | 2 + ajax/libs/timelinejs/2.24/js/locale/fr.js | 2 + ajax/libs/timelinejs/2.24/js/locale/gl.js | 2 + ajax/libs/timelinejs/2.24/js/locale/hu.js | 2 + ajax/libs/timelinejs/2.24/js/locale/hy.js | 2 + ajax/libs/timelinejs/2.24/js/locale/id.js | 2 + ajax/libs/timelinejs/2.24/js/locale/is.js | 2 + ajax/libs/timelinejs/2.24/js/locale/it.js | 2 + ajax/libs/timelinejs/2.24/js/locale/iw.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ja.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ka.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ko.js | 2 + ajax/libs/timelinejs/2.24/js/locale/lv.js | 2 + ajax/libs/timelinejs/2.24/js/locale/nl.js | 2 + ajax/libs/timelinejs/2.24/js/locale/no.js | 2 + ajax/libs/timelinejs/2.24/js/locale/pl.js | 2 + ajax/libs/timelinejs/2.24/js/locale/pt-br.js | 2 + ajax/libs/timelinejs/2.24/js/locale/pt.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ru.js | 2 + ajax/libs/timelinejs/2.24/js/locale/sk.js | 2 + ajax/libs/timelinejs/2.24/js/locale/sl.js | 2 + ajax/libs/timelinejs/2.24/js/locale/sr-cy.js | 2 + ajax/libs/timelinejs/2.24/js/locale/sr.js | 2 + ajax/libs/timelinejs/2.24/js/locale/sv.js | 2 + ajax/libs/timelinejs/2.24/js/locale/ta.js | 2 + ajax/libs/timelinejs/2.24/js/locale/tl.js | 2 + ajax/libs/timelinejs/2.24/js/locale/tr.js | 2 + ajax/libs/timelinejs/2.24/js/locale/zh-cn.js | 2 + ajax/libs/timelinejs/2.24/js/locale/zh-tw.js | 2 + ajax/libs/timelinejs/2.24/js/storyjs-embed.js | 45 + ajax/libs/timelinejs/2.24/js/timeline-min.js | 36 + ajax/libs/timelinejs/2.24/js/timeline.js | 9990 +++++++++++++++++ ajax/libs/timelinejs/package.json | 24 + 70 files changed, 10859 insertions(+) create mode 100755 ajax/libs/timelinejs/2.24/css/loading.gif create mode 100755 ajax/libs/timelinejs/2.24/css/themes/dark.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/AbrilFatface-Average.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Arvo-PTSans.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Bevan-PotanoSans.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/BreeSerif-OpenSans.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/DroidSerif-DroidSans.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Georgia-Helvetica.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Lekton-Molengo.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Lora-Istok.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Merriweather-NewsCycle.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/NewsCycle-Merriweather.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/NixieOne-Ledger.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/PT.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/PTSerif-PTSans.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Pacifico-Arimo.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/PlayfairDisplay-Muli.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/PoiretOne-Molengo.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/Rancho-Gudea.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/font/SansitaOne-Kameron.css create mode 100755 ajax/libs/timelinejs/2.24/css/themes/timeline-dark.png create mode 100755 ajax/libs/timelinejs/2.24/css/themes/timeline-dark@2x.png create mode 100755 ajax/libs/timelinejs/2.24/css/themes/timeline-texture.png create mode 100755 ajax/libs/timelinejs/2.24/css/timeline.css create mode 100755 ajax/libs/timelinejs/2.24/css/timeline.png create mode 100755 ajax/libs/timelinejs/2.24/css/timeline@2x.png create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ar.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/bg.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ca.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/cz.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/da.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/de.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/el.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/en.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/es.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/eu.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/fi.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/fo.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/fr.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/gl.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/hu.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/hy.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/id.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/is.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/it.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/iw.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ja.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ka.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ko.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/lv.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/nl.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/no.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/pl.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/pt-br.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/pt.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ru.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/sk.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/sl.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/sr-cy.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/sr.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/sv.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/ta.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/tl.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/tr.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/zh-cn.js create mode 100755 ajax/libs/timelinejs/2.24/js/locale/zh-tw.js create mode 100755 ajax/libs/timelinejs/2.24/js/storyjs-embed.js create mode 100755 ajax/libs/timelinejs/2.24/js/timeline-min.js create mode 100755 ajax/libs/timelinejs/2.24/js/timeline.js create mode 100644 ajax/libs/timelinejs/package.json diff --git a/ajax/libs/timelinejs/2.24/css/loading.gif b/ajax/libs/timelinejs/2.24/css/loading.gif new file mode 100755 index 0000000000000000000000000000000000000000..d3eef2d69f7665878adab097a5fd3948caf02e07 GIT binary patch literal 6909 zcmb`Md010tqQ*~FvYaG`cNwljr;8 zeSh!w&5ntRd@)lDh=JVz5D^}+t##YQ4=-AmSq~pQ{Pmr$?NxS5qQ!_A_jT>Nb^BIv zX>ng~--GWSY}mMA=8T!`ZS7ZvujCcvoqX@)gZmFQG;By)lolTwfB4Yh@h`?J{#bGG z{KZEz2EofACHg09wx;v1m_c2YW2C6@%O_BV>f7@5gLgO}6OnWAV( z;A#O2+r1m}>+165!E%HbDlSxbX_OuDVxk=FLg{DYP8>gOVv&9K?yB#(7)PP28TBVj zGEmC$Gr_t0s;HqPFOr=Ti1kSu@ADZ8mu!8QcoTw>YsHqJUyC zy9P%-O%SSt8Fd-4XU*Q;Xiwcp+v!BcqXV0KxtS>G?X>hl_i@Xu7%6P*FCkPDUqQvq zV`Q&hjriTPfr@qS%CUE2OO9O*8O|_%WK<)KRE;K&u38c zTcAy)33wTCLx6O&^5zZYA;Z|)A|yVB|^Q|cnGzmp?~8%nn&v6l$grL6MY3M!IF zawtn>WhR&}FB1d@Gq%q6)0BFtF<7bMVLVos1lE#USuNg>yp#l@axMUHR|Ir*DMhfK zP^3jy2m;weBKzb?wy)MVfN+{68Hn>miQ$zr80WW&h&m$!yUKqohcBwvm#c5x#i8N}ubaw!=@B?p z_c~2TLPAs78Qa;b2N%AfGNx?mzr?|j*SZ&%#>wCiOc17`belT0+^Hc#z3ltCg~LAc+?GRsjaH6(~kztJP=@ zGd+OfL)DPIy&0eq@%EB?7ikXcr*S~FDp0G;p)jC84nyw6moxmde)J&Pezot1aefIm z=m`Prc3;V#Xk?D2#7vHys zW;U6K?WPZ7K93sAn9sYk=3aa26$)h+T^R1tRT7dmX4gQsGNhHXF6)JaZ%PZI)7!=K z`_eyttusAj&4sQvUOG0K;=SxmvQKz37JFi0bwTvKvV%+e8>*g!PuMes4_;+>{``8; z{l^hBS#-ZQg{VKcCkkvM@hxM~z_^@o#XiN32imHAWlV;tO=9lYyDOV6}1d01_sNC z*fbcHa#dl(e4#9mKrcn*DixEb(S&x3r2AkdT_vSW3p*J`;ZwQOs2Y-6UMLnRrDqR( z7$+7_({Qen0^hLq?DJd8yr$vD#)FcSwV=OTS!l3W(a>&PWkkcGif$i??RD}MX>2rL zW|H_`;W^vxVq@zYecrJ2jOdoUPXNQW^}E7JFFjA}aAxb;49`i$mQdU7;OcxTNpX1G zYTlXMFO>s;ZE$oc$TqIum{Hgija$sjND1IH47GuKrdRG7Gcfl7Gn{*M#hp&)xWlb< zoi+>;R(xFg+CL+-#~UQnCYxe)+O^I|Ci9cwYkysAS|NL(a$Aq|(_=}3`M2|gE1!hV zwBG;-cO=}DJeo8aKKRk%j)a>Mu1Qbl4^9%UNl&*IUTL@>;hOXdN5TaOPb%Dzo-Qyv zzHmpvO$pbe|0I8KfF{~2F}5zQXy6Kj83^mI3d3iagAWFAz3qQGXOPF2i?=mRznQdr zQDT?*^F8y2G3*s<)%pQgUBWLj1WG9^Wl<8PM7=srDF_Cm)`nzSf=k#*(?AL#upA13 z$T?|J7R-vs-H&}5|5!7r* z=z!Mcsu&jtpKT7N-%eF>)Wj8^Dnale__s1TZN7#Rq%{kpo!G3IN@;XTKSZjoL;~1X z&e@4H2k0|$W_9n6a9?aUbZ_T%SXH$iBf(+zPW(D~A90RW)O;?`~#?pXBZv8{hO!kSOetRoN%WLnL(S?dQ0K!Zki zErN3Ms&OG8W1RiuUF+E^?8TSwm;6I&qykLoC~{G*2M(`UaEC>F+*qn9(0B|OFCLFu z&i1lL*z8Ien=0F;E|lsFHjzLiHcVW3D@Kmcn2j~RPs{kVv~r;ELyrw zkhp|WW1UU&#)5bqudC8l@Psj9h(-<)5fv}tSt^i0$Bs#JdYPSb zRV_x5NOm4(akpH)#0xA>C9-ZvDXClcfBm(*t`^|cjay;9RapUAgQsI8#ui$BGMZfD#LRq8X3{eCt_Ulpqnu7 zc}i+v6W~2&tBwibBwRdEvZ$s*F`n6L=etRWUu&{Ct8`4ZU%7F{p1a9^jQ~?Q-QHob zi#Bn=M4JgF|9isYuul~pys;)W)RSq3AO6qlY~zNh&NI2oJfjR>aKBIbcxk!JXE6C@QCm2;%sXkXEvUaCN5$t-k#bWp9|`(Gbv3tsTc zGQAHnC6d500|=&zGnaUmz}aytFmZbR1_YMC^eCcarB=MFtsJRC=^8NTO$92}$RRat z#TKKuenC5^U{WY#wfeB+m|@qJo`Lm!hiQt{P59E%T#_JV?aR@spkdQkyr`;?`Eh%{ z17-82ckc$Yoj>mY|9X%Ai168NM{I^L(y1fFIMOUB`mu~HIc3o;W*4FF@Un+sWlQ8d zJFv3Nj79>|xs|cfh;ElFvyI3Ldam?u0N}1+@S^rfB>JiXs+N}a4|U1g?&{Xy>0%** zU~}nVapdm7`g$thA7G6vs#G$VBze3Ui@8wS3MBSKhKpq@|d9CYOTp}Kb4?gEPK4H zCY5=rFHhq0^sN6Cf}Wc7I6*j-&yYutTPsHhTZ#rMmPZ)in%+7`)10yAX6&EA)9|M= zgW51lCZRWA%Xaf}-?LTS+6DVx?Ax>GPS%R3g}y7-*(exF7u8prm)b38Zsyz|ri90I z&aoF|!ib2sn|n|OKviIp_^_1BMFzUJ_zOa0Mq__{ z#oviKbc_4+Nt-v<@_pghSrH2+Mr1U#>8mSz7TW-*&}ibyqKvMLUP?Wk5g*~i+)F5A zOlTAyB*rc!&}Hn1yCc0OBQH!qJ8p9s=r3c5I7*{cfPf^;E`xZ6|6XB~w2%LNtZPU> zakfg3uT3?3NnI_kN$j?pY2}ISmRF9Vp9nw@y{pQ?-+733HU5Cv+I%%{$AK;Ro8PsRzAcGrdhv$@VbXU!Ro{ZbWEF>_`eRH(GN=G$wGLT>wWtzwwDJ}4Nx8huwC(e3(Fz$Y(?~;M z1cq6vT#VP+3aWvVr_^Pg+}^-mt_V7H3Ubd@oZGlF2rFAJzczT6Hf^WH*%j8R>;4i#$zbIxJbm0*8>h-TX;H5#trU4 zQxoU6z?n)7F5%A>G*5iT?V;w}2aX=i^i3B#%_o|q`#;b`+(;}vwRrc#^Zo)Rmu|gt zwzT$5-e>YW;9CdLZ_x)kP#YX4TfJJ%0T-{xD*`KFFiF6!0i@*9*2eU@l$Yu1SKv6hd+w)3kcHi1J6Z4JSLC+eTdL}#m|jZiV(RDy;ZxD?%-%r zpmE!%p27+Fp@&$sQ%C$G4;#zbnVCV~z>7t*-7Z5l1xjp}NW6%3>-MFF>gHt;v$sPc zi_|>iBGeK&0qthQUPa|0Euh}zGCClmA2~8iA51Lsim@aCZImGfnre2wA^meRTcwuI zxS+2Cb}L7aovBsZ7Zj8{CylNg`I9%5`RJ%*p8hL{5%6FJuq5lhZ@Fnz< z-9F6@ZaS0Kga0RVaEG2U&vCds?EGvxQ||_U(q&KRJhSQG_~2FLVds6GUUy5lJvs}& zf`0z(!R$E9XM5^k_tES&V!+6pl>GtB5pLK2S28k>oPea~ZLAG?GlVucs?@N+*)l=Oxq@U$6eU1>nJqeY(2B z1SSCrdha9i&R!B#U@40Z&8*6&uJPgpcV9#7bOr2dq3Lb*P_krJwExX2LOuD)mmp$( zhd}G(MCIKbT&0gpK9!T4GT8ffwm*{_j6KOMankFz=QD#_ z{8wRT0uZ4+U5Fusngyl=jZT*o_hg~}>h&P*B_7woMF$`0p4Rd_Vc>{(_7*;mJoz&j zK9ip8dB4D81Rqj(o;(g8{JrC+Ck&iOe4%@a%kzGL<2bRpHaAUV+E1?-&sJQIZ8E*z@TJV%LSWW4s~_>Y4l-(e}Jm((!fKCJ$*cUp5$ig^^CG*fv-0jr6`hE zP`FZCt)gRsY^k3;X^CkqM)Pg)hqchcKsuEpT$5aZ@mg8}$uJ9)XcbJXVqJ1D%NKpa z5x3;XQKp>KBCE|hY7qE)nOAN#QONu&a=|kR4;0moht&2ATWoYlL&1^qp-PdL{*S zqJ+-TdM=%hrp4?`CpQuvnOw6+>~x5Z8M8NKG+KKhRmf)ANahDb@_iTv!t{h1{!7fk z#QN^nncxG+jD`~IRbWu*QC-SG;AL8R^YoH~Kn{6tZE(NrpyR7l0i`r*&-p&`%WHFd fQtUU|#+*FwXvV>}`m!oZZ}gR!ZQqz7;HCcsDiJk9 literal 0 HcmV?d00001 diff --git a/ajax/libs/timelinejs/2.24/css/themes/dark.css b/ajax/libs/timelinejs/2.24/css/themes/dark.css new file mode 100755 index 000000000..773e8eacc --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/dark.css @@ -0,0 +1,284 @@ +.vco-storyjs{}.vco-storyjs div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6,.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs pre,.vco-storyjs a,.vco-storyjs abbr,.vco-storyjs acronym,.vco-storyjs address,.vco-storyjs cite,.vco-storyjs code,.vco-storyjs del,.vco-storyjs dfn,.vco-storyjs em,.vco-storyjs img,.vco-storyjs q,.vco-storyjs s,.vco-storyjs samp,.vco-storyjs small,.vco-storyjs strike,.vco-storyjs strong,.vco-storyjs sub,.vco-storyjs sup,.vco-storyjs tt,.vco-storyjs var,.vco-storyjs dd,.vco-storyjs dl,.vco-storyjs dt,.vco-storyjs li,.vco-storyjs ol,.vco-storyjs ul,.vco-storyjs fieldset,.vco-storyjs form,.vco-storyjs label,.vco-storyjs legend,.vco-storyjs button,.vco-storyjs table,.vco-storyjs caption,.vco-storyjs tbody,.vco-storyjs tfoot,.vco-storyjs thead,.vco-storyjs tr,.vco-storyjs th,.vco-storyjs td,.vco-storyjs .vco-container,.vco-storyjs .content-container,.vco-storyjs .media,.vco-storyjs .text,.vco-storyjs .vco-slider,.vco-storyjs .slider,.vco-storyjs .date,.vco-storyjs .title,.vco-storyjs .messege,.vco-storyjs .map,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .vco-feedback,.vco-storyjs .vco-feature,.vco-storyjs .toolbar,.vco-storyjs .marker,.vco-storyjs .dot,.vco-storyjs .line,.vco-storyjs .flag,.vco-storyjs .time,.vco-storyjs .era,.vco-storyjs .major,.vco-storyjs .minor,.vco-storyjs .vco-navigation,.vco-storyjs .start,.vco-storyjs .active{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;width:auto;float:none;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{clear:none;} +.vco-storyjs table{border-collapse:collapse;border-spacing:0;} +.vco-storyjs ol,.vco-storyjs ul{list-style:none;} +.vco-storyjs q:before,.vco-storyjs q:after,.vco-storyjs blockquote:before,.vco-storyjs blockquote:after{content:"";} +.vco-storyjs a:focus{outline:thin dotted;} +.vco-storyjs a:hover,.vco-storyjs a:active{outline:0;} +.vco-storyjs article,.vco-storyjs aside,.vco-storyjs details,.vco-storyjs figcaption,.vco-storyjs figure,.vco-storyjs footer,.vco-storyjs header,.vco-storyjs hgroup,.vco-storyjs nav,.vco-storyjs section{display:block;} +.vco-storyjs audio,.vco-storyjs canvas,.vco-storyjs video{display:inline-block;*display:inline;*zoom:1;} +.vco-storyjs audio:not([controls]){display:none;} +.vco-storyjs div{max-width:none;} +.vco-storyjs sub,.vco-storyjs sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} +.vco-storyjs sup{top:-0.5em;} +.vco-storyjs sub{bottom:-0.25em;} +.vco-storyjs img{border:0;-ms-interpolation-mode:bicubic;} +.vco-storyjs button,.vco-storyjs input,.vco-storyjs select,.vco-storyjs textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;} +.vco-storyjs button,.vco-storyjs input{line-height:normal;*overflow:visible;} +.vco-storyjs button::-moz-focus-inner,.vco-storyjs input::-moz-focus-inner{border:0;padding:0;} +.vco-storyjs button,.vco-storyjs input[type="button"],.vco-storyjs input[type="reset"],.vco-storyjs input[type="submit"]{cursor:pointer;-webkit-appearance:button;} +.vco-storyjs input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +.vco-storyjs input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} +.vco-storyjs textarea{overflow:auto;vertical-align:top;} +.vco-storyjs{font-family:"Georgia",Times New Roman,Times,serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs h1.date,.vco-storyjs h2.date,.vco-storyjs h3.date,.vco-storyjs h4.date,.vco-storyjs h5.date,.vco-storyjs h6.date{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:"Georgia",Times New Roman,Times,serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:"Georgia",Times New Roman,Times,serif;} +.timeline-tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} +.thumbnail{background-image:url(themes/timeline-dark.png?v3.4);} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.thumbnail{background-image:url(themes/timeline-dark@2x.png?v4.3);background-size:352px 260px;}}.vco-storyjs{font-size:15px;font-weight:normal;line-height:20px;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;}.vco-storyjs p{font-size:15px;font-weight:normal;line-height:20px;margin-bottom:20px;color:#aaaaaa;}.vco-storyjs p small{font-size:12px;line-height:17px;} +.vco-storyjs p:first-child{margin-top:20px;} +.vco-storyjs .vco-navigation p{color:#999999;} +.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{margin-bottom:15px;} +.vco-storyjs .vco-feature p{color:#aaaaaa;} +.vco-storyjs .vco-feature blockquote,.vco-storyjs .vco-feature blockquote p{color:#ffffff;} +.vco-storyjs .date a,.vco-storyjs .title a{color:#999999;} +.vco-storyjs .hyphenate{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{font-weight:normal;color:#ffffff;text-transform:none;}.vco-storyjs h1 a,.vco-storyjs h2 a,.vco-storyjs h3 a,.vco-storyjs h4 a,.vco-storyjs h5 a,.vco-storyjs h6 a{color:#999999;} +.vco-storyjs h1 small,.vco-storyjs h2 small,.vco-storyjs h3 small,.vco-storyjs h4 small,.vco-storyjs h5 small,.vco-storyjs h6 small{color:#999999;} +.vco-storyjs h1.date,.vco-storyjs h2.date,.vco-storyjs h3.date,.vco-storyjs h4.date,.vco-storyjs h5.date,.vco-storyjs h6.date{font-weight:bold;} +.vco-storyjs h2.start{font-size:36px;line-height:38px;margin-bottom:15px;} +.vco-storyjs h1{margin-bottom:15px;font-size:32px;line-height:34px;}.vco-storyjs h1 small{font-size:18px;} +.vco-storyjs h2{margin-bottom:15px;font-size:28px;line-height:30px;}.vco-storyjs h2 small{font-size:14px;line-height:16px;} +.vco-storyjs h2.date{font-size:16px;line-height:18px;margin-bottom:3.75px;color:#999999;} +.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{line-height:40px;}.vco-storyjs h3 .active,.vco-storyjs h4 .active,.vco-storyjs h5 .active,.vco-storyjs h6 .active{color:#0bd4e3;} +.vco-storyjs h3{font-size:28px;line-height:30px;}.vco-storyjs h3 small{font-size:14px;} +.vco-storyjs h4{font-size:20px;line-height:22px;}.vco-storyjs h4 small{font-size:12px;} +.vco-storyjs h5{font-size:16px;line-height:18px;} +.vco-storyjs h6{font-size:13px;line-height:14px;text-transform:uppercase;} +.vco-storyjs strong{font-weight:bold;font-style:inherit;} +.vco-storyjs em{font-style:italic;font-weight:inherit;} +.vco-storyjs Q{quotes:'„' '“';font-style:italic;} +.vco-storyjs blockquote,.vco-storyjs blockquote p{font-size:24px;line-height:32px;text-align:left;margin-bottom:6px;padding-top:10px;background-color:#1a1a1a;color:#ffffff;} +.vco-storyjs .credit{color:#999999;text-align:right;font-size:10px;line-height:10px;display:block;margin:0 auto;clear:both;} +.vco-storyjs .caption{text-align:left;margin-top:5px;color:#aaaaaa;font-size:11px;line-height:14px;clear:both;} +.vco-storyjs.vco-right-to-left h1,.vco-storyjs.vco-right-to-left h2,.vco-storyjs.vco-right-to-left h3,.vco-storyjs.vco-right-to-left h4,.vco-storyjs.vco-right-to-left h5,.vco-storyjs.vco-right-to-left h6,.vco-storyjs.vco-right-to-left p,.vco-storyjs.vco-right-to-left blockquote,.vco-storyjs.vco-right-to-left pre,.vco-storyjs.vco-right-to-left a,.vco-storyjs.vco-right-to-left abbr,.vco-storyjs.vco-right-to-left acronym,.vco-storyjs.vco-right-to-left address,.vco-storyjs.vco-right-to-left cite,.vco-storyjs.vco-right-to-left code,.vco-storyjs.vco-right-to-left del,.vco-storyjs.vco-right-to-left dfn,.vco-storyjs.vco-right-to-left em,.vco-storyjs.vco-right-to-left img,.vco-storyjs.vco-right-to-left q,.vco-storyjs.vco-right-to-left s,.vco-storyjs.vco-right-to-left samp,.vco-storyjs.vco-right-to-left small,.vco-storyjs.vco-right-to-left strike,.vco-storyjs.vco-right-to-left strong,.vco-storyjs.vco-right-to-left sub,.vco-storyjs.vco-right-to-left sup,.vco-storyjs.vco-right-to-left tt,.vco-storyjs.vco-right-to-left var,.vco-storyjs.vco-right-to-left dd,.vco-storyjs.vco-right-to-left dl,.vco-storyjs.vco-right-to-left dt,.vco-storyjs.vco-right-to-left li,.vco-storyjs.vco-right-to-left ol,.vco-storyjs.vco-right-to-left ul,.vco-storyjs.vco-right-to-left fieldset,.vco-storyjs.vco-right-to-left form,.vco-storyjs.vco-right-to-left label,.vco-storyjs.vco-right-to-left legend,.vco-storyjs.vco-right-to-left button,.vco-storyjs.vco-right-to-left table,.vco-storyjs.vco-right-to-left caption,.vco-storyjs.vco-right-to-left tbody,.vco-storyjs.vco-right-to-left tfoot,.vco-storyjs.vco-right-to-left thead,.vco-storyjs.vco-right-to-left tr,.vco-storyjs.vco-right-to-left th,.vco-storyjs.vco-right-to-left td{direction:rtl;} +.timeline-tooltip{position:absolute;z-index:205;display:block;visibility:visible;padding:5px;opacity:0;filter:alpha(opacity=0);font-size:15px;font-weight:bold;line-height:20px;font-size:12px;line-height:12px;} +.timeline-tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.timeline-tooltip.top{margin-top:-2px;} +.timeline-tooltip.right{margin-left:2px;} +.timeline-tooltip.bottom{margin-top:2px;} +.timeline-tooltip.left{margin-left:-2px;} +.timeline-tooltip.top .timeline-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.timeline-tooltip.left .timeline-tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.timeline-tooltip.bottom .timeline-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.timeline-tooltip.right .timeline-tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.timeline-tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.timeline-tooltip-arrow{position:absolute;width:0;height:0;} +@media only screen and (max-width:480px),only screen and (max-device-width:480px){.vco-slider .nav-next,.vco-slider .nav-previous{display:none;}}@media (max-width:640px){}.vco-skinny .vco-slider .slider-item .content .layout-text-media .text .container{text-align:center !important;} +.vco-skinny .vco-slider .slider-item .content .layout-text-media h2,.vco-skinny .vco-slider .slider-item .content .layout-text-media h3{display:block !important;width:100% !important;text-align:center !important;} +.vco-skinny .vco-slider .slider-item .content .content-container{display:block;}.vco-skinny .vco-slider .slider-item .content .content-container .text{width:100%;max-width:100%;min-width:120px;display:block;}.vco-skinny .vco-slider .slider-item .content .content-container .text .container{display:block;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-skinny .vco-slider .slider-item .content .content-container .media{width:100%;min-width:50%;float:none;}.vco-skinny .vco-slider .slider-item .content .content-container .media .media-wrapper{margin-left:0px;margin-right:0px;width:100%;display:block;} +.vco-skinny.vco-notouch .vco-slider .nav-previous,.vco-skinny.vco-notouch .vco-slider .nav-next{z-index:203;}.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .title{filter:alpha(opacity=1);-khtml-opacity:0.01;-moz-opacity:0.01;opacity:0.01;} +.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .icon{filter:alpha(opacity=15);-khtml-opacity:0.15;-moz-opacity:0.15;opacity:0.15;} +.vco-skinny.vco-notouch .vco-slider .nav-previous .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px 0;width:24px;height:24px;overflow:hidden;margin-left:10px;} +.vco-skinny.vco-notouch .vco-slider .nav-next .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-232px 0;width:24px;height:24px;overflow:hidden;margin-left:66px;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover,.vco-skinny.vco-notouch .vco-slider .nav-next:hover{color:#aaaaaa !important;background-color:#aaaaaa;background-color:rgba(255, 255, 255, 0.65);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;}.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;font-weight:bold;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{padding-bottom:5px;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{padding-left:5px;padding-right:5px;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-skinny.vco-notouch .vco-slider .nav-previous .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-208px 0;width:24px;height:24px;overflow:hidden;} .vco-skinny.vco-notouch .vco-slider .nav-next .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-232px 0;width:24px;height:24px;overflow:hidden;}}.vco-slider{width:100%;height:100%;overflow:hidden;}.vco-slider .slider-container-mask{text-align:center;width:100%;height:100%;overflow:hidden;}.vco-slider .slider-container-mask .slider-container{position:absolute;top:0px;left:-2160px;width:100%;height:100%;text-align:center;display:block;}.vco-slider .slider-container-mask .slider-container .slider-item-container{display:table-cell;vertical-align:middle;} +.vco-notouch .vco-slider .nav-previous:hover,.vco-notouch .vco-slider .nav-next:hover{color:#aaaaaa;cursor:pointer;} +.vco-notouch .vco-slider .nav-previous:hover .icon{margin-left:10px;} +.vco-notouch .vco-slider .nav-next:hover .icon{margin-left:66px;} +.vco-notouch .vco-slider .slider-item .content .content-container .media .media-container .wikipedia h4 a:hover{color:#0bd4e3;text-decoration:none;} +.vco-notouch .vco-slider .slider-item .content .content-container .created-at:hover{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments a:hover{text-decoration:none;}.vco-notouch .vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments a:hover h5{text-decoration:underline;} +.vco-slider img,.vco-slider embed,.vco-slider object,.vco-slider video,.vco-slider iframe{max-width:100%;} +.vco-slider .nav-previous,.vco-slider .nav-next{position:absolute;top:0px;width:100px;color:#DBDBDB;font-size:11px;}.vco-slider .nav-previous .nav-container,.vco-slider .nav-next .nav-container{height:100px;width:100px;position:absolute;} +.vco-slider .nav-previous .icon,.vco-slider .nav-next .icon{margin-top:12px;margin-bottom:15px;} +.vco-slider .nav-previous .date,.vco-slider .nav-next .date,.vco-slider .nav-previous .title,.vco-slider .nav-next .title{line-height:14px;}.vco-slider .nav-previous .date a,.vco-slider .nav-next .date a,.vco-slider .nav-previous .title a,.vco-slider .nav-next .title a{color:#999999;} +.vco-slider .nav-previous .date small,.vco-slider .nav-next .date small,.vco-slider .nav-previous .title small,.vco-slider .nav-next .title small{display:none;} +.vco-slider .nav-previous .date,.vco-slider .nav-next .date{font-size:13px;line-height:13px;font-weight:bold;text-transform:uppercase;margin-bottom:5px;} +.vco-slider .nav-previous .title,.vco-slider .nav-next .title{font-size:11px;line-height:13px;} +.vco-slider .nav-previous{float:left;text-align:left;}.vco-slider .nav-previous .icon{margin-left:15px;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-160px 0;width:24px;height:24px;overflow:hidden;} +.vco-slider .nav-previous .date,.vco-slider .nav-previous .title{text-align:left;padding-left:15px;} +.vco-slider .nav-next{float:right;text-align:right;}.vco-slider .nav-next .icon{margin-left:61px;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-184px 0;width:24px;height:24px;overflow:hidden;} +.vco-slider .nav-next .date,.vco-slider .nav-next .title{text-align:right;padding-right:15px;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-slider .nav-previous .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-160px 0;width:24px;height:24px;overflow:hidden;} .vco-slider .nav-next .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-184px 0;width:24px;height:24px;overflow:hidden;}}.vco-slider .slider-item{position:absolute;width:700px;height:100%;padding:0px;margin:0px;display:table;overflow-y:auto;}.vco-slider .slider-item .content{display:table-cell;vertical-align:middle;}.vco-slider .slider-item .content .pad-top .text .container{padding-top:15px;} +.vco-slider .slider-item .content .pad-right .text .container{padding-right:15px;} +.vco-slider .slider-item .content .pad-left .text .container{padding-left:30px;} +.vco-slider .slider-item .content .pad-left .media.text-media .media-wrapper .media-container{border:none;background-color:#1a1a1a;} +.vco-slider .slider-item .content .content-container{display:table;vertical-align:middle;}.vco-slider .slider-item .content .content-container .text{width:40%;max-width:50%;min-width:120px;display:table-cell;vertical-align:middle;}.vco-slider .slider-item .content .content-container .text .container{display:table-cell;vertical-align:middle;text-align:left;}.vco-slider .slider-item .content .content-container .text .container p{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-slider .slider-item .content .content-container .text .container h2.date{font-size:15px;line-height:15px;font-weight:normal;} +.vco-slider .slider-item .content .content-container .text .container .slide-tag{font-size:11px;font-weight:bold;color:#1a1a1a;background-color:#cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;vertical-align:baseline;white-space:nowrap;line-height:11px;padding:1px 3px 1px;margin-left:7.5px;margin-bottom:7.5px;} +.vco-slider .slider-item .content .content-container .media{width:100%;min-width:50%;float:left;}.vco-slider .slider-item .content .content-container .media .media-wrapper{display:inline-block;margin-left:auto;margin-right:auto;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container{display:inline-block;line-height:0px;padding:0px;max-height:100%;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-frame,.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-image img{border:1px solid;border-color:#333333 #999999 #999999 #333333;background-color:#1a1a1a;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-frame iframe{background-color:#1a1a1a;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .soundcloud{border:0;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-image{display:inline-block;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow{position:relative;z-index:1;background:#1a1a1a;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow:before,.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow:after{z-index:-1;position:absolute;content:"";bottom:15px;left:10px;width:50%;top:80%;max-width:300px;background:#999999;-webkit-box-shadow:0 15px 10px #999999;-moz-box-shadow:0 15px 10px #999999;box-shadow:0 15px 10px #999999;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-ms-transform:rotate(-2deg);-o-transform:rotate(-2deg);transform:rotate(-2deg);} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow::after{-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg);right:10px;left:auto;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text{display:table;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text .container{display:table-cell;vertical-align:middle;font-size:15px;line-height:20px;color:#aaaaaa;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text .container p{margin-bottom:20px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia{font-size:15px;line-height:20px;text-align:left;margin-left:auto;margin-right:auto;margin-bottom:15px;clear:both;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia .wiki-source{margin-bottom:15px;font-size:13px;line-height:19px;font-style:italic;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia h4{border-bottom:1px solid #333333;margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia h4 a{color:#ffffff;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia p{font-size:13px;line-height:19px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map{line-height:normal;z-index:200;text-align:left;background-color:#1a1a1a;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map img{max-height:none !important;max-width:none !important;border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .google-map{height:100%;width:100%;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution{position:absolute;z-index:201;bottom:0px;width:100%;overflow:hidden;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution .attribution-text{height:19px;overflow:hidden;-webkit-user-select:none;line-height:19px;margin-right:60px;padding-left:65px;font-family:Arial,sans-serif;font-size:10px;color:#444;white-space:nowrap;color:#1a1a1a;text-shadow:1px 1px 1px #aaaaaa;text-align:center;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution .attribution-text a{color:#1a1a1a !important;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .credit{color:#999999;text-align:right;display:block;margin:0 auto;margin-top:6px;font-size:10px;line-height:13px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .caption{text-align:left;margin-top:10px;color:#aaaaaa;font-size:11px;line-height:14px;text-rendering:optimizeLegibility;word-wrap:break-word;} +.vco-slider .slider-item .content .content-container .media.text-media .media-wrapper .media-container{border:none;background-color:#1a1a1a;} +.vco-slider .slider-item .content .content-container .created-at{width:24px;height:24px;overflow:hidden;margin-left:7.5px;margin-top:2px;display:inline-block;float:right;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;} +.vco-slider .slider-item .content .content-container .storify .created-at{background-repeat:no-repeat;background-position:-328px -96px;} +.vco-slider .slider-item .content .content-container .twitter .created-at{background-repeat:no-repeat;background-position:-256px -24px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content{font-size:13px;line-height:19px;margin-bottom:6px;padding-top:10px;background-color:#1a1a1a;color:#aaaaaa;}.vco-slider .slider-item .content .content-container .googleplus .googleplus-content p{font-size:13px;line-height:19px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-title{font-size:24px;line-height:32px;margin-bottom:6px;padding-top:10px;background-color:#1a1a1a;color:#ffffff;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-annotation{font-size:15px;line-height:20px;color:#ffffff;border-bottom:1px solid #e3e3e3;padding-bottom:7.5px;margin-bottom:7.5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments{border-top:1px solid #e3e3e3;padding-top:15px;margin-top:15px;border-bottom:1px solid #e3e3e3;padding-bottom:15px;margin-bottom:15px;*zoom:1;}.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:before,.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:after{display:table;content:"";} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:after{clear:both;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments h5{margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments div{width:50%;padding-left:15px;display:inline-block;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments p{font-size:11px;line-height:14px;margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments img{float:left;display:block;bottom:0;left:0;margin:auto;position:relative;right:0;top:0;width:40%;} +.vco-slider .slider-item .content .content-container .googleplus .proflinkPrefix{color:#0bd4e3;} +.vco-slider .slider-item .content .content-container .googleplus .created-at{background-repeat:no-repeat;background-position:-208px -72px;} +.vco-slider .slider-item .content .content-container .twitter,.vco-slider .slider-item .content .content-container .plain-text-quote,.vco-slider .slider-item .content .content-container .storify,.vco-slider .slider-item .content .content-container .googleplus{text-align:left;margin-left:auto;margin-right:auto;margin-bottom:15px;clear:both;}.vco-slider .slider-item .content .content-container .twitter blockquote,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote,.vco-slider .slider-item .content .content-container .storify blockquote,.vco-slider .slider-item .content .content-container .googleplus blockquote{color:#aaaaaa;}.vco-slider .slider-item .content .content-container .twitter blockquote p,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote p,.vco-slider .slider-item .content .content-container .storify blockquote p,.vco-slider .slider-item .content .content-container .googleplus blockquote p{font-size:24px;line-height:32px;margin-bottom:6px;padding-top:10px;background-color:#1a1a1a;color:#ffffff;} +.vco-slider .slider-item .content .content-container .twitter blockquote .quote-mark,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote .quote-mark,.vco-slider .slider-item .content .content-container .storify blockquote .quote-mark,.vco-slider .slider-item .content .content-container .googleplus blockquote .quote-mark{color:#aaaaaa;} +.vco-slider .slider-item .content .content-container .twitter blockquote{font-size:15px;}.vco-slider .slider-item .content .content-container .twitter blockquote p{font-size:24px;} +.vco-slider .slider-item .content .content-container.layout-text-media .text-media{border-top:1px solid #e3e3e3;padding-top:15px;padding-right:0;} +.vco-slider .slider-item .content .content-container.layout-text-media.pad-left .text-media{padding-right:15px;padding-top:0;border-right:1px solid #e3e3e3;border-top:0px solid #e3e3e3;} +.vco-slider .slider-item .content .content-container.layout-text{width:100%;}.vco-slider .slider-item .content .content-container.layout-text .text{width:100%;max-width:100%;}.vco-slider .slider-item .content .content-container.layout-text .text .container{display:block;vertical-align:middle;padding:0px;width:90%;text-align:left;margin-left:auto;margin-right:auto;} +.vco-slider .slider-item .content .content-container.layout-media{width:100%;}.vco-slider .slider-item .content .content-container.layout-media .text{width:100%;height:100%;max-width:100%;display:block;text-align:center;}.vco-slider .slider-item .content .content-container.layout-media .text .container{display:block;text-align:center;width:100%;margin-left:none;margin-right:none;} +.vco-slider .slider-item .content .content-container.layout-media .media{width:100%;min-width:50%;float:none;}.vco-slider .slider-item .content .content-container.layout-media .media .media-wrapper .media-container{margin-left:auto;margin-right:auto;line-height:0px;padding:0px;} +.vco-slider .slider-item .content .content-container.layout-media .twitter,.vco-slider .slider-item .content .content-container.layout-media .wikipedia,.vco-slider .slider-item .content .content-container.layout-media .googleplus{max-width:70%;} +.storyjs-embed{background-color:#1a1a1a;margin-bottom:20px;border:1px solid #333333;padding-top:20px;padding-bottom:20px;clear:both;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);-moz-box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);} +.storyjs-embed.full-embed{overflow:hidden;border:0 !important;padding:0 !important;margin:0 !important;clear:both;-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important;-webkit-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;-moz-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;} +.storyjs-embed.sized-embed{overflow:hidden;border:1px solid #333333;padding-top:7px;padding-bottom:7px;margin:0 !important;clear:both;-webkit-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;-moz-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;} +.vco-storyjs{width:100%;height:100%;padding:0px;margin:0px;background-color:#1a1a1a;position:absolute;z-index:100;clear:both;overflow:hidden;}.vco-storyjs .vmm-clear:before,.vco-storyjs .vmm-clear:after{content:"";display:table;} +.vco-storyjs .vmm-clear:after{clear:both;} +.vco-storyjs .vmm-clear{*zoom:1;} +.vco-storyjs .vco-feature{width:100%;}.vco-storyjs .vco-feature .slider,.vco-storyjs .vco-feature .vco-slider{width:100%;float:left;position:relative;z-index:10;padding-top:15px;-webkit-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);} +.vco-storyjs .vco-feedback{position:absolute;display:table;overflow:hidden;top:0px;left:0px;z-index:205;width:100%;height:100%;} +.vco-storyjs div.vco-loading,.vco-storyjs div.vco-explainer{display:table;text-align:center;min-width:100px;margin-top:15px;height:100%;width:100%;background-color:#1a1a1a;}.vco-storyjs div.vco-loading .vco-loading-container,.vco-storyjs div.vco-explainer .vco-loading-container,.vco-storyjs div.vco-loading .vco-explainer-container,.vco-storyjs div.vco-explainer .vco-explainer-container{display:table-cell;vertical-align:middle;}.vco-storyjs div.vco-loading .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-loading-icon{display:block;background-repeat:no-repeat;vertical-align:middle;margin-left:auto;margin-right:auto;text-align:center;background-image:url(themes/loading.gif?v3.4);width:28px;height:28px;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-gesture-icon{display:block;vertical-align:middle;margin-left:auto;margin-right:auto;text-align:center;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-160px -160px;width:48px;height:48px;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-message,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message{display:block;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-message,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message,.vco-storyjs div.vco-loading .vco-loading-container .vco-message p,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message p,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message p,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message p{text-align:center;font-size:11px;line-height:13px;text-transform:uppercase;margin-top:7.5px;margin-bottom:7.5px;} +.vco-storyjs div.vco-explainer{background-color:transparent;} +.vco-storyjs .vco-bezel{background-color:#aaaaaa;background-color:rgba(255, 255, 255, 0.8);width:80px;height:50px;padding:50px;padding-top:25px;padding:25px 20px 50px 20px;margin:auto;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;}.vco-storyjs .vco-bezel .vco-message,.vco-storyjs .vco-bezel .vco-message p{color:#1a1a1a;font-weight:bold;} +.vco-storyjs .vco-container.vco-main{position:absolute;top:0px;left:0px;padding-bottom:3px;width:auto;height:auto;margin:0px;clear:both;} +.vco-storyjs img,.vco-storyjs embed,.vco-storyjs object,.vco-storyjs video,.vco-storyjs iframe{max-width:100%;} +.vco-storyjs img{max-height:100%;border:1px solid #999999;} +.vco-storyjs a{color:#0bd4e3;text-decoration:none;} +.vco-storyjs a:hover{color:#07909a;text-decoration:underline;} +.vco-storyjs .vcard{float:right;margin-bottom:15px;}.vco-storyjs .vcard a{color:#aaaaaa;} +.vco-storyjs .vcard a:hover{text-decoration:none;}.vco-storyjs .vcard a:hover .fn{text-decoration:underline;} +.vco-storyjs .vcard .fn,.vco-storyjs .vcard .nickname{padding-left:42px;} +.vco-storyjs .vcard .fn{display:block;font-weight:bold;} +.vco-storyjs .vcard .nickname{margin-top:1px;display:block;color:#aaaaaa;} +.vco-storyjs .vcard .avatar{float:left;display:block;width:32px;height:32px;}.vco-storyjs .vcard .avatar img{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;} +.vco-storyjs .thumbnail{width:24px;height:24px;overflow:hidden;float:left;margin:0;margin-right:1px;margin-top:6px;border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-storyjs a.thumbnail:hover{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-storyjs .thumbnail.thumb-plaintext{background-repeat:no-repeat;background-position:-280px -48px;} +.vco-storyjs .thumbnail.thumb-quote{background-repeat:no-repeat;background-position:-232px -48px;} +.vco-storyjs .thumbnail.thumb-document{background-repeat:no-repeat;background-position:-256px -48px;} +.vco-storyjs .thumbnail.thumb-photo{background-repeat:no-repeat;background-position:-280px -24px;border:0;}.vco-storyjs .thumbnail.thumb-photo img{border:0px none #333333 !important;} +.vco-storyjs .thumbnail.thumb-twitter{background-repeat:no-repeat;background-position:-256px -24px;} +.vco-storyjs .thumbnail.thumb-vimeo{background-repeat:no-repeat;background-position:-328px -48px;} +.vco-storyjs .thumbnail.thumb-vine{background-repeat:no-repeat;background-position:-232px -72px;} +.vco-storyjs .thumbnail.thumb-youtube{background-repeat:no-repeat;background-position:-328px -72px;} +.vco-storyjs .thumbnail.thumb-video{background-repeat:no-repeat;background-position:-328px -24px;} +.vco-storyjs .thumbnail.thumb-audio{background-repeat:no-repeat;background-position:-304px -24px;} +.vco-storyjs .thumbnail.thumb-map{background-repeat:no-repeat;background-position:-208px -48px;} +.vco-storyjs .thumbnail.thumb-website{background-repeat:no-repeat;background-position:-232px -24px;} +.vco-storyjs .thumbnail.thumb-link{background-repeat:no-repeat;background-position:-184px -72px;} +.vco-storyjs .thumbnail.thumb-wikipedia{background-repeat:no-repeat;background-position:-184px -48px;} +.vco-storyjs .thumbnail.thumb-storify{background-repeat:no-repeat;background-position:-328px -96px;} +.vco-storyjs .thumbnail.thumb-googleplus{background-repeat:no-repeat;background-position:-208px -72px;} +.vco-storyjs thumbnail.thumb-instagram{background-repeat:no-repeat;background-position:-208px -96px;} +.vco-storyjs thumbnail.thumb-instagram-full{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-232px -96px;width:48px;height:24px;} +.vco-storyjs .thumb-storify-full{height:12px;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-280px -96px;width:48px;} +.vco-storyjs .thumbnail-inline{width:16px;height:14px;overflow:hidden;display:inline-block;margin-right:1px;margin-left:3px;margin-top:2px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-storyjs .twitter .thumbnail-inline{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-160px -96px;} +.vco-storyjs .storify .thumbnail-inline{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-184px -96px;} +.vco-storyjs .googleplus .thumbnail-inline{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px -96px;} +.vco-storyjs .zFront{z-index:204;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-storyjs div.vco-loading .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-loading-icon{background-image:url(themes/loading@2x.gif?v3.4);} .vco-storyjs div.vco-loading .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-gesture-icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-160px -160px;width:48px;height:48px;}}.vco-notouch .vco-navigation .vco-toolbar .zoom-in:hover,.vco-notouch .vco-navigation .vco-toolbar .zoom-out:hover,.vco-notouch .vco-navigation .vco-toolbar .back-home:hover{color:#0bd4e3;cursor:pointer;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-navigation .timenav .content .marker.active:hover{cursor:default;}.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag .flag-content h3,.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag-small .flag-content h3{color:#0bd4e3;} +.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag .flag-content h4,.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag-small .flag-content h4{color:#999999;} +.vco-notouch .vco-navigation .timenav .content .marker:hover .line{z-index:24;background:#999999;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{cursor:pointer;}.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content h3,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h3{color:#aaaaaa;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content h4,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h4{color:#aaaaaa;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content .thumbnail,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content .thumbnail{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} +.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{height:56px;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content{height:36px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h3{margin-top:5px;} +.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover .flag-content{height:14px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation{clear:both;cursor:move;width:100%;height:200px;border-top:1px solid #e3e3e3;position:relative;}.vco-timeline .vco-navigation .vco-toolbar{position:absolute;top:45px;left:0px;z-index:202;background-color:#1a1a1a;border:1px solid #333333;-webkit-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);}.vco-timeline .vco-navigation .vco-toolbar .zoom-in,.vco-timeline .vco-navigation .vco-toolbar .zoom-out,.vco-timeline .vco-navigation .vco-toolbar .back-home{font-weight:normal;font-size:10px;line-height:20px;top:0px;z-index:202;width:18px;height:18px;color:#aaaaaa;text-align:center;font-weight:bold;border:1px solid #1a1a1a;padding:5px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .vco-toolbar .zoom-in .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-256px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar .zoom-out .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-280px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar .back-home .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-328px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar.touch{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-in,.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-out,.vco-timeline .vco-navigation .vco-toolbar.touch .back-home{width:40px;height:40px;padding:5px;background-color:#1a1a1a;border:1px solid #333333;-webkit-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-in .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-out .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-256px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .vco-toolbar.touch .back-home .icon{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-304px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .timenav-background{position:absolute;cursor:move;top:0px;left:0px;height:150px;width:100%;background-color:#262626;}.vco-timeline .vco-navigation .timenav-background .timenav-interval-background{position:absolute;top:151px;left:0px;background:#1a1a1a;width:100%;height:49px;-webkit-box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);-moz-box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);}.vco-timeline .vco-navigation .timenav-background .timenav-interval-background .top-highlight{position:absolute;top:-1px;left:0px;z-index:30;width:100%;height:1px;background:#1a1a1a;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;-webkit-box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);} +.vco-timeline .vco-navigation .timenav-background .timenav-line{position:absolute;top:0px;left:50%;width:3px;height:150px;background-color:#0bd4e3;z-index:1;-webkit-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);} +.vco-timeline .vco-navigation .timenav-background .timenav-indicator{position:absolute;top:-1px;left:50%;z-index:202;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-160px -48px;width:24px;height:24px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag div{height:50px;display:table;}.vco-timeline .vco-navigation .timenav-background .timenav-tag div h3{display:table-cell;vertical-align:middle;padding-left:65px;font-size:15px;color:#0c0c0c;font-weight:bold;text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-half{height:25px;}.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-half div{height:25px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-full{height:50px;}.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-full div{height:50px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-2,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-4,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-6{background:#2e2e2e;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-1,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-3,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-5{background:#262626;} +.vco-timeline .vco-navigation .timenav{position:absolute;top:0px;left:-250px;z-index:1;}.vco-timeline .vco-navigation .timenav .content{position:relative;}.vco-timeline .vco-navigation .timenav .content .marker.start{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker.active .dot{background:#0bd4e3;z-index:200;} +.vco-timeline .vco-navigation .timenav .content .marker.active .line{z-index:199;background:#0bd4e3;width:1px;}.vco-timeline .vco-navigation .timenav .content .marker.active .line .event-line{background:#0bd4e3;filter:alpha(opacity=75);-khtml-opacity:0.75;-moz-opacity:0.75;opacity:0.75;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small{z-index:200;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content{height:36px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content h3,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content h3{color:#0bd4e3;margin-top:5px;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content .thumbnail,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content .thumbnail{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row1,.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row2,.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row3,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row1,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row2,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row3{z-index:200;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content{height:14px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation .timenav .content .marker{position:absolute;top:0px;left:150px;display:block;}.vco-timeline .vco-navigation .timenav .content .marker .dot{position:absolute;top:150px;left:0px;display:block;width:6px;height:6px;background:#aaaaaa;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:21;} +.vco-timeline .vco-navigation .timenav .content .marker .line{position:absolute;top:0px;left:3px;width:1px;height:150px;background-color:#333333;background-color:rgba(51, 51, 51, 0.5);-webkit-box-shadow:1px 0 0 rgba(26, 26, 26, 0.5);-moz-box-shadow:1px 0 0 rgba(26, 26, 26, 0.5);box-shadow:1px 0 0 rgba(26, 26, 26, 0.5);z-index:22;}.vco-timeline .vco-navigation .timenav .content .marker .line .event-line{position:absolute;z-index:22;left:0px;height:1px;width:1px;background:#0bd4e3;filter:alpha(opacity=15);-khtml-opacity:0.15;-moz-opacity:0.15;opacity:0.15;} +.vco-timeline .vco-navigation .timenav .content .marker .flag,.vco-timeline .vco-navigation .timenav .content .marker .flag-small{position:absolute;top:15px;left:3px;padding:0px;display:block;z-index:23;width:153px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content{padding:0px 7px 2px 6px;overflow:hidden;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3{font-weight:bold;font-size:15px;line-height:20px;font-size:11px;line-height:11px;color:#999999;margin-bottom:2px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3 small,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3 small{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h4,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h4{display:none;font-weight:normal;font-size:15px;line-height:20px;margin-top:5px;font-size:10px;line-height:10px;color:#aaaaaa;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h4 small,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h4 small{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content .thumbnail,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail{margin-bottom:15px;margin-right:3px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content .thumbnail img,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail img{width:22px;height:22px;max-height:none;max-width:none;border:0;border:1px solid #999999;padding:0;margin:0;} +.vco-timeline .vco-navigation .timenav .content .marker .flag{height:56px;background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 0;width:153px;height:53px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content{height:36px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3{margin-top:5px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:0 -135px;width:153px;height:26px;}.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content{height:14px;}.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail{width:16px;height:10px;margin-right:1px;margin-top:6px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-plaintext{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-280px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-quote{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-232px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-document{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-256px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-photo{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-280px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-twitter{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-256px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-vimeo{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-328px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-vine{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-160px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-youtube{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-304px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-video{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-328px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-audio{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-304px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-map{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-website{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-232px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-link{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-232px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-wikipedia{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-184px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-storify{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-184px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-googleplus{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content thumbnail.thumb-instagram{background-image:url(themes/timeline-dark.png?v3.4);background-repeat:no-repeat;background-position:-208px -96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row1{z-index:25;top:48px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row2{z-index:24;top:96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row3{z-index:23;top:1px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row1{z-index:28;top:24px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row2{z-index:27;top:48px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row3{z-index:26;top:72px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row4{z-index:25;top:96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row5{z-index:24;top:120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row6{z-index:23;top:1px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.zFront,.vco-timeline .vco-navigation .timenav .content .marker .flag-small.zFront{z-index:201;} +.vco-timeline .vco-navigation .timenav .content .era{position:absolute;top:138px;left:150px;height:12px;display:block;overflow:hidden;}.vco-timeline .vco-navigation .timenav .content .era div{height:50px;width:100%;height:100%;line-height:0px;background:#262626;background:rgba(38, 38, 38, 0.33);}.vco-timeline .vco-navigation .timenav .content .era div h3,.vco-timeline .vco-navigation .timenav .content .era div h4{position:absolute;bottom:1px;padding-left:15px;font-size:15px;font-weight:bold;color:rgba(11, 212, 227, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era1 div{background:#e31a0b;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(227, 26, 11, 0.1);border-right:1px solid rgba(245, 58, 44, 0.05);}.vco-timeline .vco-navigation .timenav .content .era1 div h3,.vco-timeline .vco-navigation .timenav .content .era1 div h4{color:rgba(227, 26, 11, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era2 div{background:#e30b68;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(227, 11, 104, 0.1);border-right:1px solid rgba(245, 44, 131, 0.05);}.vco-timeline .vco-navigation .timenav .content .era2 div h3,.vco-timeline .vco-navigation .timenav .content .era2 div h4{color:rgba(227, 11, 104, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era3 div{background:#0b68e3;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(11, 104, 227, 0.1);border-right:1px solid rgba(44, 131, 245, 0.05);}.vco-timeline .vco-navigation .timenav .content .era3 div h3,.vco-timeline .vco-navigation .timenav .content .era3 div h4{color:rgba(11, 104, 227, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era4 div{background:#e3860b;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(227, 134, 11, 0.1);border-right:1px solid rgba(245, 158, 44, 0.05);}.vco-timeline .vco-navigation .timenav .content .era4 div h3,.vco-timeline .vco-navigation .timenav .content .era4 div h4{color:rgba(227, 134, 11, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era5 div{background:#0be386;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(11, 227, 134, 0.1);border-right:1px solid rgba(44, 245, 158, 0.05);}.vco-timeline .vco-navigation .timenav .content .era5 div h3,.vco-timeline .vco-navigation .timenav .content .era5 div h4{color:rgba(11, 227, 134, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .content .era6 div{background:#0bd4e3;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(11, 212, 227, 0.1);border-right:1px solid rgba(44, 231, 245, 0.05);}.vco-timeline .vco-navigation .timenav .content .era6 div h3,.vco-timeline .vco-navigation .timenav .content .era6 div h4{color:rgba(11, 212, 227, 0.35);text-shadow:0px 1px 1px #727272;} +.vco-timeline .vco-navigation .timenav .time{position:absolute;left:0px;top:150px;height:50px;background-color:#1a1a1a;line-height:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval-minor{max-width:none;height:6px;white-space:nowrap;position:absolute;top:-2px;left:8px;z-index:10;}.vco-timeline .vco-navigation .timenav .time .time-interval-minor .minor{position:relative;top:2px;display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC);width:100px;height:6px;background-position:center top;white-space:nowrap;color:#aaaaaa;margin-top:0px;padding-top:0px;} +.vco-timeline .vco-navigation .timenav .time .time-interval{white-space:nowrap;position:absolute;top:5px;left:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval div{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC);background-position:left top;background-repeat:no-repeat;padding-top:6px;position:absolute;height:3px;left:0px;display:block;font-weight:normal;font-size:10px;line-height:20px;text-transform:uppercase;text-align:left;text-indent:0px;white-space:nowrap;color:#aaaaaa;margin-left:0px;margin-right:0px;margin-top:0px;z-index:2;}.vco-timeline .vco-navigation .timenav .time .time-interval div strong{font-weight:bold;color:#ffffff;} +.vco-timeline .vco-navigation .timenav .time .time-interval div.era{font-weight:bold;padding-top:0px;margin-top:-3px;margin-left:2px;background-image:none;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era1{color:#e31a0b;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era2{color:#e30b68;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era3{color:#0b68e3;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era4{color:#e3860b;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era5{color:#0be386;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era6{color:#0bd4e3;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval-major{white-space:nowrap;position:absolute;top:5px;left:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval-major div{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQAQMAAADtUYf0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyOTAzRjI3REIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyOTAzRjI3RUIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI5MDNGMjdCQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI5MDNGMjdDQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DPWNfQAAAANQTFRFzMzMylJEJwAAAAtJREFUCB1jYMAPAAAgAAHDvpOtAAAAAElFTkSuQmCC);background-position:left top;background-repeat:no-repeat;padding-top:15px;position:absolute;height:15px;left:0px;display:block;font-weight:bold;font-size:12px;line-height:20px;text-transform:uppercase;text-align:left;text-indent:0px;white-space:nowrap;color:#aaaaaa;margin-left:0px;margin-right:0px;margin-top:1px;z-index:5;}.vco-timeline .vco-navigation .timenav .time .time-interval-major div strong{font-weight:bold;color:#ffffff;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-notouch .vco-navigation .vco-toolbar .zoom-in .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-256px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar .zoom-out .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-280px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar .back-home .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-328px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar.touch .zoom-in .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-208px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .vco-toolbar.touch .zoom-out .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-256px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .vco-toolbar.touch .back-home .icon{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-304px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .timenav .content .marker .flag:hover{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} .vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} .vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;} .vco-notouch .vco-navigation .timenav-background .timenav-indicator{background-image:url(themes/timeline-dark@2x.png?v4.3);background-repeat:no-repeat;background-position:-160px -48px;width:24px;height:24px;}} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/AbrilFatface-Average.css b/ajax/libs/timelinejs/2.24/css/themes/font/AbrilFatface-Average.css new file mode 100755 index 000000000..8e53f97f5 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/AbrilFatface-Average.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Average',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Average',serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Average',serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Average',serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Average',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Abril Fatface',cursive;} +.timeline-tooltip{font-family:'Average',serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Arvo-PTSans.css b/ajax/libs/timelinejs/2.24/css/themes/font/Arvo-PTSans.css new file mode 100755 index 000000000..6ad3b5e59 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Arvo-PTSans.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Arvo',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Arvo',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Arvo',serif;} +.timeline-tooltip{font-family:'PT Sans',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Bevan-PotanoSans.css b/ajax/libs/timelinejs/2.24/css/themes/font/Bevan-PotanoSans.css new file mode 100755 index 000000000..c2ec62135 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Bevan-PotanoSans.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Pontano Sans',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Pontano Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Pontano Sans',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Pontano Sans',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Pontano Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Bevan',serif;} +.timeline-tooltip{font-family:'Pontano Sans',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/BreeSerif-OpenSans.css b/ajax/libs/timelinejs/2.24/css/themes/font/BreeSerif-OpenSans.css new file mode 100755 index 000000000..04d88e3e5 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/BreeSerif-OpenSans.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Bree Serif',Georgia,serif;} +.timeline-tooltip{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/DroidSerif-DroidSans.css b/ajax/libs/timelinejs/2.24/css/themes/font/DroidSerif-DroidSans.css new file mode 100755 index 000000000..3db261563 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/DroidSerif-DroidSans.css @@ -0,0 +1,7 @@ +.vco-storyjs{font-family:'Droid Serif',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Droid Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Droid Sans',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Droid Sans',sans-serif !important;} +.vco-storyjs p{font-family:'Droid Sans',sans-serif !important;} +.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Droid Serif',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Droid Serif',serif;font-weight:700;} +.timeline-tooltip{font-family:'Droid Sans',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Georgia-Helvetica.css b/ajax/libs/timelinejs/2.24/css/themes/font/Georgia-Helvetica.css new file mode 100755 index 000000000..386a2590b --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Georgia-Helvetica.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:"Georgia",Times New Roman,Times,serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs h1.date,.vco-storyjs h2.date,.vco-storyjs h3.date,.vco-storyjs h4.date,.vco-storyjs h5.date,.vco-storyjs h6.date{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:"Georgia",Times New Roman,Times,serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:"Georgia",Times New Roman,Times,serif;} +.timeline-tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Lekton-Molengo.css b/ajax/libs/timelinejs/2.24/css/themes/font/Lekton-Molengo.css new file mode 100755 index 000000000..da051f617 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Lekton-Molengo.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Lekton',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Lekton',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Lekton',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Lekton',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Lekton',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Molengo',sans-serif;} +.timeline-tooltip{font-family:'Lekton',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Lora-Istok.css b/ajax/libs/timelinejs/2.24/css/themes/font/Lora-Istok.css new file mode 100755 index 000000000..f9feeaf41 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Lora-Istok.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Lora',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Istok Web',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Istok Web',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Istok Web',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Istok Web',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Lora',serif;font-weight:700;} +.timeline-tooltip{font-family:'Istok Web',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Merriweather-NewsCycle.css b/ajax/libs/timelinejs/2.24/css/themes/font/Merriweather-NewsCycle.css new file mode 100755 index 000000000..350045735 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Merriweather-NewsCycle.css @@ -0,0 +1,8 @@ +.vco-storyjs{font-family:'Merriweather',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs p{font-size:16px;line-height:22px;} +.vco-storyjs .wikipedia p{font-size:14px !important;line-height:20px !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Merriweather',serif;font-weight:900;} +.timeline-tooltip{font-family:'News Cycle',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/NewsCycle-Merriweather.css b/ajax/libs/timelinejs/2.24/css/themes/font/NewsCycle-Merriweather.css new file mode 100755 index 000000000..59e8e7f2a --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/NewsCycle-Merriweather.css @@ -0,0 +1,8 @@ +.vco-storyjs{font-family:'News Cycle',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'News Cycle',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Merriweather',serif !important;} +.vco-storyjs p{font-size:16px;line-height:22px;} +.vco-storyjs .wikipedia p{font-size:14px !important;line-height:20px !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'News Cycle',sans-serif;font-weight:900;} +.timeline-tooltip{font-family:'News Cycle',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/NixieOne-Ledger.css b/ajax/libs/timelinejs/2.24/css/themes/font/NixieOne-Ledger.css new file mode 100755 index 000000000..6fd7bb124 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/NixieOne-Ledger.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Ledger',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Ledger',serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Ledger',serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Ledger',serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Ledger',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Nixie One',cursive;} +.timeline-tooltip{font-family:'Ledger',serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/PT.css b/ajax/libs/timelinejs/2.24/css/themes/font/PT.css new file mode 100755 index 000000000..0ca81f83c --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/PT.css @@ -0,0 +1,7 @@ +.vco-storyjs{font-family:'PT Serif',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'PT Serif',serif !important;} +.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-style:italic;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'PT Sans Narrow',sans-serif;font-weight:700;} +.timeline-tooltip{font-family:'PT Sans',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/PTSerif-PTSans.css b/ajax/libs/timelinejs/2.24/css/themes/font/PTSerif-PTSans.css new file mode 100755 index 000000000..80a511234 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/PTSerif-PTSans.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'PT Serif',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'PT Sans',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'PT Serif',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'PT Sans',sans-serif;font-weight:700;} +.timeline-tooltip{font-family:'PT Sans',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Pacifico-Arimo.css b/ajax/libs/timelinejs/2.24/css/themes/font/Pacifico-Arimo.css new file mode 100755 index 000000000..82fcc4889 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Pacifico-Arimo.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Arimo',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Arimo',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Arimo',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Arimo',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Arimo',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Pacifico',cursive;} +.timeline-tooltip{font-family:'Arimo',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/PlayfairDisplay-Muli.css b/ajax/libs/timelinejs/2.24/css/themes/font/PlayfairDisplay-Muli.css new file mode 100755 index 000000000..6c72bac88 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/PlayfairDisplay-Muli.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Muli',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Muli',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Muli',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Muli',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Muli',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Playfair Display',serif;} +.timeline-tooltip{font-family:'Muli',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/PoiretOne-Molengo.css b/ajax/libs/timelinejs/2.24/css/themes/font/PoiretOne-Molengo.css new file mode 100755 index 000000000..2ed7c3b6f --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/PoiretOne-Molengo.css @@ -0,0 +1,8 @@ +.vco-storyjs{font-family:'Poiret One',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Molengo',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Molengo',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Molengo',sans-serif !important;} +.vco-storyjs p{font-family:'Molengo',sans-serif !important;font-size:16px !important;line-height:22px !important;} +.vco-storyjs .wikipedia p{font-size:14px !important;line-height:20px !important;} +.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Poiret One',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Poiret One',serif;} +.timeline-tooltip{font-family:'Molengo',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/Rancho-Gudea.css b/ajax/libs/timelinejs/2.24/css/themes/font/Rancho-Gudea.css new file mode 100755 index 000000000..b120c19f5 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/Rancho-Gudea.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Gudea',sans-serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Gudea',sans-serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Gudea',sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Gudea',sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Gudea',sans-serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Rancho',cursive;} +.timeline-tooltip{font-family:'Gudea',sans-serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/font/SansitaOne-Kameron.css b/ajax/libs/timelinejs/2.24/css/themes/font/SansitaOne-Kameron.css new file mode 100755 index 000000000..a2857c71c --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/themes/font/SansitaOne-Kameron.css @@ -0,0 +1,6 @@ +.vco-storyjs{font-family:'Kameron',serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:'Kameron',serif !important;} +.vco-storyjs .vco-feature h1.date,.vco-storyjs .vco-feature h2.date,.vco-storyjs .vco-feature h3.date,.vco-storyjs .vco-feature h4.date,.vco-storyjs .vco-feature h5.date,.vco-storyjs .vco-feature h6.date{font-family:'Kameron',serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:'Kameron',serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:'Kameron',serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:'Sansita One',cursive;} +.timeline-tooltip{font-family:'Kameron',serif;} diff --git a/ajax/libs/timelinejs/2.24/css/themes/timeline-dark.png b/ajax/libs/timelinejs/2.24/css/themes/timeline-dark.png new file mode 100755 index 0000000000000000000000000000000000000000..92f09279a451a54990582dad8f7c4c6efdc8917b GIT binary patch literal 20265 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 B+SC95 literal 0 HcmV?d00001 diff --git a/ajax/libs/timelinejs/2.24/css/themes/timeline-dark@2x.png b/ajax/libs/timelinejs/2.24/css/themes/timeline-dark@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..c2b30a8db9bdcf463fbc455a43ec9893787b7c59 GIT binary patch literal 49145 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Ð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 z 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 aa7NwUxm7pKvph)!eGGNYZoJXP#rz-oWrJ7% literal 0 HcmV?d00001 diff --git a/ajax/libs/timelinejs/2.24/css/timeline.css b/ajax/libs/timelinejs/2.24/css/timeline.css new file mode 100755 index 000000000..88e46824b --- /dev/null +++ b/ajax/libs/timelinejs/2.24/css/timeline.css @@ -0,0 +1,284 @@ +.vco-storyjs{}.vco-storyjs div *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6,.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs pre,.vco-storyjs a,.vco-storyjs abbr,.vco-storyjs acronym,.vco-storyjs address,.vco-storyjs cite,.vco-storyjs code,.vco-storyjs del,.vco-storyjs dfn,.vco-storyjs em,.vco-storyjs img,.vco-storyjs q,.vco-storyjs s,.vco-storyjs samp,.vco-storyjs small,.vco-storyjs strike,.vco-storyjs strong,.vco-storyjs sub,.vco-storyjs sup,.vco-storyjs tt,.vco-storyjs var,.vco-storyjs dd,.vco-storyjs dl,.vco-storyjs dt,.vco-storyjs li,.vco-storyjs ol,.vco-storyjs ul,.vco-storyjs fieldset,.vco-storyjs form,.vco-storyjs label,.vco-storyjs legend,.vco-storyjs button,.vco-storyjs table,.vco-storyjs caption,.vco-storyjs tbody,.vco-storyjs tfoot,.vco-storyjs thead,.vco-storyjs tr,.vco-storyjs th,.vco-storyjs td,.vco-storyjs .vco-container,.vco-storyjs .content-container,.vco-storyjs .media,.vco-storyjs .text,.vco-storyjs .vco-slider,.vco-storyjs .slider,.vco-storyjs .date,.vco-storyjs .title,.vco-storyjs .messege,.vco-storyjs .map,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .vco-feedback,.vco-storyjs .vco-feature,.vco-storyjs .toolbar,.vco-storyjs .marker,.vco-storyjs .dot,.vco-storyjs .line,.vco-storyjs .flag,.vco-storyjs .time,.vco-storyjs .era,.vco-storyjs .major,.vco-storyjs .minor,.vco-storyjs .vco-navigation,.vco-storyjs .start,.vco-storyjs .active{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;width:auto;float:none;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{clear:none;} +.vco-storyjs table{border-collapse:collapse;border-spacing:0;} +.vco-storyjs ol,.vco-storyjs ul{list-style:none;} +.vco-storyjs q:before,.vco-storyjs q:after,.vco-storyjs blockquote:before,.vco-storyjs blockquote:after{content:"";} +.vco-storyjs a:focus{outline:thin dotted;} +.vco-storyjs a:hover,.vco-storyjs a:active{outline:0;} +.vco-storyjs article,.vco-storyjs aside,.vco-storyjs details,.vco-storyjs figcaption,.vco-storyjs figure,.vco-storyjs footer,.vco-storyjs header,.vco-storyjs hgroup,.vco-storyjs nav,.vco-storyjs section{display:block;} +.vco-storyjs audio,.vco-storyjs canvas,.vco-storyjs video{display:inline-block;*display:inline;*zoom:1;} +.vco-storyjs audio:not([controls]){display:none;} +.vco-storyjs div{max-width:none;} +.vco-storyjs sub,.vco-storyjs sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} +.vco-storyjs sup{top:-0.5em;} +.vco-storyjs sub{bottom:-0.25em;} +.vco-storyjs img{border:0;-ms-interpolation-mode:bicubic;} +.vco-storyjs button,.vco-storyjs input,.vco-storyjs select,.vco-storyjs textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;} +.vco-storyjs button,.vco-storyjs input{line-height:normal;*overflow:visible;} +.vco-storyjs button::-moz-focus-inner,.vco-storyjs input::-moz-focus-inner{border:0;padding:0;} +.vco-storyjs button,.vco-storyjs input[type="button"],.vco-storyjs input[type="reset"],.vco-storyjs input[type="submit"]{cursor:pointer;-webkit-appearance:button;} +.vco-storyjs input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} +.vco-storyjs input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} +.vco-storyjs textarea{overflow:auto;vertical-align:top;} +.vco-storyjs{font-family:"Georgia",Times New Roman,Times,serif;}.vco-storyjs .twitter,.vco-storyjs .vcard,.vco-storyjs .messege,.vco-storyjs .credit,.vco-storyjs .caption,.vco-storyjs .zoom-in,.vco-storyjs .zoom-out,.vco-storyjs .back-home,.vco-storyjs .time-interval div,.vco-storyjs .time-interval-major div,.vco-storyjs .nav-container{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs h1.date,.vco-storyjs h2.date,.vco-storyjs h3.date,.vco-storyjs h4.date,.vco-storyjs h5.date,.vco-storyjs h6.date{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs .timenav h1,.vco-storyjs .flag-content h1,.vco-storyjs .era h1,.vco-storyjs .timenav h2,.vco-storyjs .flag-content h2,.vco-storyjs .era h2,.vco-storyjs .timenav h3,.vco-storyjs .flag-content h3,.vco-storyjs .era h3,.vco-storyjs .timenav h4,.vco-storyjs .flag-content h4,.vco-storyjs .era h4,.vco-storyjs .timenav h5,.vco-storyjs .flag-content h5,.vco-storyjs .era h5,.vco-storyjs .timenav h6,.vco-storyjs .flag-content h6,.vco-storyjs .era h6{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif !important;} +.vco-storyjs p,.vco-storyjs blockquote,.vco-storyjs blockquote p,.vco-storyjs .twitter blockquote p{font-family:"Georgia",Times New Roman,Times,serif !important;} +.vco-storyjs .vco-feature h1,.vco-storyjs .vco-feature h2,.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{font-family:"Georgia",Times New Roman,Times,serif;} +.timeline-tooltip{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;} +.thumbnail{background-image:url(timeline.png?v4.4);} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.thumbnail{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;}}.vco-storyjs{font-size:15px;font-weight:normal;line-height:20px;-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;}.vco-storyjs p{font-size:15px;font-weight:normal;line-height:20px;margin-bottom:20px;color:#666666;}.vco-storyjs p small{font-size:12px;line-height:17px;} +.vco-storyjs p:first-child{margin-top:20px;} +.vco-storyjs .vco-navigation p{color:#999999;} +.vco-storyjs .vco-feature h3,.vco-storyjs .vco-feature h4,.vco-storyjs .vco-feature h5,.vco-storyjs .vco-feature h6{margin-bottom:15px;} +.vco-storyjs .vco-feature p{color:#666666;} +.vco-storyjs .vco-feature blockquote,.vco-storyjs .vco-feature blockquote p{color:#000000;} +.vco-storyjs .date a,.vco-storyjs .title a{color:#999999;} +.vco-storyjs .hyphenate{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-storyjs h1,.vco-storyjs h2,.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{font-weight:normal;color:#000000;text-transform:none;}.vco-storyjs h1 a,.vco-storyjs h2 a,.vco-storyjs h3 a,.vco-storyjs h4 a,.vco-storyjs h5 a,.vco-storyjs h6 a{color:#999999;} +.vco-storyjs h1 small,.vco-storyjs h2 small,.vco-storyjs h3 small,.vco-storyjs h4 small,.vco-storyjs h5 small,.vco-storyjs h6 small{color:#999999;} +.vco-storyjs h1.date,.vco-storyjs h2.date,.vco-storyjs h3.date,.vco-storyjs h4.date,.vco-storyjs h5.date,.vco-storyjs h6.date{font-weight:bold;} +.vco-storyjs h2.start{font-size:36px;line-height:38px;margin-bottom:15px;} +.vco-storyjs h1{margin-bottom:15px;font-size:32px;line-height:34px;}.vco-storyjs h1 small{font-size:18px;} +.vco-storyjs h2{margin-bottom:15px;font-size:28px;line-height:30px;}.vco-storyjs h2 small{font-size:14px;line-height:16px;} +.vco-storyjs h2.date{font-size:16px;line-height:18px;margin-bottom:3.75px;color:#999999;} +.vco-storyjs h3,.vco-storyjs h4,.vco-storyjs h5,.vco-storyjs h6{line-height:40px;}.vco-storyjs h3 .active,.vco-storyjs h4 .active,.vco-storyjs h5 .active,.vco-storyjs h6 .active{color:#0088cc;} +.vco-storyjs h3{font-size:28px;line-height:30px;}.vco-storyjs h3 small{font-size:14px;} +.vco-storyjs h4{font-size:20px;line-height:22px;}.vco-storyjs h4 small{font-size:12px;} +.vco-storyjs h5{font-size:16px;line-height:18px;} +.vco-storyjs h6{font-size:13px;line-height:14px;text-transform:uppercase;} +.vco-storyjs strong{font-weight:bold;font-style:inherit;} +.vco-storyjs em{font-style:italic;font-weight:inherit;} +.vco-storyjs Q{quotes:'„' '“';font-style:italic;} +.vco-storyjs blockquote,.vco-storyjs blockquote p{font-size:24px;line-height:32px;text-align:left;margin-bottom:6px;padding-top:10px;background-color:#ffffff;color:#000000;} +.vco-storyjs .credit{color:#999999;text-align:right;font-size:10px;line-height:10px;display:block;margin:0 auto;clear:both;} +.vco-storyjs .caption{text-align:left;margin-top:5px;color:#666666;font-size:11px;line-height:14px;clear:both;} +.vco-storyjs.vco-right-to-left h1,.vco-storyjs.vco-right-to-left h2,.vco-storyjs.vco-right-to-left h3,.vco-storyjs.vco-right-to-left h4,.vco-storyjs.vco-right-to-left h5,.vco-storyjs.vco-right-to-left h6,.vco-storyjs.vco-right-to-left p,.vco-storyjs.vco-right-to-left blockquote,.vco-storyjs.vco-right-to-left pre,.vco-storyjs.vco-right-to-left a,.vco-storyjs.vco-right-to-left abbr,.vco-storyjs.vco-right-to-left acronym,.vco-storyjs.vco-right-to-left address,.vco-storyjs.vco-right-to-left cite,.vco-storyjs.vco-right-to-left code,.vco-storyjs.vco-right-to-left del,.vco-storyjs.vco-right-to-left dfn,.vco-storyjs.vco-right-to-left em,.vco-storyjs.vco-right-to-left img,.vco-storyjs.vco-right-to-left q,.vco-storyjs.vco-right-to-left s,.vco-storyjs.vco-right-to-left samp,.vco-storyjs.vco-right-to-left small,.vco-storyjs.vco-right-to-left strike,.vco-storyjs.vco-right-to-left strong,.vco-storyjs.vco-right-to-left sub,.vco-storyjs.vco-right-to-left sup,.vco-storyjs.vco-right-to-left tt,.vco-storyjs.vco-right-to-left var,.vco-storyjs.vco-right-to-left dd,.vco-storyjs.vco-right-to-left dl,.vco-storyjs.vco-right-to-left dt,.vco-storyjs.vco-right-to-left li,.vco-storyjs.vco-right-to-left ol,.vco-storyjs.vco-right-to-left ul,.vco-storyjs.vco-right-to-left fieldset,.vco-storyjs.vco-right-to-left form,.vco-storyjs.vco-right-to-left label,.vco-storyjs.vco-right-to-left legend,.vco-storyjs.vco-right-to-left button,.vco-storyjs.vco-right-to-left table,.vco-storyjs.vco-right-to-left caption,.vco-storyjs.vco-right-to-left tbody,.vco-storyjs.vco-right-to-left tfoot,.vco-storyjs.vco-right-to-left thead,.vco-storyjs.vco-right-to-left tr,.vco-storyjs.vco-right-to-left th,.vco-storyjs.vco-right-to-left td{direction:rtl;} +.timeline-tooltip{position:absolute;z-index:205;display:block;visibility:visible;padding:5px;opacity:0;filter:alpha(opacity=0);font-size:15px;font-weight:bold;line-height:20px;font-size:12px;line-height:12px;} +.timeline-tooltip.in{opacity:0.8;filter:alpha(opacity=80);} +.timeline-tooltip.top{margin-top:-2px;} +.timeline-tooltip.right{margin-left:2px;} +.timeline-tooltip.bottom{margin-top:2px;} +.timeline-tooltip.left{margin-left:-2px;} +.timeline-tooltip.top .timeline-tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} +.timeline-tooltip.left .timeline-tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} +.timeline-tooltip.bottom .timeline-tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} +.timeline-tooltip.right .timeline-tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} +.timeline-tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} +.timeline-tooltip-arrow{position:absolute;width:0;height:0;} +@media only screen and (max-width:480px),only screen and (max-device-width:480px){.vco-slider .nav-next,.vco-slider .nav-previous{display:none;}}@media (max-width:640px){}.vco-skinny .vco-slider .slider-item .content .layout-text-media .text .container{text-align:center !important;} +.vco-skinny .vco-slider .slider-item .content .layout-text-media h2,.vco-skinny .vco-slider .slider-item .content .layout-text-media h3{display:block !important;width:100% !important;text-align:center !important;} +.vco-skinny .vco-slider .slider-item .content .content-container{display:block;}.vco-skinny .vco-slider .slider-item .content .content-container .text{width:100%;max-width:100%;min-width:120px;display:block;}.vco-skinny .vco-slider .slider-item .content .content-container .text .container{display:block;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-skinny .vco-slider .slider-item .content .content-container .media{width:100%;min-width:50%;float:none;}.vco-skinny .vco-slider .slider-item .content .content-container .media .media-wrapper{margin-left:0px;margin-right:0px;width:100%;display:block;} +.vco-skinny.vco-notouch .vco-slider .nav-previous,.vco-skinny.vco-notouch .vco-slider .nav-next{z-index:203;}.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .title{filter:alpha(opacity=1);-khtml-opacity:0.01;-moz-opacity:0.01;opacity:0.01;} +.vco-skinny.vco-notouch .vco-slider .nav-previous .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-next .nav-container .icon{filter:alpha(opacity=15);-khtml-opacity:0.15;-moz-opacity:0.15;opacity:0.15;} +.vco-skinny.vco-notouch .vco-slider .nav-previous .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px 0;width:24px;height:24px;overflow:hidden;margin-left:10px;} +.vco-skinny.vco-notouch .vco-slider .nav-next .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-232px 0;width:24px;height:24px;overflow:hidden;margin-left:66px;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover,.vco-skinny.vco-notouch .vco-slider .nav-next:hover{color:#aaaaaa !important;background-color:#333333;background-color:rgba(0, 0, 0, 0.65);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;}.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .icon,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;font-weight:bold;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{padding-bottom:5px;} +.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .date,.vco-skinny.vco-notouch .vco-slider .nav-previous:hover .nav-container .title,.vco-skinny.vco-notouch .vco-slider .nav-next:hover .nav-container .title{padding-left:5px;padding-right:5px;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-skinny.vco-notouch .vco-slider .nav-previous .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-208px 0;width:24px;height:24px;overflow:hidden;} .vco-skinny.vco-notouch .vco-slider .nav-next .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-232px 0;width:24px;height:24px;overflow:hidden;}}.vco-slider{width:100%;height:100%;overflow:hidden;}.vco-slider .slider-container-mask{text-align:center;width:100%;height:100%;overflow:hidden;}.vco-slider .slider-container-mask .slider-container{position:absolute;top:0px;left:-2160px;width:100%;height:100%;text-align:center;display:block;}.vco-slider .slider-container-mask .slider-container .slider-item-container{display:table-cell;vertical-align:middle;} +.vco-notouch .vco-slider .nav-previous:hover,.vco-notouch .vco-slider .nav-next:hover{color:#333333;cursor:pointer;} +.vco-notouch .vco-slider .nav-previous:hover .icon{margin-left:10px;} +.vco-notouch .vco-slider .nav-next:hover .icon{margin-left:66px;} +.vco-notouch .vco-slider .slider-item .content .content-container .media .media-container .wikipedia h4 a:hover{color:#0088cc;text-decoration:none;} +.vco-notouch .vco-slider .slider-item .content .content-container .created-at:hover{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments a:hover{text-decoration:none;}.vco-notouch .vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments a:hover h5{text-decoration:underline;} +.vco-slider img,.vco-slider embed,.vco-slider object,.vco-slider video,.vco-slider iframe{max-width:100%;} +.vco-slider .nav-previous,.vco-slider .nav-next{position:absolute;top:0px;width:100px;color:#DBDBDB;font-size:11px;}.vco-slider .nav-previous .nav-container,.vco-slider .nav-next .nav-container{height:100px;width:100px;position:absolute;} +.vco-slider .nav-previous .icon,.vco-slider .nav-next .icon{margin-top:12px;margin-bottom:15px;} +.vco-slider .nav-previous .date,.vco-slider .nav-next .date,.vco-slider .nav-previous .title,.vco-slider .nav-next .title{line-height:14px;}.vco-slider .nav-previous .date a,.vco-slider .nav-next .date a,.vco-slider .nav-previous .title a,.vco-slider .nav-next .title a{color:#999999;} +.vco-slider .nav-previous .date small,.vco-slider .nav-next .date small,.vco-slider .nav-previous .title small,.vco-slider .nav-next .title small{display:none;} +.vco-slider .nav-previous .date,.vco-slider .nav-next .date{font-size:13px;line-height:13px;font-weight:bold;text-transform:uppercase;margin-bottom:5px;} +.vco-slider .nav-previous .title,.vco-slider .nav-next .title{font-size:11px;line-height:13px;} +.vco-slider .nav-previous{float:left;text-align:left;}.vco-slider .nav-previous .icon{margin-left:15px;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-160px 0;width:24px;height:24px;overflow:hidden;} +.vco-slider .nav-previous .date,.vco-slider .nav-previous .title{text-align:left;padding-left:15px;} +.vco-slider .nav-next{float:right;text-align:right;}.vco-slider .nav-next .icon{margin-left:61px;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-184px 0;width:24px;height:24px;overflow:hidden;} +.vco-slider .nav-next .date,.vco-slider .nav-next .title{text-align:right;padding-right:15px;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-slider .nav-previous .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-160px 0;width:24px;height:24px;overflow:hidden;} .vco-slider .nav-next .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-184px 0;width:24px;height:24px;overflow:hidden;}}.vco-slider .slider-item{position:absolute;width:700px;height:100%;padding:0px;margin:0px;display:table;overflow-y:auto;}.vco-slider .slider-item .content{display:table-cell;vertical-align:middle;}.vco-slider .slider-item .content .pad-top .text .container{padding-top:15px;} +.vco-slider .slider-item .content .pad-right .text .container{padding-right:15px;} +.vco-slider .slider-item .content .pad-left .text .container{padding-left:30px;} +.vco-slider .slider-item .content .pad-left .media.text-media .media-wrapper .media-container{border:none;background-color:#ffffff;} +.vco-slider .slider-item .content .content-container{display:table;vertical-align:middle;}.vco-slider .slider-item .content .content-container .text{width:40%;max-width:50%;min-width:120px;display:table-cell;vertical-align:middle;}.vco-slider .slider-item .content .content-container .text .container{display:table-cell;vertical-align:middle;text-align:left;}.vco-slider .slider-item .content .content-container .text .container p{-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto;word-wrap:break-word;} +.vco-slider .slider-item .content .content-container .text .container h2.date{font-size:15px;line-height:15px;font-weight:normal;} +.vco-slider .slider-item .content .content-container .text .container .slide-tag{font-size:11px;font-weight:bold;color:#ffffff;background-color:#cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;vertical-align:baseline;white-space:nowrap;line-height:11px;padding:1px 3px 1px;margin-left:7.5px;margin-bottom:7.5px;} +.vco-slider .slider-item .content .content-container .media{width:100%;min-width:50%;float:left;}.vco-slider .slider-item .content .content-container .media .media-wrapper{display:inline-block;margin-left:auto;margin-right:auto;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container{display:inline-block;line-height:0px;padding:0px;max-height:100%;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-frame,.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-image img{border:1px solid;border-color:#cccccc #999999 #999999 #cccccc;background-color:#ffffff;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-frame iframe{background-color:#ffffff;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .soundcloud{border:0;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-image{display:inline-block;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow{position:relative;z-index:1;background:#ffffff;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow:before,.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow:after{z-index:-1;position:absolute;content:"";bottom:15px;left:10px;width:50%;top:80%;max-width:300px;background:#999999;-webkit-box-shadow:0 15px 10px #999999;-moz-box-shadow:0 15px 10px #999999;box-shadow:0 15px 10px #999999;-webkit-transform:rotate(-2deg);-moz-transform:rotate(-2deg);-ms-transform:rotate(-2deg);-o-transform:rotate(-2deg);transform:rotate(-2deg);} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .media-shadow::after{-webkit-transform:rotate(2deg);-moz-transform:rotate(2deg);-ms-transform:rotate(2deg);-o-transform:rotate(2deg);transform:rotate(2deg);right:10px;left:auto;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text{display:table;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text .container{display:table-cell;vertical-align:middle;font-size:15px;line-height:20px;color:#666666;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .plain-text .container p{margin-bottom:20px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia{font-size:15px;line-height:20px;text-align:left;margin-left:auto;margin-right:auto;margin-bottom:15px;clear:both;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia .wiki-source{margin-bottom:15px;font-size:13px;line-height:19px;font-style:italic;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia h4{border-bottom:1px solid #cccccc;margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia h4 a{color:#000000;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .wikipedia p{font-size:13px;line-height:19px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map{line-height:normal;z-index:200;text-align:left;background-color:#ffffff;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map img{max-height:none !important;max-width:none !important;border:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .google-map{height:100%;width:100%;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution{position:absolute;z-index:201;bottom:0px;width:100%;overflow:hidden;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution .attribution-text{height:19px;overflow:hidden;-webkit-user-select:none;line-height:19px;margin-right:60px;padding-left:65px;font-family:Arial,sans-serif;font-size:10px;color:#444;white-space:nowrap;color:#ffffff;text-shadow:1px 1px 1px #333333;text-align:center;}.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .map .map-attribution .attribution-text a{color:#ffffff !important;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .credit{color:#999999;text-align:right;display:block;margin:0 auto;margin-top:6px;font-size:10px;line-height:13px;} +.vco-slider .slider-item .content .content-container .media .media-wrapper .media-container .caption{text-align:left;margin-top:10px;color:#666666;font-size:11px;line-height:14px;text-rendering:optimizeLegibility;word-wrap:break-word;} +.vco-slider .slider-item .content .content-container .media.text-media .media-wrapper .media-container{border:none;background-color:#ffffff;} +.vco-slider .slider-item .content .content-container .created-at{width:24px;height:24px;overflow:hidden;margin-left:7.5px;margin-top:2px;display:inline-block;float:right;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;} +.vco-slider .slider-item .content .content-container .storify .created-at{background-repeat:no-repeat;background-position:-328px -96px;} +.vco-slider .slider-item .content .content-container .twitter .created-at{background-repeat:no-repeat;background-position:-256px -24px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content{font-size:13px;line-height:19px;margin-bottom:6px;padding-top:10px;background-color:#ffffff;color:#666666;}.vco-slider .slider-item .content .content-container .googleplus .googleplus-content p{font-size:13px;line-height:19px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-title{font-size:24px;line-height:32px;margin-bottom:6px;padding-top:10px;background-color:#ffffff;color:#000000;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-annotation{font-size:15px;line-height:20px;color:#000000;border-bottom:1px solid #e3e3e3;padding-bottom:7.5px;margin-bottom:7.5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments{border-top:1px solid #e3e3e3;padding-top:15px;margin-top:15px;border-bottom:1px solid #e3e3e3;padding-bottom:15px;margin-bottom:15px;*zoom:1;}.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:before,.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:after{display:table;content:"";} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments:after{clear:both;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments h5{margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments div{width:50%;padding-left:15px;display:inline-block;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments p{font-size:11px;line-height:14px;margin-bottom:5px;} +.vco-slider .slider-item .content .content-container .googleplus .googleplus-content .googleplus-attachments img{float:left;display:block;bottom:0;left:0;margin:auto;position:relative;right:0;top:0;width:40%;} +.vco-slider .slider-item .content .content-container .googleplus .proflinkPrefix{color:#0088cc;} +.vco-slider .slider-item .content .content-container .googleplus .created-at{background-repeat:no-repeat;background-position:-208px -72px;} +.vco-slider .slider-item .content .content-container .twitter,.vco-slider .slider-item .content .content-container .plain-text-quote,.vco-slider .slider-item .content .content-container .storify,.vco-slider .slider-item .content .content-container .googleplus{text-align:left;margin-left:auto;margin-right:auto;margin-bottom:15px;clear:both;}.vco-slider .slider-item .content .content-container .twitter blockquote,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote,.vco-slider .slider-item .content .content-container .storify blockquote,.vco-slider .slider-item .content .content-container .googleplus blockquote{color:#666666;}.vco-slider .slider-item .content .content-container .twitter blockquote p,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote p,.vco-slider .slider-item .content .content-container .storify blockquote p,.vco-slider .slider-item .content .content-container .googleplus blockquote p{font-size:24px;line-height:32px;margin-bottom:6px;padding-top:10px;background-color:#ffffff;color:#000000;} +.vco-slider .slider-item .content .content-container .twitter blockquote .quote-mark,.vco-slider .slider-item .content .content-container .plain-text-quote blockquote .quote-mark,.vco-slider .slider-item .content .content-container .storify blockquote .quote-mark,.vco-slider .slider-item .content .content-container .googleplus blockquote .quote-mark{color:#666666;} +.vco-slider .slider-item .content .content-container .twitter blockquote{font-size:15px;}.vco-slider .slider-item .content .content-container .twitter blockquote p{font-size:24px;} +.vco-slider .slider-item .content .content-container.layout-text-media .text-media{border-top:1px solid #e3e3e3;padding-top:15px;padding-right:0;} +.vco-slider .slider-item .content .content-container.layout-text-media.pad-left .text-media{padding-right:15px;padding-top:0;border-right:1px solid #e3e3e3;border-top:0px solid #e3e3e3;} +.vco-slider .slider-item .content .content-container.layout-text{width:100%;}.vco-slider .slider-item .content .content-container.layout-text .text{width:100%;max-width:100%;}.vco-slider .slider-item .content .content-container.layout-text .text .container{display:block;vertical-align:middle;padding:0px;width:90%;text-align:left;margin-left:auto;margin-right:auto;} +.vco-slider .slider-item .content .content-container.layout-media{width:100%;}.vco-slider .slider-item .content .content-container.layout-media .text{width:100%;height:100%;max-width:100%;display:block;text-align:center;}.vco-slider .slider-item .content .content-container.layout-media .text .container{display:block;text-align:center;width:100%;margin-left:none;margin-right:none;} +.vco-slider .slider-item .content .content-container.layout-media .media{width:100%;min-width:50%;float:none;}.vco-slider .slider-item .content .content-container.layout-media .media .media-wrapper .media-container{margin-left:auto;margin-right:auto;line-height:0px;padding:0px;} +.vco-slider .slider-item .content .content-container.layout-media .twitter,.vco-slider .slider-item .content .content-container.layout-media .wikipedia,.vco-slider .slider-item .content .content-container.layout-media .googleplus{max-width:70%;} +.storyjs-embed{background-color:#ffffff;margin-bottom:20px;border:1px solid #cccccc;padding-top:20px;padding-bottom:20px;clear:both;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;-webkit-box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);-moz-box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);box-shadow:1px 1px 3px rgba(0, 0, 0, 0.35);} +.storyjs-embed.full-embed{overflow:hidden;border:0 !important;padding:0 !important;margin:0 !important;clear:both;-webkit-border-radius:0 !important;-moz-border-radius:0 !important;border-radius:0 !important;-webkit-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;-moz-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;} +.storyjs-embed.sized-embed{overflow:hidden;border:1px solid #cccccc;padding-top:7px;padding-bottom:7px;margin:0 !important;clear:both;-webkit-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;-moz-box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;box-shadow:0 0px 0px rgba(0, 0, 0, 0.25) !important;} +.vco-storyjs{width:100%;height:100%;padding:0px;margin:0px;background-color:#ffffff;position:absolute;z-index:100;clear:both;overflow:hidden;}.vco-storyjs .vmm-clear:before,.vco-storyjs .vmm-clear:after{content:"";display:table;} +.vco-storyjs .vmm-clear:after{clear:both;} +.vco-storyjs .vmm-clear{*zoom:1;} +.vco-storyjs .vco-feature{width:100%;}.vco-storyjs .vco-feature .slider,.vco-storyjs .vco-feature .vco-slider{width:100%;float:left;position:relative;z-index:10;padding-top:15px;-webkit-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);} +.vco-storyjs .vco-feedback{position:absolute;display:table;overflow:hidden;top:0px;left:0px;z-index:205;width:100%;height:100%;} +.vco-storyjs div.vco-loading,.vco-storyjs div.vco-explainer{display:table;text-align:center;min-width:100px;margin-top:15px;height:100%;width:100%;background-color:#ffffff;}.vco-storyjs div.vco-loading .vco-loading-container,.vco-storyjs div.vco-explainer .vco-loading-container,.vco-storyjs div.vco-loading .vco-explainer-container,.vco-storyjs div.vco-explainer .vco-explainer-container{display:table-cell;vertical-align:middle;}.vco-storyjs div.vco-loading .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-loading-icon{display:block;background-repeat:no-repeat;vertical-align:middle;margin-left:auto;margin-right:auto;text-align:center;background-image:url(loading.gif?v3.4);width:28px;height:28px;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-gesture-icon{display:block;vertical-align:middle;margin-left:auto;margin-right:auto;text-align:center;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-160px -160px;width:48px;height:48px;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-message,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message{display:block;} +.vco-storyjs div.vco-loading .vco-loading-container .vco-message,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message,.vco-storyjs div.vco-loading .vco-loading-container .vco-message p,.vco-storyjs div.vco-explainer .vco-loading-container .vco-message p,.vco-storyjs div.vco-loading .vco-explainer-container .vco-message p,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-message p{text-align:center;font-size:11px;line-height:13px;text-transform:uppercase;margin-top:7.5px;margin-bottom:7.5px;} +.vco-storyjs div.vco-explainer{background-color:transparent;} +.vco-storyjs .vco-bezel{background-color:#333333;background-color:rgba(0, 0, 0, 0.8);width:80px;height:50px;padding:50px;padding-top:25px;padding:25px 20px 50px 20px;margin:auto;-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;}.vco-storyjs .vco-bezel .vco-message,.vco-storyjs .vco-bezel .vco-message p{color:#ffffff;font-weight:bold;} +.vco-storyjs .vco-container.vco-main{position:absolute;top:0px;left:0px;padding-bottom:3px;width:auto;height:auto;margin:0px;clear:both;} +.vco-storyjs img,.vco-storyjs embed,.vco-storyjs object,.vco-storyjs video,.vco-storyjs iframe{max-width:100%;} +.vco-storyjs img{max-height:100%;border:1px solid #999999;} +.vco-storyjs a{color:#0088cc;text-decoration:none;} +.vco-storyjs a:hover{color:#005580;text-decoration:underline;} +.vco-storyjs .vcard{float:right;margin-bottom:15px;}.vco-storyjs .vcard a{color:#333333;} +.vco-storyjs .vcard a:hover{text-decoration:none;}.vco-storyjs .vcard a:hover .fn{text-decoration:underline;} +.vco-storyjs .vcard .fn,.vco-storyjs .vcard .nickname{padding-left:42px;} +.vco-storyjs .vcard .fn{display:block;font-weight:bold;} +.vco-storyjs .vcard .nickname{margin-top:1px;display:block;color:#666666;} +.vco-storyjs .vcard .avatar{float:left;display:block;width:32px;height:32px;}.vco-storyjs .vcard .avatar img{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;} +.vco-storyjs .thumbnail{width:24px;height:24px;overflow:hidden;float:left;margin:0;margin-right:1px;margin-top:6px;border:0;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-storyjs a.thumbnail:hover{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} +.vco-storyjs .thumbnail.thumb-plaintext{background-repeat:no-repeat;background-position:-280px -48px;} +.vco-storyjs .thumbnail.thumb-quote{background-repeat:no-repeat;background-position:-232px -48px;} +.vco-storyjs .thumbnail.thumb-document{background-repeat:no-repeat;background-position:-256px -48px;} +.vco-storyjs .thumbnail.thumb-photo{background-repeat:no-repeat;background-position:-280px -24px;border:0;}.vco-storyjs .thumbnail.thumb-photo img{border:0px none #cccccc !important;} +.vco-storyjs .thumbnail.thumb-twitter{background-repeat:no-repeat;background-position:-256px -24px;} +.vco-storyjs .thumbnail.thumb-vimeo{background-repeat:no-repeat;background-position:-328px -48px;} +.vco-storyjs .thumbnail.thumb-vine{background-repeat:no-repeat;background-position:-232px -72px;} +.vco-storyjs .thumbnail.thumb-youtube{background-repeat:no-repeat;background-position:-328px -72px;} +.vco-storyjs .thumbnail.thumb-video{background-repeat:no-repeat;background-position:-328px -24px;} +.vco-storyjs .thumbnail.thumb-audio{background-repeat:no-repeat;background-position:-304px -24px;} +.vco-storyjs .thumbnail.thumb-map{background-repeat:no-repeat;background-position:-208px -48px;} +.vco-storyjs .thumbnail.thumb-website{background-repeat:no-repeat;background-position:-232px -24px;} +.vco-storyjs .thumbnail.thumb-link{background-repeat:no-repeat;background-position:-184px -72px;} +.vco-storyjs .thumbnail.thumb-wikipedia{background-repeat:no-repeat;background-position:-184px -48px;} +.vco-storyjs .thumbnail.thumb-storify{background-repeat:no-repeat;background-position:-328px -96px;} +.vco-storyjs .thumbnail.thumb-googleplus{background-repeat:no-repeat;background-position:-208px -72px;} +.vco-storyjs thumbnail.thumb-instagram{background-repeat:no-repeat;background-position:-208px -96px;} +.vco-storyjs thumbnail.thumb-instagram-full{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-232px -96px;width:48px;height:24px;} +.vco-storyjs .thumb-storify-full{height:12px;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-280px -96px;width:48px;} +.vco-storyjs .thumbnail-inline{width:16px;height:14px;overflow:hidden;display:inline-block;margin-right:1px;margin-left:3px;margin-top:2px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-storyjs .twitter .thumbnail-inline{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-160px -96px;} +.vco-storyjs .storify .thumbnail-inline{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-184px -96px;} +.vco-storyjs .googleplus .thumbnail-inline{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px -96px;} +.vco-storyjs .zFront{z-index:204;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-storyjs div.vco-loading .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-loading-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-loading-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-loading-icon{background-image:url(loading@2x.gif?v3.4);} .vco-storyjs div.vco-loading .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-loading-container .vco-gesture-icon,.vco-storyjs div.vco-loading .vco-explainer-container .vco-gesture-icon,.vco-storyjs div.vco-explainer .vco-explainer-container .vco-gesture-icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-160px -160px;width:48px;height:48px;}}.vco-notouch .vco-navigation .vco-toolbar .zoom-in:hover,.vco-notouch .vco-navigation .vco-toolbar .zoom-out:hover,.vco-notouch .vco-navigation .vco-toolbar .back-home:hover{color:#0088cc;cursor:pointer;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-navigation .timenav .content .marker.active:hover{cursor:default;}.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag .flag-content h3,.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag-small .flag-content h3{color:#0088cc;} +.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag .flag-content h4,.vco-notouch .vco-navigation .timenav .content .marker.active:hover .flag-small .flag-content h4{color:#999999;} +.vco-notouch .vco-navigation .timenav .content .marker:hover .line{z-index:24;background:#999999;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{cursor:pointer;}.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content h3,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h3{color:#333333;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content h4,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h4{color:#aaaaaa;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover .flag-content .thumbnail,.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content .thumbnail{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-notouch .vco-navigation .timenav .content .marker .flag:hover{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} +.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{height:56px;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content{height:36px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover .flag-content h3{margin-top:5px;} +.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover .flag-content{height:14px;}.vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation{clear:both;cursor:move;width:100%;height:200px;border-top:1px solid #e3e3e3;position:relative;}.vco-timeline .vco-navigation .vco-toolbar{position:absolute;top:45px;left:0px;z-index:202;background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);}.vco-timeline .vco-navigation .vco-toolbar .zoom-in,.vco-timeline .vco-navigation .vco-toolbar .zoom-out,.vco-timeline .vco-navigation .vco-toolbar .back-home{font-weight:normal;font-size:10px;line-height:20px;top:0px;z-index:202;width:18px;height:18px;color:#333333;text-align:center;font-weight:bold;border:1px solid #ffffff;padding:5px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .vco-toolbar .zoom-in .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-256px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar .zoom-out .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-280px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar .back-home .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-328px 0;width:24px;height:24px;} +.vco-timeline .vco-navigation .vco-toolbar.touch{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:transparent;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-in,.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-out,.vco-timeline .vco-navigation .vco-toolbar.touch .back-home{width:40px;height:40px;padding:5px;background-color:#ffffff;border:1px solid #cccccc;-webkit-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 0px rgba(0, 0, 0, 0.2);-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-in .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .vco-toolbar.touch .zoom-out .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-256px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .vco-toolbar.touch .back-home .icon{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-304px -160px;width:40px;height:40px;} +.vco-timeline .vco-navigation .timenav-background{position:absolute;cursor:move;top:0px;left:0px;height:150px;width:100%;background-color:#e9e9e9;}.vco-timeline .vco-navigation .timenav-background .timenav-interval-background{position:absolute;top:151px;left:0px;background:#ffffff;width:100%;height:49px;-webkit-box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);-moz-box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);box-shadow:-1px -1px 7px rgba(0, 0, 0, 0.1);}.vco-timeline .vco-navigation .timenav-background .timenav-interval-background .top-highlight{position:absolute;top:-1px;left:0px;z-index:30;width:100%;height:1px;background:#ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;-webkit-box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);-moz-box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);box-shadow:1px 1px 5px rgba(0, 0, 0, 0.2);} +.vco-timeline .vco-navigation .timenav-background .timenav-line{position:absolute;top:0px;left:50%;width:3px;height:150px;background-color:#0088cc;z-index:1;-webkit-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);box-shadow:1px 1px 7px rgba(0, 0, 0, 0.3);} +.vco-timeline .vco-navigation .timenav-background .timenav-indicator{position:absolute;top:-1px;left:50%;z-index:202;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-160px -48px;width:24px;height:24px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag div{height:50px;display:table;}.vco-timeline .vco-navigation .timenav-background .timenav-tag div h3{display:table-cell;vertical-align:middle;padding-left:65px;font-size:15px;color:#d0d0d0;font-weight:bold;text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-half{height:25px;}.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-half div{height:25px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-full{height:50px;}.vco-timeline .vco-navigation .timenav-background .timenav-tag-size-full div{height:50px;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-2,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-4,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-6{background:#f1f1f1;} +.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-1,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-3,.vco-timeline .vco-navigation .timenav-background .timenav-tag-row-5{background:#e9e9e9;} +.vco-timeline .vco-navigation .timenav{position:absolute;top:0px;left:-250px;z-index:1;}.vco-timeline .vco-navigation .timenav .content{position:relative;}.vco-timeline .vco-navigation .timenav .content .marker.start{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker.active .dot{background:#0088cc;z-index:200;} +.vco-timeline .vco-navigation .timenav .content .marker.active .line{z-index:199;background:#0088cc;width:1px;}.vco-timeline .vco-navigation .timenav .content .marker.active .line .event-line{background:#0088cc;filter:alpha(opacity=75);-khtml-opacity:0.75;-moz-opacity:0.75;opacity:0.75;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small{z-index:200;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content{height:36px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content h3,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content h3{color:#0088cc;margin-top:5px;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag .flag-content .thumbnail,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content .thumbnail{filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row1,.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row2,.vco-timeline .vco-navigation .timenav .content .marker.active .flag.row3,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row1,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row2,.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small.row3{z-index:200;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} +.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content{height:14px;}.vco-timeline .vco-navigation .timenav .content .marker.active .flag-small .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation .timenav .content .marker{position:absolute;top:0px;left:150px;display:block;}.vco-timeline .vco-navigation .timenav .content .marker .dot{position:absolute;top:150px;left:0px;display:block;width:6px;height:6px;background:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;z-index:21;} +.vco-timeline .vco-navigation .timenav .content .marker .line{position:absolute;top:0px;left:3px;width:1px;height:150px;background-color:#cccccc;background-color:rgba(204, 204, 204, 0.5);-webkit-box-shadow:1px 0 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:1px 0 0 rgba(255, 255, 255, 0.5);box-shadow:1px 0 0 rgba(255, 255, 255, 0.5);z-index:22;}.vco-timeline .vco-navigation .timenav .content .marker .line .event-line{position:absolute;z-index:22;left:0px;height:1px;width:1px;background:#0088cc;filter:alpha(opacity=15);-khtml-opacity:0.15;-moz-opacity:0.15;opacity:0.15;} +.vco-timeline .vco-navigation .timenav .content .marker .flag,.vco-timeline .vco-navigation .timenav .content .marker .flag-small{position:absolute;top:15px;left:3px;padding:0px;display:block;z-index:23;width:153px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content{padding:0px 7px 2px 6px;overflow:hidden;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3{font-weight:bold;font-size:15px;line-height:20px;font-size:11px;line-height:11px;color:#999999;margin-bottom:2px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3 small,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3 small{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h4,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h4{display:none;font-weight:normal;font-size:15px;line-height:20px;margin-top:5px;font-size:10px;line-height:10px;color:#aaaaaa;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h4 small,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h4 small{display:none;} +.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content .thumbnail,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail{margin-bottom:15px;margin-right:3px;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content .thumbnail img,.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail img{width:22px;height:22px;max-height:none;max-width:none;border:0;border:1px solid #999999;padding:0;margin:0;} +.vco-timeline .vco-navigation .timenav .content .marker .flag{height:56px;background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 0;width:153px;height:53px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content{height:36px;}.vco-timeline .vco-navigation .timenav .content .marker .flag .flag-content h3{margin-top:5px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:0 -135px;width:153px;height:26px;}.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content{height:14px;}.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content h3{margin-top:4px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail{width:16px;height:10px;margin-right:1px;margin-top:6px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-plaintext{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-280px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-quote{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-232px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-document{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-256px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-photo{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-280px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-twitter{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-256px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-vimeo{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-328px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-vine{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-160px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-youtube{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-304px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-video{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-328px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-audio{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-304px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-map{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-website{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-232px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-link{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-232px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-wikipedia{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-184px -120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-storify{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-184px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content .thumbnail.thumb-googleplus{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px -130px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small .flag-content thumbnail.thumb-instagram{background-image:url(timeline.png?v4.4);background-repeat:no-repeat;background-position:-208px -96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row1{z-index:25;top:48px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row2{z-index:24;top:96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.row3{z-index:23;top:1px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row1{z-index:28;top:24px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row2{z-index:27;top:48px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row3{z-index:26;top:72px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row4{z-index:25;top:96px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row5{z-index:24;top:120px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag-small.row6{z-index:23;top:1px;} +.vco-timeline .vco-navigation .timenav .content .marker .flag.zFront,.vco-timeline .vco-navigation .timenav .content .marker .flag-small.zFront{z-index:201;} +.vco-timeline .vco-navigation .timenav .content .era{position:absolute;top:138px;left:150px;height:12px;display:block;overflow:hidden;}.vco-timeline .vco-navigation .timenav .content .era div{height:50px;width:100%;height:100%;line-height:0px;background:#e9e9e9;background:rgba(233, 233, 233, 0.33);}.vco-timeline .vco-navigation .timenav .content .era div h3,.vco-timeline .vco-navigation .timenav .content .era div h4{position:absolute;bottom:1px;padding-left:15px;font-size:15px;font-weight:bold;color:rgba(0, 136, 204, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era1 div{background:#cc4400;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(204, 68, 0, 0.1);border-right:1px solid rgba(255, 85, 0, 0.05);}.vco-timeline .vco-navigation .timenav .content .era1 div h3,.vco-timeline .vco-navigation .timenav .content .era1 div h4{color:rgba(204, 68, 0, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era2 div{background:#cc0022;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(204, 0, 34, 0.1);border-right:1px solid rgba(255, 0, 43, 0.05);}.vco-timeline .vco-navigation .timenav .content .era2 div h3,.vco-timeline .vco-navigation .timenav .content .era2 div h4{color:rgba(204, 0, 34, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era3 div{background:#0022cc;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(0, 34, 204, 0.1);border-right:1px solid rgba(0, 43, 255, 0.05);}.vco-timeline .vco-navigation .timenav .content .era3 div h3,.vco-timeline .vco-navigation .timenav .content .era3 div h4{color:rgba(0, 34, 204, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era4 div{background:#ccaa00;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(204, 170, 0, 0.1);border-right:1px solid rgba(255, 213, 0, 0.05);}.vco-timeline .vco-navigation .timenav .content .era4 div h3,.vco-timeline .vco-navigation .timenav .content .era4 div h4{color:rgba(204, 170, 0, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era5 div{background:#00ccaa;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(0, 204, 170, 0.1);border-right:1px solid rgba(0, 255, 213, 0.05);}.vco-timeline .vco-navigation .timenav .content .era5 div h3,.vco-timeline .vco-navigation .timenav .content .era5 div h4{color:rgba(0, 204, 170, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .content .era6 div{background:#0088cc;filter:alpha(opacity=10);-khtml-opacity:0.1;-moz-opacity:0.1;opacity:0.1;border-left:1px solid rgba(0, 136, 204, 0.1);border-right:1px solid rgba(0, 170, 255, 0.05);}.vco-timeline .vco-navigation .timenav .content .era6 div h3,.vco-timeline .vco-navigation .timenav .content .era6 div h4{color:rgba(0, 136, 204, 0.35);text-shadow:0px 1px 1px #ffffff;} +.vco-timeline .vco-navigation .timenav .time{position:absolute;left:0px;top:150px;height:50px;background-color:#ffffff;line-height:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval-minor{max-width:none;height:6px;white-space:nowrap;position:absolute;top:-2px;left:8px;z-index:10;}.vco-timeline .vco-navigation .timenav .time .time-interval-minor .minor{position:relative;top:2px;display:inline-block;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC);width:100px;height:6px;background-position:center top;white-space:nowrap;color:#666666;margin-top:0px;padding-top:0px;} +.vco-timeline .vco-navigation .timenav .time .time-interval{white-space:nowrap;position:absolute;top:5px;left:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval div{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAMCAMAAACdvocfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAZQTFRFzMzM////040VdgAAAAJ0Uk5T/wDltzBKAAAAEklEQVR42mJgYAQCBopJgAADAAbwADHy2qHzAAAAAElFTkSuQmCC);background-position:left top;background-repeat:no-repeat;padding-top:6px;position:absolute;height:3px;left:0px;display:block;font-weight:normal;font-size:10px;line-height:20px;text-transform:uppercase;text-align:left;text-indent:0px;white-space:nowrap;color:#666666;margin-left:0px;margin-right:0px;margin-top:0px;z-index:2;}.vco-timeline .vco-navigation .timenav .time .time-interval div strong{font-weight:bold;color:#000000;} +.vco-timeline .vco-navigation .timenav .time .time-interval div.era{font-weight:bold;padding-top:0px;margin-top:-3px;margin-left:2px;background-image:none;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era1{color:#cc4400;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era2{color:#cc0022;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era3{color:#0022cc;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era4{color:#ccaa00;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era5{color:#00ccaa;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval .era6{color:#0088cc;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} +.vco-timeline .vco-navigation .timenav .time .time-interval-major{white-space:nowrap;position:absolute;top:5px;left:0px;}.vco-timeline .vco-navigation .timenav .time .time-interval-major div{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAQAQMAAADtUYf0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyOTAzRjI3REIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyOTAzRjI3RUIzNDcxMUUxQUQ3QUZCOThEODQ1NDhCNyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjI5MDNGMjdCQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjI5MDNGMjdDQjM0NzExRTFBRDdBRkI5OEQ4NDU0OEI3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+DPWNfQAAAANQTFRFzMzMylJEJwAAAAtJREFUCB1jYMAPAAAgAAHDvpOtAAAAAElFTkSuQmCC);background-position:left top;background-repeat:no-repeat;padding-top:15px;position:absolute;height:15px;left:0px;display:block;font-weight:bold;font-size:12px;line-height:20px;text-transform:uppercase;text-align:left;text-indent:0px;white-space:nowrap;color:#333333;margin-left:0px;margin-right:0px;margin-top:1px;z-index:5;}.vco-timeline .vco-navigation .timenav .time .time-interval-major div strong{font-weight:bold;color:#000000;} +@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-device-pixel-ratio:2){.vco-notouch .vco-navigation .vco-toolbar .zoom-in .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-256px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar .zoom-out .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-280px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar .back-home .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-328px 0;width:24px;height:24px;} .vco-notouch .vco-navigation .vco-toolbar.touch .zoom-in .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-208px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .vco-toolbar.touch .zoom-out .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-256px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .vco-toolbar.touch .back-home .icon{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-304px -160px;width:40px;height:40px;} .vco-notouch .vco-navigation .timenav .content .marker .flag:hover{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} .vco-notouch .vco-navigation .timenav .content .marker .flag-small:hover{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:0 -53px;width:153px;height:53px;} .vco-notouch .vco-navigation .timenav .content .marker .flag-small.flag-small-last:hover{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:0 -109px;width:153px;height:26px;} .vco-notouch .vco-navigation .timenav-background .timenav-indicator{background-image:url(timeline@2x.png?v4.4);background-size:352px 260px;background-repeat:no-repeat;background-position:-160px -48px;width:24px;height:24px;}}@media screen and (-webkit-max-device-pixel-ratio:1){}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){}@media screen and (max-device-width:480px) and (orientation:portrait){.storyjs-embed.full-embed{height:557px !important;width:320px !important;}.storyjs-embed.full-embed .vco-feature{height:356px !important;}}@media screen and (max-device-width:480px) and (orientation:landscape){.storyjs-embed.full-embed{height:409px !important;width:480px !important;}.storyjs-embed.full-embed .vco-feature{height:208px !important;}}@media screen and (min-device-width:481px) and (orientation:portrait){}@media screen and (min-device-width:481px) and (orientation:landscape){}@media (max-width:480px){}@media only screen and (max-width:480px){} diff --git a/ajax/libs/timelinejs/2.24/css/timeline.png b/ajax/libs/timelinejs/2.24/css/timeline.png new file mode 100755 index 0000000000000000000000000000000000000000..857d0d19815d949ee5249ac90b05d5cde0551291 GIT binary patch literal 19872 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 z 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 literal 0 HcmV?d00001 diff --git a/ajax/libs/timelinejs/2.24/css/timeline@2x.png b/ajax/libs/timelinejs/2.24/css/timeline@2x.png new file mode 100755 index 0000000000000000000000000000000000000000..41b4eb255a288552a13e0f23a76b28bb34333ead GIT binary patch literal 49364 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 literal 0 HcmV?d00001 diff --git a/ajax/libs/timelinejs/2.24/js/locale/ar.js b/ajax/libs/timelinejs/2.24/js/locale/ar.js new file mode 100755 index 000000000..20bc651f2 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ar.js @@ -0,0 +1,2 @@ +/* Arabic LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ar",right_to_left:!0,api:{wikipedia:"ar"},date:{month:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],month_abbr:["كانون الثاني","شباط","آذار","نيسان","أيار","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],day:["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],day_abbr:["الأحد","الإثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"جاري التحميل... ",return_to_title:"العودة",expand_timeline:"تكبير العرض",contract_timeline:"الاتفاقية",wikipedia:"من ويكيبيديا, الموسوعة الحرة",loading_content:"تحميل المحتوى",loading:"تحميل"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/bg.js b/ajax/libs/timelinejs/2.24/js/locale/bg.js new file mode 100755 index 000000000..abf5cd270 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/bg.js @@ -0,0 +1,2 @@ +/* Bulgarian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"bg",api:{wikipedia:"bg"},date:{month:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],month_abbr:["Ян.","Фев.","Март","Апр.","Май","Юни","Юли","Авг.","Септ.","Окт.","Ноем.","Дек."],day:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],day_abbr:["Нед.","Пон.","Вт.","Ср.","Четв.","Пет.","Съб."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'd mmmm yyyy''",full_long:"d mmm yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
d mmm yyyy''"},messages:{loading_timeline:"Зареждане... ",return_to_title:"В началото",expand_timeline:"Разширяване",contract_timeline:"Свиване",wikipedia:"От Уикипедия, свободната енциклопедия",loading_content:"Съдържанието се зарежда",loading:"Зарежда се"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ca.js b/ajax/libs/timelinejs/2.24/js/locale/ca.js new file mode 100755 index 000000000..c13aec906 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ca.js @@ -0,0 +1,2 @@ +/* Catalan LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ca",api:{wikipedia:"ca"},date:{month:["Gener","Febrer","Març","Abril","Maig","Juny","Juliol","Agost","Setembre","Octubre","Novembre","Desembre"],month_abbr:["Gen","Feb","Mar","Abr","Mai","Jun","Jul","Ago","Set","Oct","Nov","Des"],day:["Diumenge","Dilluns","Dimarts","Dimecres","Dijous","Divendres","Dissabte"],day_abbr:["Dg.","Dl.","Dt.","Dc.","Dj.","Dv.","Ds."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"''d mmmm yyyy'' HH:MM",full_long:"dddd',' d mmm yyyy HH:MM",full_long_small_date:"HH:MM'
d mmm yyyy''"},messages:{loading_timeline:"Carregant cronologia...",return_to_title:"Tornar al títol",expand_timeline:"Ampliar la cronologia",contract_timeline:"Reduir la cronologia",wikipedia:"Des de Wikipedia, l'enciclopèdia lliure",loading_content:"Carregant contingut",loading:"Carregant"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/cz.js b/ajax/libs/timelinejs/2.24/js/locale/cz.js new file mode 100755 index 000000000..537701800 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/cz.js @@ -0,0 +1,2 @@ +/* Czech LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"cz",api:{wikipedia:"cs"},date:{month:["ledna","února","března","dubna","května","června","července","srpna","září","října","listopadu","prosince"],month_abbr:["Led","Úno","Bře","Dub","Kvě","Čen","Čec","Srp","Zář","Říj","Lis","Pro"],day:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],day_abbr:["Ne","Po","Út","St","Čt","Pá","So"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d. mmm ",full:"d. mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm yyyy''",full_long:"dddd d. mmm yyyy 'v' HH:MM",full_long_small_date:"HH:MM'
dddd d. mmm yyyy''"},messages:{loading_timeline:"Načítám časovou osu... ",return_to_title:"Zpět na začátek",expand_timeline:"Rozbalit časovou osu",contract_timeline:"Sbalit časovou osu",wikipedia:"Zdroj: otevřená encyklopedie Wikipedia",loading_content:"Nahrávám obsah",loading:"Nahrávám"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/da.js b/ajax/libs/timelinejs/2.24/js/locale/da.js new file mode 100755 index 000000000..91712fd5d --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/da.js @@ -0,0 +1,2 @@ +/* Danish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"da",api:{wikipedia:"da"},date:{month:["januar","februar","marts","april","maj","juni","juli","august","september","oktober","november","december"],month_abbr:["jan.","feb.","mar.","apr.","maj.","jun.","jul.","aug.","sep.","okt.","nov.","dec."],day:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],day_abbr:["sø.","ma.","ti.","on.","to.","fr.","lø."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d. mmm",full:"d. mmmm',' yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm',' yyyy''",full_long:"dddd',' d. mmm',' yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d. mmm yyyy''"},messages:{loading_timeline:"Henter tidslinie...",return_to_title:"Tilbage til titel",expand_timeline:"Udvid tidslinien",contract_timeline:"Træk tidslinien sammen",wikipedia:"Fra Wikipedia",loading_content:"Henter indhold",loading:"Henter"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/de.js b/ajax/libs/timelinejs/2.24/js/locale/de.js new file mode 100755 index 000000000..6086cec7e --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/de.js @@ -0,0 +1,2 @@ +/* German / Deutsch LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"de",api:{wikipedia:"de"},date:{month:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],month_abbr:["Jan.","Feb.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."],day:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],day_abbr:["So.","Mo.","Di.","Mi.","Do.","Fr.","Sa."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d. mmm",full:"d. mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm yyyy''",full_long:"dddd',' d. mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d. mmm yyyy''"},messages:{loading_timeline:"Chronologie wird geladen...",return_to_title:"Zurück zum Anfang",expand_timeline:"Chronologie vergrößern",contract_timeline:"Chronologie verkleinern",wikipedia:"Wikipedia, Die freie Enzyklopädie",loading_content:"Loading",loading:"Loading"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/el.js b/ajax/libs/timelinejs/2.24/js/locale/el.js new file mode 100755 index 000000000..9bcdfcc4b --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/el.js @@ -0,0 +1,2 @@ +/* Greek LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"en",api:{wikipedia:"en"},date:{month:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],month_abbr:["Ιαν.","Φεβ.","Μαρ.","Απρ.","Μαη","Ιουν.","Ιουλ.","Αύγ.","Σεπτ.","Οκτ.","Νοεμ.","Δεκ."],day:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],day_abbr:["Κυρ.","Δευ.","Τρίτη.","Τετ.","Πεμπ.","Παρ.","Σαβ."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Φόρτωση Timeline... ",return_to_title:"Επιστροφή στον Τίτλο",expand_timeline:"Μεγέθυνση",contract_timeline:"Contract Timeline",wikipedia:"From Wikipedia, the free encyclopedia",loading_content:"Φόρτωση Περιεχομένου",loading:"Γίνεται Φόρτωση"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/en.js b/ajax/libs/timelinejs/2.24/js/locale/en.js new file mode 100755 index 000000000..7dacdc191 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/en.js @@ -0,0 +1,2 @@ +/* English LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"en",api:{wikipedia:"en"},date:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],month_abbr:["Jan.","Feb.","March","April","May","June","July","Aug.","Sept.","Oct.","Nov.","Dec."],day:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_abbr:["Sun.","Mon.","Tues.","Wed.","Thurs.","Fri.","Sat."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Loading Timeline... ",return_to_title:"Return to Title",expand_timeline:"Expand Timeline",contract_timeline:"Contract Timeline",wikipedia:"From Wikipedia, the free encyclopedia",loading_content:"Loading Content",loading:"Loading"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/es.js b/ajax/libs/timelinejs/2.24/js/locale/es.js new file mode 100755 index 000000000..12c68e1a4 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/es.js @@ -0,0 +1,2 @@ +/* Spanish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"es",api:{wikipedia:"es"},date:{month:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],month_abbr:["Ene.","Feb.","Mar.","Abr.","May.","Jun.","Jul.","Ago.","Sep.","Oct.","Nov.","Dic."],day:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],day_abbr:["Dom.","Lun.","Mar.","Mié.","Jue.","Vie.","Sáb."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"''d mmmm yyyy'' HH:MM",full_long:"dddd',' d mmm yyyy HH:MM",full_long_small_date:"HH:MM'
d mmm yyyy''"},messages:{loading_timeline:"Cronología esta cargando",return_to_title:"Volver al título",expand_timeline:"Enlargar la cronología",contract_timeline:"Reducir la cronología",wikipedia:"Desde Wikipedia, la enciclopedia libre",loading_content:"cargando",loading:"cargando"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/eu.js b/ajax/libs/timelinejs/2.24/js/locale/eu.js new file mode 100755 index 000000000..d5389c5d4 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/eu.js @@ -0,0 +1,2 @@ +/* Basque/ Euskara LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"eu",api:{wikipedia:"eu"},date:{month:["Urtarrila","Otsaila","Martxoa","Apirila","Maiatza","Ekaina","Uztaila","Abuztua","Iraila","Urria","Azaroa","Abendua"],month_abbr:["Urt.","Ots.","Mar.","Api.","Mai.","Eka.","Uzt.","Abu.","Ira.","Urr.","Aza.","Abe."],day:["Igandea","Astelehena","Asteartea","Asteazkena","Osteguna","Ostirala","Larunbata"],day_abbr:["Iga.","Asl.","Asr.","Asz.","Osg.","Osr.","Lar."]},dateformats:{year:"yyyy",month_short:"mmm",month:"yyyy'(e)ko' mmmm",full_short:"mmm'-'d",full:"yyyy'(e)ko' mmmm'k' d",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'yyyy'-'mmm'-'d'",full_long:"yyyy'(e)ko' mmmm'ren' d'(e)an,' hh:MM TT'(r)etan'",full_long_small_date:"hh:MM TT'
'yyyy'-'mmm'-'d'"},messages:{loading_timeline:"Kronologia kargatzen...",return_to_title:"Titulura itzuli",expand_timeline:"Handiago ikusi",contract_timeline:"Txikiago ikusi",wikipedia:"Wikipedia entziklopedia libretik",loading_content:"Edukia kargatzen",loading:"Kargatzen"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/fi.js b/ajax/libs/timelinejs/2.24/js/locale/fi.js new file mode 100755 index 000000000..b78ac2f79 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/fi.js @@ -0,0 +1,2 @@ +/* Finnish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"fi",api:{wikipedia:"fi"},date:{month:["tammikuuta","helmikuuta","maaliskuuta","huhtikuuta","toukokuuta","kesäkuuta","heinäkuuta","elokuuta","syyskuuta","lokakuuta","marraskuuta","joulukuuta"],month_abbr:["tammi","helmi","maalis","huhti","touko","kesä","heinä","elo","syys","loka","marras","joulu"],day:["sunnuntai","maanantai","tiistai","keskiviikko","torstai","perjantai","lauauntai"],day_abbr:["su","ma","ti","ke","to","pe","la"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d. mmm",full:"d. mmmm yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'd. mmmm yyyy''",full_long:"mmm d yyyy 'klo' h:MM TT",full_long_small_date:"h:MM TT'
d. mmm yyyy''"},messages:{loading_timeline:"Ladataan aikajanaa… ",return_to_title:"Takaisin etusivulle",expand_timeline:"Laajenna aikajanaa",contract_timeline:"Tiivistä aikajanaa",wikipedia:"Wikipediasta",loading_content:"Ladataan sisältöä",loading:"Ladataan"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/fo.js b/ajax/libs/timelinejs/2.24/js/locale/fo.js new file mode 100755 index 000000000..de1187082 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/fo.js @@ -0,0 +1,2 @@ +/* Faroese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"fo",api:{wikipedia:"fo"},date:{month:["januar","februar","mars","aprÌl","mai","juni","juli","august","september","oktober","november","desember"],month_abbr:["jan.","febr.","mars","aprÌl","mai","juni","juli","aug.","sept.","okt.","nov.","des."],day:["sunnudagur","m·nadagur","t˝sdagur","mikudagur","hÛsdagur","frÌggjadagur","leygardagur"],day_abbr:["sun.","m·n.","t˝s.","mik.","hÛs.","frÌ.","ley."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d'.' mmm",full:"d'.' mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd'.' mmmm yyyy''",full_long:"d'.' mmmm yyyy 'klokkan' HH:MM",full_long_small_date:"HH:MM'
'd'.' mmm yyyy''"},messages:{loading_timeline:"Lesur inn tíðarrás...",return_to_title:"Víðka tíðarrás...",expand_timeline:"Minka tíðarrás...",contract_timeline:"Minka tíðarrás",wikipedia:"Fr· Wikipedia",loading_content:"Lesur inn tilfar",loading:"Lesur inn"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/fr.js b/ajax/libs/timelinejs/2.24/js/locale/fr.js new file mode 100755 index 000000000..448ebc567 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/fr.js @@ -0,0 +1,2 @@ +/* French LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"fr",api:{wikipedia:"fr"},date:{month:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],month_abbr:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","dec."],day:["Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"],day_abbr:["Dim.","Lu.","Ma.","Me.","Jeu.","Vend.","Sam."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'à' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Chargement de la frise en cours... ",return_to_title:"Retour à la page d'accueil",expand_timeline:"Elargir la frise",contract_timeline:"Réduire la frise",wikipedia:"Extrait de Wikipedia, l'encyclopédie libre",loading_content:"Chargement",loading:"Chargement"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/gl.js b/ajax/libs/timelinejs/2.24/js/locale/gl.js new file mode 100755 index 000000000..729b47cca --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/gl.js @@ -0,0 +1,2 @@ +/* Galician LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"gl",api:{wikipedia:"gl"},date:{month:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],month_abbr:["Xan.","Feb.","Mar.","Abr.","Mai.","Xuñ.","Xul.","Ago.","Set.","Out.","Nov.","Dec."],day:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],day_abbr:["Dom.","Lun.","Mar.","Mér.","Xov.","Ven.","Sáb."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Cronoloxía esta cargando",return_to_title:"Volver ao título",expand_timeline:"Alongar a cronoloxía",contract_timeline:"Acurtar a cronoloxía",wikipedia:"Dende Wikipedia, a enciclopedia libre",loading_content:"cargando",loading:"cargando"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/hu.js b/ajax/libs/timelinejs/2.24/js/locale/hu.js new file mode 100755 index 000000000..af214c9c8 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/hu.js @@ -0,0 +1,2 @@ +/* Hungarian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"hu",api:{wikipedia:"hu"},date:{month:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],month_abbr:["Jan.","Febr.","Márc","Ápr.","Máj.","Jún.","Júl.","Aug.","Szept.","Okt.","Nov.","Dec."],day:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],day_abbr:["Vas.","Hétfő","Kedd","Szer.","Csüt.","Pén.","Szom."]},dateformats:{year:"yyyy",month_short:"mmm",month:"yyyy mmmm",full_short:"mmm d",full:"yyyy mmmm d",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM '
'yyyy mmmm d''",full_long:"yyyy mmm d',' HH:MM",full_long_small_date:"HH:MM '
yyyy mmm d''"},messages:{loading_timeline:"Az idővonal betöltése... ",return_to_title:"Vissza a címhez",expand_timeline:"Nagyítás",contract_timeline:"Kicsinyítés",wikipedia:"A Wikipédiából, a szabad enciklopédiából",loading_content:"Tartalom betöltése",loading:"Betöltés"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/hy.js b/ajax/libs/timelinejs/2.24/js/locale/hy.js new file mode 100755 index 000000000..2f636c73b --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/hy.js @@ -0,0 +1,2 @@ +/* Armenian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"hy",api:{wikipedia:"hy"},date:{month:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],month_abbr:["Հնվ.","Փետ.","Մար","Ապր","Մայ","Հուն","Հուլ","Օգս.","Սեպ.","Հոկ.","Նոյ.","Դեկ."],day:["Կիրակի","Երկուշաբթի","Երեքշաբթի","Չորեքշաբթի","Հինգշաբթի","Ուրբաթ","Շաբաթ"],day_abbr:["Կի.","Եկ.","Եք.","Չո.","Հի.","Ու.","Շա."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm',' yyyy",time_no_seconds_short:"H:MM",time_no_seconds_small_date:"H:MM'
'd mmmm',' yyyy''",full_long:"d mmm',' yyyy 'at' H:MM",full_long_small_date:"H:MM '
d mmm',' yyyy''"},messages:{loading_timeline:"Ժամանակագրությունը բեռնվում է... ",return_to_title:"Վերադառնալ վերնագրին",expand_timeline:"Լայնացնել ժամանակագրությունը",contract_timeline:"Նեղացնել ժամանակագրությունը",wikipedia:"Ըստ Վիքիպեդիա ազատ հանրագիտարանի",loading_content:"Բովանդակությունը բեռնվում է",loading:"Բեռնում"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/id.js b/ajax/libs/timelinejs/2.24/js/locale/id.js new file mode 100755 index 000000000..728ef7f6d --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/id.js @@ -0,0 +1,2 @@ +/* Indonesian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"id",api:{wikipedia:"id"},date:{month:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"],month_abbr:["Jan.","Feb.","Maret","April","Mei","Juni","July","Agus.","Sept.","Okt.","Nov.","Des."],day:["Ahad","Senin","Selasa","Rabu","Kamis","Jum'at","Sabtu"],day_abbr:["Ahad","Sen.","Sel.","Rabu","Kamis","Jum.","Sab."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'pukul' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Memuat Timeline... ",return_to_title:"Kembali ke Judul",expand_timeline:"Kembangkan Timeline",contract_timeline:"Ciutkan Timeline",wikipedia:"dari Wikipedia, ensiklopedia bebas",loading_content:"Memuat Isi",loading:"Memuat"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/is.js b/ajax/libs/timelinejs/2.24/js/locale/is.js new file mode 100755 index 000000000..bcd48b575 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/is.js @@ -0,0 +1,2 @@ +/* Icelandic LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"is",api:{wikipedia:"is"},date:{month:["janúar","febrúar","mars","apríl","maí","júní","júlí","ágúst","september","október","nóvember","desember"],month_abbr:["jan.","feb.","mars","apríl","maí","júní","júlí","ágúst","sept.","okt.","nóv.","des."],day:["sunnudagur","mánudagur","þriðjudagur","miðvikudagur","fimmtudagur","föstudagur","laugardagur"],day_abbr:["sun.","mán.","þri.","mið.","fim.","fös.","lau."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"hh:MM TT",time_no_seconds_small_date:"hh:MM TT'
'mmmm d',' yyyy''",full_long:"dddd',' mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
'dddd',' mmm d',' yyyy''"},messages:{loading_timeline:"Raða upp tímalínu... ",return_to_title:"Til baka á forsíðu",expand_timeline:"Stækka tímalínu",contract_timeline:"Minnka tímalínu",wikipedia:"From Wikipedia, the free encyclopedia",loading_content:"Raða",loading:"Raða"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/it.js b/ajax/libs/timelinejs/2.24/js/locale/it.js new file mode 100755 index 000000000..a0a505bd1 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/it.js @@ -0,0 +1,2 @@ +/* Italian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"it",api:{wikipedia:"it"},date:{month:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],month_abbr:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],day:["Domenica","Lunedi","Martedi","Mercoledi","Giovedi","Venerdi","Sabato"],day_abbr:["Dom.","Lun.","Mar.","Mer.","Gio.","Ven.","Sab."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Loading Timeline... ",return_to_title:"Return to Title",expand_timeline:"Expand Timeline",contract_timeline:"Contract Timeline",wikipedia:"Wikipedia, L’enciclopedia libera",loading_content:"Loading Content",loading:"Loading"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/iw.js b/ajax/libs/timelinejs/2.24/js/locale/iw.js new file mode 100755 index 000000000..e85d6db85 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/iw.js @@ -0,0 +1,2 @@ +/* Hebrew (beta) LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"iw",right_to_left:!0,api:{wikipedia:"iw"},date:{month:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],month_abbr:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],day:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],day_abbr:["יום א'","יום ב'","יום ג'","יום ד'","יום ה'","יום ו'","שבת"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm,' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"d' mmm,' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"טוען את ציר הזמן... ",return_to_title:"חזור לכותרת",expand_timeline:"הרחב את ציר הזמן",contract_timeline:"צמצם את ציר הזמן",wikipedia:"מויקיפדיה, האינציקלופדיה החופשית",loading_content:"התוכן בטעינה...",loading:"טוען..."}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ja.js b/ajax/libs/timelinejs/2.24/js/locale/ja.js new file mode 100755 index 000000000..2f8f6dbd7 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ja.js @@ -0,0 +1,2 @@ +/* Japanese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ja",api:{wikipedia:"ja"},date:{month:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],month_abbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],day:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],day_abbr:["日","月","火","水","木","金","土"]},dateformats:{year:"yyyy年",month_short:"mmm",month:"yyyy年 m月d日 (ddd)",full_short:"yyyy年m月d日",full:"yyyy年 m月d日 (ddd)",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'yyyy年m月d日''",full_long:"yyyy年m月d日 H時M分s秒",full_long_small_date:"HH:MM:ss'
'yyyy年m月d日''"},messages:{loading_timeline:"タイムラインをロードしています…",return_to_title:"タイトルへ戻ります",expand_timeline:"タイムラインを展開します",contract_timeline:"タイムラインを縮めます",wikipedia:"出典:フリー百科事典『ウィキペディア(Wikipedia)』",loading_content:"コンテンツをロードしています",loading:"ローディング"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ka.js b/ajax/libs/timelinejs/2.24/js/locale/ka.js new file mode 100755 index 000000000..44bd090f0 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ka.js @@ -0,0 +1,2 @@ +/* Georgian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ka",api:{wikipedia:"ka"},date:{month:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],month_abbr:["იან.","თებ.","მარტი","აპრ","მაი.","ივნ.","ივლ.","აგვ.","სექ.","ოქტ.","ნოე.","დეკ."],day:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],day_abbr:["კვ.","ორ.","სამ.","ოთხ.","ხუთ.","პარ.","შაბ."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"იტვირთება თაიმლაინი... ",return_to_title:"დაბრუნდი თავში",expand_timeline:"გაშალე თაიმლაინი",contract_timeline:"Contract Timeline",wikipedia:"თავისუფალი ენციკლოპედია Wikipedia-დან",loading_content:"შინაარსის ჩამოტვირთვა",loading:"ჩამოტვირთვა"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ko.js b/ajax/libs/timelinejs/2.24/js/locale/ko.js new file mode 100755 index 000000000..a72258e55 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ko.js @@ -0,0 +1,2 @@ +/* Korean LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ko",api:{wikipedia:"ko"},date:{month:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],month_abbr:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],day:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],day_abbr:["일","월","화","수","목","금","토"]},dateformats:{year:"yyyy",month_short:"mmm",month:"yyyy mmm",full_short:"mmm d",full:"yyyy mmm d ",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'yyyy mmm d''",full_long:"dddd',' d mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd','yyyy mmm d''"},messages:{loading_timeline:"타임라인을 불러오고 있습니다.... ",return_to_title:"첫화면으로",expand_timeline:"타임라인 확대",contract_timeline:"타임라인 축소",wikipedia:"출처: 위키피디아, 우리 모두의 백과사전",loading_content:"내용을 불러오고 있습니다.",loading:"불러오는중"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/lv.js b/ajax/libs/timelinejs/2.24/js/locale/lv.js new file mode 100755 index 000000000..aa0ec6bf8 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/lv.js @@ -0,0 +1,2 @@ +/* Latvian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"lv",api:{wikipedia:"lv"},date:{month:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],month_abbr:["Jan.","Feb.","Mar.","Apr.","Mai.","Jūn.","Jūl.","Aug.","Sep.","Okt.","Nov.","Dec."],day:["Svētdiena","Pirmdiena","Otrdiena","Trešdiena","Ceturtdiena","Piektdiena","Sestdiena"],day_abbr:["Sun.","Mon.","Tues.","Wed.","Thurs.","Fri.","Sat."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"d. mmmm',' yyyy",time_no_seconds_short:"HH:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Ielādējas grafiks... ",return_to_title:"Atgriezties uz sākumu",expand_timeline:"Izvērst grafiku",contract_timeline:"Sašaurināt grafiku",wikipedia:"No Wikipedia, brīvās enciklopēdijas",loading_content:"Ielādējas saturs",loading:"Ielādējas"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/nl.js b/ajax/libs/timelinejs/2.24/js/locale/nl.js new file mode 100755 index 000000000..ccb9babac --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/nl.js @@ -0,0 +1,2 @@ +/* Dutch LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"nl",api:{wikipedia:"nl"},date:{month:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],month_abbr:["jan","febr","maa","apr","mei","juni","juli","aug","sept","okt","nov","dec"],day:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],day_abbr:["zo","ma","di","wo","do","vr","za"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'om' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Tijdlijn laden ... ",return_to_title:"Terug naar het begin",expand_timeline:"Tijdlijn uitzoomen",contract_timeline:"Tijdlijn inzoomen",wikipedia:"From Wikipedia, the free encyclopedia",loading_content:"Inhoud laden",loading:"Laden"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/no.js b/ajax/libs/timelinejs/2.24/js/locale/no.js new file mode 100755 index 000000000..c77a41507 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/no.js @@ -0,0 +1,2 @@ +/* Norwegian LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"no",api:{wikipedia:"no"},date:{month:["Januar","Februar","Mars","April","Mai","Juni","Juli","August","September","Oktober","November","Desember"],month_abbr:["Jan.","Feb.","Mars","Apr.","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Des."],day:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],day_abbr:["Søn.","Man.","Tir.","Ons.","Tor.","Fre.","Lør."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d. mmm",full:"d. mmmm',' yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm',' yyyy''",full_long:"dddd',' d. mmm',' yyyy 'kl.' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d. mmm',' yyyy''"},messages:{loading_timeline:"Laster timeline... ",return_to_title:"Tilbake til tittel",expand_timeline:"Utvid timeline",contract_timeline:"Krymp timeline",wikipedia:"Fra Wikipedia, den frie encyklopedi",loading_content:"Laster innhold",loading:"Laster"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/pl.js b/ajax/libs/timelinejs/2.24/js/locale/pl.js new file mode 100755 index 000000000..4913148a6 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/pl.js @@ -0,0 +1,2 @@ +/* Polish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"pl",api:{wikipedia:"pl"},date:{month:["Stycznia","Lutego","Marca","Kwietnia","Maja","Czerwca","Lipca","Sierpnia","Września","Października","Listopada","Grudnia"],month_abbr:["Sty.","Lut.","Mar.","Kwi.","Maj.","Cze.","Lip.","Sie.","Wrz.","Paź.","Lis.","Gru."],day:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],day_abbr:["Nie.","Pon.","Wto.","Śro.","Czw.","Pią.","Sob."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"Ładowanie Timeline... ",return_to_title:"Wróć do tytułu",expand_timeline:"Powiększ Timeline",contract_timeline:"Zmniejsz Timeline",wikipedia:"Z Wikipedii, wolnej encyklopedii",loading_content:"Ładowanie zawartości",loading:"Ładowanie"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/pt-br.js b/ajax/libs/timelinejs/2.24/js/locale/pt-br.js new file mode 100755 index 000000000..19145e667 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/pt-br.js @@ -0,0 +1,2 @@ +/* Brazilian Portuguese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"pt-br",api:{wikipedia:"pt"},date:{month:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],month_abbr:["Jan.","Fev.","Mar.","Abr.","Mai.","Jun.","Jul.","Ago.","Set.","Out.","Nov.","Dez."],day:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sábado"],day_abbr:["Dom.","Seg.","Ter.","Qua.","Qui.","Sex.","Sáb."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm 'de' yyyy",full_short:"d 'de' mmm",full:"d 'de' mmmm',' yyyy",time_no_seconds_short:"hh:MM TT",time_no_seconds_small_date:"hh:MM TT'
'd 'de' mmmm',' yyyy''",full_long:"dddd',' d 'de' mmm',' yyyy 'às' hh:MM TT",full_long_small_date:"hh:MM TT'
'dddd',' d 'de' mmm',' yyyy''"},messages:{loading_timeline:"Carregando Timeline... ",return_to_title:"Voltar para o título",expand_timeline:"Expandir Timeline",contract_timeline:"Contrair Timeline",wikipedia:"Wikipedia, A enciclopédia livre",loading_content:"Carregando Conteúdo",loading:"Carregando"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/pt.js b/ajax/libs/timelinejs/2.24/js/locale/pt.js new file mode 100755 index 000000000..49a014670 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/pt.js @@ -0,0 +1,2 @@ +/* Portuguese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"pt",api:{wikipedia:"pt"},date:{month:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],month_abbr:["Jan","Fev","Mar","Abr","Maio","Jun","Jul","Ago","Set","Out","Nov","Dez"],day:["Domingo","Segunda","Terça","Quarta","Quinta","Sexta","Sabado"],day_abbr:["Dom","Seg","Ter","Qua","Qui","Sex","Sab"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"A carregar a timeline... ",return_to_title:"Voltar ao Título",expand_timeline:"Expandir Timeline",contract_timeline:"Colapsar Timeline",wikipedia:"Wikipedia, A enciclopedia Livre.",loading_content:"A carregar o conteúdo",loading:"A carregar"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ru.js b/ajax/libs/timelinejs/2.24/js/locale/ru.js new file mode 100755 index 000000000..750208049 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ru.js @@ -0,0 +1,2 @@ +/* Russian LANGUAGE + ================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ru",api:{wikipedia:"ru"},date:{month:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],month_abbr:["Янв.","Фев.","Март","Апр.","Май","Июнь","Июль","Авг.","Сент.","Окт.","Нояб.","Дек."],day:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],day_abbr:["Вск.","Пн.","Вт.","Ср.","Чт.","Пт.","Сб."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Загрузка... ",return_to_title:"Вернуться к заголовку",expand_timeline:"Увеличить",contract_timeline:"Уменьшить",wikipedia:"Из Wikipedia",loading_content:"Загрузка контента",loading:"Загрузка"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/sk.js b/ajax/libs/timelinejs/2.24/js/locale/sk.js new file mode 100755 index 000000000..2bf69d8bb --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/sk.js @@ -0,0 +1,2 @@ +/* Slovak LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"sk",api:{wikipedia:"sk"},date:{month:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"],month_abbr:["Jan.","Feb.","Marec","Apríl","Máj","Jún","Júl","Aug.","Sept.","Okt.","Nov.","Dec."],day:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"],day_abbr:["Ned.","Pon.","Uto.","Str.","Štv.","Pia.","Sob."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"d. mmmm',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Načítam časovú os... ",return_to_title:"Späť na úvod",expand_timeline:"Zväčšiť časovú os",contract_timeline:"Zmenšiť časovú os",wikipedia:"Z Wikipedie, encyklopédie zadarmo",loading_content:"Načítam obsah",loading:"Načítanie"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/sl.js b/ajax/libs/timelinejs/2.24/js/locale/sl.js new file mode 100755 index 000000000..39d12bd9d --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/sl.js @@ -0,0 +1,2 @@ +/* Slovenian LANGUAGE SLOVENIAN +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"sl",api:{wikipedia:"sl"},date:{month:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],month_abbr:["Jan.","Feb.","Marec","April","Maj","Junij","July","Avg.","Sept.","Okt.","Nov.","Dec."],day:["Nedelja","Ponedeljek","Torek","Sreda","Čertek","Petek","Sobota"],day_abbr:["Ned.","Pon.","Tor.","Sre.","Čet.","Pet.","Sob."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"h:MM",time_no_seconds_small_date:"h:MM' 'd mmmm' 'yyyy",full_long:"d mmm yyyy 'ob' hh:MM",full_long_small_date:"hh:MM' d mmm yyyy"},messages:{loading_timeline:"Nalagam časovni trak... ",return_to_title:"Nazaj na naslov",expand_timeline:"Razširi časovni trak",contract_timeline:"Pokrči časovni trak",wikipedia:"Vir Wikipedija",loading_content:"Nalaganje vsebine",loading:"Nalaganje"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/sr-cy.js b/ajax/libs/timelinejs/2.24/js/locale/sr-cy.js new file mode 100755 index 000000000..86f580ebd --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/sr-cy.js @@ -0,0 +1,2 @@ +/* Serbian (Cyrillic) LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"рп",api:{wikipedia:"рп"},date:{month:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],month_abbr:["Јан.","Феб.","Март","Апр.","Мај","Јун","Јул","Авг.","Сеп.","Окт.","Нов.","Дец."],day:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],day_abbr:["Нед.","Пон.","Уто.","Сре.","Чет.","Пет.","Суб."]},dateformats:{year:"yyyy.",month_short:"mmm",month:"mmmm yyyy.",full_short:"d. mmm",full:"d. mmmm yyyy.",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm yyyy.''",full_long:"d. mmm yyyy. 'u' HH:MM",full_long_small_date:"HH:MM'
d. mmm yyyy.''"},messages:{loading_timeline:"Учитавање... ",return_to_title:"Почетак",expand_timeline:"Увећај",contract_timeline:"Умањи",wikipedia:"Из Википедије, слободне енциклопедије",loading_content:"Садржај се учитава",loading:"Учитава се"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/sr.js b/ajax/libs/timelinejs/2.24/js/locale/sr.js new file mode 100755 index 000000000..fa02d9919 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/sr.js @@ -0,0 +1,2 @@ +/* Serbian (Latin) LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"sr",api:{wikipedia:"sr"},date:{month:["januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],month_abbr:["Jan.","Feb.","Mart","Apr.","Maj","Jun","Jul","Avg.","Sep.","Okt.","Nov.","Dec."],day:["Nedelja","Ponedeljak","Utorak","Sreda","Četvratk","Petak","Subota"],day_abbr:["Ned.","Pon.","Uto.","Sre.","Čet.","Pet.","Sub."]},dateformats:{year:"yyyy.",month_short:"mmm",month:"mmmm yyyy.",full_short:"d. mmm",full:"d. mmmm yyyy.",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd. mmmm yyyy.''",full_long:"d. mmm yyyy. 'u' HH:MM",full_long_small_date:"HH:MM'
d. mmm yyyy.''"},messages:{loading_timeline:"Učitavanje... ",return_to_title:"Početak",expand_timeline:"Uvećaj",contract_timeline:"Umanji",wikipedia:"Iz Vikipedije, slobodne enciklopedije",loading_content:"Sadržaj se učitava",loading:"Učitava se"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/sv.js b/ajax/libs/timelinejs/2.24/js/locale/sv.js new file mode 100755 index 000000000..90e482150 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/sv.js @@ -0,0 +1,2 @@ +/* Swedish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"sv",api:{wikipedia:"sv"},date:{month:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"],month_abbr:["jan","febr","mars","april","maj","juni","juli","aug","sept","okt","nov","dec"],day:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"],day_abbr:["sön","mån","tis","ons","tors","fre","lör"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm',' yyyy",time_no_seconds_short:"H:MM",time_no_seconds_small_date:"H:MM'
'd mmmm',' yyyy''",full_long:"d mmm',' yyyy 'vid' H:MM",full_long_small_date:"H:MM'
d mmm',' yyyy''"},messages:{loading_timeline:"Laddar tidslinje... ",return_to_title:"Tillbaka till start",expand_timeline:"Förstora tidslinje",contract_timeline:"Förminska tidslinje",wikipedia:"Från Wikipedia, den fria encyklopedin",loading_content:"Laddar innehåll",loading:"Laddar"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/ta.js b/ajax/libs/timelinejs/2.24/js/locale/ta.js new file mode 100755 index 000000000..641b9c62c --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/ta.js @@ -0,0 +1,2 @@ +/* Tamil LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"ta",api:{wikipedia:"ta"},date:{month:["ஜனவரி","பெப்ரவரி","மார்ச்","ஏப்ரல்","மே","ஜுன்","ஜுலை","ஆகஸ்ட்","செப்டம்பர்","ஒக்டோபர்","நவம்பர்","டிசம்பர்"],month_abbr:["ஜன.","பெப்.","மார்ச்","ஏப்ரல்","மே","ஜுன்","ஜுலை","ஆகஸ்ட்","செப்ட்.","ஒக்டோ.","நவம்பர்","டிசம்பர்"],day:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],day_abbr:["ஞா","தி","செ","பு","வி","வெ","சனி"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"நேரக்கோடு தரவேறுகிறது.... ",return_to_title:"தலைப்பிற்குச் செல்ல",expand_timeline:"நேரக்கோட்டை விரிக்க",contract_timeline:"நேரக்கோட்டை சுருக்க",wikipedia:"கட்டற்ற கலைக்களஞ்சியம், விக்கிப்பீடியாவிலிருந்து",loading_content:"உள்ளடக்கம் தரவேறுகிறது...",loading:"தரவேறுகிறது"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/tl.js b/ajax/libs/timelinejs/2.24/js/locale/tl.js new file mode 100755 index 000000000..211195fc6 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/tl.js @@ -0,0 +1,2 @@ +/* Tagalog LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"tl",api:{wikipedia:"tl"},date:{month:["Enemo","Pebrero","Marso","Abril","Mayo","Hunyo","Hulyo","Agosto","Setyembre","Oktubre","Nobyembre","Disyembre"],month_abbr:["Ene.","Peb.","Mar.","Abr.","Mayo","Hun.","Hul.","Ago.","Set.","Okt.","Nob.","Dis."],day:["Linggo","Lunes","Martes","Miyerkules","Huwebes","Biyernes","Sabado"],day_abbr:["Li.","L.","M.","Mi.","H.","B.","S."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"h:MM TT'
'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Loading Timeline... ",return_to_title:"Return to Title",expand_timeline:"Expand Timeline",contract_timeline:"Contract Timeline",wikipedia:"Mula sa Wikipedia, ang malayang ensiklopedya",loading_content:"Loading Content",loading:"Loading"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/tr.js b/ajax/libs/timelinejs/2.24/js/locale/tr.js new file mode 100755 index 000000000..c0f8272cc --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/tr.js @@ -0,0 +1,2 @@ +/* Turkish LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"tr",api:{wikipedia:"tr"},date:{month:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],month_abbr:["Oca.","Şub.","Mar.","Nis.","May.","Haz.","Tem.","Ağu.","Eyl.","Eki.","Kas.","Ara."],day:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],day_abbr:["Paz.","Pzt.","Sal.","Çar.","Per.","Cum.","Cts."]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm',' yyyy",time_no_seconds_short:"H:MM",time_no_seconds_small_date:"H:MM'
'd mmmm',' yyyy''",full_long:"d mmm',' yyyy 'at' H:MM",full_long_small_date:"H:MM '
d mmm',' yyyy''"},messages:{loading_timeline:"Zaman Çizelgesi Yükleniyor... ",return_to_title:"Başlığa Dön",expand_timeline:"Zaman Çizelgesini Genişlet",contract_timeline:"Zaman Çizelgesini Daralt",wikipedia:"Wikipedia'dan, özgür ansiklopedi",loading_content:"İçerik Yükleniyor",loading:"Yükleniyor"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/zh-cn.js b/ajax/libs/timelinejs/2.24/js/locale/zh-cn.js new file mode 100755 index 000000000..da00d6488 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/zh-cn.js @@ -0,0 +1,2 @@ +/* Chinese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"zh-cn",api:{wikipedia:"zh"},date:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],month_abbr:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],day:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],day_abbr:["周日","周一","周二","周三","周四","周五","周六"]},dateformats:{year:"yyyy年",month_short:"mmm",month:"yyyy年 mmmm",full_short:"mmm d",full:"yyyy年mmmm d日",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'yyyy年mmmm d日''",full_long:"dddd',' yyyy年 mmm d日'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' yyyy年 mmm d日''"},messages:{loading_timeline:"加载时间线... ",return_to_title:"回到开头",expand_timeline:"伸展时间",contract_timeline:"缩短时间",wikipedia:"来自维基百科,自由的百科全书",loading_content:"正在加载内容",loading:"加载中"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/locale/zh-tw.js b/ajax/libs/timelinejs/2.24/js/locale/zh-tw.js new file mode 100755 index 000000000..3d254d2db --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/locale/zh-tw.js @@ -0,0 +1,2 @@ +/* Taiwanese LANGUAGE +================================================== */typeof VMM!="undefined"&&(VMM.Language={lang:"zh-tw",api:{wikipedia:"zh"},date:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],month_abbr:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],day:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],day_abbr:["週日","週一","週二","週三","週四","週五","週六"]},dateformats:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"d mmm",full:"d mmmm yyyy",time_no_seconds_short:"HH:MM",time_no_seconds_small_date:"HH:MM'
'd mmmm yyyy''",full_long:"dddd',' d mmm yyyy 'um' HH:MM",full_long_small_date:"HH:MM'
'dddd',' d mmm yyyy''"},messages:{loading_timeline:"載入時間線... ",return_to_title:"回到開頭",expand_timeline:"展開時間",contract_timeline:"縮短時間",wikipedia:"擷取自維基百科, 自由之百科全書",loading_content:"載入內容",loading:"載入中"}}); \ No newline at end of file diff --git a/ajax/libs/timelinejs/2.24/js/storyjs-embed.js b/ajax/libs/timelinejs/2.24/js/storyjs-embed.js new file mode 100755 index 000000000..589a66ca9 --- /dev/null +++ b/ajax/libs/timelinejs/2.24/js/storyjs-embed.js @@ -0,0 +1,45 @@ +/*! + StoryJS + Designed and built by Zach Wise at VéritéCo + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. +*//* ********************************************** + Begin LazyLoad.js +********************************************** *//*jslint browser: true, eqeqeq: true, bitwise: true, newcap: true, immed: true, regexp: false *//* +LazyLoad makes it easy and painless to lazily load one or more external +JavaScript or CSS files on demand either during or after the rendering of a web +page. + +Supported browsers include Firefox 2+, IE6+, Safari 3+ (including Mobile +Safari), Google Chrome, and Opera 9+. Other browsers may or may not work and +are not officially supported. + +Visit https://github.com/rgrove/lazyload/ for more info. + +Copyright (c) 2011 Ryan Grove +All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the 'Software'), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +@module lazyload +@class LazyLoad +@static +@version 2.0.3 (git) +*/function getEmbedScriptPath(e){var t=document.getElementsByTagName("script"),n="",r="";for(var i=0;i40)return;l.checks++;if(l.js&&l.css&&l.font.css&&l.font.js&&l.language){if(!l.finished){l.finished=!0;N()}}else l.timeout=setTimeout("onloaded_check_again();",250)}function T(){var e="storyjs-embed";r=document.createElement("div");h.embed_id!=""?i=document.getElementById(h.embed_id):i=document.getElementById("timeline-embed");i.appendChild(r);r.setAttribute("id",h.id);if(h.width.toString().match("%"))i.style.width=h.width.split("%")[0]+"%";else{h.width=h.width-2;i.style.width=h.width+"px"}if(h.height.toString().match("%")){i.style.height=h.height;e+=" full-embed";i.style.height=h.height.split("%")[0]+"%"}else if(h.width.toString().match("%")){e+=" full-embed";h.height=h.height-16;i.style.height=h.height+"px"}else{e+=" sized-embed";h.height=h.height-16;i.style.height=h.height+"px"}i.setAttribute("class",e);i.setAttribute("className",e);r.style.position="relative"}function N(){VMM.debug=h.debug;n=new VMM.Timeline(h.id);n.init(h);o&&VMM.bindEvent(global,onHeadline,"HEADLINE")}var n,r,i,s,o=!1,u="2.23",a="1.7.1",f="",l={timeout:"",checks:0,finished:!1,js:!1,css:!1,jquery:!1,has_jquery:!1,language:!1,font:{css:!1,js:!1}},c={base:embed_path,css:embed_path+"css/",js:embed_path+"js/",locale:embed_path+"js/locale/",jquery:"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js",font:{google:!1,css:embed_path+"css/themes/font/",js:"http://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"}},h={version:u,debug:!1,type:"timeline",id:"storyjs",embed_id:"timeline-embed",embed:!0,width:"100%",height:"100%",source:"https://docs.google.com/spreadsheet/pub?key=0Agl_Dv6iEbDadFYzRjJPUGktY0NkWXFUWkVIZDNGRHc&output=html",lang:"en",font:"default",css:c.css+"timeline.css?"+u,js:"",api_keys:{google:"",flickr:"",twitter:""},gmap_key:""},p=[{name:"Merriweather-NewsCycle",google:["News+Cycle:400,700:latin","Merriweather:400,700,900:latin"]},{name:"NewsCycle-Merriweather",google:["News+Cycle:400,700:latin","Merriweather:300,400,700:latin"]},{name:"PoiretOne-Molengo",google:["Poiret+One::latin","Molengo::latin"]},{name:"Arvo-PTSans",google:["Arvo:400,700,400italic:latin","PT+Sans:400,700,400italic:latin"]},{name:"PTSerif-PTSans",google:["PT+Sans:400,700,400italic:latin","PT+Serif:400,700,400italic:latin"]},{name:"PT",google:["PT+Sans+Narrow:400,700:latin","PT+Sans:400,700,400italic:latin","PT+Serif:400,700,400italic:latin"]},{name:"DroidSerif-DroidSans",google:["Droid+Sans:400,700:latin","Droid+Serif:400,700,400italic:latin"]},{name:"Lekton-Molengo",google:["Lekton:400,700,400italic:latin","Molengo::latin"]},{name:"NixieOne-Ledger",google:["Nixie+One::latin","Ledger::latin"]},{name:"AbrilFatface-Average",google:["Average::latin","Abril+Fatface::latin"]},{name:"PlayfairDisplay-Muli",google:["Playfair+Display:400,400italic:latin","Muli:300,400,300italic,400italic:latin"]},{name:"Rancho-Gudea",google:["Rancho::latin","Gudea:400,700,400italic:latin"]},{name:"Bevan-PotanoSans",google:["Bevan::latin","Pontano+Sans::latin"]},{name:"BreeSerif-OpenSans",google:["Bree+Serif::latin","Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800:latin"]},{name:"SansitaOne-Kameron",google:["Sansita+One::latin","Kameron:400,700:latin"]},{name:"Lora-Istok",google:["Lora:400,700,400italic,700italic:latin","Istok+Web:400,700,400italic,700italic:latin"]},{name:"Pacifico-Arimo",google:["Pacifico::latin","Arimo:400,700,400italic,700italic:latin"]}];if(typeof e=="object")for(s in e)Object.prototype.hasOwnProperty.call(e,s)&&(h[s]=e[s]);typeof t!="undefined"&&(h.source=t);if(typeof url_config=="object"){o=!0;h.source.match("docs.google.com")||h.source.match("json")||h.source.match("storify")||(h.source="https://docs.google.com/spreadsheet/pub?key="+h.source+"&output=html")}if(h.js.match("locale")){h.lang=h.js.split("locale/")[1].replace(".js","");h.js=c.js+"timeline-min.js?"+u}if(!h.js.match("/")){h.css=c.css+h.type+".css?"+u;h.js=c.js+h.type;h.debug?h.js+=".js?"+u:h.js+="-min.js?"+u;h.id="storyjs-"+h.type}h.lang.match("/")?c.locale=h.lang:c.locale=c.locale+h.lang+".js?"+u;T();LoadLib.css(h.css,w);if(h.font=="default"){l.font.js=!0;l.font.css=!0}else{var d;if(h.font.match("/")){d=h.font.split(".css")[0].split("/");c.font.name=d[d.length-1];c.font.css=h.font}else{c.font.name=h.font;c.font.css=c.font.css+h.font+".css?"+u}LoadLib.css(c.font.css,E);for(var v=0;v=0)if(o[t].href===e.urls[0]){a("css");break}i+=1;e&&(i<200?setTimeout(h,50):a("css"))}}var t,n,r={},i=0,s={css:[],js:[]},o=e.styleSheets;return{css:function(e,t,n,r){l("css",e,t,n,r)},js:function(e,t,n,r){l("js",e,t,n,r)}}}(this.document);LoadLib=function(e){function n(e){var n=0,r=!1;for(n=0;n"}return s};VMM.createMediaElement=function(e,t,n){var r="",i=!1;r+="
";if(e!=null&&e!=""){valid=!0;r+="";n!=null&&n!=""&&(r+=VMM.createElement("div",n,"credit"));t!=null&&t!=""&&(r+=VMM.createElement("div",t,"caption"))}r+="
";return r};VMM.hideUrlBar=function(){var e=window,t=e.document;if(!location.hash||!e.addEventListener){window.scrollTo(0,1);var n=1,r=setInterval(function(){if(t.body){clearInterval(r);n="scrollTop"in t.body?t.body.scrollTop:1;e.scrollTo(0,n===1?0:1)}},15);e.addEventListener("load",function(){setTimeout(function(){e.scrollTo(0,n===1?0:1)},0)},!1)}}}Array.prototype.remove=function(e,t){var n=this.slice((t||e)+1||this.length);this.length=e<0?this.length+e:e;return this.push.apply(this,n)};Date.prototype.getWeek=function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil(((this-e)/864e5+e.getDay()+1)/7)};Date.prototype.getDayOfYear=function(){var e=new Date(this.getFullYear(),0,1);return Math.ceil((this-e)/864e5)};var is={Null:function(e){return e===null},Undefined:function(e){return e===undefined},nt:function(e){return e===null||e===undefined},Function:function(e){return typeof e=="function"?e.constructor.toString().match(/Function/)!==null:!1},String:function(e){return typeof e=="string"?!0:typeof e=="object"?e.constructor.toString().match(/string/i)!==null:!1},Array:function(e){return typeof e=="object"?e.constructor.toString().match(/array/i)!==null||e.length!==undefined:!1},Boolean:function(e){return typeof e=="boolean"?!0:typeof e=="object"?e.constructor.toString().match(/boolean/i)!==null:!1},Date:function(e){return typeof e=="date"?!0:typeof e=="object"?e.constructor.toString().match(/date/i)!==null:!1},HTML:function(e){return typeof e=="object"?e.constructor.toString().match(/html/i)!==null:!1},Number:function(e){return typeof e=="number"?!0:typeof e=="object"?e.constructor.toString().match(/Number/)!==null:!1},Object:function(e){return typeof e=="object"?e.constructor.toString().match(/object/i)!==null:!1},RegExp:function(e){return typeof e=="function"?e.constructor.toString().match(/regexp/i)!==null:!1}},type={of:function(e){for(var t in is)if(is[t](e))return t.toLowerCase()}};if(typeof VMM!="undefined"){VMM.smoothScrollTo=function(e,t,n){if(typeof jQuery!="undefined"){var r="easein",i=1e3;t!=null&&(t<1?i=1:i=Math.round(t));n!=null&&n!=""&&(r=n);jQuery(window).scrollTop()!=VMM.Lib.offset(e).top&&VMM.Lib.animate("html,body",i,r,{scrollTop:VMM.Lib.offset(e).top})}};VMM.attachElement=function(e,t){typeof jQuery!="undefined"&&jQuery(e).html(t)};VMM.appendElement=function(e,t){typeof jQuery!="undefined"&&jQuery(e).append(t)};VMM.getHTML=function(e){var t;if(typeof jQuery!="undefined"){t=jQuery(e).html();return t}};VMM.getElement=function(e,t){var n;if(typeof jQuery!="undefined"){t?n=jQuery(e).parent().get(0):n=jQuery(e).get(0);return n}};VMM.bindEvent=function(e,t,n,r){var i,s="click",o={};n!=null&&n!=""&&(s=n);o!=null&&o!=""&&(o=r);typeof jQuery!="undefined"&&jQuery(e).bind(s,o,t)};VMM.unbindEvent=function(e,t,n){var r,i="click",s={};n!=null&&n!=""&&(i=n);typeof jQuery!="undefined"&&jQuery(e).unbind(i,t)};VMM.fireEvent=function(e,t,n){var r,i="click",s=[];t!=null&&t!=""&&(i=t);n!=null&&n!=""&&(s=n);typeof jQuery!="undefined"&&jQuery(e).trigger(i,s)};VMM.getJSON=function(e,t,n){if(typeof jQuery!="undefined"){jQuery.ajaxSetup({timeout:3e3});if(VMM.Browser.browser=="Explorer"&&parseInt(VMM.Browser.version,10)>=7&&window.XDomainRequest){trace("IE JSON");var r=e;if(r.match("^http://"))return jQuery.getJSON(r,t,n);if(r.match("^https://")){r=r.replace("https://","http://");return jQuery.getJSON(r,t,n)}return jQuery.getJSON(e,t,n)}return jQuery.getJSON(e,t,n)}};VMM.parseJSON=function(e){if(typeof jQuery!="undefined")return jQuery.parseJSON(e)};VMM.appendAndGetElement=function(e,t,n,r){var i,s="
";r.content=i;r.raw=e;t.push(r);if(t.length==n){var o={tweetdata:t};VMM.fireEvent(global,"TWEETSLOADED",o)}}).success(function(){trace("second success")}).error(function(){trace("error")}).complete(function(){trace("complete")})}},getTweetSearch:function(e,t){var n=40;t!=null&&t!=""&&(n=t);var r="http://search.twitter.com/search.json?q="+e+"&rpp="+n+"&include_entities=true&result_type=mixed",i=[];VMM.getJSON(r,function(e){for(var t=0;t
",o="",u="",a="";t!=null&&t!=""&&(s=t);n!=null&&n!=""&&(o=n);r!=null&&r!=""&&(u=r);if(typeof jQuery!="undefined"){i=jQuery(t);i.addClass(o);i.html(u);jQuery(e).append(i)}return i};VMM.Lib={init:function(){return this},hide:function(e,t){t!=null&&t!=""?typeof jQuery!="undefined"&&jQuery(e).hide(t):typeof jQuery!="undefined"&&jQuery(e).hide()},remove:function(e){typeof jQuery!="undefined"&&jQuery(e).remove()},detach:function(e){typeof jQuery!="undefined"&&jQuery(e).detach()},append:function(e,t){typeof jQuery!="undefined"&&jQuery(e).append(t)},prepend:function(e,t){typeof jQuery!="undefined"&&jQuery(e).prepend(t)},show:function(e,t){t!=null&&t!=""?typeof jQuery!="undefined"&&jQuery(e).show(t):typeof jQuery!="undefined"&&jQuery(e).show()},load:function(e,t,n){var r={elem:e};r!=null&&r!=""&&(r=n);typeof jQuery!="undefined"&&jQuery(e).load(r,t)},addClass:function(e,t){typeof jQuery!="undefined"&&jQuery(e).addClass(t)},removeClass:function(e,t){typeof jQuery!="undefined"&&jQuery(e).removeClass(t)},attr:function(e,t,n){if(n!=null&&n!="")typeof jQuery!="undefined"&&jQuery(e).attr(t,n);else if(typeof jQuery!="undefined")return jQuery(e).attr(t)},prop:function(e,t,n){typeof jQuery=="undefined"||!/[1-9]\.[3-9].[1-9]/.test(jQuery.fn.jquery)?VMM.Lib.attribute(e,t,n):jQuery(e).prop(t,n)},attribute:function(e,t,n){if(n!=null&&n!="")typeof jQuery!="undefined"&&jQuery(e).attr(t,n);else if(typeof jQuery!="undefined")return jQuery(e).attr(t)},visible:function(e,t){if(t!=null)typeof jQuery!="undefined"&&(t?jQuery(e).show(0):jQuery(e).hide(0));else if(typeof jQuery!="undefined")return jQuery(e).is(":visible")?!0:!1},css:function(e,t,n){if(n!=null&&n!="")typeof jQuery!="undefined"&&jQuery(e).css(t,n);else if(typeof jQuery!="undefined")return jQuery(e).css(t)},cssmultiple:function(e,t){if(typeof jQuery!="undefined")return jQuery(e).css(t)},offset:function(e){var t;typeof jQuery!="undefined"&&(t=jQuery(e).offset());return t},position:function(e){var t;typeof jQuery!="undefined"&&(t=jQuery(e).position());return t},width:function(e,t){if(t!=null&&t!="")typeof jQuery!="undefined"&&jQuery(e).width(t);else if(typeof jQuery!="undefined")return jQuery(e).width()},height:function(e,t){if(t!=null&&t!="")typeof jQuery!="undefined"&&jQuery(e).height(t);else if(typeof jQuery!="undefined")return jQuery(e).height()},toggleClass:function(e,t){typeof jQuery!="undefined"&&jQuery(e).toggleClass(t)},each:function(e,t){typeof jQuery!="undefined"&&jQuery(e).each(t)},html:function(e,t){var n;if(typeof jQuery!="undefined"){n=jQuery(e).html();return n}if(t!=null&&t!="")typeof jQuery!="undefined"&&jQuery(e).html(t);else{var n;if(typeof jQuery!="undefined"){n=jQuery(e).html();return n}}},find:function(e,t){if(typeof jQuery!="undefined")return jQuery(e).find(t)},stop:function(e){typeof jQuery!="undefined"&&jQuery(e).stop()},delay_animate:function(e,t,n,r,i,s){if(VMM.Browser.device=="mobile"||VMM.Browser.device=="tablet"){var o=Math.round(n/1500*10)/10,u=o+"s";VMM.Lib.css(t,"-webkit-transition","all "+u+" ease");VMM.Lib.css(t,"-moz-transition","all "+u+" ease");VMM.Lib.css(t,"-o-transition","all "+u+" ease");VMM.Lib.css(t,"-ms-transition","all "+u+" ease");VMM.Lib.css(t,"transition","all "+u+" ease");VMM.Lib.cssmultiple(t,_att)}else typeof jQuery!="undefined"&&jQuery(t).delay(e).animate(i,{duration:n,easing:r})},animate:function(e,t,n,r,i,s){var o="easein",u=!1,a=1e3,f={};t!=null&&(t<1?a=1:a=Math.round(t));n!=null&&n!=""&&(o=n);i!=null&&i!=""&&(u=i);r!=null?f=r:f={opacity:0};if(VMM.Browser.device=="mobile"||VMM.Browser.device=="tablet"){var l=Math.round(a/1500*10)/10,c=l+"s";o=" cubic-bezier(0.33, 0.66, 0.66, 1)";for(x in f)if(Object.prototype.hasOwnProperty.call(f,x)){trace(x+" to "+f[x]);VMM.Lib.css(e,"-webkit-transition",x+" "+c+o);VMM.Lib.css(e,"-moz-transition",x+" "+c+o);VMM.Lib.css(e,"-o-transition",x+" "+c+o);VMM.Lib.css(e,"-ms-transition",x+" "+c+o);VMM.Lib.css(e,"transition",x+" "+c+o)}VMM.Lib.cssmultiple(e,f)}else typeof jQuery!="undefined"&&(s!=null&&s!=""?jQuery(e).animate(f,{queue:u,duration:a,easing:o,complete:s}):jQuery(e).animate(f,{queue:u,duration:a,easing:o}))}}}if(typeof jQuery!="undefined"){(function(e){window.XDomainRequest&&e.ajaxTransport(function(t){if(t.crossDomain&&t.async){if(t.timeout){t.xdrTimeout=t.timeout;delete t.timeout}var n;return{send:function(r,i){function o(t,r,s,o){n.onload=n.onerror=n.ontimeout=e.noop;n=undefined;i(t,r,s,o)}n=new XDomainRequest;n.open(t.type,t.url);n.onload=function(){o(200,"OK",{text:n.responseText},"Content-Type: "+n.contentType)};n.onerror=function(){o(404,"Not Found")};if(t.xdrTimeout){n.ontimeout=function(){o(0,"timeout")};n.timeout=t.xdrTimeout}n.send(t.hasContent&&t.data||null)},abort:function(){if(n){n.onerror=e.noop();n.abort()}}}}})})(jQuery);jQuery.easing.jswing=jQuery.easing.swing;jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,t,n,r,i){return jQuery.easing[jQuery.easing.def](e,t,n,r,i)},easeInExpo:function(e,t,n,r,i){return t==0?n:r*Math.pow(2,10*(t/i-1))+n},easeOutExpo:function(e,t,n,r,i){return t==i?n+r:r*(-Math.pow(2,-10*t/i)+1)+n},easeInOutExpo:function(e,t,n,r,i){return t==0?n:t==i?n+r:(t/=i/2)<1?r/2*Math.pow(2,10*(t-1))+n:r/2*(-Math.pow(2,-10*--t)+2)+n},easeInQuad:function(e,t,n,r,i){return r*(t/=i)*t+n},easeOutQuad:function(e,t,n,r,i){return-r*(t/=i)*(t-2)+n},easeInOutQuad:function(e,t,n,r,i){return(t/=i/2)<1?r/2*t*t+n:-r/2*(--t*(t-2)-1)+n}})}if(typeof VMM!="undefined"&&typeof VMM.Browser=="undefined"){VMM.Browser={init:function(){this.browser=this.searchString(this.dataBrowser)||"An unknown browser";this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"an unknown version";this.OS=this.searchString(this.dataOS)||"an unknown OS";this.device=this.searchDevice(navigator.userAgent);this.orientation=this.searchOrientation(window.orientation)},searchOrientation:function(e){var t="";e==0||e==180?t="portrait":e==90||e==-90?t="landscape":t="normal";return t},searchDevice:function(e){var t="";e.match(/Android/i)||e.match(/iPhone|iPod/i)?t="mobile":e.match(/iPad/i)?t="tablet":e.match(/BlackBerry/i)||e.match(/IEMobile/i)?t="other mobile":t="desktop";return t},searchString:function(e){for(var t=0;t'mmmm d',' yyyy''",full_long:"mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
mmm d',' yyyy''"},month:["January","February","March","April","May","June","July","August","September","October","November","December"],month_abbr:["Jan.","Feb.","March","April","May","June","July","Aug.","Sept.","Oct.","Nov.","Dec."],day:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],day_abbr:["Sun.","Mon.","Tues.","Wed.","Thurs.","Fri.","Sat."],hour:[1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11,12],hour_suffix:["am"],bc_format:{year:"yyyy",month_short:"mmm",month:"mmmm yyyy",full_short:"mmm d",full:"mmmm d',' yyyy",time_no_seconds_short:"h:MM TT",time_no_seconds_small_date:"dddd', 'h:MM TT'
'mmmm d',' yyyy''",full_long:"dddd',' mmm d',' yyyy 'at' hh:MM TT",full_long_small_date:"hh:MM TT'
'dddd',' mmm d',' yyyy''"},setLanguage:function(e){trace("SET DATE LANGUAGE");VMM.Date.dateformats=e.dateformats;VMM.Date.month=e.date.month;VMM.Date.month_abbr=e.date.month_abbr;VMM.Date.day=e.date.day;VMM.Date.day_abbr=e.date.day_abbr;dateFormat.i18n.dayNames=e.date.day_abbr.concat(e.date.day);dateFormat.i18n.monthNames=e.date.month_abbr.concat(e.date.month)},parse:function(e,t){"use strict";var n,r,i,s,o={year:!1,month:!1,day:!1,hour:!1,minute:!1,second:!1,millisecond:!1};if(type.of(e)=="date")n=e;else{n=new Date(0,0,1,0,0,0,0);if(e.match(/,/gi)){r=e.split(",");for(var u=0;u=0){n.setHours(i[0]);o.hour=!0}if(i[1]>=0){n.setMinutes(i[1]);o.minute=!0}if(i[2]>=0){n.setSeconds(i[2]);o.second=!0}if(i[3]>=0){n.setMilliseconds(i[3]);o.millisecond=!0}}r=s[0].split("/")}else r=e.split("/");if(r[2]){n.setFullYear(r[2]);o.year=!0}if(r[0]>=0){n.setMonth(r[0]-1);o.month=!0}if(r[1]>=0)if(r[1].length>2){n.setFullYear(r[1]);o.year=!0}else{n.setDate(r[1]);o.day=!0}}else if(e.match("now")){var a=new Date;n.setFullYear(a.getFullYear());o.year=!0;n.setMonth(a.getMonth());o.month=!0;n.setDate(a.getDate());o.day=!0;if(e.match("hours")){n.setHours(a.getHours());o.hour=!0}if(e.match("minutes")){n.setHours(a.getHours());n.setMinutes(a.getMinutes());o.hour=!0;o.minute=!0}if(e.match("seconds")){n.setHours(a.getHours());n.setMinutes(a.getMinutes());n.setSeconds(a.getSeconds());o.hour=!0;o.minute=!0;o.second=!0}if(e.match("milliseconds")){n.setHours(a.getHours());n.setMinutes(a.getMinutes());n.setSeconds(a.getSeconds());n.setMilliseconds(a.getMilliseconds());o.hour=!0;o.minute=!0;o.second=!0;o.millisecond=!0}}else if(e.length<=5){o.year=!0;n.setFullYear(parseInt(e,10));n.setMonth(0);n.setDate(1);n.setHours(0);n.setMinutes(0);n.setSeconds(0);n.setMilliseconds(0)}else if(e.match("T"))if(navigator.userAgent.match(/MSIE\s(?!9.0)/)){s=e.split("T");if(e.match(":")){i=s[1].split(":");if(i[0]>=1){n.setHours(i[0]);o.hour=!0}if(i[1]>=1){n.setMinutes(i[1]);o.minute=!0}if(i[2]>=1){n.setSeconds(i[2]);o.second=!0}if(i[3]>=1){n.setMilliseconds(i[3]);o.millisecond=!0}}r=s[0].split("-");if(r[0]){n.setFullYear(r[0]);o.year=!0}if(r[1]>=0){n.setMonth(r[1]-1);o.month=!0}if(r[2]>=0){n.setDate(r[2]);o.day=!0}}else n=new Date(Date.parse(e));else{o.year=!0;o.month=!0;o.day=!0;o.hour=!0;o.minute=!0;o.second=!0;o.millisecond=!0;n=new Date(parseInt(e.slice(0,4),10),parseInt(e.slice(4,6),10)-1,parseInt(e.slice(6,8),10),parseInt(e.slice(8,10),10),parseInt(e.slice(10,12),10))}}return t!=null&&t!=""?{date:n,precision:o}:n},prettyDate:function(e,t,n,r){var i,s,o,u,a=!1,f,l,c;if(r!=null&&r!=""&&typeof r!="undefined"){a=!0;trace("D2 "+r)}if(type.of(e)=="date"){type.of(n)=="object"?n.millisecond||n.second||n.minute?t?o=VMM.Date.dateformats.time_no_seconds_short:o=VMM.Date.dateformats.time_no_seconds_small_date:n.hour?t?o=VMM.Date.dateformats.time_no_seconds_short:o=VMM.Date.dateformats.time_no_seconds_small_date:n.day?t?o=VMM.Date.dateformats.full_short:o=VMM.Date.dateformats.full:n.month?t?o=VMM.Date.dateformats.month_short:o=VMM.Date.dateformats.month:n.year?o=VMM.Date.dateformats.year:o=VMM.Date.dateformats.year:e.getMonth()===0&&e.getDate()==1&&e.getHours()===0&&e.getMinutes()===0?o=VMM.Date.dateformats.year:e.getDate()<=1&&e.getHours()===0&&e.getMinutes()===0?t?o=VMM.Date.dateformats.month_short:o=VMM.Date.dateformats.month:e.getHours()===0&&e.getMinutes()===0?t?o=VMM.Date.dateformats.full_short:o=VMM.Date.dateformats.full:e.getMinutes()===0?t?o=VMM.Date.dateformats.time_no_seconds_short:o=VMM.Date.dateformats.time_no_seconds_small_date:t?o=VMM.Date.dateformats.time_no_seconds_short:o=VMM.Date.dateformats.full_long;i=dateFormat(e,o,!1);u=i.split(" ");for(var h=0;h99?Math.round(m/10):m),t:p<12?"a":"p",tt:p<12?"am":"pm",T:p<12?"A":"P",TT:p<12?"AM":"PM",Z:o?"UTC":(String(i).match(t)||[""]).pop().replace(n,""),o:(g>0?"-":"+")+r(Math.floor(Math.abs(g)/60)*100+Math.abs(g)%60,4),S:["th","st","nd","rd"][f%10>3?0:(f%100-f%10!=10)*f%10]};return s.replace(e,function(e){return e in y?y[e]:e.slice(1,e.length-1)})}}();dateFormat.masks={"default":"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:ss",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"};dateFormat.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"]};Date.prototype.format=function(e,t){return dateFormat(this,e,t)}}typeof VMM!="undefined"&&typeof VMM.Util=="undefined"&&(VMM.Util={init:function(){return this},correctProtocol:function(e){var t=window.parent.location.protocol.toString(),n="",r=e.split("://",2);t.match("http")?n=t:n="https";return n+"://"+r[1]},mergeConfig:function(e,t){var n;for(n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},getObjectAttributeByIndex:function(e,t){if(typeof e!="undefined"){var n=0;for(var r in e){if(t===n)return e[r];n++}return""}return""},ordinal:function(e){return["th","st","nd","rd"][!(e%10>3||Math.floor(e%100/10)==1)*(e%10)]},randomBetween:function(e,t){return Math.floor(Math.random()*(t-e+1)+e)},average:function(e){var t={mean:0,variance:0,deviation:0},n=e.length;for(var r,i=0,s=n;s--;i+=e[s]);for(r=t.mean=i/n,s=n,i=0;s--;i+=Math.pow(e[s]-r,2));return t.deviation=Math.sqrt(t.variance=i/n),t},customSort:function(e,t){var n=e,r=t;return n==r?0:n>r?1:-1},deDupeArray:function(e){var t,n=e.length,r=[],i={};for(t=0;tt){i.height=t;i.width=Math.round(t/r*n);i.width>e&&trace("FIT: DIDN'T FIT!!! ")}return i},r16_9:function(e,t){if(e!==null&&e!=="")return Math.round(t/16*9);if(t!==null&&t!=="")return Math.round(e/9*16)},r4_3:function(e,t){if(e!==null&&e!=="")return Math.round(t/4*3);if(t!==null&&t!=="")return Math.round(e/3*4)}},doubledigit:function(e){return(e<10?"0":"")+e},truncateWords:function(e,t,n){t||(t=30);n||(n=t);var r=/^[^A-Za-z0-9\'\-]+/gi,i=e.replace(r,""),s=i.split(" "),o=[];t=Math.min(s.length,t);n=Math.min(s.length,n);for(var u=0;u$&
").replace(i,"$1$2").replace(s,"$1")},linkify_with_twitter:function(e,t,n){function u(e){var t=/(\b(https?|ftp|file):\/\/([-A-Z0-9+&@#%?=~_|!:,.;]*)([-A-Z0-9+&@#%?\/=~_|!:,.;]*)[-A-Z0-9+&@#\/%=~_|])/ig;return e.replace(t,"$3")}var r=/\b(?:https?|ftp):\/\/[a-z0-9-+&@#\/%?=~_|!:,.;]*[a-z0-9-+&@#\/%=~_|]/gim,i=/(\()((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\))|(\[)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\])|(\{)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(\})|(<|&(?:lt|#60|#x3c);)((?:ht|f)tps?:\/\/[a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]+)(>|&(?:gt|#62|#x3e);)|((?:^|[^=\s'"\]])\s*['"]?|[^=\s]\s+)(\b(?:ht|f)tps?:\/\/[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]+(?:(?!&(?:gt|#0*62|#x0*3e);|&(?:amp|apos|quot|#0*3[49]|#x0*2[27]);[.!&',:?;]?(?:[^a-z0-9\-._~!$&'()*+,;=:\/?#[\]@%]|$))&[a-z0-9\-._~!$'()*+,;=:\/?#[\]@%]*)*[a-z0-9\-_~$()*+=\/#[\]@%])/img,s='$1$4$7$10$13$2$5$8$11$14$3$6$9$12',o=/(^|[^\/])(www\.[\S]+(\b|$))/gim,a=/(([a-zA-Z0-9_\-\.]+)@[a-zA-Z_]+?(?:\.[a-zA-Z]{2,6}))+/gim,f=/\B@([\w-]+)/gm,l=/(#([\w]+))/g;return e.replace(i,s).replace(o,"$1$2").replace(a,"$1").replace(f,"@$1")},linkify_wikipedia:function(e){var t=/]*>(.*?)<\/i>/gim;return e.replace(t,"$&").replace(/]*>/gim,"").replace(/<\/i>/gim,"").replace(/]*>/gim,"").replace(/<\/b>/gim,"")},unlinkify:function(e){if(!e)return e;e=e.replace(/]*>/i,"");e=e.replace(/<\/a>/i,"");return e},untagify:function(e){if(!e)return e;e=e.replace(/<\s*\w.*?>/g,"");return e},nl2br:function(e){return e.replace(/(\r\n|[\r\n]|\\n|\\r)/g,"
")},unique_ID:function(e){var t=function(e){return Math.floor(Math.random()*e)},n=function(){var e="abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";return e.substr(t(62),1)},r=function(e){var t="";for(var r=0;r1?"."+x[1]:"";var t=/(\d+)(\d{3})/;while(t.test(x1))x1=x1.replace(t,"$1,$2");return x1+x2},toTitleCase:function(e){if(VMM.Browser.browser=="Explorer"&&parseInt(VMM.Browser.version,10)>=7)return e.replace("_","%20");var t={__smallWords:["a","an","and","as","at","but","by","en","for","if","in","of","on","or","the","to","v[.]?","via","vs[.]?"],init:function(){this.__smallRE=this.__smallWords.join("|");this.__lowerCaseWordsRE=new RegExp("\\b("+this.__smallRE+")\\b","gi");this.__firstWordRE=new RegExp("^([^a-zA-Z0-9 \\r\\n\\t]*)("+this.__smallRE+")\\b","gi");this.__lastWordRE=new RegExp("\\b("+this.__smallRE+")([^a-zA-Z0-9 \\r\\n\\t]*)$","gi")},toTitleCase:function(e){var t="",n=e.split(/([:.;?!][ ]|(?:[ ]|^)["“])/);for(var r=0;r=0)if(o[t].href===e.urls[0]){a("css");break}i+=1;e&&(i<200?setTimeout(h,50):a("css"))}}var t,n,r={},i=0,s={css:[],js:[]},o=e.styleSheets;return{css:function(e,t,n,r){l("css",e,t,n,r)},js:function(e,t,n,r){l("js",e,t,n,r)}}}(this.document);LoadLib=function(e){function n(e){var n=0,r=!1;for(n=0;n'mmmm d',' yyyy''" +,full_long:"mmm d',' yyyy 'at' h:MM TT",full_long_small_date:"h:MM TT'
mmm d',' yyyy''"},messages:{loading_timeline:"Loading Timeline... ",return_to_title:"Return to Title",expand_timeline:"Expand Timeline",contract_timeline:"Contract Timeline",wikipedia:"From Wikipedia, the free encyclopedia",loading_content:"Loading Content",loading:"Loading"}});typeof VMM!="undefined"&&typeof VMM.ExternalAPI=="undefined"&&(VMM.ExternalAPI={keys:{google:"",flickr:"",twitter:""},keys_master:{vp:"Pellentesque nibh felis, eleifend id, commodo in, interdum vitae, leo",flickr:"RAIvxHY4hE/Elm5cieh4X5ptMyDpj7MYIxziGxi0WGCcy1s+yr7rKQ==",google:"jwNGnYw4hE9lmAez4ll0QD+jo6SKBJFknkopLS4FrSAuGfIwyj57AusuR0s8dAo=",twitter:""},init:function(){return this},setKeys:function(e){VMM.ExternalAPI.keys=e},pushQues:function(){VMM.master_config.googlemaps.active&&VMM.ExternalAPI.googlemaps.pushQue();VMM.master_config.youtube.active&&VMM.ExternalAPI.youtube.pushQue();VMM.master_config.soundcloud.active&&VMM.ExternalAPI.soundcloud.pushQue();VMM.master_config.googledocs.active&&VMM.ExternalAPI.googledocs.pushQue();VMM.master_config.googleplus.active&&VMM.ExternalAPI.googleplus.pushQue();VMM.master_config.wikipedia.active&&VMM.ExternalAPI.wikipedia.pushQue();VMM.master_config.vimeo.active&&VMM.ExternalAPI.vimeo.pushQue();VMM.master_config.vine.active&&VMM.ExternalAPI.vine.pushQue();VMM.master_config.twitter.active&&VMM.ExternalAPI.twitter.pushQue();VMM.master_config.flickr.active&&VMM.ExternalAPI.flickr.pushQue();VMM.master_config.webthumb.active&&VMM.ExternalAPI.webthumb.pushQue()},twitter:{tweetArray:[],get:function(e){var t={mid:e.id,id:e.uid};VMM.master_config.twitter.que.push(t);VMM.master_config.twitter.active=!0},create:function(e,t){var n=e.mid.toString(),r={twitterid:e.mid},i="http://api.twitter.com/1/statuses/show.json?id="+e.mid+"&include_entities=true&callback=?";VMM.ExternalAPI.twitter.getOEmbed(e,t)},errorTimeOut:function(e){trace("TWITTER JSON ERROR TIMEOUT "+e.mid);VMM.attachElement("#"+e.id.toString(),VMM.MediaElement.loadingmessage("Still waiting on Twitter: "+e.mid));VMM.getJSON("http://api.twitter.com/1/account/rate_limit_status.json",function(t){trace("REMAINING TWITTER API CALLS "+t.remaining_hits);trace("TWITTER RATE LIMIT WILL RESET AT "+t.reset_time);var n="";if(t.remaining_hits==0){n="

You've reached the maximum number of tweets you can load in an hour.

";n+="

You can view tweets again starting at:
"+t.reset_time+"

"}else n="

Still waiting on Twitter. "+e.mid+"

";VMM.attachElement("#"+e.id.toString(),VMM.MediaElement.loadingmessage(n))})},pushQue:function(){if(VMM.master_config.twitter.que.length>0){VMM.ExternalAPI.twitter.create(VMM.master_config.twitter.que[0],VMM.ExternalAPI.twitter.pushQue);VMM.master_config.twitter.que.remove(0)}},getOEmbed:function(e,t){var n="http://api.twitter.com/1/statuses/oembed.json?id="+e.mid+"&omit_script=true&include_entities=true&callback=?";VMM.getJSON(n,function(t){var n="",r="";n+=t.html.split("

—")[0]+"

";r=t.author_url.split("twitter.com/")[1];n+="";VMM.attachElement("#"+e.id.toString(),n);VMM.attachElement("#text_thumb_"+e.id.toString(),t.html);VMM.attachElement("#marker_content_"+e.id.toString(),t.html)}).error(function(t,n,r){trace("TWITTER error");trace("TWITTER ERROR: "+n+" "+t.responseText);VMM.attachElement("#"+e.id,VMM.MediaElement.loadingmessage("ERROR LOADING TWEET "+e.mid))}).success(function(e){t()})},getHTML:function(e){var t="http://api.twitter.com/1/statuses/oembed.json?id="+e+"&omit_script=true&include_entities=true&callback=?";VMM.getJSON(t,VMM.ExternalAPI.twitter.onJSONLoaded)},onJSONLoaded:function(e){trace("TWITTER JSON LOADED");var t=e.id;VMM.attachElement("#"+t,VMM.Util.linkify_with_twitter(e.html))},parseTwitterDate:function(e){var t=new Date(Date.parse(e));return t},prettyParseTwitterDate:function(e){var t=new Date(Date.parse(e));return VMM.Date.prettyDate(t,!0)},getTweets:function(e){var t=[],n=e.length;for(var r=0;r