/*******************************************************************************
*	promo-carousel.js
*
*	Copyright 2010 Guidance Software, LLC
*	All Rights Reserved Worldwide
*
*	Javascript functions to handle to promotion carousel sliders.
*
*   Dependecny:
*       
*       - Prototype.js
*       - effects.js
*       - builder.js
*
*	History:
*
*	12-29-10  Stephen Andekian	First
*   11-24-11  Stephen Andekian  Added Omniture Custom Click Tracking
******************************************************************************/
PromoCarousel=Class.create();PromoCarousel.prototype={settings:null,containers:new Array(),title:new Array(),activeNavKey:1,timer:null,liPrefix:"",navId:null,titleId:null,getTitleId:null,containersLiId:null,time:null,pingOmniture:true,initialize:function(a){this.cleanUp();this.settings=a.settings;this.liPrefix=this.settings.id+"-li_";this.setupIds();this.adjustContainerWidth();this.buildTitleArray();this.buildNav();this.startNavObservers();this.loadDefaultSlide();if(this.containersLiId.length>1){this.startRotate()}Event.observe(window,"unload",function(){this.stopRotate();this.cleanUp();for(var b in Element.cache){Element.cache[b]=null}}.bind(this))},cleanUp:function(){this.settings=null;this.containers=new Array();this.title=new Array();this.activeNavKey=1;this.timer=null;this.liPrefix="";this.navId=null;this.titleId=null;this.getTitleId=null;this.containersLiId=null;this.time=null},setupIds:function(){this.containersLiId=$$("#"+this.settings.id+" div ul li");this.containerUlId=$$("#"+this.settings.id+" div ul")[0];this.getTitleId=$$("#"+this.settings.id+" div ul li div h3");this.navId=$$("#"+this.settings.id+" span ul")[0];this.titleId=$$("#"+this.settings.id+" div h3")[0]},loadDefaultSlide:function(){var a=0;if((this.settings.defaultSlide<=this.containersLiId.length)&&(this.settings.defaultSlide>=1)){a=(this.settings.defaultSlide-1)}this.loadTitleForKey(a);this.setNavActive(a);this.activeNavKey=a},buildTitleArray:function(){this.getTitleId.each(function(a){if(a.innerHTML!=""&&a.innerHTML!="undefined"){this.title.push(a.innerHTML);a.remove()}else{this.title.push("")}}.bind(this))},insertLiNav:function(a){var b=this.liPrefix+a;HTML=Builder.node("li",{id:b});$(this.navId).insert(HTML)},buildNav:function(){if(this.containersLiId.length>1){for(var a=0;a<this.containersLiId.length;a++){this.insertLiNav(a)}}},setNavActive:function(a){if(a>=0&&this.containersLiId.length>1){$(this.liPrefix+this.activeNavKey).removeClassName("active");$(this.liPrefix+a).addClassName("active")}},navRequest:function(c){var b=Event.findElement(c,"li");var f=b.previousSiblings().length;if(f!=this.activeNavKey){this.rotateClickPause();this.goToContainer(f);var e=f+1;if(this.pingOmniture){var a=(s.pageName!="")?s.pageName:"home page";var d="promo carousel : "+a+" : "+e;s.tl(b,"o",d.toLowerCase())}}},startNavObservers:function(){Event.observe(window,"load",function(){for(var a=0;a<this.containersLiId.length;a++){if($(this.liPrefix+a)){var b=$(this.liPrefix+a).readAttribute("id");$(b).observe("click",this.navRequest.bindAsEventListener(this))}}}.bind(this))},stopNavObservers:function(){for(var a=0;a<this.containersLiId.length;a++){if($(this.liPrefix+a)){var b=$(this.liPrefix+a).readAttribute("id");$(b).stopObserving("click",this.navRequest.bindAsEventListener(this))}}},loadTitleForKey:function(a){$(this.titleId).innerHTML=this.title[a]},animate:function(a){new Effect.Morph(this.containerUlId,{style:"left: "+a+"px",duration:this.settings.slideSpeed,queue:{position:"end",scope:"promo",limit:1},beforeStart:function(){}.bind(this),afterFinish:function(){}.bind(this)})},getSlideOffset:function(a){var b=$(this.settings.id).getStyle("width").replace(/px,*\)*/g,"");return b*a},goToContainer:function(a){this.setNavActive(a);this.animate("-"+this.getSlideOffset(a));this.setNavActive(a);this.loadTitleForKey(a);this.activeNavKey=a},adjustContainerWidth:function(){var a=$(this.settings.id).getStyle("width");this.containersLiId.each(function(b){$(b).setStyle({width:a})}.bind(this))},rotateClickPause:function(){if(this.time!=null){window.clearTimeout(this.time);this.time=null}if(this.time==null){this.stopRotate();this.time=window.setTimeout(function(){this.startRotate();window.clearTimeout(this.time)}.bind(this),this.settings.additionalPauseTime*1000)}},rotatePrevious:function(){var a=this.activeNavKey-1;if(a<0){a=(this.containersLiId.length-1)}this.goToContainer(a)},rotateNext:function(){var a=this.activeNavKey+1;if(a>(this.containersLiId.length-1)){a=0}this.goToContainer(a)},stopRotate:function(){if(this.timer!=null){this.timer.stop();this.timer=null}},startRotate:function(){this.timer=new PeriodicalExecuter(function(){if(this.settings.reverse){this.rotatePrevious()}else{this.rotateNext()}}.bind(this),this.settings.rotateSpeed)}};
