var IDLE=0;
var ROLL_IN=1;
var BIG_PICKED=2;
var BIG_WIPEBACK=3;
var BIG_POPPER=4;
var BIG_WIPEFORWARD=5;
var SCROLL_POPPER=6;

var panelManager=false;

function init(){
	panelManager=new PanelManager();
	panelManager.startAnim(ROLL_IN);
}

function PanelManager(){
	var n;
	var b=document.getElementsByTagName('body')[0];
	var rc=document.getElementById('rightContent');
	var lcd=document.getElementById('leftContentClipped');
	this.tmr=false;
	this.tick=0;
	this.bigScroller=document.getElementById('bigScroller');
	this.bigOffsetReset=[18,192,369,546];
	this.bigOffset=[];
	this.bigPicked=-1;
	this.nextBigPicked=-1;
	this.mosImgOn=false;
	this.mosOpacity=0;
	this.mosOpDir=0;
	this.subTitleShowing=false;
	this.slideButtonsOn=false;
	this.slidePopPos=0;
	this.bsi=[];
	this.introTxtDiv=document.getElementById('introTxt');
	this.introTxtOp=1;

	this.wipeBack=document.createElement('div');
	this.wipeBack.id="wipeBack";
	rc.appendChild(this.wipeBack);

	this.rightPopperContent=document.createElement('div');
	this.rightPopperContent.id="rightPopperContent";
	rc.appendChild(this.rightPopperContent);

	this.rightPopperButton=document.createElement('img');
	this.rightPopperButton.src="/media/site/images/front-end/digital_homepage/btn_right_popper.gif";
	this.rightPopperButton.id="rightPopperScrollBtn";
	rc.appendChild(this.rightPopperButton);
	this.rightPopperButton.onclick=function(){panelManager.scrollPopper(-1)};

	this.leftPopperButton=document.createElement('img');
	this.leftPopperButton.src="/media/site/images/front-end/digital_homepage/btn_left_popper.gif";
	this.leftPopperButton.id="leftPopperScrollBtn";
	rc.appendChild(this.leftPopperButton);
	this.leftPopperButton.onclick=function(){panelManager.scrollPopper(1)};


	for(n=0;n<4;n++)
		this.bsi[n]=document.getElementById('bsi'+n);

	this.mosContainer=document.createElement('div');
	this.mosContainer.className="mosContainerDiv";
	this.mosImg=document.createElement('img');
	this.mosContainer.appendChild(this.mosImg);
	rc.appendChild(this.mosContainer);

	// Create image objects for cameras...
	var p,p2,c,c2,src;
	for(p in camData){
		c=camData[p];
		for(p2 in c){
			c2=c[p2];
			if(p2=='bigImage' || p2=='smallImage' || p2=='txtImage' || p2=='subTitleImage'){
				for(n=0;n<c2.length;n++){
					src=c2[n];
					if(p2=='smallImage'){
						c2[n]=document.createElement('div');
						c2[n].id="img_"+p+"_"+p2+"_"+n;
						c2[n].className=p2;
						var di=document.createElement('img');
						di.src=src;
						var t=document.createElement('span');
						t.innerHTML='<b>'+camData[p].smallImageTxt[n]+'</b> &raquo;';
						c2[n].appendChild(di);
						c2[n].appendChild(t);
						c2[n].onclick=function(){panelManager.pickSmall(this)};
						c2[n].onmouseover=function(){panelManager.mouseOverSmall(this)};
						c2[n].onmouseout=function(){panelManager.mouseOutSmall(this)};
						this.rightPopperContent.appendChild(c2[n]);
					}else{
						c2[n]=document.createElement('img');
						c2[n].id="img_"+p+"_"+p2+"_"+n;
						c2[n].className=p2;
						c2[n].src=src;
						if(p2=='bigImage'){
							c2[n].onclick=function(){panelManager.pickBigImg(this)};
						}
						rc.appendChild(c2[n]);
					}
				}
			}
		}
	}

	this.menuBtn=[];
	this.menuMoving=false;
	// Create menu buttons...
	var pth='/media/site/images/front-end/digital_homepage';
	for(n=0;n<5;n++){
		this.menuBtn[n]={
			'resetTop'	:	n*24,
			'currentTop':	(n*24)-250+((n-4)*50),
			'targetTop'	:	n*24,
			'opacity'	:	1,
			'el'	: document.createElement('div'),
			'back'	: document.createElement('img'),
			'btn'	: document.createElement('img')
		}
		this.menuBtn[n].el.className='btnDiv';
		if(n<4){
			this.menuBtn[n].btn.src=pth+'/btn_menu_'+n+'_active.gif';
			this.menuBtn[n].btn.style.zIndex=10;
			this.menuBtn[n].back.src=pth+'/btn_menu_'+n+'.gif';
			this.menuBtn[n].back.style.zIndex=20;
			this.menuBtn[n].back.style.cursor='pointer';
			this.menuBtn[n].back.onclick=function(){panelManager.pickMenu(this)};
			this.menuBtn[n].back.id='mb_'+n;
			this.menuBtn[n].el.appendChild(this.menuBtn[n].back);
			this.menuBtn[n].el.appendChild(this.menuBtn[n].btn);
		}
		this.menuBtn[n].el.style.top=this.menuBtn[n].currentTop+'px';
		lcd.appendChild(this.menuBtn[n].el);
	}

}

PanelManager.prototype.pickMenu=function(e){
	var pm=panelManager;
	if(pm.state!=IDLE)
		return;
	var f=e.id.split('_');
	if(f[1]==pm.bigPicked)
		return;
	pm.nextBigPicked=parseInt(f[1]);
	pm.startAnim(BIG_WIPEFORWARD);

}

PanelManager.prototype.mouseOutSmall=function(e){
	var pm=panelManager;
	var f=e.id.split('_');
	if(pm.mosImgOn)
		pm.mosOpDir=-0.1;
}

PanelManager.prototype.mouseOverSmall=function(e){
	var pm=panelManager;
	if(pm.state!=IDLE)
		return;
	var f=e.id.split('_');
	if(pm.mosImgOn)
		pm.setXY(pm.mosContainer,-300,0);
	else
		pm.mosImgOn=true;
	pm.mosContainer.innerHTML='<img src="'+pm.currentCamData.txtImage[parseInt(f[3])].src+'" />'+
								'<div class="mosBulletList">'+pm.currentCamData.txtImageTxt[parseInt(f[3])]+'</div>';
	pm.mosImg=pm.currentCamData.txtImage[parseInt(f[3])];
	pm.setOpacity(pm.mosContainer,pm.mosOpacity);
	pm.setXY(pm.mosContainer,8,0);
	pm.mosOpDir=0.1;
}

PanelManager.prototype.pickSmall=function(e){
	var f=e.id.split('_');
	var url=camData[f[1]].url[f[3]];
	location.href=url;
}

PanelManager.prototype.pickBigImg=function(e){
	var f=e.id.split('_');
	var url=camData[f[1]].mainURL;
	location.href=url;
}

PanelManager.prototype.pickBig=function(ix){
	var pm=panelManager;
	if(pm.bigPicked>-1 || pm.state!=IDLE)
		return;
	pm.bigPicked=ix;
	if(pm.mosImg){
		pm.setXY(pm.mosImg,-300,0);
		pm.mosImg=false;
	}
	pm.startAnim(BIG_PICKED);
}

PanelManager.prototype.setXY=function(el,x,y){
	el.style.left=Math.round(x)+"px";
	el.style.top=Math.round(y)+"px";
}

PanelManager.prototype.setSize=function(el,x,y){
	if(x<0)
		x=0;
	if(y<0)
		y=0;
	el.style.width=Math.round(x)+"px";
	el.style.height=Math.round(y)+"px";
}

PanelManager.prototype.startAnim=function(s){
	this.tick=0;
	this.state=s;
	if(!this.tmr)
		this.tmr=setInterval('panelManager.ticker()',20);
}

PanelManager.prototype.stopAnim=function(){
	this.tick=0;
	this.state=IDLE;
}

PanelManager.prototype.setOpacity=function(ob,v){
	if(document.all){
		ob.style.filter='Alpha(opacity='+Math.round(v*100)+')';
	}else{
		ob.style.opacity=v;
	}
}

PanelManager.prototype.showSlideButtons=function(){
	if(this.slideButtonsOn){
		this.leftPopperButton.style.display=(this.slidePopPos==0?'none':'block');
		this.rightPopperButton.style.display=(this.slidePopPos==-this.slideMaxPopPos?'none':'block');
	}else{
		this.leftPopperButton.style.display='none';
		this.rightPopperButton.style.display='none';
	}
}

PanelManager.prototype.scrollPopper=function(x){
	var n,pm=panelManager;
	if(pm.state==SCROLL_POPPER)
		return;
	pm.slideToPopPos=pm.slidePopPos+x;
	pm.startAnim(SCROLL_POPPER);
}

PanelManager.prototype.ticker=function(){
	var n,pm=panelManager;
	switch(pm.state){
		case ROLL_IN:
			if(pm.tick==0){
				for(n=0;n<4;n++){
					pm.bigOffset[n]=pm.bigOffsetReset[n];
					pm.setXY(pm.bsi[n],pm.bigOffset[n],14);
					pm.setOpacity(pm.bsi[n],1);
				}
				pm.setXY(pm.wipeBack,710,0);
				pm.bsLeft=680;
			}
			pm.bsLeft/=1.15;
			pm.setXY(pm.bigScroller,pm.bsLeft+8,0);
			if(pm.bsLeft<0.5)
				pm.stopAnim();
			break;
		case BIG_PICKED:
			if(pm.tick==0){
				pm.menuMoving=true;
				pm.explodeX=47;
			}
			var allOff=true;
			for(n=0;n<4;n++){
				if(n<pm.bigPicked){
					pm.bigOffset[n]-=pm.explodeX;
				}else if(n>pm.bigPicked){
					pm.bigOffset[n]+=pm.explodeX;
				}else{
					if(pm.bigOffset[n]>pm.bigOffsetReset[0]){
						var spd=(pm.bigOffset[n]-pm.bigOffsetReset[0])/4.5;
						if(spd<1)
							spd=1;
						pm.bigOffset[n]-=(spd>35?35:spd);
						allOff=false;
					}else if(pm.bigOffset[n]<pm.bigOffsetReset[0]){
						pm.bigOffset[n]=pm.bigOffsetReset[0];
					}
				}
				pm.setXY(pm.bsi[n],pm.bigOffset[n],14);
				if( (n!=pm.bigPicked) && (pm.bigOffset[n]>-152) && (pm.bigOffset[n]<732) ){
					allOff=false;
				}
			}
			pm.explodeX-=2.2;
			if(pm.explodeX<1)
				pm.explodeX=1;
			if(pm.introTxtOp>0){
				pm.introTxtOp-=0.1;
				pm.setOpacity(pm.introTxtDiv,pm.introTxtOp);
			}
			if(allOff){
				pm.startAnim(BIG_WIPEBACK);
				return;
			}
			break;
		case BIG_WIPEFORWARD:
			if(pm.tick==0){
				pm.slideButtonsOn=false;
				pm.showSlideButtons();
				pm.bigPicked=pm.nextBigPicked;
				for(n=0;n<5;n++)
					pm.menuBtn[n].targetTop=(n*24)+(n>pm.bigPicked?58:0);
				pm.menuMoving=true;
			}
			var spd=(750-pm.wipeX)/6;
			if(spd<1)
				spd=1;
			pm.wipeX+=spd;
			if(pm.wipeX>750)
				pm.wipeX=750;
			pm.setXY(pm.currentCamData.bigImage[0],pm.wipeX+8,0);
			pm.setXY(pm.wipeBack,pm.wipeX+259+8,0);
			pm.setSize(pm.wipeBack,428-pm.wipeX,172);
			for(n=0;n<pm.currentCamData.smallImage.length;n++){
				if(pm.popPos[n].x<pm.wipeX+8){
					pm.popPos[n].x=pm.wipeX+8;
					pm.setXY(pm.currentCamData.smallImage[n],pm.popPos[n].x,pm.popPos[n].y);
				}
			}
			if(pm.wipeX>200 && pm.subTitleShowing){
				pm.subTitleShowing=false;
				pm.currentCamData.subTitleImage[0].style.display="none";
			}
			if(pm.wipeX==750){
				pm.startAnim(BIG_WIPEBACK);
				return;
			}
			break;
		case BIG_WIPEBACK:
			if(pm.tick==0){
				pm.wipeX=710;
				pm.bigOpacity=1;
				pm.currentCamData=camData['type'+pm.bigPicked];
				for(n=0;n<5;n++)
					pm.menuBtn[n].targetTop=(n*24)+(n>pm.bigPicked?58:0);
				pm.menuMoving=true;
				pm.rightPopperContent.style.display="block";
			}
			var spd=pm.wipeX/9;
			if(spd<1)
				spd=1;
			pm.wipeX-=spd;
			if(pm.wipeX<0)
				pm.wipeX=0;
			pm.setXY(pm.currentCamData.bigImage[0],pm.wipeX+8,0);
			pm.setXY(pm.wipeBack,pm.wipeX+259+8,0);
			pm.setSize(pm.wipeBack,428-pm.wipeX,172);
			if(pm.nextBigPicked==-1 && pm.bigOpacity>0){
				pm.bigOpacity-=0.1;
				pm.setOpacity(pm.bsi[pm.bigPicked],pm.bigOpacity);
			}
			if(pm.wipeX<200 && !pm.subTitleShowing){
				pm.subTitleShowing=true;
				pm.currentCamData.subTitleImage[0].style.display="block";
			}
			if(pm.wipeX==0){
				pm.startAnim(BIG_POPPER);
				return;
			}
			break;
		case BIG_POPPER:
			if(pm.tick==0){
				var xInc=100;
				var wrapPos=Math.ceil(pm.currentCamData.smallImage.length/2)-1;
				if(wrapPos<3)
					wrapPos=3;
				this.slideButtonsOn=(wrapPos>3);
				this.slidePopPos=0;
				this.slideMaxPopPos=wrapPos-3;
				pm.popPos=[];
				var startY=0,startX=0,endY=(pm.currentCamData.smallImage.length<5?30:0);
				for(n=0;n<pm.currentCamData.smallImage.length;n++){
					pm.popPos[n]={
						'x'		:	startX,
						'y'		:	startY+170,
						'endY'	:	endY
					};
					startX+=xInc;
					startY+=400;
					if(n==wrapPos){
						startX=0;
						endY+=70;
						startY+=80;
					}
				}
			}
			var allOff=true,pp,spd;
			var len=(pm.tick+1<pm.currentCamData.smallImage.length?pm.tick+1:pm.currentCamData.smallImage.length);
			for(n=0;n<len;n++){
				pp=pm.popPos[n];
				spd=(pp.y-pp.endY)/5;
				if(spd<1)
					spd=1;
				pp.y-=spd;
				if(pp.y<pp.endY)
					pp.y=pp.endY;
				else
					allOff=false;
				pm.setXY(pm.currentCamData.smallImage[n],pp.x,pp.y);
			}
			if(allOff){
				for(n=0;n<len;n++)
					pm.popPos[n].y=pm.popPos[n].endY;	
				pm.showSlideButtons();
				pm.stopAnim();
				return;
			}
			break;
		case SCROLL_POPPER:
			if(pm.tick==0){
				
			}
			var amt=(pm.slideToPopPos-pm.slidePopPos)/6;
			if(Math.abs(amt)<0.005){
				pm.slidePopPos=pm.slideToPopPos;
				pm.showSlideButtons();
				pm.stopAnim();
				return;
			}
			pm.slidePopPos+=amt;
			var n,len=pm.currentCamData.smallImage.length,pp;
			for(n=0;n<len;n++){
				pp=pm.popPos[n];
				pm.setXY(pm.currentCamData.smallImage[n],pp.x+(pm.slidePopPos*100),pp.y);
			}
			break;
		default:
			break;
	}
	if(pm.menuMoving){
		pm.menuMoving=false;
		for(n=0;n<5;n++){
			if(pm.menuBtn[n].currentTop!=pm.menuBtn[n].targetTop){
				var spd=Math.abs(pm.menuBtn[n].targetTop-pm.menuBtn[n].currentTop)/6;
				if(spd<1)
					spd=1;
				else if(spd>18)
					spd=18;
				pm.menuBtn[n].currentTop+=(pm.menuBtn[n].currentTop<pm.menuBtn[n].targetTop?spd:-spd);
				if(Math.abs(pm.menuBtn[n].currentTop-pm.menuBtn[n].targetTop)<0.5)
					pm.menuBtn[n].currentTop=pm.menuBtn[n].targetTop;
				pm.menuMoving=true;
				if(n<4)
					pm.setXY(pm.menuBtn[n].el,0,pm.menuBtn[n].currentTop);
			}
			if(
				(pm.menuBtn[n].opacity<1 && n!=pm.bigPicked) ||
				(pm.menuBtn[n].opacity>0 && n==pm.bigPicked)
			){
				pm.menuMoving=true;
				if(pm.menuBtn[0].currentTop>-1){
					pm.menuBtn[n].opacity+=(n==pm.bigPicked?-0.05:0.05);
					pm.setOpacity(pm.menuBtn[n].back,pm.menuBtn[n].opacity);
				}
			}
			if(n<4){
				var height=(pm.menuBtn[n+1].currentTop-pm.menuBtn[n].currentTop)-2;
				pm.setSize(pm.menuBtn[n].el,220,height);
			}
		}
	}
	if(pm.mosImgOn){
		if(
			(pm.mosOpDir>0 && pm.mosOpacity<1) ||
			(pm.mosOpDir<0 && pm.mosOpacity>0)
		){
			pm.mosOpacity+=pm.mosOpDir;
			pm.setOpacity(pm.mosContainer,pm.mosOpacity);
			if(pm.mosOpacity<=0){
				pm.setXY(pm.mosContainer,-300,0);
				pm.mosImgOn=false;
			}
		}
	}
	if(pm.state!=IDLE)
		++pm.tick;
}
