1// usage: log('inside coolFunc', this, arguments); 2// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/ 3window.log = function f(){ log.history = log.history || []; log.history.push(arguments); if(this.console) { var args = arguments, newarr; args.callee = args.callee.caller; newarr = [].slice.call(args); if (typeof console.log === 'object') log.apply.call(console.log, console, newarr); else console.log.apply(console, newarr);}}; 4 5// make it safe to use console.log always 6(function(a){function b(){}for(var c="assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","),d;!!(d=c.pop());){a[d]=a[d]||b;}}) 7(function(){try{console.log();return window.console;}catch(a){return (window.console={});}}()); 8 9 10/*! 11 * jQuery Cookie Plugin v1.3.1 12 * https://github.com/carhartl/jquery-cookie 13 * 14 * Copyright 2013 Klaus Hartl 15 * Released under the MIT license 16 */ 17(function(factory){if(typeof define==='function'&&define.amd&&define.amd.jQuery){define(['jquery'],factory);}else{factory(jQuery);}}(function($){var pluses=/\+/g;function raw(s){return s;} 18function decoded(s){return decodeURIComponent(s.replace(pluses,' '));} 19function converted(s){if(s.indexOf('"')===0){s=s.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,'\\');} 20try{return config.json?JSON.parse(s):s;}catch(er){}} 21var config=$.cookie=function(key,value,options){if(value!==undefined){options=$.extend({},config.defaults,options);if(typeof options.expires==='number'){var days=options.expires,t=options.expires=new Date();t.setDate(t.getDate()+days);} 22value=config.json?JSON.stringify(value):String(value);return(document.cookie=[encodeURIComponent(key),'=',config.raw?value:encodeURIComponent(value),options.expires?'; expires='+options.expires.toUTCString():'',options.path?'; path='+options.path:'',options.domain?'; domain='+options.domain:'',options.secure?'; secure':''].join(''));} 23var decode=config.raw?raw:decoded;var cookies=document.cookie.split('; ');var result=key?undefined:{};for(var i=0,l=cookies.length;i<l;i++){var parts=cookies[i].split('=');var name=decode(parts.shift());var cookie=decode(parts.join('='));if(key&&key===name){result=converted(cookie);break;} 24if(!key){result[name]=converted(cookie);}} 25return result;};config.defaults={};$.removeCookie=function(key,options){if($.cookie(key)!==undefined){$.cookie(key,'',$.extend(options,{expires:-1}));return true;} 26return false;};})); 27 28/* 29 * jQuery FlexSlider v2.1 30 * http://www.woothemes.com/flexslider/ 31 * 32 * Copyright 2012 WooThemes 33 * Free to use under the GPLv2 license. 34 * http://www.gnu.org/licenses/gpl-2.0.html 35 * 36 * Contributing author: Tyler Smith (@mbmufffin) 37 */ 38(function(d){d.flexslider=function(j,l){var a=d(j),c=d.extend({},d.flexslider.defaults,l),e=c.namespace,q="ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch,u=q?"touchend":"click",m="vertical"===c.direction,n=c.reverse,h=0<c.itemWidth,s="fade"===c.animation,t=""!==c.asNavFor,f={};d.data(j,"flexslider",a);f={init:function(){a.animating=!1;a.currentSlide=c.startAt;a.animatingTo=a.currentSlide;a.atEnd=0===a.currentSlide||a.currentSlide===a.last;a.containerSelector=c.selector.substr(0, 39c.selector.search(" "));a.slides=d(c.selector,a);a.container=d(a.containerSelector,a);a.count=a.slides.length;a.syncExists=0<d(c.sync).length;"slide"===c.animation&&(c.animation="swing");a.prop=m?"top":"marginLeft";a.args={};a.manualPause=!1;var b=a,g;if(g=!c.video)if(g=!s)if(g=c.useCSS)a:{g=document.createElement("div");var p=["perspectiveProperty","WebkitPerspective","MozPerspective","OPerspective","msPerspective"],e;for(e in p)if(void 0!==g.style[p[e]]){a.pfx=p[e].replace("Perspective","").toLowerCase(); 40a.prop="-"+a.pfx+"-transform";g=!0;break a}g=!1}b.transitions=g;""!==c.controlsContainer&&(a.controlsContainer=0<d(c.controlsContainer).length&&d(c.controlsContainer));""!==c.manualControls&&(a.manualControls=0<d(c.manualControls).length&&d(c.manualControls));c.randomize&&(a.slides.sort(function(){return Math.round(Math.random())-0.5}),a.container.empty().append(a.slides));a.doMath();t&&f.asNav.setup();a.setup("init");c.controlNav&&f.controlNav.setup();c.directionNav&&f.directionNav.setup();c.keyboard&& 41(1===d(a.containerSelector).length||c.multipleKeyboard)&&d(document).bind("keyup",function(b){b=b.keyCode;if(!a.animating&&(39===b||37===b))b=39===b?a.getTarget("next"):37===b?a.getTarget("prev"):!1,a.flexAnimate(b,c.pauseOnAction)});c.mousewheel&&a.bind("mousewheel",function(b,g){b.preventDefault();var d=0>g?a.getTarget("next"):a.getTarget("prev");a.flexAnimate(d,c.pauseOnAction)});c.pausePlay&&f.pausePlay.setup();c.slideshow&&(c.pauseOnHover&&a.hover(function(){!a.manualPlay&&!a.manualPause&&a.pause()}, 42function(){!a.manualPause&&!a.manualPlay&&a.play()}),0<c.initDelay?setTimeout(a.play,c.initDelay):a.play());q&&c.touch&&f.touch();(!s||s&&c.smoothHeight)&&d(window).bind("resize focus",f.resize);setTimeout(function(){c.start(a)},200)},asNav:{setup:function(){a.asNav=!0;a.animatingTo=Math.floor(a.currentSlide/a.move);a.currentItem=a.currentSlide;a.slides.removeClass(e+"active-slide").eq(a.currentItem).addClass(e+"active-slide");a.slides.click(function(b){b.preventDefault();b=d(this);var g=b.index(); 43!d(c.asNavFor).data("flexslider").animating&&!b.hasClass("active")&&(a.direction=a.currentItem<g?"next":"prev",a.flexAnimate(g,c.pauseOnAction,!1,!0,!0))})}},controlNav:{setup:function(){a.manualControls?f.controlNav.setupManual():f.controlNav.setupPaging(
43)},setupPaging:function(){var b=1,g;a.controlNavScaffold=d('<ol class="'+e+"control-nav "+e+("thumbnails"===c.controlNav?"control-thumbs":"control-paging")+'"></ol>');if(1<a.pagingCount)for(var p=0;p<a.pagingCount;p++)g="thumbnails"===c.controlNav? 44'<img src="'+a.slides.eq(p).attr("data-thumb")+'"/>':"<a>"+b+"</a>",a.controlNavScaffold.append("<li>"+g+"</li>"),b++;a.controlsContainer?d(a.controlsContainer).append(a.controlNavScaffold):a.append(a.controlNavScaffold);f.controlNav.set();f.controlNav.active();a.controlNavScaffold.delegate("a, img",u,function(b){b.preventDefault();b=d(this);var g=a.controlNav.index(b);b.hasClass(e+"active")||(a.direction=g>a.currentSlide?"next":"prev",a.flexAnimate(g,c.pauseOnAction))});q&&a.controlNavScaffold.delegate("a", 45"click touchstart",function(a){a.preventDefault()})},setupManual:function(){a.controlNav=a.manualControls;f.controlNav.active();a.controlNav.live(u,function(b){b.preventDefault();b=d(this);var g=a.controlNav.index(b);b.hasClass(e+"active")||(g>a.currentSlide?a.direction="next":a.direction="prev",a.flexAnimate(g,c.pauseOnAction))});q&&a.controlNav.live("click touchstart",function(a){a.preventDefault()})},set:function(){a.controlNav=d("."+e+"control-nav li "+("thumbnails"===c.controlNav?"img":"a"), 46a.controlsContainer?a.controlsContainer:a)},active:function(){a.controlNav.removeClass(e+"active").eq(a.animatingTo).addClass(e+"active")},update:function(b,c){1<a.pagingCount&&"add"===b?a.controlNavScaffold.append(d("<li><a>"+a.count+"</a></li>")):1===a.pagingCount?a.controlNavScaffold.find("li").remove():a.controlNav.eq(c).closest("li").remove();f.controlNav.set();1<a.pagingCount&&a.pagingCount!==a.controlNav.length?a.update(c,b):f.controlNav.active()}},directionNav:{setup:function(){var b=d('<ul class="'+ 47e+'direction-nav"><li><a class="'+e+'prev" href="#">'+c.prevText+'</a></li><li><a class="'+e+'next" href="#">'+c.nextText+"</a></li></ul>");a.controlsContainer?(d(a.controlsContainer).append(b),a.directionNav=d("."+e+"direction-nav li a",a.controlsContainer)):(a.append(b),a.directionNav=d("."+e+"direction-nav li a",a));f.directionNav.update();a.directionNav.bind(u,function(b){b.preventDefault();b=d(this).hasClass(e+"next")?a.getTarget("next"):a.getTarget("prev");a.flexAnimate(b,c.pauseOnAction)}); 48q&&a.directionNav.bind("click touchstart",function(a){a.preventDefault()})},update:function(){var b=e+"disabled";1===a.pagingCount?a.directionNav.addClass(b):c.animationLoop?a.directionNav.removeClass(b):0===a.animatingTo?a.directionNav.removeClass(b).filter("."+e+"prev").addClass(b):a.animatingTo===a.last?a.directionNav.removeClass(b).filter("."+e+"next").addClass(b):a.directionNav.removeClass(b)}},pausePlay:{setup:function(){var b=d('<div class="'+e+'pauseplay"><a></a></div>');a.controlsContainer? 49(a.controlsContainer.append(b),a.pausePlay=d("."+e+"pauseplay a",a.controlsContainer)):(a.append(b),a.pausePlay=d("."+e+"pauseplay a",a));f.pausePlay.update(c.slideshow?e+"pause":e+"play");a.pausePlay.bind(u,function(b){b.preventDefault();d(this).hasClass(e+"pause")?(a.manualPause=!0,a.manualPlay=!1,a.pause()):(a.manualPause=!1,a.manualPlay=!0,a.play())});q&&a.pausePlay.bind("click touchstart",function(a){a.preventDefault()})},update:function(b){"play"===b?a.pausePlay.removeClass(e+"pause").addClass(e+ 50"play").text(c.playText):a.pausePlay.removeClass(e+"play").addClass(e+"pause").text(c.pauseText)}},touch:function(){function b(b){k=m?d-b.touches[0].pageY:d-b.touches[0].pageX;q=m?Math.abs(k)<Math.abs(b.touches[0].pageX-e):Math.abs(k)<Math.abs(b.touches[0].pageY-e);if(!q||500<Number(new Date)-l)b.preventDefault(),!s&&a.transitions&&(c.animationLoop||(k/=0===a.currentSlide&&0>k||a.currentSlide===a.last&&0<k?Math.abs(k)/r+2:1),a.setProps(f+k,"setTouch"))}function g(){j.removeEventListener("touchmove", 51b,!1);if(a.animatingTo===a.currentSlide&&!q&&null!==k){var h=n?-k:k,m=0<h?a.getTarget("next"):a.getTarget("prev");a.canAdvance(m)&&(550>Number(new Date)-l&&50<Math.abs(h)||Math.abs(h)>r/2)?a.flexAnimate(m,c.pauseOnAction):s||a.flexAnimate(a.currentSlide,c.pauseOnAction,!0)}j.removeEventListener("touchend",g,!1);f=k=e=d=null}var d,e,f,r,k,l,q=!1;j.addEventListener("touchstart",function(k){a.animating?k.preventDefault():1===k.touches.length&&(a.pause(),r=m?a.h:a.w,l=Number(new Date),f=h&&n&&a.animatingTo=== 52a.last?0:h&&n?a.limit-(a.itemW+c.itemMargin)*a.move*a.animatingTo:h&&a.currentSlide===a.last?a.limit:h?(a.itemW+c.itemMargin)*a.move*a.currentSlide:n?(a.last-a.currentSlide+a.cloneOffset)*r:(a.currentSlide+a.cloneOffset)*r,d=m?k.touches[0].pageY:k.touches[0].pageX,e=m?k.touches[0].pageX:k.touches[0].pageY,j.addEventListener("touchmove",b,!1),j.addEventListener("touchend",g,!1))},!1)},resize:function(){!a.animating&&a.is(":visible")&&(h||a.doMath(),s?f.smoothHeight():h?(a.slides.width(a.computedW), 53a.update(a.pagingCount),a.setProps()):m?(a.viewport.height(a.h),a.setProps(a.h,"setTotal")):(c.smoothHeight&&f.smoothHeight(),a.newSlides.width(a.computedW),a.setProps(a.computedW,"setTotal")))},smoothHeight:function(b){if(!m||s){var c=s?a:a.viewport;b?c.animate({height:a.slides.eq(a.animatingTo).height()},b):c.height(a.slides.eq(a.animatingTo).height())}},sync:function(b){var g=d(c.sync).data("flexslider"),e=a.animatingTo;switch(b){case "animate":g.flexAnimate(e,c.pauseOnAction,!1,!0);break;case "play":!g.playing&& 54!g.asNav&&g.play();break;case "pause":g.pause()}}};a.flexAnimate=function(b,g,p,j,l){t&&1===a.pagingCount&&(a.direction=a.currentItem<b?"next":"prev");
54if(!a.animating&&(a.canAdvance(b,l)||p)&&a.is(":visible")){if(t&&j)if(p=d(c.asNavFor).data("flexslider"),a.atEnd=0===b||b===a.count-1,p.flexAnimate(b,!0,!1,!0,l),a.direction=a.currentItem<b?"next":"prev",p.direction=a.direction,Math.ceil((b+1)/a.visible)-1!==a.currentSlide&&0!==b)a.currentItem=b,a.slides.removeClass(e+"active-slide").eq(b).addClass(e+ 55"active-slide"),b=Math.floor(b/a.visible);else return a.currentItem=b,a.slides.removeClass(e+"active-slide").eq(b).addClass(e+"active-slide"),!1;a.animating=!0;a.animatingTo=b;c.before(a);g&&a.pause();a.syncExists&&!l&&f.sync("animate");c.controlNav&&f.controlNav.active();h||a.slides.removeClass(e+"active-slide").eq(b).addClass(e+"active-slide");a.atEnd=0===b||b===a.last;c.directionNav&&f.directionNav.update();b===a.last&&(c.end(a),c.animationLoop||a.pause());if(s)q?(a.slides.eq(a.currentSlide).css({opacity:0, 56zIndex:1}),a.slides.eq(b).css({opacity:1,zIndex:2}),a.slides.unbind("webkitTransitionEnd transitionend"),a.slides.eq(a.currentSlide).bind("webkitTransitionEnd transitionend",function(){c.after(a)}),a.animating=!1,a.currentSlide=a.animatingTo):(a.slides.eq(a.currentSlide).fadeOut(c.animationSpeed,c.easing),a.slides.eq(b).fadeIn(c.animationSpeed,c.easing,a.wrapup));else{var r=m?a.slides.filter(":first").height():a.computedW;h?(b=c.itemWidth>a.w?2*c.itemMargin:c.itemMargin,b=(a.itemW+b)*a.move*a.animatingTo, 57b=b>a.limit&&1!==a.visible?a.limit:b):b=0===a.currentSlide&&b===a.count-1&&c.animationLoop&&"next"!==a.direction?n?(a.count+a.cloneOffset)*r:0:a.currentSlide===a.last&&0===b&&c.animationLoop&&"prev"!==a.direction?n?0:(a.count+1)*r:n?(a.count-1-b+a.cloneOffset)*r:(b+a.cloneOffset)*r;a.setProps(b,"",c.animationSpeed);if(a.transitions){if(!c.animationLoop||!a.atEnd)a.animating=!1,a.currentSlide=a.animatingTo;a.container.unbind("webkitTransitionEnd transitionend");a.container.bind("webkitTransitionEnd transitionend", 58function(){a.wrapup(r)})}else a.container.animate(a.args,c.animationSpeed,c.easing,function(){a.wrapup(r)})}c.smoothHeight&&f.smoothHeight(c.animationSpeed)}};a.wrapup=function(b){!s&&!h&&(0===a.currentSlide&&a.animatingTo===a.last&&c.animationLoop?a.setProps(b,"jumpEnd"):a.currentSlide===a.last&&(0===a.animatingTo&&c.animationLoop)&&a.setProps(b,"jumpStart"));a.animating=!1;a.currentSlide=a.animatingTo;c.after(a)};a.animateSlides=function(){a.animating||a.flexAnimate(a.getTarget("next"))};a.pause= 59function(){clearInterval(a.animatedSlides);a.playing=!1;c.pausePlay&&f.pausePlay.update("play");a.syncExists&&f.sync("pause")};a.play=function(){a.animatedSlides=setInterval(a.animateSlides,c.slideshowSpeed);a.playing=!0;c.pausePlay&&f.pausePlay.update("pause");a.syncExists&&f.sync("play")};a.canAdvance=function(b,g){var d=t?a.pagingCount-1:a.last;return g?!0:t&&a.currentItem===a.count-1&&0===b&&"prev"===a.direction?!0:t&&0===a.currentItem&&b===a.pagingCount-1&&"next"!==a.direction?!1:b===a.currentSlide&& 60!t?!1:c.animationLoop?!0:a.atEnd&&0===a.currentSlide&&b===d&&"next"!==a.direction?!1:a.atEnd&&a.currentSlide===d&&0===b&&"next"===a.direction?!1:!0};a.getTarget=function(b){a.direction=b;return"next"===b?a.currentSlide===a.last?0:a.currentSlide+1:0===a.currentSlide?a.last:a.currentSlide-1};a.setProps=function(b,g,d){var e,f=b?b:(a.itemW+c.itemMargin)*a.move*a.animatingTo;e=-1*function(){if(h)return"setTouch"===g?b:n&&a.animatingTo===a.last?0:n?a.limit-(a.itemW+c.itemMargin)*a.move*a.animatingTo:a.animatingTo=== 61a.last?a.limit:f;switch(g){case "setTotal":return n?(a.count-1-a.currentSlide+a.cloneOffset)*b:(a.currentSlide+a.cloneOffset)*b;case "setTouch":return b;case "jumpEnd":return n?b:a.count*b;case "jumpStart":return n?a.count*b:b;default:return b}}()+"px";a.transitions&&(e=m?"translate3d(0,"+e+",0)":"translate3d("+e+",0,0)",d=void 0!==d?d/1E3+"s":"0s",a.container.css("-"+a.pfx+"-transition-duration",d));a.args[a.prop]=e;(a.transitions||void 0===d)&&a.container.css(a.args)};a.setup=function(b){if(s)a.slides.css({width:"100%", 62"float":"left",marginRight:"-100%",position:"relative"}),"init"===b&&(q?a.slides.css({opacity:0,display:"block",webkitTransition:"opacity "+c.animationSpeed/1E3+"s ease",zIndex:1}).eq(a.currentSlide).css({opacity:1,zIndex:2}):a.slides.eq(a.currentSlide).fadeIn(c.animationSpeed,c.easing)),c.smoothHeight&&f.smoothHeight();else{var g,p;"init"===b&&(a.viewport=d('<div class="'+e+'viewport"></div>').css({overflow:"hidden",position:"relative"}).appendTo(a).append(a.container),a.cloneCount=0,a.cloneOffset= 630,n&&(p=d.makeArray(a.slides).reverse(),a.slides=d(p),a.container.empty().append(a.slides)));c.animationLoop&&!h&&(a.cloneCount=2,a.cloneOffset=1,"init"!==b&&a.container.find(".clone").remove(),a.container.append(a.slides.first().clone().addClass("clone")).prepend(a.slides.last().clone().addClass("clone")));a.newSlides=d(c.selector,a);g=n?a.count-1-a.currentSlide+a.cloneOffset:a.currentSlide+a.cloneOffset;m&&!h?(a.container.height(200*(a.count+a.cloneCount)+"%").css("position","absolute").width("100%"), 64setTimeout(function(){a.newSlides.css({display:"block"});a.doMath();a.viewport.height(a.h);a.setProps(g*a.h,"init")},"init"===b?100:0)):(a.container.width(200*(a.count+a.cloneCount)+"%"),a.setProps(g*a.computedW,"init"),setTimeout(function(){a.doMath();a.newSlides.css({width:a.computedW,"float":"left",display:"block"});c.smoothHeight&&f.smoothHeight()},"init"===b?100:0))}h||a.slides.removeClass(e+"active-slide").eq(a.currentSlide).addClass(e+"active-slide")};a.doMath=function(){var b=a.slides.first(), 65d=c.itemMargin,e=c.minItems,f=c.maxItems;a.w=a.width();a.h=b.height();a.boxPadding=b.outerWidth()-b.width();h?(a.itemT=c.itemWidth+d,a.minW=e?e*a.itemT:a.w,a.maxW=f?f*a.itemT:a.w,a.itemW=a.minW>a.w?(a.w-d*e)/e:a.maxW<a.w?(a.w-d*f)/f:c.itemWidth>a.w?a.w:c.itemWidth,a.visible=Math.floor(a.w/(a.itemW+d)),a.move=0<c.move&&c.move<a.visible?c.move:a.visible,a.pagingCount=Math.ceil((a.count-a.visible)/a.move+1),a.last=a.pagingCount-1,a.limit=1===a.pagingCount?0:c.itemWidth>a.w?(a.itemW+2*d)*a.count-a.w- 66d:(a.itemW+d)*a.count-a.w-d):(a.itemW=a.w,a.pagingCount=a.count,a.last=a.count-1);a.computedW=a.itemW-a.boxPadding};a.update=function(b,d){a.doMath();h||(b<a.currentSlide?a.currentSlide+=1:b<=a.currentSlide&&0!==b&&(a.currentSlide-=1),a.animatingTo=a.currentSlide);
66if(c.controlNav&&!a.manualControls)if("add"===d&&!h||a.pagingCount>a.controlNav.length)f.controlNav.update("add");else if("remove"===d&&!h||a.pagingCount<a.controlNav.length)h&&a.currentSlide>a.last&&(a.currentSlide-=1,a.animatingTo-=1), 67f.controlNav.update("remove",a.last);c.directionNav&&f.directionNav.update()};a.addSlide=function(b,e){var f=d(b);a.count+=1;a.last=a.count-1;m&&n?void 0!==e?a.slides.eq(a.count-e).after(f):a.container.prepend(f):void 0!==e?a.slides.eq(e).before(f):a.container.append(f);a.update(e,"add");a.slides=d(c.selector+":not(.clone)",a);a.setup();c.added(a)};a.removeSlide=function(b){var e=isNaN(b)?a.slides.index(d(b)):b;a.count-=1;a.last=a.count-1;isNaN(b)?d(b,a.slides).remove():m&&n?a.slides.eq(a.last).remove(): 68a.slides.eq(b).remove();a.doMath();a.update(e,"remove");a.slides=d(c.selector+":not(.clone)",a);a.setup();c.removed(a)};f.init()};d.flexslider.defaults={namespace:"flex-",selector:".slides > li",animation:"fade",easing:"swing",direction:"horizontal",reverse:!1,animationLoop:!0,smoothHeight:!1,startAt:0,slideshow:!0,slideshowSpeed:7E3,animationSpeed:600,initDelay:0,randomize:!1,pauseOnAction:!0,pauseOnHover:!1,useCSS:!0,touch:!0,video:!1,controlNav:!0,directionNav:!0,prevText:"Previous",nextText:"Next", 69keyboard:!0,multipleKeyboard:!1,mousewheel:!1,pausePlay:!1,pauseText:"Pause",playText:"Play",controlsContainer:"",manualControls:"",sync:"",asNavFor:"",itemWidth:0,itemMargin:0,minItems:0,maxItems:0,move:0,start:function(){},before:function(){},after:function(){},end:function(){},added:function(){},removed:function(){}};d.fn.flexslider=function(j){void 0===j&&(j={});if("object"===typeof j)return this.each(function(){var a=d(this),c=a.find(j.selector?j.selector:".slides > li");1===c.length?(c.fadeIn(400), 70j.start&&j.start(a)):void 0==a.data("flexslider")&&new d.flexslider(this,j)});var l=d(this).data("flexslider");switch(j){case "play":l.play();break;case "pause":l.pause();break;case "next":l.flexAnimate(l.getTarget("next"),!0);break;case "prev":case "previous":l.flexAnimate(l.getTarget("prev"),!0);break;default:"number"===typeof j&&l.flexAnimate(j,!0)}}})(jQuery); 71 72;var hastouch = Modernizr.touch; 73var hasplaceholder = Modernizr.placeholder; 74 75if( !window.Retina ) { 76 var is_retina = false; 77 $("html").addClass( "no-retina" ); 78} else { 79 var is_retina = Retina.isRetina(); 80 if ( is_retina ) { 81 $("html").addClass( "retina" ); 82 } else { 83 $("html").addClass( "no-retina" ); 84 } 85} 86 87 88/* For mobile, hide the iOS toolbar on initial page load */ 89/* /mobile/i.test(navigator.userAgent) && !window.location.hash && setTimeout(function () { window.scrollTo(0, 0); }, 1000); */ 90 91 92/* Load, Resize and Orientation change methods 93 * http://css-tricks.com/forums/discussion/16123/reload-jquery-functions-on-ipad-orientation-change/p1 */ 94 95//initial load 96$(window).load(on_resize_orientationchange); 97 98//bind to resize 99$(window).resize(on_resize_orientationchange); 100 101//check for the orientation event and bind accordingly 102if (window.DeviceOrientationEvent) { 103 window.addEventListener('orientationchange', on_resize_orientationchange, false); 104} 105 106 107/* Variables to set to true later and check */ 108supernavs_loaded = false; 109 110/* Load progressive content. Must remember to also load them for IE 7 and 8 if needed */ 111function on_resize_orientationchange() { 112 113 // Check if a container is empty !$.trim( $('#mainnav').html() ).length 114 115 /* 116 * "Watch" the body:after { content } to find out how wide the viewport is. 117 * Thanks to http://adactio.com/journal/5429/ for details about this method 118 */ 119 mq_tag = window.getComputedStyle(document.body,':after').getPropertyValue('content'); 120 121 /* Click the menu button and add a class to the body for a "drawer" */ 122 if ( mq_tag.indexOf("drawer_navigation") !=-1 ) { 123 124 /* TO DO: Look for a left-right swipe action (on the #touchnav-wrapper?) and also trigger the menu to open/close */ 125 $( "#site-map-link" ).click( function() { 126 $("body").toggleClass("show-sidemenu"); 127 //console.log( "! #site-map-link has been tapped" ); 128 return false;
129 }); 130 131 } else { 132 133 /* If "drawer_navigation" is not present, treat the Menu button as a scroller down to the footer */ 134 $("#site-map-link").click(function() { 135 $('body, html').animate({ scrollTop: $('#site-map').offset().top }, 500); 136 return false; 137 }); 138 } 139 140 141 /* Load a supernav into the About dropdown */ 142 if ( ! hastouch ) { 143 144 if ( mq_tag.indexOf("load_supernavs") !=-1 && ! supernavs_loaded ) { 145 146 $.get("/box/supernav-python-about/", 147 function(data){ 148 $('.python-navigation li#about .subnav').append( data ); 149 }, "html"); 150 $('li#about').addClass("with-supernav"); 151 152 $.get("/box/supernav-python-downloads/", 153 function(data){ 154 $('li#downloads .subnav').append( data ); 155 /* Toggle Download buttons by OS detection */ 156 if (navigator.appVersion.indexOf("Win")!=-1) { 157 $('.download-unknown').hide(); 158 $('.download-os-windows').show(); 159 } 160 if (navigator.appVersion.indexOf("Mac")!=-1) { 161 $('.download-unknown').hide(); 162 $('.download-os-macos').show(); 163 } 164 if (navigator.appVersion.indexOf("X11")!=-1) { 165 $('.download-unknown').hide(); 166 $('.download-os-source').show(); 167 } 168 if (navigator.appVersion.indexOf("Linux")!=-1) { 169 $('.download-unknown').hide(); 170 $('.download-os-source').show(); 171 } 172 }, "html"); 173 $('li#downloads').addClass("with-supernav"); 174 175 $.get("/box/supernav-python-documentation/", 176 function(data){ 177 $('li#documentation .subnav').append( data ); 178 }, "html"); 179 $('li#documentation').addClass("with-supernav"); 180 181 $.get("/box/supernav-python-community/", 182 function(data){ 183 $('li#community .subnav').append( data ); 184 }, "html"); 185 $('li#community').addClass("with-supernav"); 186 187 $.get("/box/supernav-python-success-stories/", 188 function(data){ 189 $('li#success-stories .subnav').append( data ); 190 }, "html"); 191 $('li#success-stories').addClass("with-supernav"); 192 193 $.get("/box/supernav-python-blog/", 194 function(data){ 195 $('li#blog .subnav').append( data ); 196 }, "html"); 197 $('li#blog').addClass("with-supernav"); 198 199 $.get("/box/supernav-python-events/", 200 function(data){ 201 $('li#events .subnav').append( data ); 202 }, "html"); 203 $('li#events').addClass("with-supernav"); 204 205 supernavs_loaded = true; 206 //console.log( "! supernavs_loaded has fired" ); 207 } 208 } 209 210}; 211 212 213function getPythonStatus() { 214 $.ajax({ 215 url: "https://2p66nmmycsj3.statuspage.io/api/v2/status.json" 216 }).done(function(data) { 217 var className = 'python-status-indicator-' + data.status.indicator; 218 $('#python-status-indicator') 219 .removeClass('python-status-indicator-default') 220 .addClass(className) 221 .parent() 222 .attr('title', data.status.description); 223 }); 224}; 225 226/* Initiate some other functions as well. Fires on first page load or when called. */ 227$().ready(function() { 228 229 var $container = $('#container'); 230 $container.masonry({ itemSelector: '.tier-1' }); 231 var mq = window.matchMedia('all and (max-width: 400px)'); 232 var check_masonry = function (msnry) { 233 if(msnry.matches) { 234 $container.masonry('destroy'); 235 } else { 236 $container.masonry(); 237 } 238 }; 239 check_masonry(mq); 240 mq.addListener(check_masonry); 241 242 /* 243 * Ensure PythonAnywhere is open for business and only fires on homepage 244 */ 245 if($('body#homepage').length) { 246 var launch_shell = $('#launch-shell');
247 launch_shell.toggle(); 248 $.getJSON('https://console.python.org/python-dot-org-live-consoles-status', function (data) { 249 if(data.status == 'OK') { 250 launch_shell.toggle(); 251 } 252 }); 253 } 254 /* Animate some scrolling for smoother transitions */ 255 256 /* ! Not currently working in IE10/Windows 8, Chrome for Android, Firefox (all versions)... something about the animate() function */ 257 $("#close-python-network").click(function() { 258 $('body, html').animate({ scrollTop: $('#python-network').offset().top }, 300); 259 return false; 260 }); 261 262 $("#python-network").click(function() { 263 $('body, html').animate({ scrollTop: $('#top').offset().top }, 300); 264 return false; 265 }); 266 267 $("#back-to-top-1, #back-to-top-2").click(function() { 268 $('body, html').animate({ scrollTop: $('#python-network').offset().top }, 500); 269 return false; 270 }); 271 272 /* 273 * Load interactive shell on the homepage. 274 */ 275 function loadShell(e) { 276 var CONSOLE_URL = 'https://console.python.org/python-dot-org-console/'; 277 e.preventDefault(); 278 shellDiv = $($(e.target).data('shell-container')); 279 280 // The iframe's DIV containing the shell has a min-height: 300px 281 var shellHeight = 300; 282 shellDiv.animate({height: shellHeight}); 283 var iframe = $('<iframe>').width('100%').height(shellHeight); 284 $(iframe).attr('src', CONSOLE_URL); 285 shellDiv.html(iframe); 286 } 287 $('#start-shell').click(loadShell); 288 289 /* 290 * Load a slideshow on the homepage. Set the animationtype and detect for the library first. 291 */ 292 if ( hastouch ) { 293 var animationtype = "slide"; 294 } else { 295 var animationtype = "fade"; 296 } 297 if ( !window.flexslider ) { 298 299 /* Grab body and html tags only once */ 300 var body = $('body'); 301 var html = $('html'); 302 303 if ( body.hasClass( 'home' ) ) { 304 305 html.addClass( "flexslide" ); 306 307 $('#dive-into-python').flexslider({ 308 animation: animationtype, 309 direction: 'horizontal', 310 animationLoop: true, 311 slideshow: true, 312 slideshowSpeed: 8000, 313 animationSpeed: 600, 314 randomize: false, 315 smoothHeight: false, 316 pauseOnAction: true, 317 pauseOnHover: true, 318 useCSS: true, // use CSS transitions if available 319 controlNav: true, // Create navigation for paging control of each slide 320 directionNav: false, // Create navigation for previous/next navigation 321 prevText: "Prev.", 322 nextText: "Next", 323 touch: hastouch, 324 start: function(slider){ 325 $(this).fadeIn(); 326 $('body').removeClass('loading'); 327 } 328 }); 329 330 } 331 332 if( body.hasClass('psf') ) { 333 html.addClass( "flexslide" ); 334 // PSF Sponsor rotation 335 $('#sponsor-rotation').flexslider({ 336 animation: 'slide', 337 direction: 'horizontal', 338 animationLoop: true, 339 slideshow: true, 340 slideshowSpeed: 8000, 341 animationSpeed: 600, 342 randomize: true, 343 smoothHeight: false, 344 pauseOnAction: true, 345 pauseOnHover: true, 346 controlNav: false, 347 directionNav: false, 348 useCSS: true, // use CSS transitions if available 349 touch: hastouch 350 }); 351 } 352 353 } else { 354 $("html").addClass( "no-flexslide" ); 355 } 356 357 358 /* 359 * Change or store the body font-size and save it into a cookie 360 * Scales the font-size up or down by about 2 pixels. 361 * Requires jQuery.cookie.js. Only load for touch devices. 362 */ 363 if ( window.cookie ) { 364 if ( hastouch ) { 365 366 var $cookie_name = "Python-FontSize"; 367 var elem = "body"; 368 var originalFontSize = $(elem).css("font-size"); 369 370 // if exists load saved value, otherwise store it 371 if($.cookie($cookie_name)) { 372 var $getSize = $.cookie($cookie_name); 373 $(elem).css({fontSize : $getSize + ($getSize.indexOf("px")!=-1 ? "" : "px")}); // IE fix for double "pxpx" error 374 } else { 375 $.cookie($cookie_name, originalFontSize, { expires: 365 }); // 365 days 376 } 377 378 // reset link 379 $(".text-reset").bind("click", function() { 380 $(elem).css("font-size", originalFontSize); 381 $.cookie($cookie_name, originalFontSize); 382 return false;
383 }); 384 385 // text "A+" link 386 $(".text-grow").bind("click", function() { 387 var currentFontSize = $(elem).css("font-size"); 388 var currentFontSizeNum = parseFloat(currentFontSize, 10); 389 var newFontSize = Math.round( currentFontSizeNum*1.125 ); 390 if (newFontSize) { 391 $(elem).css("font-size", newFontSize); 392 $.cookie($cookie_name, newFontSize); 393 } 394 return false; 395 }); 396 397 // text "A-" link 398 $(".text-shrink").bind("click", function() { 399 var currentFontSize = $(elem).css("font-size"); 400 var currentFontSizeNum = parseFloat(currentFontSize, 10); 401 var newFontSize = Math.round( currentFontSizeNum*0.89 ); 402 if (newFontSize) { 403 $(elem).css("font-size", newFontSize); 404 $.cookie($cookie_name, newFontSize); 405 } 406 return false; 407 }); 408 } // end hastouch 409 } 410 411 /* If there is no HTML5 placeholder present, run a javascript equivalent */ 412 if ( hasplaceholder === false ) { 413 414 /* polyfill from hagenburger: https://gist.github.com/379601 */ 415 $('[placeholder]').focus(function() { 416 var input = $(this); 417 if (input.val() == input.attr('placeholder')) { 418 input.val(''); 419 input.removeClass('placeholder'); 420 } 421 }).blur(function() { 422 var input = $(this); 423 if (input.val() === '' || input.val() == input.attr('placeholder')) { 424 input.addClass('placeholder'); 425 input.val(input.attr('placeholder')); 426 } 427 }).blur().parents('form').submit(function() { 428 $(this).find('[placeholder]').each(function() { 429 var input = $(this); 430 if (input.val() == input.attr('placeholder')) { 431 input.val(''); 432 } 433 }) 434 }); 435 } 436 437 /* 438 * Add a class to the selected radio/checkbox parent label 439 * Requires inputs to be nested in labels: 440 * <label for="checkbox2"><input id="checkbox2" name="checkbox" type="checkbox">Choice B</label> 441 * <label for="radio1"><input id="radio1" name="radio" type="radio" checked="checked">Option 1</label> 442 */ 443 $('input:radio').click(function() { 444 $('label:has(input:radio:checked)').addClass('active'); 445 $('label:has(input:radio:not(:checked))').removeClass('active'); 446 }); 447 $('input:checkbox').click(function() { 448 $('label:has(input:checkbox:checked)').addClass('active'); 449 $('label:has(input:checkbox:not(:checked))').removeClass('active'); 450 }); 451 /* Loop through them on initial page load as well */ 452 $('input:radio').each(function() { 453 $('label:has(input:radio:checked)').addClass('active'); 454 }); 455 $('input:checkbox').each(function() { 456 $('label:has(input:checkbox:checked)').addClass('active'); 457 }); 458 459 getPythonStatus(); 460});
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.