

var pageFeature_height;
var dropDownHeight;
var dropIsAnimating = false;
var hoveringIn = false;
var hoveringOut = false;


$(document).ready(function () {
	footerTicker();						
  setWallpaper();
  showHomeBgFlash();
  tabsMenu();
  promoSlideshow();
});


							
    function footerTicker(){
        $('#footer-ticker').cycle({
            fx: 'fade'
        });
    }

    function promoSlideshow(){
        $('.slideshow-content').cycle({
            fx: 'fade',
            speed:'500',
            pager:'.slideshow-paging'
        });
    }

    function eventsExpandContract() {
        if($('.events').html() == null){
            return;
        }

        // IE7 fix

        if (isIE(7, true) || isIE(8, true)) {
            
            $('.events .region .event table tbody tr:nth-child(2n-1)').css('background','#eaeaea');
         
        }

        var expandedHeight = 0;

        $('.region').each(function () {
            $(this).find('.event').each(function (index) {
                expandedHeight = $(this).parents('.region').height();
                if (index == 0) {
                    $(this).parents('.region').data('expandedHeight', expandedHeight);   
                }
                $(this).parents('.region').height(50);
            });
        });

        $('.events h3 a').bind('click', function () {

            var contractedHeight = 50;
            var isOpen = false;

            var thisRegion = $(this).parents('.region');
            var thisRegionHeight = $(this).parents('.region').height();

            // Should expand it
            if ($(this).hasClass('fn_region_expand')) {
                $(this).removeClass('fn_region_expand');
                $(this).addClass('fn_region_contract');

                expandedHeight = $(thisRegion).data('expandedHeight');

                $(thisRegion).animate({
                    height: expandedHeight
                }, 400, function () {
                    // Animation complete.
                });
            }

            // Should contract it
            else if ($(this).hasClass('fn_region_contract')) {
                $(this).removeClass('fn_region_contract');
                $(this).addClass('fn_region_expand');

                $(thisRegion).animate({
                    height: 50
                }, 400, function () {
                    // Animation complete.
                });
            }

            else {
                //"Error: Unknown class for anchor"
            }


            return false;
        });
    }

    function pricingDetailsRevealMore() {

        if ($('.pricing_details').html() == null) {
            return;
        }

        var offerCounter = 0;
        var htmlContainer;
        var shouldShowLink = false;
        var hasTerminatedDiv = false;
        var shouldOpen = true;

        

        $('.offer').each(function (index) {
            offerCounter++;

            if (index == 4) {
                shouldShowLink = true;
            }

            if (index > 3) {
                $(this).hide();
                $(this).css('border-bottom','none');
            }
        });

        if (shouldShowLink) {
            $('.offer').wrapAll("<div class='offerRow clearfix'/>");
            $('.offer:last').after("<p class='showMoreOffers'>View more prices</p>");
        }

        else {
            $('.offer').each(function (index) {
                $(this).css('border-top','1px solid #DEDEDE');
                $(this).css('border-bottom','1px solid #DEDEDE');
            });
        }


        // showMoreOffers hover handler
        $('.showMoreOffers').hover(function () {
            $(this).toggleClass('showMoreOffersHovered');
        });

        $('.showMoreOffers').bind('click', function () {

            $('.offer').each(function (index) {
                if (shouldOpen) {
                    if (index < 4) {
                        $(this).css('border-bottom','1px solid #DEDEDE');
                    }
                    $(this).fadeIn();
                }

                else {
                         //$(this).css('border-bottom', 'none');
                         if (index > 3) {
                            $(this).fadeOut();
                        }
                }

            });

            if (shouldOpen) {
                $(this).html('View less prices');
                $(this).css('border-top', '1px solid #DEDEDE');
                shouldOpen = false;
            }

            else {
                $(this).html('View more prices');
                $(this).css('border-top', 'none');
                shouldOpen = true;
            }

        });

    }
	


    function footerSearch() {

        // Check if they entered an invalid entry into the postcode search

        $(".footer .search_block input[type='submit']").each(function (index) {

            $(this).parent().find("input[type='text']").keypress(function (event) {
                
                var thisValue = $(this).attr('value');
                if (event.keyCode == 13) {
                    $(this).parent().find("input[type='submit']").click();
                }
                //$('.top input#ctl00_HYU_PriceOffers1_txtTopPostcode').attr('value',thisValue);
            });


            if (index == 1) {

                $(this).bind('click', function () {

                    var inputValue = $(this).parent().find("input[type='text']").attr('value');
                    if (inputValue.search("Enter") != -1 || inputValue == "" || inputValue.length < 4 || isNaN(inputValue / 4) == true) {
                        $(this).parent().find("input[type='text']").attr('value', 'Enter a postcode');
                        $(this).parent().find("input[type='text']").css('color', 'red');
                        return false;
                    }


                });

                $(this).parent().find("input[type='text']").bind('blur', function () {
                    $(this).css('color', '#9E9E9E');
                })

                $(this).parent().find("input[type='text']").bind('focus', function () {
                    $(this).css('color', '#9E9E9E');
                })

            }

        });

		// Check to see if the invalid postcode error control is showing. If so, change the colour of the text
		if($('.checkPostcodeFormat').css('visibility') == 'visible'){
			$('.checkPostcodeInput').css('color', 'red');
		}

    }

  function showHomeBgFlash() {

        var windowWidth = $(window).width();
        if (windowWidth < 981) {
            $('#flashWrapper').html("<img src='" + wallpaper +"'/>");
            var wallpaper = $('#wallpaper img').attr("src");
            var wallpaperColor = $('#wallpaper').css("background-color");
            $("body").css({ backgroundImage: "url(" + wallpaper + ")", backgroundPosition: "center top", backgroundRepeat: "no-repeat", backgroundColor: wallpaperColor });
            $("body").css("width","900");
            $('#aspnetForm').css('background', 'none');
            return;
        }

        // If no javascript
        if ($("#flashWrapper").html() != null) {
            $("#flashWrapper").show();

        }

        
        if ($('div.edit-buttons').html() != null) {
            $("#flashWrapper").css('position', 'relative');
            $("#flashWrapper").css('top', '30px');
        }


    }

    function tabsMenu() {
        if($('.tabs-menu').html() == null){
            return;
        }

        var thisURL;
        var currentShown;

        $('.tabs-menu li').bind('click', function(){
            thisURL = $(this).find('a').attr('href');
            currentShown = $(this).parents('.tabs-menu').find('li.current a').attr('href');

            if(thisURL == currentShown ){
                return;
            }

            $(currentShown).hide();
            $(thisURL).fadeIn();

            $(this).parents('.tabs-menu').find('li.current').removeClass('current');
            $(this).addClass('current');
            $(this).parents('.tabs-menu').find('.previousListItem').removeClass('previousListItem');
            $(this).prev().addClass('previousListItem');
            return false;
        });



        
    }

    function fixHovers() {
        if($('.newsItems .article_back').html() != null){
            $('.newsItems .article_back').hover(
              function () {
                $(this).toggleClass("article_back_hovered");
              });

        }

        if($('.pricing_details .greyButton').html() != null){
            $('.pricing_details .greyButton').hover(
              function () {
                $(this).toggleClass("greyButtonHovered");
              });


        }

        $('.nav_vehicle_link_inner').each(function(){
            $(this).hover(
              function () {
                $(this).toggleClass("nav_vehicle_link_inner_hovered");
                $(this).parent().toggleClass("nav_vehicle_link_wrapper_hovered");
              });
        });

    }

    function buildUp(){
    $('.article').hover(function(e) {
      
      var this_ = $(this).html();
      $('.article').each(function(){
            if($(this).html() != this_){
                $(this).hoverFlow(e.type, { opacity: 0.5, top: 10 }, {
              duration: 600, 
              complete: function() {
                
              }});
            }
      });
        
      }, function(e) {

       $('.article').each(function(){
            $(this).hoverFlow(e.type, { opacity: 1, top: 0 }, 'fast');
        });
        
      });


    }

    function showSubItems() {
        $('.subItem').each(function(){
            $(this).show();
        });
    }

    function pricingOffersIframe() {
        if($('.pricing_details').html() != null){
             $('.dealerLocator').hide();
            $('.right .quicklinks #dealer').bind('click', function(){
                $(this).toggleClass('active');
                $('.dealerLocator').toggle();
            });
        }

    }
    
    var isFirstClick = true;
    var origValue;

    function clearInputs(){
        
        $('input[type="text"]').bind('focus',function(){
        
            var thisValue = $(this).attr('value');
            
            if($(this).attr('title') == ""){
                origValue = $(this).attr('value');
                $(this).attr('title', origValue);
                isFirstClick = false;
            }

            if(thisValue == $(this).attr('title')){
                $(this).attr('value','');
            }


        });

         $('input[type="text"]').bind('blur',function(){
        
            var thisValue = $(this).attr('value');

            if(thisValue == ''){
                $(this).attr('value',$(this).attr('title'));
            }
            isFirstClick = true;
        });

    }
	
	function padIndexPageArticles() {
        if($('.landing_page .article').html() != null){
            $('.landing_page .article:eq(0)').addClass("first");
            $('.landing_page .article:last').addClass("last");
        }
    }

	
	function resizeIframe(height) {
	
		if($('.dealerLocator').html() != null){
			//var iframeID = $('iframe').attr('id');
			var iframeID = $("iframe[id$='ifDealer']");
			//iframeID = iframeID.substring(iframeID.indexOf("ifDealer"),iframeID.length);
			document.getElementById(iframeID).height = parseInt(height)+60;
		}
	
		if($('#the_iframe').html() != null){
			// Resize iframe to full height
			// "+60" is a general rule of thumb to allow for differences in
		    // IE & and FF height reporting, can be adjusted as required..

		    if (!isNaN(parseInt(height) + 60)) {
		        document.getElementById('the_iframe').height = parseInt(height) + 60;
		    }   


			
		}
	}
	
    function pricingLandingPostcode(){
     
        $('.postcodeInput').attr('value','Postcode');


        if($('.pricing_landing').html() != null){
            $('.postcodeSearch').hide();
            $('.pricing_landing .offer input.orangeButton_large, .specialOffer input.orangeButton_small ').bind('click',function(){

                $('.postcodeSearch').each(function(){
                    $(this).fadeOut();
                });

                if( $(this).parent().find('.postcodeSearch').html() != null){
                    $(this).parent().find('.postcodeSearch').fadeIn();

				    return false;
                }
                
            });

            
            $('.postcodeSearch input[type="text"]').keypress(function(event) {
          
              var thisValue = $(this).attr('value');
              if(event.keyCode == 13){
			 
                $('.top .form span').hide();
                $(this).parent().find('input.postcodeSubmit').click();
              }
              //$('.top input#ctl00_HYU_PriceOffers1_txtTopPostcode').attr('value',thisValue);
            });
            
          
        }
        
    }
	
	//START DOM Helper functions
	function isLast(element) {
		$(element).addClass("is_last");
	}
	
	function pageActions(){
		$('#page_actions img').hover(
		  function () {
		    var thisSRC = $(this).attr('src');
			thisSRC = thisSRC.replace(".gif","");
			thisSRC = thisSRC + "-hover.gif";
			$(this).attr('src',thisSRC);
		  },
		  function() {
		    var thisSRC = $(this).attr('src');
			thisSRC = thisSRC.replace("-hover","");
			$(this).attr('src',thisSRC);
		  });
	}
	
	function isFirst(element) {
		$(element).first().addClass("is_first");
	}
	
	function bindNavVehicleHover(){
		$(".nav_vehicle").hover(function(){

        if($(this).hasClass('active')){
            return false;
        }
            $(this).toggleClass('hovered',250);
		});
	}
		
	function addClearBefore(element){
		$("<div class='clear' />").insertBefore(element);
	}
	function boldNumberList(){
		if($('ol li').html() != null){
		
			$('ol li').each(function() {
			//wrap each ol > li in a span so that our bold number effect renders properly, while
			//leaving the text normal weight.
		
				if($(this).find('p').eq(0).text()){
					// do nothing
					//$(this).css('border','1px dashed orange');
					return;
					
				} else{
					$(this).contents().wrap('<span />');
					//$(this).css('border','1px dashed purple');
				};
			});

		}
	}
	
	

	
	function setInputValues() {
		
		var searchVal = $('.footer .search_block .custom_input:eq(0) input').eq(0);
		searchVal.attr("value","Enter search");
		searchVal.focus(function(){
			if(this.value =='Enter search')
				{
					this.value = "";
				}
		});
		
		searchVal.blur(function(){
			if(this.value == '')
				{
					this.value = "Enter search";
				}
		});
		
		var locatorVal = $('.search_box input').eq(0);
		locatorVal.attr("value","Enter a postcode");
		locatorVal.focus(function(){
			if(this.value =='Enter a postcode')
				{
					this.value = "";
				}
		});
		locatorVal.blur(function(){
			if(this.value == '')
				{
					this.value = "Enter a postcode";
				}
		});
		
		var searchPageVal = $('#search_again input').eq(0);
		searchPageVal.attr("value","Enter search");
		searchPageVal.focus(function(){
			if(this.value =='Enter search')
				{
					this.value = "";
				}
		});
		searchPageVal.blur(function(){
			if(this.value == '')
				{
					this.value = "Enter search";
				}
		});
		
		$('.custom_radio_group .custom_radio input').eq(0).attr("checked", "checked");
		
		}
	
	
	function postcodeValue(){
		//Change input box to blank on form field focus
		var pcVal = $('.postcodeInput');
		pcVal.attr("value","Postcode");
		pcVal.focus(function(){
			if(this.value =='Postcode')
				{
					this.value = "";
				}
		});
		pcVal.blur(function(){
			if(this.value == '')
				{
					this.value = "Postcode";
				}
		});
	}

	
function setWallpaper() { //if wallpaper div exists, make this img the background
var wallpaper = $('#wallpaper img').attr("src");
var wallpaperColor = $('#wallpaper').css("background-color");

if ($('div').is('#wallpaper')) {
$("body").css({backgroundImage: "url(" + wallpaper + ")", backgroundPosition: "center top", backgroundRepeat: "no-repeat" });
} 

		

	}
	


	/* ########################################################################### *
	/* ##### HOVER INTENT INCLUDE
	/* ########################################################################### */

	/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);



/*
 * jQuery Cycle Plugin (core engine only)
 * Examples and documentation at: http://jquery.malsup.com/cycle/
 * Copyright (c) 2007-2010 M. Alsup
 * Version: 2.99 (12-MAR-2011)
 * Dual licensed under the MIT and GPL licenses.
 * http://jquery.malsup.com/license.html
 * Requires: jQuery v1.3.2 or later
 */
(function($){var ver="2.99";if($.support==undefined){$.support={opacity:!($.browser.msie)};}function debug(s){$.fn.cycle.debug&&log(s);}function log(){window.console&&console.log&&console.log("[cycle] "+Array.prototype.join.call(arguments," "));}$.expr[":"].paused=function(el){return el.cyclePause;};$.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.backwards);if(startTime){startTime+=(opts2.delay||0);if(startTime<10){startTime=10;}debug("first timeout: "+startTime);this.cycleTimeout=setTimeout(function(){go(els,opts2,0,!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,!options.backwards);}}}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]:[];if(!$.support.opacity&&opts.cleartype){opts.after.push(function(){removeFilter(this,opts);});}if(opts.continuous){opts.after.push(function(){go(els,opts,0,!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.cssAfter=opts.cssAfter||{};opts.cssFirst=opts.cssFirst||{};opts.animIn=opts.animIn||{};opts.animOut=opts.animOut||{};$slides.not(":eq("+first+")").css(opts.cssBefore);$($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=="none"?0:opts.fx=="shuffle"?500:250;while((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){opts.after[0].apply(e0,[e0,e0,opts,true]);}if(opts.next){$(opts.next).bind(opts.prevNextEvent,function(){return advance(opts,1);});}if(opts.prev){$(opts.prev).bind(opts.prevNextEvent,function(){return advance(opts,0);});}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"){$s.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=0;}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(){opts.busy=0;$.each(opts.after,function(i,o){if(p.cycleStop!=opts.stopCount){return;}o.apply(next,[curr,next,opts,fwd]);});};debug("tx firing("+fx+"); 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);}else{if(opts.continuous&&p.cyclePause){ms=10;}}if(ms>0){p.cycleTimeout=setTimeout(function(){go(els,opts,0,!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(opts.fx!="none"&&(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,1);};$.fn.cycle.prev=function(opts){advance(opts,0);};function advance(opts,moveForward){var val=moveForward?1:-1;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,moveForward);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&&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();if(typeof opts.cssBefore.opacity=="undefined"){opts.cssBefore.opacity=1;}opts.cssBefore.display="block";if(opts.slideResize&&w!==false&&next.cycleW>0){opts.cssBefore.width=next.cycleW;}if(opts.slideResize&&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,function(){cb();});};$l.animate(opts.animOut,speedOut,easeOut,function(){$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={activePagerClass:"activeSlide",after:null,allowPagerClickBubble:false,animIn:null,animOut:null,autostop:0,autostopCount:0,backwards:false,before:null,cleartype:!$.support.opacity,cleartypeNoBg:false,containerResize:1,continuous:0,cssAfter:null,cssBefore:null,delay:0,easeIn:null,easeOut:null,easing:null,end:null,fastOnEvent:0,fit:0,fx:"fade",fxFn:null,height:"auto",manualTrump:true,next:null,nowrap:0,onPagerEvent:null,onPrevNextEvent:null,pager:null,pagerAnchorBuilder:null,pagerEvent:"click.cycle",pause:0,pauseOnPagerHover:0,prev:null,prevNextEvent:"click.cycle",random:0,randomizeEffects:1,requeueOnImageNotLoaded:true,requeueTimeout:250,rev:0,shuffle:null,slideExpr:null,slideResize:1,speed:1000,speedIn:null,speedOut:null,startingSlide:0,sync:1,timeout:4000,timeoutFn:null,updateActivePagerLink:null};})(jQuery);
