1 // Init log level 2 var gsb_loglevel = 'error'; 3 /* Start logging */ 4 /*! 5 * GSB-Plugin zur Bereitstellung von globalen Logging-Methoden 6 * Benoetigt Variable "gsb_loglevel" aus global.js, ueberschreibbar durch Konfigurationseintrag "/BGHWeb/SiteGlobals/_config/JSLogWarnlevel" 7 * 8 * Author: rkrusenb 9 * --GSBDocStart 10 * @module logging 11 * @version 1.1.0 12 * @see {@link http://semver.org|Semantic Versioning} 13 * @author rkrusenb 14 * 15 * @desc GSB-Plugin zur Bereitstellung von globalen Logging-Methoden 16 * Benoetigt Variable "gsb_loglevel" aus global.js, ueberschreibbar durch Konfigurationseintrag "/BGHWeb/SiteGlobals/_config/JSLogWarnlevel" 17 *--GSBDocEnd 18 */ 19var gsb;gsb=gsb||{};(function(namespace){var loglevels={log:4,warn:2,error:1,none:0},loglevel=gsb_loglevel,hiddenMessages=[],env,deferred;function consoleExists(method){if(!method){return typeof console!=="undefined";}else{return typeof console!=="undefined"&&typeof console[method]==="function";}}function wrap(method){return function(){hiddenMessages.push([method,arguments]);};}function flushHiddenMessages(){var i,l,temp,method,args;if(consoleExists()){for(i=0,l=hiddenMessages.length;i<l;i++){temp=hiddenMessages[i],method=temp[0],args=temp[1];if(consoleExists(method)){hiddenMessages[i]=null;env[method].apply(null,args);}}hiddenMessages=hiddenMessages.filter(function(value){return value!==null;});}}function setLogLevel(newLevel){loglevel=newLevel;["error","warn","log"].forEach(function(str){if(loglevels[str]===loglevels["error"]){if(loglevels[newLevel]>=loglevels["error"]&&consoleExists("error")){namespace.error=env.error;}else{namespace.error=deferred.error;}}else{if(loglevels[str]===loglevels["warn"]){if(loglevels[newLevel]>=loglevels["warn"]&&consoleExists("warn")){namespace.warn=env.warn;}else{namespace.warn=deferred.warn;}}else{if(loglevels[newLevel]>=loglevels["log"]&&consoleExists("log")){namespace[str]=env.log;}else{namespace[str]=deferred.log;}}}});}env={log:console.log.bind(console),warn:console.warn.bind(console),error:console.error.bind(console)};deferred={log:wrap("log"),warn:wrap("warn"),error:wrap("error")};setLogLevel(loglevel);if(typeof localStorage!=="undefined"&&typeof localStorage.getItem==="function"&&localStorage.getItem("gsb_frontend_loglevel")){setLogLevel(localStorage.getItem("gsb_frontend_loglevel"));}namespace.flushHiddenMessages=flushHiddenMessages;})(gsb); 20 /* Ende logging */ 21 /* Start variables_LABELS */ 22 var PRINT_PAGE_TEXT = 'drucken'; 23 var PRINT_TOOLTIP = 'Seite drucken (öffnet Dialog)'; 24 var NAV_MOBILE_MENU = 'Menü'; 25 var NAV_MOBILE_SEARCH = 'Suchen'; 26 var SHOW_LESS = 'Weniger anzeigen'; 27 var SHOW_MORE = 'Mehr anzeigen'; 28 var CLOSE = 'Schließen'; 29 var NEXT = 'Nächste Seite'; 30 var BACK = 'Vorherige Seite'; 31 var NEXT_INACTIVE = 'Keine nächste Seite'; 32 var BACK_INACTIVE = 'Keine vorherige Seite'; 33 var PLAY = 'Animation starten'; 34 var PAUSE = 'Animation stoppen'; 35 var PAGE = 'Seite'; 36 /* Ende variables_LABELS */ 37 /* Start variables_JSON */ 38 var json_url_mobileMenu = 'SiteGlobals/Modules/MobileNavigation/DE/Allgemein/MobileNavigation.html?view=renderMobileNavigation'; 39 var json_url_mobileSearch = 'SiteGlobals/Forms/Suche/Servicesuche_Autosuggest_Formular.html?view=renderJSON'; 40 /* Ende variables_JSON */ 41 /* Start variables_IMG */ 42 var image_url_close = '/SiteGlobals/Frontend/Images/icons/close-b.svg?__blob=normal&v=1'; 43 var image_url_next = '/SiteGlobals/Frontend/Images/icons/next-upright.svg?__blob=normal&v=1'; 44 var image_url_back = '/SiteGlobals/Frontend/Images/icons/back-upright.svg?__blob=normal&v=1'; 45 var image_url_back_g = '/SiteGlobals/Frontend/Images/icons/back-g-upright.svg?__blob=normal&v=1'; 46 var image_url_next_g = '/SiteGlobals/Frontend/Images/icons/next-g-upright.svg?__blob=normal&v=1'; 47 var image_url_close_w = '/SiteGlobals/Frontend/Images/icons/close-w.svg?__blob=normal&v=1'; 48 var image_url_loupe_b = '/SiteGlobals/Frontend/Images/icons/loupe-b.svg?__blob=normal&v=1'; 49 var image_url_paused = '/SiteGlobals/Frontend/Images/icons/pause.svg?__blob=normal&v=1'; 50 var image_url_play = '/SiteGlobals/Frontend/Images/icons/play.svg?__blob=normal&v=1'; 51 var image_url_gebaerdensprache = '/SiteGlobals/Frontend/Images/icons/gebaerdensprache-w.svg?__blob=normal&v=1'; 52 var image_url_leichtesprache = '/SiteGlobals/Frontend/Images/icons/leichte-sprache-w.svg?__blob=normal&v=1'; 53 /* Ende variables_IMG */ 54 /* Start custom.modernizr */ 55 /*! Modernizr 2.6.2 (Custom Build) | MIT & BSD 56 * Build: http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load 57 * --GSBDocStart 58 * @module Modernizr (Custom Build) 59 * @version 2.6.2 60 * @see {@link http://modernizr.com/download/#-inlinesvg-svg-svgclippaths-touch-shiv-mq-cssclasses-teststyles-prefixes-ie8compat-load} 61 * @author Faruk AteÅ 62 * @license MIT & MIT-BSD license 63 * 64 * @desc Informiert darüber, welche HTML, CSS und Javascripts Features der Benutzer sieht. 65 *--GSBDocEnd 66 */ 67window.Modernizr=function(a,b,c){function y(a){j.cssText=a;}function z(a,b){return y(m.join(a+";")+(b||""));}function A(a,b){return typeof a===b;}
67function B(a,b){return !!~(""+a).indexOf(b);}function C(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c){return d===!1?a[e]:A(f,"function")?f.bind(d||b):f;}}return !1;}var d="2.6.2",e={},f=!0,g=b.documentElement,h="modernizr",i=b.createElement(h),j=i.style,k,l={}.toString,m=" -webkit- -moz- -o- -ms- ".split(" "),n={svg:"http://www.w3.org/2000/svg"},o={},p={},q={},r=[],s=r.slice,t,u=function(a,c,d,e){var f,i,j,k,l=b.createElement("div"),m=b.body,n=m||b.createElement("body");if(parseInt(d,10)){while(d--){j=b.createElement("div"),j.id=e?e[d]:h+(d+1),l.appendChild(j);}}return f=["­",'<style id="s',h,'">',a,"</style>"].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i;},v=function(b){var c=a.matchMedia||a.msMatchMedia;if(c){return c(b).matches;}var d;return u("@media "+b+" { #"+h+" { position: absolute; } }",function(b){d=(a.getComputedStyle?getComputedStyle(b,null):b.currentStyle)["position"]=="absolute";}),d;},w={}.hasOwnProperty,x;!A(w,"undefined")&&!A(w.call,"undefined")?x=function(a,b){return w.call(a,b);}:x=function(a,b){return b in a&&A(a.constructor.prototype[b],"undefined");},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function"){throw new TypeError;}var d=s.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(s.call(arguments)));return Object(g)===g?g:f;}return c.apply(b,d.concat(s.call(arguments)));};return e;}),o.touch=function(){var c;return"ontouchstart" in a||a.DocumentTouch&&b instanceof DocumentTouch?c=!0:u(["@media (",m.join("touch-enabled),("),h,")","{#modernizr{top:9px;position:absolute}}"].join(""),function(a){c=a.offsetTop===9;}),c;},o.svg=function(){return !!b.createElementNS&&!!b.createElementNS(n.svg,"svg").createSVGRect;},o.inlinesvg=function(){var a=b.createElement("div");return a.innerHTML="<svg/>",(a.firstChild&&a.firstChild.namespaceURI)==n.svg;},o.svgclippaths=function(){return !!b.createElementNS&&/SVGClipPath/.test(l.call(b.createElementNS(n.svg,"clipPath")));};for(var D in o){x(o,D)&&(t=D.toLowerCase(),e[t]=o[D](),r.push((e[t]?"":"no-")+t));}return e.addTest=function(a,b){if(typeof a=="object"){for(var d in a){x(a,d)&&e.addTest(d,a[d]);}}else{a=a.toLowerCase();if(e[a]!==c){return e;}b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b;}return e;},y(""),i=k=null,function(a,b){function k(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild);}function l(){var a=r.elements;return typeof a=="string"?a.split(" "):a;}function m(a){var b=i[a[g]];return b||(b={},h++,a[g]=h,i[h]=b),b;}function n(a,c,f){c||(c=b);if(j){return c.createElement(a);}f||(f=m(c));var g;return f.cache[a]?g=f.cache[a].cloneNode():e.test(a)?g=(f.cache[a]=f.createElem(a)).cloneNode():g=f.createElem(a),g.canHaveChildren&&!d.test(a)?f.frag.appendChild(g):g;}function o(a,c){a||(a=b);if(j){return a.createDocumentFragment();}c=c||m(a);var d=c.frag.cloneNode(),e=0,f=l(),g=f.length;for(;e<g;e++){d.createElement(f[e]);}return d;}function p(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return r.shivMethods?n(c,a,b):b.createElem(c);},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+l().join().replace(/\w+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")';})+");return n}")(r,b.frag);}function q(a){a||(a=b);var c=m(a);return r.shivCSS&&!f&&!c.hasCSS&&(c.hasCSS=!!k(a,"article,aside,figcaption,figure,footer,header,hgroup,nav,section{display:block}mark{background:#FF0;color:#000}")),j||p(a,c),a;}var c=a.html5||{},d=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,e=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,f,g="_html5shiv",h=0,i={},j;(function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",f="hidden" in a,j=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined";}();}catch(c){f=!0,j=!0;}})();var r={elements:c.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",shivCSS:c.shivCSS!==!1,supportsUnknownElements:j,shivMethods:c.shivMethods!==!1,type:"default",shivDocument:q,createElement:n,createDocumentFragment:o};a.html5=r,q(b);}(this,b),e._version=d,e._prefixes=m,e.mq=v,e.testStyles=u,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+r.join(" "):""),e;}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a);}function e(a){return"string"==typeof a;}function f(){}
67function g(a){return !a||"loaded"==a||"complete"==a||"uninitialized"==a;}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1);},0):(a(),h()):q=0;}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l);},50);for(var d in y[c]){y[c].hasOwnProperty(d)&&y[c][d].onload();}}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r);},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l));}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this;}function k(){var a=B;return a.loader={load:j,i:0},a;}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance" in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a);},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a;}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f<d;f++){g=a[f].split("="),(e=z[g.shift()])&&(c=e(c,g));}for(f=0;f<b;f++){c=x[f](c);}return c;}function g(a,e,f,g,h){var i=b(a),j=i.autoCallback;i.url.split(".").pop().split("?").shift(),i.bypass||(e&&(e=d(e)?e:e[a]||e[g]||e[a.split("/").pop().split("?")[0]]),i.instead?i.instead(a,e,f,g,h):(y[i.url]?i.noexec=!0:y[i.url]=1,f.load(i.url,i.forceCSS||!i.forceJS&&"css"==i.url.split(".").pop().split("?").shift()?"c":c,i.noexec,i.attrs,i.timeout),(d(e)||d(j))&&f.load(function(){k(),e&&e(i.origUrl,h,g),j&&j(i.origUrl,h,g),y[i.url]=2;})));}function h(a,b){function c(a,c){if(a){if(e(a)){c||(j=function(){var a=[].slice.call(arguments);k.apply(this,a),l();}),g(a,j,b,0,h);}else{if(Object(a)===a){for(n in m=function(){var b=0,c;for(c in a){a.hasOwnProperty(c)&&b++;}return b;}(),a){a.hasOwnProperty(n)&&(!c&&!--m&&(d(j)?j=function(){var a=[].slice.call(arguments);k.apply(this,a),l();}:j[n]=function(a){return function(){var b=[].slice.call(arguments);a&&a.apply(this,b),l();};}(k[n])),g(a[n],j,b,n,h));}}}}else{!c&&l();}}var h=!!a.test,i=a.load||a.both,j=a.callback||f,k=j,l=a.complete||f,m,n;c(h?a.yep:a.nope,!!i),i&&c(i);}var i,j,l=this.yepnope.loader;if(e(a)){g(a,0,l,0);}else{if(w(a)){for(i=0;i<a.length;i++){j=a[i],e(j)?g(j,0,l,0):w(j)?B(j):Object(j)===j&&h(j,l);}}else{Object(a)===a&&h(a,l);}}},B.addPrefix=function(a,b){z[a]=b;},B.addFilter=function(a){x.push(a);},B.errorTimeout=10000,null==b.readyState&&b.addEventListener&&(b.readyState="loading",b.addEventListener("DOMContentLoaded",A=function(){b.removeEventListener("DOMContentLoaded",A,0),b.readyState="complete";},0)),a.yepnope=k(),a.yepnope.executeStack=h,a.yepnope.injectJs=function(a,c,d,e,i,j){var k=b.createElement("script"),l,o,e=e||B.errorTimeout;k.src=a;for(o in d){k.setAttribute(o,d[o]);}c=j?h:c||f,k.onreadystatechange=k.onload=function(){!l&&g(k.readyState)&&(l=1,c(),k.onload=k.onreadystatechange=null);},m(function(){l||(l=1,c(1));},e),i?k.onload():n.parentNode.insertBefore(k,n);},a.yepnope.injectCss=function(a,c,d,e,g,i){var e=b.createElement("link"),j,c=i?h:c||f;e.href=a,e.rel="stylesheet",e.type="text/css";for(j in d){e.setAttribute(j,d[j]);}g||(n.parentNode.insertBefore(e,n),m(c,0));};}(this,document),Modernizr.load=function(){yepnope.apply(window,[].slice.call(arguments,0));},Modernizr.addTest("ie8compat",function(){return !window.addEventListener&&document.documentMode&&document.documentMode===7;}); 68 /* Ende custom.modernizr */ 69 /* Start jquery */ 70 /*! 71 * --GSBDocStart 72 * @module jQuery JavaScript Library 73 * @version 1.11.1 74 * @see {@link (http://jquery.com/)} 75 * @author jQuery Foundation, Inc. and other contributors 76 * @license JS Foundation 77 * 78 * @desc Einbettung der jQuery Library 79 *--GSBDocEnd 80 * 81 * Includes Sizzle.js 82 * http://sizzlejs.com/ 83 * 84 * Copyright 2005, 2014 85 * Released under the MIT license 86 * http://jquery.org/license 87 */ 88(function(global,factory){if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document");}return factory(w);};}else{factory(global);}}(typeof window!=="undefined"?window:this,function(window,noGlobal){var deletedIds=[];var slice=deletedIds.slice;var concat=deletedIds.concat;var push=deletedIds.push;var indexOf=deletedIds.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var support={};var version="1.11.1",jQuery=function(selector,context){return new jQuery.fn.init(selector,context);},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,rmsPrefix=/^-ms-/,rdashAlpha=/-([\da-z])/gi,fcamelCase=function(all,letter){return letter.toUpperCase();};jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,selector:"",length:0,toArray:function(){return slice.call(this);},get:function(num){return num!=null?(num<0?this[num+this.length]:this[num]):slice.call(this);},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);
88ret.prevObject=this;ret.context=this.context;return ret;},each:function(callback,args){return jQuery.each(this,callback,args);},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},slice:function(){return this.pushStack(slice.apply(this,arguments));},first:function(){return this.eq(0);},last:function(){return this.eq(-1);},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[]);},end:function(){return this.prevObject||this.constructor(null);},push:push,sort:deletedIds.sort,splice:deletedIds.splice};jQuery.extend=jQuery.fn.extend=function(){var src,copyIsArray,copy,name,options,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++;}if(typeof target!=="object"&&!jQuery.isFunction(target)){target={};}if(i===length){target=this;i--;}for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue;}if(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[];}else{clone=src&&jQuery.isPlainObject(src)?src:{};}target[name]=jQuery.extend(deep,clone,copy);}else{if(copy!==undefined){target[name]=copy;}}}}}return target;};jQuery.extend({expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),isReady:true,error:function(msg){throw new Error(msg);},noop:function(){},isFunction:function(obj){return jQuery.type(obj)==="function";},isArray:Array.isArray||function(obj){return jQuery.type(obj)==="array";},isWindow:function(obj){return obj!=null&&obj==obj.window;},isNumeric:function(obj){return !jQuery.isArray(obj)&&obj-parseFloat(obj)>=0;},isEmptyObject:function(obj){var name;for(name in obj){return false;}return true;},isPlainObject:function(obj){var key;if(!obj||jQuery.type(obj)!=="object"||obj.nodeType||jQuery.isWindow(obj)){return false;}try{if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false;}}catch(e){return false;}if(support.ownLast){for(key in obj){return hasOwn.call(obj,key);}}for(key in obj){}return key===undefined||hasOwn.call(obj,key);},type:function(obj){if(obj==null){return obj+"";}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj;},globalEval:function(data){if(data&&jQuery.trim(data)){(window.execScript||function(data){window["eval"].call(window,data);})(data);}},camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase);},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase();},each:function(obj,callback,args){var value,i=0,length=obj.length,isArray=isArraylike(obj);if(args){if(isArray){for(;i<length;i++){value=callback.apply(obj[i],args);if(value===false){break;}}}else{for(i in obj){value=callback.apply(obj[i],args);if(value===false){break;}}}}else{if(isArray){for(;i<length;i++){value=callback.call(obj[i],i,obj[i]);if(value===false){break;}}}else{for(i in obj){value=callback.call(obj[i],i,obj[i]);if(value===false){break;}}}}return obj;},trim:function(text){return text==null?"":(text+"").replace(rtrim,"");},makeArray:function(arr,results){var ret=results||[];if(arr!=null){if(isArraylike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr);}else{push.call(ret,arr);}}return ret;},inArray:function(elem,arr,i){var len;if(arr){if(indexOf){return indexOf.call(arr,elem,i);}len=arr.length;i=i?i<0?Math.max(0,len+i):i:0;for(;i<len;i++){if(i in arr&&arr[i]===elem){return i;}}}return -1;},merge:function(first,second){var len=+second.length,j=0,i=first.length;while(j<len){first[i++]=second[j++];}if(len!==len){while(second[j]!==undefined){first[i++]=second[j++];}}first.length=i;return first;},grep:function(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i]);}}return matches;},map:function(elems,callback,arg){var value,i=0,length=elems.length,isArray=isArraylike(elems),ret=[];if(isArray){for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value);}}}return concat.apply([],ret);},guid:1,proxy:function(fn,context){var args,proxy,tmp;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp;}if(!jQuery.isFunction(fn)){return undefined;}args=slice.call(arguments,2);proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)));};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy;},now:function(){return +(new Date());},support:support});jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase();});function isArraylike(obj){var length=obj.length,type=jQuery.type(obj);if(type==="function"||jQuery.isWindow(obj)){return false;}if(obj.nodeType===1&&length){return true;}return type==="array"||length===0||typeof length==="number"&&length>0&&(length-1) in obj;}var Sizzle= 89/*! 90 * Sizzle CSS Selector Engine v1.10.19 91 * http://sizzlejs.com/ 92 * 93 * Copyright 2013 jQuery Foundation, Inc. and other contributors 94 * Released under the MIT license 95 * http://jquery.org/license 96 * 97 * Date: 2014-04-18 98 */ 99(function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,
99setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+-(new Date()),preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true;}return 0;},strundefined=typeof undefined,MAX_NEGATIVE=1<<31,hasOwn=({}).hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=arr.indexOf||function(elem){var i=0,len=this.length;for(;i<len;i++){if(this[i]===elem){return i;}}return -1;},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",characterEncoding="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",identifier=characterEncoding.replace("w","w#"),attributes="\\["+whitespace+"*("+characterEncoding+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+characterEncoding+")(?:\\(("+"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+".*"+")\\)|)",rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={"ID":new RegExp("^#("+characterEncoding+")"),"CLASS":new RegExp("^\\.("+characterEncoding+")"),"TAG":new RegExp("^("+characterEncoding.replace("w","w*")+")"),"ATTR":new RegExp("^"+attributes),"PSEUDO":new RegExp("^"+pseudos),"CHILD":new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),"bool":new RegExp("^(?:"+booleans+")$","i"),"needsContext":new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,rescape=/'|\\/g,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,high&1023|56320);};try{push.apply((arr=slice.call(preferredDoc.childNodes)),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType;}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els));}:function(target,els){var j=target.length,i=0;while((target[j++]=els[i++])){}target.length=j-1;}};}function Sizzle(selector,context,results,seed){var match,elem,m,nodeType,i,groups,old,nid,newContext,newSelector;if((context?context.ownerDocument||context:preferredDoc)!==document){setDocument(context);}context=context||document;results=results||[];if(!selector||typeof selector!=="string"){return results;}if((nodeType=context.nodeType)!==1&&nodeType!==9){return[];}if(documentIsHTML&&!seed){if((match=rquickExpr.exec(selector))){if((m=match[1])){if(nodeType===9){elem=context.getElementById(m);if(elem&&elem.parentNode){if(elem.id===m){results.push(elem);return results;}}else{return results;}}else{if(context.ownerDocument&&(elem=context.ownerDocument.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results;}}}else{if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results;}else{if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results;}}}}if(support.qsa&&(!rbuggyQSA||!rbuggyQSA.test(selector))){nid=old=expando;newContext=context;newSelector=nodeType===9&&selector;if(nodeType===1&&context.nodeName.toLowerCase()!=="object"){groups=tokenize(selector);if((old=context.getAttribute("id"))){nid=old.replace(rescape,"\\$&");}else{context.setAttribute("id",nid);}nid="[id='"+nid+"'] ";i=groups.length;while(i--){groups[i]=nid+toSelector(groups[i]);}newContext=rsibling.test(selector)&&testContext(context.parentNode)||context;newSelector=groups.join(",");}if(newSelector){try{push.apply(results,newContext.querySelectorAll(newSelector));return results;}catch(qsaError){}finally{if(!old){context.removeAttribute("id");}}}}}return select(selector.replace(rtrim,"$1"),context,results,seed);}function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()];}return(cache[key+" "]=value);}return cache;}function markFunction(fn){fn[expando]=true;return fn;}function assert(fn){var div=document.createElement("div");try{return !!fn(div);}catch(e){return false;}finally{if(div.parentNode){div.parentNode.removeChild(div);}div=null;}}function addHandle(attrs,handler){var arr=attrs.split("|"),i=attrs.length;while(i--){Expr.attrHandle[arr[i]]=handler;}}function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&(~b.sourceIndex||MAX_NEGATIVE)-(~a.sourceIndex||MAX_NEGATIVE);if(diff){return diff;}if(cur){while((cur=cur.nextSibling)){if(cur===b){return -1;}}}return a?1:-1;}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type===type;};}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type;};}function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[(j=matchIndexes[i])]){seed[j]=!(matches[j]=seed[j]);}}});});}function testContext(context){return context&&typeof context.getElementsByTagName!==strundefined&&context;}support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return documentElement?documentElement.nodeName!=="HTML":false;};setDocument=Sizzle.setDocument=function(node){var hasCompare,doc=node?node.ownerDocument||node:preferredDoc,parent=doc.defaultView;if(doc===document||doc.nodeType!==9||!doc.documentElement){return document;}document=doc;docElem=doc.documentElement;documentIsHTML=!isXML(doc);if(parent&&parent!==parent.top){if(parent.addEventListener){parent.addEventListener("unload",function(){setDocument();},false);}else{if(parent.attachEvent){parent.attachEvent("onunload",function(){setDocument();});}}}support.attributes=assert(function(div){div.className="i";return !div.getAttribute("className");});support.getElementsByTagName=assert(function(div){div.appendChild(doc.createComment(""));return !div.getElementsByTagName("*").length;});support.getElementsByClassName=rnative.test(doc.getElementsByClassName)&&assert(function(div){div.innerHTML="<div class='a'></div><div class='a i'></div>";div.firstChild.className="i";return div.getElementsByClassName("i").length===2;});support.getById=assert(function(div){docElem.appendChild(div).id=expando;return !doc.getElementsByName||!doc.getElementsByName(expando).length;});if(support.getById){Expr.find["ID"]=function(id,context){if(typeof context.getElementById!==strundefined&&documentIsHTML){var m=context.getElementById(id);return m&&m.parentNode?[m]:[];}};Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId;};};}else{delete Expr.find["ID"];Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!==strundefined&&elem.getAttributeNode("id");return node&&node.value===attrId;};};}Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!==strundefined){return context.getElementsByTagName(tag);}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while((elem=results[i++])){if(elem.nodeType===1){tmp.push(elem);}}return tmp;}return results;};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!==strundefined&&documentIsHTML){return context.getElementsByClassName(className);}};rbuggyMatches=[];rbuggyQSA=[];if((support.qsa=rnative.test(doc.querySelectorAll))){assert(function(div){div.innerHTML="<select msallowclip=''><option selected=''></option></select>";if(div.querySelectorAll("[msallowclip^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")");}if(!div.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")");}if(!div.querySelectorAll(":checked").length){rbuggyQSA.push(":checked");}});assert(function(div){var input=doc.createElement("input");input.setAttribute("type","hidden");div.appendChild(input).setAttribute("name","D");if(div.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=");}if(!div.querySelectorAll(":enabled").length){rbuggyQSA.push(":enabled",":disabled");}div.querySelectorAll("*,:x");rbuggyQSA.push(",.*:");});}if((support.matchesSelector=rnative.test((matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)))){assert(function(div){support.disconnectedMatch=matches.call(div,"div");matches.call(div,"[s!='']:x");rbuggyMatches.push("!=",pseudos);});}
99rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16));}:function(a,b){if(b){while((b=b.parentNode)){if(b===a){return true;}}}return false;};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0;}var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare;}compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||(!support.sortDetached&&b.compareDocumentPosition(a)===compare)){if(a===doc||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)){return -1;}if(b===doc||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)){return 1;}return sortInput?(indexOf.call(sortInput,a)-indexOf.call(sortInput,b)):0;}return compare&4?-1:1;}:function(a,b){if(a===b){hasDuplicate=true;return 0;}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a===doc?-1:b===doc?1:aup?-1:bup?1:sortInput?(indexOf.call(sortInput,a)-indexOf.call(sortInput,b)):0;}else{if(aup===bup){return siblingCheck(a,b);}}cur=a;while((cur=cur.parentNode)){ap.unshift(cur);}cur=b;while((cur=cur.parentNode)){bp.unshift(cur);}while(ap[i]===bp[i]){i++;}return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0;};return doc;};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements);};Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document){setDocument(elem);}expr=expr.replace(rattributeQuotes,"='$1']");if(support.matchesSelector&&documentIsHTML&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret;}}catch(e){}}return Sizzle(expr,document,null,[elem]).length>0;};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!==document){setDocument(context);}return contains(context,elem);};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!==document){setDocument(elem);}var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null;};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg);};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while((elem=results[i++])){if(elem===results[i]){j=duplicates.push(i);}}while(j--){results.splice(duplicates[j],1);}}sortInput=null;return results;};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while((node=elem[i++])){ret+=getText(node);}}else{if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent;}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem);}}}else{if(nodeType===3||nodeType===4){return elem.nodeValue;}}}return ret;};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{"ATTR":function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" ";}return match.slice(0,4);},"CHILD":function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0]);}match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+((match[7]+match[8])||match[3]==="odd");}else{if(match[3]){Sizzle.error(match[0]);}}return match;},"PSEUDO":function(match){var excess,unquoted=!match[6]&&match[2];
99if(matchExpr["CHILD"].test(match[0])){return null;}if(match[3]){match[2]=match[4]||match[5]||"";}else{if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess);}}return match.slice(0,3);}},filter:{"TAG":function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true;}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName;};},"CLASS":function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!==strundefined&&elem.getAttribute("class")||"");});},"ATTR":function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!=";}if(!operator){return true;}result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false;};},"CHILD":function(type,what,argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?function(elem){return !!elem.parentNode;}:function(elem,context,xml){var cache,outerCache,node,diff,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType;if(parent){if(simple){while(dir){node=elem;while((node=node[dir])){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false;}}start=dir=type==="only"&&!start&&"nextSibling";}return true;}start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){outerCache=parent[expando]||(parent[expando]={});cache=outerCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=cache[0]===dirruns&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if(node.nodeType===1&&++diff&&node===elem){outerCache[type]=[dirruns,nodeIndex,diff];break;}}}else{if(useCache&&(cache=(elem[expando]||(elem[expando]={}))[type])&&cache[0]===dirruns){diff=cache[1];}else{while((node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop())){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){(node[expando]||(node[expando]={}))[type]=[dirruns,diff];}if(node===elem){break;}}}}}diff-=last;return diff===first||(diff%first===0&&diff/first>=0);}};},"PSEUDO":function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument);}if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf.call(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i]);}}):function(elem){return fn(elem,0,args);};}return fn;}},pseudos:{"not":markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if((elem=unmatched[i])){seed[i]=!(matches[i]=elem);}}}):function(elem,context,xml){input[0]=elem;matcher(input,null,xml,results);return !results.pop();};}),"has":markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0;};}),"contains":markFunction(function(text){return function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1;};}),"lang":markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error("unsupported lang: "+lang);}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if((elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang"))){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0;}}while((elem=elem.parentNode)&&elem.nodeType===1);return false;};}),"target":function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id;},"root":function(elem){return elem===docElem;},"focus":function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex);},"enabled":function(elem){return elem.disabled===false;},"disabled":function(elem){return elem.disabled===true;},"checked":function(elem){var nodeName=elem.nodeName.toLowerCase();return(nodeName==="input"&&!!elem.checked)||(nodeName==="option"&&!!elem.selected);},"selected":function(elem){if(elem.parentNode){elem.parentNode.selectedIndex;}return elem.selected===true;},"empty":function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false;}}return true;},"parent":function(elem){return !Expr.pseudos["empty"](elem);},"header":function(elem){return rheader.test(elem.nodeName);},"input":function(elem){return rinputs.test(elem.nodeName);},"button":function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button";},"text":function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text");},"first":createPositionalPseudo(function(){return[0];}),"last":createPositionalPseudo(function(matchIndexes,length){return[length-1];}),"eq":createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument];}),"even":createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),"odd":createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i);}return matchIndexes;}),"lt":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;--i>=0;){matchIndexes.push(i);}return matchIndexes;}),"gt":createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i);}return matchIndexes;})}};Expr.pseudos["nth"]=Expr.pseudos["eq"];for(i in {radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i);}for(i in {submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i);}function setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters();tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[
vendor: 5,716 bytes, line 99
99selector+" "];if(cached){return parseOnly?0:cached.slice(0);}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){if(!matched||(match=rcomma.exec(soFar))){if(match){soFar=soFar.slice(match[0].length)||soFar;}groups.push((tokens=[]));}matched=false;if((match=rcombinators.exec(soFar))){matched=match.shift();tokens.push({value:matched,type:match[0].replace(rtrim," ")});soFar=soFar.slice(matched.length);}for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length);}}if(!matched){break;}}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0);};function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value;}return selector;}function addCombinator(matcher,combinator,base){var dir=combinator.dir,checkNonElements=base&&dir==="parentNode",doneName=done++;return combinator.first?function(elem,context,xml){while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml);}}}:function(elem,context,xml){var oldCache,outerCache,newCache=[dirruns,doneName];if(xml){while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true;}}}}else{while((elem=elem[dir])){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});if((oldCache=outerCache[dir])&&oldCache[0]===dirruns&&oldCache[1]===doneName){return(newCache[2]=oldCache[2]);}else{outerCache[dir]=newCache;if((newCache[2]=matcher(elem,context,xml))){return true;}}}}}};}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false;}}return true;}:matchers[0];}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results);}return results;}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if((elem=unmatched[i])){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i);}}}}return newUnmatched;}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter);}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector);}return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher){matcher(matcherIn,matcherOut,context,xml);}if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);i=temp.length;while(i--){if((elem=temp[i])){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem);}}}if(seed){if(postFinder||preFilter){if(postFinder){temp=[];i=matcherOut.length;while(i--){if((elem=matcherOut[i])){temp.push((matcherIn[i]=elem));}}postFinder(null,(matcherOut=[]),temp,xml);}i=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf.call(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem);}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml);}else{push.apply(results,matcherOut);}}});}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext;},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf.call(checkContext,elem)>-1;},implicitRelative,true),matchers=[function(elem,context,xml){return(!leadingRelative&&(xml||context!==outermostContext))||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));}];for(;i<len;i++){if((matcher=Expr.relative[tokens[i].type])){matchers=[addCombinator(elementMatcher(matchers),matcher)];}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);if(matcher[expando]){j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break;}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens((tokens=tokens.slice(j))),j<len&&toSelector(tokens));}matchers.push(matcher);}}return elementMatcher(matchers);}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=(dirruns+=contextBackup==null?1:Math.random()||0.1),len=elems.length;if(outermost){outermostContext=context!==document&&context;}for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;while((matcher=elementMatchers[j++])){if(matcher(elem,context,xml)){results.push(elem);break;}}if(outermost){dirruns=dirrunsUnique;}}if(bySet){if((elem=!matcher&&elem)){matchedCount--;}if(seed){unmatched.push(elem);}}}matchedCount+=i;
99if(bySet&&i!==matchedCount){j=0;while((matcher=setMatchers[j++])){matcher(unmatched,setMatched,context,xml);}if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results);}}}setMatched=condense(setMatched);}push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&(matchedCount+setMatchers.length)>1){Sizzle.uniqueSort(results);}}if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup;}return unmatched;};return bySet?markFunction(superMatcher):superMatcher;}compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector);}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached);}else{elementMatchers.push(cached);}}cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector;}return cached;};select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize((selector=compiled.selector||selector));results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&support.getById&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results;}else{if(compiled){context=context.parentNode;}}selector=selector.slice(tokens.shift().value.length);}i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[(type=token.type)]){break;}if((find=Expr.find[type])){if((seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context))){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results;}break;}}}}(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,rsibling.test(selector)&&testContext(context.parentNode)||context);return results;};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(div1){return div1.compareDocumentPosition(document.createElement("div"))&1;});if(!assert(function(div){div.innerHTML="<a href='#'></a>";return div.firstChild.getAttribute("href")==="#";})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2);}});}if(!support.attributes||!assert(function(div){div.innerHTML="<input/>";div.firstChild.setAttribute("value","");return div.firstChild.getAttribute("value")==="";})){addHandle("value",function(elem,name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue;}});}if(!assert(function(div){return div.getAttribute("disabled")==null;})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null;}});}return Sizzle;})(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;var rneedsContext=jQuery.expr.match.needsContext;var rsingleTag=(/^<(\w+)\s*\/?>(?:<\/\1>|)$/);var risSimple=/^.[^:#\[\.,]*$/;function winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return !!qualifier.call(elem,i,elem)!==not;});}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return(elem===qualifier)!==not;});}if(typeof qualifier==="string"){if(risSimple.test(qualifier)){return jQuery.filter(qualifier,elements,not);}qualifier=jQuery.filter(qualifier,elements);}return jQuery.grep(elements,function(elem){return(jQuery.inArray(elem,qualifier)>=0)!==not;});}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")";}return elems.length===1&&elem.nodeType===1?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1;}));};jQuery.fn.extend({find:function(selector){var i,ret=[],self=this,len=self.length;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true;}}}));}for(i=0;i<len;i++){jQuery.find(selector,self[i],ret);}ret=this.pushStack(len>1?jQuery.unique(ret):ret);ret.selector=this.selector?this.selector+" "+selector:selector;return ret;},filter:function(selector){return this.pushStack(winnow(this,selector||[],false));},not:function(selector){return this.pushStack(winnow(this,selector||[],true));},is:function(selector){return !!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length;}});var rootjQuery,document=window.document,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,init=jQuery.fn.init=function(selector,context){var match,elem;if(!selector){return this;}if(typeof selector==="string"){if(selector.charAt(0)==="<"&&selector.charAt(selector.length-1)===">"&&selector.length>=3){match=[null,selector,null];}else{match=rquickExpr.exec(selector);}if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(jQuery.isFunction(this[match])){this[match](context[match]);}else{this.attr(match,context[match]);}}}return this;}else{elem=document.getElementById(match[2]);if(elem&&elem.parentNode){if(elem.id!==match[2]){return rootjQuery.find(selector);}this.length=1;this[0]=elem;}this.context=document;this.selector=selector;return this;}}else{if(!context||context.jquery){return(context||rootjQuery).find(selector);}else{return this.constructor(context).find(selector);}}}else{if(selector.nodeType){this.context=this[0]=selector;this.length=1;return this;}else{if(jQuery.isFunction(selector)){return typeof rootjQuery.ready!=="undefined"?rootjQuery.ready(selector):selector(jQuery);}}}if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context;}return jQuery.makeArray(selector,this);};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.extend({dir:function(elem,dir,until){var matched=[],cur=elem[dir];while(cur&&cur.nodeType!==9&&(until===undefined||cur.nodeType!==1||!jQuery(cur).is(until))){if(cur.nodeType===1){matched.push(cur);}cur=cur[dir];}return matched;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){r.push(n);}}return r;}});jQuery.fn.extend({has:function(target){var i,targets=jQuery(target,this),len=targets.length;return this.filter(function(){for(i=0;i<len;i++){if(jQuery.contains(this,targets[i])){return true;}}});},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],pos=rneedsContext.test(selectors)||typeof selectors!=="string"?jQuery(selectors,context||this.context):0;for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){if(cur.nodeType<11&&(pos?pos.index(cur)>-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break;}}}return this.pushStack(matched.length>1?jQuery.unique(matched):matched);},index:function(elem){if(!elem){return(this[0]&&this[0].parentNode)?this.first().prevAll().length:-1;}if(typeof elem==="string"){return jQuery.inArray(this[0],jQuery(elem));}return jQuery.inArray(elem.jquery?elem[0]:elem,this);},add:function(selector,context){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),jQuery(selector,context))));},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector));}});function sibling(cur,dir){do{cur=cur[dir];}while(cur&&cur.nodeType!==1);return cur;}jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null;},parents:function(elem){return jQuery.dir(elem,"parentNode");},parentsUntil:function(elem,i,until){return jQuery.dir(elem,"parentNode",until);},next:function(elem){return sibling(elem,"nextSibling");},prev:function(elem){return sibling(elem,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},nextUntil:function(elem,i,until){return jQuery.dir(elem,"nextSibling",until);},prevUntil:function(elem,i,until){return jQuery.dir(elem,"previousSibling",until);},siblings:function(elem){return jQuery.sibling((elem.parentNode||{}).firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.merge([],elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until;}if(selector&&typeof selector==="string"){ret=jQuery.filter(selector,ret);}if(this.length>1){if(!guaranteedUnique[name]){ret=jQuery.unique(ret);}if(rparentsprev.test(name)){ret=ret.reverse();}}return this.pushStack(ret);};});var rnotwhite=(/\S+/g);var optionsCache={};function createOptions(options){var object=optionsCache[options]={};jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=true;});return object;}jQuery.Callbacks=function(options){options=typeof options==="string"?(optionsCache[options]||createOptions(options)):jQuery.extend({},options);var firing,memory,fired,firingLength,firingIndex,firingStart,list=[],stack=!options.once&&[],fire=function(data){memory=options.memory&&data;fired=true;firingIndex=firingStart||0;firingStart=0;firingLength=list.length;firing=true;for(;list&&firingIndex<firingLength;firingIndex++){if(list[firingIndex].apply(data[0],data[1])===false&&options.stopOnFalse){memory=false;break;}}firing=false;if(list){if(stack){if(stack.length){fire(stack.shift());}}else{if(memory){list=[];}else{self.disable();}}}},self={add:function(){if(list){var start=list.length;(function add(args){jQuery.each(args,function(_,arg){var type=jQuery.type(arg);if(type==="function"){if(!options.unique||!self.has(arg)){list.push(arg);}}else{if(arg&&arg.length&&type!=="string"){add(arg);}}});})(arguments);if(firing){firingLength=list.length;}else{if(memory){firingStart=start;fire(memory);}}
99}return this;},remove:function(){if(list){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);if(firing){if(index<=firingLength){firingLength--;}if(index<=firingIndex){firingIndex--;}}}});}return this;},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:!!(list&&list.length);},empty:function(){list=[];firingLength=0;return this;},disable:function(){list=stack=memory=undefined;return this;},disabled:function(){return !list;},lock:function(){stack=undefined;if(!memory){self.disable();}return this;},locked:function(){return !stack;},fireWith:function(context,args){if(list&&(!fired||stack)){args=args||[];args=[context,args.slice?args.slice():args];if(firing){stack.push(args);}else{fire(args);}}return this;},fire:function(){self.fireWith(this,arguments);return this;},fired:function(){return !!fired;}};return self;};jQuery.extend({Deferred:function(func){var tuples=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],state="pending",promise={state:function(){return state;},always:function(){deferred.done(arguments).fail(arguments);return this;},then:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=jQuery.isFunction(fns[i])&&fns[i];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&jQuery.isFunction(returned.promise)){returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify);}else{newDefer[tuple[0]+"With"](this===promise?newDefer.promise():this,fn?[returned]:arguments);}});});fns=null;}).promise();},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise;}},deferred={};promise.pipe=promise.then;jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[3];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString;},tuples[i^1][2].disable,tuples[2][2].lock);}deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?promise:this,arguments);return this;};deferred[tuple[0]+"With"]=list.fireWith;});promise.promise(deferred);if(func){func.call(deferred,deferred);}return deferred;},when:function(subordinate){var i=0,resolveValues=slice.call(arguments),length=resolveValues.length,remaining=length!==1||(subordinate&&jQuery.isFunction(subordinate.promise))?length:0,deferred=remaining===1?subordinate:jQuery.Deferred(),updateFunc=function(i,contexts,values){return function(value){contexts[i]=this;values[i]=arguments.length>1?slice.call(arguments):value;if(values===progressValues){deferred.notifyWith(contexts,values);}else{if(!(--remaining)){deferred.resolveWith(contexts,values);}}};},progressValues,progressContexts,resolveContexts;if(length>1){progressValues=new Array(length);progressContexts=new Array(length);resolveContexts=new Array(length);for(;i<length;i++){if(resolveValues[i]&&jQuery.isFunction(resolveValues[i].promise)){resolveValues[i].promise().done(updateFunc(i,resolveContexts,resolveValues)).fail(deferred.reject).progress(updateFunc(i,progressContexts,progressValues));}else{--remaining;}}}if(!remaining){deferred.resolveWith(resolveContexts,resolveValues);}return deferred.promise();}});var readyList;jQuery.fn.ready=function(fn){jQuery.ready.promise().done(fn);return this;};jQuery.extend({isReady:false,readyWait:1,holdReady:function(hold){if(hold){jQuery.readyWait++;}else{jQuery.ready(true);}},ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return;}if(!document.body){return setTimeout(jQuery.ready);}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return;}readyList.resolveWith(document,[jQuery]);if(jQuery.fn.triggerHandler){jQuery(document).triggerHandler("ready");jQuery(document).off("ready");}}});function detach(){if(document.addEventListener){document.removeEventListener("DOMContentLoaded",completed,false);window.removeEventListener("load",completed,false);}else{document.detachEvent("onreadystatechange",completed);window.detachEvent("onload",completed);}}function completed(){if(document.addEventListener||event.type==="load"||document.readyState==="complete"){detach();jQuery.ready();}}
99jQuery.ready.promise=function(obj){if(!readyList){readyList=jQuery.Deferred();if(document.readyState==="complete"){setTimeout(jQuery.ready);}else{if(document.addEventListener){document.addEventListener("DOMContentLoaded",completed,false);window.addEventListener("load",completed,false);}else{document.attachEvent("onreadystatechange",completed);window.attachEvent("onload",completed);var top=false;try{top=window.frameElement==null&&document.documentElement;}catch(e){}if(top&&top.doScroll){(function doScrollCheck(){if(!jQuery.isReady){try{top.doScroll("left");}catch(e){return setTimeout(doScrollCheck,50);}detach();jQuery.ready();}})();}}}}return readyList.promise(obj);};var strundefined=typeof undefined;var i;for(i in jQuery(support)){break;}support.ownLast=i!=="0";support.inlineBlockNeedsLayout=false;jQuery(function(){var val,div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return;}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!==strundefined){div.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";support.inlineBlockNeedsLayout=val=div.offsetWidth===3;if(val){body.style.zoom=1;}}body.removeChild(container);});(function(){var div=document.createElement("div");if(support.deleteExpando==null){support.deleteExpando=true;try{delete div.test;}catch(e){support.deleteExpando=false;}}div=null;})();jQuery.acceptData=function(elem){var noData=jQuery.noData[(elem.nodeName+" ").toLowerCase()],nodeType=+elem.nodeType||1;return nodeType!==1&&nodeType!==9?false:!noData||noData!==true&&elem.getAttribute("classid")===noData;};var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/([A-Z])/g;function dataAttr(elem,key,data){if(data===undefined&&elem.nodeType===1){var name="data-"+key.replace(rmultiDash,"-$1").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=data==="true"?true:data==="false"?false:data==="null"?null:+data+""===data?+data:rbrace.test(data)?jQuery.parseJSON(data):data;}catch(e){}jQuery.data(elem,key,data);}else{data=undefined;}}return data;}function isEmptyDataObject(obj){var name;for(name in obj){if(name==="data"&&jQuery.isEmptyObject(obj[name])){continue;}if(name!=="toJSON"){return false;}}return true;}function internalData(elem,name,data,pvt){if(!jQuery.acceptData(elem)){return;}var ret,thisCache,internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[internalKey]:elem[internalKey]&&internalKey;if((!id||!cache[id]||(!pvt&&!cache[id].data))&&data===undefined&&typeof name==="string"){return;}if(!id){if(isNode){id=elem[internalKey]=deletedIds.pop()||jQuery.guid++;}else{id=internalKey;}}if(!cache[id]){cache[id]=isNode?{}:{toJSON:jQuery.noop};}if(typeof name==="object"||typeof name==="function"){if(pvt){cache[id]=jQuery.extend(cache[id],name);}else{cache[id].data=jQuery.extend(cache[id].data,name);}}thisCache=cache[id];if(!pvt){if(!thisCache.data){thisCache.data={};}thisCache=thisCache.data;}if(data!==undefined){thisCache[jQuery.camelCase(name)]=data;}if(typeof name==="string"){ret=thisCache[name];if(ret==null){ret=thisCache[jQuery.camelCase(name)];}}else{ret=thisCache;}return ret;}function internalRemoveData(elem,name,pvt){if(!jQuery.acceptData(elem)){return;}var thisCache,i,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(!cache[id]){return;}if(name){thisCache=pvt?cache[id]:cache[id].data;if(thisCache){if(!jQuery.isArray(name)){if(name in thisCache){name=[name];}else{name=jQuery.camelCase(name);if(name in thisCache){name=[name];}else{name=name.split(" ");}}}else{name=name.concat(jQuery.map(name,jQuery.camelCase));}i=name.length;while(i--){delete thisCache[name[i]];}if(pvt?!isEmptyDataObject(thisCache):!jQuery.isEmptyObject(thisCache)){return;}}}if(!pvt){delete cache[id].data;if(!isEmptyDataObject(cache[id])){return;}}if(isNode){jQuery.cleanData([elem],true);}else{if(support.deleteExpando||cache!=cache.window){delete cache[id];}else{cache[id]=null;}}}jQuery.extend({cache:{},noData:{"applet ":true,"embed ":true,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(elem){elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando];return !!elem&&!isEmptyDataObject(elem);},data:function(elem,name,data){return internalData(elem,name,data);},removeData:function(elem,name){return internalRemoveData(elem,name);},_data:function(elem,name,data){return internalData(elem,name,data,true);},_removeData:function(elem,name){return internalRemoveData(elem,name,true);}});jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length){data=jQuery.data(elem);if(elem.nodeType===1&&!jQuery._data(elem,"parsedAttrs")){i=attrs.length;while(i--){if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=jQuery.camelCase(name.slice(5));dataAttr(elem,name,data[name]);}}}jQuery._data(elem,"parsedAttrs",true);}}return data;}if(typeof key==="object"){return this.each(function(){jQuery.data(this,key);});}return arguments.length>1?this.each(function(){jQuery.data(this,key,value);}):elem?dataAttr(elem,key,jQuery.data(elem,key)):undefined;},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=jQuery._data(elem,type);if(data){if(!queue||jQuery.isArray(data)){queue=jQuery._data(elem,type,jQuery.makeArray(data));}else{queue.push(data);}}return queue||[];}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type);};if(fn==="inprogress"){fn=queue.shift();startLength--;}if(fn){if(type==="fx"){queue.unshift("inprogress");}delete hooks.stop;fn.call(elem,next,hooks);}if(!startLength&&hooks){hooks.empty.fire();}},_queueHooks:function(elem,type){var key=type+"queueHooks";return jQuery._data(elem,key)||jQuery._data(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){jQuery._removeData(elem,type+"queue");jQuery._removeData(elem,key);})});}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--;}if(arguments.length<setter){return jQuery.queue(this[0],type);}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type);}});},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type);});},clearQueue:function(type){return this.queue(type||"fx",[]);},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){if(!(--count)){defer.resolveWith(elements,[elements]);}}
99;if(typeof type!=="string"){obj=type;type=undefined;}type=type||"fx";while(i--){tmp=jQuery._data(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve);}}resolve();return defer.promise(obj);}});var pnum=(/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;var cssExpand=["Top","Right","Bottom","Left"];var isHidden=function(elem,el){elem=el||elem;return jQuery.css(elem,"display")==="none"||!jQuery.contains(elem.ownerDocument,elem);};var access=jQuery.access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,length=elems.length,bulk=key==null;if(jQuery.type(key)==="object"){chainable=true;for(i in key){jQuery.access(elems,fn,i,key[i],true,emptyGet,raw);}}else{if(value!==undefined){chainable=true;if(!jQuery.isFunction(value)){raw=true;}if(bulk){if(raw){fn.call(elems,value);fn=null;}else{bulk=fn;fn=function(elem,key,value){return bulk.call(jQuery(elem),value);};}}if(fn){for(;i<length;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)));}}}}return chainable?elems:bulk?fn.call(elems):length?fn(elems[0],key):emptyGet;};var rcheckableType=(/^(?:checkbox|radio)$/i);(function(){var input=document.createElement("input"),div=document.createElement("div"),fragment=document.createDocumentFragment();div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";support.leadingWhitespace=div.firstChild.nodeType===3;support.tbody=!div.getElementsByTagName("tbody").length;support.htmlSerialize=!!div.getElementsByTagName("link").length;support.html5Clone=document.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>";input.type="checkbox";input.checked=true;fragment.appendChild(input);support.appendChecked=input.checked;div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;fragment.appendChild(div);div.innerHTML="<input type='radio' checked='checked' name='t'/>";support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;support.noCloneEvent=true;if(div.attachEvent){div.attachEvent("onclick",function(){support.noCloneEvent=false;});div.cloneNode(true).click();}if(support.deleteExpando==null){support.deleteExpando=true;try{delete div.test;}catch(e){support.deleteExpando=false;}}})();(function(){var i,eventName,div=document.createElement("div");for(i in {submit:true,change:true,focusin:true}){eventName="on"+i;
99if(!(support[i+"Bubbles"]=eventName in window)){div.setAttribute(eventName,"t");support[i+"Bubbles"]=div.attributes[eventName].expando===false;}}div=null;})();var rformElems=/^(?:input|select|textarea)$/i,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu)|click/,rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,rtypenamespace=/^([^.]*)(?:\.(.+)|)$/;function returnTrue(){return true;}function returnFalse(){return false;}function safeActiveElement(){try{return document.activeElement;}catch(err){}}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var tmp,events,t,handleObjIn,special,eventHandle,handleObj,handlers,type,namespaces,origType,elemData=jQuery._data(elem);if(!elemData){return;}if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector;}if(!handler.guid){handler.guid=jQuery.guid++;}if(!(events=elemData.events)){events=elemData.events={};}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!==strundefined&&(!e||jQuery.event.triggered!==e.type)?jQuery.event.dispatch.apply(eventHandle.elem,arguments):undefined;};eventHandle.elem=elem;}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle,false);}else{if(elem.attachEvent){elem.attachEvent("on"+type,eventHandle);}}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid;}}
vendor: 5,499 bytes, line 99
99if(selector){handlers.splice(handlers.delegateCount++,0,handleObj);}else{handlers.push(handleObj);}jQuery.event.global[type]=true;}elem=null;},remove:function(elem,types,handler,selector,mappedTypes){var j,handleObj,tmp,origCount,t,events,special,handlers,type,namespaces,origType,elemData=jQuery.hasData(elem)&&jQuery._data(elem);if(!elemData||!(events=elemData.events)){return;}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true);}continue;}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--;}if(special.remove){special.remove.call(elem,handleObj);}}}if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle);}delete events[type];}}if(jQuery.isEmptyObject(events)){delete elemData.handle;jQuery._removeData(elem,"events");}},trigger:function(event,data,elem,onlyHandlers){var handle,ontype,cur,bubbleType,special,tmp,i,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return;}if(rfocusMorph.test(type+jQuery.event.triggered)){return;}if(type.indexOf(".")>=0){namespaces=type.split(".");type=namespaces.shift();namespaces.sort();}ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.namespace_re=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem;}data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return;}if(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode;}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur;}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window);}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i>1?bubbleType:special.bindType||type;handle=(jQuery._data(cur,"events")||{})[event.type]&&jQuery._data(cur,"handle");if(handle){handle.apply(cur,data);}handle=ontype&&cur[ontype];if(handle&&handle.apply&&jQuery.acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault();}}}event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&jQuery.acceptData(elem)){if(ontype&&elem[type]&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null;}jQuery.event.triggered=type;try{elem[type]();}catch(e){}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp;}}}}return event.result;},dispatch:function(event){event=jQuery.event.fix(event);var i,ret,handleObj,matched,j,handlerQueue=[],args=slice.call(arguments),handlers=(jQuery._data(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;event.delegateTarget=this;if(special.preDispatch&&special.preDispatch.call(this,event)===false){return;}handlerQueue=jQuery.event.handlers.call(this,event,handlers);i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){if(!event.namespace_re||event.namespace_re.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation();}}}}}if(special.postDispatch){special.postDispatch.call(this,event);}return event.result;},handlers:function(event,handlers){var sel,handleObj,matches,i,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&(!event.button||event.type!=="click")){for(;cur!=this;cur=cur.parentNode||this){if(cur.nodeType===1&&(cur.disabled!==true||event.type!=="click")){matches=[];for(i=0;i<delegateCount;i++){handleObj=handlers[i];sel=handleObj.selector+" ";if(matches[sel]===undefined){matches[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>=0:jQuery.find(sel,this,null,[cur]).length;}if(matches[sel]){matches.push(handleObj);}}if(matches.length){handlerQueue.push({elem:cur,handlers:matches});}}}}if(delegateCount<handlers.length){handlerQueue.push({elem:this,handlers:handlers.slice(delegateCount)});}return handlerQueue;},fix:function(event){if(event[jQuery.expando]){return event;}
99var i,prop,copy,type=event.type,originalEvent=event,fixHook=this.fixHooks[type];if(!fixHook){this.fixHooks[type]=fixHook=rmouseEvent.test(type)?this.mouseHooks:rkeyEvent.test(type)?this.keyHooks:{};}copy=fixHook.props?this.props.concat(fixHook.props):this.props;event=new jQuery.Event(originalEvent);i=copy.length;while(i--){prop=copy[i];event[prop]=originalEvent[prop];}if(!event.target){event.target=originalEvent.srcElement||document;}if(event.target.nodeType===3){event.target=event.target.parentNode;}event.metaKey=!!event.metaKey;return fixHook.filter?fixHook.filter(event,originalEvent):event;},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(event,original){if(event.which==null){event.which=original.charCode!=null?original.charCode:original.keyCode;}return event;}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(event,original){var body,eventDoc,doc,button=original.button,fromElement=original.fromElement;if(event.pageX==null&&original.clientX!=null){eventDoc=event.target.ownerDocument||document;doc=eventDoc.documentElement;body=eventDoc.body;event.pageX=original.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=original.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0);}if(!event.relatedTarget&&fromElement){event.relatedTarget=fromElement===event.target?original.toElement:fromElement;}if(!event.which&&button!==undefined){event.which=(button&1?1:(button&2?3:(button&4?2:0)));}return event;}},special:{load:{noBubble:true},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus){try{this.focus();return false;}catch(e){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur){this.blur();return false;}},delegateType:"focusout"},click:{trigger:function(){if(jQuery.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false;}},_default:function(event){return jQuery.nodeName(event.target,"a");}},beforeunload:{postDispatch:function(event){if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result;}}}},simulate:function(type,elem,event,bubble){var e=jQuery.extend(new jQuery.Event(),event,{type:type,isSimulated:true,originalEvent:{}});if(bubble){jQuery.event.trigger(e,null,elem);}else{jQuery.event.dispatch.call(elem,e);}if(e.isDefaultPrevented()){event.preventDefault();}}};jQuery.removeEvent=document.removeEventListener?function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle,false);}}:function(elem,type,handle){var name="on"+type;if(elem.detachEvent){if(typeof elem[name]===strundefined){elem[name]=null;}elem.detachEvent(name,handle);}};jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props);}if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&src.returnValue===false?returnTrue:returnFalse;}else{this.type=src;}if(props){jQuery.extend(this,props);}this.timeStamp=src&&src.timeStamp||jQuery.now();this[jQuery.expando]=true;};jQuery.Event.prototype={isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(!e){return;}if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(!e){return;}if(e.stopPropagation){e.stopPropagation();}e.cancelBubble=true;},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&e.stopImmediatePropagation){e.stopImmediatePropagation();}this.stopPropagation();}};
99jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;if(!related||(related!==target&&!jQuery.contains(target,related))){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix;}return ret;}};});if(!support.submitBubbles){jQuery.event.special.submit={setup:function(){if(jQuery.nodeName(this,"form")){return false;}jQuery.event.add(this,"click._submit keypress._submit",function(e){var elem=e.target,form=jQuery.nodeName(elem,"input")||jQuery.nodeName(elem,"button")?elem.form:undefined;if(form&&!jQuery._data(form,"submitBubbles")){jQuery.event.add(form,"submit._submit",function(event){event._submit_bubble=true;});jQuery._data(form,"submitBubbles",true);}});},postDispatch:function(event){if(event._submit_bubble){delete event._submit_bubble;if(this.parentNode&&!event.isTrigger){jQuery.event.simulate("submit",this.parentNode,event,true);}}},teardown:function(){if(jQuery.nodeName(this,"form")){return false;}jQuery.event.remove(this,"._submit");}};}if(!support.changeBubbles){jQuery.event.special.change={setup:function(){if(rformElems.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){jQuery.event.add(this,"propertychange._change",function(event){if(event.originalEvent.propertyName==="checked"){this._just_changed=true;}});jQuery.event.add(this,"click._change",function(event){if(this._just_changed&&!event.isTrigger){this._just_changed=false;}jQuery.event.simulate("change",this,event,true);});}return false;}jQuery.event.add(this,"beforeactivate._change",function(e){var elem=e.target;if(rformElems.test(elem.nodeName)&&!jQuery._data(elem,"changeBubbles")){jQuery.event.add(elem,"change._change",function(event){if(this.parentNode&&!event.isSimulated&&!event.isTrigger){jQuery.event.simulate("change",this.parentNode,event,true);}});jQuery._data(elem,"changeBubbles",true);}});},handle:function(event){var elem=event.target;if(this!==elem||event.isSimulated||event.isTrigger||(elem.type!=="radio"&&elem.type!=="checkbox")){return event.handleObj.handler.apply(this,arguments);}},teardown:function(){jQuery.event.remove(this,"._change");return !rformElems.test(this.nodeName);}};}if(!support.focusinBubbles){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event),true);};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true);}jQuery._data(doc,fix,(attaches||0)+1);},teardown:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);jQuery._removeData(doc,fix);}else{jQuery._data(doc,fix,attaches);}}};});}jQuery.fn.extend({on:function(types,selector,data,fn,one){var type,origFn;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined;}for(type in types){this.on(type,selector,data,types[type],one);}return this;}if(data==null&&fn==null){fn=selector;data=selector=undefined;}else{if(fn==null){if(typeof selector==="string"){fn=data;data=undefined;}else{fn=data;data=selector;selector=undefined;}}}if(fn===false){fn=returnFalse;}else{if(!fn){return this;}}if(one===1){origFn=fn;fn=function(event){jQuery().off(event);return origFn.apply(this,arguments);};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++);}return this.each(function(){jQuery.event.add(this,types,fn,data,selector);});},one:function(types,selector,data,fn){return this.on(types,selector,data,fn,1);},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this;}if(typeof types==="object"){for(type in types){this.off(type,selector,types[type]);}return this;}if(selector===false||typeof selector==="function"){fn=selector;selector=undefined;}if(fn===false){fn=returnFalse;}return this.each(function(){jQuery.event.remove(this,types,fn,selector);});},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this);});},triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true);}}});function createSafeFragment(document){var list=nodeNames.split("|"),safeFrag=document.createDocumentFragment();if(safeFrag.createElement){while(list.length){safeFrag.createElement(list.pop());}}
99return safeFrag;}var nodeNames="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|"+"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",rinlinejQuery=/ jQuery\d+="(?:null|\d+)"/g,rnoshimcache=new RegExp("<(?:"+nodeNames+")[\\s/>]","i"),rleadingWhitespace=/^\s+/,rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rtagName=/<([\w:]+)/,rtbody=/<tbody/i,rhtml=/<|&#?\w+;/,rnoInnerhtml=/<(?:script|style|link)/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rscriptType=/^$|\/(?:java|ecma)script/i,rscriptTypeMasked=/^true\/(.*)/,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},safeFragment=createSafeFragment(document),fragmentDiv=safeFragment.appendChild(document.createElement("div"));wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function getAll(context,tag){var elems,elem,i=0,found=typeof context.getElementsByTagName!==strundefined?context.getElementsByTagName(tag||"*"):typeof context.querySelectorAll!==strundefined?context.querySelectorAll(tag||"*"):undefined;if(!found){for(found=[],elems=context.childNodes||context;(elem=elems[i])!=null;i++){if(!tag||jQuery.nodeName(elem,tag)){found.push(elem);}else{jQuery.merge(found,getAll(elem,tag));}}}return tag===undefined||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],found):found;}function fixDefaultChecked(elem){if(rcheckableType.test(elem.type)){elem.defaultChecked=elem.checked;}}function manipulationTarget(elem,content){return jQuery.nodeName(elem,"table")&&jQuery.nodeName(content.nodeType!==11?content:content.firstChild,"tr")?elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody")):elem;}function disableScript(elem){elem.type=(jQuery.find.attr(elem,"type")!==null)+"/"+elem.type;return elem;}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);if(match){elem.type=match[1];}else{elem.removeAttribute("type");}return elem;}function setGlobalEval(elems,refElements){var elem,i=0;for(;(elem=elems[i])!=null;i++){jQuery._data(elem,"globalEval",!refElements||jQuery._data(refElements[i],"globalEval"));}}function cloneCopyEvent(src,dest){if(dest.nodeType!==1||!jQuery.hasData(src)){return;}var type,i,l,oldData=jQuery._data(src),curData=jQuery._data(dest,oldData),events=oldData.events;if(events){delete curData.handle;curData.events={};for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i]);}}}if(curData.data){curData.data=jQuery.extend({},curData.data);}}function fixCloneNodeIssues(src,dest){var nodeName,e,data;if(dest.nodeType!==1){return;}nodeName=dest.nodeName.toLowerCase();if(!support.noCloneEvent&&dest[jQuery.expando]){data=jQuery._data(dest);for(e in data.events){jQuery.removeEvent(dest,e,data.handle);}dest.removeAttribute(jQuery.expando);}if(nodeName==="script"&&dest.text!==src.text){disableScript(dest).text=src.text;restoreScript(dest);}
99else{if(nodeName==="object"){if(dest.parentNode){dest.outerHTML=src.outerHTML;}if(support.html5Clone&&(src.innerHTML&&!jQuery.trim(dest.innerHTML))){dest.innerHTML=src.innerHTML;}}else{if(nodeName==="input"&&rcheckableType.test(src.type)){dest.defaultChecked=dest.checked=src.checked;if(dest.value!==src.value){dest.value=src.value;}}else{if(nodeName==="option"){dest.defaultSelected=dest.selected=src.defaultSelected;}else{if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue;}}}}}}jQuery.extend({clone:function(elem,dataAndEvents,deepDataAndEvents){var destElements,node,clone,i,srcElements,inPage=jQuery.contains(elem.ownerDocument,elem);if(support.html5Clone||jQuery.isXMLDoc(elem)||!rnoshimcache.test("<"+elem.nodeName+">")){clone=elem.cloneNode(true);}else{fragmentDiv.innerHTML=elem.outerHTML;fragmentDiv.removeChild(clone=fragmentDiv.firstChild);}if((!support.noCloneEvent||!support.noCloneChecked)&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){destElements=getAll(clone);srcElements=getAll(elem);for(i=0;(node=srcElements[i])!=null;++i){if(destElements[i]){fixCloneNodeIssues(node,destElements[i]);}}}if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0;(node=srcElements[i])!=null;i++){cloneCopyEvent(node,destElements[i]);}}else{cloneCopyEvent(elem,clone);}}destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"));}destElements=srcElements=node=null;return clone;},buildFragment:function(elems,context,scripts,selection){var j,elem,contains,tmp,tag,tbody,wrap,l=elems.length,safe=createSafeFragment(context),nodes=[],i=0;for(;i<l;i++){elem=elems[i];if(elem||elem===0){if(jQuery.type(elem)==="object"){jQuery.merge(nodes,elem.nodeType?[elem]:elem);}else{if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem));}else{tmp=tmp||safe.appendChild(context.createElement("div"));tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+elem.replace(rxhtmlTag,"<$1></$2>")+wrap[2];j=wrap[0];while(j--){tmp=tmp.lastChild;}if(!support.leadingWhitespace&&rleadingWhitespace.test(elem)){nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0]));}if(!support.tbody){elem=tag==="table"&&!rtbody.test(elem)?tmp.firstChild:wrap[1]==="<table>"&&!rtbody.test(elem)?tmp:0;j=elem&&elem.childNodes.length;while(j--){if(jQuery.nodeName((tbody=elem.childNodes[j]),"tbody")&&!tbody.childNodes.length){elem.removeChild(tbody);}}}jQuery.merge(nodes,tmp.childNodes);tmp.textContent="";while(tmp.firstChild){tmp.removeChild(tmp.firstChild);}tmp=safe.lastChild;}}}}if(tmp){safe.removeChild(tmp);}if(!support.appendChecked){jQuery.grep(getAll(nodes,"input"),fixDefaultChecked);}i=0;while((elem=nodes[i++])){if(selection&&jQuery.inArray(elem,selection)!==-1){continue;}contains=jQuery.contains(elem.ownerDocument,elem);tmp=getAll(safe.appendChild(elem),"script");if(contains){setGlobalEval(tmp);}if(scripts){j=0;while((elem=tmp[j++])){if(rscriptType.test(elem.type||"")){scripts.push(elem);}}}}tmp=null;return safe;},cleanData:function(elems,acceptData){var elem,type,id,data,i=0,internalKey=jQuery.expando,cache=jQuery.cache,deleteExpando=support.deleteExpando,special=jQuery.event.special;for(;(elem=elems[i])!=null;i++){if(acceptData||jQuery.acceptData(elem)){id=elem[internalKey];data=id&&cache[id];if(data){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type);}else{jQuery.removeEvent(elem,type,data.handle);}}}if(cache[id]){delete cache[id];if(deleteExpando){delete elem[internalKey];}else{if(typeof elem.removeAttribute!==strundefined){elem.removeAttribute(internalKey);}else{elem[internalKey]=null;}}deletedIds.push(id);}}}}}});jQuery.fn.extend({text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(value));},null,value,arguments.length);},append:function(){return this.domManip(arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem);}});},prepend:function(){return this.domManip(arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild);}});},before:function(){return this.domManip(arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this);}});},after:function(){return this.domManip(arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling);}});},remove:function(selector,keepData){var elem,elems=selector?jQuery.filter(selector,this):this,i=0;for(;(elem=elems[i])!=null;i++){if(!keepData&&elem.nodeType===1){jQuery.cleanData(getAll(elem));}if(elem.parentNode){if(keepData&&jQuery.contains(elem.ownerDocument,elem)){setGlobalEval(getAll(elem,"
99script"));}elem.parentNode.removeChild(elem);}}return this;},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));}while(elem.firstChild){elem.removeChild(elem.firstChild);}if(elem.options&&jQuery.nodeName(elem,"select")){elem.options.length=0;}}return this;},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents);});},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined){return elem.nodeType===1?elem.innerHTML.replace(rinlinejQuery,""):undefined;}if(typeof value==="string"&&!rnoInnerhtml.test(value)&&(support.htmlSerialize||!rnoshimcache.test(value))&&(support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=value.replace(rxhtmlTag,"<$1></$2>");try{for(;i<l;i++){elem=this[i]||{};if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value;}}elem=0;}catch(e){}}if(elem){this.empty().append(value);}},null,value,arguments.length);},replaceWith:function(){var arg=arguments[0];this.domManip(arguments,function(elem){arg=this.parentNode;jQuery.cleanData(getAll(this));if(arg){arg.replaceChild(elem,this);}});return arg&&(arg.length||arg.nodeType)?this:this.remove();},detach:function(selector){return this.remove(selector,true);},domManip:function(args,callback){args=concat.apply([],args);var first,node,hasScripts,scripts,doc,fragment,i=0,l=this.length,set=this,iNoClone=l-1,value=args[0],isFunction=jQuery.isFunction(value);if(isFunction||(l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value))){return this.each(function(index){var self=set.eq(index);if(isFunction){args[0]=value.call(this,index,self.html());}self.domManip(args,callback);});}if(l){fragment=jQuery.buildFragment(args,this[0].ownerDocument,false,this);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first;}if(first){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);if(hasScripts){jQuery.merge(scripts,getAll(node,"script"));}}callback.call(this[i],node,i);}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;jQuery.map(scripts,restoreScript);for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!jQuery._data(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src){if(jQuery._evalUrl){jQuery._evalUrl(node.src);}}else{jQuery.globalEval((node.text||node.textContent||node.innerHTML||"").replace(rcleanScript,""));}}}}fragment=first=null;}}return this;}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,i=0,ret=[],insert=jQuery(selector),last=insert.length-1;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);push.apply(ret,elems.get());}return this.pushStack(ret);};});var iframe,elemdisplay={};function actualDisplay(name,doc){var style,elem=jQuery(doc.createElement(name)).appendTo(doc.body),display=window.getDefaultComputedStyle&&(style=window.getDefaultComputedStyle(elem[0]))?style.display:jQuery.css(elem[0],"display");elem.detach();return display;}function defaultDisplay(nodeName){var doc=document,display=elemdisplay[nodeName];if(!display){display=actualDisplay(nodeName,doc);if(display==="none"||!display){iframe=(iframe||jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement);doc=(iframe[0].contentWindow||iframe[0].contentDocument).document;doc.write();doc.close();display=actualDisplay(nodeName,doc);iframe.detach();}elemdisplay[nodeName]=display;}return display;}(function(){var shrinkWrapBlocksVal;support.shrinkWrapBlocks=function(){if(shrinkWrapBlocksVal!=null){return shrinkWrapBlocksVal;}shrinkWrapBlocksVal=false;var div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return;}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!==strundefined){div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;"+"padding:1px;width:1px;zoom:1";div.appendChild(document.createElement("div")).style.width="5px";shrinkWrapBlocksVal=div.offsetWidth!==3;}body.removeChild(container);return shrinkWrapBlocksVal;};})();var rmargin=(/^margin/);
99var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var getStyles,curCSS,rposition=/^(top|right|bottom|left)$/;if(window.getComputedStyle){getStyles=function(elem){return elem.ownerDocument.defaultView.getComputedStyle(elem,null);};curCSS=function(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed.getPropertyValue(name)||computed[name]:undefined;if(computed){if(ret===""&&!jQuery.contains(elem.ownerDocument,elem)){ret=jQuery.style(elem,name);}if(rnumnonpx.test(ret)&&rmargin.test(name)){width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth;}}return ret===undefined?ret:ret+"";};}else{if(document.documentElement.currentStyle){getStyles=function(elem){return elem.currentStyle;};curCSS=function(elem,name,computed){var left,rs,rsLeft,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed[name]:undefined;if(ret==null&&style&&style[name]){ret=style[name];}if(rnumnonpx.test(ret)&&!rposition.test(name)){left=style.left;rs=elem.runtimeStyle;rsLeft=rs&&rs.left;if(rsLeft){rs.left=elem.currentStyle.left;}style.left=name==="fontSize"?"1em":ret;ret=style.pixelLeft+"px";style.left=left;if(rsLeft){rs.left=rsLeft;}}return ret===undefined?ret:ret+""||"auto";};}}function addGetHookIf(conditionFn,hookFn){return{get:function(){var condition=conditionFn();if(condition==null){return;}if(condition){delete this.get;return;}return(this.get=hookFn).apply(this,arguments);}};}(function(){var div,style,a,pixelPositionVal,boxSizingReliableVal,reliableHiddenOffsetsVal,reliableMarginRightVal;div=document.createElement("div");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";a=div.getElementsByTagName("a")[0];style=a&&a.style;if(!style){return;}style.cssText="float:left;opacity:.5";support.opacity=style.opacity==="0.5";support.cssFloat=!!style.cssFloat;div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";support.boxSizing=style.boxSizing===""||style.MozBoxSizing===""||style.WebkitBoxSizing==="";jQuery.extend(support,{reliableHiddenOffsets:function(){if(reliableHiddenOffsetsVal==null){computeStyleTests();}return reliableHiddenOffsetsVal;},boxSizingReliable:function(){if(boxSizingReliableVal==null){computeStyleTests();}return boxSizingReliableVal;},pixelPosition:function(){if(pixelPositionVal==null){computeStyleTests();}return pixelPositionVal;},reliableMarginRight:function(){if(reliableMarginRightVal==null){computeStyleTests();}return reliableMarginRightVal;}});function computeStyleTests(){var div,body,container,contents;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return;}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);div.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;"+"box-sizing:border-box;display:block;margin-top:1%;top:1%;"+"border:1px;padding:1px;width:4px;position:absolute";pixelPositionVal=boxSizingReliableVal=false;reliableMarginRightVal=true;if(window.getComputedStyle){pixelPositionVal=(window.getComputedStyle(div,null)||{}).top!=="1%";boxSizingReliableVal=(window.getComputedStyle(div,null)||{width:"4px"}).width==="4px";contents=div.appendChild(document.createElement("div"));contents.style.cssText=div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;padding:0";contents.style.marginRight=contents.style.width="0";div.style.width="1px";reliableMarginRightVal=!parseFloat((window.getComputedStyle(contents,null)||{}).marginRight);}div.innerHTML="<table><tr><td></td><td>t</td></tr></table>";contents=div.getElementsByTagName("td");contents[0].style.cssText="margin:0;border:0;padding:0;display:none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0;if(reliableHiddenOffsetsVal){contents[0].style.display="";contents[1].style.display="none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0;}body.removeChild(container);}})();jQuery.swap=function(elem,options,callback,args){var ret,name,old={};for(name in options){old[name]=elem.style[name];elem.style[name]=options[name];}ret=callback.apply(elem,args||[]);for(name in options){elem.style[name]=old[name];}return ret;};
99var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity\s*=\s*([^)]*)/,rdisplayswap=/^(none|table(?!-c[ea]).+)/,rnumsplit=new RegExp("^("+pnum+")(.*)$","i"),rrelNum=new RegExp("^([+-])=("+pnum+")","i"),cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","O","Moz","ms"];function vendorPropName(style,name){if(name in style){return name;}var capName=name.charAt(0).toUpperCase()+name.slice(1),origName=name,i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in style){return name;}}return origName;}function showHide(elements,show){var display,elem,hidden,values=[],index=0,length=elements.length;for(;index<length;index++){elem=elements[index];if(!elem.style){continue;}values[index]=jQuery._data(elem,"olddisplay");display=elem.style.display;if(show){if(!values[index]&&display==="none"){elem.style.display="";}if(elem.style.display===""&&isHidden(elem)){values[index]=jQuery._data(elem,"olddisplay",defaultDisplay(elem.nodeName));}}else{hidden=isHidden(elem);if(display&&display!=="none"||!hidden){jQuery._data(elem,"olddisplay",hidden?display:jQuery.css(elem,"display"));}}}for(index=0;index<length;index++){elem=elements[index];if(!elem.style){continue;}if(!show||elem.style.display==="none"||elem.style.display===""){elem.style.display=show?values[index]||"":"none";}}return elements;}function setPositiveNumber(elem,value,subtract){var matches=rnumsplit.exec(value);return matches?Math.max(0,matches[1]-(subtract||0))+(matches[2]||"px"):value;}function augmentWidthOrHeight(elem,name,extra,isBorderBox,styles){var i=extra===(isBorderBox?"border":"content")?4:name==="width"?1:0,val=0;for(;i<4;i+=2){if(extra==="margin"){val+=jQuery.css(elem,extra+cssExpand[i],true,styles);}if(isBorderBox){if(extra==="content"){val-=jQuery.css(elem,"padding"+cssExpand[i],true,styles);}if(extra!=="margin"){val-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}}else{val+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);if(extra!=="padding"){val+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles);}}}return val;}function getWidthOrHeight(elem,name,extra){var valueIsBorderBox=true,val=name==="width"?elem.offsetWidth:elem.offsetHeight,styles=getStyles(elem),isBorderBox=support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box";if(val<=0||val==null){val=curCSS(elem,name,styles);if(val<0||val==null){val=elem.style[name];}if(rnumnonpx.test(val)){return val;}valueIsBorderBox=isBorderBox&&(support.boxSizingReliable()||val===elem.style[name]);val=parseFloat(val)||0;}return(val+augmentWidthOrHeight(elem,name,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles))+"px";}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret;}}}},cssNumber:{"columnCount":true,"fillOpacity":true,"flexGrow":true,"flexShrink":true,"fontWeight":true,"lineHeight":true,"opacity":true,"order":true,"orphans":true,"widows":true,"zIndex":true,"zoom":true},cssProps:{"float":support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return;}var ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(style,origName));hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rrelNum.exec(value))){value=(ret[1]+1)*ret[2]+parseFloat(jQuery.css(elem,name));type="number";}if(value==null||value!==value){return;}if(type==="number"&&!jQuery.cssNumber[origName]){value+="px";}if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit";}if(!hooks||!("set" in hooks)||(value=hooks.set(elem,value,extra))!==undefined){try{style[name]=value;}catch(e){}}}else{if(hooks&&"get" in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret;}return style[name];}},css:function(elem,name,extra,styles){var num,val,hooks,origName=jQuery.camelCase(name);name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(elem.style,origName));hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get" in hooks){val=hooks.get(elem,true,extra);}if(val===undefined){val=curCSS(elem,name,styles);}if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name];}if(extra===""||extra){num=parseFloat(val);return extra===true||jQuery.isNumeric(num)?num||0:val;}return val;}});jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&elem.offsetWidth===0?jQuery.swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra);}):getWidthOrHeight(elem,name,extra);}}
99,set:function(elem,value,extra){var styles=extra&&getStyles(elem);return setPositiveNumber(elem,value,extra?augmentWidthOrHeight(elem,name,extra,support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",styles):0);}};});if(!support.opacity){jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?(0.01*parseFloat(RegExp.$1))+"":computed?"1":"";},set:function(elem,value){var style=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+value*100+")":"",filter=currentStyle&¤tStyle.filter||style.filter||"";style.zoom=1;if((value>=1||value==="")&&jQuery.trim(filter.replace(ralpha,""))===""&&style.removeAttribute){style.removeAttribute("filter");if(value===""||currentStyle&&!currentStyle.filter){return;}}style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+" "+opacity;}};}jQuery.cssHooks.marginRight=addGetHookIf(support.reliableMarginRight,function(elem,computed){if(computed){return jQuery.swap(elem,{"display":"inline-block"},curCSS,[elem,"marginRight"]);}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0];}return expanded;}};if(!rmargin.test(prefix)){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber;}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles);}return map;}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name);},name,value,arguments.length>1);},show:function(){return showHide(this,true);},hide:function(){return showHide(this);},toggle:function(state){if(typeof state==="boolean"){return state?this.show():this.hide();}return this.each(function(){if(isHidden(this)){jQuery(this).show();}else{jQuery(this).hide();}});}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing);}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||"swing";this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px");},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this);},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration);}else{this.pos=eased=percent;}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this);}if(hooks&&hooks.set){hooks.set(this);}else{Tween.propHooks._default.set(this);}return this;}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem[tween.prop]!=null&&(!tween.elem.style||tween.elem.style[tween.prop]==null)){return tween.elem[tween.prop];}result=jQuery.css(tween.elem,tween.prop,"");return !result||result==="auto"?0:result;},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween);}else{if(tween.elem.style&&(tween.elem.style[jQuery.cssProps[tween.prop]]!=null||jQuery.cssHooks[tween.prop])){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit);}else{tween.elem[tween.prop]=tween.now;}}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now;}}};jQuery.easing={linear:function(p){return p;},swing:function(p){return 0.5-Math.cos(p*Math.PI)/2;}};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rfxnum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),rrun=/queueHooks$/,animationPrefilters=[defaultPrefilter],tweeners={"*":[function(prop,value){var tween=this.createTween(prop,value),target=tween.cur(),parts=rfxnum.exec(value),unit=parts&&parts[3]||(jQuery.cssNumber[prop]?"":"px"),start=(jQuery.cssNumber[prop]||unit!=="px"&&+target)&&rfxnum.exec(jQuery.css(tween.elem,prop)),scale=1,maxIterations=20;if(start&&start[3]!==unit){unit=unit||start[3];parts=parts||[];start=+target||1;do{scale=scale||".5";start=start/scale;jQuery.style(tween.elem,prop,start+unit);}while(scale!==(scale=tween.cur()/target)&&scale!==1&&--maxIterations);}if(parts){start=tween.start=+start||+target||0;tween.unit=unit;
99tween.end=parts[1]?start+(parts[1]+1)*parts[2]:+parts[2];}return tween;}]};function createFxNow(){setTimeout(function(){fxNow=undefined;});return(fxNow=jQuery.now());}function genFx(type,includeWidth){var which,attrs={height:type},i=0;includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type;}if(includeWidth){attrs.opacity=attrs.width=type;}return attrs;}function createTween(value,prop,animation){var tween,collection=(tweeners[prop]||[]).concat(tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if((tween=collection[index].call(animation,prop,value))){return tween;}}}function defaultPrefilter(elem,props,opts){var prop,value,toggle,tween,hooks,oldfire,display,checkDisplay,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHidden(elem),dataShow=jQuery._data(elem,"fxshow");if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire();}};}hooks.unqueued++;anim.always(function(){anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire();}});});}if(elem.nodeType===1&&("height" in props||"width" in props)){opts.overflow=[style.overflow,style.overflowX,style.overflowY];display=jQuery.css(elem,"display");checkDisplay=display==="none"?jQuery._data(elem,"olddisplay")||defaultDisplay(elem.nodeName):display;if(checkDisplay==="inline"&&jQuery.css(elem,"float")==="none"){if(!support.inlineBlockNeedsLayout||defaultDisplay(elem.nodeName)==="inline"){style.display="inline-block";}else{style.zoom=1;}}}if(opts.overflow){style.overflow="hidden";if(!support.shrinkWrapBlocks()){anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2];});}}for(prop in props){value=props[prop];if(rfxtypes.exec(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true;}else{continue;}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop);}else{display=undefined;}}if(!jQuery.isEmptyObject(orig)){if(dataShow){if("hidden" in dataShow){hidden=dataShow.hidden;}}else{dataShow=jQuery._data(elem,"fxshow",{});}if(toggle){dataShow.hidden=!hidden;}if(hidden){jQuery(elem).show();}else{anim.done(function(){jQuery(elem).hide();});}anim.done(function(){var prop;jQuery._removeData(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop]);}});for(prop in orig){tween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=tween.start;if(hidden){tween.end=tween.start;tween.start=prop==="width"||prop==="height"?1:0;}}}}else{if((display==="none"?defaultDisplay(elem.nodeName):display)==="inline"){style.display=display;}}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;for(index in props){name=jQuery.camelCase(index);
99easing=specialEasing[name];value=props[index];if(jQuery.isArray(value)){easing=value[1];value=props[index]=value[0];}if(index!==name){props[name]=value;delete props[index];}hooks=jQuery.cssHooks[name];if(hooks&&"expand" in hooks){value=hooks.expand(value);delete props[name];for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing;}}}else{specialEasing[name]=easing;}}}function Animation(elem,properties,options){var result,stopped,index=0,length=animationPrefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem;}),tick=function(){if(stopped){return false;}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent);}deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining;}else{deferred.resolveWith(elem,[animation]);return false;}},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{}},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween;},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped){return this;}stopped=true;for(;index<length;index++){animation.tweens[index].run(1);}if(gotoEnd){deferred.resolveWith(elem,[animation,gotoEnd]);}else{deferred.rejectWith(elem,[animation,gotoEnd]);}return this;}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=animationPrefilters[index].call(animation,elem,props,animation.opts);if(result){return result;}}jQuery.map(props,createTween,animation);if(jQuery.isFunction(animation.opts.start)){animation.opts.start.call(elem,animation);}jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));return animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);}jQuery.Animation=jQuery.extend(Animation,{tweener:function(props,callback){if(jQuery.isFunction(props)){callback=props;props=["*"];}else{props=props.split(" ");}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];tweeners[prop]=tweeners[prop]||[];tweeners[prop].unshift(callback);}},prefilter:function(callback,prepend){if(prepend){animationPrefilters.unshift(callback);}else{animationPrefilters.push(callback);}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:opt.duration in jQuery.fx.speeds?jQuery.fx.speeds[opt.duration]:jQuery.fx.speeds._default;if(opt.queue==null||opt.queue===true){opt.queue="fx";}opt.old=opt.complete;opt.complete=function(){if(jQuery.isFunction(opt.old)){opt.old.call(this);}if(opt.queue){jQuery.dequeue(this,opt.queue);}};return opt;};jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHidden).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback);},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);if(empty||jQuery._data(this,"finish")){anim.stop(true);}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation);},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd);};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;
99type=undefined;}if(clearQueue&&type!==false){this.queue(type||"fx",[]);}return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=jQuery._data(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index]);}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index]);}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1);}}if(dequeue||!gotoEnd){jQuery.dequeue(this,type);}});},finish:function(type){if(type!==false){type=type||"fx";}return this.each(function(){var index,data=jQuery._data(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;data.finish=true;jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true);}for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1);}}for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this);}}delete data.finish;});}});jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback);};});jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback);};});jQuery.timers=[];jQuery.fx.tick=function(){var timer,timers=jQuery.timers,i=0;fxNow=jQuery.now();for(;i<timers.length;i++){timer=timers[i];if(!timer()&&timers[i]===timer){timers.splice(i--,1);}}if(!timers.length){jQuery.fx.stop();}fxNow=undefined;};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);if(timer()){jQuery.fx.start();}else{jQuery.timers.pop();}};jQuery.fx.interval=13;jQuery.fx.start=function(){if(!timerId){timerId=setInterval(jQuery.fx.tick,jQuery.fx.interval);}};jQuery.fx.stop=function(){clearInterval(timerId);timerId=null;};jQuery.fx.speeds={slow:600,fast:200,_default:400};jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=setTimeout(next,time);hooks.stop=function(){clearTimeout(timeout);};});};(function(){var input,div,select,a,opt;div=document.createElement("div");div.setAttribute("className","t");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";a=div.getElementsByTagName("a")[0];select=document.createElement("select");opt=select.appendChild(document.createElement("option"));input=div.getElementsByTagName("input")[0];a.style.cssText="top:1px";support.getSetAttribute=div.className!=="t";support.style=/top/.test(a.getAttribute("style"));support.hrefNormalized=a.getAttribute("href")==="/a";support.checkOn=!!input.value;support.optSelected=opt.selected;support.enctype=!!document.createElement("form").enctype;select.disabled=true;support.optDisabled=!opt.disabled;input=document.createElement("input");input.setAttribute("value","");support.input=input.getAttribute("value")==="";input.value="t";input.setAttribute("type","radio");support.radioValue=input.value==="t";})();var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,isFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get" in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret;}ret=elem.value;return typeof ret==="string"?ret.replace(rreturn,""):ret==null?"":ret;}return;}isFunction=jQuery.isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return;}if(isFunction){val=value.call(this,i,jQuery(this).val());}else{val=value;}if(val==null){val="";}else{if(typeof val==="number"){val+="";}else{if(jQuery.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+"";});}}}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set" in hooks)||hooks.set(this,val,"value")===undefined){this.value=val;}});}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:jQuery.trim(jQuery.text(elem));}},select:{get:function(elem){var value,option,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one"||index<0,values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;for(;i<max;i++){option=options[i];if((option.selected||i===index)&&(support.optDisabled?!option.disabled:option.getAttribute("disabled")===null)&&(!option.parentNode.disabled||!jQuery.nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value;}values.push(value);}}return values;},set:function(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(jQuery.inArray(jQuery.valHooks.option.get(option),values)>=0){try{option.selected=optionSet=true;}catch(_){option.scrollHeight;}}else{option.selected=false;}}if(!optionSet){elem.selectedIndex=-1;}return options;}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(jQuery.isArray(value)){return(elem.checked=jQuery.inArray(jQuery(elem).val(),value)>=0);}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value;};}});var nodeHook,boolHook,attrHandle=jQuery.expr.attrHandle,ruseDefault=/^(?:checked|selected)$/i,getSetAttribute=support.getSetAttribute,getSetInput=support.input;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1);},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name);});}});jQuery.extend({attr:function(elem,name,value){var hooks,ret,nType=elem.nodeType;if(!elem||nType===3||nType===8||nType===2){return;}if(typeof elem.getAttribute===strundefined){return jQuery.prop(elem,name,value);}if(nType!==1||!jQuery.isXMLDoc(elem)){name=name.toLowerCase();hooks=jQuery.attrHooks[name]||(jQuery.expr.match.bool.test(name)?boolHook:nodeHook);}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);}
99else{if(hooks&&"set" in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret;}else{elem.setAttribute(name,value+"");return value;}}}else{if(hooks&&"get" in hooks&&(ret=hooks.get(elem,name))!==null){return ret;}else{ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret;}}},removeAttr:function(elem,value){var name,propName,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&elem.nodeType===1){while((name=attrNames[i++])){propName=jQuery.propFix[name]||name;if(jQuery.expr.match.bool.test(name)){if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem[propName]=false;}else{elem[jQuery.camelCase("default-"+name)]=elem[propName]=false;}}else{jQuery.attr(elem,name,"");}elem.removeAttribute(getSetAttribute?name:propName);}}},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&value==="radio"&&jQuery.nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val;}return value;}}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name);}else{if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem.setAttribute(!getSetAttribute&&jQuery.propFix[name]||name,name);}else{elem[jQuery.camelCase("default-"+name)]=elem[name]=true;}}return name;}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=getSetInput&&getSetAttribute||!ruseDefault.test(name)?function(elem,name,isXML){var ret,handle;if(!isXML){handle=attrHandle[name];attrHandle[name]=ret;ret=getter(elem,name,isXML)!=null?name.toLowerCase():null;attrHandle[name]=handle;}return ret;}:function(elem,name,isXML){if(!isXML){return elem[jQuery.camelCase("default-"+name)]?name.toLowerCase():null;}};});if(!getSetInput||!getSetAttribute){jQuery.attrHooks.value={set:function(elem,value,name){if(jQuery.nodeName(elem,"input")){elem.defaultValue=value;}else{return nodeHook&&nodeHook.set(elem,value,name);}}};}if(!getSetAttribute){nodeHook={set:function(elem,value,name){var ret=elem.getAttributeNode(name);if(!ret){elem.setAttributeNode((ret=elem.ownerDocument.createAttribute(name)));}ret.value=value+="";if(name==="value"||value===elem.getAttribute(name)){return value;}}};attrHandle.id=attrHandle.name=attrHandle.coords=function(elem,name,isXML){var ret;if(!isXML){return(ret=elem.getAttributeNode(name))&&ret.value!==""?ret.value:null;}};jQuery.valHooks.button={get:function(elem,name){var ret=elem.getAttributeNode(name);if(ret&&ret.specified){return ret.value;}},set:nodeHook.set};jQuery.attrHooks.contenteditable={set:function(elem,value,name){nodeHook.set(elem,value===""?false:value,name);}};jQuery.each(["width","height"],function(i,name){jQuery.attrHooks[name]={set:function(elem,value){if(value===""){elem.setAttribute(name,"auto");return value;}}};});}if(!support.style){jQuery.attrHooks.style={get:function(elem){return elem.style.cssText||undefined;},set:function(elem,value){return(elem.style.cssText=value+"");}};}var rfocusable=/^(?:input|select|textarea|button|object)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1);},removeProp:function(name){name=jQuery.propFix[name]||name;return this.each(function(){try{this[name]=undefined;delete this[name];}catch(e){}});}});jQuery.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(elem,name,value){var ret,hooks,notxml,nType=elem.nodeType;if(!elem||nType===3||nType===8||nType===2){return;}notxml=nType!==1||!jQuery.isXMLDoc(elem);if(notxml){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name];}if(value!==undefined){return hooks&&"set" in hooks&&(ret=hooks.set(elem,value,name))!==undefined?ret:(elem[name]=value);}else{return hooks&&"get" in hooks&&(ret=hooks.get(elem,name))!==null?ret:elem[name];}},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?
990:-1;}}}});if(!support.hrefNormalized){jQuery.each(["href","src"],function(i,name){jQuery.propHooks[name]={get:function(elem){return elem.getAttribute(name,4);}};});}if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex;}}return null;}};}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this;});if(!support.enctype){jQuery.propFix.enctype="encoding";}var rclass=/[\t\r\n\f]/g;jQuery.fn.extend({addClass:function(value){var classes,elem,cur,clazz,j,finalValue,i=0,len=this.length,proceed=typeof value==="string"&&value;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,this.className));});}if(proceed){classes=(value||"").match(rnotwhite)||[];for(;i<len;i++){elem=this[i];cur=elem.nodeType===1&&(elem.className?(" "+elem.className+" ").replace(rclass," "):" ");if(cur){j=0;while((clazz=classes[j++])){if(cur.indexOf(" "+clazz+" ")<0){cur+=clazz+" ";}}finalValue=jQuery.trim(cur);if(elem.className!==finalValue){elem.className=finalValue;}}}}return this;},removeClass:function(value){var classes,elem,cur,clazz,j,finalValue,i=0,len=this.length,proceed=arguments.length===0||typeof value==="string"&&value;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,this.className));});}if(proceed){classes=(value||"").match(rnotwhite)||[];for(;i<len;i++){elem=this[i];cur=elem.nodeType===1&&(elem.className?(" "+elem.className+" ").replace(rclass," "):"");if(cur){j=0;while((clazz=classes[j++])){while(cur.indexOf(" "+clazz+" ")>=0){cur=cur.replace(" "+clazz+" "," ");}}finalValue=value?jQuery.trim(cur):"";if(elem.className!==finalValue){elem.className=finalValue;}}}}return this;},toggleClass:function(value,stateVal){var type=typeof value;if(typeof stateVal==="boolean"&&type==="string"){return stateVal?this.addClass(value):this.removeClass(value);}if(jQuery.isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,this.className,stateVal),stateVal);});}return this.each(function(){if(type==="string"){var className,i=0,self=jQuery(this),classNames=value.match(rnotwhite)||[];while((className=classNames[i++])){if(self.hasClass(className)){self.removeClass(className);}else{self.addClass(className);}}}else{if(type===strundefined||type==="boolean"){if(this.className){jQuery._data(this,"__className__",this.className);}this.className=this.className||value===false?"":jQuery._data(this,"__className__")||"";}}});},hasClass:function(selector){var className=" "+selector+" ",i=0,l=this.length;for(;i<l;i++){if(this[i].nodeType===1&&(" "+this[i].className+" ").replace(rclass," ").indexOf(className)>=0){return true;}}return false;}});jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup error contextmenu").split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name);};});jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver);},bind:function(types,data,fn){return this.on(types,null,data,fn);},unbind:function(types,fn){return this.off(types,null,fn);},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn);},undelegate:function(selector,types,fn){return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn);}});var nonce=jQuery.now();var rquery=(/\?/);var rvalidtokens=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON=function(data){if(window.JSON&&window.JSON.parse){return window.JSON.parse(data+"");}var requireNonComma,depth=null,str=jQuery.trim(data+"");return str&&!jQuery.trim(str.replace(rvalidtokens,function(token,comma,open,close){if(requireNonComma&&comma){depth=0;}if(depth===0){return token;}requireNonComma=open||comma;depth+=!close-!open;return"";}))?(Function("return "+str))():jQuery.error("Invalid JSON: "+data);};jQuery.parseXML=function(data){var xml,tmp;
99if(!data||typeof data!=="string"){return null;}try{if(window.DOMParser){tmp=new DOMParser();xml=tmp.parseFromString(data,"text/xml");}else{xml=new ActiveXObject("Microsoft.XMLDOM");xml.async="false";xml.loadXML(data);}}catch(e){xml=undefined;}if(!xml||!xml.documentElement||xml.getElementsByTagName("parsererror").length){jQuery.error("Invalid XML: "+data);}return xml;};var ajaxLocParts,ajaxLocation,rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,prefilters={},transports={},allTypes="*/".concat("*");try{ajaxLocation=location.href;}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href;}ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[];function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*";}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnotwhite)||[];if(jQuery.isFunction(func)){while((dataType=dataTypes[i++])){if(dataType.charAt(0)==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func);}else{(structure[dataType]=structure[dataType]||[]).push(func);}}}};}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=(structure===transports);function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false;}else{if(seekingTransport){return !(selected=dataTypeOrTransport);}}});return selected;}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*");}function ajaxExtend(target,src){var deep,key,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:(deep||(deep={})))[key]=src[key];}}if(deep){jQuery.extend(true,target,deep);}return target;}function ajaxHandleResponses(s,jqXHR,responses){var firstDataType,ct,finalDataType,type,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type");}}if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break;}}}if(dataTypes[0] in responses){finalDataType=dataTypes[0];}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break;}if(!firstDataType){firstDataType=type;}}finalDataType=finalDataType||firstDataType;}if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType);}return responses[finalDataType];}}function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv];}}current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response;}if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType);}prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev;}else{if(prev!=="*"&&prev!==current){conv=converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2];}else{if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1]);}}break;}}}}if(conv!==true){if(conv&&s["throws"]){response=conv(response);}else{try{response=conv(response);}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current};}}}}}}}return{state:"success",data:response};}jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target);},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined;}options=options||{};var parts,i,cacheURL,responseHeadersString,timeoutTimer,fireGlobals,transport,responseHeaders,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},state=0,strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(state===2){if(!responseHeaders){responseHeaders={};while((match=rheaders.exec(responseHeadersString))){responseHeaders[match[1].toLowerCase()]=match[2];}}match=responseHeaders[key.toLowerCase()];}return match==null?null:match;},getAllResponseHeaders:function(){return state===2?responseHeadersString:null;},setRequestHeader:function(name,value){var lname=name.toLowerCase();if(!state){name=requestHeadersNames[lname]=requestHeadersNames[lname]||name;requestHeaders[name]=value;}return this;},overrideMimeType:function(type){if(!state){s.mimeType=type;}return this;},statusCode:function(map){var code;if(map){if(state<2){for(code in map){statusCode[code]=[statusCode[code],map[code]];}}else{jqXHR.always(map[jqXHR.status]);}}return this;},abort:function(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText);}done(0,finalText);return this;}};deferred.promise(jqXHR).complete=completeDeferred.add;jqXHR.success=jqXHR.done;jqXHR.error=jqXHR.fail;s.url=((url||s.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().match(rnotwhite)||[""];if(s.crossDomain==null){parts=rurl.exec(s.url.toLowerCase());s.crossDomain=!!(parts&&(parts[1]!==ajaxLocParts[1]||parts[2]!==ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?"80":"443"))!==(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?"80":"443"))));}
99if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional);}inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(state===2){return jqXHR;}fireGlobals=s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart");}s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url;if(!s.hasContent){if(s.data){cacheURL=(s.url+=(rquery.test(cacheURL)?"&":"?")+s.data);delete s.data;}if(s.cache===false){s.url=rts.test(cacheURL)?cacheURL.replace(rts,"$1_="+nonce++):cacheURL+(rquery.test(cacheURL)?"&":"?")+"_="+nonce++;}}if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL]);}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL]);}}if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType);}jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i]);}if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||state===2)){return jqXHR.abort();}strAbort="abort";for(i in {success:1,error:1,complete:1}){jqXHR[i](s[i]);}transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport");}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s]);}if(s.async&&s.timeout>0){timeoutTimer=setTimeout(function(){jqXHR.abort("timeout");},s.timeout);}try{state=1;transport.send(requestHeaders,done);}catch(e){if(state<2){done(-1,e);}else{throw e;}}}function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(state===2){return;}state=2;if(timeoutTimer){clearTimeout(timeoutTimer);}transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR,responses);}response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified;}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified;}}if(status===204||s.type==="HEAD"){statusText="nocontent";}else{if(status===304){statusText="notmodified";}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error;}}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0;}}}jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR]);}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error]);}jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error]);}completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!(--jQuery.active)){jQuery.event.trigger("ajaxStop");}}}return jqXHR;},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script");}});jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data=undefined;}return jQuery.ajax({url:url,type:method,dataType:type,data:data,success:callback});};});jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn);};});jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",async:false,global:false,"throws":true});};jQuery.fn.extend({wrapAll:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapAll(html.call(this,i));});}if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0]);}wrap.map(function(){var elem=this;while(elem.firstChild&&elem.firstChild.nodeType===1){elem=elem.firstChild;}return elem;}).append(this);}return this;},wrapInner:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i));});}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html);}else{self.append(html);}});},wrap:function(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html);});},unwrap:function(){return this.parent().each(function(){if(!jQuery.nodeName(this,"body")){jQuery(this).replaceWith(this.childNodes);}}).end();}});jQuery.expr.filters.hidden=function(elem){return elem.offsetWidth<=0&&elem.offsetHeight<=0||(!support.reliableHiddenOffsets()&&((elem.style&&elem.style.display)||jQuery.css(elem,"display"))==="none");};jQuery.expr.filters.visible=function(elem){return !jQuery.expr.filters.hidden(elem);};var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(jQuery.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v);}else{buildParams(prefix+"["+(typeof v==="object"?i:"")+"]",v,traditional,add);}});}else{if(!traditional&&jQuery.type(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add);}}else{add(prefix,obj);}}}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,value){value=jQuery.isFunction(value)?value():(value==null?"":value);s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value);};if(traditional===undefined){traditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional;}if(jQuery.isArray(a)||(a.jquery&&!jQuery.isPlainObject(a))){jQuery.each(a,function(){add(this.name,this.value);});}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add);}}return s.join("&").replace(r20,"+");};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this;}
99).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")};}):{name:elem.name,value:val.replace(rCRLF,"\r\n")};}).get();}});jQuery.ajaxSettings.xhr=window.ActiveXObject!==undefined?function(){return !this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&createStandardXHR()||createActiveXHR();}:createStandardXHR;var xhrId=0,xhrCallbacks={},xhrSupported=jQuery.ajaxSettings.xhr();if(window.ActiveXObject){jQuery(window).on("unload",function(){for(var key in xhrCallbacks){xhrCallbacks[key](undefined,true);}});}support.cors=!!xhrSupported&&("withCredentials" in xhrSupported);xhrSupported=support.ajax=!!xhrSupported;if(xhrSupported){jQuery.ajaxTransport(function(options){if(!options.crossDomain||support.cors){var callback;return{send:function(headers,complete){var i,xhr=options.xhr(),id=++xhrId;xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i];}}if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType);}if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest";}for(i in headers){if(headers[i]!==undefined){xhr.setRequestHeader(i,headers[i]+"");}}xhr.send((options.hasContent&&options.data)||null);callback=function(_,isAbort){var status,statusText,responses;if(callback&&(isAbort||xhr.readyState===4)){delete xhrCallbacks[id];callback=undefined;xhr.onreadystatechange=jQuery.noop;if(isAbort){if(xhr.readyState!==4){xhr.abort();}}else{responses={};status=xhr.status;
99if(typeof xhr.responseText==="string"){responses.text=xhr.responseText;}try{statusText=xhr.statusText;}catch(e){statusText="";}if(!status&&options.isLocal&&!options.crossDomain){status=responses.text?200:404;}else{if(status===1223){status=204;}}}}if(responses){complete(status,statusText,responses,xhr.getAllResponseHeaders());}};if(!options.async){callback();}else{if(xhr.readyState===4){setTimeout(callback);}else{xhr.onreadystatechange=xhrCallbacks[id]=callback;}}},abort:function(){if(callback){callback(undefined,true);}}};}});}function createStandardXHR(){try{return new window.XMLHttpRequest();}catch(e){}}function createActiveXHR(){try{return new window.ActiveXObject("Microsoft.XMLHTTP");}catch(e){}}jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(text){jQuery.globalEval(text);return text;}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false;}if(s.crossDomain){s.type="GET";s.global=false;}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||jQuery("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script");script.async=true;if(s.scriptCharset){script.charset=s.scriptCharset;}script.src=s.url;script.onload=script.onreadystatechange=function(_,isAbort){if(isAbort||!script.readyState||/loaded|complete/.test(script.readyState)){script.onload=script.onreadystatechange=null;if(script.parentNode){script.parentNode.removeChild(script);}script=null;if(!isAbort){callback(200,"success");}}};head.insertBefore(script,head.firstChild);},abort:function(){if(script){script.onload(undefined,true);}}};}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||(jQuery.expando+"_"+(nonce++));this[callback]=true;return callback;}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&!(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||s.dataTypes[0]==="jsonp"){callbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName);}else{if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName;}}s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called");}return responseContainer[0];};s.dataTypes[0]="json";overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments;};jqXHR.always(function(){window[callbackName]=overwritten;if(s[callbackName]){s.jsonpCallback=originalSettings.jsonpCallback;oldCallbacks.push(callbackName);}if(responseContainer&&jQuery.isFunction(overwritten)){overwritten(responseContainer[0]);}responseContainer=overwritten=undefined;});return"script";}});jQuery.parseHTML=function(data,context,keepScripts){if(!data||typeof data!=="string"){return null;}if(typeof context==="boolean"){keepScripts=context;context=false;}context=context||document;var parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])];}parsed=jQuery.buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove();}return jQuery.merge([],parsed.childNodes);};var _load=jQuery.fn.load;jQuery.fn.load=function(url,params,callback){if(typeof url!=="string"&&_load){return _load.apply(this,arguments);}var selector,response,type,self=this,off=url.indexOf(" ");if(off>=0){selector=jQuery.trim(url.slice(off,url.length));url=url.slice(0,off);}if(jQuery.isFunction(params)){callback=params;params=undefined;}else{if(params&&typeof params==="object"){type="POST";}}if(self.length>0){jQuery.ajax({url:url,type:type,dataType:"html",data:params}).done(function(responseText){response=arguments;self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText);}).complete(callback&&function(jqXHR,status){self.each(callback,response||[jqXHR.responseText,status,jqXHR]);});}return this;};jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem;}).length;};var docElem=window.document.documentElement;function getWindow(elem){return jQuery.isWindow(elem)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false;}jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};if(position==="static"){elem.style.position="relative";}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&jQuery.inArray("auto",[curCSSTop,curCSSLeft])>-1;if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left;}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0;}if(jQuery.isFunction(options)){options=options.call(elem,i,curOffset);}if(options.top!=null){props.top=(options.top-curOffset.top)+curTop;}
99if(options.left!=null){props.left=(options.left-curOffset.left)+curLeft;}if("using" in options){options.using.call(elem,props);}else{curElem.css(props);}}};jQuery.fn.extend({offset:function(options){if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i);});}var docElem,win,box={top:0,left:0},elem=this[0],doc=elem&&elem.ownerDocument;if(!doc){return;}docElem=doc.documentElement;if(!jQuery.contains(docElem,elem)){return box;}if(typeof elem.getBoundingClientRect!==strundefined){box=elem.getBoundingClientRect();}win=getWindow(doc);return{top:box.top+(win.pageYOffset||docElem.scrollTop)-(docElem.clientTop||0),left:box.left+(win.pageXOffset||docElem.scrollLeft)-(docElem.clientLeft||0)};},position:function(){if(!this[0]){return;}var offsetParent,offset,parentOffset={top:0,left:0},elem=this[0];if(jQuery.css(elem,"position")==="fixed"){offset=elem.getBoundingClientRect();}else{offsetParent=this.offsetParent();offset=this.offset();if(!jQuery.nodeName(offsetParent[0],"html")){parentOffset=offsetParent.offset();}parentOffset.top+=jQuery.css(offsetParent[0],"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent[0],"borderLeftWidth",true);}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)};},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent||docElem;while(offsetParent&&(!jQuery.nodeName(offsetParent,"html")&&jQuery.css(offsetParent,"position")==="static")){offsetParent=offsetParent.offsetParent;}return offsetParent||docElem;});}});jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top=/Y/.test(prop);jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);if(val===undefined){return win?(prop in win)?win[prop]:win.document.documentElement[method]:elem[method];}if(win){win.scrollTo(!top?val:jQuery(win).scrollLeft(),top?val:jQuery(win).scrollTop());}else{elem[method]=val;}},method,val,arguments.length,null);};});jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed;}});});jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(jQuery.isWindow(elem)){return elem.document.documentElement["client"+name];}if(elem.nodeType===9){doc=elem.documentElement;return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name]);}return value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra);},type,chainable?margin:undefined,chainable,null);};});});jQuery.fn.size=function(){return this.length;};jQuery.fn.andSelf=jQuery.fn.addBack;if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery;});}var _jQuery=window.jQuery,_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$;}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery;}return jQuery;};if(typeof noGlobal===strundefined){window.jQuery=window.$=jQuery;}return jQuery;})); 100 /* Ende jquery */ 101 /* Start gsb_responsiveListener */ 102 /*! 103 * --GSBDocStart 104 * @module gsb_responsiveListener 105 * @version 1.1.0 106 * @see {@link http://semver.org|Semantic Versioning} 107 * @author anuebel, pespeloe 108 * 109 * @desc Ãndert die Options der Plugins je Breakpoint. Ãber die Callbackfunction "onRefresh" kann je Auflösung eine Function ausgeführt werden 110 * 111 * @example 112 * base.$el.gsb_responsiveListener(base); 113 *--GSBDocEnd 114 * Licensed under the MIT license 115 * 116 * Callback function je Breakpoint 117 * */ 118(function($){if(!$.gsb){$.gsb={};}$.gsb.responsiveListener=function(pluginBase){var base=this;this.base=base;this.pluginBase=pluginBase;this.base.breakpoints=[];this.base.breakpointSettings=[];this.base.activeBreakpoint=null;this.base.windowWidth=0;base.init=function(){base.options=pluginBase.options;base.originalOptions=base.options;this.base.options=base.options;this.base.originalOptions=base.originalOptions;base.initResponsive();base.checkResponsive();if(base.options.respondToEvents===true){base.initEvents();}};$.gsb.responsiveListener.prototype.initEvents=function(){var $window=$(window),onResize=function(){if($(window).width()!==base.windowWidth){clearTimeout(base.windowDelay);base.windowDelay=window.setTimeout(function(){base.windowWidth=$(window).width();base.checkResponsive();},100);}};$window.on("resize",onResize);$window.on("orientationchange",function(){base.checkResponsive();});};base.init();};$.gsb.responsiveListener.prototype.initResponsive=function(){var breakpoint,responsiveSettings=this.base.options.responsive||null;if(responsiveSettings&&responsiveSettings.length>-1){for(breakpoint in responsiveSettings){if(responsiveSettings.hasOwnProperty(breakpoint)){this.base.breakpoints.push(responsiveSettings[breakpoint].breakpoint);this.base.breakpointSettings[responsiveSettings[breakpoint].breakpoint]=responsiveSettings[breakpoint];}}
118this.base.breakpoints.sort(function(a,b){return b-a;});}};$.gsb.responsiveListener.prototype.checkResponsive=function(){var breakpoint,targetBreakpoint,respondToWidth=window.innerWidth||$(window).width();if(this.base.originalOptions.responsive&&this.base.originalOptions.responsive.length>-1&&this.base.originalOptions.responsive!==null){targetBreakpoint=null;if(this.base.activeBreakpoint!==null&&respondToWidth>=this.base.breakpoints[0]){this.base.activeBreakpoint=null;this.pluginBase.options=this.base.originalOptions;}for(breakpoint in this.base.breakpoints){if(this.base.breakpoints.hasOwnProperty(breakpoint)){if(respondToWidth<this.base.breakpoints[breakpoint]){targetBreakpoint=this.base.breakpoints[breakpoint];this.base.highestResolution=false;}}}if(this.base.highestResolution){return;}if(targetBreakpoint!==null){if(this.base.activeBreakpoint!==null){if(targetBreakpoint!==this.base.activeBreakpoint){this.base.activeBreakpoint=targetBreakpoint;this.pluginBase.options=$.extend({},this.base.originalOptions,this.base.breakpointSettings[targetBreakpoint]);this.base.triggerRefresh();}}else{this.base.activeBreakpoint=targetBreakpoint;this.pluginBase.options=$.extend({},this.base.originalOptions,this.base.breakpointSettings[targetBreakpoint]);this.base.triggerRefresh();}}else{if(this.base.activeBreakpoint!==null){this.base.activeBreakpoint=null;this.base.options=this.base.originalOptions;this.base.triggerRefresh();}else{this.base.highestResolution=true;this.base.triggerRefresh();}}}else{if(this.base.originalOptions.onRefresh&&this.base.originalOptions.onRefresh.length>-1&&this.base.originalOptions.onRefresh!==null){if(this.base.highestResolution){return;}this.base.triggerRefresh();this.base.highestResolution=true;}}};$.gsb.responsiveListener.prototype.triggerRefresh=function(){if(typeof this.pluginBase.options.onRefresh==="function"){this.pluginBase.options.onRefresh.call(this.pluginBase);}};$.fn.gsb_responsiveListener=function(pluginBase){return this.each(function(){(new $.gsb.responsiveListener(pluginBase));});};})(jQuery); 119 /* Ende gsb_responsiveListener */ 120 /* Start gsb_ariaSupport */ 121 (function($){if(!$.gsb){$.gsb={};}$.gsb.ariaSupport=function(pluginBase){this.base=this;this.pluginBase=pluginBase;this.base.init=function(){this.base.options=pluginBase.options;this.base.originalOptions=this.base.options;this.base.options=this.base.options;this.base.originalOptions=this.base.originalOptions;this.base.initializeAria();};this.base.init();};$.gsb.ariaSupport.prototype.initializeAria=function(){var ariaType=this.base.options.ariaType,base=this.base,pluginBase=this.pluginBase;base.moduleOptions=$.gsb.ariaSupport.defaultOptions[ariaType.toUpperCase()];base.attributesPanel=$.gsb.ariaSupport.defaultOptions[ariaType.toUpperCase()]["panel"];base.attributesContent=$.gsb.ariaSupport.defaultOptions[ariaType.toUpperCase()]["content"];base.panelToggle=base.setToggleoptions(base.attributesPanel);base.contentToggle=base.setToggleoptions(base.attributesContent);pluginBase.controlPanel.get().forEach(function(panel,index){var firstOpen=$.gsb.ariaSupport.defaultOptions[ariaType.toUpperCase()].firstOpen;var addAural=$.gsb.ariaSupport.defaultOptions[ariaType.toUpperCase()].addAural;if(firstOpen&&index>0){firstOpen=false;}base.setAttributes(panel,base.attributesPanel,index,firstOpen);if(addAural){if(firstOpen){base.addAural(panel,true);}else{base.addAural(panel,false);}}if(pluginBase.contentPanel&&pluginBase.contentPanel.get(index)){base.setAttributes(pluginBase.contentPanel.get(index),base.attributesContent,index,firstOpen);}});};$.gsb.ariaSupport.defaultOptions={TAB:{firstOpen:true,panel:{id:function(base){return base.generateID();},role:"tab",aria_selected:["true","false"],aria_controls:function(base){return base.generateID();}},content:{role:"tabpanel",aria_hidden:["false","true"],id:function(base,index){return base.getPanelAttribute(index,"aria-controls");},aria_labelledby:function(base,index){return base.getPanelAttribute(index,"id");}}},ACCORDION:{panel:{role:"tab",aria_expanded:["true","false"],aria_selected:["true","false"],id:function(base){return base.generateID();},aria_controls:function(base){return base.generateID();}},content:{role:"tabpanel",aria_hidden:["false","true"],id:function(base,index){return base.getPanelAttribute(index,"aria-controls");},aria_labelledby:function(base,index){return base.getPanelAttribute(index,"id");}}},LIGTHBOX:{panel:{aria_haspopup:"true"}},MOBILEMENU:{panel:{aria_controls:function(base){return base.generateID();},id:function(base){return base.generateID();}},content:{aria_labelledby:function(base,index){return base.getPanelAttribute(index,"id");},id:function(base,index){return base.getPanelAttribute(index,"aria-controls");},aria_hidden:["false","true"],aria_expanded:["true","false"]}
121}};$.gsb.ariaSupport.prototype.generateID=function(){return"_"+Math.random().toString(36).substr(2,9);};$.gsb.ariaSupport.prototype.addAural=function(elem,open){var base=this.base;var auralSpan=document.createElement("span");auralSpan.classList.add("aural");var index=1;if(open==true){index=0;}var auralText=document.createTextNode(base.moduleOptions.auralText[index]);auralSpan.appendChild(auralText);elem.insertBefore(auralSpan,elem.firstChild);};$.gsb.ariaSupport.prototype.updateAural=function(clickedElem,open){var base=this.base;var auralSpan=clickedElem.querySelector(".aural");var index=1;if(open==true){index=0;}auralSpan.removeChild(auralSpan.firstChild);var auralText=document.createTextNode(base.moduleOptions.auralText[index]);auralSpan.appendChild(auralText);};$.gsb.ariaSupport.prototype.setAttributes=function(elem,options,index,open){var base=this.base;for(var key in options){var keyNameAsProperty=key.replace(/_/g,"-");if(typeof options[key]==="function"){elem.setAttribute(keyNameAsProperty,options[key].call(this,base,index));}else{if(Array.isArray(options[key])){if(options[key].length==2){if(open){elem.setAttribute(keyNameAsProperty,options[key][0]);}else{elem.setAttribute(keyNameAsProperty,options[key][1]);}}}else{elem.setAttribute(keyNameAsProperty,options[key]);}}}};$.gsb.ariaSupport.prototype.setToggleoptions=function(options){var obj={};for(key in options){if(Array.isArray(options[key])){obj[key]=options[key];}}return obj;};$.gsb.ariaSupport.prototype.getPanelAttribute=function(elementIndex,attribute){return this.pluginBase.controlPanel.get(elementIndex).getAttribute(attribute);};$.gsb.ariaSupport.prototype.getContentAttribute=function(elementIndex,attribute){return this.pluginBase.contentPanel.get(elementIndex).getAttribute(attribute);};$.gsb.ariaSupport.prototype.updateAria=function(clickedElem,externalOpen,singleOpen){var base=this.base;pluginBase=base.pluginBase;if(typeof externalOpen!="boolean"){externalOpen=null;}base.pluginBase.controlPanel.get().forEach(function(elem,index){var open=false;if(externalOpen){open=true;}else{if(externalOpen==null&&elem==clickedElem){open=true;}}if(singleOpen){if(elem!==clickedElem){return;}}base.setAttributes(elem,base.panelToggle,index,open);base.setAttributes(pluginBase.contentPanel.get(index),base.contentToggle,index,open);});};$.fn.gsb_ariaSupport=function(pluginBase){return(new $.gsb.ariaSupport(pluginBase));};})(jQuery); 122 /* Ende gsb_ariaSupport */ 123 /* Start foundation */ 124 (function($,window,document,undefined){var header_helpers=function(class_array){var i=class_array.length;var head=$("head");while(i--){if(head.has("."+class_array[i]).length===0){head.append('<meta class="'+class_array[i]+'" />');}}};header_helpers(["foundation-mq-small","foundation-mq-medium","foundation-mq-large","foundation-mq-xlarge","foundation-mq-xxlarge","foundation-data-attribute-namespace"]);$(function(){if(typeof FastClick!=="undefined"){if(typeof document.body!=="undefined"){FastClick.attach(document.body);}}});var S=function(selector,context){if(typeof selector==="string"){if(context){var cont;if(context.jquery){cont=context[0];if(!cont){return context;}}else{cont=context;}return $(cont.querySelectorAll(selector));}return $(document.querySelectorAll(selector));}return $(selector,context);};var attr_name=function(init){var arr=[];if(!init){arr.push("data");}if(this.namespace.length>0){arr.push(this.namespace);}arr.push(this.name);return arr.join("-");};var add_namespace=function(str){var parts=str.split("-"),i=parts.length,arr=[];while(i--){if(i!==0){arr.push(parts[i]);}else{if(this.namespace.length>0){arr.push(this.namespace,parts[i]);}else{arr.push(parts[i]);}}}return arr.reverse().join("-");};var bindings=function(method,options){var self=this,should_bind_events=!S(this).data(this.attr_name(true));if(S(this.scope).is("["+this.attr_name()+"]")){S(this.scope).data(this.attr_name(true)+"-init",$.extend({},this.settings,(options||method),this.data_options(S(this.scope))));if(should_bind_events){this.events(this.scope);}}else{S("["+this.attr_name()+"]",this.scope).each(function(){var should_bind_events=!S(this).data(self.attr_name(true)+"-init");S(this).data(self.attr_name(true)+"-init",$.extend({},self.settings,(options||method),self.data_options(S(this))));if(should_bind_events){self.events(this);}});}
124if(typeof method==="string"){return this[method].call(this,options);}};var single_image_loaded=function(image,callback){function loaded(){callback(image[0]);}function bindLoad(){this.one("load",loaded);if(/MSIE (\d+\.\d+);/.test(navigator.userAgent)){var src=this.attr("src"),param=src.match(/\?/)?"&":"?";param+="random="+(new Date()).getTime();this.attr("src",src+param);}}if(!image.attr("src")){loaded();return;}if(image[0].complete||image[0].readyState===4){loaded();}else{bindLoad.call(image);}};window.matchMedia=window.matchMedia||(function(doc){var bool,docElem=doc.documentElement,refNode=docElem.firstElementChild||docElem.firstChild,fakeBody=doc.createElement("body"),div=doc.createElement("div");div.id="mq-test-1";div.style.cssText="position:absolute;top:-100em";fakeBody.style.background="none";fakeBody.appendChild(div);return function(q){div.innerHTML='­<style media="'+q+'"> #mq-test-1 { width: 42px; }</style>';docElem.insertBefore(fakeBody,refNode);bool=div.offsetWidth===42;docElem.removeChild(fakeBody);return{matches:bool,media:q};};}(document));(function($){var animating,lastTime=0,vendors=["webkit","moz"],requestAnimationFrame=window.requestAnimationFrame,cancelAnimationFrame=window.cancelAnimationFrame,jqueryFxAvailable="undefined"!==typeof jQuery.fx;for(;lastTime<vendors.length&&!requestAnimationFrame;lastTime++){requestAnimationFrame=window[vendors[lastTime]+"RequestAnimationFrame"];cancelAnimationFrame=cancelAnimationFrame||window[vendors[lastTime]+"CancelAnimationFrame"]||window[vendors[lastTime]+"CancelRequestAnimationFrame"];}function raf(){if(animating){requestAnimationFrame(raf);if(jqueryFxAvailable){jQuery.fx.tick();}}}if(requestAnimationFrame){window.requestAnimationFrame=requestAnimationFrame;window.cancelAnimationFrame=cancelAnimationFrame;if(jqueryFxAvailable){jQuery.fx.timer=function(timer){if(timer()&&jQuery.timers.push(timer)&&!animating){animating=true;raf();}};jQuery.fx.stop=function(){animating=false;};}}else{window.requestAnimationFrame=function(callback){var currTime=new Date().getTime(),timeToCall=Math.max(0,16-(currTime-lastTime)),id=window.setTimeout(function(){callback(currTime+timeToCall);},timeToCall);lastTime=currTime+timeToCall;return id;};window.cancelAnimationFrame=function(id){clearTimeout(id);};}}(jQuery));function removeQuotes(string){if(typeof string==="string"||string instanceof String){string=string.replace(/^['\\/"]+|(;\s?})+|['\\/"]+$/g,"");}return string;}window.Foundation={name:"Foundation",version:"{{VERSION}}",media_queries:{small:S(".foundation-mq-small").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),medium:S(".foundation-mq-medium").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),large:S(".foundation-mq-large").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xlarge:S(".foundation-mq-xlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,""),xxlarge:S(".foundation-mq-xxlarge").css("font-family").replace(/^[\/\\'"]+|(;\s?})+|[\/\\'"]+$/g,"")},stylesheet:$("<style></style>").appendTo("head")[0].sheet,global:{namespace:undefined},init:function(scope,libraries,method,options,response){var args=[scope,method,options,response],responses=[];this.rtl=/rtl/i.test(S("html").attr("dir"));this.scope=scope||this.scope;this.set_namespace();if(libraries&&typeof libraries==="string"&&!/reflow/i.test(libraries)){if(this.libs.hasOwnProperty(libraries)){responses.push(this.init_lib(libraries,args));}}else{for(var lib in this.libs){responses.push(this.init_lib(lib,libraries));}}S(window).load(function(){S(window).trigger("resize.fndtn.clearing").trigger("resize.fndtn.dropdown").trigger("resize.fndtn.equalizer").trigger("resize.fndtn.interchange").trigger("resize.fndtn.joyride").trigger("resize.fndtn.magellan").trigger("resize.fndtn.topbar").trigger("resize.fndtn.slider");});return scope;},init_lib:function(lib,args){if(this.libs.hasOwnProperty(lib)){this.patch(this.libs[lib]);if(args&&args.hasOwnProperty(lib)){if(typeof this.libs[lib].settings!=="undefined"){$.extend(true,this.libs[lib].settings,args[lib]);}else{if(typeof this.libs[lib].defaults!=="undefined"){$.extend(true,this.libs[lib].defaults,args[lib]);}}return this.libs[lib].init.apply(this.libs[lib],[this.scope,args[lib]]);}args=args instanceof Array?args:new Array(args);
124return this.libs[lib].init.apply(this.libs[lib],args);}return function(){};},patch:function(lib){lib.scope=this.scope;lib.namespace=this.global.namespace;lib.rtl=this.rtl;lib["data_options"]=this.utils.data_options;lib["attr_name"]=attr_name;lib["add_namespace"]=add_namespace;lib["bindings"]=bindings;lib["S"]=this.utils.S;},inherit:function(scope,methods){var methods_arr=methods.split(" "),i=methods_arr.length;while(i--){if(this.utils.hasOwnProperty(methods_arr[i])){scope[methods_arr[i]]=this.utils[methods_arr[i]];}}},set_namespace:function(){var namespace=(this.global.namespace===undefined)?$(".foundation-data-attribute-namespace").css("font-family"):this.global.namespace;this.global.namespace=(namespace===undefined||/false/i.test(namespace))?"":namespace;},libs:{},utils:{S:S,throttle:function(func,delay){var timer=null;return function(){var context=this,args=arguments;if(timer==null){timer=setTimeout(function(){func.apply(context,args);timer=null;},delay);}};},debounce:function(func,delay,immediate){var timeout,result;return function(){var context=this,args=arguments;var later=function(){timeout=null;if(!immediate){result=func.apply(context,args);}};var callNow=immediate&&!timeout;clearTimeout(timeout);timeout=setTimeout(later,delay);if(callNow){result=func.apply(context,args);}return result;};},data_options:function(el,data_attr_name){data_attr_name=data_attr_name||"options";var opts={},ii,p,opts_arr,data_options=function(el){var namespace=Foundation.global.namespace;if(namespace.length>0){return el.data(namespace+"-"+data_attr_name);}return el.data(data_attr_name);};var cached_options=data_options(el);if(typeof cached_options==="object"){return cached_options;}opts_arr=(cached_options||":").split(";");ii=opts_arr.length;function isNumber(o){return !isNaN(o-0)&&o!==null&&o!==""&&o!==false&&o!==true;}function trim(str){if(typeof str==="string"){return $.trim(str);}return str;}while(ii--){p=opts_arr[ii].split(":");p=[p[0],p.slice(1).join(":")];if(/true/i.test(p[1])){p[1]=true;}if(/false/i.test(p[1])){p[1]=false;}if(isNumber(p[1])){if(p[1].indexOf(".")===-1){p[1]=parseInt(p[1],10);}else{p[1]=parseFloat(p[1]);}}if(p.length===2&&p[0].length>0){opts[trim(p[0])]=trim(p[1]);}}return opts;},register_media:function(media,media_class){if(Foundation.media_queries[media]===undefined){$("head").append('<meta class="'+media_class+'"/>');Foundation.media_queries[media]=removeQuotes($("."+media_class).css("font-family"));}},add_custom_rule:function(rule,media){if(media===undefined&&Foundation.stylesheet){Foundation.stylesheet.insertRule(rule,Foundation.stylesheet.cssRules.length);}else{var query=Foundation.media_queries[media];if(query!==undefined){Foundation.stylesheet.insertRule("@media "+Foundation.media_queries[media]+"{ "+rule+" }");}}},image_loaded:function(images,callback){var self=this,unloaded=images.length;if(unloaded===0){callback(images);}images.each(function(){single_image_loaded(self.S(this),function(){unloaded-=1;if(unloaded===0){callback(images);}});});},random_str:function(){if(!this.fidx){this.fidx=0;}this.prefix=this.prefix||[(this.name||"F"),(+new Date).toString(36)].join("-");return this.prefix+(this.fidx++).toString(36);}}};$.fn.foundation=function(){var args=Array.prototype.slice.call(arguments,0);return this.each(function(){Foundation.init.apply(Foundation,[this].concat(args));return this;});};}(jQuery,window,window.document)); 125 /* Ende foundation */ 126 /* Start foundation.tooltip */ 127 (function($,window,document,undefined){Foundation.libs.tooltip={name:"tooltip",version:"{{VERSION}}",settings:{additional_inheritable_classes:[],tooltip_class:".tooltip",append_to:"body",touch_close_text:"Tap To Close",disable_for_touch:false,hover_delay:200,show_on:"all",tip_template:function(selector,content){return'<span data-selector="'+selector+'" id="'+selector+'" class="'+Foundation.libs.tooltip.settings.tooltip_class.substring(1)+'" role="tooltip">'+content+'<span class="nub"></span></span>';}},cache:{},init:function(scope,method,options){Foundation.inherit(this,"random_str");this.bindings(method,options);},should_show:function(target,tip){var settings=$.extend({},this.settings,this.data_options(target));if(settings.show_on==="all"){return true;}
127else{if(this.small()&&settings.show_on==="small"){return true;}else{if(this.medium()&&settings.show_on==="medium"){return true;}else{if(this.large()&&settings.show_on==="large"){return true;}}}}return false;},medium:function(){return matchMedia(Foundation.media_queries["medium"]).matches;},large:function(){return matchMedia(Foundation.media_queries["large"]).matches;},events:function(instance){var self=this,S=self.S;self.create(this.S(instance));$(this.scope).off(".tooltip").on("mouseenter.fndtn.tooltip mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"]",function(e){var $this=S(this),settings=$.extend({},self.settings,self.data_options($this)),is_touch=false;if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)&&S(e.target).is("a")){return false;}if(/mouse/i.test(e.type)&&self.ie_touch(e)){return false;}if($this.hasClass("open")){if(Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)){e.preventDefault();}self.hide($this);}else{if(settings.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)){return;}else{if(!settings.disable_for_touch&&Modernizr.touch&&/touchstart|MSPointerDown/i.test(e.type)){e.preventDefault();S(settings.tooltip_class+".open").hide();is_touch=true;}}if(/enter|over/i.test(e.type)){this.timer=setTimeout(function(){var tip=self.showTip($this);}.bind(this),self.settings.hover_delay);}else{if(e.type==="mouseout"||e.type==="mouseleave"){clearTimeout(this.timer);self.hide($this);}else{self.showTip($this);}}}}).on("mouseleave.fndtn.tooltip touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip","["+this.attr_name()+"].open",function(e){if(/mouse/i.test(e.type)&&self.ie_touch(e)){return false;}if($(this).data("tooltip-open-event-type")=="touch"&&e.type=="mouseleave"){return;}else{if($(this).data("tooltip-open-event-type")=="mouse"&&/MSPointerDown|touchstart/i.test(e.type)){self.convert_to_touch($(this));}else{self.hide($(this));}}}).on("DOMNodeRemoved DOMAttrModified","["+this.attr_name()+"]:not(a)",function(e){self.hide(S(this));});},ie_touch:function(e){return false;},showTip:function($target){var $tip=this.getTip($target);if(this.should_show($target,$tip)){return this.show($target);}return;},getTip:function($target){var selector=this.selector($target),settings=$.extend({},this.settings,this.data_options($target)),tip=null;if(selector){tip=this.S('span[data-selector="'+selector+'"]'+settings.tooltip_class);}return(typeof tip==="object")?tip:false;},selector:function($target){var id=$target.attr("id"),dataSelector=$target.attr(this.attr_name())||$target.attr("data-selector");if((id&&id.length<1||!id)&&typeof dataSelector!="string"){dataSelector=this.random_str(6);$target.attr("data-selector",dataSelector).attr("aria-describedby",dataSelector);}return(id&&id.length>0)?id:dataSelector;},create:function($target){var self=this,settings=$.extend({},this.settings,this.data_options($target)),tip_template=this.settings.tip_template;if(typeof settings.tip_template==="string"&&window.hasOwnProperty(settings.tip_template)){tip_template=window[settings.tip_template];}var $tip=$(tip_template(this.selector($target),$("<div></div>").html($target.attr("title")).html())),classes=this.inheritable_classes($target);
127$tip.addClass(classes).appendTo(settings.append_to);if(Modernizr.touch){$tip.append('<span class="tap-to-close">'+settings.touch_close_text+"</span>");$tip.on("touchstart.fndtn.tooltip MSPointerDown.fndtn.tooltip",function(e){self.hide($target);});}$target.removeAttr("title").attr("title","");},reposition:function(target,tip,classes){var width,nub,nubHeight,nubWidth,column,objPos;tip.css("visibility","hidden").show();width=target.data("width");nub=tip.children(".nub");nubHeight=nub.outerHeight();nubWidth=nub.outerHeight();if(this.small()){tip.css({"width":"100%"});}else{tip.css({"width":(width)?width:"auto"});}objPos=function(obj,top,right,bottom,left,width){return obj.css({"top":(top)?top:"auto","bottom":(bottom)?bottom:"auto","left":(left)?left:"auto","right":(right)?right:"auto"}).end();};objPos(tip,(target.offset().top+target.outerHeight()+10),"auto","auto",target.offset().left);if(this.small()){objPos(tip,(target.offset().top+target.outerHeight()+10),"auto","auto",12.5,$(this.scope).width());tip.addClass("tip-override");objPos(nub,-nubHeight,"auto","auto",target.offset().left);}else{var left=target.offset().left;if(Foundation.rtl){nub.addClass("rtl");left=target.offset().left+target.outerWidth()-tip.outerWidth();}objPos(tip,(target.offset().top+target.outerHeight()+10),"auto","auto",left);tip.removeClass("tip-override");if(classes&&classes.indexOf("tip-top")>-1){if(Foundation.rtl){nub.addClass("rtl");}objPos(tip,(target.offset().top-tip.outerHeight()),"auto","auto",left).removeClass("tip-override");}else{if(classes&&classes.indexOf("tip-left")>-1){objPos(tip,(target.offset().top+(target.outerHeight()/2)-(tip.outerHeight()/2)),"auto","auto",(target.offset().left-tip.outerWidth()-nubHeight)).removeClass("tip-override");nub.removeClass("rtl");}else{if(classes&&classes.indexOf("tip-right")>-1){objPos(tip,(target.offset().top+(target.outerHeight()/2)-(tip.outerHeight()/2)),"auto","auto",(target.offset().left+target.outerWidth()+nubHeight)).removeClass("tip-override");nub.removeClass("rtl");}}}}tip.css("visibility","visible").hide();},small:function(){return matchMedia(Foundation.media_queries.small).matches&&!matchMedia(Foundation.media_queries.medium).matches;},inheritable_classes:function($target){var settings=$.extend({},this.settings,this.data_options($target)),inheritables=["tip-top","tip-left","tip-bottom","tip-right","radius","round"].concat(settings.additional_inheritable_classes),classes=$target.attr("class"),filtered=classes?$.map(classes.split(" "),function(el,i){if($.inArray(el,inheritables)!==-1){return el;}}).join(" "):"";return $.trim(filtered);},convert_to_touch:function($target){var self=this,$tip=self.getTip($target),settings=$.extend({},self.settings,self.data_options($target));if($tip.find(".tap-to-close").length===0){$tip.append('<span class="tap-to-close">'+settings.touch_close_text+"</span>");$tip.on("click.fndtn.tooltip.tapclose touchstart.fndtn.tooltip.tapclose MSPointerDown.fndtn.tooltip.tapclose",function(e){self.hide($target);});}$target.data("tooltip-open-event-type","touch");},show:function($target){var $tip=this.getTip($target);if($target.data("tooltip-open-event-type")=="touch"){this.convert_to_touch($target);}this.reposition($target,$tip,$target.attr("class"));$target.addClass("open");$tip.fadeIn(150);},hide:function($target){var $tip=this.getTip($target);$tip.fadeOut(150,function(){$tip.find(".tap-to-close").remove();$tip.off("click.fndtn.tooltip.tapclose MSPointerDown.fndtn.tapclose");$target.removeClass("open");});},off:function(){var self=this;this.S(this.scope).off(".fndtn.tooltip");this.S(this.settings.tooltip_class).each(function(i){$("["+self.attr_name()+"]").eq(i).attr("title",$(this).text());}).remove();},reflow:function(){}};}(jQuery,window,window.document)); 128 /* Ende foundation.tooltip */ 129 /* Start hammer */ 130 /*! Hammer.JS - v2.0.2 - 2014-07-28 * http://hammerjs.github.io/ * * Copyright (c) 2014 Jorik Tangelder <[email protected]>; * Licensed under the MIT license 131* --GSBDocStart 132 * @module HammerJS 133 * @version 2.0.2 134 * @see {@link http://hammerjs.github.io} 135 * @author Jorik Tangelder, 2014 136 * @license MIT license 137 * 138 * @desc Unterstüzt single- und multi-touch Gesten. 139 * Implementiert ist: tap, doubletap, pan, swipe, press, pinch, rotate 140 *--GSBDocEnd 141*/ 142!function(a,b,c,d){function e(a,b,c){return setTimeout(k(a,c),b);}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1;}function g(a,b,c){var e,f;
142if(a){if(a.forEach){a.forEach(b,c);}else{if(a.length!==d){for(e=0,f=a.length;f>e;e++){b.call(c,a[e],e,a);}}else{for(e in a){a.hasOwnProperty(e)&&b.call(c,a[e],e,a);}}}}}function h(a,b,c){for(var e=Object.keys(b),f=0,g=e.length;g>f;f++){(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]);}return a;}function i(a,b){return h(a,b,!0);}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c);}function k(a,b){return function(){return a.apply(b,arguments);};}function l(a,b){return typeof a==hb?a.apply(b?b[0]||d:d,b):a;}function m(a,b){return a===d?b:a;}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1);});}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1);});}function p(a,b){for(;a;){if(a==b){return !0;}a=a.parentNode;}return !1;}function q(a,b){return a.indexOf(b)>-1;}function r(a){return a.trim().split(/\s+/g);}function s(a,b,c){if(a.indexOf&&!c){return a.indexOf(b);}for(var d=0,e=a.length;e>d;d++){if(c&&a[d][c]==b||!c&&a[d]===b){return d;}}return -1;}function t(a){return Array.prototype.slice.call(a,0);}function u(a,b,c){for(var d=[],e=[],f=0,g=a.length;g>f;f++){var h=b?a[f][b]:a[f];s(e,h)<0&&d.push(a[f]),e[f]=h;}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b];}):d.sort()),d;}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0,h=fb.length;h>g;g++){if(c=fb[g],e=c?c+f:b,e in a){return e;}}return d;}function w(){return lb++;}function x(b,c){var d=this;this.manager=b,this.callback=c,this.element=b.element,this.target=b.options.inputTarget,this.domHandler=function(a){l(b.options.enable,[b])&&d.handler(a);},this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(a,this.evWin,this.domHandler);}function y(a){var b;return new (b=ob?M:pb?N:nb?P:L)(a,z);}function z(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&vb&&d-e===0,g=b&(xb|yb)&&d-e===0;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,A(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c;}function A(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=D(b)),e>1&&!c.firstMultiple?c.firstMultiple=D(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=E(d);b.timeStamp=kb(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=I(h,i),b.distance=H(h,i),B(c,b),b.offsetDirection=G(b.deltaX,b.deltaY),b.scale=g?K(g.pointers,d):1,b.rotation=g?J(g.pointers,d):0,C(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j;}function B(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===vb||f.eventType===xb)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y);}function C(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=yb&&(i>ub||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=F(i,j,k);e=l.x,f=l.y,c=jb(l.x)>jb(l.y)?l.x:l.y,g=G(j,k),a.lastInterval=b;}else{c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;}b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g;}function D(a){for(var b=[],c=0;c<a.pointers.length;c++){b[c]={clientX:ib(a.pointers[c].clientX),clientY:ib(a.pointers[c].clientY)};}return{timeStamp:kb(),pointers:b,center:E(b),deltaX:a.deltaX,deltaY:a.deltaY};}function E(a){var b=a.length;if(1===b){return{x:ib(a[0].clientX),y:ib(a[0].clientY)};}for(var c=0,d=0,e=0;b>e;e++){c+=a[e].clientX,d+=a[e].clientY;}return{x:ib(c/b),y:ib(d/b)};}function F(a,b,c){return{x:b/a||0,y:c/a||0};}function G(a,b){return a===b?zb:jb(a)>=jb(b)?a>0?Ab:Bb:b>0?Cb:Db;}function H(a,b,c){c||(c=Hb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e);}function I(a,b,c){c||(c=Hb);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI;}function J(a,b){return I(b[1],b[0],Ib)-I(a[1],a[0],Ib);}function K(a,b){return H(b[0],b[1],Ib)/H(a[0],a[1],Ib);}function L(){this.evEl=Kb,this.evWin=Lb,this.allow=!0,this.pressed=!1,x.apply(this,arguments);}function M(){this.evEl=Ob,this.evWin=Pb,x.apply(this,arguments),this.store=this.manager.session.pointerEvents=[];}function N(){this.evTarget=Rb,this.targetIds={},x.apply(this,arguments);}function O(a,b){var c=t(a.touches),d=this.targetIds;if(b&(vb|wb)&&1===c.length){return d[c[0].identifier]=!0,[c,c];}var e,f,g=t(a.targetTouches),h=t(a.changedTouches),i=[];if(b===vb){for(e=0,f=g.length;f>e;e++){d[g[e].identifier]=!0;}}for(e=0,f=h.length;f>e;e++){d[h[e].identifier]&&i.push(h[e]),b&(xb|yb)&&delete d[h[e].identifier];}return i.length?[u(g.concat(i),"identifier",!0),i]:void 0;}function P(){x.apply(this,arguments);var a=k(this.handler,this);this.touch=new N(this.manager,a),this.mouse=new L(this.manager,a);}function Q(a,b){this.manager=a,this.set(b);}function R(a){if(q(a,Xb)){return Xb;}var b=q(a,Yb),c=q(a,Zb);return b&&c?Yb+" "+Zb:b||c?b?Yb:Zb:q(a,Wb)?Wb:Vb;}function S(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=$b,this.simultaneous={},this.requireFail=[];}function T(a){return a&dc?"cancel":a&bc?"end":a&ac?"move":a&_b?"start":"";}
142function U(a){return a==Db?"down":a==Cb?"up":a==Ab?"left":a==Bb?"right":"";}function V(a,b){var c=b.manager;return c?c.get(a):a;}function W(){S.apply(this,arguments);}function X(){W.apply(this,arguments),this.pX=null,this.pY=null;}function Y(){W.apply(this,arguments);}function Z(){S.apply(this,arguments),this._timer=null,this._input=null;}function $(){W.apply(this,arguments);}function _(){W.apply(this,arguments);}function ab(){S.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0;}function bb(a,b){return b=b||{},b.recognizers=m(b.recognizers,bb.defaults.preset),new cb(a,b);}function cb(a,b){b=b||{},this.options=i(b,bb.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=y(this),this.touchAction=new Q(this,this.options.touchAction),db(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[2]);},this);}function db(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:"";});}function eb(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d);}var fb=["","webkit","moz","MS","ms","o"],gb=b.createElement("div"),hb="function",ib=Math.round,jb=Math.abs,kb=Date.now,lb=1,mb=/mobile|tablet|ip(ad|hone|od)|android/i,nb="ontouchstart" in a,ob=v(a,"PointerEvent")!==d,pb=nb&&mb.test(navigator.userAgent),qb="touch",rb="pen",sb="mouse",tb="kinect",ub=25,vb=1,wb=2,xb=4,yb=8,zb=1,Ab=2,Bb=4,Cb=8,Db=16,Eb=Ab|Bb,Fb=Cb|Db,Gb=Eb|Fb,Hb=["x","y"],Ib=["clientX","clientY"];x.prototype={handler:function(){},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(a,this.evWin,this.domHandler);}};var Jb={mousedown:vb,mousemove:wb,mouseup:xb},Kb="mousedown",Lb="mousemove mouseup";j(L,x,{handler:function(a){var b=Jb[a.type];b&vb&&0===a.button&&(this.pressed=!0),b&wb&&1!==a.which&&(b=xb),this.pressed&&this.allow&&(b&xb&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:sb,srcEvent:a}));}});var Mb={pointerdown:vb,pointermove:wb,pointerup:xb,pointercancel:yb,pointerout:yb},Nb={2:qb,3:rb,4:sb,5:tb},Ob="pointerdown",Pb="pointermove pointerup pointercancel";a.MSPointerEvent&&(Ob="MSPointerDown",Pb="MSPointerMove MSPointerUp MSPointerCancel"),j(M,x,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Mb[d],f=Nb[a.pointerType]||a.pointerType,g=f==qb;e&vb&&(0===a.button||g)?b.push(a):e&(xb|yb)&&(c=!0);var h=s(b,a.pointerId,"pointerId");0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1));}});var Qb={touchstart:vb,touchmove:wb,touchend:xb,touchcancel:yb},Rb="touchstart touchmove touchend touchcancel";j(N,x,{handler:function(a){var b=Qb[a.type],c=O.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:qb,srcEvent:a});}}),j(P,x,{handler:function(a,b,c){var d=c.pointerType==qb,e=c.pointerType==sb;if(d){this.mouse.allow=!1;}else{if(e&&!this.mouse.allow){return;}}b&(xb|yb)&&(this.mouse.allow=!0),this.callback(a,b,c);},destroy:function(){this.touch.destroy(),this.mouse.destroy();}});var Sb=v(gb.style,"touchAction"),Tb=Sb!==d,Ub="compute",Vb="auto",Wb="manipulation",Xb="none",Yb="pan-x",Zb="pan-y";Q.prototype={set:function(a){a==Ub&&(a=this.compute()),Tb&&(this.manager.element.style[Sb]=a),this.actions=a.toLowerCase().trim();},update:function(){this.set(this.manager.options.touchAction);},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()));}),R(a.join(" "));},preventDefaults:function(a){if(!Tb){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented){return void b.preventDefault();}var d=this.actions,e=q(d,Xb),f=q(d,Zb),g=q(d,Yb);return e||f&&g||f&&c&Eb||g&&c&Fb?this.preventSrc(b):void 0;}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault();}};var $b=1,_b=2,ac=4,bc=8,cc=bc,dc=16,ec=32;S.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this;}
142,recognizeWith:function(a){if(f(a,"recognizeWith",this)){return this;}var b=this.simultaneous;return a=V(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this;},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=V(a,this),delete this.simultaneous[a.id],this);},requireFailure:function(a){if(f(a,"requireFailure",this)){return this;}var b=this.requireFail;return a=V(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this;},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this)){return this;}a=V(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this;},hasRequireFailures:function(){return this.requireFail.length>0;},canRecognizeWith:function(a){return !!this.simultaneous[a.id];},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?T(d):""),a);}var c=this,d=this.state;bc>d&&b(!0),b(),d>=bc&&b(!0);},tryEmit:function(a){return this.canEmit()?this.emit(a):void (this.state=ec);},canEmit:function(){for(var a=0;a<this.requireFail.length;a++){if(!(this.requireFail[a].state&(ec|$b))){return !1;}}return !0;},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(cc|dc|ec)&&(this.state=$b),this.state=this.process(b),void (this.state&(_b|ac|bc|dc)&&this.tryEmit(b))):(this.reset(),void (this.state=ec));},process:function(){},getTouchAction:function(){},reset:function(){}},j(W,S,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b;},process:function(a){var b=this.state,c=a.eventType,d=b&(_b|ac),e=this.attrTest(a);return d&&(c&yb||!e)?b|dc:d||e?c&xb?b|bc:b&_b?b|ac:_b:ec;}}),j(X,W,{defaults:{event:"pan",threshold:10,pointers:1,direction:Gb},getTouchAction:function(){var a=this.options.direction;if(a===Gb){return[Xb];}var b=[];return a&Eb&&b.push(Zb),a&Fb&&b.push(Yb),b;},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Eb?(e=0===f?zb:0>f?Ab:Bb,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?zb:0>g?Cb:Db,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction;},attrTest:function(a){return W.prototype.attrTest.call(this,a)&&(this.state&_b||!(this.state&_b)&&this.directionTest(a));},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=U(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a);}}),j(Y,W,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Xb];},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&_b);},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a);}}}),j(Z,S,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Vb];},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(xb|yb)&&!f){this.reset();}else{if(a.eventType&vb){this.reset(),this._timer=e(function(){this.state=cc,this.tryEmit();},b.time,this);}else{if(a.eventType&xb){return cc;}}}return ec;},reset:function(){clearTimeout(this._timer);},emit:function(a){this.state===cc&&(a&&a.eventType&xb?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=kb(),this.manager.emit(this.options.event,this._input)));}}),j($,W,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Xb];},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&_b);}}),j(_,W,{defaults:{event:"swipe",threshold:10,velocity:0.65,direction:Eb|Fb,pointers:1},getTouchAction:function(){return X.prototype.getTouchAction.call(this);},attrTest:function(a){var b,c=this.options.direction;return c&(Eb|Fb)?b=a.velocity:c&Eb?b=a.velocityX:c&Fb&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&jb(b)>this.options.velocity&&a.eventType&xb;},emit:function(a){var b=U(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a);}}),j(ab,S,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Wb];},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaT
142ime<b.time;if(this.reset(),a.eventType&vb&&0===this.count){return this.failTimeout();}if(d&&f&&c){if(a.eventType!=xb){return this.failTimeout();}var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||H(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i){return this.hasRequireFailures()?(this._timer=e(function(){this.state=cc,this.tryEmit();},b.interval,this),_b):cc;}}return ec;},failTimeout:function(){return this._timer=e(function(){this.state=ec;},this.options.interval,this),ec;},reset:function(){clearTimeout(this._timer);},emit:function(){this.state==cc&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input));}}),bb.VERSION="2.0.2",bb.defaults={domEvents:!1,touchAction:Ub,inputTarget:null,enable:!0,preset:[[$,{enable:!1}],[Y,{enable:!1},["rotate"]],[_,{direction:Eb}],[X,{direction:Eb},["swipe"]],[ab],[ab,{event:"doubletap",taps:2},["tap"]],[Z]],cssProps:{userSelect:"none",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var fc=1,gc=2;cb.prototype={set:function(a){return h(this.options,a),this;},stop:function(a){this.session.stopped=a?gc:fc;},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&cc)&&(e=b.curRecognizer=null);for(var f=0,g=d.length;g>f;f++){c=d[f],b.stopped===gc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(_b|ac|bc)&&(e=b.curRecognizer=c);}}},get:function(a){if(a instanceof S){return a;}for(var b=this.recognizers,c=0;c<b.length;c++){if(b[c].options.event==a){return b[c];}}return null;},add:function(a){if(f(a,"add",this)){return this;}var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a;},remove:function(a){if(f(a,"remove",this)){return this;}var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this;},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b);}),this;},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a];}),this;},emit:function(a,b){this.options.domEvents&&eb(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault();};for(var d=0,e=c.length;e>d;d++){c[d](b);}}},destroy:function(){this.element&&db(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null;}},h(bb,{INPUT_START:vb,INPUT_MOVE:wb,INPUT_END:xb,INPUT_CANCEL:yb,STATE_POSSIBLE:$b,STATE_BEGAN:_b,STATE_CHANGED:ac,STATE_ENDED:bc,STATE_RECOGNIZED:cc,STATE_CANCELLED:dc,STATE_FAILED:ec,DIRECTION_NONE:zb,DIRECTION_LEFT:Ab,DIRECTION_RIGHT:Bb,DIRECTION_UP:Cb,DIRECTION_DOWN:Db,DIRECTION_HORIZONTAL:Eb,DIRECTION_VERTICAL:Fb,DIRECTION_ALL:Gb,Manager:cb,Input:x,TouchAction:Q,Recognizer:S,AttrRecognizer:W,Tap:ab,Pan:X,Swipe:_,Pinch:Y,Rotate:$,Press:Z,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==hb&&define.amd?define(function(){return bb;}):"undefined"!=typeof module&&module.exports?module.exports=bb:a[c]=bb;}(window,document,"Hammer"); 143 /* Ende hammer */ 144 /* Start jquery.hammer */ 145 (function($,Hammer,dataAttr){function hammerify(el,options){var $el=$(el);if(!$el.data(dataAttr)){$el.data(dataAttr,new Hammer($el[0],options));}}$.fn.hammer=function(options){return this.each(function(){hammerify(this,options);});};Hammer.Manager.prototype.emit=(function(originalEmit){return function(type,data){originalEmit.call(this,type,data);jQuery(this.element).triggerHandler({type:type,gesture:data});};})(Hammer.Manager.prototype.emit);})(jQuery,Hammer,"hammer"); 146 /* Ende jquery.hammer */ 147 /* Start jquery.mmenu */ 148 (function($){var _PLUGIN_="mmenu",_VERSION_="5.5.3";if($[_PLUGIN_]&&$[_PLUGIN_].version>_VERSION_){return;}$[_PLUGIN_]=function($menu,opts,conf){this.$menu=$menu;this._api=["bind","init","update","setSelected","getInstance","openPanel","closePanel","closeAllPanels"];this.opts=opts;this.conf=conf;this.vars={};this.cbck={};if(typeof this.___deprecated=="function"){this.___deprecated();}this._initMenu();this._initAnchors();var $pnls=this.$pnls.children();this._initAddons();this.init($pnls);if(typeof this.___debug=="function"){this.___debug();}return this;};$[_PLUGIN_].version=_VERSION_;$[_PLUGIN_].addons={};$[_PLUGIN_].uniqueId=0;$[_PLUGIN_].defaults={extensions:[],navbar:{add:true,title:"Menu",titleLink:"panel"},onClick:{setSelected:true},slidingSubmenus:true};$[_PLUGIN_].configuration={classNames:{divider:"Divider",inset:"Inset",panel:"Panel",selected:"Selected",spacer:"Spacer",vertical:"Vertical"},clone:false,openingInterval:25,panelNodetype:"ul, ol, div",transitionDuration:400};$[_PLUGIN_].prototype={init:function($panels){$panels=$panels.not("."+_c.nopanel);$panels=this._initPanels($panels);this.trigger("init",$panels);this.trigger("update");},update:function(){this.trigger("update");},setSelected:function($li){this.$menu.find("."+_c.listview).children().removeClass(_c.selected);$li.addClass(_c.selected);this.trigger("setSelected",$li);},openPanel:function($panel){var $l=$panel.parent();if($l.hasClass(_c.vertical)){var $sub=$l.parents("."+_c.subopened);
148if($sub.length){return this.openPanel($sub.first());}$l.addClass(_c.opened);}else{if($panel.hasClass(_c.current)){return;}var $panels=this.$pnls.children("."+_c.panel),$current=$panels.filter("."+_c.current);$panels.removeClass(_c.highest).removeClass(_c.current).not($panel).not($current).not("."+_c.vertical).addClass(_c.hidden);if(!$[_PLUGIN_].support.csstransitions){$current.addClass(_c.hidden);}if($panel.hasClass(_c.opened)){$panel.nextAll("."+_c.opened).addClass(_c.highest).removeClass(_c.opened).removeClass(_c.subopened);}else{$panel.addClass(_c.highest);$current.addClass(_c.subopened);}$panel.removeClass(_c.hidden).addClass(_c.current);setTimeout(function(){$panel.removeClass(_c.subopened).addClass(_c.opened);},this.conf.openingInterval);}this.trigger("openPanel",$panel);},closePanel:function($panel){var $l=$panel.parent();if($l.hasClass(_c.vertical)){$l.removeClass(_c.opened);this.trigger("closePanel",$panel);}},closeAllPanels:function(){this.$menu.find("."+_c.listview).children().removeClass(_c.selected).filter("."+_c.vertical).removeClass(_c.opened);var $pnls=this.$pnls.children("."+_c.panel),$frst=$pnls.first();this.$pnls.children("."+_c.panel).not($frst).removeClass(_c.subopened).removeClass(_c.opened).removeClass(_c.current).removeClass(_c.highest).addClass(_c.hidden);this.openPanel($frst);},togglePanel:function($panel){var $l=$panel.parent();if($l.hasClass(_c.vertical)){this[$l.hasClass(_c.opened)?"closePanel":"openPanel"]($panel);}},getInstance:function(){return this;},bind:function(event,fn){this.cbck[event]=this.cbck[event]||[];this.cbck[event].push(fn);},trigger:function(){var that=this,args=Array.prototype.slice.call(arguments),evnt=args.shift();if(this.cbck[evnt]){for(var e=0,l=this.cbck[evnt].length;e<l;e++){this.cbck[evnt][e].apply(that,args);}}},_initMenu:function(){var that=this;if(this.opts.offCanvas&&this.conf.clone){this.$menu=this.$menu.clone(true);this.$menu.add(this.$menu.find("[id]")).filter("[id]").each(function(){$(this).attr("id",_c.mm($(this).attr("id")));});}this.$menu.contents().each(function(){if($(this)[0].nodeType==3){$(this).remove();}});this.$pnls=$('<div class="'+_c.panels+'" />').append(this.$menu.children(this.conf.panelNodetype)).prependTo(this.$menu);this.$menu.parent().addClass(_c.wrapper);var clsn=[_c.menu];if(!this.opts.slidingSubmenus){clsn.push(_c.vertical);}this.opts.extensions=(this.opts.extensions.length)?"mm-"+this.opts.extensions.join(" mm-"):"";if(this.opts.extensions){clsn.push(this.opts.extensions);}this.$menu.addClass(clsn.join(" "));},_initPanels:function($panels){var that=this;var $lists=this.__findAddBack($panels,"ul, ol");this.__refactorClass($lists,this.conf.classNames.inset,"inset").addClass(_c.nolistview+" "+_c.nopanel);$lists.not("."+_c.nolistview).addClass(_c.listview);var $lis=this.__findAddBack($panels,"."+_c.listview).children();this.__refactorClass($lis,this.conf.classNames.selected,"selected");this.__refactorClass($lis,this.conf.classNames.divider,"divider");this.__refactorClass($lis,this.conf.classNames.spacer,"spacer");this.__refactorClass(this.__findAddBack($panels,"."+this.conf.classNames.panel),this.conf.classNames.panel,"panel");var $curpanels=$(),$oldpanels=$panels.add($panels.find("."+_c.panel)).add(this.__findAddBack($panels,"."+_c.listview).children().children(this.conf.panelNodetype)).not("."+_c.nopanel);this.__refactorClass($oldpanels,this.conf.classNames.vertical,"vertical");if(!this.opts.slidingSubmenus){$oldpanels.addClass(_c.vertical);}$oldpanels.each(function(){var $t=$(this),$p=$t;if($t.is("ul, ol")){$t.wrap('<div class="'+_c.panel+'" />');$p=$t.parent();}else{$p.addClass(_c.panel);}var id=$t.attr("id");$t.removeAttr("id");$p.attr("id",id||that.__getUniqueId());if($t.hasClass(_c.vertical)){$t.removeClass(that.conf.classNames.vertical);$p.add($p.parent()).addClass(_c.vertical);}$curpanels=$curpanels.add($p);});var $allpanels=$("."+_c.panel,this.$menu);$curpanels.each(function(i){var $t=$(this),$p=$t.parent(),$a=$p.children("a, span").first();if(!$p.is("."+_c.panels)){$p.data(_d.sub,$t);$t.data(_d.parent,$p);}if(!$p.children("."+_c.next).length){if($p.parent().is("."+_c.listview)){var id=$t.attr("id"),$b=$('<a class="'+_c.next+'" href="#'+id+'" data-target="#'+id+'" />').insertBefore($a);if($a.is("span")){$b.addClass(_c.fullsubopen);}}}if(!$t.children("."+_c.navbar).length){if(!$p.hasClass(_c.vertical)){if($p.parent().is("."+_c.listview)){var $p=$p.closest("."+_c.panel);}else{var $a=$p.closest("."+_c.panel).find('a[href="#'+$t.attr("id")+'"]').first(),$p=$a.closest("."+_c.panel);}var $navbar=$('<div class="'+_c.navbar+'" />');if($p.length){var id=$p.attr("id");switch(that.opts.navbar.titleLink){case"anchor":_url=$a.attr("href");break;case"panel":case"parent":_url="#"+id;break;case"none":default:_url=false;break;}$navbar.append('<a class="'+_c.btn+" "+_c.prev+'" href="#'+id+'" data-target="#'+id+'" />').append($('<a class="'+_c.title+'"'+(_url?' href="'+_url+'"':"")+" />").text($a.text())).prependTo($t);
148if(that.opts.navbar.add){$t.addClass(_c.hasnavbar);}}else{if(that.opts.navbar.title){$navbar.append('<a class="'+_c.title+'">'+that.opts.navbar.title+"</a>").prependTo($t);if(that.opts.navbar.add){$t.addClass(_c.hasnavbar);}}}}}});var $s=this.__findAddBack($panels,"."+_c.listview).children("."+_c.selected).removeClass(_c.selected).last().addClass(_c.selected);$s.add($s.parentsUntil("."+_c.menu,"li")).filter("."+_c.vertical).addClass(_c.opened).end().not("."+_c.vertical).each(function(){$(this).parentsUntil("."+_c.menu,"."+_c.panel).not("."+_c.vertical).first().addClass(_c.opened).parentsUntil("."+_c.menu,"."+_c.panel).not("."+_c.vertical).first().addClass(_c.opened).addClass(_c.subopened);});$s.children("."+_c.panel).not("."+_c.vertical).addClass(_c.opened).parentsUntil("."+_c.menu,"."+_c.panel).not("."+_c.vertical).first().addClass(_c.opened).addClass(_c.subopened);var $current=$allpanels.filter("."+_c.opened);if(!$current.length){$current=$curpanels.first();}$current.addClass(_c.opened).last().addClass(_c.current);$curpanels.not("."+_c.vertical).not($current.last()).addClass(_c.hidden).end().appendTo(this.$pnls);return $curpanels;},_initAnchors:function(){var that=this;glbl.$body.on(_e.click+"-oncanvas","a[href]",function(e){var $t=$(this),fired=false,inMenu=that.$menu.find($t).length;for(var a in $[_PLUGIN_].addons){if(fired=$[_PLUGIN_].addons[a].clickAnchor.call(that,$t,inMenu)){break;}}if(!fired&&inMenu){var _h=$t.attr("href");if(_h.length>1&&_h.slice(0,1)=="#"){try{var $h=$(_h,that.$menu);if($h.is("."+_c.panel)){fired=true;that[$t.parent().hasClass(_c.vertical)?"togglePanel":"openPanel"]($h);}}catch(err){}}}if(fired){e.preventDefault();}if(!fired&&inMenu){if($t.is("."+_c.listview+" > li > a")&&!$t.is('[rel="external"]')&&!$t.is('[target="_blank"]')){if(that.__valueOrFn(that.opts.onClick.setSelected,$t)){that.setSelected($(e.target).parent());}var preventDefault=that.__valueOrFn(that.opts.onClick.preventDefault,$t,_h.slice(0,1)=="#");if(preventDefault){e.preventDefault();}if(that.__valueOrFn(that.opts.onClick.close,$t,preventDefault)){that.close();}}}});},_initAddons:function(){for(var a in $[_PLUGIN_].addons){$[_PLUGIN_].addons[a].add.call(this);$[_PLUGIN_].addons[a].add=function(){};}for(var a in $[_PLUGIN_].addons){$[_PLUGIN_].addons[a].setup.call(this);}},__api:function(){var that=this,api={};$.each(this._api,function(i){var fn=this;api[fn]=function(){var re=that[fn].apply(that,arguments);return(typeof re=="undefined")?api:re;};});return api;},__valueOrFn:function(o,$e,d){if(typeof o=="function"){return o.call($e[0]);}if(typeof o=="undefined"&&typeof d!="undefined"){return d;}return o;},__refactorClass:function($e,o,c){return $e.filter("."+o).removeClass(o).addClass(_c[c]);},__findAddBack:function($e,s){return $e.find(s).add($e.filter(s));},__filterListItems:function($i){return $i.not("."+_c.divider).not("."+_c.hidden);},__transitionend:function($e,fn,duration){var _ended=false,_fn=function(){if(!_ended){fn.call($e[0]);}_ended=true;};$e.one(_e.transitionend,_fn);$e.one(_e.webkitTransitionEnd,_fn);setTimeout(_fn,duration*1.1);},__getUniqueId:function(){return _c.mm($[_PLUGIN_].uniqueId++);}};$.fn[_PLUGIN_]=function(opts,conf){initPlugin();opts=$.extend(true,{},$[_PLUGIN_].defaults,opts);conf=$.extend(true,{},$[_PLUGIN_].configuration,conf);return this.each(function(){var $menu=$(this);if($menu.data(_PLUGIN_)){return;}var _menu=new $[_PLUGIN_]($menu,opts,conf);$menu.data(_PLUGIN_,_menu.__api());});};$[_PLUGIN_].support={touch:"ontouchstart" in window||navigator.msMaxTouchPoints,csstransitions:(function(){if(typeof Modernizr!=="undefined"&&typeof Modernizr.csstransitions!=="undefined"){return Modernizr.csstransitions;}var b=document.body||document.documentElement,s=b.style,p="transition";if(typeof s[p]=="string"){return true;}var v=["Moz","webkit","Webkit","Khtml","O","ms"];p=p.charAt(0).toUpperCase()+p.substr(1);for(var i=0;i<v.length;i++){if(typeof s[v[i]+p]=="string"){return true;}}return false;})()};var _c,_d,_e,glbl;function initPlugin(){if($[_PLUGIN_].glbl){return;}glbl={$wndw:$(window),$html:$("html"),$body:$("body")};_c={};_d={};_e={};$.each([_c,_d,_e],function(i,o){o.add=function(a){a=a.split(" ");for(var b=0,l=a.length;b<l;b++){o[a[b]]=o.mm(a[b]);}};});_c.mm=function(c){return"mm-"+c;};_c.add("wrapper menu panels panel nopanel current highest opened subopened navbar hasnavbar title btn prev next listview nolistview inset vertical selected divider spacer hidden fullsubopen");_c.umm=function(c){if(c.slice(0,3)=="mm-"){c=c.slice(3);}return c;};_d.mm=function(d){return"mm-"+d;};_d.add("parent sub");_e.mm=function(e){return e+".mm";};_e.add("transitionend webkitTransitionEnd mousedown mouseup touchstart touchmove touchend click keydown");$[_PLUGIN_]._c=_c;$[_PLUGIN_]._d=_d;$[_PLUGIN_]._e=_e;$[_PLUGIN_].glbl=glbl;}})(jQuery);(function($){var _PLUGIN_="mmenu",_ADDON_="offCanvas";$[_PLUGIN_].addons[_ADDON_]={setup:function(){if(!this.opts[_ADDON_]){return;}var that=this,opts=this.opts[_ADDON_],conf=this.conf[_ADDON_];glbl=$[_PLUGIN_].glbl;this._api=$.merge(this._api,["open","close","setPage"]);if(opts.position=="top"||opts.position=="bottom"){opts.zposition="front";}if(typeof conf.pageSelector!="string"){conf.pageSelector="> "+conf.pageNodetype;}glbl.$allMenus=(glbl.$allMenus||$()).add(this.$menu);this.vars.opened=false;var clsn=[_c.offcanvas];if(opts.position!="left"){clsn.push(_c.mm(opts.position));}if(opts.zposition!="back"){clsn.push(_c.mm(opts.zposition));}this.$menu.addClass(clsn.join(" ")).parent().removeClass(_c.wrapper);this.setPage(glbl.$page);this._initBlocker();this["_initWindow_"+_ADDON_]();this.$menu[conf.menuInjectMethod+"To"](conf.menuWrapperSelector);},add:function(){_c=$[_PLUGIN_]._c;_d=$[_PLUGIN_]._d;_e=$[_PLUGIN_]._e;_c.add("offcanvas slideout blocking modal background opening blocker page");_d.add("style");_e.add("resize");}
148,clickAnchor:function($a,inMenu){if(!this.opts[_ADDON_]){return false;}var id=this.$menu.attr("id");if(id&&id.length){if(this.conf.clone){id=_c.umm(id);}if($a.is('[href="#'+id+'"]')){this.open();return true;}}if(!glbl.$page){return;}var id=glbl.$page.first().attr("id");if(id&&id.length){if($a.is('[href="#'+id+'"]')){this.close();return true;}}return false;}};$[_PLUGIN_].defaults[_ADDON_]={position:"left",zposition:"back",blockUI:true,moveBackground:true};$[_PLUGIN_].configuration[_ADDON_]={pageNodetype:"div",pageSelector:null,noPageSelector:[],wrapPageIfNeeded:true,menuWrapperSelector:"body",menuInjectMethod:"prepend"};$[_PLUGIN_].prototype.open=function(){if(this.vars.opened){return;}var that=this;this._openSetup();setTimeout(function(){that._openFinish();},this.conf.openingInterval);this.trigger("open");};$[_PLUGIN_].prototype._openSetup=function(){var that=this,opts=this.opts[_ADDON_];this.closeAllOthers();glbl.$page.each(function(){$(this).data(_d.style,$(this).attr("style")||"");});glbl.$wndw.trigger(_e.resize+"-"+_ADDON_,[true]);var clsn=[_c.opened];if(opts.blockUI){clsn.push(_c.blocking);}if(opts.blockUI=="modal"){clsn.push(_c.modal);}if(opts.moveBackground){clsn.push(_c.background);}if(opts.position!="left"){clsn.push(_c.mm(this.opts[_ADDON_].position));}if(opts.zposition!="back"){clsn.push(_c.mm(this.opts[_ADDON_].zposition));}if(this.opts.extensions){clsn.push(this.opts.extensions);}glbl.$html.addClass(clsn.join(" "));setTimeout(function(){that.vars.opened=true;},this.conf.openingInterval);this.$menu.addClass(_c.current+" "+_c.opened);};$[_PLUGIN_].prototype._openFinish=function(){var that=this;this.__transitionend(glbl.$page.first(),function(){that.trigger("opened");},this.conf.transitionDuration);glbl.$html.addClass(_c.opening);this.trigger("opening");};$[_PLUGIN_].prototype.close=function(){if(!this.vars.opened){return;}var that=this;this.__transitionend(glbl.$page.first(),function(){that.$menu.removeClass(_c.current).removeClass(_c.opened);glbl.$html.removeClass(_c.opened).removeClass(_c.blocking).removeClass(_c.modal).removeClass(_c.background).removeClass(_c.mm(that.opts[_ADDON_].position)).removeClass(_c.mm(that.opts[_ADDON_].zposition));if(that.opts.extensions){glbl.$html.removeClass(that.opts.extensions);}glbl.$page.each(function(){$(this).attr("style",$(this).data(_d.style));});that.vars.opened=false;that.trigger("closed");},this.conf.transitionDuration);glbl.$html.removeClass(_c.opening);this.trigger("close");this.trigger("closing");};$[_PLUGIN_].prototype.closeAllOthers=function(){glbl.$allMenus.not(this.$menu).each(function(){var api=$(this).data(_PLUGIN_);if(api&&api.close){api.close();}});};$[_PLUGIN_].prototype.setPage=function($page){var that=this,conf=this.conf[_ADDON_];if(!$page||!$page.length){$page=glbl.$body.find(conf.pageSelector);if(conf.noPageSelector.length){$page=$page.not(conf.noPageSelector.join(", "));}if($page.length>1&&conf.wrapPageIfNeeded){$page=$page.wrapAll("<"+this.conf[_ADDON_].pageNodetype+" />").parent();}}$page.each(function(){$(this).attr("id",$(this).attr("id")||that.__getUniqueId());});$page.addClass(_c.page+" "+_c.slideout);glbl.$page=$page;this.trigger("setPage",$page);};$[_PLUGIN_].prototype["_initWindow_"+_ADDON_]=function(){glbl.$wndw.off(_e.keydown+"-"+_ADDON_).on(_e.keydown+"-"+_ADDON_,function(e){if(glbl.$html.hasClass(_c.opened)){if(e.keyCode==9){e.preventDefault();return false;}}});var _h=0;glbl.$wndw.off(_e.resize+"-"+_ADDON_).on(_e.resize+"-"+_ADDON_,function(e,force){if(glbl.$page.length==1){if(force||glbl.$html.hasClass(_c.opened)){var nh=glbl.$wndw.height();if(force||nh!=_h){_h=nh;glbl.$page.css("minHeight",nh);}}}});};$[_PLUGIN_].prototype._initBlocker=function(){var that=this;if(!this.opts[_ADDON_].blockUI){return;}if(!glbl.$blck){glbl.$blck=$('<div id="'+_c.blocker+'" class="'+_c.slideout+'" />');}glbl.$blck.appendTo(glbl.$body).off(_e.touchstart+"-"+_ADDON_+" "+_e.touchmove+"-"+_ADDON_).on(_e.touchstart+"-"+_ADDON_+" "+_e.touchmove+"-"+_ADDON_,function(e){e.preventDefault();e.stopPropagation();glbl.$blck.trigger(_e.mousedown+"-"+_ADDON_);}).off(_e.mousedown+"-"+_ADDON_).on(_e.mousedown+"-"+_ADDON_,function(e){e.preventDefault();if(!glbl.$html.hasClass(_c.modal)){that.closeAllOthers();that.close();}});};var _c,_d,_e,glbl;})(jQuery); 149 /* Ende jquery.mmenu */ 150 /* Start jquery.mmenu.searchfield */ 151 (function($){var _PLUGIN_="mmenu",_ADDON_="searchfield";$[_PLUGIN_].addons[_ADDON_]={setup:function(){var that=this,opts=this.opts[_ADDON_],conf=this.conf[_ADDON_];glbl=$[_PLUGIN_].glbl;if(typeof opts=="boolean"){opts={add:opts};}if(typeof opts!="object"){opts={};}opts=this.opts[_ADDON_]=$.extend(true,{},$[_PLUGIN_].defaults[_ADDON_],opts);this.bind("close",function(){this.$menu.find("."+_c.search).find("input").blur();});this.bind("init",function($panels){if(opts.add){switch(opts.addTo){case"panels":var $wrapper=$panels;break;default:var $wrapper=$(opts.addTo,this.$menu);break;}$wrapper.each(function(){var $panl=$(this);if($panl.is("."+_c.panel)&&$panl.is("."+_c.vertical)){return;}if(!$panl.children("."+_c.search).length){var _srch=(conf.form)?"form":"div";var $srch=$("<"+_srch+' class="'+_c.search+'" />');if(conf.form&&typeof conf.form=="object"){for(var f in conf.form){$srch.attr(f,conf.form[f]);}}$srch.append('<input placeholder="'+opts.placeholder+'" type="text" autocomplete="off" />');if($panl.hasClass(_c.search)){$panl.replaceWith($srch);}else{$panl.prepend($srch).addClass(_c.hassearch);}}if(opts.noResults){var inPanel=$panl.closest("."+_c.panel).length;if(!inPanel){$panl=that.$pnls.children("."+_c.panel).first();}if(!$panl.children("."+_c.noresultsmsg).length){var $lst=$panl.children("."+_c.listview).first();$('<div class="'+_c.noresultsmsg+'" />').append(opts.noResults)[$lst.length?"insertAfter":"prependTo"]($lst.length?$lst:$panl);}}});if(opts.search){$("."+_c.search,this.$menu).each(function(){var $srch=$(this),inPanel=$srch.closest("."+_c.panel).length;
151if(inPanel){var $pnls=$srch.closest("."+_c.panel),$panl=$pnls;}else{var $pnls=$("."+_c.panel,that.$menu),$panl=that.$menu;}var $inpt=$srch.children("input"),$itms=that.__findAddBack($pnls,"."+_c.listview).children("li"),$dvdr=$itms.filter("."+_c.divider),$rslt=that.__filterListItems($itms);var _anchor="> a",_both=_anchor+", > span";var search=function(){var query=$inpt.val().toLowerCase();$pnls.scrollTop(0);$rslt.add($dvdr).addClass(_c.hidden).find("."+_c.fullsubopensearch).removeClass(_c.fullsubopen).removeClass(_c.fullsubopensearch);$rslt.each(function(){var $item=$(this),_search=_anchor;if(opts.showTextItems||(opts.showSubPanels&&$item.find("."+_c.next))){_search=_both;}if($(_search,$item).text().toLowerCase().indexOf(query)>-1){$item.add($item.prevAll("."+_c.divider).first()).removeClass(_c.hidden);}});if(opts.showSubPanels){$pnls.each(function(i){var $panl=$(this);that.__filterListItems($panl.find("."+_c.listview).children()).each(function(){var $li=$(this),$su=$li.data(_d.sub);$li.removeClass(_c.nosubresults);if($su){$su.find("."+_c.listview).children().removeClass(_c.hidden);}});});}$($pnls.get().reverse()).each(function(i){var $panl=$(this),$prnt=$panl.data(_d.parent);if($prnt){if(that.__filterListItems($panl.find("."+_c.listview).children()).length){if($prnt.hasClass(_c.hidden)){$prnt.children("."+_c.next).not("."+_c.fullsubopen).addClass(_c.fullsubopen).addClass(_c.fullsubopensearch);}$prnt.removeClass(_c.hidden).removeClass(_c.nosubresults).prevAll("."+_c.divider).first().removeClass(_c.hidden);}else{if(!inPanel){if($panl.hasClass(_c.opened)){setTimeout(function(){that.openPanel($prnt.closest("."+_c.panel));},(i+1)*(that.conf.openingInterval*1.5));}$prnt.addClass(_c.nosubresults);}}}});
151$panl[$rslt.not("."+_c.hidden).length?"removeClass":"addClass"](_c.noresults);this.update();};$inpt.off(_e.keyup+"-searchfield "+_e.change+"-searchfield").on(_e.keyup+"-searchfield",function(e){if(!preventKeypressSearch(e.keyCode)){search.call(that);}}).on(_e.change+"-searchfield",function(e){search.call(that);});});}}});},add:function(){_c=$[_PLUGIN_]._c;_d=$[_PLUGIN_]._d;_e=$[_PLUGIN_]._e;_c.add("search hassearch noresultsmsg noresults nosubresults fullsubopensearch");_e.add("change keyup");},clickAnchor:function($a,inMenu){}};$[_PLUGIN_].defaults[_ADDON_]={add:false,addTo:"panels",search:true,placeholder:"Search",noResults:"No results found.",showTextItems:false,showSubPanels:true};$[_PLUGIN_].configuration[_ADDON_]={form:false};var _c,_d,_e,glbl;function preventKeypressSearch(c){switch(c){case 9:case 16:case 17:case 18:case 37:case 38:case 39:case 40:return true;}return false;}})(jQuery); 152 /* Ende jquery.mmenu.searchfield */ 153 /* Start jquery.mmenu.navbars */ 154 !function(n){var a="mmenu",t="navbars";n[a].addons[t]={setup:function(){var r=this,s=this.opts[t],c=this.conf[t];if(i=n[a].glbl,"undefined"!=typeof s){s instanceof Array||(s=[s]);var d={};n.each(s,function(i){var o=s[i];"boolean"==typeof o&&o&&(o={}),"object"!=typeof o&&(o={}),"undefined"==typeof o.content&&(o.content=["prev","title"]),o.content instanceof Array||(o.content=[o.content]),o=n.extend(!0,{},r.opts.navbar,o);var l=o.position,h=o.height;"number"!=typeof h&&(h=1),h=Math.min(4,Math.max(1,h)),"bottom"!=l&&(l="top"),d[l]||(d[l]=0),d[l]++;var f=n("<div />").addClass(e.navbar+" "+e.navbar+"-"+l+" "+e.navbar+"-"+l+"-"+d[l]+" "+e.navbar+"-size-"+h);d[l]+=h-1;for(var v=0,p=o.content.length;p>v;v++){var u=n[a].addons[t][o.content[v]]||!1;u?u.call(r,f,o,c):(u=o.content[v],u instanceof n||(u=n(o.content[v])),u.each(function(){f.append(n(this));}));}var b=Math.ceil(f.children().not("."+e.btn).length/h);b>1&&f.addClass(e.navbar+"-content-"+b),f.children("."+e.btn).length&&f.addClass(e.hasbtns),f.prependTo(r.$menu);});for(var o in d){r.$menu.addClass(e.hasnavbar+"-"+o+"-"+d[o]);}}},add:function(){e=n[a]._c,r=n[a]._d,s=n[a]._e,e.add("close hasbtns");},clickAnchor:function(){}},n[a].configuration[t]={breadcrumbSeparator:"/"},n[a].configuration.classNames[t]={panelTitle:"Title",panelNext:"Next",panelPrev:"Prev"};var e,r,s,i;}(jQuery),function(n){var a="mmenu",t="navbars",e="breadcrumbs";n[a].addons[t][e]=function(t,e,r){var s=n[a]._c,i=n[a]._d;s.add("breadcrumbs separator"),t.append('<span class="'+s.breadcrumbs+'"></span>'),this.bind("init",function(a){a.removeClass(s.hasnavbar).each(function(){for(var a=[],t=n(this),e=n('<span class="'+s.breadcrumbs+'"></span>'),c=n(this).children().first(),d=!0;c&&c.length;){c.is("."+s.panel)||(c=c.closest("."+s.panel));var o=c.children("."+s.navbar).children("."+s.title).text();a.unshift(d?"<span>"+o+"</span>":'<a href="#'+c.attr("id")+'">'+o+"</a>"),d=!1,c=c.data(i.parent);}e.append(a.join('<span class="'+s.separator+'">'+r.breadcrumbSeparator+"</span>")).appendTo(t.children("."+s.navbar));});});var c=function(){var n=this.$pnls.children("."+s.current),a=t.find("."+s.breadcrumbs),e=n.children("."+s.navbar).children("."+s.breadcrumbs);a.html(e.html());};this.bind("openPanel",c),this.bind("init",c);};}(jQuery),function(n){var a="mmenu",t="navbars",e="close";n[a].addons[t][e]=function(t){var e=n[a]._c,r=n[a].glbl;t.append('<a class="'+e.close+" "+e.btn+'" href="#"></a>');var s=function(n){t.find("."+e.close).attr("href","#"+n.attr("id"));};s.call(this,r.$page),this.bind("setPage",s);};}(jQuery),function(n){var a="mmenu",t="navbars",e="next";n[a].addons[t][e]=function(e){var r=n[a]._c;e.append('<a class="'+r.next+" "+r.btn+'" href="#"></a>');var s=function(n){n=n||this.$pnls.children("."+r.current);var a=e.find("."+r.next),s=n.find("."+this.conf.classNames[t].panelNext),i=s.attr("href"),c=s.html();a[i?"attr":"removeAttr"]("href",i),a[i||c?"removeClass":"addClass"](r.hidden),a.html(c);};this.bind("openPanel",s),this.bind("init",function(){s.call(this);});};}(jQuery),function(n){var a="mmenu",t="navbars",e="prev";n[a].addons[t][e]=function(e){var r=n[a]._c;e.append('<a class="'+r.prev+" "+r.btn+'" href="#"></a>'),this.bind("init",function(n){n.removeClass(r.hasnavbar);});var s=function(){var n=this.$pnls.children("."+r.current),a=e.find("."+r.prev),s=n.find("."+this.conf.classNames[t].panelPrev);s.length||(s=n.children("."+r.navbar).children("."+r.prev));var i=s.attr("href"),c=s.html();a[i?"attr":"removeAttr"]("href",i),a[i||c?"removeClass":"addClass"](r.hidden),a.html(c);};this.bind("openPanel",s),this.bind("init",s);};}(jQuery),function(n){var a="mmenu",t="navbars",e="searchfield";n[a].addons[t][e]=function(t){var e=n[a]._c,r=n('<div class="'+e.search+'" />').appendTo(t);"object"!=typeof this.opts.searchfield&&(this.opts.searchfield={}),this.opts.searchfield.add=!0,this.opts.searchfield.addTo=r;};}(jQuery),function(n){var a="mmenu",t="navbars",e="title";n[a].addons[t][e]=function(e,r){var s=n[a]._c;e.append('<a class="'+s.title+'"></a>');var i=function(n){n=n||this.$pnls.children("."+s.current);var a=e.find("."+s.title),i=n.find("."+this.conf.classNames[t].panelTitle);
154i.length||(i=n.children("."+s.navbar).children("."+s.title));var c=i.attr("href"),d=i.html()||r.title;a[c?"attr":"removeAttr"]("href",c),a[c||d?"removeClass":"addClass"](s.hidden),a.html(d);};this.bind("openPanel",i),this.bind("init",function(){i.call(this);});};}(jQuery); 155 /* Ende jquery.mmenu.navbars */ 156 /* Start mediaelement */ 157 /*! 158 * --GSBDocStart 159 * @module medialement.js 160 * @version 2.23.5 161 * @see {@link http://mediaelementjs.com/} 162 * @author John Dyer (http://j.hn), 2010-2014 163 * @license MIT license 164 * 165 * @desc mediaelements mit manuellen GSB-Anpassungen 166 * Creates a JavaScript object that mimics HTML5 MediaElement API 167 * for browsers that don't understand HTML5 or can't play the provided codec 168 * Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3 169 *--GSBDocEnd 170 * MediaElement.js 171 * HTML5 <video> and <audio> shim and player 172 * http://mediaelementjs.com/ 173 * 174 * Creates a JavaScript object that mimics HTML5 MediaElement API 175 * for browsers that don't understand HTML5 or can't play the provided codec 176 * Can play MP4 (H.264), Ogg, WebM, FLV, WMV, WMA, ACC, and MP3 177 * 178 * Copyright 2010-2014, John Dyer (http://j.hn) 179 * License: MIT 180 * 181 */ 182// Namespace 183var mejs = mejs || {}; 184// version number 185mejs.version = '2.23.5'; 186// player number (for missing, same id attr) 187mejs.meIndex = 0; 188// media types accepted by plugins 189mejs.plugins = { 190 silverlight: [ 191 {version: [3,0], types: ['video/mp4','video/m4v','video/mov','video/wmv','audio/wma','audio/m4a','audio/mp3','audio/wav','audio/mpeg']} 192 ], 193 flash: [ 194 {version: [9,0,124], types: ['video/mp4','video/m4v','video/mov','video/flv','video/rtmp','video/x-flv','audio/flv','audio/x-flv','audio/mp3','audio/m4a', 'audio/mp4', 'audio/mpeg', 'video/dailymotion', 'video/x-dailymotion', 'application/x-mpegURL', 'audio/ogg']} 195 // 'video/youtube', 'video/x-youtube', 196 // ,{version: [12,0], types: ['video/webm']} // for future reference (hopefully!) 197 ], 198 youtube: [ 199 {version: null, types: ['video/youtube', 'video/x-youtube', 'audio/youtube', 'audio/x-youtube']} 200 ], 201 vimeo: [ 202 {version: null, types: ['video/vimeo', 'video/x-vimeo']} 203 ] 204}; 205/* 206Utility methods 207*/ 208mejs.Utility = { 209 encodeUrl: function(url) { 210 return encodeURIComponent(url); //.replace(/\?/gi,'%3F').replace(/=/gi,'%3D').replace(/&/gi,'%26'); 211 }, 212 escapeHTML: function(s) { 213 return s.toString().split('&').join('&').split('<').join('<').split('"').join('"'); 214 }, 215 absolutizeUrl: function(url) { 216 var el = document.createElement('div'); 217 el.innerHTML = '<a href="' + this.escapeHTML(url) + '">x</a>'; 218 return el.firstChild.href; 219 }, 220 getScriptPath: function(scriptNames) { 221 var 222 i = 0, 223 j, 224 codePath = '', 225 testname = '', 226 slashPos, 227 filenamePos, 228 scriptUrl, 229 scriptPath, 230 scriptFilename, 231 scripts = document.getElementsByTagName('script'), 232 il = scripts.length, 233 jl = scriptNames.length; 234 235 // go through all <script> tags 236 for (; i < il; i++) { 237 scriptUrl = scripts[i].src; 238 slashPos = scriptUrl.lastIndexOf('/'); 239 if (slashPos > -1) { 240 scriptFilename = scriptUrl.substring(slashPos + 1); 241 scriptPath = scriptUrl.substring(0, slashPos + 1); 242 } else { 243 scriptFilename = scriptUrl; 244 scriptPath = ''; 245 } 246 247 // see if any <script> tags have a file name that matches the 248 for (j = 0; j < jl; j++) { 249 testname = scriptNames[j]; 250 filenamePos = scriptFilename.indexOf(testname); 251 if (filenamePos > -1) { 252 codePath = scriptPath; 253 break; 254 } 255 } 256 257 // if we found a path, then break and return it 258 if (codePath !== '') { 259 break; 260 } 261 } 262 263 // send the best path back 264 return codePath; 265 }, 266 /* 267 * Calculate the time format to use. We have a default format set in the 268 * options but it can be imcomplete. We ajust it according to the media 269 * duration. 270 * 271 * We support format like 'hh:mm:ss:ff'. 272 */ 273 calculateTimeFormat: function(time, options, fps) { 274 if (time < 0) { 275 time = 0; 276 } 277 if(typeof fps == 'undefined') { 278 fps = 25; 279 } 280 var format = options.timeFormat, 281 firstChar = format[0], 282 firstTwoPlaces = (format[1] == format[0]), 283 separatorIndex = firstTwoPlaces? 2: 1, 284 separator = ':', 285 hours = Math.floor(time / 3600) % 24, 286 minutes = Math.floor(time / 60) % 60, 287 seconds = Math.floor(time % 60), 288 frames = Math.floor(((time % 1)*fps).toFixed(3)), 289 lis = [ 290 [frames, 'f'], 291 [seconds, 's'], 292 [minutes, 'm'], 293 [hours, 'h'] 294 ]; 295 // Try to get the separator from the format 296 if (format.length < separatorIndex) { 297 separator = format[separatorIndex]; 298 } 299 var required = false;
300 for (var i=0, len=lis.length; i < len; i++) { 301 if (format.indexOf(lis[i][1]) !== -1) { 302 required=true; 303 } 304 else if (required) { 305 var hasNextValue = false; 306 for (var j=i; j < len; j++) { 307 if (lis[j][0] > 0) { 308 hasNextValue = true; 309 break; 310 } 311 } 312 if (! hasNextValue) { 313 break; 314 } 315 if (!firstTwoPlaces) { 316 format = firstChar + format; 317 } 318 format = lis[i][1] + separator + format; 319 if (firstTwoPlaces) { 320 format = lis[i][1] + format; 321 } 322 firstChar = lis[i][1]; 323 } 324 } 325 options.currentTimeFormat = format; 326 }, 327 /* 328 * Prefix the given number by zero if it is lower than 10. 329 */ 330 twoDigitsString: function(n) { 331 if (n < 10) { 332 return '0' + n; 333 } 334 return String(n); 335 }, 336 secondsToTimeCode: function(time, options) { 337 if (time < 0) { 338 time = 0; 339 } 340 // Maintain backward compatibility with method signature before v2.18. 341 if (typeof options !== 'object') { 342 var format = 'm:ss'; 343 format = arguments[1] ? 'hh:mm:ss' : format; // forceHours 344 format = arguments[2] ? format + ':ff' : format; // showFrameCount 345 options = { 346 currentTimeFormat: format, 347 framesPerSecond: arguments[3] || 25 348 }; 349 } 350 var fps = options.framesPerSecond; 351 if(typeof fps === 'undefined') { 352 fps = 25; 353 } 354 var format = options.currentTimeFormat, 355 hours = Math.floor(time / 3600) % 24, 356 minutes = Math.floor(time / 60) % 60, 357 seconds = Math.floor(time % 60), 358 frames = Math.floor(((time % 1)*fps).toFixed(3)); 359 lis = [ 360 [frames, 'f'], 361 [seconds, 's'], 362 [minutes, 'm'], 363 [hours, 'h'] 364 ]; 365 var res = format; 366 for (i=0,len=lis.length; i < len; i++) { 367 res = res.replace(lis[i][1]+lis[i][1], this.twoDigitsString(lis[i][0])); 368 res = res.replace(lis[i][1], lis[i][0]); 369 } 370 return res; 371 }, 372 timeCodeToSeconds: function(hh_mm_ss_ff, forceHours, showFrameCount, fps){ 373 if (typeof showFrameCount == 'undefined') { 374 showFrameCount=false; 375 } else if(typeof fps == 'undefined') { 376 fps = 25; 377 } 378 var tc_array = hh_mm_ss_ff.split(":"), 379 tc_hh = parseInt(tc_array[0], 10), 380 tc_mm = parseInt(tc_array[1], 10), 381 tc_ss = parseInt(tc_array[2], 10), 382 tc_ff = 0, 383 tc_in_seconds = 0; 384 385 if (showFrameCount) { 386 tc_ff = parseInt(tc_array[3])/fps; 387 } 388 389 tc_in_seconds = ( tc_hh * 3600 ) + ( tc_mm * 60 ) + tc_ss + tc_ff; 390 391 return tc_in_seconds; 392 }, 393 convertSMPTEtoSeconds: function (SMPTE) { 394 if (typeof SMPTE != 'string') 395 return false; 396 SMPTE = SMPTE.replace(',', '.'); 397 398 var secs = 0, 399 decimalLen = (SMPTE.indexOf('.') != -1) ? SMPTE.split('.')[1].length : 0, 400 multiplier = 1; 401 402 SMPTE = SMPTE.split(':').reverse(); 403 404 for (var i = 0; i < SMPTE.length; i++) { 405 multiplier = 1; 406 if (i > 0) { 407 multiplier = Math.pow(60, i); 408 } 409 secs += Number(SMPTE[i]) * multiplier; 410 } 411 return Number(secs.toFixed(decimalLen)); 412 }, 413 /* borrowed from SWFObject: http://code.google.com/p/swfobject/source/browse/trunk/swfobject/src/swfobject.js#474 */ 414 removeSwf: function(id) { 415 var obj = document.getElementById(id); 416 if (obj && /object|embed/i.test(obj.nodeName)) { 417 if (mejs.MediaFeatures.isIE) { 418 obj.style.display = "none"; 419 (function(){ 420 if (obj.readyState == 4) { 421 mejs.Utility.removeObjectInIE(id); 422 } else { 423 setTimeout(arguments.callee, 10); 424 } 425 })(); 426 } else { 427 obj.parentNode.removeChild(obj); 428 } 429 } 430 }, 431 removeObjectInIE: function(id) { 432 var obj = document.getElementById(id); 433 if (obj) { 434 for (var i in obj) { 435 if (typeof obj[i] == "function") { 436 obj[i] = null; 437 } 438 } 439 obj.parentNode.removeChild(obj); 440 } 441 }, 442 determineScheme: function(url) { 443 if (url && url.indexOf("://") != -1) { 444 return url.substr(0, url.indexOf("://")+3); 445 } 446 return "//"; // let user agent figure this out 447 }, 448 // taken from underscore 449 debounce: function(func, wait, immediate) { 450 var timeout; 451 return function() { 452 var context = this, args = arguments; 453 var later = function() { 454 timeout = null; 455 if (!immediate) func.apply(context, args); 456 }; 457 var callNow = immediate && !timeout; 458 clearTimeout(timeout); 459 timeout = setTimeout(later, wait);
460 if (callNow) func.apply(context, args); 461 }; 462 }, 463 /** 464 * Returns true if targetNode appears after sourceNode in the dom. 465 * @param {HTMLElement} sourceNode - the source node for comparison 466 * @param {HTMLElement} targetNode - the node to compare against sourceNode 467 */ 468 isNodeAfter: function(sourceNode, targetNode) { 469 return !!( 470 sourceNode && 471 targetNode && 472 typeof sourceNode.compareDocumentPosition === 'function' && 473 sourceNode.compareDocumentPosition(targetNode) & Node.DOCUMENT_POSITION_PRECEDING 474 ); 475 } 476}; 477// Core detector, plugins are added below 478mejs.PluginDetector = { 479 // main public function to test a plug version number PluginDetector.hasPluginVersion('flash',[9,0,125]); 480 hasPluginVersion: function(plugin, v) { 481 var pv = this.plugins[plugin]; 482 v[1] = v[1] || 0; 483 v[2] = v[2] || 0; 484 return (pv[0] > v[0] || (pv[0] == v[0] && pv[1] > v[1]) || (pv[0] == v[0] && pv[1] == v[1] && pv[2] >= v[2])) ? true : false; 485 }, 486 // cached values 487 nav: window.navigator, 488 ua: window.navigator.userAgent.toLowerCase(), 489 // stored version numbers 490 plugins: [], 491 // runs detectPlugin() and stores the version number 492 addPlugin: function(p, pluginName, mimeType, activeX, axDetect) { 493 this.plugins[p] = this.detectPlugin(pluginName, mimeType, activeX, axDetect); 494 }, 495 // get the version number from the mimetype (all but IE) or ActiveX (IE) 496 detectPlugin: function(pluginName, mimeType, activeX, axDetect) { 497 var version = [0,0,0], 498 description, 499 i, 500 ax; 501 // Firefox, Webkit, Opera 502 if (typeof(this.nav.plugins) != 'undefined' && typeof this.nav.plugins[pluginName] == 'object') { 503 description = this.nav.plugins[pluginName].description; 504 if (description && !(typeof this.nav.mimeTypes != 'undefined' && this.nav.mimeTypes[mimeType] && !this.nav.mimeTypes[mimeType].enabledPlugin)) { 505 version = description.replace(pluginName, '').replace(/^\s+/,'').replace(/\sr/gi,'.').split('.'); 506 for (i=0; i<version.length; i++) { 507 version[i] = parseInt(version[i].match(/\d+/), 10); 508 } 509 } 510 // Internet Explorer / ActiveX 511 } else if (typeof(window.ActiveXObject) != 'undefined') { 512 try { 513 ax = new ActiveXObject(activeX); 514 if (ax) { 515 version = axDetect(ax); 516 } 517 } 518 catch (e) { } 519 } 520 return version; 521 } 522}; 523// Add Flash detection 524mejs.PluginDetector.addPlugin('flash','Shockwave Flash','application/x-shockwave-flash','ShockwaveFlash.ShockwaveFlash', function(ax) { 525 // adapted from SWFObject 526 var version = [], 527 d = ax.GetVariable("$version"); 528 if (d) { 529 d = d.split(" ")[1].split(","); 530 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; 531 } 532 return version; 533}); 534// Add Silverlight detection 535mejs.PluginDetector.addPlugin('silverlight','Silverlight Plug-In','application/x-silverlight-2','AgControl.AgControl', function (ax) { 536 // Silverlight cannot report its version number to IE 537 // but it does have a isVersionSupported function, so we have to loop through it to get a version number. 538 // adapted from http://www.silverlightversion.com/ 539 var v = [0,0,0,0], 540 loopMatch = function(ax, v, i, n) { 541 while(ax.isVersionSupported(v[0]+ "."+ v[1] + "." + v[2] + "." + v[3])){ 542 v[i]+=n; 543 } 544 v[i] -= n; 545 }; 546 loopMatch(ax, v, 0, 1); 547 loopMatch(ax, v, 1, 1); 548 loopMatch(ax, v, 2, 10000); // the third place in the version number is usually 5 digits (4.0.xxxxx) 549 loopMatch(ax, v, 2, 1000); 550 loopMatch(ax, v, 2, 100); 551 loopMatch(ax, v, 2, 10); 552 loopMatch(ax, v, 2, 1); 553 loopMatch(ax, v, 3, 1); 554 return v; 555}); 556// add adobe acrobat 557/* 558PluginDetector.addPlugin('acrobat','Adobe Acrobat','application/pdf','AcroPDF.PDF', function (ax) { 559 var version = [], 560 d = ax.GetVersions().split(',')[0].split('=')[1].split('.'); 561 if (d) { 562 version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)]; 563 } 564 return version; 565}); 566*/ 567// necessary detection (fixes for <IE9) 568mejs.MediaFeatures = { 569 init: function() { 570 var 571 t = this, 572 d = document, 573 nav = mejs.PluginDetector.nav, 574 ua = mejs.PluginDetector.ua.toLowerCase(), 575 i, 576 v, 577 html5Elements = ['source','track','audio','video']; 578 // detect browsers (only the ones that have some kind of quirk we need to work around) 579 t.isiPad = (ua.match(/ipad/i) !== null); 580 t.isiPhone = (ua.match(/iphone/i) !== null); 581 t.isiOS = t.isiPhone || t.isiPad; 582 t.isAndroid = (ua.match(/android/i) !== null); 583 t.isBustedAndroid = (ua.match(/android 2\.[12]/) !== null); 584 t.isBustedNativeHTTPS = (location.protocol === 'https:' && (ua.match(/android [12]\./) !== null || ua.match(/macintosh.* version.* safari/) !== null)); 585 t.isIE = (nav.appName.toLowerCase().indexOf("microsoft") != -1 || nav.appName.toLowerCase().match(/trident/gi) !== null); 586 t.isChrome = (ua.match(/chrome/gi) !== null); 587 t.isChromium = (ua.match(/chromium/gi) !== null); 588 t.isFirefox = (ua.match(/firefox/gi) !== null); 589 t.isWebkit = (ua.match(/webkit/gi) !== null); 590 t.isGecko = (ua.match(/gecko/gi) !== null) && !t.isWebkit && !t.isIE; 591 t.isOpera = (ua.match(/opera/gi) !== null); 592 t.hasTouch = ('ontouchstart' in window); // && window.ontouchstart != null); // this breaks iOS 7 593 // Borrowed from `Modernizr.svgasimg`, sources: 594 // - https://github.com/Modernizr/Modernizr/issues/687 595 // - https://github.com/Modernizr/Modernizr/pull/1209/files 596 t.svgAsImg = !!document.implementation.hasFeature('http://www.w3.org/TR/SVG11/feature#Image', '1.1'); 597 // create HTML5 media elements for IE before 9, get a <video> element for fullscreen detection 598 for (i=0; i<html5Elements.length; i++) { 599 v = document.createElement(html5Elements[i]); 600 } 601 t.supportsMediaTag = (typeof v.canPlayType !== 'undefined' || t.isBustedAndroid); 602 // Fix for IE9 on Windows 7N / Windows 7KN (Media Player not installer) 603 try{ 604 v.canPlayType("video/mp4"); 605 }catch(e){ 606 t.supportsMediaTag = false;
607 } 608 t.supportsPointerEvents = (function() { 609 // TAKEN FROM MODERNIZR 610 var element = document.createElement('x'), 611 documentElement = document.documentElement, 612 getComputedStyle = window.getComputedStyle, 613 supports; 614 if(!('pointerEvents' in element.style)){ 615 return false; 616 } 617 element.style.pointerEvents = 'auto'; 618 element.style.pointerEvents = 'x'; 619 documentElement.appendChild(element); 620 supports = getComputedStyle && 621 getComputedStyle(element, '').pointerEvents === 'auto'; 622 documentElement.removeChild(element); 623 return !!supports; 624 })(); 625 // Older versions of Firefox can't move plugins around without it resetting, 626 t.hasFirefoxPluginMovingProblem = false; 627 // detect native JavaScript fullscreen (Safari/Firefox only, Chrome still fails) 628 // iOS 629 t.hasiOSFullScreen = (typeof v.webkitEnterFullscreen !== 'undefined'); 630 // W3C 631 t.hasNativeFullscreen = (typeof v.requestFullscreen !== 'undefined'); 632 // webkit/firefox/IE11+ 633 t.hasWebkitNativeFullScreen = (typeof v.webkitRequestFullScreen !== 'undefined'); 634 t.hasMozNativeFullScreen = (typeof v.mozRequestFullScreen !== 'undefined'); 635 t.hasMsNativeFullScreen = (typeof v.msRequestFullscreen !== 'undefined'); 636 t.hasTrueNativeFullScreen = (t.hasWebkitNativeFullScreen || t.hasMozNativeFullScreen || t.hasMsNativeFullScreen); 637 t.nativeFullScreenEnabled = t.hasTrueNativeFullScreen; 638 // Enabled? 639 if (t.hasMozNativeFullScreen) { 640 t.nativeFullScreenEnabled = document.mozFullScreenEnabled; 641 } else if (t.hasMsNativeFullScreen) { 642 t.nativeFullScreenEnabled = document.msFullscreenEnabled; 643 } 644 if (t.isChrome) { 645 t.hasiOSFullScreen = false; 646 } 647 if (t.hasTrueNativeFullScreen) { 648 t.fullScreenEventName = ''; 649 if (t.hasWebkitNativeFullScreen) { 650 t.fullScreenEventName = 'webkitfullscreenchange'; 651 } else if (t.hasMozNativeFullScreen) { 652 t.fullScreenEventName = 'mozfullscreenchange'; 653 } else if (t.hasMsNativeFullScreen) { 654 t.fullScreenEventName = 'MSFullscreenChange'; 655 } 656 t.isFullScreen = function() { 657 if (t.hasMozNativeFullScreen) { 658 return d.mozFullScreen; 659 } else if (t.hasWebkitNativeFullScreen) { 660 return d.webkitIsFullScreen; 661 } else if (t.hasMsNativeFullScreen) { 662 return d.msFullscreenElement !== null; 663 } 664 } 665 t.requestFullScreen = function(el) { 666 if (t.hasWebkitNativeFullScreen) { 667 el.webkitRequestFullScreen(); 668 } else if (t.hasMozNativeFullScreen) { 669 el.mozRequestFullScreen(); 670 } else if (t.hasMsNativeFullScreen) { 671 el.msRequestFullscreen(); 672 } 673 } 674 t.cancelFullScreen = function() { 675 if (t.hasWebkitNativeFullScreen) { 676 document.webkitCancelFullScreen(); 677 } else if (t.hasMozNativeFullScreen) { 678 document.mozCancelFullScreen(); 679 } else if (t.hasMsNativeFullScreen) { 680 document.msExitFullscreen(); 681 } 682 } 683 } 684 // OS X 10.5 can't do this even if it says it can :( 685 if (t.hasiOSFullScreen && ua.match(/mac os x 10_5/i)) { 686 t.hasNativeFullScreen = false; 687 t.hasiOSFullScreen = false; 688 } 689 } 690}; 691mejs.MediaFeatures.init(); 692/* 693extension methods to <video> or <audio> object to bring it into parity with PluginMediaElement (see below) 694*/ 695mejs.HtmlMediaElement = { 696 pluginType: 'native', 697 isFullScreen: false, 698 setCurrentTime: function (time) { 699 this.currentTime = time; 700 }, 701 setMuted: function (muted) { 702 this.muted = muted; 703 }, 704 setVolume: function (volume) { 705 this.volume = volume; 706 }, 707 // for parity with the plugin versions 708 stop: function () { 709 this.pause(); 710 }, 711 // This can be a url string 712 // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}] 713 setSrc: function (url) { 714 715 // Fix for IE9 which can't set .src when there are <source> elements. Awesome, right? 716 var 717 existingSources = this.getElementsByTagName('source'); 718 while (existingSources.length > 0){ 719 this.removeChild(existingSources[0]); 720 } 721 if (typeof url == 'string') { 722 this.src = url; 723 } else { 724 var i, media; 725 for (i=0; i<url.length; i++) { 726 media = url[i]; 727 if (this.canPlayType(media.type)) { 728 this.src = media.src; 729 break; 730 } 731 } 732 } 733 }, 734 setVideoSize: function (width, height) { 735 this.width = width; 736 this.height = height; 737 } 738}; 739/* 740Mimics the <video/audio> element by calling Flash's External Interface or Silverlights [ScriptableMember] 741*/ 742mejs.PluginMediaElement = function (pluginid, pluginType, mediaUrl) { 743 this.id = pluginid; 744 this.pluginType = pluginType; 745 this.src = mediaUrl; 746 this.events = {}; 747 this.attributes = {}; 748}; 749// JavaScript values and ExternalInterface methods that match HTML5 video properties methods 750// http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html 751// http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html 752mejs.PluginMediaElement.prototype = { 753 // special 754 pluginElement: null, 755 pluginType: '', 756 isFullScreen: false, 757 // not implemented :( 758 playbackRate: -1, 759 defaultPlaybackRate: -1, 760 seekable: [], 761 played: [], 762 // HTML5 read-only properties 763 paused: true, 764 ended: false, 765 seeking: false, 766 duration: 0, 767 error: null, 768 tagName: '', 769 // HTML5 get/set properties, but only set (updated by event handlers) 770 muted: false, 771 volume: 1, 772 currentTime: 0, 773 // HTML5 methods 774 play: function () { 775 if (this.pluginApi != null) { 776 if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { 777 this.pluginApi.playVideo(); 778 } else { 779 this.pluginApi.playMedia(); 780 } 781 this.paused = false;
782 } 783 }, 784 load: function () { 785 if (this.pluginApi != null) { 786 if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { 787 } else { 788 this.pluginApi.loadMedia(); 789 } 790 791 this.paused = false; 792 } 793 }, 794 pause: function () { 795 if (this.pluginApi != null) { 796 if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { 797 if( this.pluginApi.getPlayerState() == 1 ) { 798 this.pluginApi.pauseVideo(); 799 } 800 } else { 801 this.pluginApi.pauseMedia(); 802 } 803 804 805 this.paused = true; 806 } 807 }, 808 stop: function () { 809 if (this.pluginApi != null) { 810 if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { 811 this.pluginApi.stopVideo(); 812 } else { 813 this.pluginApi.stopMedia(); 814 } 815 this.paused = true; 816 } 817 }, 818 canPlayType: function(type) { 819 var i, 820 j, 821 pluginInfo, 822 pluginVersions = mejs.plugins[this.pluginType]; 823 for (i=0; i<pluginVersions.length; i++) { 824 pluginInfo = pluginVersions[i]; 825 // test if user has the correct plugin version 826 if (mejs.PluginDetector.hasPluginVersion(this.pluginType, pluginInfo.version)) { 827 // test for plugin playback types 828 for (j=0; j<pluginInfo.types.length; j++) { 829 // find plugin that can play the type 830 if (type == pluginInfo.types[j]) { 831 return 'probably'; 832 } 833 } 834 } 835 } 836 return ''; 837 }, 838 positionFullscreenButton: function(x,y,visibleAndAbove) { 839 if (this.pluginApi != null && this.pluginApi.positionFullscreenButton) { 840 this.pluginApi.positionFullscreenButton(Math.floor(x),Math.floor(y),visibleAndAbove); 841 } 842 }, 843 hideFullscreenButton: function() { 844 if (this.pluginApi != null && this.pluginApi.hideFullscreenButton) { 845 this.pluginApi.hideFullscreenButton(); 846 } 847 }, 848 // custom methods since not all JavaScript implementations support get/set 849 // This can be a url string 850 // or an array [{src:'file.mp4',type:'video/mp4'},{src:'file.webm',type:'video/webm'}] 851 setSrc: function (url) { 852 if (typeof url == 'string') { 853 this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(url)); 854 this.src = mejs.Utility.absolutizeUrl(url); 855 } else { 856 var i, media; 857 for (i=0; i<url.length; i++) { 858 media = url[i]; 859 if (this.canPlayType(media.type)) { 860 this.pluginApi.setSrc(mejs.Utility.absolutizeUrl(media.src)); 861 this.src = mejs.Utility.absolutizeUrl(media.src); 862 break; 863 } 864 } 865 } 866 }, 867 setCurrentTime: function (time) { 868 if (this.pluginApi != null) { 869 if (this.pluginType == 'youtube' || this.pluginType == 'vimeo') { 870 this.pluginApi.seekTo(time); 871 } else { 872 this.pluginApi.setCurrentTime(time); 873 } 874 875 876 877 this.currentTime = time; 878 } 879 }, 880 setVolume: function (volume) { 881 if (this.pluginApi != null) { 882 // same on YouTube and MEjs 883 if (this.pluginType == 'youtube') { 884 this.pluginApi.setVolume(volume * 100); 885 } else { 886 this.pluginApi.setVolume(volume); 887 } 888 this.volume = volume; 889 } 890 }, 891 setMuted: function (muted) { 892 if (this.pluginApi != null) { 893 if (this.pluginType == 'youtube') { 894 if (muted) { 895 this.pluginApi.mute(); 896 } else { 897 this.pluginApi.unMute(); 898 } 899 this.muted = muted; 900 this.dispatchEvent({type:'volumechange'}); 901 } else { 902 this.pluginApi.setMuted(muted); 903 } 904 this.muted = muted; 905 } 906 }, 907 // additional non-HTML5 methods 908 setVideoSize: function (width, height) { 909 910 //if (this.pluginType == 'flash' || this.pluginType == 'silverlight') { 911 if (this.pluginElement && this.pluginElement.style) { 912 this.pluginElement.style.width = width + 'px'; 913 this.pluginElement.style.height = height + 'px'; 914 } 915 if (this.pluginApi != null && this.pluginApi.setVideoSize) { 916 this.pluginApi.setVideoSize(width, height); 917 } 918 //} 919 }, 920 setFullscreen: function (fullscreen) { 921 if (this.pluginApi != null && this.pluginApi.setFullscreen) { 922 this.pluginApi.setFullscreen(fullscreen); 923 } 924 }, 925 enterFullScreen: function() { 926 if (this.pluginApi != null && this.pluginApi.setFullscreen) { 927 this.setFullscreen(true); 928 } 929 930 }, 931 exitFullScreen: function() { 932 if (this.pluginApi != null && this.pluginApi.setFullscreen) { 933 this.setFullscreen(false); 934 } 935 }, 936 // start: fake events 937 addEventListener: function (eventName, callback, bubble) { 938 this.events[eventName] = this.events[eventName] || []; 939 this.events[eventName].push(callback); 940 }, 941 removeEventListener: function (eventName, callback) { 942 if (!eventName) { this.events = {}; return true; } 943 var callbacks = this.events[eventName]; 944 if (!callbacks) return true; 945 if (!callback) { this.events[eventName] = []; return true; } 946 for (var i = 0; i < callbacks.length; i++) { 947 if (callbacks[i] === callback) { 948 this.events[eventName].splice(i, 1); 949 return true; 950 } 951 } 952 return false;
953 }, 954 dispatchEvent: function (event) { 955 var i, 956 args, 957 callbacks = this.events[event.type]; 958 if (callbacks) { 959 for (i = 0; i < callbacks.length; i++) { 960 callbacks[i].apply(this, [event]); 961 } 962 } 963 }, 964 // end: fake events 965 // fake DOM attribute methods 966 hasAttribute: function(name){ 967 return (name in this.attributes); 968 }, 969 removeAttribute: function(name){ 970 delete this.attributes[name]; 971 }, 972 getAttribute: function(name){ 973 if (this.hasAttribute(name)) { 974 return this.attributes[name]; 975 } 976 return null; 977 }, 978 setAttribute: function(name, value){ 979 this.attributes[name] = value; 980 }, 981 remove: function() { 982 mejs.Utility.removeSwf(this.pluginElement.id); 983 } 984}; 985/* 986Default options 987*/ 988mejs.MediaElementDefaults = { 989 // allows testing on HTML5, flash, silverlight 990 // auto: attempts to detect what the browser can do 991 // auto_plugin: prefer plugins and then attempt native HTML5 992 // native: forces HTML5 playback 993 // shim: disallows HTML5, will attempt either Flash or Silverlight 994 // none: forces fallback view 995 mode: 'auto', 996 // remove or reorder to change plugin priority and availability 997 plugins: ['flash','silverlight','youtube','vimeo'], 998 // shows debug errors on screen 999 enablePluginDebug: false, 1000 // use plugin for browsers that have trouble with Basic Authentication on HTTPS sites 1001 httpsBasicAuthSite: false, 1002 // overrides the type specified, useful for dynamic instantiation 1003 type: '', 1004 // path to Flash and Silverlight plugins 1005 pluginPath: mejs.Utility.getScriptPath(['mediaelement.js','mediaelement.min.js','mediaelement-and-player.js','mediaelement-and-player.min.js']), 1006 // name of flash file 1007 flashName: 'flashmediaelement.swf', 1008 // streamer for RTMP streaming 1009 flashStreamer: '', 1010 // set to 'always' for CDN version 1011 flashScriptAccess: 'sameDomain', 1012 // turns on the smoothing filter in Flash 1013 enablePluginSmoothing: false, 1014 // enabled pseudo-streaming (seek) on .mp4 files 1015 enablePseudoStreaming: false, 1016 // start query parameter sent to server for pseudo-streaming 1017 pseudoStreamingStartQueryParam: 'start', 1018 // name of silverlight file 1019 silverlightName: 'silverlightmediaelement.xap', 1020 // default if the <video width> is not specified 1021 defaultVideoWidth: 480, 1022 // default if the <video height> is not specified 1023 defaultVideoHeight: 270, 1024 // overrides <video width> 1025 pluginWidth: -1, 1026 // overrides <video height> 1027 pluginHeight: -1, 1028 // additional plugin variables in 'key=value' form 1029 pluginVars: [], 1030 // rate in milliseconds for Flash and Silverlight to fire the timeupdate event 1031 // larger number is less accurate, but less strain on plugin->JavaScript bridge 1032 timerRate: 250, 1033 // initial volume for player 1034 startVolume: 0.8, 1035 // custom error message in case media cannot be played; otherwise, Download File 1036 // link will be displayed 1037 customError: "", 1038 success: function () { }, 1039 error: function () { } 1040}; 1041/* 1042Determines if a browser supports the <video> or <audio> element 1043and returns either the native element or a Flash/Silverlight version that 1044mimics HTML5 MediaElement 1045*/ 1046mejs.MediaElement = function (el, o) { 1047 return mejs.HtmlMediaElementShim.create(el,o); 1048}; 1049mejs.HtmlMediaElementShim = { 1050 create: function(el, o) { 1051 var 1052 options = {}, 1053 htmlMediaElement = (typeof(el) == 'string') ? document.getElementById(el) : el, 1054 tagName = htmlMediaElement.tagName.toLowerCase(), 1055 isMediaTag = (tagName === 'audio' || tagName === 'video'), 1056 src = (isMediaTag) ? htmlMediaElement.getAttribute('src') : htmlMediaElement.getAttribute('href'), 1057 poster = htmlMediaElement.getAttribute('poster'), 1058 autoplay = htmlMediaElement.getAttribute('autoplay'), 1059 preload = htmlMediaElement.getAttribute('preload'), 1060 controls = htmlMediaElement.getAttribute('controls'), 1061 playback, 1062 prop; 1063 // extend options 1064 for (prop in mejs.MediaElementDefaults) { 1065 options[prop] = mejs.MediaElementDefaults[prop]; 1066 } 1067 for (prop in o) { 1068 options[prop] = o[prop]; 1069 } 1070 1071 // clean up attributes 1072 src = (typeof src == 'undefined' || src === null || src == '') ? null : src; 1073 poster = (typeof poster == 'undefined' || poster === null) ? '' : poster; 1074 preload = (typeof preload == 'undefined' || preload === null || preload === 'false') ? 'none' : preload; 1075 autoplay = !(typeof autoplay == 'undefined' || autoplay === null || autoplay === 'false'); 1076 controls = !(typeof controls == 'undefined' || controls === null || controls === 'false'); 1077 // test for HTML5 and plugin capabilities 1078 playback = this.determinePlayback(htmlMediaElement, options, mejs.MediaFeatures.supportsMediaTag, isMediaTag, src); 1079 playback.url = (playback.url !== null) ? mejs.Utility.absolutizeUrl(playback.url) : ''; 1080 playback.scheme = mejs.Utility.determineScheme(playback.url); 1081 if (playback.method == 'native') { 1082 // second fix for android 1083 if (mejs.MediaFeatures.isBustedAndroid) { 1084 htmlMediaElement.src = playback.url; 1085 htmlMediaElement.addEventListener('click', function() { 1086 htmlMediaElement.play(); 1087 }, false); 1088 } 1089 1090 // add methods to native HTMLMediaElement 1091 return this.updateNative(playback, options, autoplay, preload); 1092 } else if (playback.method !== '') { 1093 // create plugin to mimic HTMLMediaElement 1094 1095 return this.createPlugin( playback, options, poster, autoplay, preload, controls); 1096 } else { 1097 // boo, no HTML5, no Flash, no Silverlight. 1098 this.createErrorMessage( playback, options, poster ); 1099 1100 return this; 1101 } 1102 }, 1103 determinePlayback: function(htmlMediaElement, options, supportsMediaTag, isMediaTag, src) { 1104 var 1105 mediaFiles = [], 1106 i, 1107 j, 1108 k, 1109 l, 1110 n, 1111 type, 1112 result = { method: '', url: '', htmlMediaElement: htmlMediaElement, isVideo: (htmlMediaElement.tagName.toLowerCase() !== 'audio'), scheme: ''}, 1113 pluginName, 1114 pluginVersions, 1115 pluginInfo, 1116 dummy, 1117 media; 1118 1119 // STEP 1: Get URL and type from <video src> or <source src> 1120 // supplied type overrides <video type> and <source type> 1121 if (typeof options.type != 'undefined' && options.type !== '') { 1122 1123 // accept either string or array of types 1124 if (typeof options.type == 'string') { 1125 mediaFiles.push({type:options.type, url:src}); 1126 } else { 1127 1128 for (i=0; i<options.type.length; i++) { 1129 mediaFiles.push({type:options.type[i], url:src}); 1130 } 1131 } 1132 // test for src attribute first 1133 } else if (src !== null) { 1134 type = this.formatType(src, htmlMediaElement.getAttribute('type')); 1135 mediaFiles.push({type:type, url:src}); 1136 // then test for <source> elements 1137 } else { 1138 // test <source> types to see if they are usable 1139 for (i = 0; i < htmlMediaElement.childNodes.length; i++) { 1140 n = htmlMediaElement.childNodes[i]; 1141 if (n.nodeType == 1 && n.tagName.toLowerCase() == 'source') { 1142 src = n.getAttribute('src'); 1143 type = this.formatType(src, n.getAttribute('type')); 1144 media = n.getAttribute('media'); 1145 if (!media || !window.matchMedia || (window.matchMedia && window.matchMedia(media).matches)) { 1146 mediaFiles.push({type:type, url:src}); 1147 } 1148 } 1149 } 1150 } 1151 1152 // in the case of dynamicly created players 1153 // check for audio types 1154 if (!isMediaTag && mediaFiles.length > 0 && mediaFiles[0].url !== null && this.getTypeFromFile(mediaFiles[0].url).indexOf('audio') > -1) { 1155 result.isVideo = false;
1156 } 1157 1158 // STEP 2: Test for playback method 1159 1160 // special case for Android which sadly doesn't implement the canPlayType function (always returns '') 1161 if (result.isVideo && mejs.MediaFeatures.isBustedAndroid) { 1162 htmlMediaElement.canPlayType = function(type) { 1163 return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : ''; 1164 }; 1165 } 1166 1167 // special case for Chromium to specify natively supported video codecs (i.e. WebM and Theora) 1168 if (result.isVideo && mejs.MediaFeatures.isChromium) { 1169 htmlMediaElement.canPlayType = function(type) { 1170 return (type.match(/video\/(webm|ogv|ogg)/gi) !== null) ? 'maybe' : ''; 1171 }; 1172 } 1173 // test for native playback first 1174 if (supportsMediaTag && (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'native') && !(mejs.MediaFeatures.isBustedNativeHTTPS && options.httpsBasicAuthSite === true)) { 1175 1176 if (!isMediaTag) { 1177 // create a real HTML5 Media Element 1178 dummy = document.createElement( result.isVideo ? 'video' : 'audio'); 1179 htmlMediaElement.parentNode.insertBefore(dummy, htmlMediaElement); 1180 htmlMediaElement.style.display = 'none'; 1181 1182 // use this one from now on 1183 result.htmlMediaElement = htmlMediaElement = dummy; 1184 } 1185 1186 for (i=0; i<mediaFiles.length; i++) { 1187 // normal check 1188 if (mediaFiles[i].type == "video/m3u8" || htmlMediaElement.canPlayType(mediaFiles[i].type).replace(/no/, '') !== '' 1189 // special case for Mac/Safari 5.0.3 which answers '' to canPlayType('audio/mp3') but 'maybe' to canPlayType('audio/mpeg') 1190 || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/mp3/,'mpeg')).replace(/no/, '') !== '' 1191 // special case for m4a supported by detecting mp4 support 1192 || htmlMediaElement.canPlayType(mediaFiles[i].type.replace(/m4a/,'mp4')).replace(/no/, '') !== '') { 1193 result.method = 'native'; 1194 result.url = mediaFiles[i].url; 1195 break; 1196 } 1197 } 1198 1199 if (result.method === 'native') { 1200 if (result.url !== null) { 1201 htmlMediaElement.src = result.url; 1202 } 1203 1204 // if `auto_plugin` mode, then cache the native result but try plugins. 1205 if (options.mode !== 'auto_plugin') { 1206 return result; 1207 } 1208 } 1209 } 1210 // if native playback didn't work, then test plugins 1211 if (options.mode === 'auto' || options.mode === 'auto_plugin' || options.mode === 'shim') { 1212 for (i=0; i<mediaFiles.length; i++) { 1213 type = mediaFiles[i].type; 1214 // test all plugins in order of preference [silverlight, flash] 1215 for (j=0; j<options.plugins.length; j++) { 1216 pluginName = options.plugins[j]; 1217 1218 // test version of plugin (for future features) 1219 pluginVersions = mejs.plugins[pluginName]; 1220 1221 for (k=0; k<pluginVersions.length; k++) { 1222 pluginInfo = pluginVersions[k]; 1223 1224 // test if user has the correct plugin version 1225 1226 // for youtube/vimeo 1227 if (pluginInfo.version == null || 1228 1229 mejs.PluginDetector.hasPluginVersion(pluginName, pluginInfo.version)) { 1230 // test for plugin playback types 1231 for (l=0; l<pluginInfo.types.length; l++) { 1232 // find plugin that can play the type 1233 if (type.toLowerCase() == pluginInfo.types[l].toLowerCase()) { 1234 result.method = pluginName; 1235 result.url = mediaFiles[i].url; 1236 return result; 1237 } 1238 } 1239 } 1240 } 1241 } 1242 } 1243 } 1244 1245 // at this point, being in 'auto_plugin' mode implies that we tried plugins but failed. 1246 // if we have native support then return that. 1247 if (options.mode === 'auto_plugin' && result.method === 'native') { 1248 return result; 1249 } 1250 // what if there's nothing to play? just grab the first available 1251 if (result.method === '' && mediaFiles.length > 0) { 1252 result.url = mediaFiles[0].url; 1253 } 1254 return result; 1255 }, 1256 formatType: function(url, type) { 1257 // if no type is supplied, fake it with the extension 1258 if (url && !type) { 1259 return this.getTypeFromFile(url); 1260 } else { 1261 // only return the mime part of the type in case the attribute contains the codec 1262 // see http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element 1263 // `video/mp4; codecs="avc1.42E01E, mp4a.40.2"` becomes `video/mp4` 1264 1265 if (type && ~type.indexOf(';')) { 1266 return type.substr(0, type.indexOf(';')); 1267 } else { 1268 return type; 1269 } 1270 } 1271 }, 1272 getTypeFromFile: function(url) { 1273 url = url.split('?')[0]; 1274 var 1275 ext = url.substring(url.lastIndexOf('.') + 1).toLowerCase(), 1276 av = /(mp4|m4v|ogg|ogv|m3u8|webm|webmv|flv|wmv|mpeg|mov)/gi.test(ext) ? 'video/' : 'audio/'; 1277 return this.getTypeFromExtension(ext, av); 1278 }, 1279 getTypeFromExtension: function(ext, av) { 1280 av = av || ''; 1281 1282 switch (ext) { 1283 case 'mp4': 1284 case 'm4v': 1285 case 'm4a': 1286 case 'f4v': 1287 case 'f4a': 1288 return av + 'mp4'; 1289 case 'flv': 1290 return av + 'x-flv'; 1291 case 'webm': 1292 case 'webma': 1293 case 'webmv': 1294 return av + 'webm'; 1295 case 'ogg': 1296 case 'oga': 1297 case 'ogv': 1298 return av + 'ogg'; 1299 case 'm3u8': 1300 return 'application/x-mpegurl'; 1301 case 'ts': 1302 return av + 'mp2t'; 1303 default: 1304 return av + ext; 1305 } 1306 }, 1307 createErrorMessage: function(playback, options, poster) { 1308 var 1309 htmlMediaElement = playback.htmlMediaElement, 1310 errorContainer = document.createElement('div'), 1311 errorContent = options.customError; 1312 1313 errorContainer.className = 'me-cannotplay'; 1314 try { 1315 errorContainer.style.width = htmlMediaElement.width + 'px'; 1316 errorContainer.style.height = htmlMediaElement.height + 'px'; 1317 } catch (e) {} 1318 if (!errorContent) { 1319 errorContent = '<a href="' + playback.url + '">'; 1320 if (poster !== '') { 1321 errorContent += '<img src="' + poster + '" width="100%" height="100%" alt="" />'; 1322 } 1323 errorContent += '<span>' + mejs.i18n.t('mejs.download-file') + '</span></a>'; 1324 } 1325 errorContainer.innerHTML = errorContent; 1326 htmlMediaElement.parentNode.insertBefore(errorContainer, htmlMediaElement); 1327 htmlMediaElement.style.display = 'none'; 1328 options.error(htmlMediaElement); 1329 }, 1330 createPlugin:function(playback, options, poster, autoplay, preload, controls) { 1331 var 1332 htmlMediaElement = playback.htmlMediaElement, 1333 width = 1, 1334 height = 1, 1335 pluginid = 'me_' + playback.method + '_' + (mejs.meIndex++), 1336 pluginMediaElement = new mejs.PluginMediaElement(pluginid, playback.method, playback.url), 1337 container = document.createElement('div'), 1338 specialIEContainer, 1339 node, 1340 initVars; 1341 // copy tagName from html media element 1342 pluginMediaElement.tagName = htmlMediaElement.tagName; 1343 // copy attributes from html media element to plugin media element 1344 for (var i = 0; i < htmlMediaElement.attributes.length; i++) { 1345 var attribute = htmlMediaElement.attributes[i];
1346 if (attribute.specified) { 1347 pluginMediaElement.setAttribute(attribute.name, attribute.value); 1348 } 1349 } 1350 // check for placement inside a <p> tag (sometimes WYSIWYG editors do this) 1351 node = htmlMediaElement.parentNode; 1352 while (node !== null && node.tagName != null && node.tagName.toLowerCase() !== 'body' && 1353 node.parentNode != null && node.parentNode.tagName != null && node.parentNode.constructor != null && node.parentNode.constructor.name === "ShadowRoot") { 1354 if (node.parentNode.tagName.toLowerCase() === 'p') { 1355 node.parentNode.parentNode.insertBefore(node, node.parentNode); 1356 break; 1357 } 1358 node = node.parentNode; 1359 } 1360 if (playback.isVideo) { 1361 width = (options.pluginWidth > 0) ? options.pluginWidth : (options.videoWidth > 0) ? options.videoWidth : (htmlMediaElement.getAttribute('width') !== null) ? htmlMediaElement.getAttribute('width') : options.defaultVideoWidth; 1362 height = (options.pluginHeight > 0) ? options.pluginHeight : (options.videoHeight > 0) ? options.videoHeight : (htmlMediaElement.getAttribute('height') !== null) ? htmlMediaElement.getAttribute('height') : options.defaultVideoHeight; 1363 1364 // in case of '%' make sure it's encoded 1365 width = mejs.Utility.encodeUrl(width); 1366 height = mejs.Utility.encodeUrl(height); 1367 1368 } else { 1369 if (options.enablePluginDebug) { 1370 width = 320; 1371 height = 240; 1372 } 1373 } 1374 // register plugin 1375 pluginMediaElement.success = options.success; 1376 1377 // add container (must be added to DOM before inserting HTML for IE) 1378 container.className = 'me-plugin'; 1379 container.id = pluginid + '_container'; 1380 1381 if (playback.isVideo) { 1382 htmlMediaElement.parentNode.insertBefore(container, htmlMediaElement); 1383 } else { 1384 document.body.insertBefore(container, document.body.childNodes[0]); 1385 } 1386 1387 if (playback.method === 'flash' || playback.method === 'silverlight') { 1388 var canPlayVideo = htmlMediaElement.getAttribute('type') === 'audio/mp4', 1389 childrenSources = htmlMediaElement.getElementsByTagName('source'); 1390 if (childrenSources && !canPlayVideo) { 1391 for (var i = 0, total = childrenSources.length; i < total; i++) { 1392 if (childrenSources[i].getAttribute('type') === 'audio/mp4') { 1393 canPlayVideo = true; 1394 } 1395 } 1396 } 1397 // flash/silverlight vars 1398 initVars = [ 1399 'id=' + pluginid, 1400 'isvideo=' + ((playback.isVideo || canPlayVideo) ? "true" : "false"), 1401 'autoplay=' + ((autoplay) ? "true" : "false"), 1402 'preload=' + preload, 1403 'width=' + width, 1404 'startvolume=' + options.startVolume, 1405 'timerrate=' + options.timerRate, 1406 'flashstreamer=' + options.flashStreamer, 1407 'height=' + height, 1408 'pseudostreamstart=' + options.pseudoStreamingStartQueryParam]; 1409 if (playback.url !== null) { 1410 if (playback.method == 'flash') { 1411 initVars.push('file=' + mejs.Utility.encodeUrl(playback.url)); 1412 } else { 1413 initVars.push('file=' + playback.url); 1414 } 1415 } 1416 if (options.enablePluginDebug) { 1417 initVars.push('debug=true'); 1418 } 1419 if (options.enablePluginSmoothing) { 1420 initVars.push('smoothing=true'); 1421 } 1422 if (options.enablePseudoStreaming) { 1423 initVars.push('pseudostreaming=true'); 1424 } 1425 if (controls) { 1426 initVars.push('controls=true'); // shows controls in the plugin if desired 1427 } 1428 if (options.pluginVars) { 1429 initVars = initVars.concat(options.pluginVars); 1430 } 1431 1432 // call from plugin 1433 window[pluginid + '_init'] = function() { 1434 switch (pluginMediaElement.pluginType) { 1435 case 'flash': 1436 pluginMediaElement.pluginElement = pluginMediaElement.pluginApi = document.getElementById(pluginid); 1437 break; 1438 case 'silverlight': 1439 pluginMediaElement.pluginElement = document.getElementById(pluginMediaElement.id); 1440 pluginMediaElement.pluginApi = pluginMediaElement.pluginElement.Content.MediaElementJS; 1441 break; 1442 } 1443 if (pluginMediaElement.pluginApi != null && pluginMediaElement.success) { 1444 pluginMediaElement.success(pluginMediaElement, htmlMediaElement); 1445 } 1446 }; 1447 1448 // event call from plugin 1449 window[pluginid + '_event'] = function(eventName, values) { 1450 1451 var 1452 e, 1453 i, 1454 bufferedTime; 1455 1456 // fake event object to mimic real HTML media event. 1457 e = { 1458 type: eventName, 1459 target: pluginMediaElement 1460 }; 1461 1462 // attach all values to element and event object 1463 for (i in values) { 1464 pluginMediaElement[i] = values[i]; 1465 e[i] = values[i]; 1466 } 1467 1468 // fake the newer W3C buffered TimeRange (loaded and total have been removed) 1469 bufferedTime = values.bufferedTime || 0; 1470 1471 e.target.buffered = e.buffered = { 1472 start: function(index) { 1473 return 0; 1474 }, 1475 end: function (index) { 1476 return bufferedTime; 1477 }, 1478 length: 1 1479 }; 1480 1481 pluginMediaElement.dispatchEvent(e); 1482 } 1483 1484 1485 } 1486 switch (playback.method) { 1487 case 'silverlight': 1488 container.innerHTML = 1489'<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" id="' + pluginid + '" name="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' + 1490'<param name="initParams" value="' + initVars.join(',') + '" />' + 1491'<param name="windowless" value="true" />' + 1492'<param name="background" value="black" />' + 1493'<param name="minRuntimeVersion" value="3.0.0.0" />' + 1494'<param name="autoUpgrade" value="true" />' + 1495'<param name="source" value="' + options.pluginPath + options.silverlightName + '" />' + 1496'</object>'; 1497 break; 1498 case 'flash': 1499 if (mejs.MediaFeatures.isIE) { 1500 specialIEContainer = document.createElement('div'); 1501 container.appendChild(specialIEContainer); 1502 specialIEContainer.outerHTML = 1503'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="//download.macromedia.com/pub/s
1503hockwave/cabs/flash/swflash.cab" ' + 1504'id="' + pluginid + '" width="' + width + '" height="' + height + '" class="mejs-shim">' + 1505'<param name="movie" value="' + options.pluginPath + options.flashName + '?' + (new Date().getTime()) + '" />' + 1506'<param name="flashvars" value="' + initVars.join('&') + '" />' + 1507'<param name="quality" value="high" />' + 1508'<param name="bgcolor" value="#000000" />' + 1509'<param name="wmode" value="transparent" />' + 1510'<param name="allowScriptAccess" value="' + options.flashScriptAccess + '" />' + 1511'<param name="allowFullScreen" value="true" />' + 1512'<param name="scale" value="default" />' + 1513'</object>'; 1514 } else { 1515 container.innerHTML = 1516'<embed id="' + pluginid + '" name="' + pluginid + '" ' + 1517'play="true" ' + 1518'loop="false" ' + 1519'quality="high" ' + 1520'bgcolor="#000000" ' + 1521'wmode="transparent" ' + 1522'allowScriptAccess="' + options.flashScriptAccess + '" ' + 1523'allowFullScreen="true" ' + 1524'type="application/x-shockwave-flash" pluginspage="//www.macromedia.com/go/getflashplayer" ' + 1525'src="' + options.pluginPath + options.flashName + '" ' + 1526'flashvars="' + initVars.join('&') + '" ' + 1527'width="' + width + '" ' + 1528'height="' + height + '" ' + 1529'scale="default"' + 1530'class="mejs-shim"></embed>'; 1531 } 1532 break; 1533 1534 case 'youtube': 1535 1536 1537 var videoId; 1538 // youtu.be url from share button 1539 if (playback.url.lastIndexOf("youtu.be") != -1) { 1540 videoId = playback.url.substr(playback.url.lastIndexOf('/')+1); 1541 if (videoId.indexOf('?') != -1) { 1542 videoId = videoId.substr(0, videoId.indexOf('?')); 1543 } 1544 } 1545 else { 1546 // https://www.youtube.com/watch?v= 1547 var videoIdMatch = playback.url.match( /[?&]v=([^&#]+)|&|#|$/ ); 1548 if ( videoIdMatch ) { 1549 videoId = videoIdMatch[1]; 1550 } 1551 } 1552 youtubeSettings = { 1553 container: container, 1554 containerId: container.id, 1555 pluginMediaElement: pluginMediaElement, 1556 pluginId: pluginid, 1557 videoId: videoId, 1558 height: height, 1559 width: width, 1560 scheme: playback.scheme, 1561 variables: options.youtubeIframeVars 1562 }; 1563 1564 // favor iframe version of YouTube 1565 if (window.postMessage) { 1566 mejs.YouTubeApi.enqueueIframe(youtubeSettings); 1567 } else if (mejs.PluginDetector.hasPluginVersion('flash', [10,0,0]) ) { 1568 mejs.YouTubeApi.createFlash(youtubeSettings, options); 1569 } 1570 break; 1571 1572 // DEMO Code. Does NOT work. 1573 case 'vimeo': 1574 var player_id = pluginid + "_player"; 1575 pluginMediaElement.vimeoid = playback.url.substr(playback.url.lastIndexOf('/')+1); 1576 1577 container.innerHTML ='<iframe src="' + playback.scheme + 'player.vimeo.com/video/' + pluginMediaElement.vimeoid + '?api=1&portrait=0&byline=0&title=0&player_id=' + player_id + '" width="' + width +'" height="' + height +'" frameborder="0" class="mejs-shim" id="' + player_id + '" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>'; 1578 if (typeof($f) == 'function') { // froogaloop available 1579 var player = $f(container.childNodes[0]), 1580 playerState = -1; 1581 1582 player.addEvent('ready', function() { 1583 1584 player.playVideo = function() { 1585 player.api( 'play' ); 1586 }; 1587 player.stopVideo = function() { 1588 player.api( 'unload' ); 1589 }; 1590 player.pauseVideo = function() { 1591 player.api( 'pause' ); 1592 }; 1593 player.seekTo = function( seconds ) { 1594 player.api( 'seekTo', seconds ); 1595 }; 1596 player.setVolume = function( volume ) { 1597 player.api( 'setVolume', volume ); 1598 }; 1599 player.setMuted = function( muted ) { 1600 if( muted ) { 1601 player.lastVolume = player.api( 'getVolume' ); 1602 player.api( 'setVolume', 0 ); 1603 } else { 1604 player.api( 'setVolume', player.lastVolume ); 1605 delete player.lastVolume; 1606 } 1607 }; 1608 // parity with YT player 1609 player.getPlayerState = function() { 1610 return playerState; 1611 }; 1612 function createEvent(player, pluginMediaElement, eventName, e) { 1613 var event = { 1614 type: eventName, 1615 target: pluginMediaElement 1616 }; 1617 if (eventName == 'timeupdate') { 1618 pluginMediaElement.currentTime = event.currentTime = e.seconds; 1619 pluginMediaElement.duration = event.duration = e.duration; 1620 } 1621 pluginMediaElement.dispatchEvent(event); 1622 } 1623 player.addEvent('play', function() { 1624 playerState = 1; 1625 createEvent(player, pluginMediaElement, 'play'); 1626 createEvent(player, pluginMediaElement, 'playing'); 1627 }); 1628 player.addEvent('pause', function() { 1629 playerState = 2; 1630 createEvent(player, pluginMediaElement, 'pause'); 1631 }); 1632 player.addEvent('finish', function() { 1633 playerState = 0; 1634 createEvent(player, pluginMediaElement, 'ended'); 1635 }); 1636 player.addEvent('playProgress', function(e) { 1637 createEvent(player, pluginMediaElement, 'timeupdate', e); 1638 }); 1639 1640 player.addEvent('seek', function(e) { 1641 playerState = 3; 1642 createEvent(player, pluginMediaElement, 'seeked', e); 1643 }); 1644 1645 player.addEvent('loadProgress', function(e) { 1646 playerState = 3; 1647 createEvent(player, pluginMediaElement, 'progress', e); 1648 }); 1649 pluginMediaElement.pluginElement = container; 1650 pluginMediaElement.pluginApi = player; 1651 pluginMediaElement.success(pluginMediaElement, pluginMediaElement.pluginElement); 1652 }); 1653 } 1654 else { 1655 console.warn("You need to include froogaloop for vimeo to work"); 1656 } 1657 break; 1658 } 1659 // hide original element 1660 htmlMediaElement.style.display = 'none'; 1661 // prevent browser from autoplaying when using a plugin 1662 htmlMediaElement.removeAttribute('autoplay'); 1663 1664 return pluginMediaElement; 1665 }, 1666 updateNative: function(playback, options, autoplay, preload) { 1667 1668 var htmlMediaElement = playback.htmlMediaElement, 1669 m; 1670 1671 1672 // add methods to video object to bring it into parity with Flash Object 1673 for (m in mejs.HtmlMediaElement) { 1674 htmlMediaElement[m] = mejs.HtmlMediaElement[m]; 1675 } 1676 /* 1677 Chrome now supports preload="none" 1678 if (mejs.MediaFeatures.isChrome) { 1679 1680 // special case to enforce preload attribute (Chrome doesn't respect this) 1681 if (preload === 'none' && !autoplay) { 1682 1683 // forces the browser to stop loading (note: fails in IE9) 1684 htmlMediaElement.src = ''; 1685 htmlMediaElement.load(); 1686 htmlMediaElement.canceledPreload = true; 1687 htmlMediaElement.addEventListener('play',function() { 1688 if (htmlMediaElement.canceledPreload) { 1689 htmlMediaElement.src = playback.url; 1690 htmlMediaElement.load(); 1691 htmlMediaElement.play(); 1692 htmlMediaElement.canceledPreload = false;
1693 } 1694 }, false); 1695 // for some reason Chrome forgets how to autoplay sometimes. 1696 } else if (autoplay) { 1697 htmlMediaElement.load(); 1698 htmlMediaElement.play(); 1699 } 1700 } 1701 */ 1702 // fire success code 1703 options.success(htmlMediaElement, htmlMediaElement); 1704 1705 return htmlMediaElement; 1706 } 1707}; 1708/* 1709 - test on IE (object vs. embed) 1710 - determine when to use iframe (Firefox, Safari, Mobile) vs. Flash (Chrome, IE) 1711 - fullscreen? 1712*/ 1713// YouTube Flash and Iframe API 1714mejs.YouTubeApi = { 1715 isIframeStarted: false, 1716 isIframeLoaded: false, 1717 loadIframeApi: function(yt) { 1718 if (!this.isIframeStarted) { 1719 var tag = document.createElement('script'); 1720 tag.src = yt.scheme + "www.youtube.com/player_api"; 1721 var firstScriptTag = document.getElementsByTagName('script')[0]; 1722 firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); 1723 this.isIframeStarted = true; 1724 } 1725 }, 1726 iframeQueue: [], 1727 enqueueIframe: function(yt) { 1728 1729 if (this.isLoaded) { 1730 this.createIframe(yt); 1731 } else { 1732 this.loadIframeApi(yt); 1733 this.iframeQueue.push(yt); 1734 } 1735 }, 1736 createIframe: function(settings) { 1737 var 1738 pluginMediaElement = settings.pluginMediaElement, 1739 defaultVars = {controls:0, wmode:'transparent', rel:0, showinfo:0}, 1740 player = new YT.Player(settings.containerId, { 1741 height: settings.height, 1742 width: settings.width, 1743 videoId: settings.videoId, 1744 playerVars: mejs.$.extend({}, defaultVars, settings.variables), 1745 events: { 1746 'onReady': function(e) { 1747 1748 // wrapper to match 1749 player.setVideoSize = function(width, height) { 1750 player.setSize(width, height); 1751 }; 1752 1753 // hook up iframe object to MEjs 1754 settings.pluginMediaElement.pluginApi = player; 1755 // hook nocookie = IFrameID.src.replace("youtube","youtube-nocookie"); 1756 settings.pluginMediaElement.pluginElement = document.getElementById(settings.containerId); 1757 // init mejs 1758 pluginMediaElement.success(pluginMediaElement, pluginMediaElement.pluginElement); 1759 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay'); 1760 1761 // create timer 1762 setInterval(function() { 1763 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate'); 1764 }, 250); 1765 if (typeof pluginMediaElement.attributes.autoplay !== 'undefined') { 1766 player.playVideo(); 1767 } 1768 }, 1769 'onStateChange': function(e) { 1770 1771 mejs.YouTubeApi.handleStateChange(e.data, player, pluginMediaElement); 1772 1773 } 1774 } 1775 }); 1776 }, 1777 createEvent: function (player, pluginMediaElement, eventName) { 1778 var event = { 1779 type: eventName, 1780 target: pluginMediaElement 1781 }; 1782 if (player && player.getDuration) { 1783 1784 // time 1785 pluginMediaElement.currentTime = event.currentTime = player.getCurrentTime(); 1786 pluginMediaElement.duration = event.duration = player.getDuration(); 1787 1788 // state 1789 event.paused = pluginMediaElement.paused; 1790 event.ended = pluginMediaElement.ended; 1791 1792 // sound 1793 event.muted = player.isMuted(); 1794 event.volume = player.getVolume() / 100; 1795 1796 // progress 1797 event.bytesTotal = player.getVideoBytesTotal(); 1798 event.bufferedBytes = player.getVideoBytesLoaded(); 1799 1800 // fake the W3C buffered TimeRange 1801 var bufferedTime = event.bufferedBytes / event.bytesTotal * event.duration; 1802 1803 event.target.buffered = event.buffered = { 1804 start: function(index) { 1805 return 0; 1806 }, 1807 end: function (index) { 1808 return bufferedTime; 1809 }, 1810 length: 1 1811 }; 1812 } 1813 1814 // send event up the chain 1815 pluginMediaElement.dispatchEvent(event); 1816 }, 1817 iFrameReady: function() { 1818 1819 this.isLoaded = true; 1820 this.isIframeLoaded = true; 1821 1822 while (this.iframeQueue.length > 0) { 1823 var settings = this.iframeQueue.pop(); 1824 this.createIframe(settings); 1825 } 1826 }, 1827 // FLASH! 1828 flashPlayers: {}, 1829 createFlash: function(settings) { 1830 1831 this.flashPlayers[settings.pluginId] = settings; 1832 1833 /* 1834 settings.container.innerHTML = 1835 '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + settings.scheme + 'www.youtube.com/apiplayer?enablejsapi=1&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&modestbranding=1&loop=0" ' + 1836 'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' + 1837 '<param name="allowScriptAccess" value="' + options.flashScriptAccess + '">' + 1838 '<param name="wmode" value="transparent">' + 1839 '</object>'; 1840 */ 1841 var specialIEContainer, 1842 youtubeUrl = settings.scheme + 'www.youtube.com/apiplayer?enablejsapi=1&playerapiid=' + settings.pluginId + '&version=3&autoplay=0&controls=0&modestbranding=1&loop=0'; 1843 1844 if (mejs.MediaFeatures.isIE) { 1845 1846 specialIEContainer = document.createElement('div'); 1847 settings.container.appendChild(specialIEContainer); 1848 specialIEContainer.outerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="' + settings.scheme + 'download.macromedia.com/pub/s
1848hockwave/cabs/flash/swflash.cab" ' + 1849'id="' + settings.pluginId + '" width="' + settings.width + '" height="' + settings.height + '" class="mejs-shim">' + 1850 '<param name="movie" value="' + youtubeUrl + '" />' + 1851 '<param name="wmode" value="transparent" />' + 1852 '<param name="allowScriptAccess" value="' + options.flashScriptAccess + '" />' + 1853 '<param name="allowFullScreen" value="true" />' + 1854'</object>'; 1855 } else { 1856 settings.container.innerHTML = 1857 '<object type="application/x-shockwave-flash" id="' + settings.pluginId + '" data="' + youtubeUrl + '" ' + 1858 'width="' + settings.width + '" height="' + settings.height + '" style="visibility: visible; " class="mejs-shim">' + 1859 '<param name="allowScriptAccess" value="' + options.flashScriptAccess + '">' + 1860 '<param name="wmode" value="transparent">' + 1861 '</object>'; 1862 } 1863 1864 }, 1865 flashReady: function(id) { 1866 var 1867 settings = this.flashPlayers[id], 1868 player = document.getElementById(id), 1869 pluginMediaElement = settings.pluginMediaElement; 1870 1871 // hook up and return to MediaELementPlayer.success 1872 pluginMediaElement.pluginApi = 1873 pluginMediaElement.pluginElement = player; 1874 1875 settings.success(pluginMediaElement, pluginMediaElement.pluginElement); 1876 1877 // load the youtube video 1878 player.cueVideoById(settings.videoId); 1879 1880 var callbackName = settings.containerId + '_callback'; 1881 1882 window[callbackName] = function(e) { 1883 mejs.YouTubeApi.handleStateChange(e, player, pluginMediaElement); 1884 }; 1885 1886 player.addEventListener('onStateChange', callbackName); 1887 1888 setInterval(function() { 1889 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'timeupdate'); 1890 }, 250); 1891 1892 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'canplay'); 1893 }, 1894 handleStateChange: function(youTubeState, player, pluginMediaElement) { 1895 switch (youTubeState) { 1896 case -1: // not started 1897 pluginMediaElement.paused = true; 1898 pluginMediaElement.ended = true; 1899 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'loadedmetadata'); 1900 //createYouTubeEvent(player, pluginMediaElement, 'loadeddata'); 1901 break; 1902 case 0: 1903 pluginMediaElement.paused = false; 1904 pluginMediaElement.ended = true; 1905 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'ended'); 1906 break; 1907 case 1: 1908 pluginMediaElement.paused = false; 1909 pluginMediaElement.ended = false; 1910 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'play'); 1911 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'playing'); 1912 break; 1913 case 2: 1914 pluginMediaElement.paused = true; 1915 pluginMediaElement.ended = false; 1916 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'pause'); 1917 break; 1918 case 3: // buffering 1919 mejs.YouTubeApi.createEvent(player, pluginMediaElement, 'progress'); 1920 break; 1921 case 5: 1922 // cued? 1923 break; 1924 1925 } 1926 1927 } 1928} 1929// IFRAME 1930window.onYouTubePlayerAPIReady = function() { 1931 mejs.YouTubeApi.iFrameReady(); 1932}; 1933// FLASH 1934window.onYouTubePlayerReady = function(id) { 1935 mejs.YouTubeApi.flashReady(id); 1936}; 1937window.mejs = mejs; 1938window.MediaElement = mejs.MediaElement; 1939/** 1940 * Localize strings 1941 * 1942 * Include translations from JS files and method to pluralize properly strings. 1943 * 1944 */ 1945(function (doc, win, mejs, undefined) { 1946 var i18n = { 1947 /** 1948 * @type {String} 1949 */ 1950 'default': 'de', 1951 /** 1952 * @type {String[]} 1953 */ 1954 locale: { 1955 language: (mejs.i18n && mejs.i18n.locale.language) || '', 1956 strings: (mejs.i18n && mejs.i18n.locale.strings) || {} 1957 }, 1958 /** 1959 * Filters for available languages. 1960 * 1961 * This plural forms are grouped in family groups based on 1962 * https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of_Plural_Rules 1963 * with some additions and corrections according to the Localization Guide list 1964 * (http://localization-guide.readthedocs.io/en/latest/l10n/pluralforms.html) 1965 * 1966 * Arguments are dynamic following the structure: 1967 * - argument1 : Number to determine form 1968 * - argument2...argumentN: Possible matches 1969 * 1970 * @type {Function[]} 1971 */ 1972 pluralForms: [ 1973 // 0: Chinese, Japanese, Korean, Persian, Turkish, Thai, Lao, Aymará, 1974 // Tibetan, Chiga, Dzongkha, Indonesian, Lojban, Georgian, Kazakh, Khmer, Kyrgyz, Malay, 1975 // Burmese, Yakut, Sundanese, Tatar, Uyghur, Vietnamese, Wolof 1976 function () { 1977 return arguments[1]; 1978 }, 1979 // 1: Danish, Dutch, English, Faroese, Frisian, German, Norwegian, Swedish, Estonian, Finnish, 1980 // Hungarian, Basque, Greek, Hebrew, Italian, Portuguese, Spanish, Catalan, Afrikaans, 1981 // Angika, Assamese, Asturian, Azerbaijani, Bulgarian, Bengali, Bodo, Aragonese, Dogri, 1982 // Esperanto, Argentinean Spanish, Fulah, Friulian, Galician, Gujarati, Hausa, 1983 // Hindi, Chhattisgarhi, Armenian, Interlingua, Greenlandic, Kannada, Kurdish, Letzeburgesch, 1984 // Maithili, Malayalam, Mongolian, Manipuri, Marathi, Nahuatl, Neapolitan, Norwegian Bokmal, 1985 // Nepali, Norwegian Nynorsk, Norwegian (old code), Northern Sotho, Oriya, Punjabi, Papiamento, 1986 // Piemontese, Pashto, Romansh, Kinyarwanda, Santali, Scots, Sindhi, Northern Sami, Sinhala, 1987 // Somali, Songhay, Albanian, Swahili, Tamil, Telugu, Turkmen, Urdu, Yoruba 1988 function () { 1989 var args = arguments; 1990 if (args[0] === 1) { 1991 return args[1]; 1992 } else { 1993 return args[2]; 1994 } 1995 }, 1996 // 2: French, Brazilian Portuguese, Acholi, Akan, Amharic, Mapudungun, Breton, Filipino, 1997 // Gun, Lingala, Mauritian Creole, Malagasy, Maori, Occitan, Tajik, Tigrinya, Uzbek, Walloon 1998 function () { 1999 var args = arguments; 2000 if ([0, 1].indexOf(args[0]) > -1) { 2001 return args[1]; 2002 } else { 2003 return args[2]; 2004 } 2005 }, 2006 // 3: Latvian 2007 function () { 2008 var args = arguments; 2009 if (args[0] % 10 === 1 && args[0] % 100 !== 11) { 2010 return args[1]; 2011 } else if (args[0] !== 0) { 2012 return args[2]; 2013 } else { 2014 return args[3]; 2015 } 2016 }, 2017 // 4: Scottish Gaelic 2018 function () { 2019 var args = arguments; 2020 if (args[0] === 1 || args[0] === 11) { 2021 return args[1]; 2022 } else if (args[0] === 2 || args[0] === 12) { 2023 return args[2]; 2024 } else if (args[0] > 2 && args[0] < 20) { 2025 return args[3]; 2026 } else { 2027 return args[4]; 2028 } 2029 }, 2030 // 5: Romanian 2031 function () { 2032 if (args[0] === 1) { 2033 return args[1]; 2034 } else if (args[0] === 0 || (args[0] % 100 > 0 && args[0] % 100 < 20)) { 2035 return args[2]; 2036 } else { 2037 return args[3]; 2038 } 2039 }, 2040 // 6: Lithuanian 2041 function () { 2042 var args = arguments; 2043 if (args[0] % 10 === 1 && args[0] % 100 !== 11) { 2044 return args[1]; 2045 } else if (args[0] % 10 >= 2 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { 2046 return args[2]; 2047 } else { 2048 return [3]; 2049 } 2050 }, 2051 // 7: Belarusian, Bosnian, Croatian, Serbian, Russian, Ukrainian 2052 function () { 2053 var args = arguments; 2054 if (args[0] % 10 === 1 && args[0] % 100 !== 11) { 2055 return args[1]; 2056 } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { 2057 return args[2]; 2058 } else { 2059 return args[3]; 2060 } 2061 },
2062 // 8: Slovak, Czech 2063 function () { 2064 var args = arguments; 2065 if (args[0] === 1) { 2066 return args[1]; 2067 } else if (args[0] >= 2 && args[0] <= 4) { 2068 return args[2]; 2069 } else { 2070 return args[3]; 2071 } 2072 }, 2073 // 9: Polish 2074 function () { 2075 var args = arguments; 2076 if (args[0] === 1) { 2077 return args[1]; 2078 } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { 2079 return args[2]; 2080 } else { 2081 return args[3]; 2082 } 2083 }, 2084 // 10: Slovenian 2085 function () { 2086 var args = arguments; 2087 if (args[0] % 100 === 1) { 2088 return args[2]; 2089 } else if (args[0] % 100 === 2) { 2090 return args[3]; 2091 } else if (args[0] % 100 === 3 || args[0] % 100 === 4) { 2092 return args[4]; 2093 } else { 2094 return args[1]; 2095 } 2096 }, 2097 // 11: Irish Gaelic 2098 function () { 2099 var args = arguments; 2100 if (args[0] === 1) { 2101 return args[1]; 2102 } else if (args[0] === 2) { 2103 return args[2]; 2104 } else if (args[0] > 2 && args[0] < 7) { 2105 return args[3]; 2106 } else if (args[0] > 6 && args[0] < 11) { 2107 return args[4]; 2108 } else { 2109 return args[5]; 2110 } 2111 }, 2112 // 12: Arabic 2113 function () { 2114 var args = arguments; 2115 if (args[0] === 0) { 2116 return args[1]; 2117 } else if (args[0] === 1) { 2118 return args[2]; 2119 } else if (args[0] === 2) { 2120 return args[3]; 2121 } else if (args[0] % 100 >= 3 && args[0] % 100 <= 10) { 2122 return args[4]; 2123 } else if (args[0] % 100 >= 11) { 2124 return args[5]; 2125 } else { 2126 return args[6]; 2127 } 2128 }, 2129 // 13: Maltese 2130 function () { 2131 var args = arguments; 2132 if (args[0] === 1) { 2133 return args[1]; 2134 } else if (args[0] === 0 || (args[0] % 100 > 1 && args[0] % 100 < 11)) { 2135 return args[2]; 2136 } else if (args[0] % 100 > 10 && args[0] % 100 < 20) { 2137 return args[3]; 2138 } else { 2139 return args[4]; 2140 } 2141 }, 2142 // 14: Macedonian 2143 function () { 2144 var args = arguments; 2145 if (args[0] % 10 === 1) { 2146 return args[1]; 2147 } else if (args[0] % 10 === 2) { 2148 return args[2]; 2149 } else { 2150 return args[3]; 2151 } 2152 }, 2153 // 15: Icelandic 2154 function () { 2155 var args = arguments; 2156 if (args[0] !== 11 && args[0] % 10 === 1) { 2157 return args[1]; 2158 } else { 2159 return args[2]; 2160 } 2161 }, 2162 // New additions 2163 // 16: Kashubian 2164 // Note: in https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals#List_of_Plural_Rules 2165 // Breton is listed as #16 but in the Localization Guide it belongs to the group 2 2166 function () { 2167 var args = arguments; 2168 if (args[0] === 1) { 2169 return args[1]; 2170 } else if (args[0] % 10 >= 2 && args[0] % 10 <= 4 && (args[0] % 100 < 10 || args[0] % 100 >= 20)) { 2171 return args[2]; 2172 } else { 2173 return args[3]; 2174 } 2175 }, 2176 // 17: Welsh 2177 function () { 2178 var args = arguments; 2179 if (args[0] === 1) { 2180 return args[1]; 2181 } else if (args[0] === 2) { 2182 return args[2]; 2183 } else if (args[0] !== 8 && args[0] !== 11) { 2184 return args[3]; 2185 } else { 2186 return args[4]; 2187 } 2188 }, 2189 // 18: Javanese 2190 function () { 2191 var args = arguments; 2192 if (args[0] === 0) { 2193 return args[1]; 2194 } else { 2195 return args[2]; 2196 } 2197 }, 2198 // 19: Cornish 2199 function () { 2200 var args = arguments; 2201 if (args[0] === 1) { 2202 return args[1]; 2203 } else if (args[0] === 2) { 2204 return args[2]; 2205 } else if (args[0] === 3) { 2206 return args[3]; 2207 } else { 2208 return args[4]; 2209 } 2210 }, 2211 // 20: Mandinka 2212 function () { 2213 var args = arguments; 2214 if (args[0] === 0) { 2215 return args[1]; 2216 } else if (args[0] === 1) { 2217 return args[2]; 2218 } else { 2219 return args[3]; 2220 } 2221 } 2222 ], 2223 /** 2224 * Get specified language 2225 * 2226 */ 2227 getLanguage: function () { 2228 var language = i18n.locale.language || i18n['default']; 2229 return /^(x\-)?[a-z]{2,}(\-\w{2,})?(\-\w{2,})?$/.exec(language) ? language : i18n['default']; 2230 }, 2231 /** 2232 * Translate a string to a specified language, including optionally a number to pluralize translation 2233 * 2234 * @param {String} message 2235 * @param {Number} pluralParam 2236 * @return {String} 2237 */ 2238 t: function (message, pluralParam) { 2239 if (typeof message === 'string' && message.length) { 2240 var 2241 language = i18n.getLanguage(), 2242 str, 2243 pluralForm, 2244 /** 2245 * Modify string using algorithm to detect plural forms. 2246 * 2247 * @private 2248 * @see http://stackoverflow.com/questions/1353408/messageformat-in-javascript-parameters-in-localized-ui-strings 2249 * @param {String|String[]}
2249 input - String or array of strings to pick the plural form 2250 * @param {Number} number - Number to determine the proper plural form 2251 * @param {Number} form - Number of language family to apply plural form 2252 * @return {String} 2253 */ 2254 plural = function (input, number, form) { 2255 if (typeof input !== 'object' || typeof number !== 'number' || typeof form !== 'number') { 2256 return input; 2257 } 2258 if (typeof input === 'string') { 2259 return input; 2260 } 2261 // Perform plural form or return original text 2262 return i18n.pluralForms[form].apply(null, [number].concat(input)); 2263 }, 2264 /** 2265 * 2266 * @param {String} input 2267 * @return {String} 2268 */ 2269 escapeHTML = function (input) { 2270 var map = { 2271 '&': '&', 2272 '<': '<', 2273 '>': '>', 2274 '"': '"' 2275 }; 2276 return input.replace(/[&<>"]/g, function(c) { 2277 return map[c]; 2278 }); 2279 } 2280 ; 2281 // Fetch the localized version of the string 2282 if (i18n.locale.strings && i18n.locale.strings[language]) { 2283 str = i18n.locale.strings[language][message]; 2284 if (typeof pluralParam === 'number') { 2285 pluralForm = i18n.locale.strings[language]['mejs.plural-form']; 2286 str = plural.apply(null, [str, pluralParam, pluralForm]); 2287 } 2288 } 2289 // Fallback to default language if requested uid is not translated 2290 if (!str && i18n.locale.strings && i18n.locale.strings[i18n['default']]) { 2291 str = i18n.locale.strings[i18n['default']][message]; 2292 if (typeof pluralParam === 'number') { 2293 pluralForm = i18n.locale.strings[i18n['default']]['mejs.plural-form']; 2294 str = plural.apply(null, [str, pluralParam, pluralForm]); 2295 } 2296 } 2297 // As a last resort, use the requested uid, to mimic original behavior of i18n utils (in which uid was the english text) 2298 str = str || message; 2299 // Replace token 2300 if (typeof pluralParam === 'number') { 2301 str = str.replace('%1', pluralParam); 2302 } 2303 return escapeHTML(str); 2304 } 2305 return message; 2306 } 2307 }; 2308 // i18n fixes for compatibility with WordPress 2309 if (typeof mejsL10n !== 'undefined') { 2310 i18n.locale.language = mejsL10n.language; 2311 } 2312 // Register variable 2313 mejs.i18n = i18n; 2314}(document, window, mejs)); 2315// i18n fixes for compatibility with WordPress 2316;(function (mejs, undefined) { 2317 "use strict"; 2318 if (typeof mejsL10n !== 'undefined') { 2319 mejs[mejsL10n.language] = mejsL10n.strings; 2320 } 2321}(mejs.i18n.locale.strings)); 2322/*! 2323 * This is a i18n.locale language object. 2324 * 2325 * English; This can serve as a template for other languages to translate 2326 * 2327 * @author 2328 * TBD 2329 * Sascha Greuel (Twitter: @SoftCreatR) 2330 * 2331 * @see 2332 * me-i18n.js 2333 * 2334 * @params 2335 * - exports - CommonJS, window .. 2336 */ 2337(function (exports) { 2338 "use strict"; 2339 if (exports.en === undefined) { 2340 exports.en = { 2341 "mejs.plural-form": 1, 2342 // me-shim 2343 "mejs.download-file": "Download File", 2344 // mep-feature-contextmenu 2345 "mejs.fullscreen-off": "Turn off Fullscreen", 2346 "mejs.fullscreen-on": "Go Fullscreen", 2347 "mejs.download-video": "Download Video", 2348 // mep-feature-fullscreen 2349 "mejs.fullscreen": "Fullscreen", 2350 // mep-feature-jumpforward 2351 "mejs.time-jump-forward": ["Jump forward 1 second", "Jump forward %1 seconds"], 2352 // mep-feature-playpause 2353 "mejs.play": "Play", 2354 "mejs.pause": "Pause", 2355 // mep-feature-postroll 2356 "mejs.close": "Close", 2357 // mep-feature-progress 2358 "mejs.time-slider": "Time Slider", 2359 "mejs.time-help-text": "Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.", 2360 // mep-feature-skipback 2361 "mejs.time-skip-back": ["Skip back 1 second", "Skip back %1 seconds"], 2362 // mep-feature-tracks 2363 "mejs.captions-subtitles": "Captions/Subtitles", 2364 "mejs.none": "None", 2365 // mep-feature-volume 2366 "mejs.mute-toggle": "Mute Toggle", 2367 "mejs.volume-help-text": "Use Up/Down Arrow keys to increase or decrease volume.", 2368 "mejs.unmute": "Unmute", 2369 "mejs.mute": "Mute", 2370 "mejs.volume-slider": "Volume Slider", 2371 // mep-player 2372 "mejs.video-player": "Video Player", 2373 "mejs.audio-player": "Audio Player", 2374 // mep-feature-ads 2375 "mejs.ad-skip": "Skip ad", 2376 "mejs.ad-skip-info": ["Skip in 1 second", "Skip in %1 seconds"], 2377 // mep-feature-sourcechooser
2378 "mejs.source-chooser": "Source Chooser" 2379 }; 2380 } 2381}(mejs.i18n.locale.strings)); 2382 /* Ende mediaelement */ 2383 /* Start mediaelement_i18n_de */ 2384 /*! 2385 * --GSBDocStart 2386 * @module medialement.js 2387 * @version 2.23.5 2388 * @see {@link http://me-i18n.js} 2389 * @author Jalios (Twitter: @Jalios) 2390 * Sascha Greuel (Twitter: @SoftCreatR) 2391 * @license MIT license 2392 * 2393 * @desc Addon zur Ausgabe von deutschen Labels 2394 *--GSBDocEnd 2395 * This is a i18n.locale language object. 2396 * 2397 * German 2398 * 2399 * @see 2400 * me-i18n.js 2401 * 2402 * @params 2403 * - exports - CommonJS, window .. 2404 */ 2405(function(exports){if(exports.de===undefined){exports.de={"mejs.plural-form":1,"mejs.download-file":"Datei herunterladen","mejs.fullscreen-off":"Vollbildmodus beenden","mejs.fullscreen-on":"Vollbild","mejs.download-video":"Video herunterladen","mejs.fullscreen":"Vollbild","mejs.time-jump-forward":["1 Sekunde vorspulen","%1 Sekunden vorspulen"],"mejs.play":"Abspielen","mejs.pause":"Pause","mejs.close":"SchlieÃen","mejs.time-slider":"Zeitschieberegler","mejs.time-help-text":"Verwende die Pfeiltaste nach links/rechts, um eine Sekunde zu spulen, hoch/runter um zehn Sekunden zu spulen.","mejs.time-skip-back":["1 Sekunde zurückspulen","%1 Sekunden zurückspulen"],"mejs.captions-subtitles":"Ãberschriften/Untertitel","mejs.none":"Keine","mejs.mute-toggle":"Stummschaltung umschalten","mejs.volume-help-text":"Verwende die Pfeiltaste nach oben/nach unten um die Lautstärke zu erhöhen oder zu verringern.","mejs.unmute":"Stummschaltung aufheben","mejs.mute":"Stummschalten","mejs.volume-slider":"Lautstärkeregler","mejs.video-player":"Video-Player","mejs.audio-player":"Audio-Player","mejs.ad-skip":"Werbung überspringen","mejs.ad-skip-info":["Ãberspringen in 1 Sekunde","Ãberspringen in %1 Sekunden"],"mejs.source-chooser":"Quellenauswahl"};}}(mejs.i18n.locale.strings)); 2406 /* Ende mediaelement_i18n_de */ 2407 /* Start mediaelementplayer */ 2408 /*! 2409 * --GSBDocStart 2410 * @module MediaElementPlayer 2411 * @version 2.23.5 2412 * @see {@link http://mediaelementjs.com/} 2413 * @author John Dyer (http://j.hn/), 2010-2013 2414 * @license MIT license 2415 * 2416 * @desc Creates a controller bar for HTML5 <video> add <audio> tags 2417 * using jQuery and MediaElement.js (HTML5 Flash/Silverlight wrapper) 2418 *--GSBDocEnd 2419 2420 * Copyright 2010-2013, John Dyer (http://j.hn/) 2421 * License: MIT 2422 * 2423 */ 2424if (typeof jQuery != 'undefined') { 2425 mejs.$ = jQuery; 2426} else if (typeof Zepto != 'undefined') { 2427 mejs.$ = Zepto; 2428 // define `outerWidth` method which has not been realized in Zepto 2429 Zepto.fn.outerWidth = function(includeMargin) { 2430 var width = $(this).width(); 2431 if (includeMargin) { 2432 width += parseInt($(this).css('margin-right'), 10); 2433 width += parseInt($(this).css('margin-left'), 10); 2434 } 2435 return width 2436 } 2437} else if (typeof ender != 'undefined') { 2438 mejs.$ = ender; 2439} 2440(function ($) { 2441 // default player values 2442 mejs.MepDefaults = { 2443 // url to poster (to fix iOS 3.x) 2444 poster: '', 2445 // When the video is ended, we can show the poster. 2446 showPosterWhenEnded: false, 2447 // default if the <video width> is not specified 2448 defaultVideoWidth: 480, 2449 // default if the <video height> is not specified 2450 defaultVideoHeight: 270, 2451 // if set, overrides <video width> 2452 videoWidth: -1, 2453 // if set, overrides <video height> 2454 videoHeight: -1, 2455 // default if the user doesn't specify 2456 defaultAudioWidth: 400, 2457 // default if the user doesn't specify 2458 defaultAudioHeight: 30, 2459 // default amount to move back when back key is pressed 2460 defaultSeekBackwardInterval: function(media) { 2461 return (media.duration * 0.05); 2462 }, 2463 // default amount to move forward when forward key is pressed 2464 defaultSeekForwardInterval: function(media) { 2465 return (media.duration * 0.05); 2466 }, 2467 // set dimensions via JS instead of CSS 2468 setDimensions: true, 2469 // width of audio player 2470 audioWidth: -1, 2471 // height of audio player 2472 audioHeight: -1, 2473 // initial volume when the player starts (overrided by user cookie) 2474 startVolume: 0.8, 2475 // useful for <audio> player loops 2476 loop: false, 2477 // rewind to beginning when media ends 2478 autoRewind: true, 2479 // resize to media dimensions 2480 enableAutosize: true, 2481 /* 2482 * Time format to use. Default: 'mm:ss' 2483 * Supported units: 2484 * h: hour 2485 * m: minute 2486 * s: second 2487 * f: frame count 2488 * When using 'hh', 'mm', 'ss' or 'ff' we always display 2 digits. 2489 * If you use 'h', 'm', 's' or 'f' we display 1 digit if possible. 2490 * 2491 * Example to display 75 seconds: 2492 * Format 'mm:ss': 01:15 2493 * Format 'm:ss': 1:15 2494 * Format 'm:s': 1:15 2495 */ 2496 timeFormat: '', 2497 // forces the hour marker (##:00:00) 2498 alwaysShowHours: false, 2499 // show framecount in timecode (##:00:00:00)
2500 showTimecodeFrameCount: false, 2501 // used when showTimecodeFrameCount is set to true 2502 framesPerSecond: 25, 2503 // automatically calculate the width of the progress bar based on the sizes of other elements 2504 autosizeProgress : true, 2505 // Hide controls when playing and mouse is not over the video 2506 alwaysShowControls: false, 2507 // Display the video control 2508 hideVideoControlsOnLoad: false, 2509 // Enable click video element to toggle play/pause 2510 clickToPlayPause: true, 2511 // Time in ms to hide controls 2512 controlsTimeoutDefault: 1500, 2513 // Time in ms to trigger the timer when mouse moves 2514 controlsTimeoutMouseEnter: 2500, 2515 // Time in ms to trigger the timer when mouse leaves 2516 controlsTimeoutMouseLeave: 1000, 2517 // force iPad's native controls 2518 iPadUseNativeControls: false, 2519 // force iPhone's native controls 2520 iPhoneUseNativeControls: false, 2521 // force Android's native controls 2522 AndroidUseNativeControls: false, 2523 // features to show 2524 features: ['playpause','current','progress','duration','tracks','volume','fullscreen'], 2525 // only for dynamic 2526 isVideo: true, 2527 // stretching modes (auto, fill, responsive, none) 2528 stretching: 'auto', 2529 // turns keyboard support on and off for this instance 2530 enableKeyboard: true, 2531 // when this player starts, it will pause other players 2532 pauseOtherPlayers: true, 2533 // array of keyboard actions such as play pause 2534 keyActions: [ 2535 { 2536 keys: [ 2537 32, // SPACE 2538 179 // GOOGLE play/pause button 2539 ], 2540 action: function(player, media, key, event) { 2541 if (!mejs.MediaFeatures.isFirefox) { 2542 if (media.paused || media.ended) { 2543 media.play(); 2544 } else { 2545 media.pause(); 2546 } 2547 } 2548 } 2549 }, 2550 { 2551 keys: [38], // UP 2552 action: function(player, media, key, event) { 2553 player.container.find('.mejs-volume-slider').css('display','block'); 2554 if (player.isVideo) { 2555 player.showControls(); 2556 player.startControlsTimer(); 2557 } 2558 var newVolume = Math.min(media.volume + 0.1, 1); 2559 media.setVolume(newVolume); 2560 } 2561 }, 2562 { 2563 keys: [40], // DOWN 2564 action: function(player, media, key, event) { 2565 player.container.find('.mejs-volume-slider').css('display','block'); 2566 if (player.isVideo) { 2567 player.showControls(); 2568 player.startControlsTimer(); 2569 } 2570 var newVolume = Math.max(media.volume - 0.1, 0); 2571 media.setVolume(newVolume); 2572 } 2573 }, 2574 { 2575 keys: [ 2576 37, // LEFT 2577 227 // Google TV rewind 2578 ], 2579 action: function(player, media, key, event) { 2580 if (!isNaN(media.duration) && media.duration > 0) { 2581 if (player.isVideo) { 2582 player.showControls(); 2583 player.startControlsTimer(); 2584 } 2585 // 5% 2586 var newTime = Math.max(media.currentTime - player.options.defaultSeekBackwardInterval(media), 0); 2587 media.setCurrentTime(newTime); 2588 } 2589 } 2590 }, 2591 { 2592 keys: [ 2593 39, // RIGHT 2594 228 // Google TV forward 2595 ], 2596 action: function(player, media, key, event) { 2597 if (!isNaN(media.duration) && media.duration > 0) { 2598 if (player.isVideo) { 2599 player.showControls(); 2600 player.startControlsTimer(); 2601 } 2602 // 5% 2603 var newTime = Math.min(media.currentTime + player.options.defaultSeekForwardInterval(media), media.duration); 2604 media.setCurrentTime(newTime); 2605 } 2606 } 2607 }, 2608 { 2609 keys: [70], // F 2610 action: function(player, media, key, event) { 2611 if (typeof player.enterFullScreen != 'undefined') { 2612 if (player.isFullScreen) { 2613 player.exitFullScreen(); 2614 } else { 2615 player.enterFullScreen(); 2616 } 2617 } 2618 } 2619 }, 2620 { 2621 keys: [77], // M 2622 action: function(player, media, key, event) { 2623 player.container.find('.mejs-volume-slider').css('display','block'); 2624 if (player.isVideo) { 2625 player.showControls(); 2626 player.startControlsTimer(); 2627 } 2628 if (player.media.muted) { 2629 player.setMuted(false); 2630 } else { 2631 player.setMuted(true); 2632 } 2633 } 2634 } 2635 ] 2636 }; 2637 mejs.mepIndex = 0; 2638 mejs.players = {}; 2639 // wraps a MediaElement object in player controls 2640 mejs.MediaElementPlayer = function(node, o) { 2641 // enforce object, even without "new" (via John Resig) 2642 if ( !(this instanceof mejs.MediaElementPlayer) ) { 2643 return new mejs.MediaElementPlayer(node, o); 2644 } 2645 var t = this; 2646 // these will be reset after the MediaElement.success fires 2647 t.$media = t.$node = $(node); 2648 t.node = t.media = t.$media[0]; 2649 if(!t.node) { 2650 return; 2651 } 2652 // check for existing player 2653 if (typeof t.node.player != 'undefined') { 2654 return t.node.player; 2655 } 2656 // try to get options from data-mejsoptions 2657 if (typeof o == 'undefined') { 2658 o = t.$node.data('mejsoptions'); 2659 } 2660 // extend default options 2661 t.options = $.extend({},mejs.MepDefaults,o); 2662 if (!t.options.timeFormat) { 2663 // Generate the time format according to options 2664 t.options.timeFormat = 'mm:ss'; 2665 if (t.options.alwaysShowHours) { 2666 t.options.timeFormat = 'hh:mm:ss'; 2667 }
2668 if (t.options.showTimecodeFrameCount) { 2669 t.options.timeFormat += ':ff'; 2670 } 2671 } 2672 mejs.Utility.calculateTimeFormat(0, t.options, t.options.framesPerSecond || 25); 2673 // unique ID 2674 t.id = 'mep_' + mejs.mepIndex++; 2675 // add to player array (for focus events) 2676 mejs.players[t.id] = t; 2677 // start up 2678 t.init(); 2679 return t; 2680 }; 2681 // actual player 2682 mejs.MediaElementPlayer.prototype = { 2683 hasFocus: false, 2684 controlsAreVisible: true, 2685 init: function() { 2686 var 2687 t = this, 2688 mf = mejs.MediaFeatures, 2689 // options for MediaElement (shim) 2690 meOptions = $.extend(true, {}, t.options, { 2691 success: function(media, domNode) { t.meReady(media, domNode); }, 2692 error: function(e) { t.handleError(e);} 2693 }), 2694 tagName = t.media.tagName.toLowerCase(); 2695 t.isDynamic = (tagName !== 'audio' && tagName !== 'video'); 2696 if (t.isDynamic) { 2697 // get video from src or href? 2698 t.isVideo = t.options.isVideo; 2699 } else { 2700 t.isVideo = (tagName !== 'audio' && t.options.isVideo); 2701 } 2702 // use native controls in iPad, iPhone, and Android 2703 if ((mf.isiPad && t.options.iPadUseNativeControls) || (mf.isiPhone && t.options.iPhoneUseNativeControls)) { 2704 // add controls and stop 2705 t.$media.attr('controls', 'controls'); 2706 // attempt to fix iOS 3 bug 2707 //t.$media.removeAttr('poster'); 2708 // no Issue found on iOS3 -ttroxell 2709 // override Apple's autoplay override for iPads 2710 if (mf.isiPad && t.media.getAttribute('autoplay') !== null) { 2711 t.play(); 2712 } 2713 } else if (mf.isAndroid && t.options.AndroidUseNativeControls) { 2714 // leave default player 2715 } else if (t.isVideo || (!t.isVideo && t.options.features.length)) { 2716 // DESKTOP: use MediaElementPlayer controls 2717 // remove native controls 2718 t.$media.removeAttr('controls'); 2719 var videoPlayerTitle = t.isVideo ? 2720 mejs.i18n.t('mejs.video-player') : mejs.i18n.t('mejs.audio-player'); 2721 // insert description for screen readers 2722 $('<span class="mejs-offscreen">' + videoPlayerTitle + '</span>').insertBefore(t.$media); 2723 // build container 2724 t.container = 2725 $('<div id="' + t.id + '" class="mejs-container ' + (mejs.MediaFeatures.svgAsImg ? 'svg' : 'no-svg') + 2726 '" tabindex="0" role="application" aria-label="' + videoPlayerTitle + '">'+ 2727 '<div class="mejs-inner">'+ 2728 '<div class="mejs-mediaelement"></div>'+ 2729 '<div class="mejs-layers"></div>'+ 2730 '<div class="mejs-controls"></div>'+ 2731 '<div class="mejs-clear"></div>'+ 2732 '</div>' + 2733 '</div>') 2734 .addClass(t.$media[0].className) 2735 .insertBefore(t.$media) 2736 .focus(function ( e ) { 2737 if( !t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) { 2738 t.showControls(true); 2739 // In versions older than IE11, the focus causes the playbar to be displayed 2740 // if user clicks on the Play/Pause button in the control bar once it attempts 2741 // to hide it 2742 if (!t.hasMsNativeFullScreen) { 2743 // If e.relatedTarget appears before container, send focus to play button, 2744 // else send focus to last control button. 2745 var btnSelector = '.mejs-playpause-button > button'; 2746 if (mejs.Utility.isNodeAfter(e.relatedTarget, t.container[0])) { 2747 btnSelector = '.mejs-controls .mejs-button:last-child > button'; 2748 } 2749 var button = t.container.find(btnSelector); 2750 button.focus(); 2751 } 2752 } 2753 }); 2754 // When no elements in controls, hide bar completely 2755 if (!t.options.features.length) { 2756 t.container.css('background', 'transparent').find('.mejs-controls').hide(); 2757 } 2758 if (t.isVideo && t.options.stretching === 'fill' && !t.container.parent('mejs-fill-container').length) { 2759 // outer container 2760 t.outerContainer = t.$media.parent(); 2761 t.container.wrap('<div class="mejs-fill-container"/>'); 2762 } 2763 // add classes for user and content 2764 t.container.addClass( 2765 (mf.isAndroid ? 'mejs-android ' : '') + 2766 (mf.isiOS ? 'mejs-ios ' : '') + 2767 (mf.isiPad ? 'mejs-ipad ' : '') + 2768 (mf.isiPhone ? 'mejs-iphone ' : '') + 2769 (t.isVideo ? 'mejs-video ' : 'mejs-audio ') 2770 ); 2771 // move the <video/video> tag into the right spot 2772 t.container.find('.mejs-mediaelement').append(t.$media); 2773 // needs to be assigned here, after iOS remap 2774 t.node.player = t; 2775 // find parts 2776 t.controls = t.container.find('.mejs-controls'); 2777 t.layers = t.container.find('.mejs-layers'); 2778 // determine the size 2779 /* size priority: 2780 (1) videoWidth (forced), 2781 (2) style="width;height;" 2782 (3) width attribute, 2783 (4) defaultVideoWidth (for unspecified cases) 2784 */ 2785 var tagType = (t.isVideo ? 'video' : 'audio'),
2786 capsTagName = tagType.substring(0,1).toUpperCase() + tagType.substring(1); 2787 if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) { 2788 t.width = t.options[tagType + 'Width']; 2789 } else if (t.media.style.width !== '' && t.media.style.width !== null) { 2790 t.width = t.media.style.width; 2791 } else if (t.media.getAttribute('width') !== null) { 2792 t.width = t.$media.attr('width'); 2793 } else { 2794 t.width = t.options['default' + capsTagName + 'Width']; 2795 } 2796 if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) { 2797 t.height = t.options[tagType + 'Height']; 2798 } else if (t.media.style.height !== '' && t.media.style.height !== null) { 2799 t.height = t.media.style.height; 2800 } else if (t.$media[0].getAttribute('height') !== null) { 2801 t.height = t.$media.attr('height'); 2802 } else { 2803 t.height = t.options['default' + capsTagName + 'Height']; 2804 } 2805 // set the size, while we wait for the plugins to load below 2806 t.setPlayerSize(t.width, t.height); 2807 // create MediaElementShim 2808 meOptions.pluginWidth = t.width; 2809 meOptions.pluginHeight = t.height; 2810 } 2811 // Hide media completely for audio that doesn't have any features 2812 else if (!t.isVideo && !t.options.features.length) { 2813 t.$media.hide(); 2814 } 2815 // create MediaElement shim 2816 mejs.MediaElement(t.$media[0], meOptions); 2817 if (typeof(t.container) !== 'undefined' && t.options.features.length && t.controlsAreVisible) { 2818 // controls are shown when loaded 2819 t.container.trigger('controlsshown'); 2820 } 2821 }, 2822 showControls: function(doAnimation) { 2823 var t = this; 2824 doAnimation = typeof doAnimation == 'undefined' || doAnimation; 2825 if (t.controlsAreVisible) 2826 return; 2827 if (doAnimation) { 2828 t.controls 2829 .removeClass('mejs-offscreen') 2830 .stop(true, true).fadeIn(200, function() { 2831 t.controlsAreVisible = true; 2832 t.container.trigger('controlsshown'); 2833 }); 2834 // any additional controls people might add and want to hide 2835 t.container.find('.mejs-control') 2836 .removeClass('mejs-offscreen') 2837 .stop(true, true).fadeIn(200, function() {t.controlsAreVisible = true;}); 2838 } else { 2839 t.controls 2840 .removeClass('mejs-offscreen') 2841 .css('display','block'); 2842 // any additional controls people might add and want to hide 2843 t.container.find('.mejs-control') 2844 .removeClass('mejs-offscreen') 2845 .css('display','block'); 2846 t.controlsAreVisible = true; 2847 t.container.trigger('controlsshown'); 2848 } 2849 t.setControlsSize(); 2850 }, 2851 hideControls: function(doAnimation) { 2852 var t = this; 2853 doAnimation = typeof doAnimation == 'undefined' || doAnimation; 2854 if (!t.controlsAreVisible || t.options.alwaysShowControls || t.keyboardAction || t.media.paused || t.media.ended) 2855 return; 2856 if (doAnimation) { 2857 // fade out main controls 2858 t.controls.stop(true, true).fadeOut(200, function() { 2859 $(this) 2860 .addClass('mejs-offscreen') 2861 .css('display','block'); 2862 t.controlsAreVisible = false; 2863 t.container.trigger('controlshidden'); 2864 }); 2865 // any additional controls people might add and want to hide 2866 t.container.find('.mejs-control').stop(true, true).fadeOut(200, function() { 2867 $(this) 2868 .addClass('mejs-offscreen') 2869 .css('display','block'); 2870 }); 2871 } else { 2872 // hide main controls 2873 t.controls 2874 .addClass('mejs-offscreen') 2875 .css('display','block'); 2876 // hide others 2877 t.container.find('.mejs-control') 2878 .addClass('mejs-offscreen') 2879 .css('display','block'); 2880 t.controlsAreVisible = false; 2881 t.container.trigger('controlshidden'); 2882 } 2883 }, 2884 controlsTimer: null, 2885 startControlsTimer: function(timeout) { 2886 var t = this; 2887 timeout = typeof timeout != 'undefined' ? timeout : t.options.controlsTimeoutDefault; 2888 t.killControlsTimer('start'); 2889 t.controlsTimer = setTimeout(function() { 2890 // 2891 t.hideControls(); 2892 t.killControlsTimer('hide'); 2893 }, timeout); 2894 }, 2895 killControlsTimer: function(src) { 2896 var t = this; 2897 if (t.controlsTimer !== null) { 2898 clearTimeout(t.controlsTimer); 2899 delete t.controlsTimer; 2900 t.controlsTimer = null; 2901 } 2902 }, 2903 controlsEnabled: true, 2904 disableControls: function() { 2905 var t= this; 2906 t.killControlsTimer(); 2907 t.hideControls(false); 2908 this.controlsEnabled = false;
2909 }, 2910 enableControls: function() { 2911 var t= this; 2912 t.showControls(false); 2913 t.controlsEnabled = true; 2914 }, 2915 // Sets up all controls and events 2916 meReady: function(media, domNode) { 2917 2918 var 2919 t = this, 2920 mf = mejs.MediaFeatures, 2921 autoplayAttr = domNode.getAttribute('autoplay'), 2922 autoplay = !(typeof autoplayAttr == 'undefined' || autoplayAttr === null || autoplayAttr === 'false'), 2923 featureIndex, 2924 feature; 2925 // make sure it can't create itself again if a plugin reloads 2926 if (t.created) { 2927 return; 2928 } else { 2929 t.created = true; 2930 } 2931 t.media = media; 2932 t.domNode = domNode; 2933 if (!(mf.isAndroid && t.options.AndroidUseNativeControls) && !(mf.isiPad && t.options.iPadUseNativeControls) && !(mf.isiPhone && t.options.iPhoneUseNativeControls)) { 2934 // In the event that no features are specified for audio, 2935 // create only MediaElement instance rather than 2936 // doing all the work to create a full player 2937 if (!t.isVideo && !t.options.features.length) { 2938 // force autoplay for HTML5 2939 if (autoplay && media.pluginType == 'native') { 2940 t.play(); 2941 } 2942 if (t.options.success) { 2943 if (typeof t.options.success == 'string') { 2944 window[t.options.success](t.media, t.domNode, t); 2945 } else { 2946 t.options.success(t.media, t.domNode, t); 2947 } 2948 } 2949 return; 2950 } 2951 // two built in features 2952 t.buildposter(t, t.controls, t.layers, t.media); 2953 t.buildkeyboard(t, t.controls, t.layers, t.media); 2954 t.buildoverlays(t, t.controls, t.layers, t.media); 2955 // grab for use by features 2956 t.findTracks(); 2957 // add user-defined features/controls 2958 for (featureIndex in t.options.features) { 2959 feature = t.options.features[featureIndex]; 2960 if (t['build' + feature]) { 2961 try { 2962 t['build' + feature](t, t.controls, t.layers, t.media); 2963 } catch (e) { 2964 // TODO: report control error 2965 //throw e; 2966 2967 2968 } 2969 } 2970 } 2971 t.container.trigger('controlsready'); 2972 // reset all layers and controls 2973 t.setPlayerSize(t.width, t.height); 2974 t.setControlsSize(); 2975 // controls fade 2976 if (t.isVideo) { 2977 if (mejs.MediaFeatures.hasTouch && !t.options.alwaysShowControls) { 2978 // for touch devices (iOS, Android) 2979 // show/hide without animation on touch 2980 t.$media.bind('touchstart', function() { 2981 // toggle controls 2982 if (t.controlsAreVisible) { 2983 t.hideControls(false); 2984 } else { 2985 if (t.controlsEnabled) { 2986 t.showControls(false); 2987 } 2988 } 2989 }); 2990 } else { 2991 // create callback here since it needs access to current 2992 // MediaElement object 2993 t.clickToPlayPauseCallback = function() { 2994 // 2995 if (t.options.clickToPlayPause) { 2996 if (t.media.paused) { 2997 t.play(); 2998 } else { 2999 t.pause(); 3000 } 3001 var button = t.$media.closest('.mejs-container').find('.mejs-overlay-button'), 3002 pressed = button.attr('aria-pressed'); 3003 button.attr('aria-pressed', !pressed); 3004 } 3005 }; 3006 // click to play/pause 3007 t.media.addEventListener('click', t.clickToPlayPauseCallback, false); 3008 // show/hide controls 3009 t.container 3010 .bind('mouseenter', function () { 3011 if (t.controlsEnabled) { 3012 if (!t.options.alwaysShowControls ) { 3013 t.killControlsTimer('enter'); 3014 t.showControls(); 3015 t.startControlsTimer(t.options.controlsTimeoutMouseEnter); 3016 } 3017 } 3018 }) 3019 .bind('mousemove', function() { 3020 if (t.controlsEnabled) { 3021 if (!t.controlsAreVisible) { 3022 t.showControls(); 3023 } 3024 if (!t.options.alwaysShowControls) { 3025 t.startControlsTimer(t.options.controlsTimeoutMouseEnter); 3026 } 3027 } 3028 }) 3029 .bind('mouseleave', function () { 3030 if (t.controlsEnabled) { 3031 if (!t.media.paused && !t.options.alwaysShowControls) { 3032 t.startControlsTimer(t.options.controlsTimeoutMouseLeave); 3033 } 3034 } 3035 }); 3036 } 3037 if(t.options.hideVideoControlsOnLoad) { 3038 t.hideControls(false); 3039 } 3040 // check for autoplay 3041 if (autoplay && !t.options.alwaysShowControls) { 3042 t.hideControls(); 3043 } 3044 // resizer 3045 if (t.options.enableAutosize) { 3046 t.media.addEventListener('loadedmetadata', function(e) { 3047 // if the <video height> was not set and the options.videoHeight was not set 3048 // then resize to the real dimensions 3049 if (t.options.videoHeight <= 0 && t.domNode.getAttribute('height') === null && !isNaN(e.target.videoHeight)) { 3050 t.setPlayerSize(e.target.videoWidth, e.target.videoHeight); 3051 t.setControlsSize(); 3052 t.media.setVideoSize(e.target.videoWidth, e.target.videoHeight); 3053 } 3054 }, false); 3055 } 3056 } 3057 // EVENTS 3058 // FOCUS: when a video starts playing, it takes focus from other players (possibly pausing them) 3059 t.media.addEventListener('play', function() { 3060 var playerIndex; 3061 // go through all other players 3062 for (playerIndex in mejs.players) { 3063 var p = mejs.players[playerIndex]; 3064 if (p.id != t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) { 3065 p.pause(); 3066 } 3067 p.hasFocus = false;
3068 } 3069 t.hasFocus = true; 3070 },false); 3071 // ended for all 3072 t.media.addEventListener('ended', function (e) { 3073 if(t.options.autoRewind) { 3074 try{ 3075 t.media.setCurrentTime(0); 3076 // Fixing an Android stock browser bug, where "seeked" isn't fired correctly after ending the video and jumping to the beginning 3077 window.setTimeout(function(){ 3078 $(t.container).find('.mejs-overlay-loading').parent().hide(); 3079 }, 20); 3080 } catch (exp) { 3081 } 3082 } 3083 if (t.media.pluginType === 'youtube') { 3084 t.media.stop(); 3085 } else { 3086 t.media.pause(); 3087 } 3088 if (t.setProgressRail) { 3089 t.setProgressRail(); 3090 } 3091 if (t.setCurrentRail) { 3092 t.setCurrentRail(); 3093 } 3094 if (t.options.loop) { 3095 t.play(); 3096 } else if (!t.options.alwaysShowControls && t.controlsEnabled) { 3097 t.showControls(); 3098 } 3099 }, false); 3100 // resize on the first play 3101 t.media.addEventListener('loadedmetadata', function() { 3102 mejs.Utility.calculateTimeFormat(t.duration, t.options, t.options.framesPerSecond || 25); 3103 if (t.updateDuration) { 3104 t.updateDuration(); 3105 } 3106 if (t.updateCurrent) { 3107 t.updateCurrent(); 3108 } 3109 if (!t.isFullScreen) { 3110 t.setPlayerSize(t.width, t.height); 3111 t.setControlsSize(); 3112 } 3113 }, false); 3114 // Only change the time format when necessary 3115 var duration = null; 3116 t.media.addEventListener('timeupdate',function() { 3117 if (duration !== this.duration) { 3118 duration = this.duration; 3119 mejs.Utility.calculateTimeFormat(duration, t.options, t.options.framesPerSecond || 25); 3120 3121 // make sure to fill in and resize the controls (e.g., 00:00 => 01:13:15 3122 if (t.updateDuration) { 3123 t.updateDuration(); 3124 } 3125 if (t.updateCurrent) { 3126 t.updateCurrent(); 3127 } 3128 t.setControlsSize(); 3129 3130 } 3131 }, false); 3132 t.container.focusout(function (e) { 3133 if( e.relatedTarget ) { //FF is working on supporting focusout https://bugzilla.mozilla.org/show_bug.cgi?id=687787 3134 var $target = $(e.relatedTarget); 3135 if (t.keyboardAction && $target.parents('.mejs-container').length === 0) { 3136 t.keyboardAction = false; 3137 if (t.isVideo && !t.options.alwaysShowControls) { 3138 t.hideControls(true); 3139 } 3140 } 3141 } 3142 }); 3143 // webkit has trouble doing this without a delay 3144 setTimeout(function () { 3145 t.setPlayerSize(t.width, t.height); 3146 t.setControlsSize(); 3147 }, 50); 3148 // adjust controls whenever window sizes (used to be in fullscreen only) 3149 t.globalBind('resize', function() { 3150 // don't resize for fullscreen mode 3151 if ( !(t.isFullScreen || (mejs.MediaFeatures.hasTrueNativeFullScreen && document.webkitIsFullScreen)) ) { 3152 t.setPlayerSize(t.width, t.height); 3153 } 3154 // always adjust controls 3155 t.setControlsSize(); 3156 }); 3157 // This is a work-around for a bug in the YouTube iFrame player, which means 3158 // we can't use the play() API for the initial playback on iOS or Android; 3159 // user has to start playback directly by tapping on the iFrame. 3160 if (t.media.pluginType == 'youtube' && ( mf.isiOS || mf.isAndroid ) ) { 3161 t.container.find('.mejs-overlay-play').hide(); 3162 t.container.find('.mejs-poster').hide(); 3163 } 3164 } 3165 // force autoplay for HTML5 3166 if (autoplay && media.pluginType == 'native') { 3167 t.play(); 3168 } 3169 if (t.options.success) { 3170 if (typeof t.options.success == 'string') { 3171 window[t.options.success](t.media, t.domNode, t); 3172 } else { 3173 t.options.success(t.media, t.domNode, t); 3174 } 3175 } 3176 }, 3177 handleError: function(e) { 3178 var t = this; 3179 if (t.controls) { 3180 t.controls.hide(); 3181 } 3182 // Tell user that the file cannot be played 3183 if (t.options.error) { 3184 t.options.error(e); 3185 } 3186 }, 3187 setPlayerSize: function(width,height) { 3188 var t = this; 3189 if( !t.options.setDimensions ) { 3190 return false; 3191 } 3192 if (typeof width != 'undefined') { 3193 t.width = width; 3194 } 3195 if (typeof height != 'undefined') { 3196 t.height = height; 3197 } 3198 // check stretching modes 3199 switch (t.options.stretching) { 3200 case 'fill': 3201 // The 'fill' effect only makes sense on video; for audio we will set the dimensions 3202 if (t.isVideo) { 3203 this.setFillMode(); 3204 } else { 3205 this.setDimensions(t.width, t.height); 3206 } 3207 break; 3208 case 'responsive': 3209 this.setResponsiveMode(); 3210 break; 3211 case 'none': 3212 this.setDimensions(t.width, t.height); 3213 break; 3214 // This is the 'auto' mode 3215 default: 3216 if (this.hasFluidMode() === true) { 3217 this.setResponsiveMode(); 3218 } else { 3219 this.setDimensions(t.width, t.height); 3220 } 3221 break; 3222 } 3223 }, 3224 hasFluidMode: function() { 3225 var t = this; 3226 3227 // detect 100% mode - use currentStyle for IE since css() doesn't return percentages 3228 return (t.height.toString().indexOf('%') > 0 || (t.$node.css('max-width') !== 'none' && t.$node.css('max-width') !== 't.width') || (t.$node[0].currentStyle && t.$node[0].currentStyle.maxWidth === '100%')); 3229 }, 3230 setResponsiveMode: function() { 3231 var t = this; 3232 3233 // do we have the native dimensions yet? 3234 var nativeWidth = (function() { 3235 if (t.isVideo) { 3236 if (t.media.videoWidth && t.media.videoWidth > 0) { 3237 return t.media.videoWidth; 3238 } else if (t.media.getAttribute('width') !== null) { 3239 return t.media.getAttribute('width'); 3240 } else { 3241 return t.options.defaultVideoWidth; 3242 } 3243 } else { 3244 return t.options.defaultAudioWidth; 3245 } 3246 })(); 3247 3248 var nativeHeight = (function() { 3249 if (t.isVideo) { 3250 if (t.media.videoHeight && t.media.videoHeight > 0) { 3251 return t.media.videoHeight; 3252 } else if (t.media.getAttribute('height') !== null) { 3253 return t.media.getAttribute('height'); 3254 } else { 3255 return t.options.defaultVideoHeight; 3256 } 3257 } else { 3258 return t.options.defaultAudioHeight; 3259 } 3260 })(); 3261 3262 var parentWidth = t.container.parent().closest(':visible').width(), 3263 parentHeight = t.container.parent().closest(':visible').height(), 3264 newHeight = t.isVideo || !t.options.autosizeProgress ? parseInt(parentWidth * nativeHeight/nativeWidth, 10) : nativeHeight; 3265 3266 // When we use percent, the newHeight can't be calculated so we get the container height 3267 if (isNaN(newHeight) || ( parentHeight !== 0 && newHeight > parentHeight && parentHeight > nativeHeight)) { 3268 newHeight = parentHeight; 3269 } 3270 3271 if (t.container.parent().length > 0 && t.container.parent()[0].tagName.toLowerCase() === 'body') { // && t.container.siblings().count == 0) { 3272 parentWidth = $(window).width(); 3273 newHeight = $(window).height(); 3274 } 3275 3276 if ( newHeight && parentWidth ) { 3277 3278 // set outer container size 3279 t.container 3280 .width(parentWidth) 3281 .height(newHeight); 3282 3283 // set native <video> or <audio> and shims 3284 t.$media.add(t.container.find('.mejs-shim')) 3285 .width('100%') 3286 .height('100%'); 3287 3288 // if shim is ready, send the size to the embeded plugin 3289 if (t.isVideo) { 3290 if (t.media.setVideoSize) { 3291 t.media.setVideoSize(parentWidth, newHeight); 3292 } 3293 } 3294 3295 // set the layers 3296 t.layers.children('.mejs-layer') 3297 .width('100%') 3298 .height('100%'); 3299 } 3300 }, 3301 setFillMode: function() { 3302 var t = this, 3303 parent = t.outerContainer; 3304 if (!parent.width()) { 3305 parent.height(t.$media.width()); 3306 } 3307 if (!parent.height()) { 3308 parent.height(t.$media.height()); 3309 } 3310 var parentWidth = parent.width(), 3311 parentHeight = parent.height(); 3312 3313 t.setDimensions('100%', '100%'); 3314 3315 // This prevents an issue when displaying poster 3316 t.container.find('.mejs-poster img').css('display', 'block'); 3317 3318 targetElement = t.container.find('object, embed, iframe, video'); 3319 3320 // calculate new width and height 3321 var initHeight = t.height, 3322 initWidth = t.width, 3323 // scale to the target width 3324 scaleX1 = parentWidth, 3325 scaleY1 = (initHeight * parentWidth) / initWidth, 3326 // scale to the target height 3327 scaleX2 = (initWidth * parentHeight) / initHeight, 3328 scaleY2 = parentHeight, 3329 // now figure out which one we should use 3330 bScaleOnWidth = !(scaleX2 > parentWidth), 3331 finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2), 3332 finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2); 3333 3334 if (bScaleOnWidth) { 3335 targetElement.height(finalHeight).width(parentWidth); 3336 if (t.media.setVideoSize) { 3337 t.media.setVideoSize(parentWidth, finalHeight); 3338 } 3339 } else { 3340 targetElement.height(parentHeight).width(finalWidth); 3341 if (t.media.setVideoSize) { 3342 t.media.setVideoSize(finalWidth, parentHeight); 3343 } 3344 } 3345 3346 targetElement.css({
3347 'margin-left': Math.floor((parentWidth - finalWidth) / 2), 3348 'margin-top': 0 3349 }); 3350 }, 3351 3352 setDimensions: function(width, height) { 3353 var t = this; 3354 3355 t.container 3356 .width(width) 3357 .height(height); 3358 3359 t.layers.children('.mejs-layer') 3360 .width(width) 3361 .height(height); 3362 }, 3363 setControlsSize: function() { 3364 var t = this, 3365 usedWidth = 0, 3366 railWidth = 0, 3367 rail = t.controls.find('.mejs-time-rail'), 3368 total = t.controls.find('.mejs-time-total'), 3369 others = rail.siblings(), 3370 lastControl = others.last(), 3371 lastControlPosition = null, 3372 avoidAutosizeProgress = t.options && !t.options.autosizeProgress; 3373 // skip calculation if hidden 3374 if (!t.container.is(':visible') || !rail.length || !rail.is(':visible')) { 3375 return; 3376 } 3377 // allow the size to come from custom CSS 3378 if (avoidAutosizeProgress) { 3379 // Also, frontends devs can be more flexible 3380 // due the opportunity of absolute positioning. 3381 railWidth = parseInt(rail.css('width'), 10); 3382 } 3383 // attempt to autosize 3384 if (railWidth === 0 || !railWidth) { 3385 // find the size of all the other controls besides the rail 3386 others.each(function() { 3387 var $this = $(this); 3388 if ($this.css('position') != 'absolute' && $this.is(':visible')) { 3389 usedWidth += $(this).outerWidth(true); 3390 } 3391 }); 3392 // fit the rail into the remaining space 3393 railWidth = t.controls.width() - usedWidth - (rail.outerWidth(true) - rail.width()); 3394 } 3395 // resize the rail, 3396 // but then check if the last control (say, the fullscreen button) got pushed down 3397 // this often happens when zoomed 3398 do { 3399 // outer area 3400 // we only want to set an inline style with the width of the rail 3401 // if we're trying to autosize. 3402 if (!avoidAutosizeProgress) { 3403 rail.width(railWidth); 3404 } 3405 // dark space 3406 total.width(railWidth - (total.outerWidth(true) - total.width())); 3407 if (lastControl.css('position') != 'absolute') { 3408 lastControlPosition = lastControl.length ? lastControl.position() : null; 3409 railWidth--; 3410 } 3411 } while (lastControlPosition !== null && lastControlPosition.top.toFixed(2) > 0 && railWidth > 0); 3412 t.container.trigger('controlsresize'); 3413 }, 3414 buildposter: function(player, controls, layers, media) { 3415 var t = this, 3416 poster = 3417 $('<div class="mejs-poster mejs-layer">' + 3418 '</div>') 3419 .appendTo(layers), 3420 posterUrl = player.$media.attr('poster'); 3421 // prioriy goes to option (this is useful if you need to support iOS 3.x (iOS completely fails with poster) 3422 if (player.options.poster !== '') { 3423 posterUrl = player.options.poster; 3424 } 3425 // second, try the real poster 3426 if ( posterUrl ) { 3427 t.setPoster(posterUrl); 3428 } else { 3429 poster.hide(); 3430 } 3431 media.addEventListener('play',function() { 3432 poster.hide(); 3433 }, false); 3434 if(player.options.showPosterWhenEnded && player.options.autoRewind){ 3435 media.addEventListener('ended',function() { 3436 poster.show(); 3437 }, false); 3438 } 3439 }, 3440 setPoster: function(url) { 3441 var t = this, 3442 posterDiv = t.container.find('.mejs-poster'), 3443 posterImg = posterDiv.find('img'); 3444 if (posterImg.length === 0) { 3445 posterImg = $('<img width="100%" height="100%" alt="" />').appendTo(posterDiv); 3446 } 3447 posterImg.attr('src', url); 3448 posterDiv.css({'background-image' : 'url(' + url + ')'}); 3449 }, 3450 buildoverlays: function(player, controls, layers, media) { 3451 var t = this; 3452 if (!player.isVideo) 3453 return; 3454 var 3455 loading = 3456 $('<div class="mejs-overlay mejs-layer">'+ 3457 '<div class="mejs-overlay-loading"><span></span></div>'+ 3458 '</div>') 3459 .hide() // start out hidden 3460 .appendTo(layers), 3461 error = 3462 $('<div class="mejs-overlay mejs-layer">'+ 3463 '<div class="mejs-overlay-error"></div>'+ 3464 '</div>') 3465 .hide() // start out hidden 3466 .appendTo(layers), 3467 // this needs to come last so it's on top 3468 bigPlay = 3469 $('<div class="mejs-overlay mejs-layer mejs-overlay-play">'+ 3470 '<div class="mejs-overlay-button" role="button" aria-label="' + mejs.i18n.t('mejs.play') + '" aria-pressed="false"></div>'+ 3471 '</div>') 3472 .appendTo(layers) 3473 .bind('click', function() { // Removed 'touchstart' due issues on Samsung Android devices where a tap on bigPlay started and immediately stopped the video 3474 if (t.options.clickToPlayPause) { 3475 if (media.paused) { 3476 media.play(); 3477 } 3478 var button = $(this).find('.mejs-overlay-button'), 3479 pressed = button.attr('aria-pressed'); 3480 button.attr('aria-pressed', !!pressed); 3481 } 3482 }); 3483 /* 3484 if (mejs.MediaFeatures.isiOS || mejs.MediaFeatures.isAndroid) { 3485 bigPlay.remove(); 3486 loading.remove(); 3487 } 3488 */ 3489 // show/hide big play button 3490 media.addEventListener('play',function() { 3491 bigPlay.hide(); 3492 loading.hide(); 3493 controls.find('.mejs-time-buffering').hide(); 3494 error.hide(); 3495 }, false); 3496 media.addEventListener('playing', function() { 3497 bigPlay.hide(); 3498 loading.hide(); 3499 controls.find('.mejs-time-buffering').hide(); 3500 error.hide(); 3501 }, false); 3502 media.addEventListener('seeking', function() { 3503 loading.show(); 3504 controls.find('.mejs-time-buffering').show(); 3505 }, false); 3506 media.addEventListener('seeked', function() { 3507 loading.hide(); 3508 controls.find('.mejs-time-buffering').hide(); 3509 }, false); 3510 media.addEventListener('pause',function() { 3511 if (!mejs.MediaFeatures.isiPhone) { 3512 bigPlay.show(); 3513 } 3514 }, false); 3515 media.addEventListener('waiting', function() { 3516 loading.show(); 3517 controls.find('.mejs-time-buffering').show(); 3518 }, false); 3519 // show/hide loading 3520 media.addEventListener('loadeddata',function() { 3521 // for some reason Chrome is firing this event 3522 //if (mejs.MediaFeatures.isChrome && media.getAttribute && media.getAttribute('preload') === 'none') 3523 // return; 3524 loading.show(); 3525 controls.find('.mejs-time-buffering').show(); 3526 // Firing the 'canplay' event after a timeout which isn't getting fired on some Android 4.1 devices (https://github.com/johndyer/mediaelement/issues/1305) 3527 if (mejs.MediaFeatures.isAndroid) { 3528 media.canplayTimeout = window.setTimeout( 3529 function() { 3530 if (document.createEvent) { 3531 var evt = document.createEvent('HTMLEvents'); 3532 evt.initEvent('canplay', true, true); 3533 return media.dispatchEvent(evt); 3534 } 3535 }, 300 3536 ); 3537 } 3538 }, false); 3539 media.addEventListener('canplay',function() { 3540 loading.hide(); 3541 controls.find('.mejs-time-buffering').hide(); 3542 clearTimeout(media.canplayTimeout); // Clear timeout inside 'loadeddata' to prevent 'canplay' to fire twice 3543 }, false); 3544 // error handling 3545 media.addEventListener('error',function(e) { 3546 t.handleError(e); 3547 loading.hide(); 3548 bigPlay.hide(); 3549 error.show(); 3550 error.find('.mejs-overlay-error').html("Error loading this resource"); 3551 }, false); 3552 media.addEventListener('keydown', function(e) { 3553 t.onkeydown(player, media, e); 3554 }, false); 3555 }, 3556 buildkeyboard: function(player, controls, layers, media) { 3557 var t = this; 3558 t.container.keydown(function () { 3559 t.keyboardAction = true; 3560 }); 3561 // listen for key presses 3562 t.globalBind('keydown', function(event) { 3563 player.hasFocus = $(event.target).closest('.mejs-container').length !== 0 3564 && $(event.target).closest('.mejs-container').attr('id') === player.$media.closest('.mejs-container').attr('id'); 3565 return t.onkeydown(player, media, event); 3566 }); 3567 // check if someone clicked outside a player region, then kill its focus 3568 t.globalBind('click', function(event) { 3569 player.hasFocus = $(event.target).closest('.mejs-container').length !== 0; 3570 }); 3571 }, 3572 onkeydown: function(player, media, e) { 3573 if (player.hasFocus && player.options.enableKeyboard) { 3574 // find a matching key 3575 for (var i = 0, il = player.options.keyActions.length; i < il; i++) { 3576 var keyAction = player.options.keyActions[i]; 3577 for (var j = 0, jl = keyAction.keys.length; j < jl; j++) { 3578 if (e.keyCode == keyAction.keys[j]) { 3579 if (typeof(e.preventDefault) == "function") e.preventDefault(); 3580 keyAction.action(player, media, e.keyCode, e); 3581 return false;
3582 } 3583 } 3584 } 3585 } 3586 return true; 3587 }, 3588 findTracks: function() { 3589 var t = this, 3590 tracktags = t.$media.find('track'); 3591 // store for use by plugins 3592 t.tracks = []; 3593 tracktags.each(function(index, track) { 3594 track = $(track); 3595 t.tracks.push({ 3596 srclang: (track.attr('srclang')) ? track.attr('srclang').toLowerCase() : '', 3597 src: track.attr('src'), 3598 kind: track.attr('kind'), 3599 label: track.attr('label') || '', 3600 entries: [], 3601 isLoaded: false 3602 }); 3603 }); 3604 }, 3605 changeSkin: function(className) { 3606 this.container[0].className = 'mejs-container ' + className; 3607 this.setPlayerSize(this.width, this.height); 3608 this.setControlsSize(); 3609 }, 3610 play: function() { 3611 this.load(); 3612 this.media.play(); 3613 }, 3614 pause: function() { 3615 try { 3616 this.media.pause(); 3617 } catch (e) {} 3618 }, 3619 load: function() { 3620 if (!this.isLoaded) { 3621 this.media.load(); 3622 } 3623 this.isLoaded = true; 3624 }, 3625 setMuted: function(muted) { 3626 this.media.setMuted(muted); 3627 }, 3628 setCurrentTime: function(time) { 3629 this.media.setCurrentTime(time); 3630 }, 3631 getCurrentTime: function() { 3632 return this.media.currentTime; 3633 }, 3634 setVolume: function(volume) { 3635 this.media.setVolume(volume); 3636 }, 3637 getVolume: function() { 3638 return this.media.volume; 3639 }, 3640 setSrc: function(src) { 3641 var 3642 t = this; 3643 // If using YouTube, its API is different to load a specific source 3644 if (t.media.pluginType === 'youtube') { 3645 var videoId; 3646 if (typeof src !== 'string') { 3647 var i, media; 3648 for (i=0; i<src.length; i++) { 3649 media = src[i]; 3650 if (this.canPlayType(media.type)) { 3651 src = media.src; 3652 break; 3653 } 3654 } 3655 } 3656 // youtu.be url from share button 3657 if (src.lastIndexOf('youtu.be') !== -1) { 3658 videoId = src.substr(src.lastIndexOf('/') + 1); 3659 if (videoId.indexOf('?') !== -1) { 3660 videoId = videoId.substr(0, videoId.indexOf('?')); 3661 } 3662 } else { 3663 // https://www.youtube.com/watch?v= 3664 var videoIdMatch = src.match(/[?&]v=([^&#]+)|&|#|$/); 3665 if (videoIdMatch) { 3666 videoId = videoIdMatch[1]; 3667 } 3668 } 3669 if (t.media.getAttribute('autoplay') !== null) { 3670 t.media.pluginApi.loadVideoById(videoId); 3671 } else { 3672 t.media.pluginApi.cueVideoById(videoId); 3673 } 3674 } 3675 else { 3676 t.media.setSrc(src); 3677 } 3678 }, 3679 remove: function() { 3680 var t = this, featureIndex, feature; 3681 t.container.prev('.mejs-offscreen').remove(); 3682 // invoke features cleanup 3683 for (featureIndex in t.options.features) { 3684 feature = t.options.features[featureIndex]; 3685 if (t['clean' + feature]) { 3686 try { 3687 t['clean' + feature](t); 3688 } catch (e) { 3689 // TODO: report control error 3690 //throw e; 3691 // 3692 // 3693 } 3694 } 3695 } 3696 // grab video and put it back in place 3697 if (!t.isDynamic) { 3698 t.$media.prop('controls', true); 3699 // detach events from the video 3700 // TODO: detach event listeners better than this; 3701 // also detach ONLY the events attached by this plugin! 3702 t.$node.clone().insertBefore(t.container).show(); 3703 t.$node.remove(); 3704 } else { 3705 t.$node.insertBefore(t.container); 3706 } 3707 if (t.media.pluginType !== 'native') { 3708 t.media.remove(); 3709 } 3710 // Remove the player from the mejs.players object so that pauseOtherPlayers doesn't blow up when trying to pause a non existance flash api. 3711 delete mejs.players[t.id]; 3712 if (typeof t.container == 'object') { 3713 t.container.remove(); 3714 } 3715 t.globalUnbind(); 3716 delete t.node.player; 3717 }, 3718 rebuildtracks: function(){ 3719 var t = this; 3720 t.findTracks(); 3721 t.buildtracks(t, t.controls, t.layers, t.media); 3722 }, 3723 resetSize: function(){ 3724 var t = this; 3725 // webkit has trouble doing this without a delay 3726 setTimeout(function () { 3727 // 3728 t.setPlayerSize(t.width, t.height); 3729 t.setControlsSize(); 3730 }, 50); 3731 } 3732 }; 3733 (function(){ 3734 var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/; 3735 function splitEvents(events, id) { 3736 // add player ID as an event namespace so it's easier to unbind them all later 3737 var ret = {d: [], w: []}; 3738 $.each((events || '').split(' '), function(k, v){ 3739 var eventname = v + '.' + id; 3740 if (eventname.indexOf('.') === 0) { 3741 ret.d.push(eventname); 3742 ret.w.push(eventname); 3743 } 3744 else { 3745 ret[rwindow.test(v) ? 'w' : 'd'].push(eventname); 3746 } 3747 }); 3748 ret.d = ret.d.join(' '); 3749 ret.w = ret.w.join(' '); 3750 return ret; 3751 } 3752 mejs.MediaElementPlayer.prototype.globalBind = function(events, data, callback) { 3753 var t = this; 3754 var doc = t.node ? t.node.ownerDocument : document; 3755 events = splitEvents(events, t.id); 3756 if (events.d) $(doc).bind(events.d, data, callback); 3757 if (events.w) $(window).bind(events.w, data, callback); 3758 }; 3759 mejs.MediaElementPlayer.prototype.globalUnbind = function(events, callback) { 3760 var t = this; 3761 var doc = t.node ? t.node.ownerDocument : document; 3762 events = splitEvents(events, t.id); 3763 if (events.d) $(doc).unbind(events.d, callback); 3764 if (events.w) $(window).unbind(events.w, callback); 3765 }; 3766 })(); 3767 // turn into jQuery plugin 3768 if (typeof $ != 'undefined') { 3769 $.fn.mediaelementplayer = function (options) { 3770 if (options === false) { 3771 this.each(function () { 3772 var player = $(this).data('mediaelementplayer'); 3773 if (player) { 3774 player.remove(); 3775 } 3776 $(this).removeData('mediaelementplayer'); 3777 }); 3778 } 3779 else { 3780 this.each(function () { 3781 $(this).data('mediaelementplayer', new mejs.MediaElementPlayer(this, options)); 3782 }); 3783 } 3784 return this; 3785 }; 3786 $(document).ready(function() { 3787 // auto enable using JSON attribute 3788 $('.mejs-player').mediaelementplayer(); 3789 }); 3790 } 3791 // push out to window 3792 window.MediaElementPlayer = mejs.MediaElementPlayer; 3793})(mejs.$); 3794(function($) { 3795 $.extend(mejs.MepDefaults, { 3796 playText: '', 3797 pauseText: '' 3798 }); 3799 // PLAY/pause BUTTON 3800 $.extend(MediaElementPlayer.prototype, { 3801 buildplaypause: function(player, controls, layers, media) { 3802 var 3803 t = this, 3804 op = t.options, 3805 playTitle = op.playText ? op.playText : mejs.i18n.t('mejs.play'), 3806 pauseTitle = op.pauseText ? op.pauseText : mejs.i18n.t('mejs.pause'), 3807 play = 3808 $('<div class="mejs-button mejs-playpause-button mejs-play" >' + 3809 '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '"></button>' + 3810 '</div>') 3811 .appendTo(controls) 3812 .click(function(e) { 3813 e.preventDefault(); 3814 3815 if (media.paused) { 3816 media.play(); 3817 } else { 3818 media.pause(); 3819 } 3820 3821 return false;
3822 }), 3823 play_btn = play.find('button'); 3824 function togglePlayPause(which) { 3825 if ('play' === which) { 3826 play.removeClass('mejs-play').addClass('mejs-pause'); 3827 play_btn.attr({ 3828 'title': pauseTitle, 3829 'aria-label': pauseTitle 3830 }); 3831 } else { 3832 play.removeClass('mejs-pause').addClass('mejs-play'); 3833 play_btn.attr({ 3834 'title': playTitle, 3835 'aria-label': playTitle 3836 }); 3837 } 3838 }; 3839 togglePlayPause('pse'); 3840 media.addEventListener('play',function() { 3841 togglePlayPause('play'); 3842 }, false); 3843 media.addEventListener('playing',function() { 3844 togglePlayPause('play'); 3845 }, false); 3846 media.addEventListener('pause',function() { 3847 togglePlayPause('pse'); 3848 }, false); 3849 media.addEventListener('paused',function() { 3850 togglePlayPause('pse'); 3851 }, false); 3852 } 3853 }); 3854})(mejs.$); 3855(function($) { 3856 $.extend(mejs.MepDefaults, { 3857 stopText: 'Stop' 3858 }); 3859 // STOP BUTTON 3860 $.extend(MediaElementPlayer.prototype, { 3861 buildstop: function(player, controls, layers, media) { 3862 var t = this; 3863 $('<div class="mejs-button mejs-stop-button mejs-stop">' + 3864 '<button type="button" aria-controls="' + t.id + '" title="' + t.options.stopText + '" aria-label="' + t.options.stopText + '"></button>' + 3865 '</div>') 3866 .appendTo(controls) 3867 .click(function() { 3868 if (!media.paused) { 3869 media.pause(); 3870 } 3871 if (media.currentTime > 0) { 3872 media.setCurrentTime(0); 3873 media.pause(); 3874 controls.find('.mejs-time-current').width('0px'); 3875 controls.find('.mejs-time-handle').css('left', '0px'); 3876 controls.find('.mejs-time-float-current').html( mejs.Utility.secondsToTimeCode(0, player.options)); 3877 controls.find('.mejs-currenttime').html( mejs.Utility.secondsToTimeCode(0, player.options)); 3878 layers.find('.mejs-poster').show(); 3879 } 3880 }); 3881 } 3882 }); 3883})(mejs.$); 3884(function($) { 3885 $.extend(mejs.MepDefaults, { 3886 // Enable tooltip that shows time in progress bar 3887 enableProgressTooltip: true, 3888 progressHelpText: '' 3889 }); 3890 // progress/loaded bar 3891 $.extend(MediaElementPlayer.prototype, { 3892 buildprogress: function(player, controls, layers, media) { 3893 var 3894 t = this, 3895 mouseIsDown = false, 3896 mouseIsOver = false, 3897 lastKeyPressTime = 0, 3898 startedPaused = false, 3899 autoRewindInitial = player.options.autoRewind, 3900 progressTitle = t.options.progressHelpText ? t.options.progressHelpText : mejs.i18n.t('mejs.time-help-text'), 3901 tooltip = player.options.enableProgressTooltip ? '<span class="mejs-time-float">' + 3902 '<span class="mejs-time-float-current">00:00</span>' + 3903 '<span class="mejs-time-float-corner"></span>' + 3904 '</span>' : ""; 3905 $('<div class="mejs-time-rail">' + 3906 '<span class="mejs-time-total mejs-time-slider">' + 3907 //'<span class="mejs-offscreen">' + progressTitle + '</span>' + 3908 '<span class="mejs-time-buffering"></span>' + 3909 '<span class="mejs-time-loaded"></span>' + 3910 '<span class="mejs-time-current"></span>' + 3911 '<span class="mejs-time-handle"></span>' + 3912 tooltip + 3913 '</span>' + 3914 '</div>') 3915 .appendTo(controls); 3916 controls.find('.mejs-time-buffering').hide(); 3917 t.total = controls.find('.mejs-time-total'); 3918 t.loaded = controls.find('.mejs-time-loaded'); 3919 t.current = controls.find('.mejs-time-current'); 3920 t.handle = controls.find('.mejs-time-handle'); 3921 t.timefloat = controls.find('.mejs-time-float'); 3922 t.timefloatcurrent = controls.find('.mejs-time-float-current'); 3923 t.slider = controls.find('.mejs-time-slider'); 3924 var handleMouseMove = function (e) { 3925 var offset = t.total.offset(), 3926 width = t.total.width(), 3927 percentage = 0, 3928 newTime = 0, 3929 pos = 0, 3930 x; 3931 // mouse or touch position relative to the object 3932 if (e.originalEvent && e.originalEvent.changedTouches) { 3933 x = e.originalEvent.changedTouches[0].pageX; 3934 } else if (e.changedTouches) { // for Zepto 3935 x = e.changedTouches[0].pageX; 3936 } else { 3937 x = e.pageX; 3938 } 3939 if (media.duration) { 3940 if (x < offset.left) { 3941 x = offset.left; 3942 } else if (x > width + offset.left) { 3943 x = width + offset.left; 3944 } 3945 pos = x - offset.left; 3946 percentage = (pos / width); 3947 newTime = (percentage <= 0.02) ? 0 : percentage * media.duration; 3948 // seek to where the mouse is 3949 if (mouseIsDown && newTime !== media.currentTime) { 3950 media.setCurrentTime(newTime); 3951 } 3952 // position floating time box 3953 if (!mejs.MediaFeatures.hasTouch) { 3954 t.timefloat.css('left', pos); 3955 t.timefloatcurrent.html( mejs.Utility.secondsToTimeCode(newTime, player.options) ); 3956 t.timefloat.show(); 3957 } 3958 } 3959 }, 3960 // Accessibility for slider 3961 updateSlider = function (e) { 3962 var seconds = media.currentTime, 3963 timeSliderText = mejs.i18n.t('mejs.time-slider'), 3964 time = mejs.Utility.secondsToTimeCode(seconds, player.options), 3965 duration = media.duration; 3966 t.slider.attr({ 3967 'aria-label': timeSliderText, 3968 'aria-valuemin': 0, 3969 'aria-valuemax': duration, 3970 'aria-valuenow': seconds, 3971 'aria-valuetext': time, 3972 'role': 'slider', 3973 'tabindex': 0 3974 }); 3975 }, 3976 restartPlayer = function () { 3977 var now = new Date(); 3978 if (now - lastKeyPressTime >= 1000) { 3979 media.play(); 3980 } 3981 }; 3982 t.slider.bind('focus', function (e) { 3983 player.options.autoRewind = false;
3984 }); 3985 t.slider.bind('blur', function (e) { 3986 player.options.autoRewind = autoRewindInitial; 3987 }); 3988 t.slider.bind('keydown', function (e) { 3989 if ((new Date() - lastKeyPressTime) >= 1000) { 3990 startedPaused = media.paused; 3991 } 3992 var keyCode = e.keyCode, 3993 duration = media.duration, 3994 seekTime = media.currentTime, 3995 seekForward = player.options.defaultSeekForwardInterval(media), 3996 seekBackward = player.options.defaultSeekBackwardInterval(media); 3997 switch (keyCode) { 3998 case 37: // left 3999 case 40: // Down 4000 seekTime -= seekBackward; 4001 break; 4002 case 39: // Right 4003 case 38: // Up 4004 seekTime += seekForward; 4005 break; 4006 case 36: // Home 4007 seekTime = 0; 4008 break; 4009 case 35: // end 4010 seekTime = duration; 4011 break; 4012 case 32: // space 4013 case 13: // enter 4014 media.paused ? media.play() : media.pause(); 4015 return; 4016 default: 4017 return; 4018 } 4019 seekTime = seekTime < 0 ? 0 : (seekTime >= duration ? duration : Math.floor(seekTime)); 4020 lastKeyPressTime = new Date(); 4021 if (!startedPaused) { 4022 media.pause(); 4023 } 4024 if (seekTime < media.duration && !startedPaused) { 4025 setTimeout(restartPlayer, 1100); 4026 } 4027 media.setCurrentTime(seekTime); 4028 e.preventDefault(); 4029 e.stopPropagation(); 4030 return false; 4031 }); 4032 // handle clicks 4033 //controls.find('.mejs-time-rail').delegate('span', 'click', handleMouseMove); 4034 t.total 4035 .bind('mousedown touchstart', function (e) { 4036 // only handle left clicks or touch 4037 if (e.which === 1 || e.which === 0) { 4038 mouseIsDown = true; 4039 handleMouseMove(e); 4040 t.globalBind('mousemove.dur touchmove.dur', function(e) { 4041 handleMouseMove(e); 4042 }); 4043 t.globalBind('mouseup.dur touchend.dur', function (e) { 4044 mouseIsDown = false; 4045 if (typeof t.timefloat !== 'undefined') { 4046 t.timefloat.hide(); 4047 } 4048 t.globalUnbind('.dur'); 4049 }); 4050 } 4051 }) 4052 .bind('mouseenter', function(e) { 4053 mouseIsOver = true; 4054 t.globalBind('mousemove.dur', function(e) { 4055 handleMouseMove(e); 4056 }); 4057 if (typeof t.timefloat !== 'undefined' && !mejs.MediaFeatures.hasTouch) { 4058 t.timefloat.show(); 4059 } 4060 }) 4061 .bind('mouseleave',function(e) { 4062 mouseIsOver = false; 4063 if (!mouseIsDown) { 4064 t.globalUnbind('.dur'); 4065 if (typeof t.timefloat !== 'undefined') { 4066 t.timefloat.hide(); 4067 } 4068 } 4069 }); 4070 // loading 4071 media.addEventListener('progress', function (e) { 4072 player.setProgressRail(e); 4073 player.setCurrentRail(e); 4074 }, false); 4075 // current time 4076 media.addEventListener('timeupdate', function(e) { 4077 player.setProgressRail(e); 4078 player.setCurrentRail(e); 4079 updateSlider(e); 4080 }, false); 4081 t.container.on('controlsresize', function(e) { 4082 player.setProgressRail(e); 4083 player.setCurrentRail(e); 4084 }); 4085 }, 4086 setProgressRail: function(e) { 4087 var 4088 t = this, 4089 target = (e !== undefined) ? e.target : t.media, 4090 percent = null; 4091 // newest HTML5 spec has buffered array (FF4, Webkit) 4092 if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && target.duration) { 4093 // account for a real array with multiple values - always read the end of the last buffer 4094 percent = target.buffered.end(target.buffered.length - 1) / target.duration; 4095 } 4096 // Some browsers (e.g., FF3.6 and Safari 5) cannot calculate target.bufferered.end() 4097 // to be anything other than 0. If the byte count is available we use this instead. 4098 // Browsers that support the else if do not seem to have the bufferedBytes value and 4099 // should skip to there. Tested in Safari 5, Webkit head, FF3.6, Chrome 6, IE 7/8. 4100 else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) { 4101 percent = target.bufferedBytes / target.bytesTotal; 4102 } 4103 // Firefox 3 with an Ogg file seems to go this way 4104 else if (e && e.lengthComputable && e.total !== 0) { 4105 percent = e.loaded / e.total; 4106 } 4107 // finally update the progress bar 4108 if (percent !== null) { 4109 percent = Math.min(1, Math.max(0, percent)); 4110 // update loaded bar 4111 if (t.loaded && t.total) { 4112 t.loaded.width(t.total.width() * percent); 4113 } 4114 } 4115 }, 4116 setCurrentRail: function() { 4117 var t = this; 4118 4119 if (t.media.currentTime !== undefined && t.media.duration) { 4120 // update bar and handle 4121 if (t.total && t.handle) { 4122 var 4123 newWidth = Math.round(t.total.width() * t.media.currentTime / t.media.duration), 4124 handlePos = newWidth - Math.round(t.handle.outerWidth(true) / 2); 4125 t.current.width(newWidth); 4126 t.handle.css('left', handlePos); 4127 } 4128 } 4129 } 4130 }); 4131})(mejs.$); 4132(function($) { 4133 // options 4134 $.extend(mejs.MepDefaults, { 4135 duration: -1, 4136 timeAndDurationSeparator: '<span> | </span>' 4137 }); 4138 // current and duration 00:00 / 00:00 4139 $.extend(MediaElementPlayer.prototype, { 4140 buildcurrent: function(player, controls, layers, media) { 4141 var t = this; 4142 4143 $('<div class="mejs-time" role="timer" aria-live="off">' + 4144 '<span class="mejs-currenttime">' + 4145 mejs.Utility.secondsToTimeCode(0, player.options) + 4146 '</span>'+ 4147 '</div>') 4148 .appendTo(controls); 4149 4150 t.currenttime = t.controls.find('.mejs-currenttime'); 4151 media.addEventListener('timeupdate',function() { 4152 if (t.controlsAreVisible) { 4153 player.updateCurrent(); 4154 } 4155 }, false); 4156 }, 4157 buildduration: function(player, controls, layers, media) { 4158 var t = this; 4159
4160 if (controls.children().last().find('.mejs-currenttime').length > 0) { 4161 $(t.options.timeAndDurationSeparator + 4162 '<span class="mejs-duration">' + 4163 mejs.Utility.secondsToTimeCode(t.options.duration, t.options) + 4164 '</span>') 4165 .appendTo(controls.find('.mejs-time')); 4166 } else { 4167 // add class to current time 4168 controls.find('.mejs-currenttime').parent().addClass('mejs-currenttime-container'); 4169 4170 $('<div class="mejs-time mejs-duration-container">'+ 4171 '<span class="mejs-duration">' + 4172 mejs.Utility.secondsToTimeCode(t.options.duration, t.options) + 4173 '</span>' + 4174 '</div>') 4175 .appendTo(controls); 4176 } 4177 4178 t.durationD = t.controls.find('.mejs-duration'); 4179 media.addEventListener('timeupdate',function() { 4180 if (t.controlsAreVisible) { 4181 player.updateDuration(); 4182 } 4183 }, false); 4184 }, 4185 4186 updateCurrent: function() { 4187 var t = this; 4188 4189 var currentTime = t.media.currentTime; 4190 4191 if (isNaN(currentTime)) { 4192 currentTime = 0; 4193 } 4194 if (t.currenttime) { 4195 t.currenttime.html(mejs.Utility.secondsToTimeCode(currentTime, t.options)); 4196 } 4197 }, 4198 4199 updateDuration: function() { 4200 var t = this; 4201 4202 var duration = t.media.duration; 4203 if (t.options.duration > 0) { 4204 duration = t.options.duration; 4205 } 4206 4207 if (isNaN(duration)) { 4208 duration = 0; 4209 } 4210 //Toggle the long video class if the video is longer than an hour. 4211 t.container.toggleClass("mejs-long-video", duration > 3600); 4212 4213 if (t.durationD && duration > 0) { 4214 t.durationD.html(mejs.Utility.secondsToTimeCode(duration, t.options)); 4215 } 4216 } 4217 }); 4218})(mejs.$); 4219(function ($) { 4220 $.extend(mejs.MepDefaults, { 4221 muteText: mejs.i18n.t('mejs.mute-toggle'), 4222 allyVolumeControlText: mejs.i18n.t('mejs.volume-help-text'), 4223 hideVolumeOnTouchDevices: true, 4224 audioVolume: 'horizontal', 4225 videoVolume: 'vertical' 4226 }); 4227 $.extend(MediaElementPlayer.prototype, { 4228 buildvolume: function (player, controls, layers, media) { 4229 // Android and iOS don't support volume controls 4230 if ((mejs.MediaFeatures.isAndroid || mejs.MediaFeatures.isiOS) && this.options.hideVolumeOnTouchDevices) 4231 return; 4232 var t = this, 4233 mode = (t.isVideo) ? t.options.videoVolume : t.options.audioVolume, 4234 mute = (mode == 'horizontal') ? 4235 // horizontal version 4236 $('<div class="mejs-button mejs-volume-button mejs-mute">' + 4237 '<button type="button" aria-controls="' + t.id + 4238 '" title="' + t.options.muteText + 4239 '" aria-label="' + t.options.muteText + 4240 '"></button>' + 4241 '</div>' + 4242 '<a href="javascript:void(0);" class="mejs-horizontal-volume-slider">' + // outer background 4243 '<span class="mejs-offscreen">' + t.options.allyVolumeControlText + '</span>' + 4244 '<div class="mejs-horizontal-volume-total"></div>' + // line background 4245 '<div class="mejs-horizontal-volume-current"></div>' + // current volume 4246 '<div class="mejs-horizontal-volume-handle"></div>' + // handle 4247 '</a>' 4248 ) 4249 .appendTo(controls) : 4250 // vertical version 4251 $('<div class="mejs-button mejs-volume-button mejs-mute">' + 4252 '<button type="button" aria-controls="' + t.id + 4253 '" title="' + t.options.muteText + 4254 '" aria-label="' + t.options.muteText + 4255 '"></button>' + 4256 '<a href="javascript:void(0);" class="mejs-volume-slider">' + // outer background 4257 '<span class="mejs-offscreen">' + t.options.allyVolumeControlText + '</span>' + 4258 '<div class="mejs-volume-total"></div>' + // line background 4259 '<div class="mejs-volume-current"></div>' + // current volume 4260 '<div class="mejs-volume-handle"></div>' + // handle 4261 '</a>' + 4262 '</div>') 4263 .appendTo(controls), 4264 volumeSlider = t.container.find('.mejs-volume-slider, .mejs-horizontal-volume-slider'), 4265 volumeTotal = t.container.find('.mejs-volume-total, .mejs-horizontal-volume-total'), 4266 volumeCurrent = t.container.find('.mejs-volume-current, .mejs-horizontal-volume-current'), 4267 volumeHandle = t.container.find('.mejs-volume-handle, .mejs-horizontal-volume-handle'), 4268 positionVolumeHandle = function (volume, secondTry) { 4269 if (!volumeSlider.is(':visible') && typeof secondTry == 'undefined') { 4270 volumeSlider.show(); 4271 positionVolumeHandle(volume, true); 4272 volumeSlider.hide(); 4273 return; 4274 } 4275 // correct to 0-1 4276 volume = Math.max(0, volume); 4277 volume = Math.min(volume, 1); 4278 // adjust mute button style 4279 if (volume === 0) { 4280 mute.removeClass('mejs-mute').addClass('mejs-unmute'); 4281 mute.children('button').attr('title', mejs.i18n.t('mejs.unmute')).attr('aria-label', mejs.i18n.t('mejs.unmute')); 4282 } else { 4283 mute.removeClass('mejs-unmute').addClass('mejs-mute'); 4284 mute.children('button').attr('title', mejs.i18n.t('mejs.mute')).attr('aria-label', mejs.i18n.t('mejs.mute')); 4285 } 4286 // top/left of full size volume slider background 4287 var totalPosition = volumeTotal.position(); 4288 // position slider 4289 if (mode == 'vertical') { 4290 var 4291 // height of the full size volume slider background 4292 totalHeight = volumeTotal.height(), 4293 // the new top position based on the current volume 4294 // 70% volume on 100px height == top:30px 4295 newTop = totalHeight - (totalHeight * volume); 4296 // handle 4297 volumeHandle.css('top', Math.round(totalPosition.top + newTop - (volumeHandle.height() / 2))); 4298 // show the current visibility 4299 volumeCurrent.height(totalHeight - newTop); 4300 volumeCurrent.css('top', totalPosition.top + newTop); 4301 } else { 4302 var 4303 // height of the full size volume slider background 4304 totalWidth = volumeTotal.width(), 4305 // the new left position based on the current volume 4306 newLeft = totalWidth * volume; 4307 // handle 4308 volumeHandle.css('left', Math.round(totalPosition.left + newLeft - (volumeHandle.width() / 2))); 4309 // rezize the current part of the volume bar 4310 volumeCurrent.width(Math.round(newLeft)); 4311 } 4312 }, 4313 handleVolumeMove = function (e) { 4314 var volume = null, 4315 totalOffset = volumeTotal.offset(); 4316 // calculate the new volume based on the moust position 4317 if (mode === 'vertical') { 4318 var 4319 railHeight = volumeTotal.height(), 4320 newY = e.pageY - totalOffset.top; 4321 volume = (railHeight - newY) / railHeight; 4322 // the controls just hide themselves (usually when mouse moves too far up) 4323 if (totalOffset.top === 0 || totalOffset.left === 0) { 4324 return; 4325 } 4326 } else { 4327 var 4328 railWidth = volumeTotal.width(), 4329 newX = e.pageX - totalOffset.left; 4330 volume = newX / railWidth; 4331 } 4332 // ensure the volume isn't outside 0-1 4333 volume = Math.max(0, volume); 4334 volume = Math.min(volume, 1); 4335 // position the slider and handle 4336 positionVolumeHandle(volume); 4337 // set the media object (this will trigger the volumechanged event) 4338 if (volume === 0) { 4339 media.setMuted(true); 4340 } else { 4341 media.setMuted(false); 4342 } 4343 media.setVolume(volume); 4344 }, 4345 mouseIsDown = false, 4346 mouseIsOver = false;
4347 // SLIDER 4348 mute 4349 .hover(function () { 4350 volumeSlider.show(); 4351 mouseIsOver = true; 4352 }, function () { 4353 mouseIsOver = false; 4354 if (!mouseIsDown && mode == 'vertical') { 4355 volumeSlider.hide(); 4356 } 4357 }); 4358 var updateVolumeSlider = function (e) { 4359 var volume = Math.floor(media.volume * 100); 4360 volumeSlider.attr({ 4361 'aria-label': mejs.i18n.t('mejs.volume-slider'), 4362 'aria-valuemin': 0, 4363 'aria-valuemax': 100, 4364 'aria-valuenow': volume, 4365 'aria-valuetext': volume + '%', 4366 'role': 'slider', 4367 'tabindex': 0 4368 }); 4369 }; 4370 volumeSlider 4371 .bind('mouseover', function () { 4372 mouseIsOver = true; 4373 }) 4374 .bind('mousedown', function (e) { 4375 handleVolumeMove(e); 4376 t.globalBind('mousemove.vol', function (e) { 4377 handleVolumeMove(e); 4378 }); 4379 t.globalBind('mouseup.vol', function () { 4380 mouseIsDown = false; 4381 t.globalUnbind('.vol'); 4382 if (!mouseIsOver && mode == 'vertical') { 4383 volumeSlider.hide(); 4384 } 4385 }); 4386 mouseIsDown = true; 4387 return false; 4388 }) 4389 .bind('keydown', function (e) { 4390 var keyCode = e.keyCode; 4391 var volume = media.volume; 4392 switch (keyCode) { 4393 case 38: // Up 4394 volume = Math.min(volume + 0.1, 1); 4395 break; 4396 case 40: // Down 4397 volume = Math.max(0, volume - 0.1); 4398 break; 4399 default: 4400 return true; 4401 } 4402 mouseIsDown = false; 4403 positionVolumeHandle(volume); 4404 media.setVolume(volume); 4405 return false; 4406 }); 4407 // MUTE button 4408 mute.find('button').click(function () { 4409 media.setMuted(!media.muted); 4410 }); 4411 //Keyboard input 4412 mute.find('button').bind('focus', function () { 4413 volumeSlider.show(); 4414 }); 4415 // listen for volume change events from other sources 4416 media.addEventListener('volumechange', function (e) { 4417 if (!mouseIsDown) { 4418 if (media.muted) { 4419 positionVolumeHandle(0); 4420 mute.removeClass('mejs-mute').addClass('mejs-unmute'); 4421 } else { 4422 positionVolumeHandle(media.volume); 4423 mute.removeClass('mejs-unmute').addClass('mejs-mute'); 4424 } 4425 } 4426 updateVolumeSlider(e); 4427 }, false); 4428 // mutes the media and sets the volume icon muted if the initial volume is set to 0 4429 if (player.options.startVolume === 0) { 4430 media.setMuted(true); 4431 } 4432 // shim gets the startvolume as a parameter, but we have to set it on the native <video> and <audio> elements 4433 if (media.pluginType === 'native') { 4434 media.setVolume(player.options.startVolume); 4435 } 4436 t.container.on('controlsresize', function () { 4437 if (media.muted) { 4438 positionVolumeHandle(0); 4439 mute.removeClass('mejs-mute').addClass('mejs-unmute'); 4440 } else { 4441 positionVolumeHandle(media.volume); 4442 mute.removeClass('mejs-unmute').addClass('mejs-mute'); 4443 } 4444 }); 4445 } 4446 }); 4447})(mejs.$); 4448(function($) { 4449 $.extend(mejs.MepDefaults, { 4450 usePluginFullScreen: true, 4451 newWindowCallback: function() { return '';}, 4452 fullscreenText: '' 4453 }); 4454 $.extend(MediaElementPlayer.prototype, { 4455 isFullScreen: false, 4456 isNativeFullScreen: false, 4457 isInIframe: false, 4458 4459 // Possible modes 4460 // (1) 'native-native' HTML5 video + browser fullscreen (IE10+, etc.) 4461 // (2) 'plugin-native' plugin video + browser fullscreen (fails in some versions of Firefox) 4462 // (3) 'fullwindow' Full window (retains all UI) 4463 // usePluginFullScreen = true 4464 // (4) 'plugin-click' Flash 1 - click through with pointer events 4465 // (5) 'plugin-hover' Flash 2 - hover popup in flash (IE6-8) 4466 fullscreenMode: '', 4467 buildfullscreen: function(player, controls, layers, media) { 4468 if (!player.isVideo) 4469 return; 4470 4471 player.isInIframe = (window.location != window.parent.location); 4472 4473 // detect on start 4474 media.addEventListener('loadstart', function() { player.detectFullscreenMode(); }); 4475 4476 // build button 4477 var t = this, 4478 hideTimeout = null, 4479 fullscreenTitle = t.options.fullscreenText ? t.options.fullscreenText : mejs.i18n.t('mejs.fullscreen'), 4480 fullscreenBtn = 4481 $('<div class="mejs-button mejs-fullscreen-button">' + 4482 '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '"></button>' + 4483 '</div>') 4484 .appendTo(controls) 4485 .on('click', function() { 4486 4487 // toggle fullscreen 4488 var isFullScreen = (mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || player.isFullScreen; 4489 if (isFullScreen) { 4490 player.exitFullScreen(); 4491 } else { 4492 player.enterFullScreen(); 4493 } 4494 }) 4495 .on('mouseover', function() { 4496 4497 // very old browsers with a plugin 4498 if (t.fullscreenMode == 'plugin-hover') { 4499 if (hideTimeout !== null) { 4500 clearTimeout(hideTimeout); 4501 delete hideTimeout; 4502 } 4503 var buttonPos = fullscreenBtn.offset(), 4504 containerPos = player.container.offset(); 4505 media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, true); 4506 } 4507 }) 4508 .on('mouseout', function() { 4509 if (t.fullscreenMode == 'plugin-hover') { 4510 if (hideTimeout !== null) { 4511 clearTimeout(hideTimeout); 4512 delete hideTimeout; 4513 } 4514 hideTimeout = setTimeout(function() { 4515 media.hideFullscreenButton(); 4516 }, 1500); 4517 } 4518 }); 4519 4520 player.fullscreenBtn = fullscreenBtn; 4521 t.globalBind('keydown',function (e) { 4522 if (e.keyCode == 27 && ((mejs.MediaFeatures.hasTrueNativeFullScreen && mejs.MediaFeatures.isFullScreen()) || t.isFullScreen)) { 4523 player.exitFullScreen(); 4524 } 4525 }); 4526 4527 t.normalHeight = 0; 4528 t.normalWidth = 0; 4529 4530 // setup native fullscreen event 4531 if (mejs.MediaFeatures.hasTrueNativeFullScreen) { 4532 // chrome doesn't alays fire this in an iframe 4533 var fullscreenChanged = function(e) { 4534 if (player.isFullScreen) { 4535 if (mejs.MediaFeatures.isFullScreen()) { 4536 player.isNativeFullScreen = true; 4537 // reset the controls once we are fully in full screen 4538 player.setControlsSize(); 4539 } else { 4540 player.isNativeFullScreen = false;
4541 // when a user presses ESC 4542 // make sure to put the player back into place 4543 player.exitFullScreen(); 4544 } 4545 } 4546 }; 4547 player.globalBind(mejs.MediaFeatures.fullScreenEventName, fullscreenChanged); 4548 } 4549 }, 4550 4551 detectFullscreenMode: function() { 4552 4553 var t = this, 4554 mode = '', 4555 features = mejs.MediaFeatures; 4556 4557 if (features.hasTrueNativeFullScreen && t.media.pluginType === 'native') { 4558 mode = 'native-native'; 4559 } else if (features.hasTrueNativeFullScreen && t.media.pluginType !== 'native' && !features.hasFirefoxPluginMovingProblem) { 4560 mode = 'plugin-native'; 4561 } else if (t.usePluginFullScreen) { 4562 if (mejs.MediaFeatures.supportsPointerEvents) { 4563 mode = 'plugin-click'; 4564 // this needs some special setup 4565 t.createPluginClickThrough(); 4566 } else { 4567 mode = 'plugin-hover'; 4568 } 4569 4570 } else { 4571 mode = 'fullwindow'; 4572 } 4573 4574 4575 t.fullscreenMode = mode; 4576 return mode; 4577 }, 4578 4579 isPluginClickThroughCreated: false, 4580 4581 createPluginClickThrough: function() { 4582 4583 var t = this; 4584 4585 // don't build twice 4586 if (t.isPluginClickThroughCreated) { 4587 return; 4588 } 4589 // allows clicking through the fullscreen button and controls down directly to Flash 4590 /* 4591 When a user puts his mouse over the fullscreen button, we disable the controls so that mouse events can go down to flash (pointer-events) 4592 We then put a divs over the video and on either side of the fullscreen button 4593 to capture mouse movement and restore the controls once the mouse moves outside of the fullscreen button 4594 */ 4595 var fullscreenIsDisabled = false, 4596 restoreControls = function() { 4597 if (fullscreenIsDisabled) { 4598 // hide the hovers 4599 for (var i in hoverDivs) { 4600 hoverDivs[i].hide(); 4601 } 4602 // restore the control bar 4603 t.fullscreenBtn.css('pointer-events', ''); 4604 t.controls.css('pointer-events', ''); 4605 // prevent clicks from pausing video 4606 t.media.removeEventListener('click', t.clickToPlayPauseCallback); 4607 // store for later 4608 fullscreenIsDisabled = false; 4609 } 4610 }, 4611 hoverDivs = {}, 4612 hoverDivNames = ['top', 'left', 'right', 'bottom'], 4613 i, len, 4614 positionHoverDivs = function() { 4615 var fullScreenBtnOffsetLeft = fullscreenBtn.offset().left - t.container.offset().left, 4616 fullScreenBtnOffsetTop = fullscreenBtn.offset().top - t.container.offset().top, 4617 fullScreenBtnWidth = fullscreenBtn.outerWidth(true), 4618 fullScreenBtnHeight = fullscreenBtn.outerHeight(true), 4619 containerWidth = t.container.width(), 4620 containerHeight = t.container.height(); 4621 for (i in hoverDivs) { 4622 hoverDivs[i].css({position: 'absolute', top: 0, left: 0}); //, backgroundColor: '#f00'}); 4623 } 4624 // over video, but not controls 4625 hoverDivs['top'] 4626 .width( containerWidth ) 4627 .height( fullScreenBtnOffsetTop ); 4628 // over controls, but not the fullscreen button 4629 hoverDivs['left'] 4630 .width( fullScreenBtnOffsetLeft ) 4631 .height( fullScreenBtnHeight ) 4632 .css({top: fullScreenBtnOffsetTop}); 4633 // after the fullscreen button 4634 hoverDivs['right'] 4635 .width( containerWidth - fullScreenBtnOffsetLeft - fullScreenBtnWidth ) 4636 .height( fullScreenBtnHeight ) 4637 .css({top: fullScreenBtnOffsetTop, 4638 left: fullScreenBtnOffsetLeft + fullScreenBtnWidth}); 4639 // under the fullscreen button 4640 hoverDivs['bottom'] 4641 .width( containerWidth ) 4642 .height( containerHeight - fullScreenBtnHeight - fullScreenBtnOffsetTop ) 4643 .css({top: fullScreenBtnOffsetTop + fullScreenBtnHeight}); 4644 }; 4645 t.globalBind('resize', function() { 4646 positionHoverDivs(); 4647 }); 4648 for (i = 0, len = hoverDivNames.length; i < len; i++) { 4649 hoverDivs[hoverDivNames[i]] = $('<div class="mejs-fullscreen-hover" />').appendTo(t.container).mouseover(restoreControls).hide(); 4650 } 4651 // on hover, kill the fullscreen button's HTML handling, allowing clicks down to Flash 4652 fullscreenBtn.on('mouseover',function() { 4653 if (!t.isFullScreen) { 4654 var buttonPos = fullscreenBtn.offset(), 4655 containerPos = player.container.offset(); 4656 // move the button in Flash into place 4657 media.positionFullscreenButton(buttonPos.left - containerPos.left, buttonPos.top - containerPos.top, false); 4658 // allows click through
4659 t.fullscreenBtn.css('pointer-events', 'none'); 4660 t.controls.css('pointer-events', 'none'); 4661 // restore click-to-play 4662 t.media.addEventListener('click', t.clickToPlayPauseCallback); 4663 // show the divs that will restore things 4664 for (i in hoverDivs) { 4665 hoverDivs[i].show(); 4666 } 4667 positionHoverDivs(); 4668 fullscreenIsDisabled = true; 4669 } 4670 }); 4671 // restore controls anytime the user enters or leaves fullscreen 4672 media.addEventListener('fullscreenchange', function(e) { 4673 t.isFullScreen = !t.isFullScreen; 4674 // don't allow plugin click to pause video - messes with 4675 // plugin's controls 4676 if (t.isFullScreen) { 4677 t.media.removeEventListener('click', t.clickToPlayPauseCallback); 4678 } else { 4679 t.media.addEventListener('click', t.clickToPlayPauseCallback); 4680 } 4681 restoreControls(); 4682 }); 4683 // the mouseout event doesn't work on the fullscren button, because we already killed the pointer-events 4684 // so we use the document.mousemove event to restore controls when the mouse moves outside the fullscreen button 4685 t.globalBind('mousemove', function(e) { 4686 // if the mouse is anywhere but the fullsceen button, then restore it all 4687 if (fullscreenIsDisabled) { 4688 var fullscreenBtnPos = fullscreenBtn.offset(); 4689 if (e.pageY < fullscreenBtnPos.top || e.pageY > fullscreenBtnPos.top + fullscreenBtn.outerHeight(true) || 4690 e.pageX < fullscreenBtnPos.left || e.pageX > fullscreenBtnPos.left + fullscreenBtn.outerWidth(true) 4691 ) { 4692 fullscreenBtn.css('pointer-events', ''); 4693 t.controls.css('pointer-events', ''); 4694 fullscreenIsDisabled = false; 4695 } 4696 } 4697 }); 4698 t.isPluginClickThroughCreated = true; 4699 }, 4700 cleanfullscreen: function(player) { 4701 player.exitFullScreen(); 4702 }, 4703 containerSizeTimeout: null, 4704 enterFullScreen: function() { 4705 var t = this; 4706 if (mejs.MediaFeatures.isiOS && mejs.MediaFeatures.hasiOSFullScreen && typeof t.media.webkitEnterFullscreen === 'function') { 4707 t.media.webkitEnterFullscreen(); 4708 return; 4709 } 4710 // set it to not show scroll bars so 100% will work 4711 $(document.documentElement).addClass('mejs-fullscreen'); 4712 // store sizing 4713 t.normalHeight = t.container.height(); 4714 t.normalWidth = t.container.width(); 4715 // attempt to do true fullscreen 4716 if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') { 4717 mejs.MediaFeatures.requestFullScreen(t.container[0]); 4718 //return; 4719 if (t.isInIframe) { 4720 // sometimes exiting from fullscreen doesn't work 4721 // notably in Chrome <iframe>. Fixed in version 17 4722 setTimeout(function checkFullscreen() { 4723 if (t.isNativeFullScreen) { 4724 var percentErrorMargin = 0.002, // 0.2% 4725 windowWidth = $(window).width(), 4726 screenWidth = screen.width, 4727 absDiff = Math.abs(screenWidth - windowWidth), 4728 marginError = screenWidth * percentErrorMargin; 4729 // check if the video is suddenly not really fullscreen 4730 if (absDiff > marginError) { 4731 // manually exit 4732 t.exitFullScreen(); 4733 } else { 4734 // test again 4735 setTimeout(checkFullscreen, 500); 4736 } 4737 } 4738 4739 }, 1000); 4740 } 4741 4742 } else if (t.fullscreeMode == 'fullwindow') { 4743 // move into position 4744 4745 } 4746 4747 // make full size 4748 t.container 4749 .addClass('mejs-container-fullscreen') 4750 .width('100%') 4751 .height('100%'); 4752 //.css({position: 'fixed', left: 0, top: 0, right: 0, bottom: 0, overflow: 'hidden', width: '100%', height: '100%', 'z-index': 1000}); 4753 // Only needed for safari 5.1 native full screen, can cause display issues elsewhere 4754 // Actually, it seems to be needed for IE8, too 4755 //if (mejs.MediaFeatures.hasTrueNativeFullScreen) { 4756 t.containerSizeTimeout = setTimeout(function() { 4757 t.container.css({width: '100%', height: '100%'}); 4758 t.setControlsSize(); 4759 }, 500); 4760 //} 4761 if (t.media.pluginType === 'native') { 4762 t.$media 4763 .width('100%') 4764 .height('100%'); 4765 } else { 4766 t.container.find('.mejs-shim') 4767 .width('100%') 4768 .height('100%'); 4769 4770 setTimeout(function() { 4771 var win = $(window), 4772 winW = win.width(), 4773 winH = win.height(); 4774 4775 t.media.setVideoSize(winW,winH); 4776 }, 500); 4777 } 4778 t.layers.children('div') 4779 .width('100%') 4780 .height('100%'); 4781 if (t.fullscreenBtn) { 4782 t.fullscreenBtn 4783 .removeClass('mejs-fullscreen') 4784 .addClass('mejs-unfullscreen'); 4785 } 4786 t.setControlsSize(); 4787 t.isFullScreen = true; 4788 var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height); 4789 t.container.find('.mejs-captions-text').css('font-size', zoomFactor * 100 + '%'); 4790 t.container.find('.mejs-captions-text').css('line-height', 'normal'); 4791 t.container.find('.mejs-captions-position').css('bottom', '45px'); 4792 t.container.trigger('enteredfullscreen'); 4793 }, 4794 exitFullScreen: function() { 4795 var t = this; 4796 // Prevent container from attempting to stretch a second time 4797 clearTimeout(t.containerSizeTimeout); 4798 // firefox can't adjust plugins 4799 /* 4800 if (t.media.pluginType !== 'native' && mejs.MediaFeatures.isFirefox) { 4801 t.media.setFullscreen(false); 4802 //player.isFullScreen = false;
4803 return; 4804 } 4805 */ 4806 // come out of native fullscreen 4807 if (mejs.MediaFeatures.hasTrueNativeFullScreen && (mejs.MediaFeatures.isFullScreen() || t.isFullScreen)) { 4808 mejs.MediaFeatures.cancelFullScreen(); 4809 } 4810 // restore scroll bars to document 4811 $(document.documentElement).removeClass('mejs-fullscreen'); 4812 t.container 4813 .removeClass('mejs-container-fullscreen') 4814 .width(t.normalWidth) 4815 .height(t.normalHeight); 4816 if (t.media.pluginType === 'native') { 4817 t.$media 4818 .width(t.normalWidth) 4819 .height(t.normalHeight); 4820 } else { 4821 t.container.find('.mejs-shim') 4822 .width(t.normalWidth) 4823 .height(t.normalHeight); 4824 t.media.setVideoSize(t.normalWidth, t.normalHeight); 4825 } 4826 t.layers.children('div') 4827 .width(t.normalWidth) 4828 .height(t.normalHeight); 4829 t.fullscreenBtn 4830 .removeClass('mejs-unfullscreen') 4831 .addClass('mejs-fullscreen'); 4832 t.setControlsSize(); 4833 t.isFullScreen = false; 4834 t.container.find('.mejs-captions-text').css('font-size',''); 4835 t.container.find('.mejs-captions-text').css('line-height', ''); 4836 t.container.find('.mejs-captions-position').css('bottom', ''); 4837 t.container.trigger('exitedfullscreen'); 4838 } 4839 }); 4840})(mejs.$); 4841(function($) { 4842 // Speed 4843 $.extend(mejs.MepDefaults, { 4844 // We also support to pass object like this: 4845 // [{name: 'Slow', value: '0.75'}, {name: 'Normal', value: '1.00'}, ...] 4846 speeds: ['2.00', '1.50', '1.25', '1.00', '0.75'], 4847 defaultSpeed: '1.00', 4848 4849 speedChar: 'x' 4850 }); 4851 $.extend(MediaElementPlayer.prototype, { 4852 buildspeed: function(player, controls, layers, media) { 4853 var t = this; 4854 if (t.media.pluginType == 'native') { 4855 var 4856 speedButton = null, 4857 speedSelector = null, 4858 playbackSpeed = null, 4859 inputId = null; 4860 var speeds = []; 4861 var defaultInArray = false; 4862 for (var i=0, len=t.options.speeds.length; i < len; i++) { 4863 var s = t.options.speeds[i]; 4864 if (typeof(s) === 'string'){ 4865 speeds.push({ 4866 name: s + t.options.speedChar, 4867 value: s 4868 }); 4869 if(s === t.options.defaultSpeed) { 4870 defaultInArray = true; 4871 } 4872 } 4873 else { 4874 speeds.push(s); 4875 if(s.value === t.options.defaultSpeed) { 4876 defaultInArray = true; 4877 } 4878 } 4879 } 4880 if (!defaultInArray) { 4881 speeds.push({ 4882 name: t.options.defaultSpeed + t.options.speedChar, 4883 value: t.options.defaultSpeed 4884 }); 4885 } 4886 speeds.sort(function(a, b) { 4887 return parseFloat(b.value) - parseFloat(a.value); 4888 }); 4889 var getSpeedNameFromValue = function(value) { 4890 for(i=0,len=speeds.length; i <len; i++) { 4891 if (speeds[i].value === value) { 4892 return speeds[i].name; 4893 } 4894 } 4895 }; 4896 var html = '<div class="mejs-button mejs-speed-button">' + 4897 '<button type="button">' + getSpeedNameFromValue(t.options.defaultSpeed) + '</button>' + 4898 '<div class="mejs-speed-selector">' + 4899 '<ul>'; 4900 for (i = 0, il = speeds.length; i<il; i++) { 4901 inputId = t.id + '-speed-' + speeds[i].value; 4902 html += '<li>' + 4903 '<input type="radio" name="speed" ' + 4904 'value="' + speeds[i].value + '" ' + 4905 'id="' + inputId + '" ' + 4906 (speeds[i].value === t.options.defaultSpeed ? ' checked' : '') + 4907 ' />' + 4908 '<label for="' + inputId + '" ' + 4909 (speeds[i].value === t.options.defaultSpeed ? ' class="mejs-speed-selected"' : '') + 4910 '>' + speeds[i].name + '</label>' + 4911 '</li>'; 4912 } 4913 html += '</ul></div></div>'; 4914 speedButton = $(html).appendTo(controls); 4915 speedSelector = speedButton.find('.mejs-speed-selector'); 4916 playbackSpeed = t.options.defaultSpeed; 4917 media.addEventListener('loadedmetadata', function(e) { 4918 if (playbackSpeed) { 4919 media.playbackRate = parseFloat(playbackSpeed); 4920 } 4921 }, true); 4922 speedSelector 4923 .on('click', 'input[type="radio"]', function() { 4924 var newSpeed = $(this).attr('value'); 4925 playbackSpeed = newSpeed; 4926 media.playbackRate = parseFloat(newSpeed); 4927 speedButton.find('button').html(getSpeedNameFromValue(newSpeed)); 4928 speedButton.find('.mejs-speed-selected').removeClass('mejs-speed-selected'); 4929 speedButton.find('input[type="radio"]:checked').next().addClass('mejs-speed-selected'); 4930 }); 4931 speedButton 4932 .one( 'mouseenter focusin', function() { 4933 speedSelector 4934 .height( 4935 speedButton.find('.mejs-speed-selector ul').outerHeight(true) + 4936 speedButton.find('.mejs-speed-translations').outerHeight(true)) 4937 .css('top', (-1 * speedSelector.height()) + 'px'); 4938 }); 4939 } 4940 } 4941 }); 4942})(mejs.$); 4943(function($) { 4944 // add extra default options 4945 $.extend(mejs.MepDefaults, { 4946 // this will automatically turn on a <track> 4947 startLanguage: '', 4948 tracksText: '', 4949 // By default, no WAI-ARIA live region - don't make a 4950 // screen reader speak captions over an audio track. 4951 tracksAriaLive: false, 4952 // option to remove the [cc] button when no <track kind="subtitles"> are present 4953 hideCaptionsButtonWhenEmpty: true, 4954 // If true and we only have one track, change captions to popup 4955 toggleCaptionsButtonWhenOnlyOne: false, 4956 // #id or .class 4957 slidesSelector: '' 4958 }); 4959 $.extend(MediaElementPlayer.prototype, { 4960 hasChapters: false, 4961 cleartracks: function(player, controls, layers, media){ 4962 if(player) { 4963 if(player.captions) player.captions.remove(); 4964 if(player.chapters) player.chapters.remove(); 4965 if(player.captionsText) player.captionsText.remove(); 4966 if(player.captionsButton) player.captionsButton.remove(); 4967 } 4968 }, 4969 buildtracks: function(player, controls, layers, media) { 4970 if (player.tracks.length === 0) 4971 return; 4972 var t = this, 4973 attr = t.options.tracksAriaLive ? 4974 'role="log" aria-live="assertive" aria-atomic="false"' : '', 4975 tracksTitle = t.options.tracksText ? t.options.tracksText : mejs.i18n.t('mejs.captions-subtitles'), 4976 i, 4977 kind; 4978 if (t.domNode.textTracks) { // if browser will do native captions, prefer mejs captions, loop through tracks and hide 4979 for (i = t.domNode.textTracks.length - 1; i >= 0; i--) { 4980 t.domNode.textTracks[i].mode = "hidden"; 4981 } 4982 } 4983 t.cleartracks(player, controls, layers, media); 4984 player.chapters = 4985 $('<div class="mejs-chapters mejs-layer"></div>') 4986 .prependTo(layers).hide(); 4987 player.captions = 4988 $('<div class="mejs-captions-layer mejs-layer"><div class="mejs-captions-position mejs-captions-position-hover" ' + 4989 attr + '><span class="mejs-captions-text"></span></div></div>') 4990 .prependTo(layers).hide(); 4991 player.captionsText = player.captions.find('.mejs-captions-text'); 4992 player.captionsButton = 4993 $('<div class="mejs-button mejs-captions-button">'+ 4994 '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '"></button>'+ 4995 '<div class="mejs-captions-selector">'+ 4996 '<ul>'+ 4997 '<li>'+ 4998 '<input type="radio" name="' + player.id + '_captions" id="' + player.id + '_captions_none" value="none" checked="checked" />' + 4999 '<label for="' + player.id + '_captions_none">' + mejs.i18n.t('mejs.none') +'</label>'+ 5000 '</li>' + 5001 '</ul>'+ 5002 '</div>'+ 5003 '</div>') 5004 .appendTo(controls); 5005 var subtitleCount = 0; 5006 for (i=0; i<player.tracks.length; i++) { 5007 kind = player.tracks[i].kind; 5008 if (kind === 'subtitles' || kind === 'captions') { 5009 subtitleCount++; 5010 } 5011 } 5012 // if only one language then just make the button a toggle 5013 if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount == 1){ 5014 // click 5015 player.captionsButton.on('click',function() { 5016 if (player.selectedTrack === null) { 5017 lang = player.tracks[0].srclang; 5018 } else { 5019 lang = 'none'; 5020 } 5021 player.setTrack(lang); 5022 }); 5023 } else { 5024 // hover or keyboard focus 5025 player.captionsButton.on( 'mouseenter focusin', function() { 5026 $(this).find('.mejs-captions-selector').removeClass('mejs-offscreen'); 5027 }) 5028 // handle clicks to the language radio buttons 5029 .on('click','input[type=radio]',function() { 5030 lang = this.value; 5031 player.setTrack(lang); 5032 }); 5033 player.captionsButton.on( 'mouseleave focusout', function() { 5034 $(this).find(".mejs-captions-selector").addClass("mejs-offscreen"); 5035 }); 5036 } 5037 if (!player.options.alwaysShowControls) { 5038 // move with controls 5039 player.container 5040 .bind('controlsshown', function () { 5041 // push captions above controls 5042 player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover'); 5043 }) 5044 .bind('controlshidden', function () { 5045 if (!media.paused) { 5046 // move back to normal place 5047 player.container.find('.mejs-captions-position').removeClass('mejs-captions-position-hover'); 5048 } 5049 }); 5050 } else { 5051 player.container.find('.mejs-captions-position').addClass('mejs-captions-position-hover'); 5052 } 5053 player.trackToLoad = -1; 5054 player.selectedTrack = null; 5055 player.isLoadingTrack = false;
5056 // add to list 5057 for (i=0; i<player.tracks.length; i++) { 5058 kind = player.tracks[i].kind; 5059 if (kind === 'subtitles' || kind === 'captions') { 5060 player.addTrackButton(player.tracks[i].srclang, player.tracks[i].label); 5061 } 5062 } 5063 // start loading tracks 5064 player.loadNextTrack(); 5065 media.addEventListener('timeupdate',function() { 5066 player.displayCaptions(); 5067 }, false); 5068 if (player.options.slidesSelector !== '') { 5069 player.slidesContainer = $(player.options.slidesSelector); 5070 media.addEventListener('timeupdate',function() { 5071 player.displaySlides(); 5072 }, false); 5073 } 5074 media.addEventListener('loadedmetadata', function() { 5075 player.displayChapters(); 5076 }, false); 5077 player.container.hover( 5078 function () { 5079 // chapters 5080 if (player.hasChapters) { 5081 player.chapters.removeClass('mejs-offscreen'); 5082 player.chapters.fadeIn(200).height(player.chapters.find('.mejs-chapter').outerHeight()); 5083 } 5084 }, 5085 function () { 5086 if (player.hasChapters && !media.paused) { 5087 player.chapters.fadeOut(200, function() { 5088 $(this).addClass('mejs-offscreen'); 5089 $(this).css('display','block'); 5090 }); 5091 } 5092 }); 5093 t.container.on('controlsresize', function() { 5094 t.adjustLanguageBox(); 5095 }); 5096 // check for autoplay 5097 if (player.node.getAttribute('autoplay') !== null) { 5098 player.chapters.addClass('mejs-offscreen'); 5099 } 5100 }, 5101 setTrack: function(lang){ 5102 var t = this, 5103 i; 5104 if (lang == 'none') { 5105 t.selectedTrack = null; 5106 t.captionsButton.removeClass('mejs-captions-enabled'); 5107 } else { 5108 for (i=0; i<t.tracks.length; i++) { 5109 if (t.tracks[i].srclang == lang) { 5110 if (t.selectedTrack === null) 5111 t.captionsButton.addClass('mejs-captions-enabled'); 5112 t.selectedTrack = t.tracks[i]; 5113 t.captions.attr('lang', t.selectedTrack.srclang); 5114 t.displayCaptions(); 5115 break; 5116 } 5117 } 5118 } 5119 }, 5120 loadNextTrack: function() { 5121 var t = this; 5122 t.trackToLoad++; 5123 if (t.trackToLoad < t.tracks.length) { 5124 t.isLoadingTrack = true; 5125 t.loadTrack(t.trackToLoad); 5126 } else { 5127 // add done? 5128 t.isLoadingTrack = false; 5129 t.checkForTracks(); 5130 } 5131 }, 5132 loadTrack: function(index){ 5133 var 5134 t = this, 5135 track = t.tracks[index], 5136 after = function() { 5137 track.isLoaded = true; 5138 t.enableTrackButton(track.srclang, track.label); 5139 t.loadNextTrack(); 5140 }; 5141 if (track.src !== undefined || track.src !== "") { 5142 $.ajax({ 5143 url: track.src, 5144 dataType: "text", 5145 success: function(d) { 5146 // parse the loaded file 5147 if (typeof d == "string" && (/<tt\s+xml/ig).exec(d)) { 5148 track.entries = mejs.TrackFormatParser.dfxp.parse(d); 5149 } else { 5150 track.entries = mejs.TrackFormatParser.webvtt.parse(d); 5151 } 5152 after(); 5153 if (track.kind == 'chapters') { 5154 t.media.addEventListener('play', function() { 5155 if (t.media.duration > 0) { 5156 t.displayChapters(track); 5157 } 5158 }, false); 5159 } 5160 if (track.kind == 'slides') { 5161 t.setupSlides(track); 5162 } 5163 }, 5164 error: function() { 5165 t.removeTrackButton(track.srclang); 5166 t.loadNextTrack(); 5167 } 5168 }); 5169 } 5170 }, 5171 enableTrackButton: function(lang, label) { 5172 var t = this; 5173 if (label === '') { 5174 label = mejs.language.codes[lang] || lang; 5175 } 5176 t.captionsButton 5177 .find('input[value=' + lang + ']') 5178 .prop('disabled',false) 5179 .siblings('label') 5180 .html( label ); 5181 // auto select 5182 if (t.options.startLanguage == lang) { 5183 $('#' + t.id + '_captions_' + lang).prop('checked', true).trigger('click'); 5184 } 5185 t.adjustLanguageBox(); 5186 }, 5187 removeTrackButton: function(lang) { 5188 var t = this; 5189 t.captionsButton.find('input[value=' + lang + ']').closest('li').remove(); 5190 t.adjustLanguageBox(); 5191 }, 5192 addTrackButton: function(lang, label) { 5193 var t = this; 5194 if (label === '') { 5195 label = mejs.language.codes[lang] || lang; 5196 } 5197 t.captionsButton.find('ul').append( 5198 $('<li>'+ 5199 '<input type="radio" name="' + t.id + '_captions" id="' + t.id + '_captions_' + lang + '" value="' + lang + '" disabled="disabled" />' + 5200 '<label for="' + t.id + '_captions_' + lang + '">' + label + ' (loading)' + '</label>'+ 5201 '</li>') 5202 ); 5203 t.adjustLanguageBox(); 5204 // remove this from the dropdownlist (if it exists) 5205 t.container.find('.mejs-captions-translations option[value=' + lang + ']').remove(); 5206 }, 5207 adjustLanguageBox:function() { 5208 var t = this; 5209 // adjust the size of the outer box 5210 t.captionsButton.find('.mejs-captions-selector').height( 5211 t.captionsButton.find('.mejs-captions-selector ul').outerHeight(true) + 5212 t.captionsButton.find('.mejs-captions-translations').outerHeight(true) 5213 ); 5214 }, 5215 checkForTracks: function() { 5216 var 5217 t = this, 5218 hasSubtitles = false;
5219 // check if any subtitles 5220 if (t.options.hideCaptionsButtonWhenEmpty) { 5221 for (var i=0; i<t.tracks.length; i++) { 5222 var kind = t.tracks[i].kind; 5223 if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) { 5224 hasSubtitles = true; 5225 break; 5226 } 5227 } 5228 if (!hasSubtitles) { 5229 t.captionsButton.hide(); 5230 t.setControlsSize(); 5231 } 5232 } 5233 }, 5234 displayCaptions: function() { 5235 if (typeof this.tracks == 'undefined') 5236 return; 5237 var 5238 t = this, 5239 i, 5240 track = t.selectedTrack; 5241 if (track !== null && track.isLoaded) { 5242 for (i=0; i<track.entries.times.length; i++) { 5243 if (t.media.currentTime >= track.entries.times[i].start && t.media.currentTime <= track.entries.times[i].stop) { 5244 // Set the line before the timecode as a class so the cue can be targeted if needed 5245 t.captionsText.html(track.entries.text[i]).attr('class', 'mejs-captions-text ' + (track.entries.times[i].identifier || '')); 5246 t.captions.show().height(0); 5247 return; // exit out if one is visible; 5248 } 5249 } 5250 t.captions.hide(); 5251 } else { 5252 t.captions.hide(); 5253 } 5254 }, 5255 setupSlides: function(track) { 5256 var t = this; 5257 t.slides = track; 5258 t.slides.entries.imgs = [t.slides.entries.text.length]; 5259 t.showSlide(0); 5260 }, 5261 showSlide: function(index) { 5262 if (typeof this.tracks == 'undefined' || typeof this.slidesContainer == 'undefined') { 5263 return; 5264 } 5265 var t = this, 5266 url = t.slides.entries.text[index], 5267 img = t.slides.entries.imgs[index]; 5268 if (typeof img == 'undefined' || typeof img.fadeIn == 'undefined') { 5269 t.slides.entries.imgs[index] = img = $('<img src="' + url + '">') 5270 .on('load', function() { 5271 img.appendTo(t.slidesContainer) 5272 .hide() 5273 .fadeIn() 5274 .siblings(':visible') 5275 .fadeOut(); 5276 }); 5277 } else { 5278 if (!img.is(':visible') && !img.is(':animated')) { 5279 // 5280 img.fadeIn() 5281 .siblings(':visible') 5282 .fadeOut(); 5283 } 5284 } 5285 }, 5286 displaySlides: function() { 5287 if (typeof this.slides == 'undefined') 5288 return; 5289 var 5290 t = this, 5291 slides = t.slides, 5292 i; 5293 for (i=0; i<slides.entries.times.length; i++) { 5294 if (t.media.currentTime >= slides.entries.times[i].start && t.media.currentTime <= slides.entries.times[i].stop){ 5295 t.showSlide(i); 5296 return; // exit out if one is visible; 5297 } 5298 } 5299 }, 5300 displayChapters: function() { 5301 var 5302 t = this, 5303 i; 5304 for (i=0; i<t.tracks.length; i++) { 5305 if (t.tracks[i].kind == 'chapters' && t.tracks[i].isLoaded) { 5306 t.drawChapters(t.tracks[i]); 5307 t.hasChapters = true; 5308 break; 5309 } 5310 } 5311 }, 5312 drawChapters: function(chapters) { 5313 var 5314 t = this, 5315 i, 5316 dur, 5317 //width, 5318 //left, 5319 percent = 0, 5320 usedPercent = 0; 5321 t.chapters.empty(); 5322 for (i=0; i<chapters.entries.times.length; i++) { 5323 dur = chapters.entries.times[i].stop - chapters.entries.times[i].start; 5324 percent = Math.floor(dur / t.media.duration * 100); 5325 if (percent + usedPercent > 100 || // too large 5326 i == chapters.entries.times.length-1 && percent + usedPercent < 100) // not going to fill it in 5327 { 5328 percent = 100 - usedPercent; 5329 } 5330 //width = Math.floor(t.width * dur / t.media.duration); 5331 //left = Math.floor(t.width * chapters.entries.times[i].start / t.media.duration); 5332 //if (left + width > t.width) { 5333 // width = t.width - left; 5334 //} 5335 t.chapters.append( $( 5336 '<div class="mejs-chapter" rel="' + chapters.entries.times[i].start + '" style="left: ' + usedPercent.toString() + '%;width: ' + percent.toString() + '%;">' + 5337 '<div class="mejs-chapter-block' + ((i==chapters.entries.times.length-1) ? ' mejs-chapter-block-last' : '') + '">' + 5338 '<span class="ch-title">' + chapters.entries.text[i] + '</span>' + 5339 '<span class="ch-time">' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].start, t.options) + '–' + mejs.Utility.secondsToTimeCode(chapters.entries.times[i].stop, t.options) + '</span>' + 5340 '</div>' + 5341 '</div>')); 5342 usedPercent += percent; 5343 } 5344 t.chapters.find('div.mejs-chapter').click(function() { 5345 t.media.setCurrentTime( parseFloat( $(this).attr('rel') ) ); 5346 if (t.media.paused) { 5347 t.media.play(); 5348 } 5349 }); 5350 t.chapters.show(); 5351 } 5352 }); 5353 mejs.language = { 5354 codes: { 5355 af:'Afrikaans', 5356 sq:'Albanian', 5357 ar:'Arabic', 5358 be:'Belarusian', 5359 bg:'Bulgarian', 5360 ca:'Catalan', 5361 zh:'Chinese', 5362 'zh-cn':'Chinese Simplified', 5363 'zh-tw':'Chinese Traditional', 5364 hr:'Croatian', 5365 cs:'Czech', 5366 da:'Danish', 5367 nl:'Dutch', 5368 en:'English', 5369 et:'Estonian', 5370 fl:'Filipino', 5371 fi:'Finnish', 5372 fr:'French', 5373 gl:'Galician', 5374 de:'Deutsch', 5375 el:'Greek', 5376 ht:'Haitian Creole', 5377 iw:'Hebrew', 5378 hi:'Hindi', 5379 hu:'Hungarian', 5380 is:'Icelandic', 5381 id:'Indonesian', 5382 ga:'Irish', 5383 it:'Italian', 5384 ja:'Japanese', 5385 ko:'Korean', 5386 lv:'Latvian', 5387 lt:'Lithuanian', 5388 mk:'Macedonian', 5389 ms:'Malay', 5390 mt:'Maltese', 5391 no:'Norwegian', 5392 fa:'Persian', 5393 pl:'Polish', 5394 pt:'Portuguese', 5395 // 'pt-pt':'Portuguese (Portugal)', 5396 ro:'Romanian', 5397 ru:'Russian', 5398 sr:'Serbian', 5399 sk:'Slovak', 5400 sl:'Slovenian', 5401 es:'Spanish', 5402 sw:'Swahili', 5403 sv:'Swedish', 5404 tl:'Tagalog', 5405 th:'Thai', 5406 tr:'Turkish', 5407 uk:'Ukrainian', 5408 vi:'Vietnamese', 5409 cy:'Welsh', 5410 yi:'Yiddish' 5411 } 5412 }; 5413 /* 5414 Parses WebVTT format which should be formatted as 5415 ================================ 5416 WEBVTT 5417 1 5418 00:00:01,1 --> 00:00:05,000 5419 A line of text 5420 2 5421 00:01:15,1 --> 00:02:05,000 5422 A second line of text 5423 =============================== 5424 Adapted from: http://www.delphiki.com/html5/playr 5425 */ 5426 mejs.TrackFormatParser = { 5427 webvtt: {
5428 pattern_timecode: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/, 5429 parse: function(trackText) { 5430 var 5431 i = 0, 5432 lines = mejs.TrackFormatParser.split2(trackText, /\r?\n/), 5433 entries = {text:[], times:[]}, 5434 timecode, 5435 text, 5436 identifier; 5437 for(; i<lines.length; i++) { 5438 timecode = this.pattern_timecode.exec(lines[i]); 5439 if (timecode && i<lines.length) { 5440 if ((i - 1) >= 0 && lines[i - 1] !== '') { 5441 identifier = lines[i - 1]; 5442 } 5443 i++; 5444 // grab all the (possibly multi-line) text that follows 5445 text = lines[i]; 5446 i++; 5447 while(lines[i] !== '' && i<lines.length){ 5448 text = text + '\n' + lines[i]; 5449 i++; 5450 } 5451 text = $.trim(text).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); 5452 // Text is in a different array so I can use .join 5453 entries.text.push(text); 5454 entries.times.push( 5455 { 5456 identifier: identifier, 5457 start: (mejs.Utility.convertSMPTEtoSeconds(timecode[1]) === 0) ? 0.200 : mejs.Utility.convertSMPTEtoSeconds(timecode[1]), 5458 stop: mejs.Utility.convertSMPTEtoSeconds(timecode[3]), 5459 settings: timecode[5] 5460 }); 5461 } 5462 identifier = ''; 5463 } 5464 return entries; 5465 } 5466 }, 5467 // Thanks to Justin Capella: https://github.com/johndyer/mediaelement/pull/420 5468 dfxp: { 5469 parse: function(trackText) { 5470 trackText = $(trackText).filter("tt"); 5471 var 5472 i = 0, 5473 container = trackText.children("div").eq(0), 5474 lines = container.find("p"), 5475 styleNode = trackText.find("#" + container.attr("style")), 5476 styles, 5477 text, 5478 entries = {text:[], times:[]}; 5479 if (styleNode.length) { 5480 var attributes = styleNode.removeAttr("id").get(0).attributes; 5481 if (attributes.length) { 5482 styles = {}; 5483 for (i = 0; i < attributes.length; i++) { 5484 styles[attributes[i].name.split(":")[1]] = attributes[i].value; 5485 } 5486 } 5487 } 5488 for(i = 0; i<lines.length; i++) { 5489 var style; 5490 var _temp_times = { 5491 start: null, 5492 stop: null, 5493 style: null 5494 }; 5495 if (lines.eq(i).attr("begin")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("begin")); 5496 if (!_temp_times.start && lines.eq(i-1).attr("end")) _temp_times.start = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i-1).attr("end")); 5497 if (lines.eq(i).attr("end")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i).attr("end")); 5498 if (!_temp_times.stop && lines.eq(i+1).attr("begin")) _temp_times.stop = mejs.Utility.convertSMPTEtoSeconds(lines.eq(i+1).attr("begin")); 5499 if (styles) { 5500 style = ""; 5501 for (var _style in styles) { 5502 style += _style + ":" + styles[_style] + ";"; 5503 } 5504 } 5505 if (style) _temp_times.style = style; 5506 if (_temp_times.start === 0) _temp_times.start = 0.200; 5507 entries.times.push(_temp_times); 5508 text = $.trim(lines.eq(i).html()).replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>"); 5509 entries.text.push(text); 5510 } 5511 return entries; 5512 } 5513 }, 5514 split2: function (text, regex) { 5515 // normal version for compliant browsers 5516 // see below for IE fix 5517 return text.split(regex); 5518 } 5519 }; 5520 // test for browsers with bad String.split method. 5521 if ('x\n\ny'.split(/\n/gi).length != 3) { 5522 // add super slow IE8 and below version 5523 mejs.TrackFormatParser.split2 = function(text, regex) { 5524 var 5525 parts = [], 5526 chunk = '', 5527 i; 5528 for (i=0; i<text.length; i++) { 5529 chunk += text.substring(i,i+1); 5530 if (regex.test(chunk)) { 5531 parts.push(chunk.replace(regex, '')); 5532 chunk = ''; 5533 } 5534 } 5535 parts.push(chunk); 5536 return parts; 5537 }; 5538 } 5539})(mejs.$); 5540// Source Chooser Plugin 5541(function($) { 5542 $.extend(mejs.MepDefaults, { 5543 sourcechooserText: '' 5544 }); 5545 $.extend(MediaElementPlayer.prototype, { 5546 buildsourcechooser: function(player, controls, layers, media) { 5547 var 5548 t = this, 5549 sourceTitle = t.options.sourcechooserText ? t.options.sourcechooserText : mejs.i18n.t('mejs.source-chooser'), 5550 hoverTimeout 5551 ; 5552 player.sourcechooserButton = 5553 $('<div class="mejs-button mejs-sourcechooser-button">'+ 5554 '<button type="button" role="button" aria-haspopup="true" aria-owns="' + t.id + '" title="' + sourceTitle + '" aria-label="' + sourceTitle + '"></button>'+ 5555 '<div class="mejs-sourcechooser-selector mejs-offscreen" role="menu" aria-expanded="false" aria-hidden="true">'+ 5556 '<ul>'+ 5557 '</ul>'+ 5558 '</div>'+ 5559 '</div>') 5560 .appendTo(controls) 5561 // hover 5562 .hover(function() { 5563 clearTimeout(hoverTimeout); 5564 player.showSourcechooserSelector(); 5565 }, function() { 5566 var self = $(this); 5567 hoverTimeout = setTimeout(function () { 5568 player.hideSourcechooserSelector(); 5569 }, 500); 5570 }) 5571 // keyboard menu activation 5572 .on('keydown', function (e) { 5573 var keyCode = e.keyCode; 5574 switch (keyCode) { 5575 case 32: // space 5576 if (!mejs.MediaFeatures.isFirefox) { // space sends the click event in Firefox 5577 player.showSourcechooserSelector(); 5578 } 5579 $(this).find('.mejs-sourcechooser-selector') 5580 .find('input[type=radio]:checked').first().focus(); 5581 break; 5582 case 13: // enter 5583 player.showSourcechooserSelector(); 5584 $(this).find('.mejs-sourcechooser-selector') 5585 .find('input[type=radio]:checked').first().focus(); 5586 break; 5587 case 27: // esc 5588 player.hideSourcechooserSelector(); 5589 $(this).find('button').focus(); 5590 break; 5591 default: 5592 return true; 5593 } 5594 }) 5595 // close menu when tabbing away 5596 .on('focusout', mejs.Utility.debounce(function (e) { // Safari triggers focusout multiple times 5597 // Firefox does NOT support e.relatedTarget to see which element 5598 // just lost focus, so wait to find the next focused element 5599 setTimeout(function () { 5600 var parent = $(document.activeElement).closest('.mejs-sourcechooser-selector'); 5601 if (!parent.length) { 5602 // focus is outside the control; close menu 5603 player.hideSourcechooserSelector(); 5604 } 5605 }, 0); 5606 }, 100)) 5607 // handle clicks to the source radio buttons 5608 .delegate('input[type=radio]', 'click', function() { 5609 // set aria states 5610 $(this).attr('aria-selected', true).attr('checked', 'checked'); 5611 $(this).closest('.mejs-sourcechooser-selector').find('input[type=radio]').not(this).attr('aria-selected', 'false').removeAttr('checked'); 5612 var src = this.value; 5613 if (media.currentSrc != src) { 5614 var currentTime = media.currentTime; 5615 var paused = media.paused; 5616 media.pause(); 5617 media.setSrc(src); 5618 media.addEventListener('loadedmetadata', function(e) { 5619 media.currentTime = currentTime; 5620 }, true); 5621 var canPlayAfterSourceSwitchHandler = function(e) { 5622 if (!paused) { 5623 media.play(); 5624 } 5625 media.removeEventListener("canplay", canPlayAfterSourceSwitchHandler, true); 5626 }; 5627 media.addEventListener('canplay', canPlayAfterSourceSwitchHandler, true); 5628 media.load(); 5629 } 5630 }) 5631 // Handle click so that screen readers can toggle the menu 5632 .delegate('button', 'click', function (e) { 5633 if ($(this).siblings('.mejs-sourcechooser-selector').hasClass('mejs-offscreen')) { 5634 player.showSourcechooserSelector(); 5635 $(this).siblings('.mejs-sourcechooser-selector').find('input[type=radio]:checked').first().focus(); 5636 } else { 5637 player.hideSourcechooserSelector(); 5638 } 5639 }); 5640 // add to list 5641 for (var i in this.node.children) { 5642 var src = this.node.children[i]; 5643 if (src.nodeName === 'SOURCE' && (media.canPlayType(src.type) == 'probably' || media.canPlayType(src.type) == 'maybe')) { 5644 player.addSourceButton(src.src, src.title, src.type, media.src == src.src); 5645 } 5646 } 5647 }, 5648 addSourceButton: function(src, label, type, isCurrent) { 5649 var t = this; 5650 if (label === '' || label == undefined) { 5651 label = src; 5652 } 5653 type = type.split('/')[1]; 5654 t.sourcechooserButton.find('ul').append( 5655 $('<li>'+ 5656 '<input type="radio" name="' + t.id + '_sourcechooser" id="' + t.id + '_sourcechooser_' + label + type + '" role="menuitemradio" value="' + src + '" ' + (isCurrent ? 'checked="checked"' : '') + 'aria-selected="' + isCurrent + '"' + ' />'+ 5657 '<label for="' + t.id + '_sourcechooser_' + label + type + '" aria-hidden="true">' + label + ' (' + type + ')</label>'+ 5658 '</li>') 5659 ); 5660 t.adjustSourcechooserBox(); 5661 }, 5662 adjustSourcechooserBox: function() { 5663 var t = this; 5664 // adjust the size of the outer box 5665 t.sourcechooserButton.find('.mejs-sourcechooser-selector').height( 5666 t.sourcechooserButton.find('.mejs-sourcechooser-selector ul').outerHeight(true) 5667 ); 5668 }, 5669 hideSourcechooserSelector: function () { 5670 this.sourcechooserButton.find('.mejs-sourcechooser-selector') 5671 .addClass('mejs-offscreen') 5672 .attr('aria-expanded', 'false') 5673 .attr('aria-hidden', 'true') 5674 .find('input[type=radio]') // make radios not fucusable 5675 .attr('tabindex', '-1'); 5676 }, 5677 showSourcechooserSelector: function () { 5678 this.sourcechooserButton.find('.mejs-sourcechooser-selector') 5679 .removeClass('mejs-offscreen') 5680 .attr('aria-expanded', 'true') 5681 .attr('aria-hidden', 'false') 5682 .find('input[type=radio]') 5683 .attr('tabindex', '0'); 5684 } 5685 }); 5686})(mejs.$); 5687/* 5688* ContextMenu Plugin 5689* 5690* 5691*/ 5692(function($) { 5693$.extend(mejs.MepDefaults, 5694 { 'contextMenuItems': [ 5695 // demo of a fullscreen option 5696 { 5697 render: function(player) { 5698 5699 // check for fullscreen plugin 5700 if (typeof player.enterFullScreen == 'undefined') 5701 return null; 5702 5703 if (player.isFullScreen) { 5704 return mejs.i18n.t('mejs.fullscreen-off'); 5705 } else { 5706 return mejs.i18n.t('mejs.fullscreen-on'); 5707 } 5708 }, 5709 click: function(player) { 5710 if (player.isFullScreen) { 5711 player.exitFullScreen(); 5712 } else { 5713 player.enterFullScreen(); 5714 } 5715 } 5716 } 5717 , 5718 // demo of a mute/unmute button 5719 { 5720 render: function(player) { 5721 if (player.media.muted) { 5722 return mejs.i18n.t('mejs.unmute'); 5723 } else { 5724 return mejs.i18n.t('mejs.mute'); 5725 } 5726 }, 5727 click: function(player) { 5728 if (player.media.muted) { 5729 player.setMuted(false); 5730 } else { 5731 player.setMuted(true); 5732 } 5733 } 5734 }, 5735 // separator 5736 { 5737 isSeparator: true 5738 } 5739 , 5740 // demo of simple download video 5741 { 5742 render: function(player) { 5743 return mejs.i18n.t('mejs.download-video'); 5744 }, 5745 click: function(player) { 5746 window.location.href = player.media.currentSrc; 5747 } 5748 } 5749 ]} 5750); 5751 $.extend(MediaElementPlayer.prototype, { 5752 buildcontextmenu: function(player, controls, layers, media) { 5753 5754 // create context menu
5755 player.contextMenu = $('<div class="mejs-contextmenu"></div>') 5756 .appendTo($('body')) 5757 .hide(); 5758 5759 // create events for showing context menu 5760 player.container.bind('contextmenu', function(e) { 5761 if (player.isContextMenuEnabled) { 5762 e.preventDefault(); 5763 player.renderContextMenu(e.clientX-1, e.clientY-1); 5764 return false; 5765 } 5766 }); 5767 player.container.bind('click', function() { 5768 player.contextMenu.hide(); 5769 }); 5770 player.contextMenu.bind('mouseleave', function() { 5771 // 5772 player.startContextMenuTimer(); 5773 5774 }); 5775 }, 5776 cleancontextmenu: function(player) { 5777 player.contextMenu.remove(); 5778 }, 5779 5780 isContextMenuEnabled: true, 5781 enableContextMenu: function() { 5782 this.isContextMenuEnabled = true; 5783 }, 5784 disableContextMenu: function() { 5785 this.isContextMenuEnabled = false; 5786 }, 5787 5788 contextMenuTimeout: null, 5789 startContextMenuTimer: function() { 5790 // 5791 5792 var t = this; 5793 5794 t.killContextMenuTimer(); 5795 5796 t.contextMenuTimer = setTimeout(function() { 5797 t.hideContextMenu(); 5798 t.killContextMenuTimer(); 5799 }, 750); 5800 }, 5801 killContextMenuTimer: function() { 5802 var timer = this.contextMenuTimer; 5803 5804 // 5805 5806 if (timer != null) { 5807 clearTimeout(timer); 5808 delete timer; 5809 timer = null; 5810 } 5811 }, 5812 5813 hideContextMenu: function() { 5814 this.contextMenu.hide(); 5815 }, 5816 5817 renderContextMenu: function(x,y) { 5818 5819 // alway re-render the items so that things like "turn fullscreen on" and "turn fullscreen off" are always written correctly 5820 var t = this, 5821 html = '', 5822 items = t.options.contextMenuItems; 5823 5824 for (var i=0, il=items.length; i<il; i++) { 5825 5826 if (items[i].isSeparator) { 5827 html += '<div class="mejs-contextmenu-separator"></div>'; 5828 } else { 5829 5830 var rendered = items[i].render(t); 5831 5832 // render can return null if the item doesn't need to be used at the moment 5833 if (rendered != null) { 5834 html += '<div class="mejs-contextmenu-item" data-itemindex="' + i + '" id="element-' + (Math.random()*1000000) + '">' + rendered + '</div>'; 5835 } 5836 } 5837 } 5838 5839 // position and show the context menu 5840 t.contextMenu 5841 .empty() 5842 .append($(html)) 5843 .css({top:y, left:x}) 5844 .show(); 5845 5846 // bind events 5847 t.contextMenu.find('.mejs-contextmenu-item').each(function() { 5848 5849 // which one is this? 5850 var $dom = $(this), 5851 itemIndex = parseInt( $dom.data('itemindex'), 10 ), 5852 item = t.options.contextMenuItems[itemIndex]; 5853 5854 // bind extra functionality? 5855 if (typeof item.show != 'undefined') 5856 item.show( $dom , t); 5857 5858 // bind click action 5859 $dom.click(function() { 5860 // perform click action 5861 if (typeof item.click != 'undefined') 5862 item.click(t); 5863 5864 // close 5865 t.contextMenu.hide(); 5866 }); 5867 }); 5868 5869 // stop the controls from hiding 5870 setTimeout(function() { 5871 t.killControlsTimer('rev3'); 5872 }, 100); 5873 5874 } 5875 }); 5876})(mejs.$); 5877(function($) { 5878 // skip back button 5879 $.extend(mejs.MepDefaults, { 5880 skipBackInterval: 30, 5881 // %1 will be replaced with skipBackInterval in this string 5882 skipBackText: '' 5883 }); 5884 $.extend(MediaElementPlayer.prototype, { 5885 buildskipback: function(player, controls, layers, media) { 5886 var 5887 t = this, 5888 defaultTitle = mejs.i18n.t('mejs.time-skip-back', t.options.skipBackInterval), 5889 skipTitle = t.options.skipBackText ? t.options.skipBackText : defaultTitle, 5890 // create the loop button 5891 loop = 5892 $('<div class="mejs-button mejs-skip-back-button">' + 5893 '<button type="button" aria-controls="' + t.id + '" title="' + skipTitle + '" aria-label="' + skipTitle + '">' + t.options.skipBackInterval + '</button>' + 5894 '</div>') 5895 // append it to the toolbar 5896 .appendTo(controls) 5897 // add a click toggle event 5898 .click(function() { 5899 media.setCurrentTime(Math.max(media.currentTime - t.options.skipBackInterval, 0)); 5900 $(this).find('button').blur(); 5901 }); 5902 } 5903 }); 5904})(mejs.$); 5905/** 5906 * Postroll plugin 5907 */ 5908(function($) { 5909 $.extend(mejs.MepDefaults, { 5910 postrollCloseText: '' 5911 }); 5912 // Postroll 5913 $.extend(MediaElementPlayer.prototype, { 5914 buildpostroll: function(player, controls, layers, media) { 5915 var 5916 t = this, 5917 postrollTitle = t.options.postrollCloseText ? t.options.postrollCloseText : mejs.i18n.t('mejs.close'), 5918 postrollLink = t.container.find('link[rel="postroll"]').attr('href'); 5919 if (typeof postrollLink !== 'undefined') { 5920 player.postroll = 5921 $('<div class="mejs-postroll-layer mejs-layer"><a class="mejs-postroll-close" onclick="$(this).parent().hide();return false;">' + postrollTitle + '</a>
5921<div class="mejs-postroll-layer-content"></div></div>').prependTo(layers).hide(); 5922 t.media.addEventListener('ended', function (e) { 5923 $.ajax({ 5924 dataType: 'html', 5925 url: postrollLink, 5926 success: function (data, textStatus) { 5927 layers.find('.mejs-postroll-layer-content').html(data); 5928 } 5929 }); 5930 player.postroll.show(); 5931 }, false); 5932 } 5933 } 5934 }); 5935})(mejs.$); 5936/* 5937MediaElement-Markers is a MediaElement.js plugin that lets you add Visual Cues in the progress time rail. 5938This plugin also lets you register a custom callback function that will be called everytime the play position reaches a marker. 5939Marker position and a reference to the MediaElement Player object is passed to the registered callback function for any post processing. Marker color is configurable. 5940*/ 5941(function ($) { 5942 // markers 5943 $.extend(mejs.MepDefaults, { 5944 markerColor: '#E9BC3D', //default marker color 5945 markers: [], 5946 markerCallback: function () { 5947 } 5948 }); 5949 $.extend(MediaElementPlayer.prototype, { 5950 buildmarkers: function (player, controls, layers, media) { 5951 var t = this, 5952 i = 0, 5953 currentPos = -1, 5954 currentMarker = -1, 5955 lastPlayPos = -1, //Track backward seek 5956 lastMarkerCallBack = -1; //Prevents successive firing of callbacks 5957 for (i = 0; i < player.options.markers.length; ++i) { 5958 controls.find('.mejs-time-total').append('<span class="mejs-time-marker"></span>'); 5959 } 5960 media.addEventListener('durationchange', function (e) { 5961 player.setmarkers(controls); 5962 }); 5963 media.addEventListener('timeupdate', function (e) { 5964 currentPos = Math.floor(media.currentTime); 5965 if (lastPlayPos > currentPos) { 5966 if (lastMarkerCallBack > currentPos) { 5967 lastMarkerCallBack = -1; 5968 } 5969 } else { 5970 lastPlayPos = currentPos; 5971 } 5972 for (i = 0; i < player.options.markers.length; ++i) { 5973 currentMarker = Math.floor(player.options.markers[i]); 5974 if (currentPos === currentMarker && currentMarker !== lastMarkerCallBack) { 5975 player.options.markerCallback(media, media.currentTime); //Fires the callback function 5976 lastMarkerCallBack = currentMarker; 5977 } 5978 } 5979 }, false); 5980 }, 5981 setmarkers: function (controls) { 5982 var t = this, 5983 i = 0, 5984 left; 5985 for (i = 0; i < t.options.markers.length; ++i) { 5986 if (Math.floor(t.options.markers[i]) <= t.media.duration && Math.floor(t.options.markers[i]) >= 0) { 5987 left = 100 * Math.floor(t.options.markers[i]) / t.media.duration; 5988 $(controls.find('.mejs-time-marker')[i]).css({ 5989 "width": "1px", 5990 "left": left+"%", 5991 "background": t.options.markerColor 5992 }); 5993 } 5994 } 5995 } 5996 }); 5997})(mejs.$); 5998 /* Ende mediaelementplayer */ 5999 /* Start jquery.socialshareprivacy */ 6000 /*! 6001 * --GSBDocStart 6002 * @module jquery.socialshareprivacy.js | 2 Klicks fuer mehr Datenschutz 6003 * @version 1.4.1 6004 * @see {@link https://github.com/patrickheck/socialshareprivacy} 6005 * @author Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt, 2011 6006 * @license MIT license 6007 * 6008 * @desc SocialSharePrivacy ist ein jQuery-Plugin, das Ihnen erlaubt, Knöpfe von sozialen Netzwerken mit Schutz der Privatsphäre hinzuzufügen. 6009 * Zu Beginn sind alle Schaltflächen inaktiv, sodass keine Daten an Webseiten übertragen werden. Erst nach einem ersten Klick werden sie aktiviert und der Code der Quelle wird geladen. 6010 * 6011 * @example 6012 * <head> 6013 * .... 6014 * <script type="text/javascript" src="jquery.js"></script> 6015 * <script type="text/javascript" src="jquery.socialshareprivacy.js"></script> 6016 * <script type="text/javascript"> 6017 * jQuery(document).ready(function($){ 6018 * if($('#socialshareprivacy').length > 0){ 6019 * $('#socialshareprivacy').socialSharePrivacy({ 6020 * "css_path" : "/js/plugins/socialshareprivacy/socialshareprivacy.css", 6021 * "lang_path" : "/js/plugins/socialshareprivacy/lang/", 6022 * "language" : "de" 6023 * }); 6024 * } 6025 * }); 6026 * </script> 6027 * ⦠6028 * </head> 6029 * <body> 6030 * ⦠6031 * <div id="socialshareprivacy"></div> 6032 * ⦠6033 *</body> 6034 *--GSBDocEnd 6035 * 6036 * https://github.com/patrickheck/socialshareprivacy 6037 * http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html 6038 * 6039 * Copyright (c) 2011 Hilko Holweg, Sebastian Hilbig, Nicolas Heiringhoff, Juergen Schmidt 6040 * Heise Zeitschriften Verlag GmbH & Co. KG, http://www.heise.de, 6041 * 6042 * Copyright (c) 2011 Tilmann Kuhn 6043 * object-zoo, http://www.object-zoo.net 6044 * 6045 * is released under the MIT License http://www.opensource.org/licenses/mit-license.php 6046 * 6047 * Spread the word, link to us if you can. 6048 */ 6049(function($){function abbreviateText(text,length){var abbreviated=decodeURIComponent(text);if(abbreviated.length<=length){return text;}var lastWhitespaceIndex=abbreviated.substring(0,length-1).lastIndexOf(" ");abbreviated=encodeURIComponent(abbreviated.substring(0,lastWhitespaceIndex))+"\u2026";return abbreviated;}function getMeta(name){var metaContent=$('meta[name="'+name+'"]').attr("content");return metaContent||"";}function getTweetText(){var title=getMeta("DC.title");var creator=getMeta("DC.creator");if(title.length>0&&creator.length>0){title+=" - "+creator;}
6049else{title=$("title").text();}return encodeURIComponent(title);}function getURI(){var uri=document.location.href;var canonical=$("link[rel=canonical]").attr("href");if(canonical&&canonical.length>0){if(canonical.indexOf("http")<0){canonical=document.location.protocol+"//"+document.location.host+canonical;}uri=canonical;}return uri;}function cookieSet(name,value,days,path,domain){var expires=new Date();expires.setTime(expires.getTime()+(days*24*60*60*1000));document.cookie=name+"="+value+"; expires="+expires.toUTCString()+"; path="+path+"; domain="+domain;}function cookieDel(name,value,path,domain){var expires=new Date();expires.setTime(expires.getTime()-100);document.cookie=name+"="+value+"; expires="+expires.toUTCString()+"; path="+path+"; domain="+domain;}$.fn.socialSharePrivacy=function(settings){var defaults={"services":{"facebook":{"status":"on","dummy_img":"","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","perma_option":"on","display_name":"Facebook","referrer_track":"","language":"de_DE","action":"recommend","dummy_caption":"Empfehlen"},"twitter":{"status":"on","dummy_img":"","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","perma_option":"on","display_name":"Twitter","referrer_track":"","tweet_text":getTweetText,"language":"en","dummy_caption":"Tweet"},"gplus":{"status":"on","dummy_img":"","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","perma_option":"on","display_name":"Google+","referrer_track":"","language":"de"}},"info_link":"http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA übertragen und unter Umständen auch dort gespeichert. Näheres erfahren Sie durch einen Klick auf das <em>i</em>.","settings_perma":"Dauerhaft aktivieren und Datenüber­tragung zustimmen:","cookie_path":"/","cookie_domain":document.location.host,"cookie_expires":"365","css_path":"socialshareprivacy/socialshareprivacy.css","uri":getURI};var options=$.extend(true,defaults,settings);var facebook_on=(options.services.facebook.status==="on");var twitter_on=(options.services.twitter.status==="on");var gplus_on=(options.services.gplus.status==="on");if(!facebook_on&&!twitter_on&&!gplus_on){return;}if(options.css_path.length>0){if(document.createStyleSheet){document.createStyleSheet(options.css_path);}else{$("head").append('<link rel="stylesheet" type="text/css" href="'+options.css_path+'" />');}}return this.each(function(){$(this).prepend('<ul class="social_share_privacy_area"></ul>');var context=$(".social_share_privacy_area",this);var uri=options.uri;if(typeof uri==="function"){uri=uri(context);}if(facebook_on){var fb_enc_uri=encodeURIComponent(uri+options.services.facebook.referrer_track);var fb_code='<iframe src="http://www.facebook.com/plugins/like.php?locale='+options.services.facebook.language+"&href="+fb_enc_uri+"&send=false&layout=button_count&width=120&show_faces=false&action="+options.services.facebook.action+'&colorscheme=light&font&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:145px; height:21px;" allowTransparency="true"></iframe>';var fb_dummy_btn;if(options.services.facebook.dummy_img){fb_dummy_btn='<img class="fb_like_privacy_dummy" src="'+options.services.facebook.dummy_img+'" alt="'+options.services.facebook.dummy_caption+'" />';}else{fb_dummy_btn='<div class="fb_like_privacy_dummy"><span>'+options.services.facebook.dummy_caption+"</span></div>";}context.append('<li class="facebook help_info"><span class="info">'+options.services.facebook.txt_info+'</span><span class="switch off">'+options.services.facebook.txt_fb_off+'</span><div class="fb_like dummy_btn">'+fb_dummy_btn+"</div></li>");var $container_fb=$("li.facebook",context);context.on("click","li.facebook div.fb_like .fb_like_privacy_dummy,li.facebook span.switch",function(){if($container_fb.find("span.switch").hasClass("off")){$container_fb.addClass("info_off");$container_fb.find("span.switch").addClass("on").removeClass("off").html(options.services.facebook.txt_fb_on);$container_fb.find(".fb_like_privacy_dummy").replaceWith(fb_code);}else{$container_fb.removeClass("info_off");$container_fb.find("span.switch").addClass("off").removeClass("on").html(options.services.facebook.txt_fb_off);$container_fb.find(".fb_like").html(fb_dummy_btn);}});}if(twitter_on){var text=options.services.twitter.tweet_text;if(typeof text==="function"){text=text();}text=abbreviateText(text,"120");var twitter_enc_uri=encodeURIComponent(uri+options.services.twitter.referrer_track);var twitter_count_url=encodeURIComponent(uri);var twitter_code='<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/tweet_button.html?url='+twitter_enc_uri+"&counturl="+twitter_count_url+"&text="+text+"&count=horizontal&lang="+options.services.twitter.language+'" style="width:130px; height:25px;"></iframe>';var twitter_dummy_btn;if(options.services.twitter.dummy_img){twitter_dummy_btn='<img class="tweet_this_dummy" src="'+options.services.twitter.dummy_img+'" alt="'+options.services.twitter.dummy_caption+'" />';}else{twitter_dummy_btn='<div class="tweet_this_dummy"><span>'+options.services.twitter.dummy_caption+"</span></div>";}context.append('<li class="twitter help_info"><span class="info">'+options.services.twitter.txt_info+'</span><span class="switch off">'+options.services.twitter.txt_twitter_off+'</span><div class="tweet dummy_btn">'+twitter_dummy_btn+"</div></li>");var $container_tw=$("li.twitter",context);context.on("click","li.twitter .tweet_this_dummy,li.twitter span.switch",function(){if($container_tw.find("span.switch").hasClass("off")){$container_tw.addClass("info_off");$container_tw.find("span.switch").addClass("on").removeClass("off").html(options.services.twitter.txt_twitter_on);$container_tw.find(".tweet_this_dummy").replaceWith(twitter_code);}else{$container_tw.removeClass("info_off");$container_tw.find("span.switch").addClass("off").removeClass("on").html(options.services.twitter.txt_twitter_off);$container_tw.find(".tweet").html(twitter_dummy_btn);}});}
6049if(gplus_on){var gplus_uri=uri+options.services.gplus.referrer_track;var gplus_code='<div class="g-plusone" data-size="medium" data-href="'+gplus_uri+'"></div><script type="text/javascript">window.___gcfg = {lang: "'+options.services.gplus.language+'"}; (function() { var po = document.createElement("script"); po.type = "text/javascript"; po.async = true; po.src = "https://apis.google.com/js/plusone.js"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(po, s); })(); <\/script>';var gplus_dummy_btn;if(options.services.gplus.dummy_img){gplus_dummy_btn='<img src="'+options.services.gplus.dummy_img+'" alt="+1" class="gplus_one_dummy" />';}else{gplus_dummy_btn='<div class="gplus_one_dummy">+1</div>';}context.append('<li class="gplus help_info"><span class="info">'+options.services.gplus.txt_info+'</span><span class="switch off">'+options.services.gplus.txt_gplus_off+'</span><div class="gplusone dummy_btn">'+gplus_dummy_btn+"</div></li>");var $container_gplus=$("li.gplus",context);context.on("click","li.gplus div.gplusone .gplus_one_dummy,li.gplus span.switch",function(){if($container_gplus.find("span.switch").hasClass("off")){$container_gplus.addClass("info_off");$container_gplus.find("span.switch").addClass("on").removeClass("off").html(options.services.gplus.txt_gplus_on);$container_gplus.find(".gplus_one_dummy").replaceWith(gplus_code);}else{$container_gplus.removeClass("info_off");$container_gplus.find("span.switch").addClass("off").removeClass("on").html(options.services.gplus.txt_gplus_off);$container_gplus.find(".gplusone").html(gplus_dummy_btn);}});}context.append('<li class="settings_info"><div class="settings_info_menu off perma_option_off"><a href="'+options.info_link+'"><span class="help_info icon"><span class="info">'+options.txt_help+"</span></span></a></div></li>");context.on("mouseenter",".help_info:not(.info_off)",function(){var $info_wrapper=$(this);var timeout_id=window.setTimeout(function(){$($info_wrapper).addClass("display");},500);$(this).data("timeout_id",timeout_id);});context.on("mouseleave",".help_info",function(){var timeout_id=$(this).data("timeout_id");window.clearTimeout(timeout_id);if($(this).hasClass("display")){$(this).removeClass("display");}});var facebook_perma=(options.services.facebook.perma_option==="on");var twitter_perma=(options.services.twitter.perma_option==="on");var gplus_perma=(options.services.gplus.perma_option==="on");if(((facebook_on&&facebook_perma)||(twitter_on&&twitter_perma)||(gplus_on&&gplus_perma))&&(!!JSON&&!!JSON.parse)){var cookie_list=document.cookie.split(";");var cookies="{";var i=0;for(;i<cookie_list.length;i+=1){var foo=cookie_list[i].split("=");cookies+='"'+$.trim(foo[0])+'":"'+$.trim(foo[1])+'"';if(i<cookie_list.length-1){cookies+=",";}}cookies+="}";cookies=JSON.parse(cookies);var $container_settings_info=$("li.settings_info",context);$container_settings_info.find(".settings_info_menu").removeClass("perma_option_off");$container_settings_info.find(".settings_info_menu").append('<span class="settings">Einstellungen</span><form><fieldset><legend>'+options.settings_perma+"</legend></fieldset></form>");var checked=' checked="checked"';if(facebook_on&&facebook_perma){var perma_status_facebook=cookies.socialSharePrivacy_facebook==="perma_on"?checked:"";$container_settings_info.find("form fieldset").append('<input type="checkbox" name="perma_status_facebook" id="perma_status_facebook"'+perma_status_facebook+' /><label for="perma_status_facebook">'+options.services.facebook.display_name+"</label>");}if(twitter_on&&twitter_perma){var perma_status_twitter=cookies.socialSharePrivacy_twitter==="perma_on"?checked:"";$container_settings_info.find("form fieldset").append('<input type="checkbox" name="perma_status_twitter" id="perma_status_twitter"'+perma_status_twitter+' /><label for="perma_status_twitter">'+options.services.twitter.display_name+"</label>");}if(gplus_on&&gplus_perma){var perma_status_gplus=cookies.socialSharePrivacy_gplus==="perma_on"?checked:"";$container_settings_info.find("form fieldset").append('<input type="checkbox" name="perma_status_gplus" id="perma_status_gplus"'+perma_status_gplus+' /><label for="perma_status_gplus">'+options.services.gplus.display_name+"</label>");}$container_settings_info.find("span.settings").css("cursor","pointer");$container_settings_info.on("mouseenter","span.settings",function(){var timeout_id=window.setTimeout(function(){$container_settings_info.find(".settings_info_menu").removeClass("off").addClass("on");},500);$(this).data("timeout_id",timeout_id);});$container_settings_info.on("mouseleave",function(){var timeout_id=$(this).data("timeout_id");window.clearTimeout(timeout_id);$container_settings_info.find(".settings_info_menu").removeClass("on").addClass("off");});$container_settings_info.on("click","fieldset input",function(event){var click=event.target.id;var service=click.substr(click.lastIndexOf("_")+1,click.length);var cookie_name="socialSharePrivacy_"+service;if($("#"+event.target.id+":checked").length){cookieSet(cookie_name,"perma_on",options.cookie_expires,options.cookie_path,options.cookie_domain);$("form fieldset label[for="+click+"]",context).addClass("checked");}else{cookieDel(cookie_name,"perma_on",options.cookie_path,options.cookie_domain);$("form fieldset label[for="+click+"]",context).removeClass("checked");}});if(facebook_on&&facebook_perma&&cookies.socialSharePrivacy_facebook==="perma_on"){$("li.facebook span.switch",context).click();}if(twitter_on&&twitter_perma&&cookies.socialSharePrivacy_twitter==="perma_on"){$("li.twitter span.switch",context).click();}if(gplus_on&&gplus_perma&&cookies.socialSharePrivacy_gplus==="perma_on"){$("li.gplus span.switch",context).click();}}});};}(jQuery)); 6050 /* Ende jquery.socialshareprivacy */ 6051 /* Start slick */ 6052 /*! 6053 * --GSBDocStart 6054 * @module slick.js 6055 * @version 1.3.15 6056 * @see {@link http://kenwheeler.github.io} 6057 * @author Ken Wheeler 6058 * @license MIT license 6059 * 6060 * @desc Ermöglicht die Implementierung von Karussells (bsp. mehrere Bilder nebeneinander anzeigbar) 6061 *--GSBDocEnd 6062 _ _ _ _ 6063 ___| (_) ___| | __ (_)___ 6064/ __| | |/ __| |/ / | / __| 6065\__ \ | | (__| < _ | \__ \ 6066|___/_|_|\___|_|\_(_)/ |___/ 6067 |__/ 6068 6069 Version: 1.3.15 6070 Author: Ken Wheeler 6071 Website: http://kenwheeler.github.io 6072 Docs: http://kenwheeler.github.io/slick 6073 Repo: http://github.com/kenwheeler/slick 6074 Issues: http://github.com/kenwheeler/slick/issues 6075 6076 */ 6077(function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory);}else{if(typeof exports!=="undefined"){module.exports=factory(require("jquery"));}else{factory(jQuery);}}}(function($){var Slick=window.Slick||{};Slick=(function(){var instanceUid=0;function Slick(element,settings){var _=this,responsiveSettings,breakpoint;_.defaults={accessibility:true,adaptiveHeight:false,appendArrows:$(element),appendDots:$(element),arrows:true,asNavFor:null,prevArrow:'<button type="button" data-role="none" class="slick-prev">Previous</button>',nextArrow:'<button type="button" data-role="none" class="slick-next">Next</button>
6077',autoplay:false,autoplaySpeed:3000,centerMode:false,centerPadding:"50px",cssEase:"ease",customPaging:function(slider,i){return'<button type="button" data-role="none">'+(i+1)+"</button>";},dots:false,dotsClass:"slick-dots",draggable:true,easing:"linear",fade:false,focusOnSelect:false,infinite:true,initialSlide:0,lazyLoad:"ondemand",onBeforeChange:null,onAfterChange:null,onInit:null,onReInit:null,onSetPosition:null,pauseOnHover:true,pauseOnDotsHover:false,respondTo:"window",responsive:null,rtl:false,slide:"div",slidesToShow:1,slidesToScroll:1,speed:500,swipe:true,swipeToSlide:false,touchMove:true,touchThreshold:5,useCSS:true,variableWidth:false,vertical:false,waitForAnimate:true};_.initials={animating:false,dragging:false,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:false,slideOffset:0,swipeLeft:null,$list:null,touchObject:{},transformsEnabled:false};$.extend(_,_.initials);_.activeBreakpoint=null;_.animType=null;_.animProp=null;_.breakpoints=[];_.breakpointSettings=[];_.cssTransitions=false;_.paused=false;_.positionProp=null;_.respondTo=null;_.shouldClick=true;_.$slider=$(element);_.$slidesCache=null;_.transformType=null;_.transitionType=null;_.windowWidth=0;_.windowTimer=null;_.options=$.extend({},_.defaults,settings);_.currentSlide=_.options.initialSlide;_.originalSettings=_.options;responsiveSettings=_.options.responsive||null;if(responsiveSettings&&responsiveSettings.length>-1){_.respondTo=_.options.respondTo||"window";for(breakpoint in responsiveSettings){if(responsiveSettings.hasOwnProperty(breakpoint)){_.breakpoints.push(responsiveSettings[breakpoint].breakpoint);_.breakpointSettings[responsiveSettings[breakpoint].breakpoint]=responsiveSettings[breakpoint].settings;}}_.breakpoints.sort(function(a,b){return b-a;});}_.autoPlay=$.proxy(_.autoPlay,_);_.autoPlayClear=$.proxy(_.autoPlayClear,_);_.changeSlide=$.proxy(_.changeSlide,_);_.clickHandler=$.proxy(_.clickHandler,_);_.selectHandler=$.proxy(_.selectHandler,_);_.setPosition=$.proxy(_.setPosition,_);_.swipeHandler=$.proxy(_.swipeHandler,_);_.dragHandler=$.proxy(_.dragHandler,_);_.keyHandler=$.proxy(_.keyHandler,_);_.autoPlayIterator=$.proxy(_.autoPlayIterator,_);_.instanceUid=instanceUid++;_.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/;_.init();_.checkResponsive();}return Slick;}());Slick.prototype.addSlide=function(markup,index,addBefore){var _=this;if(typeof(index)==="boolean"){addBefore=index;index=null;}else{if(index<0||(index>=_.slideCount)){return false;}}_.unload();if(typeof(index)==="number"){if(index===0&&_.$slides.length===0){$(markup).appendTo(_.$slideTrack);}else{if(addBefore){$(markup).insertBefore(_.$slides.eq(index));}else{$(markup).insertAfter(_.$slides.eq(index));}}}else{if(addBefore===true){$(markup).prependTo(_.$slideTrack);}else{$(markup).appendTo(_.$slideTrack);}}_.$slides=_.$slideTrack.children(this.options.slide);_.$slideTrack.children(this.options.slide).detach();_.$slideTrack.append(_.$slides);_.$slides.each(function(index,element){$(element).attr("index",index);});_.$slidesCache=_.$slides;_.reinit();};Slick.prototype.animateSlide=function(targetLeft,callback){var animProps={},_=this;if(_.options.slidesToShow===1&&_.options.adaptiveHeight===true&&_.options.vertical===false){var targetHeight=_.$slides.eq(_.currentSlide).outerHeight(true);_.$list.animate({height:targetHeight},_.options.speed);}if(_.options.rtl===true&&_.options.vertical===false){targetLeft=-targetLeft;}if(_.transformsEnabled===false){if(_.options.vertical===false){_.$slideTrack.animate({left:targetLeft},_.options.speed,_.options.easing,callback);}else{_.$slideTrack.animate({top:targetLeft},_.options.speed,_.options.easing,callback);}}else{if(_.cssTransitions===false){$({animStart:_.currentLeft}).animate({animStart:targetLeft},{duration:_.options.speed,easing:_.options.easing,step:function(now){if(_.options.vertical===false){animProps[_.animType]="translate("+now+"px, 0px)";_.$slideTrack.css(animProps);}else{animProps[_.animType]="translate(0px,"+now+"px)";_.$slideTrack.css(animProps);}},complete:function(){if(callback){callback.call();}}});}else{_.applyTransition();if(_.options.vertical===false){animProps[_.animType]="translate3d("+targetLeft+"px, 0px, 0px)";}else{animProps[_.animType]="translate3d(0px,"+targetLeft+"px, 0px)";}_.$slideTrack.css(animProps);if(callback){setTimeout(function(){_.disableTransition();callback.call();},_.options.speed);}}}};Slick.prototype.asNavFor=function(index){var _=this,asNavFor=_.options.asNavFor!=null?$(_.options.asNavFor).getSlick():null;if(asNavFor!=null){asNavFor.slideHandler(index,true);}};Slick.prototype.applyTransition=function(slide){var _=this,transition={};if(_.options.fade===false){transition[_.transitionType]=_.transformType+" "+_.options.speed+"ms "+_.options.cssEase;}else{transition[_.transitionType]="opacity "+_.options.speed+"ms "+_.options.cssEase;}if(_.options.fade===false){_.$slideTrack.css(transition);}else{_.$slides.eq(slide).css(transition);}};Slick.prototype.autoPlay=function(){var _=this;if(_.autoPlayTimer){clearInterval(_.autoPlayTimer);}if(_.slideCount>_.options.slidesToShow&&_.paused!==true){_.autoPlayTimer=setInterval(_.autoPlayIterator,_.options.autoplaySpeed);}};Slick.prototype.autoPlayClear=function(){var _=this;if(_.autoPlayTimer){clearInterval(_.autoPlayTimer);}};Slick.prototype.autoPlayIterator=function(){var _=this;if(_.options.infinite===false){if(_.direction===1){if((_.currentSlide+1)===_.slideCount-1){_.direction=0;}_.slideHandler(_.currentSlide+_.options.slidesToScroll);}else{if((_.currentSlide-1===0)){_.direction=1;}_.slideHandler(_.currentSlide-_.options.slidesToScroll);}}else{_.slideHandler(_.currentSlide+_.options.slidesToScroll);}};Slick.prototype.buildArrows=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow=$(_.options.prevArrow);_.$nextArrow=$(_.options.nextArrow);if(_.htmlExpr.test(_.options.prevArrow)){_.$prevArrow.appendTo(_.options.appendArrows);}if(_.htmlExpr.test(_.options.nextArrow)){_.$nextArrow.appendTo(_.options.appendArrows);}if(_.options.infinite!==true){_.$prevArrow.addClass("slick-disabled");}}};Slick.prototype.buildDots=function(){var _=this,i,dotString;if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){dotString='<ul class="'+_.options.dotsClass+'">';
6077for(i=0;i<=_.getDotCount();i+=1){dotString+="<li>"+_.options.customPaging.call(this,_,i)+"</li>";}dotString+="</ul>";_.$dots=$(dotString).appendTo(_.options.appendDots);_.$dots.find("li").first().addClass("slick-active");}};Slick.prototype.buildOut=function(){var _=this;_.$slides=_.$slider.children(_.options.slide+":not(.slick-cloned)").addClass("slick-slide");_.slideCount=_.$slides.length;_.$slides.each(function(index,element){$(element).attr("index",index);});_.$slidesCache=_.$slides;_.$slider.addClass("slick-slider");_.$slideTrack=(_.slideCount===0)?$('<div class="slick-track"/>').appendTo(_.$slider):_.$slides.wrapAll('<div class="slick-track"/>').parent();_.$list=_.$slideTrack.wrap('<div class="slick-list"/>').parent();_.$slideTrack.css("opacity",0);if(_.options.centerMode===true){_.options.slidesToScroll=1;}$("img[data-lazy]",_.$slider).not("[src]").addClass("slick-loading");_.setupInfinite();_.buildArrows();_.buildDots();_.updateDots();if(_.options.accessibility===true){_.$list.prop("tabIndex",0);}_.setSlideClasses(typeof this.currentSlide==="number"?this.currentSlide:0);if(_.options.draggable===true){_.$list.addClass("draggable");}};Slick.prototype.checkResponsive=function(){var _=this,breakpoint,targetBreakpoint,respondToWidth;var sliderWidth=_.$slider.width();var windowWidth=window.innerWidth||$(window).width();if(_.respondTo==="window"){respondToWidth=windowWidth;}else{if(_.respondTo==="slider"){respondToWidth=sliderWidth;}else{if(_.respondTo==="min"){respondToWidth=Math.min(windowWidth,sliderWidth);}}}if(_.originalSettings.responsive&&_.originalSettings.responsive.length>-1&&_.originalSettings.responsive!==null){targetBreakpoint=null;for(breakpoint in _.breakpoints){if(_.breakpoints.hasOwnProperty(breakpoint)){if(respondToWidth<_.breakpoints[breakpoint]){targetBreakpoint=_.breakpoints[breakpoint];}}}if(targetBreakpoint!==null){if(_.activeBreakpoint!==null){if(targetBreakpoint!==_.activeBreakpoint){_.activeBreakpoint=targetBreakpoint;_.options=$.extend({},_.originalSettings,_.breakpointSettings[targetBreakpoint]);_.refresh();}}else{_.activeBreakpoint=targetBreakpoint;_.options=$.extend({},_.originalSettings,_.breakpointSettings[targetBreakpoint]);_.refresh();}}else{if(_.activeBreakpoint!==null){_.activeBreakpoint=null;_.options=_.originalSettings;_.refresh();}}}};Slick.prototype.changeSlide=function(event,dontAnimate){var _=this,$target=$(event.target),indexOffset,slideOffset,unevenOffset,navigables,prevNavigable;$target.is("a")&&event.preventDefault();unevenOffset=(_.slideCount%_.options.slidesToScroll!==0);indexOffset=unevenOffset?0:(_.slideCount-_.currentSlide)%_.options.slidesToScroll;switch(event.data.message){case"previous":slideOffset=indexOffset===0?_.options.slidesToScroll:_.options.slidesToShow-indexOffset;if(_.slideCount>_.options.slidesToShow){_.slideHandler(_.currentSlide-slideOffset,false,dontAnimate);}break;case"next":slideOffset=indexOffset===0?_.options.slidesToScroll:indexOffset;if(_.slideCount>_.options.slidesToShow){_.slideHandler(_.currentSlide+slideOffset,false,dontAnimate);}break;case"index":var index=event.data.index===0?0:event.data.index||$(event.target).parent().index()*_.options.slidesToScroll;navigables=_.getNavigableIndexes();prevNavigable=0;if(navigables[index]&&navigables[index]===index){if(index>navigables[navigables.length-1]){index=navigables[navigables.length-1];}else{for(var n in navigables){if(index<navigables[n]){index=prevNavigable;break;}prevNavigable=navigables[n];}}}_.slideHandler(index,false,dontAnimate);default:return;}};Slick.prototype.clickHandler=function(event){var _=this;if(_.shouldClick===false){event.stopImmediatePropagation();event.stopPropagation();event.preventDefault();}};Slick.prototype.destroy=function(){var _=this;_.autoPlayClear();_.touchObject={};$(".slick-cloned",_.$slider).remove();if(_.$dots){_.$dots.remove();}if(_.$prevArrow&&(typeof _.options.prevArrow!=="object")){_.$prevArrow.remove();}if(_.$nextArrow&&(typeof _.options.nextArrow!=="object")){_.$nextArrow.remove();}if(_.$slides.parent().hasClass("slick-track")){_.$slides.unwrap().unwrap();}_.$slides.removeClass("slick-slide slick-active slick-center slick-visible").removeAttr("index").css({position:"",left:"",top:"",zIndex:"",opacity:"",width:""});_.$slider.removeClass("slick-slider");_.$slider.removeClass("slick-initialized");_.$list.off(".slick");$(window).off(".slick-"+_.instanceUid);$(document).off(".slick-"+_.instanceUid);};Slick.prototype.disableTransition=function(slide){var _=this,transition={};transition[_.transitionType]="";if(_.options.fade===false){_.$slideTrack.css(transition);}else{_.$slides.eq(slide).css(transition);}};Slick.prototype.fadeSlide=function(oldSlide,slideIndex,callback){var _=this;if(_.cssTransitions===false){_.$slides.eq(slideIndex).css({zIndex:1000});_.$slides.eq(slideIndex).animate({opacity:1},_.options.speed,_.options.easing,callback);_.$slides.eq(oldSlide).animate({opacity:0}
6077,_.options.speed,_.options.easing);}else{_.applyTransition(slideIndex);_.applyTransition(oldSlide);_.$slides.eq(slideIndex).css({opacity:1,zIndex:1000});_.$slides.eq(oldSlide).css({opacity:0});if(callback){setTimeout(function(){_.disableTransition(slideIndex);_.disableTransition(oldSlide);callback.call();},_.options.speed);}}};Slick.prototype.filterSlides=function(filter){var _=this;if(filter!==null){_.unload();_.$slideTrack.children(this.options.slide).detach();_.$slidesCache.filter(filter).appendTo(_.$slideTrack);_.reinit();}};Slick.prototype.getCurrent=function(){var _=this;return _.currentSlide;};Slick.prototype.getDotCount=function(){var _=this;var breakPoint=0;var counter=0;var pagerQty=0;if(_.options.infinite===true){pagerQty=Math.ceil(_.slideCount/_.options.slidesToScroll);}else{while(breakPoint<_.slideCount){++pagerQty;breakPoint=counter+_.options.slidesToShow;counter+=_.options.slidesToScroll<=_.options.slidesToShow?_.options.slidesToScroll:_.options.slidesToShow;}}return pagerQty-1;};Slick.prototype.getLeft=function(slideIndex){var _=this,targetLeft,verticalHeight,verticalOffset=0,slideWidth,targetSlide;_.slideOffset=0;verticalHeight=_.$slides.first().outerHeight();if(_.options.infinite===true){if(_.slideCount>_.options.slidesToShow){_.slideOffset=(_.slideWidth*_.options.slidesToShow)*-1;verticalOffset=(verticalHeight*_.options.slidesToShow)*-1;}if(_.slideCount%_.options.slidesToScroll!==0){if(slideIndex+_.options.slidesToScroll>_.slideCount&&_.slideCount>_.options.slidesToShow){if(slideIndex>_.slideCount){_.slideOffset=((_.options.slidesToShow-(slideIndex-_.slideCount))*_.slideWidth)*-1;verticalOffset=((_.options.slidesToShow-(slideIndex-_.slideCount))*verticalHeight)*-1;}else{_.slideOffset=((_.slideCount%_.options.slidesToScroll)*_.slideWidth)*-1;verticalOffset=((_.slideCount%_.options.slidesToScroll)*verticalHeight)*-1;}}}}else{if(slideIndex+_.options.slidesToShow>_.slideCount){_.slideOffset=((slideIndex+_.options.slidesToShow)-_.slideCount)*_.slideWidth;verticalOffset=((slideIndex+_.options.slidesToShow)-_.slideCount)*verticalHeight;}}if(_.slideCount<=_.options.slidesToShow){_.slideOffset=0;verticalOffset=0;}if(_.options.centerMode===true&&_.options.infinite===true){_.slideOffset+=_.slideWidth*Math.floor(_.options.slidesToShow/2)-_.slideWidth;}else{if(_.options.centerMode===true){_.slideOffset=0;_.slideOffset+=_.slideWidth*Math.floor(_.options.slidesToShow/2);}}if(_.options.vertical===false){targetLeft=((slideIndex*_.slideWidth)*-1)+_.slideOffset;}else{targetLeft=((slideIndex*verticalHeight)*-1)+verticalOffset;}if(_.options.variableWidth===true){if(_.slideCount<=_.options.slidesToShow||_.options.infinite===false){targetSlide=_.$slideTrack.children(".slick-slide").eq(slideIndex);}else{targetSlide=_.$slideTrack.children(".slick-slide").eq(slideIndex+_.options.slidesToShow);}targetLeft=targetSlide[0]?targetSlide[0].offsetLeft*-1:0;if(_.options.centerMode===true){if(_.options.infinite===false){targetSlide=_.$slideTrack.children(".slick-slide").eq(slideIndex);}else{targetSlide=_.$slideTrack.children(".slick-slide").eq(slideIndex+_.options.slidesToShow+1);}targetLeft=targetSlide[0]?targetSlide[0].offsetLeft*-1:0;targetLeft+=(_.$list.width()-targetSlide.outerWidth())/2;}}return targetLeft;};Slick.prototype.getNavigableIndexes=function(){var _=this;var breakPoint=0;var counter=0;var indexes=[];while(breakPoint<_.slideCount){indexes.push(breakPoint);breakPoint=counter+_.options.slidesToScroll;counter+=_.options.slidesToScroll<=_.options.slidesToShow?_.options.slidesToScroll:_.options.slidesToShow;}return indexes;};Slick.prototype.getSlideCount=function(){var _=this,slidesTraversed;if(_.options.swipeToSlide===true){var swipedSlide=null;_.$slideTrack.find(".slick-slide").each(function(index,slide){if(slide.offsetLeft+($(slide).outerWidth()/2)>(_.swipeLeft*-1)){swipedSlide=slide;return false;}});slidesTraversed=Math.abs($(swipedSlide).attr("index")-_.currentSlide);return slidesTraversed;}else{return _.options.slidesToScroll;}};Slick.prototype.init=function(){var _=this;if(!$(_.$slider).hasClass("slick-initialized")){$(_.$slider).addClass("slick-initialized");_.buildOut();_.setProps();_.startLoad();_.loadSlider();_.initializeEvents();_.updateArrows();_.updateDots();}if(_.options.onInit!==null){_.options.onInit.call(this,_);}};Slick.prototype.initArrowEvents=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.on("click.slick",{message:"previous"},_.changeSlide);_.$nextArrow.on("click.slick",{message:"next"},_.changeSlide);}};Slick.prototype.initDotEvents=function(){var _=this;if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){$("li",_.$dots).on("click.slick",{message:"index"},_.changeSlide);}if(_.options.dots===true&&_.options.pauseOnDotsHover===true&&_.options.autoplay===true){$("li",_.$dots).on("mouseenter.slick",function(){_.paused=true;_.autoPlayClear();}
6077).on("mouseleave.slick",function(){_.paused=false;_.autoPlay();});}};Slick.prototype.initializeEvents=function(){var _=this;_.initArrowEvents();_.initDotEvents();_.$list.on("touchstart.slick mousedown.slick",{action:"start"},_.swipeHandler);_.$list.on("touchmove.slick mousemove.slick",{action:"move"},_.swipeHandler);_.$list.on("touchend.slick mouseup.slick",{action:"end"},_.swipeHandler);_.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},_.swipeHandler);_.$list.on("click.slick",_.clickHandler);if(_.options.pauseOnHover===true&&_.options.autoplay===true){_.$list.on("mouseenter.slick",function(){_.paused=true;_.autoPlayClear();});_.$list.on("mouseleave.slick",function(){_.paused=false;_.autoPlay();});}if(_.options.accessibility===true){_.$list.on("keydown.slick",_.keyHandler);}if(_.options.focusOnSelect===true){$(_.options.slide,_.$slideTrack).on("click.slick",_.selectHandler);}$(window).on("orientationchange.slick.slick-"+_.instanceUid,function(){_.checkResponsive();_.setPosition();});$(window).on("resize.slick.slick-"+_.instanceUid,function(){if($(window).width()!==_.windowWidth){clearTimeout(_.windowDelay);_.windowDelay=window.setTimeout(function(){_.windowWidth=$(window).width();_.checkResponsive();_.setPosition();},50);}});$("*[draggable!=true]",_.$slideTrack).on("dragstart",function(e){e.preventDefault();});$(window).on("load.slick.slick-"+_.instanceUid,_.setPosition);$(document).on("ready.slick.slick-"+_.instanceUid,_.setPosition);};Slick.prototype.initUI=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.show();_.$nextArrow.show();}if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){_.$dots.show();}if(_.options.autoplay===true){_.autoPlay();}};Slick.prototype.keyHandler=function(event){var _=this;if(event.keyCode===37&&_.options.accessibility===true){_.changeSlide({data:{message:"previous"}});}else{if(event.keyCode===39&&_.options.accessibility===true){_.changeSlide({data:{message:"next"}});}}};Slick.prototype.lazyLoad=function(){var _=this,loadRange,cloneRange,rangeStart,rangeEnd;function loadImages(imagesScope){$("img[data-lazy]",imagesScope).each(function(){var image=$(this),imageSource=$(this).attr("data-lazy");image.load(function(){image.animate({opacity:1},200);}).css({opacity:0}).attr("src",imageSource).removeAttr("data-lazy").removeClass("slick-loading");});}if(_.options.centerMode===true){if(_.options.infinite===true){rangeStart=_.currentSlide+(_.options.slidesToShow/2+1);rangeEnd=rangeStart+_.options.slidesToShow+2;}else{rangeStart=Math.max(0,_.currentSlide-(_.options.slidesToShow/2+1));rangeEnd=2+(_.options.slidesToShow/2+1)+_.currentSlide;}}
6077else{rangeStart=_.options.infinite?_.options.slidesToShow+_.currentSlide:_.currentSlide;rangeEnd=rangeStart+_.options.slidesToShow;if(_.options.fade===true){if(rangeStart>0){rangeStart--;}if(rangeEnd<=_.slideCount){rangeEnd++;}}}loadRange=_.$slider.find(".slick-slide").slice(rangeStart,rangeEnd);loadImages(loadRange);if(_.slideCount<=_.options.slidesToShow){cloneRange=_.$slider.find(".slick-slide");loadImages(cloneRange);}else{if(_.currentSlide>=_.slideCount-_.options.slidesToShow){cloneRange=_.$slider.find(".slick-cloned").slice(0,_.options.slidesToShow);loadImages(cloneRange);}else{if(_.currentSlide===0){cloneRange=_.$slider.find(".slick-cloned").slice(_.options.slidesToShow*-1);loadImages(cloneRange);}}}};Slick.prototype.loadSlider=function(){var _=this;_.setPosition();_.$slideTrack.css({opacity:1});_.$slider.removeClass("slick-loading");_.initUI();if(_.options.lazyLoad==="progressive"){_.progressiveLazyLoad();}};Slick.prototype.postSlide=function(index){var _=this;if(_.options.onAfterChange!==null){_.options.onAfterChange.call(this,_,index);}_.animating=false;_.setPosition();_.swipeLeft=null;if(_.options.autoplay===true&&_.paused===false){_.autoPlay();}};Slick.prototype.progressiveLazyLoad=function(){var _=this,imgCount,targetImage;imgCount=$("img[data-lazy]",_.$slider).length;if(imgCount>0){targetImage=$("img[data-lazy]",_.$slider).first();targetImage.attr("src",targetImage.attr("data-lazy")).removeClass("slick-loading").load(function(){targetImage.removeAttr("data-lazy");_.progressiveLazyLoad();}).error(function(){targetImage.removeAttr("data-lazy");_.progressiveLazyLoad();});}};Slick.prototype.refresh=function(){var _=this,currentSlide=_.currentSlide;_.destroy();$.extend(_,_.initials);_.init();_.changeSlide({data:{message:"index",index:currentSlide,}},true);};Slick.prototype.reinit=function(){var _=this;_.$slides=_.$slideTrack.children(_.options.slide).addClass("slick-slide");_.slideCount=_.$slides.length;if(_.currentSlide>=_.slideCount&&_.currentSlide!==0){_.currentSlide=_.currentSlide-_.options.slidesToScroll;}if(_.slideCount<=_.options.slidesToShow){_.currentSlide=0;}_.setProps();_.setupInfinite();_.buildArrows();_.updateArrows();_.initArrowEvents();_.buildDots();_.updateDots();_.initDotEvents();if(_.options.focusOnSelect===true){$(_.options.slide,_.$slideTrack).on("click.slick",_.selectHandler);}_.setSlideClasses(0);_.setPosition();if(_.options.onReInit!==null){_.options.onReInit.call(this,_);}};Slick.prototype.removeSlide=function(index,removeBefore,removeAll){var _=this;if(typeof(index)==="boolean"){removeBefore=index;index=removeBefore===true?0:_.slideCount-1;}else{index=removeBefore===true?--index:index;}if(_.slideCount<1||index<0||index>_.slideCount-1){return false;}_.unload();if(removeAll===true){_.$slideTrack.children().remove();}else{_.$slideTrack.children(this.options.slide).eq(index).remove();}_.$slides=_.$slideTrack.children(this.options.slide);_.$slideTrack.children(this.options.slide).detach();_.$slideTrack.append(_.$slides);_.$slidesCache=_.$slides;_.reinit();};Slick.prototype.setCSS=function(position){var _=this,positionProps={},x,y;if(_.options.rtl===true){position=-position;}x=_.positionProp=="left"?position+"px":"0px";y=_.positionProp=="top"?position+"px":"0px";positionProps[_.positionProp]=position;if(_.transformsEnabled===false){_.$slideTrack.css(positionProps);}else{positionProps={};if(_.cssTransitions===false){positionProps[_.animType]="translate("+x+", "+y+")";_.$slideTrack.css(positionProps);}else{positionProps[_.animType]="translate3d("+x+", "+y+", 0px)";_.$slideTrack.css(positionProps);}}};Slick.prototype.setDimensions=function(){var _=this;if(_.options.vertical===false){if(_.options.centerMode===true){_.$list.css({padding:("0px "+_.options.centerPadding)});}}else{_.$list.height(_.$slides.first().outerHeight(true)*_.options.slidesToShow);if(_.options.centerMode===true){_.$list.css({padding:(_.options.centerPadding+" 0px")});}}_.listWidth=_.$list.width();_.listHeight=_.$list.height();if(_.options.vertical===false&&_.options.variableWidth===false){_.slideWidth=Math.ceil(_.listWidth/_.options.slidesToShow);_.$slideTrack.width(Math.ceil((_.slideWidth*_.$slideTrack.children(".slick-slide").length)));}else{if(_.options.variableWidth===true){var trackWidth=0;
6077_.slideWidth=Math.ceil(_.listWidth/_.options.slidesToShow);_.$slideTrack.children(".slick-slide").each(function(){trackWidth+=Math.ceil($(this).outerWidth(true));});_.$slideTrack.width(Math.ceil(trackWidth)+1);}else{_.slideWidth=Math.ceil(_.listWidth);_.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true)*_.$slideTrack.children(".slick-slide").length)));}}var offset=_.$slides.first().outerWidth(true)-_.$slides.first().width();if(_.options.variableWidth===false){_.$slideTrack.children(".slick-slide").width(_.slideWidth-offset);}};Slick.prototype.setFade=function(){var _=this,targetLeft;_.$slides.each(function(index,element){targetLeft=(_.slideWidth*index)*-1;if(_.options.rtl===true){$(element).css({position:"relative",right:targetLeft,top:0,zIndex:800,opacity:0});}else{$(element).css({position:"relative",left:targetLeft,top:0,zIndex:800,opacity:0});}});_.$slides.eq(_.currentSlide).css({zIndex:900,opacity:1});};Slick.prototype.setHeight=function(){var _=this;if(_.options.slidesToShow===1&&_.options.adaptiveHeight===true&&_.options.vertical===false){var targetHeight=_.$slides.eq(_.currentSlide).outerHeight(true);_.$list.css("height",targetHeight);}};Slick.prototype.setPosition=function(){var _=this;_.setDimensions();_.setHeight();if(_.options.fade===false){_.setCSS(_.getLeft(_.currentSlide));}else{_.setFade();}if(_.options.onSetPosition!==null){_.options.onSetPosition.call(this,_);}};Slick.prototype.setProps=function(){var _=this,bodyStyle=document.body.style;_.positionProp=_.options.vertical===true?"top":"left";if(_.positionProp==="top"){_.$slider.addClass("slick-vertical");}else{_.$slider.removeClass("slick-vertical");}if(bodyStyle.WebkitTransition!==undefined||bodyStyle.MozTransition!==undefined||bodyStyle.msTransition!==undefined){if(_.options.useCSS===true){_.cssTransitions=true;}}if(bodyStyle.OTransform!==undefined){_.animType="OTransform";_.transformType="-o-transform";_.transitionType="OTransition";if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.webkitPerspective===undefined){_.animType=false;}}if(bodyStyle.MozTransform!==undefined){_.animType="MozTransform";_.transformType="-moz-transform";_.transitionType="MozTransition";if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.MozPerspective===undefined){_.animType=false;}}if(bodyStyle.webkitTransform!==undefined){_.animType="webkitTransform";_.transformType="-webkit-transform";_.transitionType="webkitTransition";if(bodyStyle.perspectiveProperty===undefined&&bodyStyle.webkitPerspective===undefined){_.animType=false;}}if(bodyStyle.msTransform!==undefined){_.animType="msTransform";_.transformType="-ms-transform";_.transitionType="msTransition";if(bodyStyle.msTransform===undefined){_.animType=false;}}if(bodyStyle.transform!==undefined&&_.animType!==false){_.animType="transform";_.transformType="transform";_.transitionType="transition";}_.transformsEnabled=(_.animType!==null&&_.animType!==false);};Slick.prototype.setSlideClasses=function(index){var _=this,centerOffset,allSlides,indexOffset,remainder;_.$slider.find(".slick-slide").removeClass("slick-active").removeClass("slick-center");allSlides=_.$slider.find(".slick-slide");if(_.options.centerMode===true){centerOffset=Math.floor(_.options.slidesToShow/2);if(_.options.infinite===true){if(index>=centerOffset&&index<=(_.slideCount-1)-centerOffset){_.$slides.slice(index-centerOffset,index+centerOffset+1).addClass("slick-active");}else{indexOffset=_.options.slidesToShow+index;allSlides.slice(indexOffset-centerOffset+1,indexOffset+centerOffset+2).addClass("slick-active");}if(index===0){allSlides.eq(allSlides.length-1-_.options.slidesToShow).addClass("slick-center");}else{if(index===_.slideCount-1){allSlides.eq(_.options.slidesToShow).addClass("slick-center");}}}_.$slides.eq(index).addClass("slick-center");}else{if(index>=0&&index<=(_.slideCount-_.options.slidesToShow)){_.$slides.slice(index,index+_.options.slidesToShow).addClass("slick-active");}else{if(allSlides.length<=_.options.slidesToShow){allSlides.addClass("slick-active");}else{remainder=_.slideCount%_.options.slidesToShow;indexOffset=_.options.infinite===true?_.options.slidesToShow+index:index;if(_.options.slidesToShow==_.options.slidesToScroll&&(_.slideCount-index)<_.options.slidesToShow){allSlides.slice(indexOffset-(_.options.slidesToShow-remainder),indexOffset+remainder).addClass("slick-active");}else{allSlides.slice(indexOffset,indexOffset+_.options.slidesToShow).addClass("slick-active");}}}}if(_.options.lazyLoad==="ondemand"){_.lazyLoad();}};Slick.prototype.setupInfinite=function(){var _=this,i,slideIndex,infiniteCount;if(_.options.fade===true){_.options.centerMode=false;}if(_.options.infinite===true&&_.options.fade===false){slideIndex=null;if(_.slideCount>_.options.slidesToShow){if(_.options.centerMode===true){infiniteCount=_.options.slidesToShow+1;}else{infiniteCount=_.options.slidesToShow;}for(i=_.slideCount;i>(_.slideCount-infiniteCount);i-=1){slideIndex=i-1;$(_.$slides[slideIndex]).clone(true).attr("id","").attr("index",slideIndex-_.slideCount).prependTo(_.$slideTrack).addClass("slick-cloned");}for(i=0;i<infiniteCount;i+=1){slideIndex=i;$(_.$slides[slideIndex]).clone(true).attr("id","").attr("index",slideIndex+_.slideCount).appendTo(_.$slideTrack).addClass("slick-cloned");}_.$slideTrack.find(".slick-cloned").find("[id]").each(function(){$(this).attr("id","");});}}};Slick.prototype.selectHandler=function(event){var _=this;
6077var index=parseInt($(event.target).parents(".slick-slide").attr("index"));if(!index){index=0;}if(_.slideCount<=_.options.slidesToShow){_.$slider.find(".slick-slide").removeClass("slick-active");_.$slides.eq(index).addClass("slick-active");if(_.options.centerMode===true){_.$slider.find(".slick-slide").removeClass("slick-center");_.$slides.eq(index).addClass("slick-center");}_.asNavFor(index);return;}_.slideHandler(index);};Slick.prototype.slideHandler=function(index,sync,dontAnimate){var targetSlide,animSlide,oldSlide,slideLeft,unevenOffset,targetLeft=null,_=this;sync=sync||false;if(_.animating===true&&_.options.waitForAnimate===true){return;}if(_.options.fade===true&&_.currentSlide===index){return;}if(_.slideCount<=_.options.slidesToShow){return;}if(sync===false){_.asNavFor(index);}targetSlide=index;targetLeft=_.getLeft(targetSlide);slideLeft=_.getLeft(_.currentSlide);_.currentLeft=_.swipeLeft===null?slideLeft:_.swipeLeft;if(_.options.infinite===false&&_.options.centerMode===false&&(index<0||index>_.getDotCount()*_.options.slidesToScroll)){if(_.options.fade===false){targetSlide=_.currentSlide;if(dontAnimate!==true){_.animateSlide(slideLeft,function(){_.postSlide(targetSlide);});}else{_.postSlide(targetSlide);}}return;}else{if(_.options.infinite===false&&_.options.centerMode===true&&(index<0||index>(_.slideCount-_.options.slidesToScroll))){if(_.options.fade===false){targetSlide=_.currentSlide;if(dontAnimate!==true){_.animateSlide(slideLeft,function(){_.postSlide(targetSlide);});}else{_.postSlide(targetSlide);}}return;}}if(_.options.autoplay===true){clearInterval(_.autoPlayTimer);}if(targetSlide<0){if(_.slideCount%_.options.slidesToScroll!==0){animSlide=_.slideCount-(_.slideCount%_.options.slidesToScroll);}else{animSlide=_.slideCount+targetSlide;}}else{if(targetSlide>=_.slideCount){if(_.slideCount%_.options.slidesToScroll!==0){animSlide=0;}else{animSlide=targetSlide-_.slideCount;}}else{animSlide=targetSlide;}}_.animating=true;if(_.options.onBeforeChange!==null&&index!==_.currentSlide){_.options.onBeforeChange.call(this,_,_.currentSlide,animSlide);}oldSlide=_.currentSlide;_.currentSlide=animSlide;_.setSlideClasses(_.currentSlide);_.updateDots();_.updateArrows();if(_.options.fade===true){if(dontAnimate!==true){_.fadeSlide(oldSlide,animSlide,function(){_.postSlide(animSlide);});}else{_.postSlide(animSlide);}return;}if(dontAnimate!==true){_.animateSlide(targetLeft,function(){_.postSlide(animSlide);});}else{_.postSlide(animSlide);}};Slick.prototype.startLoad=function(){var _=this;if(_.options.arrows===true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.hide();_.$nextArrow.hide();}if(_.options.dots===true&&_.slideCount>_.options.slidesToShow){_.$dots.hide();}_.$slider.addClass("slick-loading");};Slick.prototype.swipeDirection=function(){var xDist,yDist,r,swipeAngle,_=this;xDist=_.touchObject.startX-_.touchObject.curX;yDist=_.touchObject.startY-_.touchObject.curY;r=Math.atan2(yDist,xDist);swipeAngle=Math.round(r*180/Math.PI);if(swipeAngle<0){swipeAngle=360-Math.abs(swipeAngle);}if((swipeAngle<=45)&&(swipeAngle>=0)){return(_.options.rtl===false?"left":"right");}if((swipeAngle<=360)&&(swipeAngle>=315)){return(_.options.rtl===false?"left":"right");}if((swipeAngle>=135)&&(swipeAngle<=225)){return(_.options.rtl===false?"right":"left");}return"vertical";};Slick.prototype.swipeEnd=function(event){var _=this,slideCount;_.dragging=false;_.shouldClick=(_.touchObject.swipeLength>10)?false:true;if(_.touchObject.curX===undefined){return false;}if(_.touchObject.swipeLength>=_.touchObject.minSwipe){switch(_.swipeDirection()){case"left":_.slideHandler(_.currentSlide+_.getSlideCount());_.currentDirection=0;_.touchObject={};break;case"right":_.slideHandler(_.currentSlide-_.getSlideCount());_.currentDirection=1;_.touchObject={};break;}}else{if(_.touchObject.startX!==_.touchObject.curX){_.slideHandler(_.currentSlide);_.touchObject={};}}};Slick.prototype.swipeHandler=function(event){var _=this;if((_.options.swipe===false)||("ontouchend" in document&&_.options.swipe===false)){return;}else{if(_.options.draggable===false&&event.type.indexOf("mouse")!==-1){return;}}_.touchObject.fingerCount=event.originalEvent&&event.originalEvent.touches!==undefined?event.originalEvent.touches.length:1;_.touchObject.minSwipe=_.listWidth/_.options.touchThreshold;switch(event.data.action){case"start":_.swipeStart(event);break;case"move":_.swipeMove(event);break;case"end":_.swipeEnd(event);break;}};Slick.prototype.swipeMove=function(event){var _=this,curLeft,swipeDirection,positionOffset,touches;touches=event.originalEvent!==undefined?event.originalEvent.touches:null;if(!_.dragging||touches&&touches.length!==1){return false;}curLeft=_.getLeft(_.currentSlide);_.touchObject.curX=touches!==undefined?touches[0].pageX:event.clientX;_.touchObject.curY=touches!==undefined?touches[0].pageY:event.clientY;_.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(_.touchObject.curX-_.touchObject.startX,2)));swipeDirection=_.swipeDirection();if(swipeDirection==="vertical"){return;}if(event.originalEvent!==undefined&&_.touchObject.swipeLength>4){event.preventDefault();}positionOffset=(_.options.rtl===false?1:-1)*(_.touchObject.curX>_.touchObject.startX?1:-1);if(_.options.vertical===false){_.swipeLeft=curLeft+_.touchObject.swipeLength*positionOffset;}else{_.swipeLeft=curLeft+(_.touchObject.swipeLength*(_.$list.height()/_.listWidth))*positionOffset;}if(_.options.fade===true||_.options.touchMove===false){return false;}if(_.animating===true){_.swipeLeft=null;return false;}_.setCSS(_.swipeLeft);};Slick.prototype.swipeStart=function(event){var _=this,touches;if(_.touchObject.fingerCount!==1||_.slideCount<=_.options.slidesToShow){_.touchObject={};return false;}if(event.originalEvent!==undefined&&event.originalEvent.touches!==undefined){touches=event.originalEvent.touches[0];}_.touchObject.startX=_.touchObject.curX=touches!==undefined?touches.pageX:event.clientX;_.touchObject.startY=_.touchObject.curY=touches!==undefined?touches.pageY:event.clientY;_.dragging=true;};Slick.prototype.unfilterSlides=function(){var _=this;if(_.$slidesCache!==null){_.unload();_.$slideTrack.children(this.options.slide).detach();_.$slidesCache.appendTo(_.$slideTrack);_.reinit();}};Slick.prototype.unload=function(){var _=this;$(".slick-cloned",_.$slider).remove();if(_.$dots){_.$dots.remove();}if(_.$prevArrow&&(typeof _.options.prevArrow!=="object")){_.$prevArrow.remove();}if(_.$nextArrow&&(typeof _.options.nextArrow!=="object")){_.$nextArrow.remove();}_.$slides.removeClass("slick-slide slick-active slick-visible").css("width","");};Slick.prototype.updateArrows=function(){var _=this,centerOffset;centerOffset=Math.floor(_.options.slidesToShow/2);if(_.options.arrows===true&&_.options.infinite!==true&&_.slideCount>_.options.slidesToShow){_.$prevArrow.removeClass("slick-disabled");_.$nextArrow.removeClass("slick-disabled");if(_.currentSlide===0){_.$prevArrow.addClass("slick-disabled");_.$nextArrow.removeClass("slick-disabled");}else{if(_.currentSlide>=_.slideCount-_.options.slidesToShow&&_.options.centerMode===false){_.$nextArrow.addClass("slick-disabled");_.$prevArrow.removeClass("slick-disabled");}else{if(_.currentSlide>_.slideCount-_.options.slidesToShow+centerOffset&&_.options.centerMode===true){_.$nextArrow.addClass("slick-disabled");_.$prevArrow.removeClass("slick-disabled");}}}}};Slick.prototype.updateDots=function(){var _=this;if(_.$dots!==null){_.$dots.find("li").removeClass("slick-active");_.$dots.find("li").eq(Math.floor(_.currentSlide/_.options.slidesToScroll)).addClass("slick-active");}};$.fn.slick=function(options){var _=this;return _.each(function(index,element){element.slick=new Slick(element,options);});};$.fn.slickAdd=function(slide,slideIndex,addBefore){var _=this;return _.each(function(index,element){element.slick.addSlide(slide,slideIndex,addBefore);});};$.fn.slickCurrentSlide=function(){var _=this;return _.get(0).slick.getCurrent();};$.fn.slickFilter=function(filter){var _=this;return _.each(function(index,element){element.slick.filterSlides(filter);});};$.fn.slickGoTo=function(slide,dontAnimate){var _=this;return _.each(function(index,element){element.slick.changeSlide({data:{message:"index",index:
vendor: 25,668 bytes, lines 6077-6094
6077parseInt(slide)}},dontAnimate);});};$.fn.slickNext=function(){var _=this;return _.each(function(index,element){element.slick.changeSlide({data:{message:"next"}});});};$.fn.slickPause=function(){var _=this;return _.each(function(index,element){element.slick.autoPlayClear();element.slick.paused=true;});};$.fn.slickPlay=function(){var _=this;return _.each(function(index,element){element.slick.paused=false;element.slick.autoPlay();});};$.fn.slickPrev=function(){var _=this;return _.each(function(index,element){element.slick.changeSlide({data:{message:"previous"}});});};$.fn.slickRemove=function(slideIndex,removeBefore){var _=this;return _.each(function(index,element){element.slick.removeSlide(slideIndex,removeBefore);});};$.fn.slickRemoveAll=function(){var _=this;return _.each(function(index,element){element.slick.removeSlide(null,null,true);});};$.fn.slickGetOption=function(option){var _=this;return _.get(0).slick.options[option];};$.fn.slickSetOption=function(option,value,refresh){var _=this;return _.each(function(index,element){element.slick.options[option]=value;if(refresh===true){element.slick.unload();element.slick.reinit();}});};$.fn.slickUnfilter=function(){var _=this;return _.each(function(index,element){element.slick.unfilterSlides();});};$.fn.unslick=function(){var _=this;return _.each(function(index,element){if(element.slick){element.slick.destroy();}});};$.fn.getSlick=function(){var s=null;var _=this;_.each(function(index,element){s=element.slick;});return s;};})); 6078 /* Ende slick */ 6079 /* Start jquery.magnific-popup */ 6080 /*! Magnific Popup - v0.9.9 - 2013-12-27 6081* http://dimsemenov.com/plugins/magnific-popup/ 6082* Copyright (c) 2013 Dmitry Semenov; 6083 6084 * --GSBDocStart 6085 * @module Magnific Popup 6086 * @version 0.9.9 6087 * @see {@link http://dimsemenov.com/plugins/magnific-popup/} 6088 * @author Dmitry Semenov, 2013 6089 * @license MIT license 6090 * 6091 * @desc Responsives Lightbox & Dialog Skript mit dem Fokus auf Performanz und dem besten Erlebnis für den Nutzer auf jedem Endgerät 6092 *--GSBDocEnd 6093 */ 6094(function($){var CLOSE_EVENT="Close",BEFORE_CLOSE_EVENT="BeforeClose",AFTER_CLOSE_EVENT="AfterClose",BEFORE_APPEND_EVENT="BeforeAppend",MARKUP_PARSE_EVENT="MarkupParse",OPEN_EVENT="Open",CHANGE_EVENT="Change",NS="mfp",EVENT_NS="."+NS,READY_CLASS="mfp-ready",REMOVING_CLASS="mfp-removing",PREVENT_CLOSE_CLASS="mfp-prevent-close";var mfp,MagnificPopup=function(){},_isJQ=!!(window.jQuery),_prevStatus,_window=$(window),_body,_document,_prevContentType,_wrapClasses,_currPopupType;var _mfpOn=function(name,f){mfp.ev.on(NS+name+EVENT_NS,f);},_getEl=function(className,appendTo,html,raw){var el=document.createElement("div");el.className="mfp-"+className;if(html){el.innerHTML=html;}if(!raw){el=$(el);if(appendTo){el.appendTo(appendTo);}}else{if(appendTo){appendTo.appendChild(el);}}return el;},_mfpTrigger=function(e,data){mfp.ev.triggerHandler(NS+e,data);if(mfp.st.callbacks){e=e.charAt(0).toLowerCase()+e.slice(1);if(mfp.st.callbacks[e]){mfp.st.callbacks[e].apply(mfp,$.isArray(data)?data:[data]);}}},_getCloseBtn=function(type){if(type!==_currPopupType||!mfp.currTemplate.closeBtn){mfp.currTemplate.closeBtn=$(mfp.st.closeMarkup.replace("%title%",mfp.st.tClose));_currPopupType=type;}return mfp.currTemplate.closeBtn;},_checkInstance=function(){if(!$.magnificPopup.instance){mfp=new MagnificPopup();mfp.init();$.magnificPopup.instance=mfp;}},supportsTransitions=function(){var s=document.createElement("p").style,v=["ms","O","Moz","Webkit"];if(s["transition"]!==undefined){return true;}while(v.length){if(v.pop()+"Transition" in s){return true;}}return false;};MagnificPopup.prototype={constructor:MagnificPopup,init:function(){var appVersion=navigator.appVersion;mfp.isIE7=appVersion.indexOf("MSIE 7.")!==-1;mfp.isIE8=appVersion.indexOf("MSIE 8.")!==-1;mfp.isLowIE=mfp.isIE7||mfp.isIE8;mfp.isAndroid=(/android/gi).test(appVersion);mfp.isIOS=(/iphone|ipad|ipod/gi).test(appVersion);mfp.supportsTransition=supportsTransitions();mfp.probablyMobile=(mfp.isAndroid||mfp.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent));_document=$(document);mfp.popupsCache={};},open:function(data){if(!_body){_body=$(document.body);}var i;if(data.isObj===false){mfp.items=data.items.toArray();mfp.index=0;var items=data.items,item;for(i=0;i<items.length;i++){item=items[i];if(item.parsed){item=item.el[0];}if(item===data.el[0]){mfp.index=i;break;}}}else{mfp.items=$.isArray(data.items)?data.items:[data.items];mfp.index=data.index||0;}if(mfp.isOpen){mfp.updateItemHTML();return;}mfp.types=[];_wrapClasses="";if(data.mainEl&&data.mainEl.length){mfp.ev=data.mainEl.eq(0);}else{mfp.ev=_document;}if(data.key){if(!mfp.popupsCache[data.key]){mfp.popupsCache[data.key]={};}mfp.currTemplate=mfp.popupsCache[data.key];}else{mfp.currTemplate={};}mfp.st=$.extend(true,{},$.magnificPopup.defaults,data);mfp.fixedContentPos=mfp.st.fixedContentPos==="auto"?!mfp.probablyMobile:mfp.st.fixedContentPos;if(mfp.st.modal){mfp.st.closeOnContentClick=false;mfp.st.closeOnBgClick=false;mfp.st.showCloseBtn=false;mfp.st.enableEscapeKey=false;}if(!mfp.bgOverlay){mfp.bgOverlay=_getEl("bg").on("click"+EVENT_NS,function(){mfp.close();});mfp.wrap=_getEl("wrap").attr("tabindex",-1).on("click"+EVENT_NS,function(e){if(mfp._checkIfClose(e.target)){mfp.close();}});mfp.container=_getEl("container",mfp.wrap);}mfp.contentContainer=_getEl("content");if(mfp.st.preloader){mfp.preloader=_getEl("preloader",mfp.container,mfp.st.tLoading);}var modules=$.magnificPopup.modules;for(i=0;i<modules.length;i++){var n=modules[i];n=n.charAt(0).toUpperCase()+n.slice(1);mfp["init"+n].call(mfp);}_mfpTrigger("BeforeOpen");if(mfp.st.showCloseBtn){if(!mfp.st.closeBtnInside){mfp.wrap.append(_getCloseBtn());}else{_mfpOn(MARKUP_PARSE_EVENT,function(e,template,values,item){values.close_replaceWith=_getCloseBtn(item.type);});_wrapClasses+=" mfp-close-btn-in";}}if(mfp.st.alignTop){_wrapClasses+=" mfp-align-top";}if(mfp.fixedContentPos){mfp.wrap.css({overflow:mfp.st.overflowY,overflowX:"hidden",overflowY:mfp.st.overflowY});}else{mfp.wrap.css({top:_window.scrollTop(),position:"absolute"});}if(mfp.st.fixedBgPos===false||(mfp.st.fixedBgPos==="auto"&&!mfp.fixedContentPos)){mfp.bgOverlay.css({height:_document.height(),position:"absolute"});}if(mfp.st.enableEscapeKey){_document.on("keyup"+EVENT_NS,function(e){if(e.keyCode===27){mfp.close();}});}_window.on("resize"+EVENT_NS,function(){mfp.updateSize();});if(!mfp.st.closeOnContentClick){_wrapClasses+=" mfp-auto-cursor";}if(_wrapClasses){mfp.wrap.addClass(_wrapClasses);}var windowHeight=mfp.wH=_window.height();var windowStyles={};if(mfp.fixedContentPos){if(mfp._hasScrollBar(windowHeight)){var s=mfp._getScrollbarSize();if(s){windowStyles.marginRight=s;}}}if(mfp.fixedContentPos){if(!mfp.isIE7){windowStyles.overflow="hidden";}else{$("body, html").css("overflow","hidden");}}var classesToadd=mfp.st.mainClass;if(mfp.isIE7){classesToadd+=" mfp-ie7";}if(classesToadd){mfp._addClassToMFP(classesToadd);}mfp.updateItemHTML();_mfpTrigger("BuildControls");$("html").css(windowStyles);mfp.bgOverlay.add(mfp.wrap).prependTo(mfp.st.prependTo||_body);mfp._lastFocusedEl=document.activeElement;setTimeout(function(){if(mfp.content){mfp._addClassToMFP(READY_CLASS);mfp._setFocus();}else{mfp.bgOverlay.addClass(READY_CLASS);}_document.on("focusin"+EVENT_NS,mfp._onFocusIn);},16);mfp.isOpen=true;mfp.updateSize(windowHeight);_mfpTrigger(OPEN_EVENT);return data;},close:function(){if(!mfp.isOpen){return;}_mfpTrigger(BEFORE_CLOSE_EVENT);mfp.isOpen=false;if(mfp.st.removalDelay&&!mfp.isLowIE&&mfp.supportsTransition){mfp._addClassToMFP(REMOVING_CLASS);setTimeout(function(){mfp._close();},mfp.st.removalDelay);}else{mfp._close();}},_close:function(){_mfpTrigger(CLOSE_EVENT);var classesToRemove=REMOVING_CLASS+" "+READY_CLASS+" ";mfp.bgOverlay.detach();mfp.wrap.detach();mfp.container.empty();if(mfp.st.mainClass){classesToRemove+=mfp.st.mainClass+" ";}mfp._removeClassFromMFP(classesToRemove);if(mfp.fixedContentPos){var windowStyles={marginRight:""};if(mfp.isIE7){$("body, html").css("overflow","");}else{windowStyles.overflow="";}$("html").css(windowStyles);}_document.off("keyup"+EVENT_NS+" focusin"+EVENT_NS);mfp.ev.off(EVENT_NS);mfp.wrap.attr("class","mfp-wrap").removeAttr("style");mfp.bgOverlay.attr("class","mfp-bg");mfp.container.attr("class","mfp-container");if(mfp.st.showCloseBtn&&(!mfp.st.closeBtnInside||mfp.currTemplate[mfp.currItem.type]===true)){if(mfp.currTemplate.closeBtn){mfp.currTemplate.closeBtn.detach();}}if(mfp._lastFocusedEl){$(mfp._lastFocusedEl).focus();}mfp.currItem=null;mfp.content=null;mfp.currTemplate=null;mfp.prevHeight=0;_mfpTrigger(AFTER_CLOSE_EVENT);},updateSize:function(winHeight){if(mfp.isIOS){var zoomLevel=document.documentElement.clientWidth/window.innerWidth;var height=window.innerHeight*zoomLevel;mfp.wrap.css("height",height);mfp.wH=height;}else{mfp.wH=winHeight||_window.height();}if(!mfp.fixedContentPos){mfp.wrap.css("height",mfp.wH);}_mfpTrigger("Resize");},updateItemHTML:function(){var item=mfp.items[mfp.index];mfp.contentContainer.detach();if(mfp.content){mfp.content.detach();}if(!item.parsed){item=mfp.parseEl(mfp.index);}var type=item.type;_mfpTrigger("BeforeChange",[mfp.currItem?mfp.currItem.type:"",type]);mfp.currItem=item;if(!mfp.currTemplate[type]){var markup=mfp.st[type]?mfp.st[type].markup:false;_mfpTrigger("FirstMarkupParse",markup);if(markup){mfp.currTemplate[type]=$(markup);}else{mfp.currTemplate[type]=true;}}if(_prevContentType&&_prevContentType!==item.type){mfp.container.removeClass("mfp-"+_prevContentType+"-holder");}var newContent=mfp["get"+type.charAt(0).toUpperCase()+type.slice(1)](item,mfp.currTemplate[type]);mfp.appendContent(newContent,type);item.preloaded=true;_mfpTrigger(CHANGE_EVENT,item);_prevContentType=item.type;mfp.container.prepend(mfp.contentContainer);_mfpTrigger("AfterChange");},appendContent:function(newContent,type){mfp.content=newContent;if(newContent){if(mfp.st.showCloseBtn&&mfp.st.closeBtnInside&&mfp.currTemplate[type]===true){if(!mfp.content.find(".mfp-close").length){mfp.content.append(_getCloseBtn());}}else{mfp.content=newContent;}}else{mfp.content="";}_mfpTrigger(BEFORE_APPEND_EVENT);mfp.container.addClass("mfp-"+type+"-holder");mfp.contentContainer.append(mfp.content);},parseEl:function(index){var item=mfp.items[index],type;if(item.tagName){item={el:$(item)};}else{type=item.type;item={data:item,src:item.src};}if(item.el){var types=mfp.types;for(var i=0;i<types.length;i++){if(item.el.hasClass("mfp-"+types[i])){type=types[i];break;}}item.src=item.el.attr("data-mfp-src");if(!item.src){item.src=item.el.attr("href");}}item.type=type||mfp.st.type||"inline";item.index=index;item.parsed=true;mfp.items[index]=item;_mfpTrigger("ElementParse",item);return mfp.items[index];},addGroup:function(el,options){var eHandler=function(e){e.mfpEl=this;mfp._openClick(e,el,options);};if(!options){options={};}var eName="click.magnificPopup";options.mainEl=el;if(options.items){options.isObj=true;el.off(eName).on(eName,eHandler);}else{options.isObj=false;if(options.delegate){el.off(eName).on(eName,options.delegate,eHandler);}else{options.items=el;el.off(eName).on(eName,eHandler);}}},_openClick:function(e,el,options){var midClick=options.midClick!==undefined?options.midClick:$.magnificPopup.defaults.midClick;if(!midClick&&(e.which===2||e.ctrlKey||e.metaKey)){return;}var disableOn=options.disableOn!==undefined?options.disableOn:$.magnificPopup.defaults.disableOn;if(disableOn){if($.isFunction(disableOn)){if(!disableOn.call(mfp)){return true;}}else{if(_window.width()<disableOn){return true;}}}if(e.type){e.preventDefault();if(mfp.isOpen){e.stopPropagation();}}options.el=$(e.mfpEl);if(options.delegate){options.items=el.find(options.delegate);}mfp.open(options);},updateStatus:function(status,text){if(mfp.preloader){if(_prevStatus!==status){mfp.container.removeClass("mfp-s-"+_prevStatus);}if(!text&&status==="loading"){text=mfp.st.tLoading;}var data={status:status,text:text};_mfpTrigger("UpdateStatus",data);status=data.status;text=data.text;mfp.preloader.html(text);mfp.preloader.find("a").on("click",function(e){e.stopImmediatePropagation();});mfp.container.addClass("mfp-s-"+status);_prevStatus=status;}},_checkIfClose:function(target){if($(target).hasClass(PREVENT_CLOSE_CLASS)){return;}var closeOnContent=mfp.st.closeOnContentClick;var closeOnBg=mfp.st.closeOnBgClick;if(closeOnContent&&closeOnBg){return true;}else{if(!mfp.content||$(target).hasClass("mfp-close")||(mfp.preloader&&target===mfp.preloader[0])){return true;}if((target!==mfp.content[0]&&!$.contains(mfp.content[0],target))){if(closeOnBg){if($.contains(document,target)){return true;}}}else{if(closeOnContent){return true;}}}return false;},_addClassToMFP:function(cName){mfp.bgOverlay.addClass(cName);mfp.wrap.addClass(cName);},_removeClassFromMFP:function(cName){this.bgOverlay.removeClass(cName);mfp.wrap.removeClass(cName);},_hasScrollBar:function(winHeight){return((mfp.isIE7?_document.height():document.body.scrollHeight)>(winHeight||_window.height()));},_setFocus:function(){(mfp.st.focus?mfp.content.find(mfp.st.focus).eq(0):mfp.wrap).focus();},_onFocusIn:function(e){if(e.target!==mfp.wrap[0]&&!$.contains(mfp.wrap[0],e.target)){mfp._setFocus();return false;}},_parseMarkup:function(template,values,item){var arr;if(item.data){values=$.extend(item.data,values);}_mfpTrigger(MARKUP_PARSE_EVENT,[template,values,item]);$.each(values,function(key,value){if(value===undefined||value===false){return true;}arr=key.split("_");if(arr.length>1){var el=template.find(EVENT_NS+"-"+arr[0]);if(el.length>0){var attr=arr[1];if(attr==="replaceWith"){if(el[0]!==value[0]){el.replaceWith(value);}}else{if(attr==="img"){if(el.is("img")){el.attr("src",value);}else{el.replaceWith('<img src="'+value+'" class="'+el.attr("class")+'" />');}}else{el.attr(arr[1],value);}}}}else{template.find(EVENT_NS+"-"+key).html(value);}});},_getScrollbarSize:function(){if(mfp.scrollbarSize===undefined){var scrollDiv=document.createElement("div");scrollDiv.id="mfp-sbm";scrollDiv.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;";document.body.appendChild(scrollDiv);mfp.scrollbarSize=scrollDiv.offsetWidth-scrollDiv.clientWidth;document.body.removeChild(scrollDiv);}return mfp.scrollbarSize;}};$.magnificPopup={instance:null,proto:MagnificPopup.prototype,modules:[],open:function(options,index){_checkInstance();if(!options){options={};}else{options=$.extend(true,{},options);}options.isObj=true;options.index=index||0;return this.instance.open(options);},close:function(){return $.magnificPopup.instance&&$.magnificPopup.instance.close();},registerModule:function(name,module){if(module.options){$.magnificPopup.defaults[name]=module.options;}$.extend(this.proto,module.proto);this.modules.push(name);},defaults:{disableOn:0,key:null,midClick:false,mainClass:"",preloader:true,focus:"",closeOnContentClick:false,closeOnBgClick:true,closeBtnInside:true,showCloseBtn:true,enableEscapeKey:true,modal:false,alignTop:false,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">×</button>',tClose:"Close (Esc)",tLoading:"Loading..."}};$.fn.magnificPopup=function(options){_checkInstance();var jqEl=$(this);if(typeof options==="string"){if(options==="open"){var items,itemOpts=_isJQ?jqEl.data("magnificPopup"):jqEl[0].magnificPopup,index=parseInt(arguments[1],10)||0;if(itemOpts.items){items=itemOpts.items[index];}else{items=jqEl;if(itemOpts.delegate){items=items.find(itemOpts.delegate);}items=items.eq(index);}mfp._openClick({mfpEl:items},jqEl,itemOpts);}else{if(mfp.isOpen){mfp[options].apply(mfp,Array.prototype.slice.call(arguments,1));}}}else{options=$.extend(true,{},options);if(_isJQ){jqEl.data("magnificPopup",options);}else{jqEl[0].magnificPopup=options;}mfp.addGroup(jqEl,options);}return jqEl;};var INLINE_NS="inline",_hiddenClass,_inlinePlaceholder,_lastInlineElement,_putInlineElementsBack=function(){if(_lastInlineElement){_inlinePlaceholder.after(_lastInlineElement.addClass(_hiddenClass)).detach();_lastInlineElement=null;}};$.magnificPopup.registerModule(INLINE_NS,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){mfp.types.push(INLINE_NS);_mfpOn(CLOSE_EVENT+"."+INLINE_NS,function(){_putInlineElementsBack();});},getInline:function(item,template){_putInlineElementsBack();if(item.src){var inlineSt=mfp.st.inline,el=$(item.src);if(el.length){var parent=el[0].parentNode;if(parent&&parent.tagName){if(!_inlinePlaceholder){_hiddenClass=inlineSt.hiddenClass;_inlinePlaceholder=_getEl(_hiddenClass);_hiddenClass="mfp-"+_hiddenClass;}_lastInlineElement=el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);}mfp.updateStatus("ready");}else{mfp.updateStatus("error",inlineSt.tNotFound);el=$("<div>");}item.inlineElement=el;return el;}mfp.updateStatus("ready");mfp._parseMarkup(template,{},item);return template;}}});var AJAX_NS="ajax",_ajaxCur,_removeAjaxCursor=function(){if(_ajaxCur){_body.removeClass(_ajaxCur);}},_destroyAjaxRequest=function(){_removeAjaxCursor();if(mfp.req){mfp.req.abort();}};$.magnificPopup.registerModule(AJAX_NS,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){mfp.types.push(AJAX_NS);_ajaxCur=mfp.st.ajax.cursor;_mfpOn(CLOSE_EVENT+"."+AJAX_NS,_destroyAjaxRequest);_mfpOn("BeforeChange."+AJAX_NS,_destroyAjaxRequest);},getAjax:function(item){if(_ajaxCur){_body.addClass(_ajaxCur);}mfp.updateStatus("loading");var opts=$.extend({url:item.src,success:function(data,textStatus,jqXHR){var temp={data:data,xhr:jqXHR};_mfpTrigger("ParseAjax",temp);mfp.appendContent($(temp.data),AJAX_NS);item.finished=true;_removeAjaxCursor();mfp._setFocus();setTimeout(function(){mfp.wrap.addClass(READY_CLASS);},16);mfp.updateStatus("ready");_mfpTrigger("AjaxContentAdded");},error:function(){_removeAjaxCursor();item.finished=item.loadError=true;mfp.updateStatus("error",mfp.st.ajax.tError.replace("%url%",item.src));}},mfp.st.ajax.settings);mfp.req=$.ajax(opts);return"";}}});var _imgInterval,_getTitle=function(item){if(item.data&&item.data.title!==undefined){return item.data.title;}var src=mfp.st.image.titleSrc;if(src){if($.isFunction(src)){return src.call(mfp,item);}else{if(item.el){return item.el.attr(src)||"";}}}return"";};$.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure">'+'<div class="mfp-close"></div>'+"<figure>"+'<div class="mfp-img"></div>'+"<figcaption>"+'<div class="mfp-bottom-bar">'+'<div class="mfp-title"></div>'+'<div class="mfp-counter"></div>'+"</div>"+"</figcaption>"+"</figure>"+"</div>",cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:true,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var imgSt=mfp.st.image,ns=".image";mfp.types.push("image");_mfpOn(OPEN_EVENT+ns,function(){if(mfp.currItem.type==="image"&&imgSt.cursor){_body.addClass(imgSt.cursor);}});_mfpOn(CLOSE_EVENT+ns,function(){if(imgSt.cursor){_body.removeClass(imgSt.cursor);}_window.off("resize"+EVENT_NS);});_mfpOn("Resize"+ns,mfp.resizeImage);if(mfp.isLowIE){_mfpOn("AfterChange",mfp.resizeImage);}},resizeImage:function(){var item=mfp.currItem;if(!item||!item.img){return;}if(mfp.st.image.verticalFit){var decr=0;if(mfp.isLowIE){decr=parseInt(item.img.css("padding-top"),10)+parseInt(item.img.css("padding-bottom"),10);}item.img.css("max-height",mfp.wH-decr);}},_onImageHasSize:function(item){if(item.img){item.hasSize=true;if(_imgInterval){clearInterval(_imgInterval);}item.isCheckingImgSize=false;_mfpTrigger("ImageHasSize",item);if(item.imgHidden){if(mfp.content){mfp.content.removeClass("mfp-loading");}item.imgHidden=false;}}},findImageSize:function(item){var counter=0,img=item.img[0],mfpSetInterval=function(delay){if(_imgInterval){clearInterval(_imgInterval);}_imgInterval=setInterval(function(){if(img.naturalWidth>0){mfp._onImageHasSize(item);return;}if(counter>200){clearInterval(_imgInterval);}counter++;if(counter===3){mfpSetInterval(10);}else{if(counter===40){mfpSetInterval(50);}else{if(counter===100){mfpSetInterval(500);}}}},delay);};mfpSetInterval(1);},getImage:function(item,template){var guard=0,onLoadComplete=function(){if(item){if(item.img[0].complete){item.img.off(".mfploader");if(item===mfp.currItem){mfp._onImageHasSize(item);mfp.updateStatus("ready");}item.hasSize=true;item.loaded=true;_mfpTrigger("ImageLoadComplete");}else{guard++;if(guard<200){setTimeout(onLoadComplete,100);}else{onLoadError();}}}},onLoadError=function(){if(item){item.img.off(".mfploader");if(item===mfp.currItem){mfp._onImageHasSize(item);mfp.updateStatus("error",imgSt.tError.replace("%url%",item.src));}item.hasSize=true;item.loaded=true;item.loadError=true;}},imgSt=mfp.st.image;var el=template.find(".mfp-img");if(el.length){var img=document.createElement("img");img.className="mfp-img";item.img=$(img).on("load.mfploader",onLoadComplete).on("error.mfploader",onLoadError);img.src=item.src;if(el.is("img")){item.img=item.img.clone();}img=item.img[0];if(img.naturalWidth>0){item.hasSize=true;}else{if(!img.width){item.hasSize=false;}}}mfp._parseMarkup(template,{title:_getTitle(item),img_replaceWith:item.img},item);mfp.resizeImage();if(item.hasSize){if(_imgInterval){clearInterval(_imgInterval);}if(item.loadError){template.addClass("mfp-loading");mfp.updateStatus("error",imgSt.tError.replace("%url%",item.src));}else{template.removeClass("mfp-loading");mfp.updateStatus("ready");}return template;}mfp.updateStatus("loading");item.loading=true;if(!item.hasSize){item.imgHidden=true;template.addClass("mfp-loading");mfp.findImageSize(item);}return template;}}});var hasMozTransform,getHasMozTransform=function(){if(hasMozTransform===undefined){hasMozTransform=document.createElement("p").style.MozTransform!==undefined;}return hasMozTransform;};$.magnificPopup.registerModule("zoom",{options:{enabled:false,easing:"ease-in-out",duration:300,opener:function(element){return element.is("img")?element:element.find("img");}},proto:{initZoom:function(){var zoomSt=mfp.st.zoom,ns=".zoom",image;if(!zoomSt.enabled||!mfp.supportsTransition){return;}var duration=zoomSt.duration,getElToAnimate=function(image){var newImg=image.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),transition="all "+(zoomSt.duration/1000)+"s "+zoomSt.easing,cssObj={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},t="transition";cssObj["-webkit-"+t]=cssObj["-moz-"+t]=cssObj["-o-"+t]=cssObj[t]=transition;newImg.css(cssObj);return newImg;},showMainContent=function(){mfp.content.css("visibility","visible");},openTimeout,animatedImg;_mfpOn("BuildControls"+ns,function(){if(mfp._allowZoom()){clearTimeout(openTimeout);mfp.content.css("visibility","hidden");image=mfp._getItemToZoom();if(!image){showMainContent();return;}animatedImg=getElToAnimate(image);animatedImg.css(mfp._getOffset());mfp.wrap.append(animatedImg);openTimeout=setTimeout(function(){animatedImg.css(mfp._getOffset(true));openTimeout=setTimeout(function(){showMainContent();setTimeout(function(){animatedImg.remove();image=animatedImg=null;_mfpTrigger("ZoomAnimationEnded");},16);},duration);},16);}});_mfpOn(BEFORE_CLOSE_EVENT+ns,function(){if(mfp._allowZoom()){clearTimeout(openTimeout);mfp.st.removalDelay=duration;if(!image){image=mfp._getItemToZoom();if(!image){return;}animatedImg=getElToAnimate(image);}animatedImg.css(mfp._getOffset(true));mfp.wrap.append(animatedImg);mfp.content.css("visibility","hidden");setTimeout(function(){animatedImg.css(mfp._getOffset());},16);}});_mfpOn(CLOSE_EVENT+ns,function(){if(mfp._allowZoom()){showMainContent();if(animatedImg){animatedImg.remove();}image=null;}});},_allowZoom:function(){return mfp.currItem.type==="image";},_getItemToZoom:function(){if(mfp.currItem.hasSize){return mfp.currItem.img;}else{return false;}},_getOffset:function(isLarge){var el;if(isLarge){el=mfp.currItem.img;}else{el=mfp.st.zoom.opener(mfp.currItem.el||mfp.currItem);}var offset=el.offset();var paddingTop=parseInt(el.css("padding-top"),10);var paddingBottom=parseInt(el.css("padding-bottom"),10);offset.top-=($(window).scrollTop()-paddingTop);var obj={width:el.width(),height:(_isJQ?el.innerHeight():el[0].offsetHeight)-paddingBottom-paddingTop};if(getHasMozTransform()){obj["-moz-transform"]=obj["transform"]="translate("+offset.left+"px,"+offset.top+"px)";}else{obj.left=offset.left;obj.top=offset.top;}return obj;}}});var IFRAME_NS="iframe",_emptyPage="//about:blank",_fixIframeBugs=function(isShowing){if(mfp.currTemplate[IFRAME_NS]){var el=mfp.currTemplate[IFRAME_NS].find("iframe");if(el.length){if(!isShowing){el[0].src=_emptyPage;}if(mfp.isIE8){el.css("display",isShowing?"block":"none");}}}};$.magnificPopup.registerModule(IFRAME_NS,{options:{markup:'<div class="mfp-iframe-scaler">'+'<div class="mfp-close"></div>'+'<iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe>'+"</div>",srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){mfp.types.push(IFRAME_NS);_mfpOn("BeforeChange",function(e,prevType,newType){if(prevType!==newType){if(prevType===IFRAME_NS){_fixIframeBugs();}else{if(newType===IFRAME_NS){_fixIframeBugs(true);}}}});_mfpOn(CLOSE_EVENT+"."+IFRAME_NS,function(){_fixIframeBugs();});},getIframe:function(item,template){var embedSrc=item.src;var iframeSt=mfp.st.iframe;$.each(iframeSt.patterns,function(){if(embedSrc.indexOf(this.index)>
6094-1){if(this.id){if(typeof this.id==="string"){embedSrc=embedSrc.substr(embedSrc.lastIndexOf(this.id)+this.id.length,embedSrc.length);}else{embedSrc=this.id.call(this,embedSrc);}}embedSrc=this.src.replace("%id%",embedSrc);return false;}});var dataObj={};if(iframeSt.srcAction){dataObj[iframeSt.srcAction]=embedSrc;}mfp._parseMarkup(template,dataObj,item);mfp.updateStatus("ready");return template;}}});var _getLoopedId=function(index){var numSlides=mfp.items.length;if(index>numSlides-1){return index-numSlides;}else{if(index<0){return numSlides+index;}}return index;},_replaceCurrTotal=function(text,curr,total){return text.replace(/%curr%/gi,curr+1).replace(/%total%/gi,total);};$.magnificPopup.registerModule("gallery",{options:{enabled:false,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:true,arrows:true,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var gSt=mfp.st.gallery,ns=".mfp-gallery",supportsFastClick=Boolean($.fn.mfpFastClick);mfp.direction=true;if(!gSt||!gSt.enabled){return false;}_wrapClasses+=" mfp-gallery";_mfpOn(OPEN_EVENT+ns,function(){if(gSt.navigateByImgClick){mfp.wrap.on("click"+ns,".mfp-img",function(){if(mfp.items.length>1){mfp.next();return false;}});}_document.on("keydown"+ns,function(e){if(e.keyCode===37){mfp.prev();}else{if(e.keyCode===39){mfp.next();}}});});_mfpOn("UpdateStatus"+ns,function(e,data){if(data.text){data.text=_replaceCurrTotal(data.text,mfp.currItem.index,mfp.items.length);}});_mfpOn(MARKUP_PARSE_EVENT+ns,function(e,element,values,item){var l=mfp.items.length;values.counter=l>1?_replaceCurrTotal(gSt.tCounter,item.index,l):"";});_mfpOn("BuildControls"+ns,function(){if(mfp.items.length>1&&gSt.arrows&&!mfp.arrowLeft){var markup=gSt.arrowMarkup,arrowLeft=mfp.arrowLeft=$(markup.replace(/%title%/gi,gSt.tPrev).replace(/%dir%/gi,"left")).addClass(PREVENT_CLOSE_CLASS),arrowRight=mfp.arrowRight=$(markup.replace(/%title%/gi,gSt.tNext).replace(/%dir%/gi,"right")).addClass(PREVENT_CLOSE_CLASS);var eName=supportsFastClick?"mfpFastClick":"click";arrowLeft[eName](function(){mfp.prev();});arrowRight[eName](function(){mfp.next();});if(mfp.isIE7){_getEl("b",arrowLeft[0],false,true);_getEl("a",arrowLeft[0],false,true);_getEl("b",arrowRight[0],false,true);_getEl("a",arrowRight[0],false,true);}mfp.container.append(arrowLeft.add(arrowRight));}});_mfpOn(CHANGE_EVENT+ns,function(){if(mfp._preloadTimeout){clearTimeout(mfp._preloadTimeout);}mfp._preloadTimeout=setTimeout(function(){mfp.preloadNearbyImages();mfp._preloadTimeout=null;},16);});_mfpOn(CLOSE_EVENT+ns,function(){_document.off(ns);mfp.wrap.off("click"+ns);if(mfp.arrowLeft&&supportsFastClick){mfp.arrowLeft.add(mfp.arrowRight).destroyMfpFastClick();}mfp.arrowRight=mfp.arrowLeft=null;});},next:function(){mfp.direction=true;mfp.index=_getLoopedId(mfp.index+1);mfp.updateItemHTML();},prev:function(){mfp.direction=false;mfp.index=_getLoopedId(mfp.index-1);mfp.updateItemHTML();},goTo:function(newIndex){mfp.direction=(newIndex>=mfp.index);mfp.index=newIndex;mfp.updateItemHTML();},preloadNearbyImages:function(){var p=mfp.st.gallery.preload,preloadBefore=Math.min(p[0],mfp.items.length),preloadAfter=Math.min(p[1],mfp.items.length),i;for(i=1;i<=(mfp.direction?preloadAfter:preloadBefore);i++){mfp._preloadItem(mfp.index+i);}for(i=1;i<=(mfp.direction?preloadBefore:preloadAfter);i++){mfp._preloadItem(mfp.index-i);}},_preloadItem:function(index){index=_getLoopedId(index);if(mfp.items[index].preloaded){return;}var item=mfp.items[index];if(!item.parsed){item=mfp.parseEl(index);}_mfpTrigger("LazyLoad",item);if(item.type==="image"){item.img=$('<img class="mfp-img" />').on("load.mfploader",function(){item.hasSize=true;}).on("error.mfploader",function(){item.hasSize=true;item.loadError=true;_mfpTrigger("LazyLoadError",item);}).attr("src",item.src);}item.preloaded=true;}}});var RETINA_NS="retina";$.magnificPopup.registerModule(RETINA_NS,{options:{replaceSrc:function(item){return item.src.replace(/\.\w+$/,function(m){return"@2x"+m;});},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var st=mfp.st.retina,ratio=st.ratio;
6094ratio=!isNaN(ratio)?ratio:ratio();if(ratio>1){_mfpOn("ImageHasSize"+"."+RETINA_NS,function(e,item){item.img.css({"max-width":item.img[0].naturalWidth/ratio,"width":"100%"});});_mfpOn("ElementParse"+"."+RETINA_NS,function(e,item){item.src=st.replaceSrc(item,ratio);});}}}}});(function(){var ghostClickDelay=1000,supportsTouch="ontouchstart" in window,unbindTouchMove=function(){_window.off("touchmove"+ns+" touchend"+ns);},eName="mfpFastClick",ns="."+eName;$.fn.mfpFastClick=function(callback){return $(this).each(function(){var elem=$(this),lock;if(supportsTouch){var timeout,startX,startY,pointerMoved,point,numPointers;elem.on("touchstart"+ns,function(e){pointerMoved=false;numPointers=1;point=e.originalEvent?e.originalEvent.touches[0]:e.touches[0];startX=point.clientX;startY=point.clientY;_window.on("touchmove"+ns,function(e){point=e.originalEvent?e.originalEvent.touches:e.touches;numPointers=point.length;point=point[0];if(Math.abs(point.clientX-startX)>10||Math.abs(point.clientY-startY)>10){pointerMoved=true;unbindTouchMove();}}).on("touchend"+ns,function(e){unbindTouchMove();if(pointerMoved||numPointers>1){return;}lock=true;e.preventDefault();clearTimeout(timeout);timeout=setTimeout(function(){lock=false;},ghostClickDelay);callback();});});}elem.on("click"+ns,function(){if(!lock){callback();}});});};$.fn.destroyMfpFastClick=function(){$(this).off("touchstart"+ns+" click"+ns);if(supportsTouch){_window.off("touchmove"+ns+" touchend"+ns);}};})();_checkInstance();})(window.jQuery||window.Zepto); 6095 /* Ende jquery.magnific-popup */ 6096 /* Start picturefill */ 6097 /*! Picturefill - v2.2.0 - 2014-10-30 6098 * http://scottjehl.github.io/picturefill 6099 * Copyright (c) 2014 https://github.com/scottjehl/picturefill/blob/master/Authors.txt; Licensed MIT 6100 * --GSBDocStart 6101 * @module picturefill 6102 * @version 2.2.0 6103 * @see {@link http://scottjehl.github.io/picturefill} 6104 * @author Scott Jehl, Paul Irish, Nicholas Zakas, David Knight, 2012 6105 * @license MIT license 6106 * 6107 * @desc matchMedia() polyfill - Test a CSS media type/query in JS 6108 *--GSBDocEnd 6109*/ 6110/*! matchMedia() polyfill - Test a CSS media type/query in JS. Authors & copyright (c) 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. Dual MIT/BSD license */ 6111window.matchMedia||(window.matchMedia=function(){var styleMedia=(window.styleMedia||window.media);if(!styleMedia){var style=document.createElement("style"),script=document.getElementsByTagName("script")[0],info=null;style.type="text/css";style.id="matchmediajs-test";script.parentNode.insertBefore(style,script);info=("getComputedStyle" in window)&&window.getComputedStyle(style,null)||style.currentStyle;styleMedia={matchMedium:function(media){var text="@media "+media+"{ #matchmediajs-test { width: 1px; } }";if(style.styleSheet){style.styleSheet.cssText=text;}else{style.textContent=text;}return info.width==="1px";}};}return function(media){return{matches:styleMedia.matchMedium(media||"all"),media:media||"all"};};}()); 6112/*! Picturefill - Responsive Images that work today. 6113 * Author: Scott Jehl, Filament Group, 2012 ( new proposal implemented by Shawn Jansepar ) 6114 * License: MIT/GPLv2 6115 * Spec: http://picture.responsiveimages.org/ 6116 */ 6117(function(w,doc,image){if(w.HTMLPictureElement){w.picturefill=function(){};return;}doc.createElement("picture");var pf={};pf.ns="picturefill";(function(){pf.srcsetSupported="srcset" in image;pf.sizesSupported="sizes" in image;})();pf.trim=function(str){return str.trim?str.trim():str.replace(/^\s+|\s+$/g,"");};pf.endsWith=function(str,suffix){return str.endsWith?str.endsWith(suffix):str.indexOf(suffix,str.length-suffix.length)!==-1;};pf.restrictsMixedContent=function(){return w.location.protocol==="https:";};pf.matchesMedia=function(media){return w.matchMedia&&w.matchMedia(media).matches;};pf.getDpr=function(){return(w.devicePixelRatio||1);};pf.getWidthFromLength=function(length){length=length&&length.indexOf("%")>-1===false&&(parseFloat(length)>0||length.indexOf("calc(")>-1)?length:"100vw";length=length.replace("vw","%");if(!pf.lengthEl){pf.lengthEl=doc.createElement("div");pf.lengthEl.style.cssText="border:0;display:block;font-size:1em;
6117left:0;margin:0;padding:0;position:absolute;visibility:hidden";}pf.lengthEl.style.width=length;doc.body.appendChild(pf.lengthEl);pf.lengthEl.className="helper-from-picturefill-js";if(pf.lengthEl.offsetWidth<=0){pf.lengthEl.style.width=doc.documentElement.offsetWidth+"px";}var offsetWidth=pf.lengthEl.offsetWidth;doc.body.removeChild(pf.lengthEl);return offsetWidth;};pf.types={};pf.types["image/jpeg"]=true;pf.types["image/gif"]=true;pf.types["image/png"]=true;pf.types["image/svg+xml"]=doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Image","1.1");pf.types["image/webp"]=function(){var type="image/webp";image.onerror=function(){pf.types[type]=false;picturefill();};image.onload=function(){pf.types[type]=image.width===1;picturefill();};image.src="data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=";};pf.verifyTypeSupport=function(source){var type=source.getAttribute("type");if(type===null||type===""){return true;}else{if(typeof(pf.types[type])==="function"){pf.types[type]();return"pending";}else{return pf.types[type];}}};pf.parseSize=function(sourceSizeStr){var match=/(\([^)]+\))?\s*(.+)/g.exec(sourceSizeStr);return{media:match&&match[1],length:match&&match[2]};};pf.findWidthFromSourceSize=function(sourceSizeListStr){var sourceSizeList=pf.trim(sourceSizeListStr).split(/\s*,\s*/),winningLength;for(var i=0,len=sourceSizeList.length;i<len;i++){var sourceSize=sourceSizeList[i],parsedSize=pf.parseSize(sourceSize),length=parsedSize.length,media=parsedSize.media;if(!length){continue;}if(!media||pf.matchesMedia(media)){winningLength=length;break;}}return pf.getWidthFromLength(winningLength);};pf.parseSrcset=function(srcset){var candidates=[];while(srcset!==""){srcset=srcset.replace(/^\s+/g,"");var pos=srcset.search(/\s/g),url,descriptor=null;if(pos!==-1){url=srcset.slice(0,pos);var last=url.slice(-1);if(last===","||url===""){url=url.replace(/,+$/,"");descriptor="";}srcset=srcset.slice(pos+1);if(descriptor===null){var descpos=srcset.indexOf(",");if(descpos!==-1){descriptor=srcset.slice(0,descpos);srcset=srcset.slice(descpos+1);}else{descriptor=srcset;srcset="";}}}else{url=srcset;srcset="";}if(url||descriptor){candidates.push({url:url,descriptor:descriptor});}}return candidates;};pf.parseDescriptor=function(descriptor,sizesattr){var sizes=sizesattr||"100vw",sizeDescriptor=descriptor&&descriptor.replace(/(^\s+|\s+$)/g,""),widthInCssPixels=pf.findWidthFromSourceSize(sizes),resCandidate;if(sizeDescriptor){var splitDescriptor=sizeDescriptor.split(" ");for(var i=splitDescriptor.length-1;i>=0;i--){var curr=splitDescriptor[i],lastchar=curr&&curr.slice(curr.length-1);if((lastchar==="h"||lastchar==="w")&&!pf.sizesSupported){resCandidate=parseFloat((parseInt(curr,10)/widthInCssPixels));}else{if(lastchar==="x"){var res=curr&&parseFloat(curr,10);resCandidate=res&&!isNaN(res)?res:1;}}}}return resCandidate||1;};pf.getCandidatesFromSourceSet=function(srcset,sizes){var candidates=pf.parseSrcset(srcset),formattedCandidates=[];for(var i=0,len=candidates.length;i<len;i++){var candidate=candidates[i];formattedCandidates.push({url:candidate.url,resolution:pf.parseDescriptor(candidate.descriptor,sizes)});}return formattedCandidates;};pf.dodgeSrcset=function(img){if(img.srcset){img[pf.ns].srcset=img.srcset;img.removeAttribute("srcset");}};pf.processSourceSet=function(el){var srcset=el.getAttribute("srcset"),sizes=el.getAttribute("sizes"),candidates=[];if(el.nodeName.toUpperCase()==="IMG"&&el[pf.ns]&&el[pf.ns].srcset){srcset=el[pf.ns].srcset;}if(srcset){candidates=pf.getCandidatesFromSourceSet(srcset,sizes);}return candidates;};pf.applyBestCandidate=function(candidates,picImg){var candidate,length,bestCandidate;candidates.sort(pf.ascendingSort);length=candidates.length;bestCandidate=candidates[length-1];for(var i=0;i<length;i++){candidate=candidates[i];if(candidate.resolution>=pf.getDpr()){bestCandidate=candidate;break;}}if(bestCandidate&&!pf.endsWith(picImg.src,bestCandidate.url)){if(pf.restrictsMixedContent()&&bestCandidate.url.substr(0,"http:".length).toLowerCase()==="http:"){if(typeof console!==undefined){console.warn("Blocked mixed content image "+bestCandidate.url);}}else{picImg.src=bestCandidate.url;picImg.currentSrc=picImg.src;var style=picImg.style||{},WebkitBackfaceVisibility="webkitBackfaceVisibility" in style,currentZoom=style.zoom;if(WebkitBackfaceVisibility){style.zoom=".999";WebkitBackfaceVisibility=picImg.offsetWidth;style.zoom=currentZoom;}}}};pf.ascendingSort=function(a,b){return a.resolution-b.resolution;};pf.removeVideoShim=function(picture){var videos=picture.getElementsByTagName("video");if(videos.length){var video=videos[0],vsources=video.getElementsByTagName("source");while(vsources.length){picture.insertBefore(vsources[0],video);}video.parentNode.removeChild(video);}};pf.getAllElements=function(){var elems=[],imgs=doc.getElementsByTagName("img");for(var h=0,len=imgs.length;h<len;
6117h++){var currImg=imgs[h];if(currImg.parentNode.nodeName.toUpperCase()==="PICTURE"||(currImg.getAttribute("srcset")!==null)||currImg[pf.ns]&&currImg[pf.ns].srcset!==null){elems.push(currImg);}}return elems;};pf.getMatch=function(img,picture){var sources=picture.childNodes,match;for(var j=0,slen=sources.length;j<slen;j++){var source=sources[j];if(source.nodeType!==1){continue;}if(source===img){return match;}if(source.nodeName.toUpperCase()!=="SOURCE"){continue;}if(source.getAttribute("src")!==null&&typeof console!==undefined){console.warn("The `src` attribute is invalid on `picture` `source` element; instead, use `srcset`.");}var media=source.getAttribute("media");if(!source.getAttribute("srcset")){continue;}if((!media||pf.matchesMedia(media))){var typeSupported=pf.verifyTypeSupport(source);if(typeSupported===true){match=source;break;}else{if(typeSupported==="pending"){return false;}}}}return match;};function picturefill(opt){var elements,element,parent,firstMatch,candidates,options=opt||{};elements=options.elements||pf.getAllElements();for(var i=0,plen=elements.length;i<plen;i++){element=elements[i];parent=element.parentNode;firstMatch=undefined;candidates=undefined;if(element.nodeName.toUpperCase()!=="IMG"){continue;}if(!element[pf.ns]){element[pf.ns]={};}if(!options.reevaluate&&element[pf.ns].evaluated){continue;}if(parent.nodeName.toUpperCase()==="PICTURE"){pf.removeVideoShim(parent);firstMatch=pf.getMatch(element,parent);if(firstMatch===false){continue;}}else{firstMatch=undefined;}if(parent.nodeName.toUpperCase()==="PICTURE"||(element.srcset&&!pf.srcsetSupported)||(!pf.sizesSupported&&(element.srcset&&element.srcset.indexOf("w")>-1))){pf.dodgeSrcset(element);}if(firstMatch){candidates=pf.processSourceSet(firstMatch);pf.applyBestCandidate(candidates,element);}else{candidates=pf.processSourceSet(element);if(element.srcset===undefined||element[pf.ns].srcset){pf.applyBestCandidate(candidates,element);}}element[pf.ns].evaluated=true;}}function runPicturefill(){picturefill();var intervalId=setInterval(function(){picturefill();if(/^loaded|^i|^c/.test(doc.readyState)){clearInterval(intervalId);return;}},250);function checkResize(){var resizeThrottle;if(!w._picturefillWorking){w._picturefillWorking=true;w.clearTimeout(resizeThrottle);resizeThrottle=w.setTimeout(function(){picturefill({reevaluate:true});w._picturefillWorking=false;},60);}}if(w.addEventListener){w.addEventListener("resize",checkResize,false);}else{if(w.attachEvent){w.attachEvent("onresize",checkResize);}}}runPicturefill();picturefill._=pf;if(typeof module==="object"&&typeof module.exports==="object"){module.exports=picturefill;}else{if(typeof define==="function"&&define.amd){define(function(){return picturefill;});}else{if(typeof w==="object"){w.picturefill=picturefill;}}}})(this,this.document,new this.Image()); 6118 /* Ende picturefill */ 6119 /* Start cookie */ 6120 (function(factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory);}else{if(typeof exports==="object"){factory(require("jquery"));}else{factory(jQuery);}}}(function($){var pluses=/\+/g;function encode(s){return config.raw?s:encodeURIComponent(s);}function decode(s){return config.raw?s:decodeURIComponent(s);}function stringifyCookieValue(value){return encode(config.json?JSON.stringify(value):String(value));}function parseCookieValue(s){if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\");}try{s=decodeURIComponent(s.replace(pluses," "));return config.json?JSON.parse(s):s;}catch(e){}}function read(s,converter){var value=config.raw?s:parseCookieValue(s);return $.isFunction(converter)?converter(value):value;}var config=$.cookie=function(key,value,options){if(value!==undefined&&!$.isFunction(value)){options=$.extend({},config.defaults,options);if(typeof options.expires==="number"){var days=options.expires,t=options.expires=new Date();t.setTime(+t+days*86400000);}return(document.cookie=[encode(key),"=",stringifyCookieValue(value),options.expires?"; expires="+options.expires.toUTCString():"",options.path?"; path="+options.path:"",options.domain?"; domain="+options.domain:"",options.secure?"; secure":""].join(""));}var result=key?undefined:{};var cookies=document.cookie?document.cookie.split("; "):[];for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split("=");var name=decode(parts.shift());var cookie=parts.join("=");if(key&&key===name){result=read(cookie,value);break;}if(!key&&(cookie=read(cookie))!==undefined){result[name]=cookie;}}return result;};config.defaults={};
6120$.removeCookie=function(key,options){if($.cookie(key)===undefined){return false;}$.cookie(key,"",$.extend({},options,{expires:-1}));return !$.cookie(key);};})); 6121 /* Ende cookie */ 6122 /* Start gsb_autosuggest */ 6123 /*! 6124 * Optionen: 6125 * minInputLength: Ab wieviel eingegebenen Zeichen werden Vorschlaege ausgegeben (optional (default: 2)) 6126 * 6127 * --GSBDocStart 6128 * @module gsb_autosuggest 6129 * @version 1.0.0 6130 * @see {@link http://semver.org|Semantic Versioning} 6131 * @author gsb 6132 * 6133 * @desc GSB-Plugin zur Darstellung von Suchvorschlaegen 6134 * Skript stellt die Autovervollständigung für Solr-Suche bereit 6135 * 6136 * @option 6137 * minInputLength: Ab wieviel eingegebenen Zeichen werden Vorschlaege ausgegeben (optional (default: 2)) 6138 * 6139 * @init 6140 * base.init = function (options) { 6141 * base.actionUrl = actionUrl; 6142 * base.options = $.extend({}, $.gsb.AutoSuggest.defaultOptions, options); 6143 *--GSBDocEnd 6144 */ 6145(function($){if(!$.gsb){$.gsb={};}$.gsb.AutoSuggestBoxCounter=1;$.gsb.AutoSuggest=function(el,actionUrl,options){var base=this;base.$el=$(el);base.el=el;base.boxNumber=$.gsb.AutoSuggestBoxCounter++;base.$input=base.$el.find("input[type=text]:first");base.$submit=base.$el.find("input[type=submit]:first");if(base.$submit.length==0){base.$submit=base.$el.find("input[type=image]:first");}base.$el.data("gsb.AutoSuggest",base);base.reqQuery=false;base.queries=[];base.enterPos=-1;base.debug=false;base.init=function(options){base.actionUrl=actionUrl;base.options=$.extend({},$.gsb.AutoSuggest.defaultOptions,options);var positions=base.$input.position();base.$box=$('<p id="searchAutoSuggestBox'+base.boxNumber+'" class="searchAutoSuggestBox"></p>');base.$box.css({"width":(base.$input.outerWidth()-2)+"px","top":(positions.top+base.$input.outerHeight())+"px","left":positions.left+"px"});base.$box.hide();$(window).resize(function(){positions=base.$input.position();base.$box.css({"top":(positions.top+base.$input.outerHeight())+"px","left":positions.left+"px"});});base.$input.attr("autocomplete","off");base.$input.get(0).onkeydown=function(e){e=e||window.event;if(e){var code=(e.keyCode!=undefined&&null!=e.keyCode?e.keyCode:e.which);if(code==13){return base.keydownEnter();}else{if(code==38){return base.keydownUp();}else{if(code==40){return base.keydownDown();}}}}};base.$input.get(0).onkeyup=function(e){var go=false;e=e||window.event;if(e){var code=(e.keyCode!=undefined&&null!=e.keyCode?e.keyCode:e.which);if(code!=13&&code!=38&&code!=40){go=true;}}else{go=true;}if(go){if(base.$input.val().length>=base.options.minInputLength){base.query(base.$input.val());}else{base.showSuggestionBox(false);}}};base.$input.after(base.$box);base.$box=base.$el.find("#searchAutoSuggestBox"+base.boxNumber);base.$input.bind("blur",function(){base.showSuggestionBox(false);});};base.query=function(value){base.reqQuery=value;if(typeof base.queries[base.reqQuery]=="undefined"){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log('AutoSuggest-AJAX-Anfrage für "'+base.reqQuery+'"');}$.ajax({url:base.actionUrl,dataType:"json",data:{"userQuery":value},error:function(jqXHR,textStatus,errorThrown){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log("AJAX Fehler beim Abruf der JSON-Resource "+base.actionUrl+": "+textStatus+" :: "+errorThrown);}},success:function(data){base.queries[value]=data.suggestions;if(base.reqQuery==value){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log('AJAX-Antwort für "'+base.reqQuery+'" wird nun verarbeitet...');}if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log(data);}base.showSuggestions(data.suggestions);}else{if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log('AJAX-Antwort für "'+base.reqQuery+'" ist nicht mehr relevant...');}}}});}else{base.showSuggestions(base.queries[base.reqQuery]);}};base.showSuggestions=function(suggestions){base.$box.empty();var count=0;for(var s in suggestions){if(suggestions.hasOwnProperty(s)&&suggestions[s].name){var $link=$('<a href="#"></a>');$link.html(suggestions[s].name);$link.click(function(e){e.preventDefault();base.$input.val($(this).text());base.$submit.click();});$link.appendTo(base.$box);count++;}}if(count>0){base.showSuggestionBox(true);}else{base.showSuggestionBox(false);}};base.showSuggestionBox=function(show){base.enterPos=-1;if(show){base.$box.fadeIn("fast");}else{base.$box.fadeOut("fast");}};
6145base.keydownDown=function(){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log("KEYDOWN down");}if(base.enterPos<0&&base.$box.find("a").length>0){base.$box.find("a").removeClass("active");base.enterPos=0;$(base.$box.find("a")[base.enterPos]).addClass("active");}else{if(base.enterPos<base.$box.find("a").length-1){base.$box.find("a").removeClass("active");base.enterPos++;$(base.$box.find("a")[base.enterPos]).addClass("active");}}};base.keydownUp=function(){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log("KEYDOWN up");}if(base.enterPos<0&&base.$box.find("a").length>0){base.$box.find("a").removeClass("active");base.enterPos=base.$box.find("a").length-1;$(base.$box.find("a")[base.enterPos]).addClass("active");}else{if(base.enterPos>0){base.$box.find("a").removeClass("active");base.enterPos--;$(base.$box.find("a")[base.enterPos]).addClass("active");}}};base.keydownEnter=function(){if(base.debug&&typeof console!="undefined"&&console&&console.log){console.log("KEYDOWN enter");}if(base.enterPos>=0&&base.$box.find("a").length>base.enterPos){base.$box.find("a")[base.enterPos].click();return false;}};base.init(options);};$.gsb.AutoSuggest.defaultOptions={minInputLength:2};$.fn.gsb_AutoSuggest=function(actionUrl,options){return this.each(function(){new $.gsb.AutoSuggest(this,actionUrl,options);});};})(jQuery); 6146 /* Ende gsb_autosuggest */ 6147 /* Start gsb_banner */ 6148 (function($){if(!$.gsb){$.gsb={};}$.gsb.banner=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.banner",base);base.init=function(){base.options=$.extend({},$.gsb.banner.defaultOptions,options);base.$el.gsb_responsiveListener(base);};base.show=function(){if(base.options.animation){if(base.options.position=="top"){base.$el.animate({top:0},base.options.animationSpeed);}else{base.$el.animate({bottom:0},base.options.animationSpeed);}}else{base.$el.css(base.options.position,0);}};$.gsb.banner.prototype.createBanner=function(){var bannerHeight=base.$el.outerHeight()+base.options.topOffset;base.$el.css(base.options.position,-bannerHeight);if(!$.cookie(base.options.cookieName)){base.show();$.cookie(base.options.cookieName,"visible",{expires:base.options.cookieLifeTimeInDaysVisible,path:"/"});}else{if($.cookie(base.options.cookieName)==="visible"){base.show();}else{base.$el.css("display","none");}}base.$el.find(base.options.buttonClass).click(function(e){e.preventDefault();e.stopPropagation();if(base.options.animation){if(base.options.position=="top"){base.$el.animate({top:-bannerHeight},base.options.animationSpeed,function(){base.$el.css("display","none");});}else{base.$el.animate({bottom:-bannerHeight},base.options.animationSpeed,function(){base.$el.css("display","none");});}}else{base.$el.css("display","none");}$.cookie(base.options.cookieName,"closed",{expires:base.options.cookieLifeTimeInDaysClosed,path:"/"});});};base.init();};$.gsb.banner.defaultOptions={animation:typeof(animation)=="undefined"?false:animation,animationSpeed:1800,position:typeof(position)=="undefined"?"bottom":position,topOffset:20,buttonClass:".close",cookieName:"gsbbanner",cookieLifeTimeInDaysVisible:5,cookieLifeTimeInDaysClosed:5,respondToEvents:true,onRefresh:function(){this.createBanner();}};$.fn.gsb_banner=function(options){return this.each(function(){(new $.gsb.banner(this,options));});};})(jQuery); 6149 /* Ende gsb_banner */ 6150 /* Start gsb_calendar */ 6151 /*! 6152* --GSBDocStart 6153 * @module gsb_calendar 6154 * @version 1.0.0 6155 * @see {@link http://semver.org|Semantic Versioning} 6156 * @author pespeloe 6157 * 6158 * @desc Kalendar-Modul für die Marginalspalte 6159 * GSB-Plugin zur Animation und zum Nachladen von Kalender 6160 * 6161 * @init 6162 * $('#supplement .live-calendar').gsb_calendar({ 6163 * beforeInit: function(){ 6164 * $('#supplement .live-calendar').find('.has-tip').each(function(_, el){ 6165 * $('#' + $(el).attr('aria-describedby')).remove(); 6166 * }); 6167 * }, 6168 * afterInit: function afterInit(){ 6169 * $('#supplement .live-calendar').find('abbr, acronym').gsb_tooltip().foundation(); 6170 * } 6171 * }); 6172 *--GSBDocEnd 6173 */ 6174(function($){if(!$.gsb){$.gsb={};}$.gsb.calendar=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.calendar",base);base.init=function(){base.options=$.extend({},$.gsb.calendar.defaultOptions,options);options=base.options;base.$el.on("click touchstart","td > a",function(e){e.preventDefault();e.stopPropagation();if($(this).parent().hasClass(options.detailsOpenedClass)){$(this).parent().removeClass(options.detailsOpenedClass).addClass(options.detailsClosedClass);}else{base.$el.find("."+options.detailsOpenedClass).removeClass(options.detailsOpenedClass);$(this).parent().removeClass(options.detailsClosedClass).addClass(options.detailsOpenedClass);}});base.$el.on("click touchstart",options.prevButton,function(e){e.preventDefault();e.stopPropagation();base.loadCalendar($(this).data("href"));});base.$el.on("click touchstart",options.nextButton,function(e){e.preventDefault();e.stopPropagation();base.loadCalendar($(this).data("href"));});};base.loadCalendar=function(href){if(typeof options.beforeInit==="function"){base.options.beforeInit.call($(this),base.$el);}base.$el.fadeTo(options.duration,0,function(){base.$el.load(href,function(){base.$el.fadeTo(options.duration,1,function(){base.addA11y();if(typeof options.afterInit==="function"){base.options.afterInit.call($(this),base.$el);}});});});};base.addA11y=function(elem){elem=elem||base.$el;var focusElements=elem.find("input,textarea,select,a,button").not(":hidden");focusElements[0].focus();};base.init();};$.gsb.calendar.defaultOptions={nextButton:".next > a",prevButton:".prev > a",fadeDuration:400,detailsOpenedClass:"opened",detailsClosedClass:"closed",beforeInit:undefined,afterInit:undefined};$.fn.gsb_calendar=function(options){return this.each(function(){(new $.gsb.calendar(this,options));});};})(jQuery); 6175 /* Ende gsb_calendar */ 6176 /* Start gsb_clearfields */ 6177 /*! 6178* --GSBDocStart 6179 * @module gsb_clearfields 6180 * @version 1.0.0 6181 * @see {@link http://semver.org|Semantic Versioning} 6182 * @author sbaecker 6183 * 6184 * @desc GSB-Plugin zum autom. Leeren von Text-Input-Feldern 6185 * Script löscht die Text-Vorbelegung der unter Feld "Parameter" eingehängten Textfelder 6186 * 6187 * @init 6188 * $.gsb_clearfields(); 6189 *--GSBDocEnd 6190 */ 6191(function($){jQuery.fn.attachToField=function(id,defaultValue){var field=$("#"+id);var input_text=field.attr("value");return jQuery(field).bind("focus",function(){if(input_text==defaultValue){field.attr("value","");}}).bind("blur",function(){if(field.attr("value")==""){field.attr("value",input_text);}input_text=field.attr("value");});};})(jQuery); 6192 /* Ende gsb_clearfields */ 6193 /* Start gsb_lightbox */ 6194 (function($){if(!$.gsb){$.gsb={};}$.gsb.lightbox=function(el,userOptions){var lightbox=this,$el=lightbox.$el=$(el),options,disabled;function openerClickHandler(ev){if(!disabled){ev&&typeof ev.preventDefault=="function"&&ev.preventDefault();$el.data("magnificPopup").index=$(this).data("gsb.lightboxopener").index;}$el.magnificPopup("open");}function checkArrowState(mfp){if(!options.cycle&&mfp.arrowLeft&&mfp.arrowRight){if(mfp.index==0){mfp.arrowLeft.find("img").attr("src",options.imagePrevInactive);}else{mfp.arrowLeft.find("img").attr("src",options.imagePrev);}if(mfp.index==mfp.items.length-1){mfp.arrowRight.find("img").attr("src",options.imageNextInactive);}else{mfp.arrowRight.find("img").attr("src",options.imageNext);}}}function makeGallery(){options.reallyMagnificOptions.callbacks.open=function(){var mfp=this;mfp.wrap.find(".mfp-close").appendTo(mfp.contentContainer);if(options.imagePrev){$(".mfp-arrow-left").append('<img alt="'+options.reallyMagnificOptions.gallery.tPrev+'" src="'+options.imagePrev+'">');}if(options.imageNext){$(".mfp-arrow-right").append('<img alt="'+options.reallyMagnificOptions.gallery.tNext+'" src="'+options.imageNext+'">');}mfp.prev=function(){if(options.cycle||mfp.index!=0){$.magnificPopup.proto.prev.call(this);}};mfp.next=function(){if(options.cycle||mfp.index!=mfp.items.length-1){$.magnificPopup.proto.next.call(this);}};checkArrowState(this);if(typeof mfp.contentContainer.hammer=="function"&&!mfp.wrap.data("gsb.swipe")){mfp.contentContainer.hammer({drag_block_horizontal:true,stop_browser_behavior:{touchAction:"auto"},swipe_velocity:0.3}).on("swiperight",function(){mfp.prev();}).on("swipeleft",function(){mfp.next();}).data("gsb.swipe",{});}};options.reallyMagnificOptions.callbacks.change=function(){checkArrowState(this);};$.extend(options.reallyMagnificOptions,{items:$.map($(this).find(options.element),function(item){return{src:$(item).clone().find(".loupe").remove().end().removeClass("slick-slide").attr("style",null),type:"inline"};})},(userOptions||{}).magnificOptions);$el.magnificPopup(options.reallyMagnificOptions).unbind("click");}lightbox.el=el;lightbox.$el.data("gsb.lightbox",lightbox);lightbox.init=function(){var url,closeText,defer;options=lightbox.options=$.extend({},$.gsb.lightbox.defaultOptions,userOptions);options.reallyMagnificOptions=$.extend({},$.gsb.lightbox.defaultOptions.magnificOptions);closeText=options.magnificOptions.tClose;$.extend(options.reallyMagnificOptions,{disableOn:function(){return !disabled;},closeMarkup:'<button class="mfp-close">%title%</button>',});if(options.lightboxType=="single"){url=$el.data("lightbox-href");
6194if(url){options.reallyMagnificOptions.type="ajax";options.reallyMagnificOptions.ajax.settings.url=url;}else{if($el.parents(options.element).length){options.reallyMagnificOptions.type="image";}}$.extend(options.reallyMagnificOptions,(userOptions||{}).magnificOptions);$el.magnificPopup(options.reallyMagnificOptions);}else{if(options.lightboxType=="multiple"){url=$el.data("lightbox-href");if(url){$("<div />").load(url,makeGallery);}else{$el.on("init.slideshow.gsb",makeGallery);}$el.on("init.slideshow.gsb",function(){$el.find(".loupe").each(function(idx){var opener=$(this),openerData=opener.data("gsb.lightboxopener")||{};openerData.index=idx;opener.data("gsb.lightboxopener",openerData);opener.click(openerClickHandler).keydown(function(e){if(e.which==23){$(this).click();}});});});$.extend(true,options.reallyMagnificOptions,{gallery:{enabled:true}});$.extend(options.reallyMagnificOptions,(userOptions||{}).magnificOptions);}}};lightbox.closeLightbox=function(){$el.magnificPopup("close");};lightbox.disable=function(){disabled=true;};lightbox.enable=function(){disabled=false;};lightbox.addA11y=function(){};lightbox.init();};$.gsb.lightbox.defaultOptions={lightboxType:"single",cycle:false,element:".picture",imagePrev:"",imageNext:"",magnificOptions:{tClose:typeof CLOSE=="undefined"?"SchlieÃen (Esc)":CLOSE,gallery:{tPrev:typeof PREV=="undefined"?"Vorheriges (linke Pfeiltaste)":PREV,tNext:typeof NEXT=="undefined"?"Nächstes (rechte Pfeiltaste)":NEXT,tCounter:typeof LIGHTBOX_X_OF_Y=="undefined"?"%curr% von %total%":LIGHTBOX_X_OF_Y},type:"ajax",closeOnContentClick:false,closeBtnInside:false,image:{verticalFit:true,titleSrc:function(){return $(this.currItem&&this.currItem.el).find("img").attr("alt");}},ajax:{settings:{}},callbacks:{afterChange:function(){$(this.content).find("video, audio").each(function(_,el){var data=$(el).data("gsb.Multimedia");if(!data){data=$(el).gsb_Multimedia().data("gsb.Multimedia");}if(!data.workaround&&typeof data.triggerRefresh=="function"){data.workaround=true;data.triggerRefresh();}});},buildControls:function(){if(this.contentContainer&&this.arrowLeft&&this.arrowRight){this.contentContainer.append(this.arrowLeft.add(this.arrowRight));}},open:function(){if(this.wrap&&this.wrap.find){this.wrap.find(".mfp-close").appendTo(this.contentContainer);}}}}};$.fn.gsb_lightbox=function(options){return this.each(function(){(new $.gsb.lightbox(this,options));});};})(jQuery); 6195 /* Ende gsb_lightbox */ 6196 /* Start gsb_navigation */ 6197 /*! 6198 * Licensed under the MIT license 6199* --GSBDocStart 6200 * @module gsb_navigation 6201 * @version 1.1.0 6202 * @see {@link http://semver.org|Semantic Versioning} 6203 * @author pespeloe 6204 * 6205 * @desc Das Addon dient der Darstellung des Flyout-Menüs auf der Seite 6206 * 6207 * @requires jQuery >= 1.11.1, gsb_responsiveListener 6208 * 6209 * @init 6210 * $('#navPrimary').gsb_navigation(); 6211 *--GSBDocEnd 6212 * */ 6213(function($){if(!$.gsb){$.gsb={};}$.gsb.navigation=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.navigation",base);base.init=function(){base.options=$.extend({},$.gsb.navigation.defaultOptions,options);base.delegateTo="#"+base.$el.attr("id")+base.options.hoverItem;base.$el.gsb_responsiveListener(base);};base._largeNavigation=function(){$(base.delegateTo).each(function(){var li=$(this),sub=li.find("li a"),ctrl=li.find("a").not(sub);li.find("a").on("focusin",function(e){li.find(base.options.displayItem).css({height:""});li.trigger("mouseenter",[!$(e.target).is(ctrl)||$(base.delegateTo).find(e.target).length]);li.siblings(".hovered").trigger("mouseleave");});li.find("a:first, a:last").blur(function(e){li.find(base.options.displayItem).css({height:0});});});$(base.delegateTo).on("mouseenter mouseleave",function(e,fromWithin){e.stopImmediatePropagation();var $box=$(this).find(base.options.displayItem).show().stop(),$height=$box.data("gsb.navigation.fullHeight"),$root=$(this),$relatedTarget=$(base.delegateTo).find(e.relatedTarget);if(!$height){$height=$box.outerHeight();$box.data("gsb.navigation.fullHeight",$height);}if(e.type==="mouseenter"){if(!fromWithin&&!$relatedTarget.length){$box.addClass("on").css({height:0,opacity:0}
6213).animate({height:$height,opacity:1},{duration:base.options.animSpeed});}else{$box.addClass("on").css({height:$height,opacity:1});}$root.addClass("hovered");gsb.log("gsb.navigation: Add root class 'hovered' for nav node '"+$root.find("h3 > a").text()+"'");}else{if(!fromWithin&&!$relatedTarget.length){$box.removeClass("on").css({height:$height,opacity:1}).animate({height:0,opacity:0},{duration:base.options.animSpeed});}else{$box.removeClass("on").css({height:0,opacity:0});}$root.removeClass("hovered");gsb.log("gsb.navigation: Remove root class 'hovered' for nav node '"+$root.find("h3 > a").text()+"'");}});base.$el.find(base.options.navTouchElement).on("touchstart",function(e){var $box=$(this).find(base.options.displayItem).stop(),$root=$(this).children("div");if($(this).parent().parent().hasClass("hovered")){e.preventDefault();}});},base.init();};$.gsb.navigation.defaultOptions={navTouchElement:"h3 > a",displayItem:".menu-box",hoverItem:"> ul > li",animSpeed:500,respondToEvents:true,onRefresh:function(){this._largeNavigation();},responsive:[{breakpoint:1024,onRefresh:function(){}}]};$.fn.gsb_navigation=function(options){return this.each(function(){(new $.gsb.navigation(this,options));});};})(jQuery); 6214 /* Ende gsb_navigation */ 6215 /* Start gsb_serviceborder */ 6216 /*! 6217* --GSBDocStart 6218 * @module gsb_serviceborder 6219 * @version 1.0.0 6220 * @see {@link http://semver.org|Semantic Versioning} 6221 * @author sbaecker 6222 * 6223 * @desc GSB-Plugin fuer Serviceleiste unter der Buehne 6224 * jQuery-Funktion zur Content-Vorschauansicht einer Vertikalennavigation bei Hover 6225 * 6226 * @example 6227 * Erwartete HTML-Struktur: 6228 * <div id="service-border"> 6229 * <div id="tab"> 6230 * <ul class="tab"> 6231 * <li class="t-entry-1"> 6232 * <a class="navServiceNewsletter" href="...">Newsletter</a> 6233 * </li> 6234 * ... 6235 * </ul> 6236 * </div> 6237 * <div id="section-1" class="container"> 6238 * ... 6239 * </div> 6240 * ... 6241 * </div> 6242 * 6243 * @requires jQuery >= 1.11.1, gsb_responsiveListener 6244 * @init 6245 * $("#navContent").gsb_Serviceborder(); 6246 *--GSBDocEnd 6247 */ 6248(function($){if(!$.gsb){$.gsb={};}$.gsb.Serviceborder=function(el,options){var base=this,closeclick;base.$el=$(el);base.el=el;base.$el.data("gsb.Serviceborder",base);base.init=function(){base.options=$.extend({},$.gsb.Serviceborder.defaultOptions,options);base.$el.gsb_responsiveListener(base);};base._configuration=function(){closeclick=false;if(!base.$el.length){return;}if(base.$el.find(base.options.navnodes+" span.aural").length==0){base.$el.find(base.options.navnodes).append('<span class="aural"> '+base.options.show_more_text+"</span>");}base.$el.find(base.options.navnodes).each(function(){$(this).on("click",function(e){e.preventDefault();e.stopPropagation();base.showTab($(this));return false;});});base.tabActive=false;base.tabToShow=false;};base.showTab=function(obj,close){if(typeof obj!="undefined"&&obj){var regExpMatch=obj.parent("li:first").attr("class").match(/^.*\w+-(\w+)-(\d+)( .*)?$/);base.tabToShow=regExpMatch[2];}else{closeclick=true;base.tabToShow=false;}if(base.tabActive==base.tabToShow){var tabActiveId=base.options.container+base.tabActive;var $tabActive=base.$el.find(tabActiveId);$tabActive.stop(true,true).fadeOut({duration:base.options.fadeDuration,easing:"linear",queue:false}).slideUp({duration:base.options.slideDuration,easing:"linear"});base.tabActive=false;base.$el.find(" ul > li .aural").text(" "+base.options.show_more_text);base.$el.find(" ul > li").removeClass("active");}else{if(base.tabToShow!=base.tabActive&&false!==base.tabToShow){var tabToShowId=base.options.container+base.tabToShow;var $tabToShow=base.$el.find(tabToShowId);if(!$tabToShow.length){alert("Tab "+tabToShowId+" nicht vorhanden...");return;}if(!$tabToShow.find(".containerinner .close").length){var $closeButton;if(base.options.close_button_markup_mode==="image"){$closeButton=$('<p><button tabindex="0" class="close" title="'+base.options.close+'" ><img src="'+image_url_close+'" alt="'+base.options.close+'" /></button></p>');}else{$closeButton=$('<p><button tabindex="0" class="close">'+base.options.close+"</button></p>");}$closeButton.appendTo(tabToShowId+" > .containerinner:first").on("click",function(){base.showTab();return false;});}base.$el.find("> div .close").unbind("click").on("click",function(e){e.preventDefault();e.stopPropagation();var tabActiveId=base.options.container+base.tabActive;var $tabActive=base.$el.find(tabActiveId);$tabToShow.stop(true,true).fadeOut({duration:base.options.fadeDuration,easing:"linear",queue:false}).slideUp({duration:base.options.slideDuration,easing:"linear"});obj.focus();base.tabActive=false;base.$el.find(" ul > li span.aural").text(" "+base.options.show_more_text);base.$el.find("ul > li").removeClass("active");});if(false!==base.tabActive){var tabActiveId=base.options.container+base.tabActive;var $tabActive=base.$el.find(tabActiveId);$tabActive.slideUp();}else{$tabToShow.stop(true,true).fadeIn({duration:base.options.fadeDuration,easing:"linear",queue:false}).css("display","none").slideDown({duration:base.options.slideDuration,easing:"linear"});}$tabToShow.slideDown();base.tabActive=base.tabToShow;base.$el.find(" ul > li span.aural").text(" "+base.options.show_more_text);base.$el.find(" ul > li").removeClass("active");obj.parent(":first").addClass("active");base.$el.find(" ul > li.active .aural").text(" "+base.options.show_less_text);}else{if(false===base.tabToShow&&false!==base.tabActive){var tabActiveId=base.options.container+base.tabActive;var $tabActive=base.$el.find(tabActiveId);if(closeclick=true){$tabActive.slideUp("fast");closeclick=false;}else{$tabActive.hide();}base.tabActive=false;base.$el.find(" ul > li span.aural").text(" "+base.options.show_more_text);base.$el.find(" ul > li").removeClass("active");}}}};base._uninit=function(){var closeLink=base.$el.find("a.close");if(closeLink.length>0){if(closeLink.closest("p").length>0){closeLink.closest("p").off();}else{closeLink.off();}}if(base.$el.find("div .close").length>0){base.$el.find("div .close").off();}if(base.$el.find(base.options.navnodes).length>0){base.$el.find(base.options.navnodes).off();}base.$el.find(".container").hide();base.$el.find(" ul > li span.aural").text(" "+base.options.show_more_text);base.$el.find(">ul>li").removeClass("active");};base.init();};$.gsb.Serviceborder.defaultOptions={close:typeof(CLOSE)=="undefined"?"SchlieÃen":CLOSE,close_button_markup_mode:"image",navnodes:" > ul > li > a",container:"#section-",show_more_text:typeof(SHOW_MORE)=="undefined"?"Mehr anzeigen":SHOW_MORE,show_less_text:typeof(SHOW_LESS)=="undefined"?"Weniger anzeigen":SHOW_LESS,slideDuration:400,fadeDuration:600,respondToEvents:true,onRefresh:function(){this._configuration();},responsive:[{breakpoint:600,onRefresh:function(){this._uninit();}}]};$.fn.gsb_Serviceborder=function(options){return this.each(function(){(new $.gsb.Serviceborder(this,options));});};})(jQuery); 6249 /* Ende gsb_serviceborder */ 6250 /* Start gsb_print */ 6251 /*! 6252 * --GSBDocStart 6253 * @module gsb_print 6254 * @version 1.0.0 6255 * @see {@link http://semver.org|Semantic Versioning} 6256 * @author sbaecker 6257 * 6258 * @desc GSB-Plugin zum autom. Leeren von Text-Input-Feldern 6259 * Das Addon fügt einen Link "Seite drucken" in eine vorhandene Liste ein 6260 * 6261 * @example 6262 * <ul id="navFunctions"> </ul> 6263 * 6264 * @init 6265 * $('#navFunctions').gsb_printlink(); 6266 * 6267 * @requires jQuery >= 1.11.1, gsb_responsiveListener 6268 *--GSBDocEnd 6269 */ 6270;(function($){if(!$.gsb){$.gsb={};}$.gsb.printlink=function(el,options){var base=this;var printInited=false;base.$el=$(el);base.el=el;base.$el.data("gsb.printlink",base);base.init=function(){base.options=$.extend({},$.gsb.printlink.defaultOptions,options);base.$el.gsb_responsiveListener(base);};base._printlink=function(){if(!base.$el.length){return;}if($("#"+base.options.printlink_id).length==0){pattern=$('<li id="'+base.options.printlink_id+'" class="'+base.options.printlink_id+'"><a href="#" title="'+base.options.tooltip+'">'+base.options.page_text+"</a></li>");base.$el.prepend(pattern);}base.$el.parent().find("#"+base.options.printlink_id+" a").on("click",function(e){e.preventDefault();e.stopPropagation();window.print();});};base._uninit=function(){if(base.$el.find("#"+base.options.printlink_id)){base.$el.find("#"+base.options.printlink_id).off().remove();}};base.init();};$.gsb.printlink.defaultOptions={tooltip:typeof PRINT_TOOLTIP=="undefined"?"Drucken (öffnet Dialog)":PRINT_TOOLTIP,page_text:typeof PRINT_PAGE_TEXT=="undefined"?"drucken":PRINT_PAGE_TEXT,printlink_id:"navFunctionsPrint",respondToEvents:true,onRefresh:function onRefresh(){this._printlink();},responsive:[{breakpoint:10,onRefresh:function onRefresh(){this._uninit();}}]};$.fn.gsb_printlink=function(options){return this.each(function(){new $.gsb.printlink(this,options);});};})(jQuery); 6271 /* Ende gsb_print */ 6272 /* Start gsb_slideshow */ 6273 /*! 6274 * --GSBDocStart 6275 * @module gsb_slideshow 6276 * @version 1.0.0 6277 * @see {@link http://kenwheeler.github.io/slick/} 6278 * @author anuebel 6279 * 6280 * @desc GSB-Wrapper-Plugin fuer slick.js. 6281 * Slideshow auf Basis von Slick 6282 * 6283 * @option 6284 * nextButtonImage: Das Hintergrundbild fuer den aktiven weiter-Link der Navigation(default: null) 6285 * nextButtonInactiveImage: Das Hintergrundbild fuer den inaktiven weiter-Link der Navigation(default: null)
6286 * nextTitle: Das title-Attribut fuer den aktiven weiter-Link der Navigation 6287 * (default: SLIDER_NEXT bzw. 'Nächste Seite') 6288 * nextTitleInactive: Das title-Attribut fuer den inaktiven weiter-Link der Navigation 6289 * (default: SLIDER_NEXT_INACTIVE bzw. 'Keine nächste Seite') 6290 * prevButtonImage: Das Hintergrundbild fuer den aktiven zurueck-Link der Navigation(default: null) 6291 * prevButtonInactiveImage: Das Hintergrundbild fuer den aktiven zurueck-Link der Navigation(default: null) 6292 * prevTitle: Das title-Attribut fuer den aktiven zurueck-Link der Navigation 6293 * (default: SLIDER_BACK bzw. 'Vorherige Seite') 6294 * prevTitleInactive: Das title-Attribut fuer den aktiven zurueck-Link der Navigation 6295 * (default: SLIDER_BACK_INACTIVE bzw. 'Keine vorherige Seite') 6296 * playButtonImagePlaying: Das Hintergrundbild fuer den Playbutton im abspielenden Zustand(default: null) 6297 * playButtonImagePaused: Das Hintergrundbild fuer den Playbutton im pausierten Zustand(default: null) 6298 * playButtonAltTextPlaying: Das alt-Attribut fuer den Playbutton im abspielenden Zustand 6299 * (default: SLIDER_PLAY bzw. 'Animation starten') 6300 * playButtonAltTextPaused: Das alt-Attribut fuer den Playbutton im pausierten Zustand 6301 * (default: SLIDER_PAUSE bzw. 'Animation stoppen') 6302 * slickOptions: native Optionen fuer das Slick Plugin(default: null, siehe Doku oben) 6303 * slickOptions.gsb.playButton: Soll ein Playbutton angelegt werden(default: true), an dieser Stelle 6304 * hinterlegt, um responsiven Reinitialisierungmechanismus von Slick zu nutzen 6305 * 6306 * s. auch http://kenwheeler.github.io/slick/ 6307 * 6308 * @init 6309 * // stage slider 6310 * var $stage = $('#stage').find('.stage-container'); 6311 * $stage.gsb_Slideshow({ 6312 * containerElement : '.teaser', 6313 * pagination : true, 6314 * autoplay : true, 6315 * autoSpeed : 9000, 6316 * pauseOnHover : true, 6317 * nextButtonImage : image_url_next, 6318 * prevButtonImage : image_url_back, 6319 * prevButtonInactiveImage : image_url_back_g, 6320 * nextButtonInactiveImage : image_url_next_g, 6321 * playButtonImagePaused : image_url_play, 6322 * playButtonImagePlaying : image_url_paused, 6323 * slickOptions: { 6324 * arrows: false, 6325 * fade: false, 6326 * nextArrow: $stage.parent().find('.next'), 6327 * prevArrow: $stage.parent().find('.prev'), 6328 * responsive: [ 6329 * { 6330 * breakpoint: 600, 6331 * settings: { 6332 * gsb: { 6333 * playButton: false 6334 * }, 6335 * autoplay : false, 6336 * arrows: true 6337 * } 6338 * } 6339 * ] 6340 * } 6341 * }); 6342 6343 * // carousel slider 6344 * var $carousel = $('.startseite').find('.teaser-switcher .karussell'); 6345 * $carousel.gsb_Slideshow({ 6346 * containerElement : '.teaser', 6347 * autoplay : false, 6348 * pagination: true, 6349 * nextButtonImage : image_url_next, 6350 * prevButtonImage : image_url_back, 6351 * prevButtonInactiveImage : image_url_back_g, 6352 * nextButtonInactiveImage: image_url_next_g, 6353 * slickOptions: { 6354 * slidesToShow: 5, 6355 * slidesToScroll: 5, 6356 * fade: false, 6357 * nextArrow: $carousel.parent().find('.next'), 6358 * prevArrow: $carousel.parent().find('.prev'), 6359 * responsive: [ 6360 * { 6361 * breakpoint: 1023, 6362 * settings: { 6363 * slidesToShow: 3, 6364 * slidesToScroll: 3 6365 * } 6366 * }, 6367 * { 6368 * breakpoint: 610, 6369 * settings: { 6370 * slidesToShow: 2, 6371 * slidesToScroll: 2 6372 * } 6373 * }, 6374 * { 6375 * breakpoint: 440, 6376 * settings: { 6377 * slidesToShow: 1, 6378 * slidesToScroll: 1 6379 * } 6380 * } 6381 * ] 6382 * } 6383 * }); 6384 6385 * // gallery slider 6386 * $('.galleryBox').gsb_Slideshow({ 6387 * slideshowControls : true, 6388 * generateButtonContainer : false, 6389 * autoplay : false, 6390 * pagination: false, 6391 * nextButtonImage : image_url_next, 6392 * prevButtonImage : image_url_back, 6393 * prevButtonInactiveImage : image_url_back_g, 6394 * nextButtonInactiveImage : image_url_next_g, 6395 * slickOptions: { 6396 * adaptiveHeight: true, 6397 * fade: false 6398 * } 6399 * }); 6400 *--GSBDocEnd 6401 */ 6402(function($){if(!$.gsb){$.gsb={};}$.gsb.Slideshow=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.Slideshow",base);base.defaultSlickOptions={slide:".slide",fade:true,infinite:false,draggable:false,adaptiveHeight:false,onBeforeChange:function(slick){slick.$slides.find("video, object").show();},onAfterChange:function(slick){base.updateNavigation(slick);base.updateTabindex(slick);},onInit:function(slick){var slideshowPluginInstance=slick.$slider.data("gsb.Slideshow");var onSlickInit=slideshowPluginInstance.options.onSlickInit;if(typeof onSlickInit=="function"){onSlickInit.call(slick,slick);}base.updateNavigation(slick);base.initMultimedia();base.updateTabindex(slick);base.$el.trigger("init.slideshow.gsb");},gsb:{playButton:true}};base.initMultimedia=function initMultimedia(){if(typeof $.fn.gsb_Multimedia=="function"){base.$el.find("video, audio").gsb_Multimedia();}};base.updateTabindex=function updateTabindex(slick){var focusableItems="a, [tabindex], textarea, input, select, button, video, object",buggedItems="video, object";slick.$slides.not(".slick-active").find(focusableItems).attr("tabindex",-1).end().find(buggedItems).hide();slick.$slides.filter(".slick-active").find(focusableItems).attr("tabindex",0).end().find(buggedItems).show();};base.updateNavigationArrow=function($arrow,activeImage,inactiveImage,activeArrowButtonTitle,inactiveArrowButtonTitle){if($arrow){var $arrowButton=$arrow.is("button")?$arrow:$arrow.find("button"),$arrowImage=$arrow.find("img");if($arrow.hasClass("slick-disabled")){$arrowButton.attr("disabled","");$arrowButton.attr("title",inactiveArrowButtonTitle);$arrowImage.attr("src",inactiveImage);$arrowImage.attr("alt","");}else{$arrowButton.removeAttr("disabled");$arrowButton.attr("title",activeArrowButtonTitle);$arrowImage.attr("src",activeImage);$arrowImage.attr("alt",activeArrowButtonTitle);}}};base.updateNavigation=function(slick){base.updateNavigationArrow(slick.$prevArrow,base.options.prevButtonImage,base.options.prevButtonInactiveImage,base.options.prevTitle,base.options.prevTitleInactive);base.updateNavigationArrow(slick.$nextArrow,base.options.nextButtonImage,base.options.nextButtonInactiveImage,base.options.nextTitle,base.options.nextTitleInactive);};base.handleLegacyOptions=function(slickOptions,options){$.each($.gsb.Slideshow.slickOptionsForLegacyOptions,function(legacyOption,mappedSlickOption){if(options.hasOwnProperty(legacyOption)){var savedValue=options[legacyOption];delete options[legacyOption];slickOptions[mappedSlickOption]=savedValue;}});};base.handleNavigationArrows=function(slickOptions){var navigationArrowOptions={nextArrow:base.$el.find(".next"),prevArrow:base.$el.find(".prev")};return $.extend({},navigationArrowOptions,slickOptions);};base.handlePlayButton=function(slickOptions){(function(existingOnInit){slickOptions.onInit=function(slick){existingOnInit.call(slick,slick);var initializedSlickOptions=slick.options;function shouldCreatePlayButton(){var playButtonImagesAreConfigured=base.options.playButtonImagePlaying!==null&&base.options.playButtonImagePaused!==null,createPlayButton=initializedSlickOptions.gsb.playButton;return createPlayButton&&playButtonImagesAreConfigured;}function preventPlay(){slick.paused=true;slick.autoPlayClear();}var $existingPlayButton=base.$el.parent().find(".navigation button.playbutton"),playButtonExists=$existingPlayButton.length;if(shouldCreatePlayButton()&&!playButtonExists){var slideshowStartsPlaying=initializedSlickOptions.autoplay,initialClassForPlayButton=sli
6402deshowStartsPlaying&&"playbutton-playing"||"playbutton-paused",initialTitleAttrForPlayButton=slideshowStartsPlaying&&base.options.playButtonAltTextPlaying||base.options.playButtonAltTextPaused,initialSrcAttrForPlayButtonImage=slideshowStartsPlaying&&base.options.playButtonImagePlaying||base.options.playButtonImagePaused,initialAltAttrForPlayButtonImage=slideshowStartsPlaying&&base.options.playButtonAltTextPlaying||base.options.playButtonAltTextPaused,$playButton=$("<button"+' class="playbutton '+initialClassForPlayButton+'"'+' title="'+initialTitleAttrForPlayButton+'">'+"<img"+' src="'+initialSrcAttrForPlayButtonImage+'"'+' alt="'+initialAltAttrForPlayButtonImage+'">'+"</button>"),playButtonImage=$playButton.find("img");base.$el.parent().find(".navigation").append($playButton);$playButton.click(function(){if($playButton.is(".playbutton-playing")){$playButton.removeClass().addClass("playbutton-paused").attr("title",base.options.playButtonAltTextPaused);playButtonImage.attr("src",base.options.playButtonImagePaused).attr("alt",base.options.playButtonAltTextPaused);base.$el.slickPause();slick.$list.on("mouseleave.slick",preventPlay);}else{$playButton.removeClass().addClass("playbutton-playing").attr("title",base.options.playButtonAltTextPlaying);playButtonImage.attr("src",base.options.playButtonImagePlaying).attr("alt",base.options.playButtonAltTextPlaying);base.$el.slickPlay();slick.$list.off("mouseleave.slick",preventPlay);}});}else{if(!shouldCreatePlayButton()&&playButtonExists){$existingPlayButton.remove();}}};}(slickOptions.onInit));return slickOptions;};base.init=function(){base.options=$.extend({},$.gsb.Slideshow.defaultOptions,options);var allElementsUrl=base.$el.data("href"),initSlick=function(){var rawSlickOptions=base.options.slickOptions;delete rawSlickOptions.onInit;var slickOptions=$.extend({},base.defaultSlickOptions,rawSlickOptions);base.handleLegacyOptions(slickOptions,base.options);slickOptions=base.handleNavigationArrows(slickOptions);slickOptions=base.handlePlayButton(slickOptions);base.$el.slick(slickOptions);},onReceiveAllElements=function(data){base.$el.html(data);initSlick();};if(allElementsUrl){$.get(allElementsUrl,onReceiveAllElements);}else{initSlick();}};base.init();};$.gsb.Slideshow.defaultOptions={nextButtonImage:null,nextButtonInactiveImage:null,nextTitle:typeof(NEXT)=="undefined"?"Nächste Seite":NEXT,nextTitleInactive:typeof(NEXT_INACTIVE)=="undefined"?"Keine nächste Seite":NEXT_INACTIVE,prevButtonImage:null,prevButtonInactiveImage:null,prevTitle:typeof(BACK)=="undefined"?"Vorherige Seite":BACK,prevTitleInactive:typeof(BACK_INACTIVE)=="undefined"?"Keine vorherige Seite":BACK_INACTIVE,playButtonImagePaused:null,playButtonImagePlaying:null,playButtonAltTextPaused:typeof(PLAY)=="undefined"?"Animation starten":PLAY,playButtonAltTextPlaying:typeof(PAUSE)=="undefined"?"Animation stoppen":PAUSE,paginationTitle:typeof(PAGE)=="undefined"?"Seite":PAGE,slickOptions:null};$.gsb.Slideshow.slickOptionsForLegacyOptions={containerElement:"slide",elementsToSlide:"slidesToShow",autoplay:"autoplay",autoSpeed:"autoplaySpeed",pagination:"dots",pauseOnHover:"pauseOnHover"};$.fn.gsb_Slideshow=function(options){return this.each(function(){return new $.gsb.Slideshow(this,options);});};}(jQuery)); 6403 /* Ende gsb_slideshow */ 6404 /* Start gsb_toggle */ 6405 (function($){if(!$.gsb){$.gsb={};}$.gsb.toggle=function(el,options){var base=this;base.$el=$(el);base.el=el;this.base=base;base.$el.data("gsb.toggle",base);base.init=function(){this.base.options=$.extend({},$.gsb.toggle.defaultOptions,options);var _=this.base;if(_.options.accordion&&_.options.richTextAccordion){_.addRichtextContainer();}else{if(base.$el.data("href")){$.get(base.$el.data("href"),function(data){base.$el.html(data);base.$el.gsb_responsiveListener(_);});}else{base.$el.gsb_responsiveListener(_);}}};base.init();};$.gsb.toggle.defaultOptions={tab:true,tabControls:"> .tabs-list > li a",elements:"> .tabs-container > div",accordion:true,richTextAccordion:false,accordionCloseOther:true,accordionPanelHeight:false,accordionElementToOpen:null,accordionElementsStopPropagation:"",autoplay:false,playButtonImagePaused:null,playButtonImagePlaying:null,playButtonAltTextPaused:typeof(PLAY)=="undefined"?"Animation starten":PLAY,playButtonAltTextPlaying:typeof(PAUSE)=="undefined"?"Animation stoppen":PAUSE,accordionHeadingTitleClosed:null,accordionHeadingTitleOpened:null,autoSpeed:"5000",playOnLoad:false,pauseOnHover:true,changeOnHover:false,allOpen:false,animateTab:false,respondToEvents:true,onRefresh:function(){this.initialize();this.refreshTab();},responsive:[{breakpoint:600,onRefresh:function(){this.initialize();this.autoplayStop();this.$el.off("mouseenter mouseleave");this.refreshAccordion();},autoplay:false}]};$.gsb.toggle.prototype.initialize=function(){var _=this.base;if(!_.$el.hasClass("gsb-toggle")){_.$el.addClass("gsb-toggle");_.addClasses();_.addClickfunction();}if(_.options.autoplay){_.autoplay();}};$.gsb.toggle.prototype.addClasses=function(){var _=this.base;if(_.options.tab===true){var activeTabIndex=$.inArray(_.$el.find(_.options.tabControls+".active-control").get(0),_.$el.find(_.options.tabControls));if(activeTabIndex==-1){activeTabIndex=0;}
6405_.$el.find(_.options.tabControls).each(function(index){if(!$(this).is("a")||$(this).find(">a").length==0){$(this).prop("tabindex",0);}$(this).addClass("switch-panel"+index);if(index===activeTabIndex){$(this).addClass("active-control");}else{$(this).addClass("inactive-control");}});_.$el.find(_.options.elements).each(function(index){$(this).addClass("switch-panel"+index);if(index===activeTabIndex){$(this).addClass("panel-opened");}else{$(this).addClass("panel-closed");}});}if(_.options.accordion===true){var hasOpendElements=false;if(_.$el.find("> .tabs-container > .active-control").length>0){hasOpendElements=true;}_.$el.find("> .tabs-container > .heading").each(function(){if(!$(this).is("button")||!$(this).is("a")){if(_.options.accordionPanelHeight){var height=0;$(this).next().find(">").each(function(){height+=$(this).outerHeight(true);});$(this).next().height(height);}$(this).prop("tabindex",0);if(_.options.allOpen&&!_.options.tab){$(this).next().show();$(this).addClass("active-control");}else{if(hasOpendElements){if(!$(this).hasClass("active-control")){$(this).addClass("inactive-control");$(this).next().hide();}else{$(this).next().show();}}else{$(this).addClass("inactive-control");$(this).next().hide();}}}_.changeAccordionHeadingTitle($(this));});}};$.gsb.toggle.prototype.addClickfunction=function(){var _=this.base;if(_.options.accordion===true){_.$el.on("click keydown","> .tabs-container > .heading",function(e){if(e.type==="click"||e.which==13){e.preventDefault();e.stopPropagation();_.clickedElem=$(this);_.changeStateAccordion();}}).find(_.options.accordionElementsStopPropagation).on("click keydown",function(e){e.stopPropagation();});}if(_.options.tab===true){if(_.options.changeOnHover&&!_.options.autoplay){_.$el.on("mouseenter focus touchend",_.options.tabControls,function(e){var panelClass;e.preventDefault();e.stopPropagation();panelClass=String($(this).attr("class").match(/switch-panel\d+/));if(!e.relatedTarget||$(e.relatedTarget).is("."+panelClass)){console.log("e.relatedTarget: ",e.relatedTarget);return;}_.clickedElem=$(this);_.changeStateTab();});_.$el.on("click",_.options.tabControls,function(e){e.preventDefault();e.stopPropagation();});}else{_.$el.on("click keydown",_.options.tabControls,function(e){if(e.type==="click"||e.which==13){e.preventDefault();e.stopPropagation();_.clickedElem=$(this);_.changeStateTab();}});_.$el.on("focusin","> .tabs-container > .heading:not(:eq(0))",function(e){var panelClass;if(e.relatedTarget&&!_.$el.find(_.options.tabControls).filter(e.relatedTarget).length){console.log(e.relatedTarget);panelClass=String($(this).next().attr("class").match(/switch-panel\d+/));_.$el.find(_.options.tabControls).filter("."+panelClass).focus();}}).on("focusin","> .tabs-container > .heading:eq(0)",function(e){var panelClass,tabControls=_.$el.find(_.options.tabControls),placeholder;if(e.relatedTarget&&!$(e.relatedTarget).is(tabControls)){console.log(e.relatedTarget);panelClass=String($(this).next().attr("class").match(/switch-panel\d+/));tabControls.filter("."+panelClass).focus();}else{if($(e.relatedTarget).is(tabControls.last())){$("<h6 class='' tabindex=0 />").css({visibility:"none",height:0,width:0,margin:0,padding:0,outline:0}).blur(function(e){$(this).remove();}).appendTo(_.$el.find("> .tabs-container")).focus();}}});}}};$.gsb.toggle.prototype.changeAccordionHeadingTitle=function(elem){var _=this.base;if(elem.hasClass("active-control")&&_.options.accordionHeadingTitleOpened){elem.attr("title",_.options.accordionHeadingTitleOpened);}else{if(!elem.hasClass("active-control")&&_.options.accordionHeadingTitleClosed){elem.attr("title",_.options.accordionHeadingTitleClosed);}}};$.gsb.toggle.prototype.changeStateAccordion=function(){var _=this.base;var contentElement;if(_.options.accordionElementToOpen){contentElement=$(_.options.accordionElementToOpen);}else{contentElement=_.clickedElem.next();}if(_.clickedElem.hasClass("inactive-control")){if(_.options.accordionCloseOther&&!_.options.accordionElementToOpen){_.animationAccordion(_.clickedElem.parent().find("> .active-control").next(),"close");_.$el.find(".tabs-container > .active-control").removeClass("active-control").addClass("inactive-control");}_.clickedElem.attr("aria-expanded","true");_.clickedElem.attr("aria-selected","true");_.clickedElem.removeClass("inactive-control").addClass("active-control");_.animationAccordion(contentElement,"open");contentElement.attr("aria-hidden","false");}
6405else{_.clickedElem.attr("aria-expanded","false");_.clickedElem.attr("aria-selected","false");_.clickedElem.removeClass("active-control").addClass("inactive-control");_.animationAccordion(contentElement,"close");contentElement.attr("aria-hidden","true");}_.changeAccordionHeadingTitle(_.clickedElem);};$.gsb.toggle.prototype.changeStateTab=function(){var _=this.base;var panelToOpen=_.$el.find("> .tabs-container > ."+_.getSwitchPanelClass(_.clickedElem));if(_.clickedElem.hasClass("inactive-control")){var panelToClose=_.$el.find(".panel-opened");_.$el.find("[aria-hidden=false]").attr("aria-hidden","true");_.$el.find("[aria-selected=true]").attr("aria-selected","false");var ariaControl=_.clickedElem.attr("aria-controls");_.$el.find("#"+ariaControl).attr("aria-hidden","false");_.clickedElem.attr("aria-selected","true");panelToClose.removeClass("panel-opened").addClass("panel-closed");_.$el.find("> .tabs-container >.active-control, > .tabs-list .active-control ").removeClass("active-control").addClass("inactive-control");_.clickedElem.removeClass("inactive-control");panelToOpen.removeClass("panel-closed").addClass("panel-opened");_.clickedElem.addClass("active-control");_.animationTab(panelToClose,panelToOpen);}panelToOpen.prev(".heading").trigger("focus");};$.gsb.toggle.prototype.animationAccordion=function(elem,type){var _=this.base;if(type==="open"){elem.slideDown(400,function(){if(_.options.accordionElementToOpen){_.addA11y(elem);}});}else{elem.slideUp();}};$.gsb.toggle.prototype.animationTab=function(panelToClose,panelToOpen){var _=this.base;if(_.options.animateTab){panelToClose.fadeOut("slow",function(){panelToOpen.fadeIn("slow");});}else{panelToClose.hide();panelToOpen.show();}};$.gsb.toggle.prototype.autoplay=function(){var _=this.base;if(_.$el.find("> button").length===0){var button=document.createElement("button");button.className="paused";var image=document.createElement("img");image.src=_.options.playButtonImagePlaying;image.alt=_.options.playButtonAltTextPlaying;playbutton=_.$el.append($(button).append(image));}_.playbutton=_.$el.find("button.paused");_.playbutton.on("click autoplayStart",function(e){e.preventDefault();e.stopPropagation();if(_.playbutton.hasClass("paused")){$(this).removeClass("paused").addClass("played");_.autoplayStart();_.changeStatePlayPause(_.options.playButtonImagePlaying,_.options.playButtonAltTextPlaying);_.isPaused=false;if(e.type!="autoplayStart"){_.isClicked=true;}}else{$(this).addClass("paused").removeClass("played");_.autoplayStop();_.changeStatePlayPause(_.options.playButtonImagePaused,_.options.playButtonAltTextPaused);_.isPaused=true;}});if(_.options.pauseOnHover){_.$el.on("mouseenter mouseleave",function(e){if(!_.isPaused){if(e.type=="mouseenter"){_.autoplayStop();}else{if(_.playbutton.hasClass("played")&&!_.isClicked){_.autoplayStart();}_.isClicked=false;}}});}if(_.options.playOnLoad){_.playbutton.trigger("autoplayStart");}};$.gsb.toggle.prototype.autoplayStart=function(){var _=this.base;_.rotation=setInterval(function(){var lastTab=_.getSwitchPanelClass(_.$el.find(".tabs-list > li").last());if(_.$el.find(".tabs-list .active-control").hasClass(lastTab[0])){_.$el.find(".tabs-list > li").first().click();}else{_.$el.find(".tabs-list .active-control").next().click();}},_.options.autoSpeed);};$.gsb.toggle.prototype.autoplayStop=function(){var _=this.base;clearInterval(_.rotation);};$.gsb.toggle.prototype.refreshTab=function(){console.log("refreshTab");var _=this.base;if(_.options.tab){_.$el.find(".tabs-container").removeAttr("multiselectable");_.$el.find(".tabs-container").removeAttr("role");_.$el.find(".heading").each(function(){$(this).removeAttr("aria-expanded");});if(_.options.changeOnHover&&!_.options.autoplay){_.$el.on("mouseenter focus",_.options.tabControls,function(e){_.clickedElem=$(this);_.changeStateTab();});}_.$el.find(".panel-closed").hide();_.$el.find(".panel-opened").show();}};$.gsb.toggle.prototype.refreshAccordion=function(){console.log("refreshAccordion");var _=this.base;if(_.options.accordion){_.$el.find(".tabs-container").attr("role","tablist");if(!_.options.accordionCloseOther){_.$el.find(".tabs-container").attr("multiselectable","true");}_.$el.find(".heading").each(function(){$(this).attr("aria-expanded","fal
6405se");$(this).hasClass("inactive-control")?$(this).next().hide():"";});}};$.gsb.toggle.prototype.changeStatePlayPause=function(imgsrc,imgalt){var _=this.base;var image=_.playbutton.find("img");image.prop("alt",imgalt).prop("src",imgsrc);};$.gsb.toggle.prototype.getSwitchPanelClass=function(elem){var panelClass=$.grep(elem.prop("class").split(" "),function(value){return value.indexOf("switch-panel")>-1;});return panelClass;};$.gsb.toggle.prototype.uninitAccordion=function(){var _=this.base;if(_.$el.hasClass("gsb-toggle")){_.$el.off();_.$el.removeClass("gsb-toggle");_.$el.find("> .tabs-container > .heading").removeClass("active-control inactive-control").removeAttr("tabindex").next().removeAttr("style");}};$.gsb.toggle.prototype.addA11y=function(elem,tabPanel){var _=this.base;elem=elem||_.$el;var focusElements=elem.find("input,textarea,select,a,button").not(":hidden");if(focusElements.length){focusElements[0].focus();focusElements.last().keydown(function(e){});}};$.gsb.toggle.prototype.addRichtextContainer=function(){var _=this.base;_.$el.find(".startaccordion").each(function(){$(this).nextUntil(".endaccordion").addBack().add($(this).find("~.endaccordion").first()).wrapAll('<div class="tabs-container"/>');var wrapper=$(this).parent();wrapper.find(".startaccordion, .accordionheadline").addClass("heading");wrapper.find(".heading").each(function(){$(this).nextUntil(".heading").wrapAll("<div/>");});wrapper.find(".heading").last().nextUntil(".accordionend").add(wrapper.find(".accordionend")).wrapAll("<div/>");wrapper.wrap('<div class="richtext-accordion"/>');});_.$el.removeData("gsb.toggle");_.$el.find(".richtext-accordion").gsb_toggle($.extend({},_.options,{richTextAccordion:false}));};$.fn.gsb_toggle=function(options){return this.each(function(){(new $.gsb.toggle(this,options));});};})(jQuery); 6406 /* Ende gsb_toggle */ 6407 /* Start gsb_togglebar */ 6408 /*! 6409 * --GSBDocStart 6410 * @module gsb_togglebar 6411 * @version 1.0.0 6412 * @see {@link http://kenwheeler.github.io/slick/} 6413 * @author sbaecker 6414 * 6415 * @desc GSB-Plugin zum Erstellung von Menue-Leiste fuer mobile Navigation 6416 * 6417 * @requires jQuery >= 1.11.1, gsb_responsiveListener 6418 * 6419 * @init 6420 * $('#wrapperDivisions').gsb_togglebar(); 6421 *--GSBDocEnd 6422 */ 6423;(function($){if(!$.gsb){$.gsb={};}$.gsb.togglebar=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.togglebar",base);base.init=function(){base.options=$.extend({},$.gsb.togglebar.defaultOptions,options);base.$el.gsb_responsiveListener(base);};base.generate=function(){if($("#header #navServiceGS").length>0&&$("#header #navServiceLS").length>0){var gs_link=$("#header #navServiceGS");var gs_image="<img alt="+gs_link.text()+" src="+base.options.imageGS+" />";gs_link.find("a").attr("title",$("#header #navServiceGS a").text());gs_link.children().text("");gs_link.children().append(gs_image);var gs='<li class="navServiceGS">'+gs_link.html()+"</li>";var ls_link=$("#header #navServiceLS");var ls_image="<img alt="+ls_link.text()+" src="+base.options.imageLS+" />";ls_link.find("a").attr("title",$("#header #navServiceLS a").text());ls_link.children().text("");ls_link.children().append(ls_image);var ls='<li class="navServiceLS">'+ls_link.html()+"</li>";}else{var gs="";var ls="";}if($("#togglenav").length==0){base.$el.prepend('<div id="togglenav" class="togglenav">'+'<ul class="left">'+'<li id="navMobileMenu" class="navMobileMenu">'+'<a href="#">'+base.options.menuText+"</a>"+"</li>"+'<li id="navMobileSearch" class="navMobileSearch">'+'<a href="#">'+base.options.searchText+"</a>"+"</li>"+"</ul>"+'<ul class="right">'+gs+ls+"</ul></div>");}};base._uninit=function(){$("#togglenav").remove();};base.init();};$.gsb.togglebar.defaultOptions={menuText:typeof NAV_MOBILE_MENU=="undefined"?"Menü":NAV_MOBILE_MENU,searchText:typeof NAV_MOBILE_SEARCH=="undefined"?"Suchen":NAV_MOBILE_SEARCH,imageGS:image_url_gebaerdensprache,imageLS:image_url_leichtesprache,respondToEvents:true,onRefresh:function onRefresh(){this._uninit();},responsive:[{breakpoint:1024,onRefresh:function onRefresh(){this.generate();}}]};$.fn.gsb_togglebar=function(options){return this.each(function(){new $.gsb.togglebar(this,options);});};})(jQuery); 6424 /* Ende gsb_togglebar */ 6425 /* Start gsb_navigation_mobile */ 6426 (function($){if(!$.gsb){$.gsb={};}$.gsb.navigation_mobile=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.navigation_mobile",base);base.init=function(){base.options=$.extend({},$.gsb.navigation_mobile.defaultOptions,options);$("body").gsb_responsiveListener(base);};$.gsb.navigation_mobile.prototype.initMenu=function(){if(typeof base.options.beforeInit==="function"){base.options.beforeInit.call($(this),base);}base.createMenuContainer();if(base.options.menuHtml!=null){$.ajax({url:base.options.menuHtml,dataType:"html",success:function(data){base.menu=$("#menu");base.menu.html(data);base.registerMMenu(base);var activeNode=base.menu.find("#mm-"+$("body").data("nn")+"> a:last");$("<strong>"+activeNode.text()+"</strong>").addClass(activeNode.prop("class")).insertAfter(activeNode);activeNode.remove();base.menu.find(".mm-navbar").prepend('<div class="mobile-head"/>');var mobileHead=base.menu.find(".mobile-head");mobileHead.prepend("<h1>"+NAV_MOBILE_MENU+"</h1>");mobileHead.find("h1").append($('<button class="close-button" id="mmenuH">').append('<img src="'+image_url_close_w+'" alt="'+CLOSE+'" />'));if(typeof base.options.afterInit==="function"){base.options.afterInit.call($(this),base);}}});}}
6426;$.gsb.navigation_mobile.prototype.createMenuContainer=function(){if(!$("#menu").length){$("body").prepend('<div id="menu"/>');}};$.gsb.navigation_mobile.prototype.uninit=function(){if(base.menu){if(base.api){base.api.close();}base.menu.remove();}};$.gsb.navigation_mobile.prototype.registerMMenu=function(base){if(base.options.navbar!=null){base.options.mmenuOptions.navbars=base.options.navbar;}if(base.options.configuration!=null){base.menu.mmenu(base.options.mmenuOptions,base.options.configuration);}else{base.menu.mmenu(base.options.mmenuOptions);}if(base.options.navbar!=null){$('<span class="aural">'+base.options.lessText+"</span>").insertBefore(base.menu.find(base.options.closeButtonSelector));}if(base.options.openSubMenu){base.menu.find("#mm-"+$("body").data("nn")).parentsUntil(".mm-menu > ul").filter("li").addClass("mm-opened");}base.controlPanel=base.menu.find(".mm-vertical > .mm-next");base.contentPanel=base.menu.find("li > .mm-panel.mm-vertical > ul");base.controlPanel.attr("title",base.options.moreText);base.controlPanel.attr("aria-label",base.options.moreText);base.aria=base.$el.gsb_ariaSupport(base);base.menu.find("ul > .mm-vertical.mm-opened .mm-next").each(function(){base.aria.updateAria(this,true,true);});base.menu.find(".mm-next").on("click",function(){if($(this).parent().hasClass("mm-opened")){base.aria.updateAria(this,false,true);$(this).attr("title",base.options.moreText);$(this).attr("aria-label",base.options.moreText);}else{base.aria.updateAria(this,true,true);$(this).attr("title",base.options.lessText);$(this).attr("aria-label",base.options.lessText);}});base.api=base.menu.data("mmenu");base.$el.on("click",base.options.navOpenButton,function(e){e.stopImmediatePropagation();e.preventDefault();if(base.menu.hasClass("mm-opened")){base.api.close();}else{base.api.open();$(window).off("keydown.mm-offCanvas");base.addA11y(base.menu);}});if(base.options.navSearchButton){base.$el.on("click",base.options.navSearchButton,function(e){e.stopImmediatePropagation();e.preventDefault();base.api.open();$(window).off("keydown.mm-offCanvas");base.menu.find("input:text").focus();});}if(base.options.closeButtonSelector){base.menu.on("click",base.options.closeButtonSelector,function(e){e.preventDefault();e.stopPropagation();base.api.close();base.$el.find(base.options.navOpenButton).focus();});}if(base.options.searchImage){base.menu.find(".mm-search").append('<input type="image" class="image" src="'+base.options.searchImage+'" alt="'+base.options.searchAltText+'" title="'+base.options.searchAltText+'" aria-label="'+base.options.searchAltText+'"/>');base.menu.find('.mm-search input[type="text"]').attr("title",base.options.searchfieldTitle);base.menu.find('.mm-search input[type="text"]').attr("aria-label",base.options.searchfieldTitle);base.menu.find(".mm-search").on("keydown","input:text",function(event){if(event.keyCode==13&&$(this).val()!=""){if(!base.menu.data("gsb.AutoSuggest")||base.menu.data("gsb.AutoSuggest").enterPos<0){$("#search").find("form input:text").val($(this).val());$("#menu").find("input:image").trigger("click");}}});base.menu.find(".mm-search").on("keydown click","input:image",function(event){var textInput=$(this).siblings("input:text");if((event.keyCode==13||event.type=="click")&&textInput.val()!=""){var search=$("#search");search.find("form input:text").val(textInput.val());search.find("form input:image").trigger("click");base.api.close();}});}if(base.options.autosuggestURL){base.api.bind("opened",function mobileautosuggest(){$(this).unbind("opened",mobileautosuggest);base.menu.gsb_AutoSuggest(base.options.autosuggestURL);});}};$.gsb.navigation_mobile.prototype.addA11y=function(elem){elem=elem||base.$el;var focusElements=elem.find("button,a,input,textarea,select");focusElements[0].focus();focusElements.last().keydown(function(e){if(e.keyCode===9){e.preventDefault();focusElements[0].focus();}else{if(e.keyCode===13){return true;}}});};base.init();};$.gsb.navigation_mobile.defaultOptions={templateNavBar:"modules/navigation_mobile/templateNavBar.html",menuHtml:"modules/navigation_mobile/navigation_mobile.html",lessText:typeof(SHOW_LESS)=="undefined"?"Ausblenden":SHOW_LESS,moreText:typeof(SHOW_MORE)=="undefined"?"Ausblenden":SHOW_MORE,navOpenButton:"#navMobileMenu a",navSearchButton:"#navMobileSearch a",navAuralText:typeof MOBILE_AURAL=="undefined"?"Mobiles Menü"
6426:MOBILE_AURAL,navAuralId:"#mobilemenuH",autosuggestURL:null,searchImage:image_url_loupe_b,searchfieldTitle:typeof SEARCH_TITLE=="undefined"?"Suche Eingabe ":SEARCH_TITLE,searchAltText:typeof SEARCH_ALTTEXT=="undefined"?"Suchen":SEARCH_ALTTEXT,closeButtonSelector:"button.close-button",configuration:null,navbar:[{content:["searchfield"]}],openSubMenu:true,ariaType:"mobilemenu",beforeInit:null,afterInit:null,mmenuOptions:{slidingSubmenus:false,extensions:["iconbar"],searchfield:{add:true,search:false,placeholder:typeof(NAV_MOBILE_SEARCH)=="undefined"?"Suchen":NAV_MOBILE_SEARCH}},respondToEvents:true,onRefresh:function(){this.uninit();},responsive:[{breakpoint:1024,onRefresh:function(){this.uninit();this.initMenu();}}]};$.fn.gsb_navigation_mobile=function(options){return this.each(function(){(new $.gsb.navigation_mobile(this,options));});};})(jQuery); 6427 /* Ende gsb_navigation_mobile */ 6428 /* Start gsb_responsivetables */ 6429 /*! 6430* --GSBDocStart 6431 * @module gsb_responsivetables 6432 * @version 1.0.0 6433 * @see {@link http://semver.org|Semantic Versioning} 6434 * @author sbaecker 6435 * 6436 * @desc GSB-Plugin zum Wrappen von Tabellen fuer die mobile Darstellung 6437 * Fügt um selektierte Tabellen ein zusätzliches div hinzu mit dem dann über CSS der responsive Umgang definiert werden kann. Z.B. die Tabelle horizontal scrollbar machen oder sie umstrukturieren. 6438 * 6439 * @init 6440 * $('#content').gsb_responsiveTables(); 6441 *--GSBDocEnd 6442 */ 6443(function($){if(!$.gsb){$.gsb={};}$.gsb.responsiveTables=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.responsiveTables",base);base.init=function(){base.options=$.extend({},$.gsb.responsiveTables.defaultOptions,options);if(base.$el.find("table").length>0){base.$el.find("table").each(function(){switch(base.options.way){case"scroll":$(this).wrap('<div class="responsiveTable"></div>');break;default:$(this).wrap('<div class="responsiveTable"></div>');break;}});}};base.init();};$.gsb.responsiveTables.defaultOptions={way:"scroll"};$.fn.gsb_responsiveTables=function(options){return this.each(function(){(new $.gsb.responsiveTables(this,options));});};})(jQuery); 6444 /* Ende gsb_responsivetables */ 6445 /* Start gsb_tooltip */ 6446 /*! 6447* --GSBDocStart 6448 * @module gsb_tooltip 6449 * @version 1.0.0 6450 * @see {@link http://foundation.zurb.com/docs/components/tooltips.html} 6451 * @author anuebel 6452 * 6453 * @desc GSB-Wrapper-Plugin fuer Foundation Tooltip-Plugin. Arbeitet als Polyfill, um von Foundation benoetigte 6454 * data-Attribute und Klassen hinzuzufuegen. 6455 * Das Addon arbeitet als Bindeglied zwischen HTML-Elementen und dem Foundation Tooltip Plugin 6456 * 6457 * @option 6458 * tooltipPosition: Die Position des Tooltips(top,bottom(default),left,right) 6459 * tooltipCorners: Layoutmodus des Tooltip(''(default), 'radius', 'round') 6460 * tooltipFoundationOptions: native Optionen fuer das Foundation Plugin(undefined(default), siehe Doku oben) 6461 * 6462 * @requires modernizr(wegen Foundation) 6463 * @requires foundation 6464 * @requires foundation-tooltip 6465 * 6466 * s. auch http://foundation.zurb.com/docs/components/tooltips.html 6467 * 6468 * @init 6469 * // tooltips for abbreviations 6470 * $('abbr').gsb_tooltip(); 6471 * $('acronym').gsb_tooltip(); 6472 *--GSBDocEnd 6473 6474 */ 6475(function($){if(!$.gsb){$.gsb={};}$.gsb.tooltip=function(el,options){var base=this;base.$el=$(el);base.el=el;base.$el.data("gsb.tooltip",base);base.init=function(){base.options=$.extend({},$.gsb.tooltip.defaultOptions,options);base.$el.addClass("has-tip tip-"+base.options.tooltipPosition+" "+base.options.tooltipCorners).attr("data-tooltip","").attr("aria-haspopup","true");if(base.options.tooltipFoundationOptions){var serializedFoundationOptions=JSON.stringify(base.options.tooltipFoundationOptions);base.$el.attr("data-options",serializedFoundationOptions);}};base.init();};$.gsb.tooltip.defaultOptions={tooltipPosition:"bottom",tooltipCorners:"",tooltipFoundationOptions:undefined};$.fn.gsb_tooltip=function(options){return this.each(function(){(new $.gsb.tooltip(this,options));});};})(jQuery); 6476 /* Ende gsb_tooltip */ 6477 /* Start gsb_twoclickshare */ 6478 /*! 6479 * --GSBDocStart 6480 * @module gsb_twoclickshare 6481 * @version 1.0.0 6482 * @see {@link http://www.heise.de/extras/socialshareprivacy/} 6483 * @author rkrusenb 6484 * 6485 * @desc GSB-Wrapper-Plugin fuer Heise-2-Klickloesung 6486 * Schnittstellenbibliothek für 2-Klick-Share 6487 * 6488 * @init 6489 * $("#navFunctionsWrapper").gsb_twoclickshare({ 6490 * toggleElement: '#navFunctionsRecommend a', 6491 * socialSharePrivacyOptions: { 6492 * 'services': { 6493 * 'facebook': { 6494 * 'status': 'on', 6495 * 'txt_info': '2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.', 6496 * 'txt_fb_off': 'nicht mit Facebook verbunden', 6497 * 'txt_fb_on': 'mit Facebook verbunden', 6498 * 'perma_option': 'on', 6499 * 'display_name': 'Facebook', 6500 * 'language': 'de_DE', 6501 * 'dummy_caption': 'Facebook' 6502 * }, 6503 * 'twitter': { 6504 * 'status': 'on', 6505 * 'txt_info': '2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.', 6506 * 'txt_twitter_off': 'nicht mit Twitter verbunden', 6507 * 'txt_twitter_on': 'mit Twitter verbunden', 6508 * 'perma_option': 'on', 6509 * 'display_name': 'Twitter', 6510 * 'language': 'en', 6511 * 'dummy_caption': 'Tweet' 6512 * }, 6513 * 'gplus': { 6514 * 'status': 'on', 6515 * 'txt_info': '2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.', 6516 * 'txt_gplus_off': 'nicht mit Google+ verbunden', 6517 * 'txt_gplus_on': 'mit Google+ verbunden', 6518 * 'perma_option': 'on', 6519 * 'display_name': 'Google+', 6520 * 'referrer_track': '', 6521 * 'language': 'de' 6522 * } 6523 * }, 6524 * 'info_link': 'http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html', 6525 * 'txt_help': 'Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA übertragen und unter Umständen auch dort gespeichert. Nä
6525heres erfahren Sie durch einen Klick auf das <em>i</em>.', 6526 * 'settings_perma': 'Dauerhaft aktivieren und Datenüber­tragung zustimmen:' 6527 * } 6528 * }); 6529 * s. auch http://www.heise.de/extras/socialshareprivacy/ 6530 *--GSBDocEnd 6531 */ 6532(function($){if(!$.gsb){$.gsb={};}$.gsb.twoclickshare=function(el,userOptions){var state={},options,wrapper,toggleElement,wrapperOuter;function init(){options=state.options=$.extend(true,{},$.gsb.twoclickshare.defaultOptions,userOptions);wrapper=$("<"+options.wrapperTag+" />").attr("id",options.wrapperId).attr("class",options.wrapperClass);wrapperInner=state.wrapper=$("<div/>").addClass(options.wrapperInnerClass);wrapper.append(wrapperInner);if(options.insert=="prepend"){$(el).prepend(wrapper);}else{if(options.insert=="append"){$(el).append(wrapper);}else{if(options.insert=="before"){$(el).before(wrapper);}else{if(options.insert=="after"){$(el).after(wrapper);}}}}wrapperInner.socialSharePrivacy(options.socialSharePrivacyOptions).prepend("<h3>"+options.labelHeader+"</h3>").find(".switch, .settings").attr("tabindex",0).keydown(function(ev){if(ev.which==13){$(this).trigger("click");}});if(options.toggleElement){toggleElement=$(options.toggleElement,el);wrapper.find("li:first").before($('<li class="email"><a>'+options.labelFormLink+"</a></li>").find("a").attr("href",toggleElement.attr("href")).end());wrapper.data("gsb.twoclickshare",{oldHeight:wrapper.height()}).css({top:0,display:"none"}).attr("aria-hidden","true");toggleElement.attr("aria-haspopup",true).attr("aria-owns",options.wrapperId).attr("title",options.toggleTitleClosed).click(function(ev){var oldHeight=wrapper.data("gsb.twoclickshare").oldHeight;ev.preventDefault();ev.stopPropagation();if(wrapper.is("[aria-hidden=true]")){wrapper.attr("aria-hidden","false").css({height:0,display:"block"}).animate({top:-oldHeight-2,height:oldHeight},"slow").promise().done(function(){$(this).css("height","").css({top:-$(this).height()-2});});wrapper.find(".close").focus();toggleElement.attr("title",options.toggleTitleOpened);}else{wrapper.attr("aria-hidden","true").data("gsb.twoclickshare",{oldHeight:wrapper.height()}).animate({top:0,height:0},"slow").promise().done(function(){$(this).css({display:"none"});});toggleElement.attr("title",options.toggleTitleClosed);}});}wrapperInner.prepend($('<button class="close" tabindex="0">'+options.labelCloseButton+"</button>").click(function(){toggleElement.trigger("click");toggleElement.focus();}));}init();};$.gsb.twoclickshare.defaultOptions={insert:"after",wrapperId:"share",wrapperTag:"div",wrapperClass:"share",toggleElement:"",toggleTitleClosed:typeof SHOW_MORE!="undefined"?SHOW_MORE:"Mehr anzeigen",toggleTitleOpened:typeof SHOW_LESS!="undefined"?SHOW_LESS:"SchlieÃen",wrapperInnerClass:"wrapper-share",labelHeader:typeof TWOCLICKSHARE_TITLE!="undefined"?TWOCLICKSHARE_TITLE:"In sozialen Medien teilen",labelFormLink:typeof TWOCLICKSHARE_FORMLINKTEXT!="undefined"?TWOCLICKSHARE_FORMLINKTEXT:"E-Mail",labelCloseButton:typeof CLOSE!="undefined"?CLOSE:"SchlieÃen",socialSharePrivacyOptions:{css_path:"",services:{facebook:{dummy_img:typeof image_url_share_facebook_inactive!="undefined"?image_url_share_facebook_inactive:""},twitter:{dummy_img:typeof image_url_share_twitter_inactive!="undefined"?image_url_share_twitter_inactive:""},gplus:{dummy_img:typeof image_url_share_gplus_inactive!="undefined"?image_url_share_gplus_inactive:""}}}};$.fn.gsb_twoclickshare=function(options){return $(this).map(function(){return $.gsb.twoclickshare(this,options);});};})(jQuery); 6533 /* Ende gsb_twoclickshare */ 6534 /* Start gsb_multimedia */ 6535 /*! 6536 * --GSBDocStart 6537 * @module gsb_Multimedia 6538 * @version 1.0.0 6539 * @see {@link http://semver.org|Semantic Versioning | http://mediaelementjs.com} 6540 * @author anuebel 6541 * 6542 * @desc GSB-Wrapper-Plugin fuer mediaelement.js. 6543 * Multimedia für Audio und Video auf Basis von mediaelement.js 6544 * 6545 * @option 6546 * center: Soll das Multimedia-Element zentriert werden(false(default), true)(nur fuer Videos) 6547 * responsive: Objekt mit Angaben zu den Groessen in den verschiedenen Aufloesungen 6548 * mediaelementplayerOptions: native Optionen fuer das mediaelement.js Plugin(null(default), siehe Doku oben) 6549 *
6550 * @requires {@link external:jQuery} 6551 * @requires gsb_responsiveListener 6552 * @requires {@link external:mediaelementjs} 6553 * 6554 * @global jQuery, console 6555 * 6556 * @init 6557 * $('#content video, #content audio').gsb_Multimedia(); 6558 * $('#supplement video, #supplement audio').gsb_Multimedia({ 6559 * settings:{ 6560 * mediaelementplayerOptions: { 6561 * videoWidth: 280, 6562 * videoHeight: 158 6563 * } 6564 * }, 6565 * responsive: [ 6566 * { 6567 * breakpoint: 600, 6568 * settings: { 6569 * mediaelementplayerOptions: { 6570 * videoWidth: 280, 6571 * videoHeight: 158 6572 * } 6573 * } 6574 * } 6575 * ] 6576 * }); 6577 *--GSBDocEnd 6578 */ 6579(function($,window){if(!$.gsb){$.gsb={};}$.gsb.Multimedia=function(el,options){var base=this;base.$el=$(el);base.$elWrapper=base.$el.closest(".mejs-wrapper");base.el=el;base.$el.data("gsb.Multimedia",base);base.reloadHref=base.$el.data("reload-href");base.init(options);};$.gsb.Multimedia.prototype.centerVideoIfRequired=function(){var base=this,mediaelementplayerOptions=base.options.mediaelementplayerOptions,videoWidth=mediaelementplayerOptions&&mediaelementplayerOptions.videoWidth||base.$el.attr("width");if(base.options.center&&videoWidth){var centerContainer,parent=base.$el.parent();if(!parent.is(".mejs-centered")){centerContainer=$('<div class="mejs-centered" style="margin: 0 auto;"></div>');centerContainer.css("width",videoWidth+"px");base.$el.wrap(centerContainer);}else{centerContainer=parent;centerContainer.css("width",videoWidth+"px");}}};$.gsb.Multimedia.prototype.reinitializeVideoElement=function(){var base=this;$.get(base.reloadHref,function(data){var $newVideoElementContainer=$(data);base.$elWrapper.replaceWith($newVideoElementContainer);var newVideoElement=$newVideoElementContainer.find("video").get(0);base.onVideoElementReinitialized(newVideoElement);});};$.gsb.Multimedia.prototype.triggerRefresh=function(){var base=this;if(base.$el.is("video")&&base.reloadHref){base.reinitializeVideoElement();}};$.gsb.Multimedia.prototype.onVideoElementReinitialized=function(newVideoElement){var base=this;base.$el=$(newVideoElement);base.$elWrapper=base.$el.closest(".mejs-wrapper");base.el=newVideoElement;base.$el.data("gsb.Multimedia",base);base.initializeMediaElement();};$.gsb.Multimedia.prototype.initializeMediaElement=function(){var base=this,mediaelementplayerOptions=$.extend({},$.gsb.Multimedia.defaultMediaelementplayerOptions,base.options.settings.mediaelementplayerOptions,base.mediaelementplayerOptionsFromDataAttribute()),$consentWrapper,$consentButton;if(mediaelementplayerOptions.hasOwnProperty("videoWidth")){base.$el.attr("width",mediaelementplayerOptions.videoWidth);}if(mediaelementplayerOptions.hasOwnProperty("videoHeight")){base.$el.attr("height",mediaelementplayerOptions.videoHeight);}base.centerVideoIfRequired();base.$elWrapper.addClass("gsb-multimedia");if(base.options.ytRequiresConsent&&base.$el.find('source[type="video/youtube"]').length&&!base.ytConsented){base.$el.hide();base.$elWrapper.css({height:base.$el.height(),width:base.$el.width(),backgroundImage:"url("+base.$el.attr("poster")+")"}).addClass("consent-required");$consentWrapper=$("<div class='consent-wrapper'><div class='consent-container' /></div>");$consentButton=$("<button type='text' class='consent-button' />").text(base.options.ytConsentButtonText).click(function(){base.ytConsented=true;$consentWrapper.remove();base.$elWrapper.css({backgroundImage:"",height:"",width:""}).removeClass("consent-required");base.$el.attr("autoplay","autoplay");base.$el.show();base.initializeMediaElement();});$consentWrapper.find(".consent-container").html(base.options.ytConsentHtml)[base.options.ytConsentButtonInsertion]($consentButton);base.$elWrapper.append($consentWrapper);return;}base.$el.mediaelementplayer(mediaelementplayerOptions);base.$el.trigger("init.Multimedia.gsb");};$.gsb.Multimedia.prototype.mediaelementplayerOptionsFromDataAttribute=function(){var base=this,optionsFromDataAttributeAsString=base.$el.data("options");var opts={},ii,p,opts_arr=(optionsFromDataAttributeAsString||":").split(";");ii=opts_arr.length;function isNumber(o){return !isNaN(o-0)&&o!==null&&o!==""&&o!==false&&o!==true;}function trim(str){if(typeof str==="string"){return $.trim(str);}return str;}while(ii--){p=opts_arr[ii].split(":");p=[p[0],p.slice(1).join(":")];if(/true/i.test(p[1])){p[1]=true;}if(/false/i.test(p[1])){p[1]=false;}if(isNumber(p[1])){if(p[1].indexOf(".")===-1){p[1]=parseInt(p[1],10);}else{p[1]=parseFloat(p[1]);}}if(p.length===2&&p[0].length>0){opts[trim(p[0])]=trim(p[1]);}}return opts;};$.gsb.Multimedia.prototype.init=function(options){var base=this;base.options=$.extend({},$.gsb.Multimedia.defaultOptions,options);base.$el.gsb_responsiveListener(base.$el.data("gsb.Multimedia"));base.initializeMediaElement();};$.gsb.Multimedia.defaultOptions={onRefresh:function(){this.triggerRefresh();},responsive:[{breakpoint:600,onRefresh:function(){this.triggerRefresh();},settings:{mediaelementplayerOptions:{videoWidth:440,videoHeight:248}}},{breakpoint:440,onRefresh:function(){this.triggerRefresh();},settings:{mediaelementplayerOptions:{videoWidth:280,videoHeight:158}}}],center:false,respondToEvents:true,settings:{mediaelementplayerOptions:{}},ytRequiresConsent:false,ytConsentHtml:"<h3>Aktivierung erforderlich</h3><p>Wir möchten Sie darauf hinweisen, dass nach der Aktivierung Daten an YouTube übermittelt werden.</p>",ytConsentButtonText:"Video aktivieren",ytConsentButtonInsertion:"append"};$.gsb.Multimedia.defaultMediaelementplayerOptions={flashName:"/static/mediaElementPlayer/flashmediaelement.swf",showPosterWhenEnded:true};$.fn.gsb_Multimedia=function(options){return this.each(function(){return new $.gsb.Multimedia(this,options);});};}(jQuery,window)); 6580 /* Ende gsb_multimedia */ 6581 /* Start variables_FIELDS */ 6582 jQuery.gsb_clearfields = function(){ 6583// attach events to search form input 6584 jQuery('#f565216d565176').attachToField('f565216d565176',''); 6585 jQuery('#f565206d565176').attachToField('f565206d565176',''); 6586 jQuery('#f565184d565176').attachToField('f565184d565176',''); 6587 jQuery('#f565192d565176').attachToField('f565192d565176',''); 6588 jQuery('#f565212d565176').attachToField('f565212d565176',''); 6589 jQuery('#f565128d565118').attachToField('f565128d565118','Ihre E-Mail-Adresse'); 6590 jQuery('#f565116d565108').attachToField('f565116d565108','Ihre E-Mail-Adresse'); 6591return; 6592}; 6593 /* Ende variables_FIELDS */ 6594 /* Start init */ 6595 $(document).ready(function(){$("body").addClass("js-on").removeClass("js-off");$("#cookiebanner").gsb_banner({animation:$("#cookiebanner").data("animation"),position:$("#cookiebanner").data("position"),cookieName:"cookiebanner",cookieLifeTimeInDaysVisible:30,cookieLifeTimeInDaysClosed:30});$("#wrapperDivisions").gsb_togglebar();$("#wrapperDivisions").gsb_navigation_mobile({autosuggestURL:json_url_mobileSearch,menuHtml:json_url_mobileMenu});var $stage=$("#stage").find(".stage-container");$stage.gsb_Slideshow({containerElement:".teaser",pagination:true,autoplay:true,autoSpeed:9000,pauseOnHover:true,nextButtonImage:image_url_next,prevButtonImage:image_url_back,prevButtonInactiveImage:image_url_back_g,nextButtonInactiveImage:image_url_next_g,playButtonImagePaused:image_url_play,playButtonImagePlaying:image_url_paused,slickOptions:{arrows:false,fade:false,nextArrow:$stage.parent().find(".next"),prevArrow:$stage.parent().find(".prev"),responsive:[{breakpoint:600,settings:{gsb:{playButton:false},autoplay:false,arrows:true}}]}});var $carousel=$(".startseite").find(".teaser-switcher .karussell");$carousel.gsb_Slideshow({containerElement:".teaser",autoplay:false,pagination:true,nextButtonImage:image_url_next,prevButtonImage:image_url_back,prevButtonInactiveImage:image_url_back_g,nextButtonInactiveImage:image_url_next_g,slickOptions:{slidesToShow:5,slidesToScroll:5,fade:false,nextArrow:$carousel.parent().find(".next"),prevArrow:$carousel.parent().find(".prev"),responsive:[{breakpoint:1023,settings:{slidesToShow:3,slidesToScroll:3}},{breakpoint:610,settings:{slidesToShow:2,slidesToScroll:2}},{breakpoint:440,settings:{slidesToShow:1,slidesToScroll:1}}]}});
6595$(".galleryBox").gsb_Slideshow({slideshowControls:true,generateButtonContainer:false,autoplay:false,pagination:false,nextButtonImage:image_url_next,prevButtonImage:image_url_back,prevButtonInactiveImage:image_url_back_g,nextButtonInactiveImage:image_url_next_g,slickOptions:{adaptiveHeight:true,fade:false}});$("#supplement .live-calendar").gsb_calendar({beforeInit:function beforeInit(){$("#supplement .live-calendar").find(".has-tip").each(function(_,el){$("#"+$(el).attr("aria-describedby")).remove();});},afterInit:function afterInit(){$("#supplement .live-calendar").find("abbr, acronym").gsb_tooltip().foundation();}});$("#navPrimary").gsb_navigation();$("#content").gsb_responsiveTables();$("#navFunctions").gsb_printlink();$(".GlossarEntry[data-lightbox-href]").gsb_lightbox();$(".picture .loupe").not(".galleryBox *").gsb_lightbox();$(".galleryBox").gsb_lightbox({lightboxType:"multiple",element:".slide",imagePrev:image_url_back,imageNext:image_url_next,imagePrevInactive:image_url_back_g,imageNextInactive:image_url_next_g});$("#navFunctionsWrapper").gsb_twoclickshare({toggleElement:"#navFunctionsRecommend a",socialSharePrivacyOptions:{"services":{"facebook":{"status":"on","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","perma_option":"on","display_name":"Facebook","language":"de_DE","dummy_caption":"Facebook"},"twitter":{"status":"on","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","perma_option":"on","display_name":"Twitter","language":"en","dummy_caption":"Tweet"},"gplus":{"status":"on","txt_info":"2 Klicks für mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie können Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte übertragen – siehe <em>i</em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","perma_option":"on","display_name":"Google+","referrer_track":"","language":"de"}},"info_link":"http://www.heise.de/ct/artikel/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA übertragen und unter Umständen auch dort gespeichert. Näheres erfahren Sie durch einen Klick auf das <em>i</em>.","settings_perma":"Dauerhaft aktivieren und Datenüber­tragung zustimmen:"}});$.gsb_clearfields();$("#siteInfo").find(".smallAccordion").gsb_toggle({onRefresh:function onRefresh(){this.initialize();this.refreshAccordion();},tab:false,accordion:true});$("#content").find(".toggleEntry").gsb_toggle({tab:false,accordion:true,accordionCloseOther:false,onRefresh:function onRefresh(){this.initialize();},responsive:[]});$("#supplement").find(".toggleFacet").gsb_toggle({tab:false,accordion:true,accordionCloseOther:false,onRefresh:function onRefresh(){this.initialize();},responsive:[]});$(".selected .toggle").click();$("abbr").gsb_tooltip();$("acronym").gsb_tooltip();$("#content video, #content audio").gsb_Multimedia();$("#supplement video, #supplement audio").gsb_Multimedia({settings:{mediaelementplayerOptions:{videoWidth:280,videoHeight:158}},responsive:[{breakpoint:600,settings:{mediaelementplayerOptions:{videoWidth:280,videoHeight:158}}}]});$(document).foundation();}); 6596 /* Ende init */ 6597jQuery(document).ready(function (jQuery){ 6598 // Autosuggest 6599 var searchforms = []; 6600 searchforms[1] = { 6601 id : 'searchService', 6602 action : 'SiteGlobals/Forms/Suche/Servicesuche_Autosuggest_Formular.html?nn=373444' 6603 }; 6604 searchforms[2] = { 6605 id : 'searchExpert', 6606 action : 'SiteGlobals/Forms/Suche/Expertensuche_Autosuggest_Formular.html?nn=373444' 6607 }; 6608 if(searchforms.length > 0){ 6609 $(searchforms).each(function(index){ 6610 var valueObj = searchforms[index],form; 6611 if(valueObj !== undefined){
6612 form = jQuery('form[name="'+ valueObj.id +'"]'); 6613 if(form.length > 0){ 6614 form.gsb_AutoSuggest(valueObj.action); 6615 } 6616 } 6617 }); 6618 } 6619});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.