/*
 * jQuery Cycle Plugin (core logic only)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2009 M. Alsup
 * Version: 2.65 (07-APR-2009)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.6 or later
 *
 * Originally based on the work of:
 *	1) Matt Oakes
 *	2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)
 *	3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)
 */
;(function($){
	var ver="2.65";
	if($.support==undefined){$.support={opacity:!($.browser.msie)};}
	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(){
			options=handleArguments(this,options,arg2);
			if(options===false){return;}
			if(this.cycleTimeout){clearTimeout(this.cycleTimeout);}
			this.cycleTimeout=this.cyclePause=0;
			var $cont=$(this);
			var $slides=options.slideExpr?$(options.slideExpr,this):$cont.children();
			var els=$slides.get();
			if(els.length<2){
				log("terminating; too few slides: "+els.length);
				return;
			}
			var opts=buildOptions($cont,$slides,els,options,o);
			if(opts===false){return;}if(opts.timeout||opts.continuous){
				this.cycleTimeout=setTimeout(function(){
					go(els,opts,0,!opts.rev);
				},opts.continuous?10:opts.timeout+(opts.delay||0));
			}
		});
	};
	
	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"stop":
					cont.cycleStop++;
					if(cont.cycleTimeout){
						clearTimeout(cont.cycleTimeout);
					}
					cont.cycleTimeout=0;
					$(cont).removeData("cycle.opts");
					return false;
				case"pause":
					cont.cyclePause=1;
					return false;
				case"resume":
					cont.cyclePause=0;
					if(arg2===true){
						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,1)
					;}
					return false;
				default:
					options={fx: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 removeFilter(el,opts){
			if(!$.support.opacity&&opts.cleartype&&el.style.filter){
				try{
					el.style.removeAttribute("filter");
				}
				catch(smother){}
			}
		}
		
		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);});
			}
			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);}
			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=0;opts.startingSlide=opts.randomMap[0];
			}else{
				if(opts.startingSlide>=els.length){
					opts.startingSlide=0;
				}
			}
			opts.currSlide=opts.startingSlide=opts.startingSlide||0;
			var first=opts.startingSlide;
			$slides.css({position:"absolute",top:0,left:0}).hide().each(function(i){var 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 i=0;i<els.length;i++){
					var $e=$(els[i]),e=$e[0],w=$e.outerWidth(),h=$e.outerHeight();
					if(!w){
						w=e.offsetWidth;
					}
					if(!h){
						h=e.offsetHeight;
					}
					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;}
			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 requeue=false;
			options.requeueAttempts=options.requeueAttempts||0;
			$slides.each(function(){
				var $el=$(this);
				this.cycleH=(opts.fit&&opts.height)?opts.height:$el.height();
				this.cycleW=(opts.fit&&opts.width)?opts.width:$el.width();
				if($el.is("img")){
					var loadingIE=($.browser.msie&&this.cycleW==28&&this.cycleH==30&&!this.complete);
					var loadingOp=($.browser.opera&&this.cycleW==42&&this.cycleH==19&&!this.complete);
					var loadingOther=(this.cycleH==0&&this.cycleW==0&&!this.complete);
					if(loadingIE||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;
				}
				while((opts.timeout-opts.speed)<250){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){
				opts.nextSlide=opts.currSlide;
				if(++opts.randomIndex==els.length){
					opts.randomIndex=0;
				}
				opts.nextSlide=opts.randomMap[opts.randomIndex];
			}else{
				opts.nextSlide=opts.startingSlide>=(els.length-1)?0:opts.startingSlide+1;
			}
			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).click(function(){return advance(opts,opts.rev?-1:1);});}
			if(opts.prev){$(opts.prev).click(function(){return advance(opts,opts.rev?1:-1);});}
			if(opts.pager){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 txs=$.fn.cycle.transitions;
			if(opts.fx.indexOf(",")>0){
				opts.multiFx=true;opts.fxs=opts.fx.replace(/\s*/g,"").split(",");
				for(var i=0;i<opts.fxs.length;i++){
					var fx=opts.fxs[i];
					var 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){
						var 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(var i=0;i<r1;i++){
					var r2=Math.floor(Math.random()*opts.fxs.length);
					opts.fxs.push(opts.fxs.splice(r2,1)[0]);
				}
				log("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){
					$.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){$(els).stop(true,true);opts.busy=false;}if(opts.busy){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.autostop&&(--opts.countdown<=0))||(opts.nowrap&&!opts.random&&opts.nextSlide<opts.currSlide))){if(opts.end){opts.end(opts);}return;}if(manual||!p.cyclePause){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]);});};if(opts.nextSlide!=opts.currSlide){opts.busy=1;if(opts.fxFn){opts.fxFn(curr,next,opts,after,fwd);}else{if($.isFunction($.fn.cycle[opts.fx])){$.fn.cycle[opts.fx](curr,next,opts,after);}else{$.fn.cycle.custom(curr,next,opts,after,manual&&opts.fastOnEvent);}}}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];}else{var roll=(opts.nextSlide+1)==els.length;opts.nextSlide=roll?0:opts.nextSlide+1;opts.currSlide=roll?els.length-1:opts.nextSlide-1;}if(opts.pager){$.fn.cycle.updateActivePagerLink(opts.pager,opts.currSlide);}}var ms=0;if(opts.timeout&&!opts.continuous){ms=getTimeout(curr,next,opts,fwd);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,!opts.rev);},ms);}}
	
	$.fn.cycle.updateActivePagerLink=function(pager,currSlide){
		$(pager).find("a").removeClass("selected").filter("a:eq("+currSlide+")").addClass("selected");
	};
	
	function getTimeout(curr,next,opts,fwd){if(opts.timeoutFn){var t=opts.timeoutFn(curr,next,opts,fwd);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){if(++opts.randomIndex==els.length){opts.randomIndex=0;}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;}}}}if($.isFunction(opts.prevNextClick)){opts.prevNextClick(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);
		});
		
		$.fn.cycle.updateActivePagerLink(opts.pager,opts.startingSlide);
		
		/*$("#jq_slider_nav").prepend('<li><a href="javascript:;" id="header_vorige">&laquo;</a></li>');
		$("#jq_slider_nav").append('<li><a href="javascript:;" id="header_volgende">&raquo;</a></li>');*/
	}
	
	$.fn.cycle.createPagerAnchor=function(i,el,$p,els,opts){
		var a=($.isFunction(opts.pagerAnchorBuilder))?opts.pagerAnchorBuilder(i,el):'<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);
				});
				$a=$(arr);
			}else{
				$a.appendTo($p);
			}
		}
		$a.bind(opts.pagerEvent,function(){
			opts.nextSlide=i;
			var p=opts.$cont[0],timeout=p.cycleTimeout;
			if(timeout){clearTimeout(timeout);
				p.cycleTimeout=0;
			}
			if($.isFunction(opts.pagerClick)){
				opts.pagerClick(opts.nextSlide,els[opts.nextSlide]);
			}
			go(els,opts,1,opts.currSlide<i);
			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){
		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,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};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,prevNextClick:null,pager:null,pagerClick:null,pagerEvent:"click",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,nowrap:0,fastOnEvent:0,randomizeEffects:1,rev:0,manualTrump:true,requeueOnImageNotLoaded:true,requeueTimeout:250};
})(jQuery);

