1(function ($) { 2 var Quickfit, QuickfitHelper, defaults, pluginName; 3 4 pluginName = 'quickfit'; 5 6 defaults = { 7 min: 8, 8 max: 12, 9 tolerance: 0.02, 10 truncate: false, 11 width: null, 12 sampleNumberOfLetters: 10, 13 sampleFontSize: 12 14 }; 15 QuickfitHelper = (function () { 16 17 var sharedInstance = null; 18 19 QuickfitHelper.instance = function (options) { 20 if (!sharedInstance) { 21 sharedInstance = new QuickfitHelper(options); 22 } 23 return sharedInstance; 24 }; 25 26 function QuickfitHelper(options) { 27 this.options = options; 28 29 this.item = $('<span id="meassure"></span>'); 30 this.item.css({ 31 position: 'absolute', 32 left: '-1000px', 33 top: '-1000px', 34 'font-size': "" + this.options.sampleFontSize + "px" 35 }); 36 $('body').append(this.item); 37 38 this.meassures = {}; 39 } 40 41 QuickfitHelper.prototype.getMeassure = function (letter) { 42 var currentMeassure; 43 currentMeassure = this.meassures[letter]; 44 if (!currentMeassure) { 45 currentMeassure = this.setMeassure(letter); 46 } 47 return currentMeassure; 48 }; 49 50 QuickfitHelper.prototype.setMeassure = function (letter) { 51 var currentMeassure, index, sampleLetter, text, _ref; 52 53 text = ''; 54 sampleLetter = letter === ' ' ? ' ' : letter; 55 56 for (index = 0, _ref = this.options.sampleNumberOfLetters - 1; 0 <= _ref ? index <= _ref : index >= _ref; 0 <= _ref ? index++ : index--) { 57 text += sampleLetter; 58 } 59 60 this.item.html(text); 61 currentMeassure = this.item.width() / this.options.sampleNumberOfLetters / this.options.sampleFontSize; 62 this.meassures[letter] = currentMeassure; 63 64 return currentMeassure; 65 }; 66 67 return QuickfitHelper; 68 69 })(); 70 71 Quickfit = (function () { 72 73 function Quickfit(element, options) { 74 this.$element = element; 75 this.options = $.extend({}, defaults, options); 76 this.$element = $(this.$element); 77 this._defaults = defaults; 78 this._name = pluginName; 79 this.quickfitHelper = QuickfitHelper.instance(this.options); 80 } 81 82 Quickfit.prototype.fit = function () { 83 var elementWidth; 84 if (!this.options.width) { 85 elementWidth = this.$element.width(); 86 this.options.width = elementWidth - this.options.tolerance * elementWidth; 87 } 88 if (this.text = this.$element.attr('data-quickfit')) { 89 this.previouslyTruncated = true; 90 } else { 91 this.text = this.$element.text(); 92 } 93 this.calculateFontSize(); 94 95 if (this.options.truncate) this.truncate(); 96 97 return { 98 $element: this.$element, 99 size: this.fontSize 100 }; 101 }; 102 103 Quickfit.prototype.calculateFontSize = function () { 104 var letter, textWidth, i; 105 106 textWidth = 0; 107 for (i = 0; i < this.text.length; ++i) { 108 letter = this.text.charAt(i); 109 textWidth += this.quickfitHelper.getMeassure(letter); 110 } 111 112 this.targetFontSize = parseInt(this.options.width / textWidth); 113 return this.fontSize = Math.max(this.options.min, Math.min(this.options.max, this.targetFontSize)); 114 }; 115 116 Quickfit.prototype.truncate = function () { 117 var index, lastLetter, letter, textToAdd, textWidth; 118 119 if (this.fontSize > this.targetFontSize) { 120 textToAdd = ''; 121 textWidth = 3 * this.quickfitHelper.getMeassure('.') * this.fontSize; 122 123 index = 0; 124 while (textWidth < this.options.width && index < this.text.length) { 125 letter = this.text[index++]; 126 if (lastLetter) textToAdd += lastLetter; 127 textWidth += this.fontSize * this.quickfitHelper.getMeassure(letter); 128 lastLetter = letter; 129 } 130 131 if (textToAdd.length + 1 === this.text.length) { 132 textToAdd = this.text; 133 } else { 134 textToAdd += '...'; 135 } 136 this.textWasTruncated = true; 137 138 return this.$element.attr('data-quickfit', this.text).html(textToAdd); 139 140 } else { 141 if (this.previouslyTruncated) { 142 return this.$element.html(this.text); 143 } 144 } 145 }; 146 147 return Quickfit; 148 149 })();
150 151 return $.fn.quickfit = function (options) { 152 var measurements = []; 153 154 // Separate measurements from repaints 155 // First calculate all measurements... 156 var $elements = this.each(function () { 157 var measurement = new Quickfit(this, options).fit(); 158 measurements.push(measurement); 159 return measurement.$element; 160 }); 161 162 // ... then apply the measurements. 163 for (var i = 0; i < measurements.length; i++) { 164 var measurement = measurements[i]; 165 166 measurement.$element.css({ fontSize: measurement.size + 'px' }); 167 } 168 169 return $elements; 170 }; 171 172})(jQuery, window); 173; 174/* 175 * jQuery Cycle Plugin (with Transition Definitions) 176 * Examples and documentation at: http://jquery.malsup.com/cycle/ 177 * Copyright (c) 2007-2010 M. Alsup 178 * Version: 2.88 (08-JUN-2010) 179 * Dual licensed under the MIT and GPL licenses. 180 * http://jquery.malsup.com/license.html 181 * Requires: jQuery v1.2.6 or later 182 */ 183(function($){var ver="2.88";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function debug(s){if($.fn.cycle.debug){log(s);}}function log(){if(window.console&&window.console.log){window.console.log("[cycle] "+Array.prototype.join.call(arguments," "));}}$.fn.cycle=function(options,arg2){var o={s:this.selector,c:this.context};if(this.length===0&&options!="stop"){if(!$.isReady&&o.s){log("DOM not ready, queuing slideshow");$(function(){$(o.s,o.c).cycle(options,arg2);});return this;}log("terminating; zero elements found by selector"+($.isReady?"":" (DOM not ready)"));return this;}return this.each(function(){var opts=handleArguments(this,options,arg2);if(opts===false){return;}opts.updateActivePagerLink=opts.updateActivePagerLink||$.fn.cycle.updateActivePagerLink;if(this.cycleTimeout){clearTimeout(this.cycleTimeout);}this.cycleTimeout=this.cyclePause=0;var $cont=$(this);var $slides=opts.slideExpr?$(opts.slideExpr,this):$cont.children();var els=$slides.get();if(els.length<2){log("terminating; too few slides: "+els.length);return;}var opts2=buildOptions($cont,$slides,els,opts,o);if(opts2===false){return;}var startTime=opts2.continuous?10:getTimeout(els[opts2.currSlide],els[opts2.nextSlide],opts2,!opts2.rev);if(startTime){startTime+=(opts2.delay||0);if(startTime<10){startTime=10;}debug("first timeout: "+startTime);this.cycleTimeout=setTimeout(function(){go(els,opts2,0,(!opts2.rev&&!opts.backwards));},startTime);}});};function handleArguments(cont,options,arg2){if(cont.cycleStop==undefined){cont.cycleStop=0;}if(options===undefined||options===null){options={};}if(options.constructor==String){switch(options){case"destroy":case"stop":var opts=$(cont).data("cycle.opts");if(!opts){return false;}cont.cycleStop++;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);}cont.cycleTimeout=0;$(cont).removeData("cycle.opts");if(options=="destroy"){destroy(opts);}return false;case"toggle":cont.cyclePause=(cont.cyclePause===1)?0:1;checkInstantResume(cont.cyclePause,arg2,cont);return false;case"pause":cont.cyclePause=1;return false;case"resume":cont.cyclePause=0;checkInstantResume(false,arg2,cont);return false;case"prev":case"next":var opts=$(cont).data("cycle.opts");if(!opts){log('options not found, "prev/next" ignored');return false;}$.fn.cycle[options](opts);return false;default:options={fx:options};}return options;}else{if(options.constructor==Number){var num=options;options=$(cont).data("cycle.opts");if(!options){log("options not found, can not advance slide");return false;}if(num<0||num>=options.elements.length){log("invalid slide index: "+num);return false;}options.nextSlide=num;if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}if(typeof arg2=="string"){options.oneTimeFx=arg2;}go(options.elements,options,1,num>=options.currSlide);return false;}}return options;function checkInstantResume(isPaused,arg2,cont){if(!isPaused&&arg2===true){var options=$(cont).data("cycle.opts");if(!options){log("options not found, can not resume");return false;}if(cont.cycleTimeout){clearTimeout(cont.cycleTimeout);cont.cycleTimeout=0;}go(options.elements,options,1,(!opts.rev&&!opts.backwards));}}
183}function removeFilter(el,opts){if(!$.support.opacity&&opts.cleartype&&el.style.filter){try{el.style.removeAttribute("filter");}catch(smother){}}}function destroy(opts){if(opts.next){$(opts.next).unbind(opts.prevNextEvent);}if(opts.prev){$(opts.prev).unbind(opts.prevNextEvent);}if(opts.pager||opts.pagerAnchorBuilder){$.each(opts.pagerAnchors||[],function(){this.unbind().remove();});}opts.pagerAnchors=null;if(opts.destroy){opts.destroy(opts);}}function buildOptions($cont,$slides,els,options,o){var opts=$.extend({},$.fn.cycle.defaults,options||{},$.metadata?$cont.metadata():$.meta?$cont.data():{});if(opts.autostop){opts.countdown=opts.autostopCount||els.length;}var cont=$cont[0];$cont.data("cycle.opts",opts);opts.$cont=$cont;opts.stopCount=cont.cycleStop;opts.elements=els;opts.before=opts.before?[opts.before]:[];opts.after=opts.after?[opts.after]:[];opts.after.unshift(function(){opts.busy=0;});if(!$.support.opacity&&opts.cleartype){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.push(function(){go(els,opts,0,(!opts.rev&&!opts.backwards));});}saveOriginalOpts(opts);if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($slides);}if($cont.css("position")=="static"){$cont.css("position","relative");}if(opts.width){$cont.width(opts.width);}if(opts.height&&opts.height!="auto"){$cont.height(opts.height);}if(opts.startingSlide){opts.startingSlide=parseInt(opts.startingSlide);}else{if(opts.backwards){opts.startingSlide=els.length-1;}}if(opts.random){opts.randomMap=[];for(var i=0;i<els.length;i++){opts.randomMap.push(i);}opts.randomMap.sort(function(a,b){return Math.random()-0.5;});opts.randomIndex=1;opts.startingSlide=opts.randomMap[1];}else{if(opts.startingSlide>=els.length){opts.startingSlide=0;}}opts.currSlide=opts.startingSlide||0;var first=opts.startingSlide;$slides.css({position:"absolute",top:0,left:0}).hide().each(function(i){var z;if(opts.backwards){z=first?i<=first?els.length+(i-first):first-i:els.length-i;}else{z=first?i>=first?els.length-(i-first):first-i:els.length-i;}$(this).css("z-index",z);});$(els[first]).css("opacity",1).show();removeFilter(els[first],opts);if(opts.fit&&opts.width){$slides.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opts.height);}var reshape=opts.containerResize&&!$cont.innerHeight();if(reshape){var maxw=0,maxh=0;for(var j=0;j<els.length;j++){var $e=$(els[j]),e=$e[0],w=$e.outerWidth(),h=$e.outerHeight();if(!w){w=e.offsetWidth||e.width||$e.attr("width");}if(!h){h=e.offsetHeight||e.height||$e.attr("height");}maxw=w>maxw?w:maxw;maxh=h>maxh?h:maxh;}if(maxw>0&&maxh>0){$cont.css({width:maxw+"px",height:maxh+"px"});}}if(opts.pause){$cont.hover(function(){this.cyclePause++;},function(){this.cyclePause--;});}if(supportMultiTransitions(opts)===false){return false;}var requeue=false;options.requeueAttempts=options.requeueAttempts||0;$slides.each(function(){var $el=$(this);this.cycleH=(opts.fit&&opts.height)?opts.height:($el.height()||this.offsetHeight||this.height||$el.attr("height")||0);this.cycleW=(opts.fit&&opts.width)?opts.width:($el.width()||this.offsetWidth||this.width||$el.attr("width")||0);if($el.is("img")){var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);var loadingFF=($.browser.mozilla&&this.cycleW==34&&this.cycleH==19&&!this.complete);var loadingOp=($.browser.opera&&((this.cycleW==42&&this.cycleH==19)||(this.cycleW==37&&this.cycleH==17))&&!this.complete);var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);if(loadingIE||loadingFF||loadingOp||loadingOther){if(o.s&&opts.requeueOnImageNotLoaded&&++options.requeueAttempts<100){log(options.requeueAttempts," - img slide not loaded, requeuing slideshow: ",this.src,this.cycleW,this.cycleH);setTimeout(function(){$(o.s,o.c).cycle(options);},opts.requeueTimeout);requeue=true;return false;}else{log("could not determine size of image: "+this.src,this.cycleW,this.cycleH);}}}return true;});if(requeue){return false;}opts.cssBefore=opts.cssBefore||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(":eq("+first+")").css(opts.cssBefore);if(opts.cssFirst){$($slides[first]).css(opts.cssFirst);}if(opts.timeout){opts.timeout=parseInt(opts.timeout);if(opts.speed.constructor==String){opts.speed=$.fx.speeds[opts.speed]||parseInt(opts.speed);}if(!opts.sync){opts.speed=opts.speed/2;}var buffer=opts.fx=="shuffle"?500:250;
183while((opts.timeout-opts.speed)<buffer){opts.timeout+=opts.speed;}}if(opts.easing){opts.easeIn=opts.easeOut=opts.easing;}if(!opts.speedIn){opts.speedIn=opts.speed;}if(!opts.speedOut){opts.speedOut=opts.speed;}opts.slideCount=els.length;opts.currSlide=opts.lastSlide=first;if(opts.random){if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.backwards){opts.nextSlide=opts.startingSlide==0?(els.length-1):opts.startingSlide-1;}else{opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;}}if(!opts.multiFx){var init=$.fn.cycle.transitions[opts.fx];if($.isFunction(init)){init($cont,$slides,opts);}else{if(opts.fx!="custom"&&!opts.multiFx){log("unknown transition: "+opts.fx,"; slideshow terminating");return false;}}}var e0=$slides[first];if(opts.before.length){opts.before[0].apply(e0,[e0,e0,opts,true]);}if(opts.after.length>1){opts.after[1].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?-1:1);});}if(opts.prev){$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,opts.rev?1:-1);});}if(opts.pager||opts.pagerAnchorBuilder){buildPager(els,opts);}exposeAddSlide(opts,els);return opts;}function saveOriginalOpts(opts){opts.original={before:[],after:[]};opts.original.cssBefore=$.extend({},opts.cssBefore);opts.original.cssAfter=$.extend({},opts.cssAfter);opts.original.animIn=$.extend({},opts.animIn);opts.original.animOut=$.extend({},opts.animOut);$.each(opts.before,function(){opts.original.before.push(this);});$.each(opts.after,function(){opts.original.after.push(this);});}function supportMultiTransitions(opts){var i,tx,txs=$.fn.cycle.transitions;if(opts.fx.indexOf(",")>0){opts.multiFx=true;opts.fxs=opts.fx.replace(/\s*/g,"").split(",");for(i=0;i<opts.fxs.length;i++){var fx=opts.fxs[i];tx=txs[fx];if(!tx||!txs.hasOwnProperty(fx)||!$.isFunction(tx)){log("discarding unknown transition: ",fx);opts.fxs.splice(i,1);i--;}}if(!opts.fxs.length){log("No valid transitions named; slideshow terminating.");return false;}}else{if(opts.fx=="all"){opts.multiFx=true;opts.fxs=[];for(p in txs){tx=txs[p];if(txs.hasOwnProperty(p)&&$.isFunction(tx)){opts.fxs.push(p);}}}}if(opts.multiFx&&opts.randomizeEffects){var r1=Math.floor(Math.random()*20)+30;for(i=0;i<r1;i++){var r2=Math.floor(Math.random()*opts.fxs.length);opts.fxs.push(opts.fxs.splice(r2,1)[0]);}debug("randomized fx sequence: ",opts.fxs);}return true;}function exposeAddSlide(opts,els){opts.addSlide=function(newSlide,prepend){var $s=$(newSlide),s=$s[0];if(!opts.autostopCount){opts.countdown++;}els[prepend?"unshift":"push"](s);if(opts.els){opts.els[prepend?"unshift":"push"](s);}opts.slideCount=els.length;$s.css("position","absolute");$s[prepend?"prependTo":"appendTo"](opts.$cont);if(prepend){opts.currSlide++;opts.nextSlide++;}if(!$.support.opacity&&opts.cleartype&&!opts.cleartypeNoBg){clearTypeFix($s);}if(opts.fit&&opts.width){$s.width(opts.width);}if(opts.fit&&opts.height&&opts.height!="auto"){$slides.height(opts.height);}s.cycleH=(opts.fit&&opts.height)?opts.height:$s.height();s.cycleW=(opts.fit&&opts.width)?opts.width:$s.width();$s.css(opts.cssBefore);if(opts.pager||opts.pagerAnchorBuilder){$.fn.cycle.createPagerAnchor(els.length-1,s,$(opts.pager),els,opts);}if($.isFunction(opts.onAddSlide)){opts.onAddSlide($s);}else{$s.hide();}};}$.fn.cycle.resetState=function(opts,fx){fx=fx||opts.fx;opts.before=[];opts.after=[];opts.cssBefore=$.extend({},opts.original.cssBefore);opts.cssAfter=$.extend({},opts.original.cssAfter);opts.animIn=$.extend({},opts.original.animIn);opts.animOut=$.extend({},opts.original.animOut);opts.fxFn=null;$.each(opts.original.before,function(){opts.before.push(this);});$.each(opts.original.after,function(){opts.after.push(this);});var init=$.fn.cycle.transitions[fx];if($.isFunction(init)){init(opts.$cont,$(opts.elements),opts);}};function go(els,opts,manual,fwd){if(manual&&opts.busy&&opts.manualTrump){debug("manualTrump in go(), stopping active transition");$(els).stop(true,true);opts.busy=false;}if(opts.busy){debug("transition active, ignoring new tx request");return;}var p=opts.$cont[0],curr=els[opts.currSlide],next=els[opts.nextSlide];if(p.cycleStop!=opts.stopCount||p.cycleTimeout===0&&!manual){return;}if(!manual&&!p.cyclePause&&!opts.bounce&&((opts.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide<opts.currSlide))){if(opts.end){opts.end(opts);}return;}var changed=false;if((manual||!p.cyclePause)&&(opts.nextSlide!=opts.currSlide)){changed=true;var fx=opts.fx;curr.cycleH=curr.cycleH||$(curr).height();curr.cycleW=curr.cycleW||$(curr).width();next.cycleH=next.cycleH||$(next).height();next.cycleW=next.cycleW||$(next).width();if(opts.multiFx){if(opts.lastFx==undefined||++opts.lastFx>=opts.fxs.length){opts.lastFx=0;}fx=opts.fxs[opts.lastFx];opts.currFx=fx;}if(opts.oneTimeFx){fx=opts.oneTimeFx;opts.oneTimeFx=null;}$.fn.cycle.resetState(opts,fx);if(opts.before.length){$.each(opts.before,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});}var after=function(){$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});};debug("tx firing; currSlide: "+opts.currSlide+"; nextSlide: "+opts.nextSlide);opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd,manual&&opts.fastOnEvent);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next,opts,after,fwd,manual&&opts.fastOnEvent);}else{$.fn.cycle.custom(curr,next,opts,after,fwd,manual&&opts.fastOnEvent);}}}if(changed||opts.nextSlide==opts.currSlide){opts.lastSlide=opts.currSlide;if(opts.random){opts.currSlide=opts.nextSlide;if(++opts.randomIndex==els.length){opts.randomIndex=0;}opts.nextSlide=opts.randomMap[opts.randomIndex];if(opts.nextSlide==opts.currSlide){opts.nextSlide=(opts.currSlide==opts.slideCount-1)?0:opts.currSlide+1;}}else{if(opts.backwards){var roll=(opts.nextSlide-1)<0;if(roll&&opts.bounce){opts.backwards=!opts.backwards;opts.nextSlide=1;opts.currSlide=0;}else{opts.nextSlide=roll?(els.length-1):opts.nextSlide-1;opts.currSlide=roll?0:opts.nextSlide+1;}}else{var roll=(opts.nextSlide+1)==els.length;if(roll&&opts.bounce){opts.backwards=!opts.backwards;opts.nextSlide=els.length-2;opts.currSlide=els.length-1;}else{opts.nextSlide=roll?0:opts.nextSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}}}}if(changed&&opts.pager){opts.updateActivePagerLink(opts.pager,opts.currSlide,opts.activePagerClass);}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(els[opts.currSlide],els[opts.nextSlide],opts,fwd);}
183else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,(!opts.rev&&!opts.backwards));},ms);}}$.fn.cycle.updateActivePagerLink=function(pager,currSlide,clsName){$(pager).each(function(){$(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);});};function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn.call(curr,curr,next,opts,fwd);while((t-opts.speed)<250){t+=opts.speed;}debug("calculated timeout: "+t+"; speed: "+opts.speed);if(t!==false){return t;}}return opts.timeout;}$.fn.cycle.next=function(opts){advance(opts,opts.rev?-1:1);};$.fn.cycle.prev=function(opts){advance(opts,opts.rev?1:-1);};function advance(opts,val){var els=opts.elements;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}if(opts.random&&val<0){opts.randomIndex--;if(--opts.randomIndex==-2){opts.randomIndex=els.length-2;}else{if(opts.randomIndex==-1){opts.randomIndex=els.length-1;}}opts.nextSlide=opts.randomMap[opts.randomIndex];}else{if(opts.random){opts.nextSlide=opts.randomMap[opts.randomIndex];}else{opts.nextSlide=opts.currSlide+val;if(opts.nextSlide<0){if(opts.nowrap){return false;}opts.nextSlide=els.length-1;}else{if(opts.nextSlide>=els.length){if(opts.nowrap){return false;}opts.nextSlide=0;}}}}var cb=opts.onPrevNextEvent||opts.prevNextClick;if($.isFunction(cb)){cb(val>0,opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,val>=0);return false;}function buildPager(els,opts){var $p=$(opts.pager);$.each(els,function(i,o){$.fn.cycle.createPagerAnchor(i,o,$p,els,opts);});opts.updateActivePagerLink(opts.pager,opts.startingSlide,opts.activePagerClass);}$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){var a;if($.isFunction(opts.pagerAnchorBuilder)){a=opts.pagerAnchorBuilder(i,el);debug("pagerAnchorBuilder("+i+", el) returned: "+a);}else{a='<a href="#">'+(i+1)+"</a>";}if(!a){return;}var $a=$(a);if($a.parents("body").length===0){var arr=[];if($p.length>1){$p.each(function(){var $clone=$a.clone(true);$(this).append($clone);arr.push($clone[0]);});$a=$(arr);}else{$a.appendTo($p);}}opts.pagerAnchors=opts.pagerAnchors||[];opts.pagerAnchors.push($a);$a.bind(opts.pagerEvent,function(e){e.preventDefault();opts.nextSlide=i;var p=opts.$cont[0],timeout=p.cycleTimeout;if(timeout){clearTimeout(timeout);p.cycleTimeout=0;}var cb=opts.onPagerEvent||opts.pagerClick;if($.isFunction(cb)){cb(opts.nextSlide,els[opts.nextSlide]);}go(els,opts,1,opts.currSlide<i);});if(!/^click/.test(opts.pagerEvent)&&!opts.allowPagerClickBubble){$a.bind("click.cycle",function(){return false;});}if(opts.pauseOnPagerHover){$a.hover(function(){opts.$cont[0].cyclePause++;},function(){opts.$cont[0].cyclePause--;});}};$.fn.cycle.hopsFromLast=function(opts,fwd){var hops,l=opts.lastSlide,c=opts.currSlide;if(fwd){hops=c>l?c-l:opts.slideCount-l;}else{hops=c<l?l-c:l+opts.slideCount-c;}return hops;};function clearTypeFix($slides){debug("applying clearType background-color hack");function hex(s){s=parseInt(s).toString(16);return s.length<2?"0"+s:s;}function getBg(e){for(;e&&e.nodeName.toLowerCase()!="html";e=e.parentNode){var v=$.css(e,"background-color");if(v.indexOf("rgb")>=0){var rgb=v.match(/\d+/g);return"#"+hex(rgb[0])+hex(rgb[1])+hex(rgb[2]);}if(v&&v!="transparent"){return v;}}return"#ffffff";}$slides.each(function(){$(this).css("background-color",getBg(this));});}$.fn.cycle.commonReset=function(curr,next,opts,w,h,rev){$(opts.elements).not(curr).hide();opts.cssBefore.opacity=1;opts.cssBefore.display="block";if(w!==false&&next.cycleW>0){opts.cssBefore.width=next.cycleW;}if(h!==false&&next.cycleH>0){opts.cssBefore.height=next.cycleH;}opts.cssAfter=opts.cssAfter||{};opts.cssAfter.display="none";$(curr).css("zIndex",opts.slideCount+(rev===true?1:0));$(next).css("zIndex",opts.slideCount+(rev===true?0:1));};$.fn.cycle.custom=function(curr,next,opts,cb,fwd,speedOverride){var $l=$(curr),$n=$(next);var speedIn=opts.speedIn,speedOut=opts.speedOut,easeIn=opts.easeIn,easeOut=opts.easeOut;$n.css(opts.cssBefore);if(speedOverride){if(typeof speedOverride=="number"){speedIn=speedOut=speedOverride;}else{speedIn=speedOut=1;}easeIn=easeOut=null;}var fn=function(){$n.animate(opts.animIn,speedIn,easeIn,cb);};$l.animate(opts.animOut,speedOut,easeOut,function(){if(opts.cssAfter){$l.css(opts.cssAfter);}if(!opts.sync){fn();}});if(opts.sync){fn();}};$.fn.cycle.transitions={fade:function($cont,$slides,opts){$slides.not(":eq("+opts.currSlide+")").css("opacity",0);opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.opacity=0;});opts.animIn={opacity:1};opts.animOut={opacity:0}
183;opts.cssBefore={top:0,left:0};}};$.fn.cycle.ver=function(){return ver;};$.fn.cycle.defaults={fx:"fade",timeout:4000,timeoutFn:null,continuous:0,speed:1000,speedIn:null,speedOut:null,next:null,prev:null,onPrevNextEvent:null,prevNextEvent:"click.cycle",pager:null,onPagerEvent:null,pagerEvent:"click.cycle",allowPagerClickBubble:false,pagerAnchorBuilder:null,before:null,after:null,end:null,easing:null,easeIn:null,easeOut:null,shuffle:null,animIn:null,animOut:null,cssBefore:null,cssAfter:null,fxFn:null,height:"auto",startingSlide:0,sync:1,random:0,fit:0,containerResize:1,pause:0,pauseOnPagerHover:0,autostop:0,autostopCount:0,delay:0,slideExpr:null,cleartype:!$.support.opacity,cleartypeNoBg:false,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250,activePagerClass:"activeSlide",updateActivePagerLink:null,backwards:false};})(jQuery); 184/* 185 * jQuery Cycle Plugin Transition Definitions 186 * This script is a plugin for the jQuery Cycle Plugin 187 * Examples and documentation at: http://malsup.com/jquery/cycle/ 188 * Copyright (c) 2007-2010 M. Alsup 189 * Version: 2.72 190 * Dual licensed under the MIT and GPL licenses: 191 * http://www.opensource.org/licenses/mit-license.php 192 * http://www.gnu.org/licenses/gpl.html 193 */ 194(function($){$.fn.cycle.transitions.none=function($cont,$slides,opts){opts.fxFn=function(curr,next,opts,after){$(next).show();$(curr).hide();after();};};$.fn.cycle.transitions.scrollUp=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssBefore={top:h,left:0};opts.cssFirst={top:0};opts.animIn={top:0};opts.animOut={top:-h};};$.fn.cycle.transitions.scrollDown=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var h=$cont.height();opts.cssFirst={top:0};opts.cssBefore={top:-h,left:0};opts.animIn={top:0};opts.animOut={top:h};};$.fn.cycle.transitions.scrollLeft=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:w,top:0};opts.animIn={left:0};opts.animOut={left:0-w};};$.fn.cycle.transitions.scrollRight=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push($.fn.cycle.commonReset);var w=$cont.width();opts.cssFirst={left:0};opts.cssBefore={left:-w,top:0};opts.animIn={left:0};opts.animOut={left:w};};$.fn.cycle.transitions.scrollHorz=function($cont,$slides,opts){$cont.css("overflow","hidden").width();opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.left=fwd?(next.cycleW-1):(1-next.cycleW);opts.animOut.left=fwd?-curr.cycleW:curr.cycleW;});opts.cssFirst={left:0};opts.cssBefore={top:0};opts.animIn={left:0};opts.animOut={top:0};};$.fn.cycle.transitions.scrollVert=function($cont,$slides,opts){$cont.css("overflow","hidden");opts.before.push(function(curr,next,opts,fwd){$.fn.cycle.commonReset(curr,next,opts);opts.cssBefore.top=fwd?(1-next.cycleH):(next.cycleH-1);opts.animOut.top=fwd?curr.cycleH:-curr.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0};opts.animIn={top:0};opts.animOut={left:0};};$.fn.cycle.transitions.slideX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,false,true);opts.animIn.width=next.cycleW;});opts.cssBefore={left:0,top:0,width:0};opts.animIn={width:"show"};opts.animOut={width:0};};$.fn.cycle.transitions.slideY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$(opts.elements).not(curr).hide();$.fn.cycle.commonReset(curr,next,opts,true,false);opts.animIn.height=next.cycleH;});opts.cssBefore={left:0,top:0,height:0};opts.animIn={height:"show"};opts.animOut={height:0};};$.fn.cycle.transitions.shuffle=function($cont,$slides,opts){var i,w=$cont.css("overflow","visible").width();$slides.css({left:0,top:0});opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);});if(!opts.speedAdjusted){opts.speed=opts.speed/2;opts.speedAdjusted=true;}opts.random=0;opts.shuffle=opts.shuffle||{left:-w,top:15};opts.els=[];for(i=0;i<$slides.length;i++){opts.els.push($slides[i]);}for(i=0;i<opts.currSlide;i++){opts.els.push(opts.els.shift());}opts.fxFn=function(curr,next,opts,cb,fwd){var $el=fwd?$(curr):$(next);$(next).css(opts.cssBefore);var count=opts.slideCount;$el.animate(opts.shuffle,opts.speedIn,opts.easeIn,function(){var hops=$.fn.cycle.hopsFromLast(opts,fwd);for(var k=0;k<hops;k++){fwd?opts.els.push(opts.els.shift()):opts.els.unshift(opts.els.pop());}if(fwd){for(var i=0,len=opts.els.length;i<len;i++){$(opts.els[i]).css("z-index",len-i+count);}}else{var z=$(curr).css("z-index");$el.css("z-index",parseInt(z)+1+count);}$el.animate({left:0,top:0},opts.speedOut,opts.easeOut,function(){$(fwd?this:curr).hide();if(cb){cb();}});});};opts.cssBefore={display:"block",opacity:1,top:0,left:0};};$.fn.cycle.transitions.turnUp=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.cssBefore.top=next.cycleH;opts.animIn.height=next.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0,height:0};opts.animIn={top:0};opts.animOut={height:0};};$.fn.cycle.transitions.turnDown=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssFirst={top:0};opts.cssBefore={left:0,top:0,height:0};opts.animOut={height:0};};$.fn.cycle.transitions.turnLeft=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.cssBefore.left=next.cycleW;opts.animIn.width=next.cycleW;});opts.cssBefore={top:0,width:0};opts.animIn={left:0};opts.animOut={width:0};};$.fn.cycle.transitions.turnRight=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.animIn.width=next.cycleW;opts.animOut.left=curr.cycleW;});opts.cssBefore={top:0,left:0,width:0};opts.animIn={left:0};opts.animOut={width:0};};$.fn.cycle.transitions.zoom=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,false,true);opts.cssBefore.top=next.cycleH/2;opts.cssBefore.left=next.cycleW/2;opts.animIn={top:0,left:0,width:next.cycleW,height:next.cycleH};opts.animOut={width:0,height:0,top:curr.cycleH/2,left:curr.cycleW/2};});opts.cssFirst={top:0,left:0};opts.cssBefore={width:0,height:0};};$.fn.cycle.transitions.fadeZoom=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,false);opts.cssBefore.left=next.cycleW/2;opts.cssBefore.top=next.cycleH/2;opts.animIn={top:0,left:0,width:next.cycleW,height:next.cycleH};});opts.cssBefore={width:0,height:0};opts.animOut={opacity:0}
194;};$.fn.cycle.transitions.blindX=function($cont,$slides,opts){var w=$cont.css("overflow","hidden").width();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.width=next.cycleW;opts.animOut.left=curr.cycleW;});opts.cssBefore={left:w,top:0};opts.animIn={left:0};opts.animOut={left:w};};$.fn.cycle.transitions.blindY=function($cont,$slides,opts){var h=$cont.css("overflow","hidden").height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssBefore={top:h,left:0};opts.animIn={top:0};opts.animOut={top:h};};$.fn.cycle.transitions.blindZ=function($cont,$slides,opts){var h=$cont.css("overflow","hidden").height();var w=$cont.width();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);opts.animIn.height=next.cycleH;opts.animOut.top=curr.cycleH;});opts.cssBefore={top:h,left:w};opts.animIn={top:0,left:0};opts.animOut={top:h,left:w};};$.fn.cycle.transitions.growX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true);opts.cssBefore.left=this.cycleW/2;opts.animIn={left:0,width:this.cycleW};opts.animOut={left:0};});opts.cssBefore={width:0,top:0};};$.fn.cycle.transitions.growY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false);opts.cssBefore.top=this.cycleH/2;opts.animIn={top:0,height:this.cycleH};opts.animOut={top:0};});opts.cssBefore={height:0,left:0};};$.fn.cycle.transitions.curtainX=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,false,true,true);opts.cssBefore.left=next.cycleW/2;opts.animIn={left:0,width:this.cycleW};opts.animOut={left:curr.cycleW/2,width:0};});opts.cssBefore={top:0,width:0};};$.fn.cycle.transitions.curtainY=function($cont,$slides,opts){opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,false,true);opts.cssBefore.top=next.cycleH/2;opts.animIn={top:0,height:next.cycleH};opts.animOut={top:curr.cycleH/2,height:0};});opts.cssBefore={left:0,height:0};};$.fn.cycle.transitions.cover=function($cont,$slides,opts){var d=opts.direction||"left";var w=$cont.css("overflow","hidden").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts);if(d=="right"){opts.cssBefore.left=-w;}else{if(d=="up"){opts.cssBefore.top=h;}else{if(d=="down"){opts.cssBefore.top=-h;}else{opts.cssBefore.left=w;}}}});opts.animIn={left:0,top:0};opts.animOut={opacity:1};opts.cssBefore={top:0,left:0};};$.fn.cycle.transitions.uncover=function($cont,$slides,opts){var d=opts.direction||"left";var w=$cont.css("overflow","hidden").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);if(d=="right"){opts.animOut.left=w;}else{if(d=="up"){opts.animOut.top=-h;}else{if(d=="down"){opts.animOut.top=h;}else{opts.animOut.left=-w;}}}});opts.animIn={left:0,top:0};opts.animOut={opacity:1};opts.cssBefore={top:0,left:0};};$.fn.cycle.transitions.toss=function($cont,$slides,opts){var w=$cont.css("overflow","visible").width();var h=$cont.height();opts.before.push(function(curr,next,opts){$.fn.cycle.commonReset(curr,next,opts,true,true,true);if(!opts.animOut.left&&!opts.animOut.top){opts.animOut={left:w*2,top:-h/2,opacity:0};}else{opts.animOut.opacity=0;}});opts.cssBefore={left:0,top:0};opts.animIn={left:0};};$.fn.cycle.transitions.wipe=function($cont,$slides,opts){var w=$cont.css("overflow","hidden").width();var h=$cont.height();opts.cssBefore=opts.cssBefore||{};var clip;if(opts.clip){if(/l2r/.test(opts.clip)){clip="rect(0px 0px "+h+"px 0px)";}else{if(/r2l/.test(opts.clip)){clip="rect(0px "+w+"px "+h+"px "+w+"px)";}else{if(/t2b/.test(opts.clip)){clip="rect(0px "+w+"px 0px 0px)";}else{if(/b2t/.test(opts.clip)){clip="rect("+h+"px "+w+"px "+h+"px 0px)";}else{if(/zoom/.test(opts.clip)){var top=parseInt(h/2);var left=parseInt(w/2);clip="rect("+top+"px "+left+"px "+top+"px "+left+"px)";}}}}}}opts.cssBefore.clip=opts.cssBefore.clip||clip||"rect(0px 0px 0px 0px)";var d=opts.cssBefore.clip.match(/(\d+)/g);
194var t=parseInt(d[0]),r=parseInt(d[1]),b=parseInt(d[2]),l=parseInt(d[3]);opts.before.push(function(curr,next,opts){if(curr==next){return;}var $curr=$(curr),$next=$(next);$.fn.cycle.commonReset(curr,next,opts,true,true,false);opts.cssAfter.display="block";var step=1,count=parseInt((opts.speedIn/13))-1;(function f(){var tt=t?t-parseInt(step*(t/count)):0;var ll=l?l-parseInt(step*(l/count)):0;var bb=b<h?b+parseInt(step*((h-b)/count||1)):h;var rr=r<w?r+parseInt(step*((w-r)/count||1)):w;$next.css({clip:"rect("+tt+"px "+rr+"px "+bb+"px "+ll+"px)"});(step++<=count)?setTimeout(f,13):$curr.css("display","none");})();});opts.cssBefore={display:"block",opacity:1,top:0,left:0};opts.animIn={left:0};opts.animOut={left:0};};})(jQuery);; 195/** 196 * @file 197 * A simple jQuery Cycle Div Slideshow Rotator. 198 */ 199 200/** 201 * This will set our initial behavior, by starting up each individual slideshow. 202 */ 203(function ($) { 204 Drupal.behaviors.viewsSlideshowCycle = { 205 attach: function (context) { 206 $('.views_slideshow_cycle_main:not(.viewsSlideshowCycle-processed)', context).addClass('viewsSlideshowCycle-processed').each(function() { 207 var fullId = '#' + $(this).attr('id'); 208 var settings = Drupal.settings.viewsSlideshowCycle[fullId]; 209 settings.targetId = '#' + $(fullId + " :first").attr('id'); 210 211 settings.slideshowId = settings.targetId.replace('#views_slideshow_cycle_teaser_section_', ''); 212 // Pager after function. 213 var pager_after_fn = function(curr, next, opts) { 214 // Need to do some special handling on first load. 215 var slideNum = opts.currSlide; 216 if (typeof settings.processedAfter == 'undefined' || !settings.processedAfter) { 217 settings.processedAfter = 1; 218 slideNum = (typeof settings.opts.startingSlide == 'undefined') ? 0 : settings.opts.startingSlide; 219 } 220 if (settings.pause_after_slideshow) { 221 opts.counter += 1; 222 if (opts.counter == settings.num_divs + 1) { 223 opts.counter = 1; 224 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true }); 225 } 226 } 227 Drupal.viewsSlideshow.action({ "action": 'transitionEnd', "slideshowID": settings.slideshowId, "slideNum": slideNum }); 228 } 229 // Pager before function. 230 var pager_before_fn = function(curr, next, opts) { 231 $(document).trigger('drupal:views_slideshow_cycle:before', { 232 curr: curr, next: next, opts: opts, settings: settings 233 }); 234 235 var slideNum = opts.nextSlide; 236 237 // Remember last slide. 238 if (settings.remember_slide) { 239 createCookie(settings.vss_id, slideNum, settings.remember_slide_days); 240 } 241 242 // Make variable height. 243 if (!settings.fixed_height) { 244 //get the height of the current slide 245 var $ht = $(next).height(); 246 //set the container's height to that of the current slide 247 $(next).parent().animate({height: $ht}); 248 } 249 250 // Need to do some special handling on first load. 251 if (typeof settings.processedBefore == 'undefined' || !settings.processedBefore) { 252 settings.processedBefore = 1; 253 slideNum = (typeof opts.startingSlide == 'undefined') ? 0 : opts.startingSlide; 254 } 255 256 Drupal.viewsSlideshow.action({ "action": 'transitionBegin', "slideshowID": settings.slideshowId, "slideNum": slideNum }); 257 } 258 settings.loaded = false; 259 260 settings.opts = { 261 speed:settings.speed, 262 timeout:settings.timeout, 263 delay:settings.delay, 264 sync:settings.sync, 265 random:settings.random, 266 nowrap:settings.nowrap, 267 pause_after_slideshow:settings.pause_after_slideshow, 268 counter:0, 269 after:pager_after_fn, 270 before:pager_before_fn, 271 cleartype:(settings.cleartype)? true : false, 272 cleartypeNoBg:(settings.cleartypenobg)? true : false 273 } 274 275 // Set the starting slide if we are supposed to remember the slide 276 if (settings.remember_slide) { 277 var startSlide = readCookie(settings.vss_id); 278 if (startSlide == null) { 279 startSlide = 0; 280 } 281 settings.opts.startingSlide = parseInt(startSlide); 282 } 283 284 if (settings.effect == 'none') { 285 settings.opts.speed = 1; 286 } 287 else { 288 settings.opts.fx = settings.effect; 289 } 290 291 // Take starting item from fragment. 292 var hash = location.hash; 293 if (hash) { 294 var hash = hash.replace('#', ''); 295 var aHash = hash.split(';'); 296 var aHashLen = aHash.length; 297 298 // Loop through all the possible starting points. 299 for (var i = 0; i < aHashLen; i++) { 300 // Split the hash into two parts. One part is the slideshow id the 301 // other is the slide number. 302 var initialInfo = aHash[i].split(':'); 303 // The id in the hash should match our slideshow. 304 // The slide number chosen shouldn't be larger than the number of 305 // slides we have. 306 if (settings.slideshowId == initialInfo[0] && settings.num_divs >
306 initialInfo[1]) { 307 settings.opts.startingSlide = parseInt(initialInfo[1]); 308 } 309 } 310 } 311 312 // Pause on hover. 313 if (settings.pause) { 314 var mouseIn = function() { 315 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId }); 316 } 317 318 var mouseOut = function() { 319 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": settings.slideshowId }); 320 } 321 322 if (jQuery.fn.hoverIntent) { 323 $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).hoverIntent(mouseIn, mouseOut); 324 } 325 else { 326 $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).hover(mouseIn, mouseOut); 327 } 328 } 329 330 // Play on hover. 331 if (settings.play_on_hover) { 332 var mouseIn = function() { 333 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": settings.slideshowId, "force": true }); 334 } 335 336 var mouseOut = function() { 337 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId }); 338 } 339 340 if (jQuery.fn.hoverIntent) { 341 $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).hoverIntent(mouseIn, mouseOut); 342 } 343 else { 344 $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).hover(mouseIn, mouseOut); 345 } 346 } 347 348 // Pause on clicking of the slide. 349 if (settings.pause_on_click) { 350 $('#views_slideshow_cycle_teaser_section_' + settings.vss_id).click(function() { 351 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true }); 352 }); 353 } 354 355 if (typeof JSON != 'undefined') { 356 var advancedOptions = JSON.parse(settings.advanced_options); 357 for (var option in advancedOptions) { 358 switch(option) { 359 360 // Standard Options 361 case "activePagerClass": 362 case "allowPagerClickBubble": 363 case "autostop": 364 case "autostopCount": 365 case "backwards": 366 case "bounce": 367 case "cleartype": 368 case "cleartypeNoBg": 369 case "containerResize": 370 case "continuous": 371 case "delay": 372 case "easeIn": 373 case "easeOut": 374 case "easing": 375 case "fastOnEvent": 376 case "fit": 377 case "fx": 378 case "manualTrump": 379 case "metaAttr": 380 case "next": 381 case "nowrap": 382 case "pager": 383 case "pagerEvent": 384 case "pause": 385 case "pauseOnPagerHover": 386 case "prev": 387 case "prevNextEvent": 388 case "random": 389 case "randomizeEffects": 390 case "requeueOnImageNotLoaded": 391 case "requeueTimeout": 392 case "rev": 393 case "slideExpr": 394 case "slideResize": 395 case "speed": 396 case "speedIn": 397 case "speedOut": 398 case "startingSlide": 399 case "sync": 400 case "timeout": 401 var optionValue = advancedOptions[option]; 402 optionValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(optionValue); 403 settings.opts[option] = optionValue; 404 break; 405 406 // If width is set we need to disable resizing. 407 case "width": 408 var optionValue = advancedOptions["width"]; 409 optionValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(optionValue); 410 settings.opts["width"] = optionValue; 411 settings.opts["containerResize"] = 0; 412 break; 413 414 // If height is set we need to set fixed_height to true. 415 case "height": 416 var optionValue = advancedOptions["height"]; 417 optionValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(optionValue); 418 settings.opts["height"] = optionValue; 419 settings.fixed_height = 1; 420 break; 421 422 // These process options that look like {top:50, bottom:20} 423 case "animIn": 424 case "animInDelay": 425 case "animOut": 426 case "animOutDelay": 427 case "cssBefore": 428 case "cssAfter": 429 case "shuffle": 430 var cssValue = advancedOptions[option]; 431 cssValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(cssValue); 432 settings.opts[option] = eval('(' + cssValue + ')'); 433 break; 434 435 // These options have their own functions. 436 case "after": 437 var afterValue = advancedOptions[option]; 438 afterValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(afterValue); 439 // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag) 440 settings.opts[option] = function(currSlideElement, nextSlideElement, options, forwardFlag) { 441 pager_after_fn(currSlideElement, nextSlideElement, options); 442 eval(afterValue); 443 } 444 break; 445 446 case "before": 447 var beforeValue = advancedOptions[option]; 448 beforeValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(beforeValue); 449 // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag) 450 settings.opts[option] = function(currSlideElement, nextSlideElement, options, forwardFlag) { 451 pager_before_fn(currSlideElement, nextSlideElement, options); 452 eval(beforeValue); 453 } 454 break; 455 456 case "end": 457 var endValue = advancedOptions[option]; 458 endValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(endValue); 459 // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options) 460 settings.opts[option] = function(options) { 461 eval(endValue); 462 } 463 break; 464 465 case "fxFn": 466 var fxFnValue = advancedOptions[option]; 467 fxFnValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(fxFnValue); 468 // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag) 469 settings.opts[option] = function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag) { 470 eval(fxFnValue); 471 } 472 break; 473 474 case "onPagerEvent": 475 var onPagerEventValue = advancedOptions[option]; 476 onPagerEventValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(onPagerEventValue); 477 settings.opts[option] = function(zeroBasedSlideIndex, slideElement) { 478 eval(onPagerEventValue); 479 } 480 break; 481 482 case "onPrevNextEvent": 483 var onPrevNextEventValue = advancedOptions[option]; 484 onPrevNextEventValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(onPrevNextEventValue); 485 settings.opts[option] = function(isNext, zeroBasedSlideIndex, slideElement) { 486 eval(onPrevNextEventValue); 487 } 488 break; 489 490 case "pagerAnchorBuilder": 491 var pagerAnchorBuilderValue = advancedOptions[option]; 492 pagerAnchorBuilderValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(pagerAnchorBuilderValue); 493 // callback fn for building anchor links: function(index, DOMelement) 494 settings.opts[option] = function(index, DOMelement) { 495 var returnVal = ''; 496 eval(pagerAnchorBuilderValue); 497 return returnVal; 498 } 499 break; 500 501 case "pagerClick": 502 var pagerClickValue = advancedOptions[option]; 503 pagerClickValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(pagerClickValue); 504 // callback fn for pager clicks: function(zeroBasedSlideIndex, slideElement) 505 settings.opts[option] = function(zeroBasedSlideIndex, slideElement) { 506 eval(pagerClickValue); 507 } 508 break; 509 510 case "paused": 511 var pausedValue = advancedOptions[option]; 512 pausedValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(pausedValue); 513 // undocumented callback when slideshow is paused: function(cont, opts, byHover) 514 settings.opts[option] = function(cont, opts, byHover) { 515 eval(pausedValue); 516 } 517 break; 518 519 case "resumed": 520 var resumedValue = advancedOptions[option]; 521 resumedValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(resumedValue); 522 // undocumented callback when slideshow is resumed: function(cont, opts, byHover) 523 settings.opts[option] = function(cont, opts, byHover) { 524 eval(resumedValue); 525 } 526 break; 527 528 case "timeoutFn": 529 var timeoutFnValue = advancedOptions[option]; 530 timeoutFnValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(timeoutFnValue); 531 settings.opts[option] = function(currSlideElement, nextSlideElement, options, forwardFlag) { 532 // Set a sane return value unless function overrides it. 533 var returnVal = settings.timeout; 534 eval(timeoutFnValue); 535 return returnVal; 536 } 537 break; 538 539 case "updateActivePagerLink": 540 var updateActivePagerLinkValue = advancedOptions[option]; 541 updateActivePagerLinkValue = Drupal.viewsSlideshowCycle.advancedOptionCleanup(updateActivePagerLinkValue); 542 // callback fn invoked to update the active pager link (adds/removes activePagerClass style) 543 settings.opts[option] = function(pager, currSlideIndex) { 544 eval(updateActivePagerLinkValue); 545 } 546 break; 547 } 548 } 549 } 550 551 // If selected wait for the images to be loaded. 552 // otherwise just load the slideshow. 553 if (settings.wait_for_image_load) { 554 // For IE/Chrome/Opera we if there are images then we need to make 555 // sure the images are loaded before starting the slideshow. 556 settings.totalImages = $(settings.targetId + ' img').length; 557 if (settings.totalImages) { 558 settings.loadedImages = 0; 559 560 // Add a load event for each image. 561 $(settings.targetId + ' img').each(function() { 562 var $imageElement = $(this); 563 $imageElement.bind('load', function () { 564 Drupal.viewsSlideshowCycle.imageWait(fullId); 565 }); 566 567 // Removing the source and adding it again will fire the load event. 568 var imgSrc = $imageElement.attr('src'); 569 $imageElement.attr('src', ''); 570 $imageElement.attr('src', imgSrc); 571 }); 572 573 // We need to set a timeout so that the slideshow doesn't wait 574 // indefinitely for all images to load. 575 setTimeout("Drupal.viewsSlideshowCycle.load('" + fullId + "')", settings.wait_for_image_load_timeout); 576 } 577 else { 578 Drupal.viewsSlideshowCycle.load(fullId); 579 } 580 } 581 else { 582 Drupal.viewsSlideshowCycle.load(fullId); 583 } 584 }); 585 } 586 }; 587 588 /** 589 * Views Slideshow swipe support. 590 */ 591 Drupal.behaviors.viewsSlideshowSwipe = { 592 attach: function (context) { 593 var isTouch = (('ontouchstart' in window) || (navigator.msMaxTouchPoints > 0));
594 if (isTouch === true && $('.views-slideshow-cycle-main-frame').length) { 595 var $slider = $('.views-slideshow-cycle-main-frame'), 596 opts = { 597 start: {x: 0, y: 0}, 598 end: {x: 0, y: 0}, 599 hdiff: 0, 600 vdiff: 0, 601 length: 0, 602 angle: null, 603 direction: null, 604 }, 605 optsReset = $.extend(true, {}, opts), 606 H_THRESHOLD = 110, // roughly one inch effective resolution on ipad 607 V_THRESHOLD = 50; 608 $slider.data('bw', opts) 609 .bind('touchstart.cycle', function (e) { 610 var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 611 if (e.originalEvent.touches.length == 1) { 612 var data = $(this).data('bw'); 613 data.start.x = touch.pageX; 614 data.start.y = touch.pageY; 615 $(this).data('bw', data); 616 } 617 }) 618 .bind('touchend.cycle', function (e) { 619 var touch = e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]; 620 var data = $(this).data('bw'); 621 data.end.x = touch.pageX; 622 data.end.y = touch.pageY; 623 $(this).data('bw', data); 624 if (data.start.x != 0 && data.start.y != 0) { 625 data.vdiff = data.start.x - data.end.x; 626 data.hdiff = data.end.y - data.start.y; 627 if (Math.abs(data.vdiff) == data.start.x && Math.abs(data.hdiff) == data.start.y) { 628 data.vdiff = 0; 629 data.hdiff = 0; 630 } 631 var length = Math.round(Math.sqrt(Math.pow(data.vdiff,2) + Math.pow(data.hdiff,2))); 632 var rads = Math.atan2(data.hdiff, data.vdiff); 633 var angle = Math.round(rads*180/Math.PI); 634 if (angle < 0) { angle = 360 - Math.abs(angle); } 635 if (length > H_THRESHOLD && V_THRESHOLD > data.hdiff) { 636 e.preventDefault(); 637 if (angle > 135 && angle < 225) { 638 var cyopt = $slider.data('cycle.opts'); 639 if (cyopt.currSlide > 0) { 640 $slider.cycle((cyopt.currSlide - 1), 'scrollRight'); 641 } 642 else { 643 $slider.cycle((cyopt.slideCount - 1), 'scrollRight'); 644 } 645 } 646 else if (angle > 315 || angle < 45) { 647 $slider.cycle('next'); 648 } 649 } 650 } 651 data = $.extend(true, {}, optsReset); 652 }); 653 } 654 } 655 }; 656 657 Drupal.viewsSlideshowCycle = Drupal.viewsSlideshowCycle || {}; 658 659 // Cleanup the values of advanced options. 660 Drupal.viewsSlideshowCycle.advancedOptionCleanup = function(value) { 661 value = $.trim(value); 662 value = value.replace(/\n/g, ''); 663 if (value.match(/^[\d.]+%$/)) { 664 // noop 665 } 666 else if (!isNaN(parseInt(value))) { 667 value = parseInt(value); 668 } 669 else if (value.toLowerCase() == 'true') { 670 value = true; 671 } 672 else if (value.toLowerCase() == 'false') { 673 value = false; 674 } 675 676 return value; 677 } 678 679 // This checks to see if all the images have been loaded. 680 // If they have then it starts the slideshow. 681 Drupal.viewsSlideshowCycle.imageWait = function(fullId) { 682 if (++Drupal.settings.viewsSlideshowCycle[fullId].loadedImages == Drupal.settings.viewsSlideshowCycle[fullId].totalImages) { 683 Drupal.viewsSlideshowCycle.load(fullId); 684 } 685 }; 686 687 // Start the slideshow. 688 Drupal.viewsSlideshowCycle.load = function (fullId) { 689 var settings = Drupal.settings.viewsSlideshowCycle[fullId]; 690 691 // Make sure the slideshow isn't already loaded. 692 if (!settings.loaded) { 693 $(settings.targetId).cycle(settings.opts); 694 $(settings.targetId).parent().parent().addClass('views-slideshow-cycle-processed'); 695 settings.loaded = true; 696 697 // Start Paused 698 if (settings.start_paused) { 699 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId, "force": true }); 700 } 701 702 // Pause if hidden. 703 if (settings.pause_when_hidden) { 704 var checkPause = function(settings) { 705 // If the slideshow is visible and it is paused then resume. 706 // otherwise if the slideshow is not visible and it is not paused then 707 // pause it.
708 var visible = viewsSlideshowCycleIsVisible(settings.targetId, settings.pause_when_hidden_type, settings.amount_allowed_visible); 709 if (visible) { 710 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": settings.slideshowId }); 711 } 712 else { 713 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": settings.slideshowId }); 714 } 715 } 716 717 // Check when scrolled. 718 $(window).scroll(function() { 719 checkPause(settings); 720 }); 721 722 // Check when the window is resized. 723 $(window).resize(function() { 724 checkPause(settings); 725 }); 726 } 727 } 728 }; 729 730 Drupal.viewsSlideshowCycle.pause = function (options) { 731 //Eat TypeError, cycle doesn't handle pause well if options isn't defined. 732 try{ 733 if (options.pause_in_middle && $.fn.pause) { 734 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).pause(); 735 } 736 else { 737 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).cycle('pause'); 738 } 739 } 740 catch(e){ 741 if(!e instanceof TypeError){ 742 throw e; 743 } 744 } 745 }; 746 747 Drupal.viewsSlideshowCycle.play = function (options) { 748 Drupal.settings.viewsSlideshowCycle['#views_slideshow_cycle_main_' + options.slideshowID].paused = false; 749 if (options.pause_in_middle && $.fn.resume) { 750 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).resume(); 751 } 752 else { 753 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).cycle('resume'); 754 } 755 }; 756 757 Drupal.viewsSlideshowCycle.previousSlide = function (options) { 758 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).cycle('prev'); 759 }; 760 761 Drupal.viewsSlideshowCycle.nextSlide = function (options) { 762 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).cycle('next'); 763 }; 764 765 Drupal.viewsSlideshowCycle.goToSlide = function (options) { 766 $('#views_slideshow_cycle_teaser_section_' + options.slideshowID).cycle(options.slideNum); 767 }; 768 769 // Verify that the value is a number. 770 function IsNumeric(sText) { 771 var ValidChars = "0123456789"; 772 var IsNumber=true; 773 var Char; 774 775 for (var i=0; i < sText.length && IsNumber == true; i++) { 776 Char = sText.charAt(i); 777 if (ValidChars.indexOf(Char) == -1) { 778 IsNumber = false; 779 } 780 } 781 return IsNumber; 782 } 783 784 /** 785 * Cookie Handling Functions 786 */ 787 function createCookie(name,value,days) { 788 if (days) { 789 var date = new Date(); 790 date.setTime(date.getTime()+(days*24*60*60*1000)); 791 var expires = "; expires="+date.toGMTString(); 792 } 793 else { 794 var expires = ""; 795 } 796 document.cookie = name+"="+value+expires+"; path=/"; 797 } 798 799 function readCookie(name) { 800 var nameEQ = name + "="; 801 var ca = document.cookie.split(';'); 802 for(var i=0;i < ca.length;i++) { 803 var c = ca[i]; 804 while (c.charAt(0)==' ') c = c.substring(1,c.length); 805 if (c.indexOf(nameEQ) == 0) { 806 return c.substring(nameEQ.length,c.length); 807 } 808 } 809 return null; 810 } 811 812 function eraseCookie(name) { 813 createCookie(name,"",-1); 814 } 815 816 /** 817 * Checks to see if the slide is visible enough. 818 * elem = element to check. 819 * type = The way to calculate how much is visible. 820 * amountVisible = amount that should be visible. Either in percent or px. If 821 * it's not defined then all of the slide must be visible. 822 * 823 * Returns true or false 824 */ 825 function viewsSlideshowCycleIsVisible(elem, type, amountVisible) { 826 // Get the top and bottom of the window; 827 var docViewTop = $(window).scrollTop(); 828 var docViewBottom = docViewTop + $(window).height(); 829 var docViewLeft = $(window).scrollLeft(); 830 var docViewRight = docViewLeft + $(window).width(); 831 832 // Get the top, bottom, and height of the slide; 833 var elemTop = $(elem).offset().top; 834 var elemHeight = $(elem).height(); 835 var elemBottom = elemTop + elemHeight; 836 var elemLeft = $(elem).offset().left; 837 var elemWidth = $(elem).width(); 838 var elemRight = elemLeft + elemWidth; 839 var elemArea = elemHeight * elemWidth; 840 841 // Calculate what's hiding in the slide. 842 var missingLeft = 0; 843 var missingRight = 0; 844 var missingTop = 0; 845 var missingBottom = 0; 846 847 // Find out how much of the slide is missing from the left. 848 if (elemLeft < docViewLeft) { 849 missingLeft = docViewLeft - elemLeft; 850 } 851 852 // Find out how much of the slide is missing from the right. 853 if (elemRight > docViewRight) { 854 missingRight = elemRight - docViewRight; 855 } 856 857 // Find out how much of the slide is missing from the top. 858 if (elemTop < docViewTop) { 859 missingTop = docViewTop - elemTop; 860 } 861 862 // Find out how much of the slide is missing from the bottom. 863 if (elemBottom > docViewBottom) { 864 missingBottom = elemBottom - docViewBottom; 865 } 866 867 // If there is no amountVisible defined then check to see if the whole slide 868 // is visible. 869 if (type == 'full') { 870 return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom) 871 && (elemBottom <= docViewBottom) && (elemTop >= docViewTop) 872 && (elemLeft >= docViewLeft) && (elemRight <= docViewRight) 873 && (elemLeft <= docViewRight) && (elemRight >= docViewLeft)); 874 } 875 else if(type == 'vertical') { 876 var verticalShowing = elemHeight - missingTop - missingBottom; 877 878 // If user specified a percentage then find out if the current shown percent 879 // is larger than the allowed percent. 880 // Otherwise check to see if the amount of px shown is larger than the 881 // allotted amount. 882 if (typeof amountVisible === 'string' && amountVisible.indexOf('%')) { 883 return (((verticalShowing/elemHeight)*100) >= parseInt(amountVisible)); 884 } 885 else { 886 return (verticalShowing >= parseInt(amountVisible)); 887 } 888 } 889 else if(type == 'horizontal') { 890 var horizontalShowing = elemWidth - missingLeft - missingRight; 891 892 // If user specified a percentage then find out if the current shown percent 893 // is larger than the allowed percent. 894 // Otherwise check to see if the amount of px shown is larger than the 895 // allotted amount. 896 if (typeof amountVisible === 'string' && amountVisible.indexOf('%')) { 897 return (((horizontalShowing/elemWidth)*100) >= parseInt(amountVisible)); 898 } 899 else { 900 return (horizontalShowing >= parseInt(amountVisible)); 901 } 902 } 903 else if(type == 'area') { 904 var areaShowing = (elemWidth - missingLeft - missingRight) * (elemHeight - missingTop - missingBottom); 905 906 // If user specified a percentage then find out if the current shown percent 907 // is larger than the allowed percent. 908 // Otherwise check to see if the amount of px shown is larger than the 909 // allotted amount. 910 if (typeof amountVisible === 'string' && amountVisible.indexOf('%')) { 911 return (((areaShowing/elemArea)*100) >= parseInt(amountVisible)); 912 } 913 else { 914 return (areaShowing >= parseInt(amountVisible)); 915 } 916 } 917 } 918})(jQuery); 919;
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.