
if(typeof VH=='undefined')
var VH={};(function(){var friend={_hookDomReady:function(ctx,funcName){ctx.ready=false;var func=function(){if(!ctx.ready){ctx.ready=true;ctx[funcName]();}};if(document.addEventListener){document.addEventListener('DOMContentLoaded',func,false);window.addEventListener('load',func,false);}
else if(window.attachEvent)
window.attachEvent('onload',function(){if(document.readyState=='complete')func();});else
window.onload=func;},_swapOutImg:function(img){var div=document.createElement('DIV'),ds=div.style,is=img.style;ds.width=img.offsetWidth+'px';ds.height=img.offsetHeight+'px';ds.overflow='hidden';if(is.position==''||is.position=='static'){is.position=ds.position='relative';}
else{ds.top=img.offsetTop+'px';ds.left=img.offsetLeft+'px';ds.position=is.position;}
img.parentNode.insertBefore(div,img);div.appendChild(img);is.top=is.left='0px';is.position='relative';return div;},_setOpacity:function(el,val){var s=el.style;s.opacity=s.MozOpacity=val;s.filter='Alpha(opacity='+(val*100)+')';}};VH.ImgFlipper=function(domNodeId,images,options){this.img=document.getElementById(domNodeId);this.images=images||[];options=options||{};this.autoStart=!(options.autoStart===false);this.flipTime=options.flipTime||5000;this.fadeInTime=Math.min(options.fadeInTime||1000,this.flipTime);this._init();};VH.ImgFlipper.prototype={start:function(){var self=this,func=function(){self._doFlip();};this.div=friend._swapOutImg(this.img);this._preFetchNextImage();func();this._flipThreadId=setInterval(func,this.flipTime);},stop:function(){clearTimeout(this._flipThreadId);this._stopFade();},_init:function(){this.imgIndex=0;this.imgHeight=this.imgHeight||this.img.offsetHeight;this.imgWidth=this.imgWidth||this.img.offsetWidth;this.img.style.zIndex=(this.img.style.zIndex||0)+1;if(navigator.userAgent.indexOf('MSIE 7')>=0)
this.img.attachEvent('onclick',function(){});if(this.autoStart)
friend._hookDomReady(this,'start');},_doFlip:function(){var img=this.img,uImg=this._uImg||this._createUnderImage(img);this.imgIndex=(this.imgIndex+1)%this.images.length;img.style.visibility='hidden';friend._setOpacity(img,0);img.src=this.images[this.imgIndex];this.img.width=this.imgWidth;this.img.height=this.imgHeight;img.style.visibility='visible';this._startFade();this._preFetchNextImage();},_preFetchNextImage:function(){var tmpImg=new Image();tmpImg.src=this.images[(this.imgIndex+1)%this.images.length];},_createUnderImage:function(img){var uImg=document.createElement('IMG'),us=uImg.style;us.position='absolute';us.left=us.top='0px';uImg.src=img.src;us.width=img.offsetWidth+'px';us.height=img.offsetHeight+'px'
us.zIndex=img.style.zIndex-1;img.offsetParent.appendChild(uImg);this._uImg=uImg;return uImg;},_setUnderImage:function(){var img=this.img,uImg=this._uImg||this._createUnderImage(img);uImg.style.visibility='hidden';uImg.src=img.src;uImg.style.width=img.style.width||img.offsetWidth+'px';uImg.style.height=img.style.height||img.offsetHeight+'px';uImg.style.visibility='visible';},_startFade:function(){this.fadeStart=new Date();this.fadeEnd=new Date(this.fadeStart.valueOf()+this.fadeInTime);var self=this,func=function(){self._doFade();};this._fadeThreadId=setInterval(func,60);},_doFade:function(){var elapsed=((new Date())-this.fadeStart)/(this.fadeEnd-this.fadeStart);if(elapsed>1)
this._stopFade();else
friend._setOpacity(this.img,elapsed);},_stopFade:function(){clearInterval(this._fadeThreadId);friend._setOpacity(this.img,1);this._setUnderImage();}};VH.ImgPanner=function(domNodeId,panImgUrl,options){this.img=document.getElementById(domNodeId);this.imgSrc=panImgUrl;options=options||{};this.autoStart=!(options.autoStart===false);this.panTime=options.panTime||15000;this._init();};VH.ImgPanner.prototype={start:function(){var self=this,func=function(){self._doPan();};this.div=friend._swapOutImg(this.img);this.img.src=this.imgSrc;this.img.style.width='';this._startPan();func();this._panThreadId=setInterval(func,30);},stop:function(){clearTimeout(this._panThreadId);},_init:function(){this.x=0;if(this.autoStart)
friend._hookDomReady(this,'start');},_startPan:function(){this._startTime=new Date();},_doPan:function(){var time=(Math.floor((new Date())-this._startTime)%(this.panTime*2))/this.panTime,mid=(this.img.offsetWidth-this.div.offsetWidth)/2,x=-Math.sin(Math.PI*time)*mid-mid;this.img.style.left=x+'px';}};})();
