jQuery(function($){	if ($("#banner #prev").length == 0) return		var kenburns = $.idea2image && $.idea2image.kenburns && $("#banner").attr("data-animate")	var panel = $("#banner #infoPanel")	var pager = $("#banner #navigator ul")					.find("li")						.remove()					.end()		var spinner = $('<div id="spinner"></div>')	var videooverlay = $('<div id="videooverlay"></div>')	var transitionSpeed = 800	var currentSlide = 0	var currentSlideEl	var previousSlide = -1 	var slides = [] 	var locked = false 	var w = $("#banner").width() 	var h = $("#banner").height() 	var videoPlayback = false; 	var countdown = -1 	var paused = false 	var focused = false 	var hideOnFirst = false 	var panelDisabled = false 	var bgcolor = $("#banner").css("background-color").replace(/rgb\((\d+),\s*(\d+),\s*(\d+)\)/g, _rgb2hex); 	 	var flashEnabled = $.flash.available 	 	var box = { 		width: w, 		height: h, 		left:0, 		overflow: "hidden", 		visible: true, 		display: "block", 		opacity: 0 	} 	var direction="next"					function showPanel(show) {			if (show) {			panel.animate({left: 0},transitionSpeed,"easeOutExpo");			$("#openInfo").fadeOut(transitionSpeed)			$("#closeInfo").fadeIn(transitionSpeed)		} else {			panel.animate({left: -panel.width() + 32},transitionSpeed,"easeOutExpo");			if (!panelDisabled) $("#openInfo").fadeIn(transitionSpeed)			$("#closeInfo").fadeOut(transitionSpeed)		}	}		function hidePanel() {		showPanel(false)	}		function doTransition(from,to,tType) {		tType = from ? tType : "fade"				transitionSpeed = tType == "swipe" ? 700 : 1000				currentSlideEl = to				function reset() {			unlock()			if (from) {					from.fadeOut(0)				from.find("img:eq(0)").css("margin-left",0)			}		}				if (from) {			var kb = from.find("img:eq(0)").data("kenburns")			if (kb) kb.stop()		}				if (to.find("a.video").length > 0) {			videooverlay.fadeIn(0)			if (!flashEnabled) {				var gotcha = $("<a>")				gotcha.attr("href",to.find("a.video").attr("href")).attr("target","_blank")				gotcha.width(videooverlay.width()).height(videooverlay.height()).css("position","absolute").show()				videooverlay.empty().append(gotcha)			}		} else {			videooverlay.empty().fadeOut(0)		}				switch (tType) {			case "fade":				if (from) from.fadeOut(transitionSpeed)				to.fadeIn(transitionSpeed,unlock)			break;			case "whitefade":				to.fadeOut(0)				from.fadeOut(transitionSpeed/2,"easeOutQuad",function () {					to.fadeIn(transitionSpeed/2,"easeInQuad",unlock)				})			break;			case "flyBy":				if (direction == "next") {					from.fadeIn(0).css("opacity",1).css("left",0)					to.fadeIn(0).css("opacity",0).css("left",50)					from.animate({left:-100,opacity:0},transitionSpeed,"easeOutCubic")					to.animate({left:0,opacity:1},transitionSpeed,"easeOutCubic",unlock)				} else {					from.fadeIn(0).css("opacity",1).css("left",0)					to.fadeIn(0).css("opacity",0).css("left",-50)					from.animate({left:100,opacity:0},transitionSpeed,"easeOutCubic")					to.animate({left:0,opacity:1},transitionSpeed,"easeOutCubic",unlock)				}			break;			case "swipe":								var img 				var flyBy = 100								to.css(box)				if (from) from.css(box).css("opacity",1)										img = (direction == "next") ? to.find("img:eq(0)") : from ? from.find("img:eq(0)") : null								function prevTransition(now, fx) {					var size = Math.round(now*w)					var offs = Math.round(flyBy*(1-now))					to.css("left",-offs).width(size+flyBy)					if (img) img.css("margin-left",-size)					if (from) {						from.css("opacity",0.5+0.5*(1-now)).css("left",size+flyBy-offs).width(w-size)					}									}								function nextTransition(now, fx) {					var size = Math.round(now*w)					var offs = Math.round(flyBy*(1-now))					to.css("left",w-size+offs).width(size)					if (img) img.css("margin-left",size-w)					if (from) {						from.css("opacity",0.5+0.5*(1-now)).css("left",offs-flyBy).width(w-size+flyBy)					}				}								to.animate({opacity: 1},{					duration: transitionSpeed,					easing: "easeOutCubic",					complete: reset,					step: direction == "next" ? nextTransition : prevTransition									})											break;						}	}		function unlock() {		locked = false	}		function resourceLoaded(e) {		locked = false		showSlide(parseInt(e.target.id),true)	}		function preloadResource(idx,cb) {		var resource = slides[idx].resource		if (!resource) return true		var lazyLoadSrc = $(resource).attr("src") ? "" : $(resource).attr("data-src")		if (lazyLoadSrc) {			$(resource).attr("src",lazyLoadSrc)		}		if (!resource.complete) {			if (cb) $(resource).one("load",cb)		} 		return resource.complete	}		function showSlide(idx,loaded) {		if (previousSlide != idx && !locked) {			locked = true					if (!loaded && !preloadResource(idx,resourceLoaded)) {				spinner.fadeIn(500)				return			}						stopVideo()									preloadResource(prevNextIndex(idx,"next"))						pager.find("a").removeClass("currentSlide").eq(idx).addClass("currentSlide")			panel.find("#info").replaceWith(slides[idx].caption)						currentSlide = previousSlide = idx			spinner.fadeOut(100)						var from = jqSlides.filter(".active").removeClass("active")			var to = jqSlides.eq(idx).addClass("active")						var tType = to.attr("data-transition") || "swipe"			var kbTarget 						if (kenburns) {				kbTarget = to.find("img") 				if (kbTarget) {					tType = "fade"				}			}									var delay = to.attr("data-delay")			if (delay) {				countdown = parseFloat(delay)*4			}						// msie bug fix ....			to.show().fadeOut(0)						if (kbTarget) {				kbTarget.kenburns({					zoom:to.attr("data-zoom"),					align:to.attr("data-align"),					pan:to.attr("data-pan"),					duration:to.attr("data-duration")				})			}						doTransition(from[0] ? from : null,to,tType)						// hide panel on first time			if (hideOnFirst) {				hideOnFirst = false				setTimeout(hidePanel,1000)			}								}	}		function timerController() {		if (paused || countdown < 0) return		if (countdown == 0) {			showSlide(prevNextIndex(currentSlide,"next"))		}		countdown--	}		function panelHandler(e) {		showPanel(e.currentTarget.id == "openInfo")		return false	}		function prevNextIndex(from,dir) {		var nextIdx = from		nextIdx += (dir == "prev" ? -1 : 1)		nextIdx %= slides.length		if (nextIdx < 0) nextIdx += slides.length		return nextIdx	}		function prevNextHandler(e) {		direction = e.currentTarget.id		showSlide(prevNextIndex(currentSlide,direction))		return false	}		function navigatorHandler(e) {		var idx = parseInt(e.currentTarget.id)		direction = idx >= currentSlide ? "next" : "prev"		showSlide(idx)		return false	}		function parseSlide(idx,el) {		var jqEl = $(el).attr("id",idx)		var caption = jqEl.find(" > div").detach().attr({id:"info"}).get(0)		var resource = jqEl.find("img").attr({id:idx})[0]		slides[idx] = {caption:caption, resource:resource}		pager.append('<li><a href="#" '+ (idx == 0 ? 'class="currentSlide"' : '') +' id="'+idx+'">1</a></li>')	}		function clearVideo() {		spinner.empty()		videoPlayback = false		if (!focused) paused = false	} 		function stopVideo() {		if (videoPlayback) {			spinner.css("background-color","none")			spinner.fadeOut(500,clearVideo)			videooverlay.fadeIn(0)			$("#closeVideo").fadeOut(500);			var kb = jqSlides.filter(".active").find("img:eq(0)").data("kenburns")			if (kb) kb.resume()		}		return false	}		function loadVideo(url,hd,autoPlay,loop) {			if (videoPlayback) return false			var id,type				if (id = url.match(/http:\/\/www.youtube.com\/watch\?v=(\w+)/)) {			type = "youtube" 		} else if (id = url.match(/http:\/\/vimeo.com\/(\w+)/)) {			type = "vimeo"		}		if (type) {					stopVideo()					videoPlayback = true			paused = true						var kb = jqSlides.filter(".active").find("img:eq(0)").data("kenburns")			if (kb) kb.pause()						spinner.css("background-color",bgcolor)			spinner.fadeIn(500)			videooverlay.fadeOut(0)			showPanel(false)			$("#closeVideo").fadeIn(500);					var api = spinner.vid({    			type    : type,				videoId : id[1],				hd: hd,				autoPlay:autoPlay,				loop:loop,				bgcolor:bgcolor   			 });    		    				}				}		function loadResource(e) {		var el = $(e.currentTarget)				if (el.hasClass("video")) {			loadVideo(el[0].href,el.hasClass("hd"),el.hasClass("autoplay"),el.hasClass("loop"))			return false		}				return true	}		function eventHandler(e) {		switch (e.type) {			case "mouseenter":				paused = true				focused = true			break			case "mouseleave":				if (!videoPlayback) paused = false				focused = false			break		}	}		function videooverlayClick() {		var videoLink = currentSlideEl.find("a.video")		if (videoLink.length > 0) {			videoLink.trigger("click")		}	}		function _rgb2hex(rgb_string, r, g, b)  {      var rgb = (1 << 24) | (parseInt(r) << 16) | (parseInt(g) << 8) | parseInt(b); //same thing of: ( r + (256 * g) + (65536 * b) + 16777216)      return '#' + rgb.toString(16).substr(1); //substr(1) because we have to remove the (1 << 24) added above	}	var b = $("#banner")		.find("#closeInfo, #openInfo")			.click(panelHandler)		.end()		.find("#prev, #next")			.click(prevNextHandler)		.end()		.find("#closeVideo")			.click(stopVideo)		.end()		.bind("mouseenter",eventHandler)		.bind("mouseleave",eventHandler)		var tmp = transitionSpeed	transitionSpeed = 0	switch (b.attr("data-panel")) {		case "hidden":			showPanel(false,0)		break;		case "hideOnFirst":			hideOnFirst = true		break;		case "disabled":			showPanel(false,0)			panelDisabled = true			$("#openInfo").hide()		break;	}	transitionSpeed = tmp			var jqSlides = $("#banner #slides > div")			// silly ie9 fix	if ($.browser.msie && $.browser.version > 8) {		jqSlides			.find("img")				.each(function () {					var jqImg = $(this)					if (!jqImg.attr("data-src")) {						jqImg.attr("data-src",jqImg.attr("src"))						jqImg.removeAttr("src")					}				})			.end()	}			jqSlides		.width(w)		.height(h)		.show()		.fadeOut(0)		.removeClass("active")		.find("img[src*='img/icons/blank.png']")			.removeAttr("src")		.end()		.find("a")			.click(loadResource)		.end()		.each(parseSlide)	.end()		pager.find("a").click(navigatorHandler)	if (flashEnabled) videooverlay.hide().click(videooverlayClick)	$("#banner #slides").append(spinner).append(videooverlay)	spinner.width(w-64).height(h).css("padding","0px 32px 0px 32px")		showSlide(0)	setInterval(timerController,250)				});
