
var uShow=function(){this.initialize();}
uShow.prototype={uid:0,initialize:function(){this.uid=uShow.prototype.uid++;this.initListen=this.init.bindAsEventListener(this);ObserveEvent(window,'load',this.initListen);this.repeat=true;this.delay=5;this.transition='fade';this.transitionTime=0.5;this.controls=true;this.autoplay=true;this.controlsElement=null;this.slides=[];this.slidePos=0;this.nextListen=this.next.bindAsEventListener(this);this.clickNextListen=this.clickNext.bindAsEventListener(this);this.clickPrevListen=this.clickPrev.bindAsEventListener(this);this.clickPlayListen=this.clickPlay.bindAsEventListener(this);this.clickStopListen=this.clickStop.bindAsEventListener(this);},addSlide:function(slide){this.slides.push(slide);if(this.slides.length==1){this.element=slide.element.parentNode;this.element.style.position='relative';}
slide.prepare();if(this.slides.length>1)slide.hide();return(true);},init:function(){if(this.autoplay)this.play();if(this.controls)this.drawControls();},play:function(){this.autoplay=true;var slide=this.slides[this.slidePos];var delay=this.getDelay(slide);if(delay==0){this.stop();}
else{this.timeout=setTimeout(this.nextListen,delay*1000);}},clickPlay:function(){this.autoplay=true;this.next();},clickNext:function(){this.next();},clickPrev:function(){this.previous();},clickStop:function(){this.stop();},getDelay:function(slide){if(slide.delay!=undefined)return(slide.delay);return(this.delay);},getTransition:function(slide){if(slide.transition!=undefined)return(slide.transition);return(this.transition);},stop:function(){if(this.timeout)clearTimeout(this.timeout);this.timeout=null;this.autoplay=false;},next:function(){if(this.timeout)clearTimeout(this.timeout);var current=this.slides[this.slidePos];this.slidePos++;if(this.slidePos>=this.slides.length){if(!this.repeat)return(false);this.slidePos=0;}
var next=this.slides[this.slidePos];this.transitStart(current,next);},previous:function(){if(this.timeout)clearTimeout(this.timeout);var current=this.slides[this.slidePos];this.slidePos--;if(this.slidePos<0){if(!this.repeat)return(false);this.slidePos=this.slides.length-1;}
var prev=this.slides[this.slidePos];this.transitStart(current,prev);},transitStart:function(fromSlide,toSlide){this.transitCancel();var transition=this.getTransition(toSlide);switch(transition){case'fade':this.transit=new uShowFade(this);break;case'none':default:this.transit=new uShowNone(this);break;}
this.transit.start(fromSlide,toSlide);},transitComplete:function(){this.transit=undefined;if(this.autoplay)this.play();},transitCancel:function(){if(this.transit)this.transit.forceComplete();this.transit=undefined;},drawControls:function(){var element=$(this.controlsElement);if(!element)element=this.element;if(!element)return(false);this.buttonPrev=document.createElement('div');this.buttonPrev.className='uShow_prev uShow_button';this.buttonPrev.onclick=this.clickPrevListen;this.buttonPrev.innerHTML='Previous';element.appendChild(this.buttonPrev);this.buttonPlay=document.createElement('div');this.buttonPlay.className='uShow_play uShow_button';this.buttonPlay.onclick=this.clickPlayListen;this.buttonPlay.innerHTML='Play';element.appendChild(this.buttonPlay);this.buttonStop=document.createElement('div');this.buttonStop.className='uShow_stop uShow_button';this.buttonStop.onclick=this.clickStopListen;this.buttonStop.innerHTML='Stop';element.appendChild(this.buttonStop);this.buttonNext=document.createElement('div');this.buttonNext.className='uShow_next uShow_button';this.buttonNext.onclick=this.clickNextListen;this.buttonNext.innerHTML='Next';element.appendChild(this.buttonNext);}};var uShowNone=function(parentUShow){this.initialize(parentUShow);}
uShowNone.prototype={initialize:function(parentUShow){this.parentUShow=parentUShow;},start:function(fromSlide,toSlide){toSlide.show();fromSlide.hide();this.parentUShow.transitComplete();},forceComplete:function(){}};var uShowFade=function(parentUShow){this.initialize(parentUShow);}
uShowFade.prototype={initialize:function(parentUShow){this.parentUShow=parentUShow;},start:function(fromSlide,toSlide){this.fadeListen=this.fadeStep.bindAsEventListener(this);this.fadeSteps=20;this.fadeAmount=100/this.fadeSteps;this.fadeTime=this.parentUShow.transitionTime*1000/this.fadeSteps;this.fadeFrom=fromSlide;this.fadeTo=toSlide;this.fadeFrom.onTop();this.fadeTo.onBottom();this.fadeTo.show();this.fadeOpacity=100;this.fadeStep();},forceComplete:function(){this.fadeTo.setOpacity(100);this.fadeFrom.hide();this.fadeTo.show();this.fadeStop();},fadeStep:function(){if(!this.fadeFrom||!this.fadeTo)return(false);this.fadeOpacity-=this.fadeAmount;this.fadeOpacity=Math.round(this.fadeOpacity);if(this.fadeOpacity<0)this.fadeOpacity=0;this.fadeFrom.setOpacity(this.fadeOpacity);if(this.fadeOpacity==0)this.fadeStop();if(this.fadeTimeout)clearTimeout(this.fadeTimeout);this.fadeTimeout=setTimeout(this.fadeListen,this.fadeTime);},fadeStop:function(){this.fadeFrom.hide();this.fadeFrom=undefined;this.fadeTo=undefined;this.fadeOpacity=undefined;if(this.fadeTimeout)clearTimeout(this.fadeTimeout);this.fadeTimeout=undefined;this.parentUShow.transitComplete();}};var uSlide=function(elementId){this.initialize(elementId);}
uSlide.prototype={initialize:function(elementId){this.elementId=elementId;this.element=$(elementId);if(!this.element)return(false);this.delay=undefined;this.transition=undefined;this.transitionTime=undefined;},prepare:function(){if(!this.element)return(false);this.element.style.position='absolute';this.element.style.top='0px';this.element.style.left='0px';},hide:function(){if(!this.element)return(false);this.element.style.display='none';},show:function(){if(!this.element)return(false);this.element.style.display='';this.setOpacity(100);},onTop:function(){this.element.style.zIndex='1000';},onBottom:function(){this.element.style.zIndex='999';},setOpacity:function(opacity){if(document.all){this.element.style.filter="alpha(style=0,opacity:"+opacity+")";}
else{this.element.style.KHTMLOpacity=opacity/100;this.element.style.opacity=opacity/100;this.element.style.MozOpacity=opacity/100;}}};Function.prototype.bindAsEventListener=function(object){var __method=this;return function(event){return __method.call(object,event||window.event);}}
function ObserveEvent(element,name,observer){if(element.addEventListener){element.addEventListener(name,observer,false);}else if(element.attachEvent){element.attachEvent('on'+name,observer);}}
function $(){var elements=new Array();for(var i=0;i<arguments.length;i++){var element=arguments[i];if(typeof element=='string')
element=document.getElementById(element);if(arguments.length==1)
return element;elements.push(element);}
return elements;};