var autoplay = 1;

var curPos = 1;
var maxPos = 1;

var curPage = 1;
var maxPage = 1;
var maxApps = 1;
var danglers= 0;

var leftState		= leftDisabled;
var rightState		= rightDisabled;
var playState		= pauseEnabled;

var orient = 'V';
var sWidth = 200;

var mDX		= 0;
var mDown	= 0;
var mCX		= 0;

var navHide			= 'url(consult_pkg/nHide.png)';
var navLeft			= 'url(consult_pkg/nLeftEnabled.png)';
var navLeftHover	= 'url(consult_pkg/nLeftEnabled.png)';
var navRight		= 'url(consult_pkg/nRightEnabled.png)';
var navRightHover	= 'url(consult_pkg/nRightEnabled.png)';
var leftHover		= 'url(consult_pkg/cLeftEnabled.png)';
var leftEnabled		= 'url(consult_pkg/cLeftEnabled.png)';
var leftDisabled	= 'url(consult_pkg/cLeftDisabled.png)';
var rightHover		= 'url(consult_pkg/cRightEnabled.png)';
var rightEnabled	= 'url(consult_pkg/cRightEnabled.png)';
var rightDisabled	= 'url(consult_pkg/cRightDisabled.png)';
var playHover		= 'url(consult_pkg/cPlayEnabled.png)';
var playEnabled		= 'url(consult_pkg/cPlayEnabled.png)';
var playDisabled	= 'url(consult_pkg/cPlayDisabled.png)';
var pauseHover		= 'url(consult_pkg/cPauseEnabled.png)';
var pauseEnabled	= 'url(consult_pkg/cPauseEnabled.png)';
var pauseDisabled	= 'url(consult_pkg/cPauseDisabled.png)';

//preload all these images
jQuery("<img>").attr('src','consult_pkg/nHide.png')
jQuery("<img>").attr('src','consult_pkg/nLeftEnabled.png')
jQuery("<img>").attr('src','consult_pkg/nRightEnabled.png')
jQuery("<img>").attr('src','consult_pkg/cLeftEnabled.png')
jQuery("<img>").attr('src','consult_pkg/cLeftDisabled.png')
jQuery("<img>").attr('src','consult_pkg/cRightEnabled.png')
jQuery("<img>").attr('src','consult_pkg/cRightDisabled.png')
jQuery("<img>").attr('src','consult_pkg/cPlayEnabled.png')
jQuery("<img>").attr('src','consult_pkg/cPlayDisabled.png')
jQuery("<img>").attr('src','consult_pkg/cPauseEnabled.png')
jQuery("<img>").attr('src','consult_pkg/cPauseDisabled.png')

function movePanelSlider() {
	var leftVal = -735*(curPage-1);
	if(curPage == maxPage && danglers) { leftVal += (5-danglers)*147; }
	$("#panelSlider").animate({left:leftVal+'px'},500);
}

function updatePanelButtons() {
	if(curPage == 1)		{ $("#panelNav div.btnLeft").css('backgroundImage',navHide);	}
	else					{ $("#panelNav div.btnLeft").css('backgroundImage',navLeft);	}
	if(curPage == maxPage)	{ $("#panelNav div.btnRight").css('backgroundImage',navHide);	}
	else					{ $("#panelNav div.btnRight").css('backgroundImage',navRight);	}
}

function changeApp() {
	$("#panelSlider div.triangle").animate({left:($(this).position().left+64)+'px'},700);
	$("#panelContent").load('apps/'+$(this).attr('rel')+'/page.html',null,initPhone);
	if(!(autoplay)) { autoplay = 1; setTimeout('autoScroll();',4000); }
}

function setController() {
	if(maxPos == 1) {
		leftState = leftDisabled;
		rightState = rightDisabled;
	} else {
		if(curPos == 1)			{ leftState  = leftDisabled;  }
		else					{ leftState  = leftEnabled;   }
		if(curPos == maxPos)	{ rightState = rightDisabled; }
		else					{ rightState = rightEnabled;  }
	}
	if(autoplay)	{ playState = pauseEnabled; }
	else			{ playState = playEnabled; }
	$("#controller span.leftButton").css('background-image',leftState);
	$("#controller span.rightButton").css('background-image',rightState);
	$("#controller span.playButton").css('background-image',playState);
	statusBar();
}

function left() {
	if(curPos != 1) { curPos--; }
	autoplay = 0; moveSlider();
}

function right() {
	if(curPos != maxPos) { curPos++; }
	autoplay = 0; moveSlider();
}

function playpause() {
	if(autoplay)	{ autoplay = 0; }
	else			{ autoplay = 1; autoScroll(); }
	setController();
}

function moveSlider(speed) {
	if(!speed) { speed = 500 }
	$("#slider").animate({left:(-1*sWidth*(curPos-1))+'px'},speed);
	setController();
}

function statusBar() {
	var i;
	var r = "";
	for(i=1;i<=maxPos;i++) {
		r = r + '<span class="';
		if(i == curPos) { r = r + "active"; } else { r = r + "inactive"; }
		r = r + '" rel="'+i+'"></span>';
	}
	$("#statusbar").html(r);
	$("#statusbar span.inactive").click(function(){ curPos = $(this).attr('rel'); moveSlider(); })
}

function autoScroll() {
	if(maxPos == 1) { return }
	if(autoplay) {
		if(mDown == 0) {
			if(curPos == maxPos)	{ curPos = 1; moveSlider(500);	}
			else					{ curPos++; moveSlider(1000);	}
		}
		setTimeout('autoScroll();',6000);
	}
}

function initPhone() {
	//reset some corruptable variables
	curPos	= 1;
	orient	= 'V';
	sWidth	= 200;
	mDX		= 0;
	mDown	= 0;
	mCX		= 0;

	$("#controller").fadeOut(200);

	//determine iphone orientation
	maxPos = ($("#slider span.screenV").size());
	if(maxPos == 0) {
		orient = 'H';
		sWidth = 300;
		maxPos = ($("#slider span.screenH").size());
		$("#appSidebar").css('width','300px');
	}
	$("#slider").css({left:'0px',width:(maxPos*sWidth)+'px'});
	setController();

	//Define click callbacks for the controller buttons
	$("#controller span.leftButton").click(left);
	$("#controller span.rightButton").click(right);
	$("#controller span.playButton").click(playpause);
	
	//Code to hide/show the controller/statusbar
	$("#iphone"+orient).mouseenter(function() {
		$("#controller").fadeIn(200);
		$("#statusbar").animate({height:'20px',top:'-20px'},200);
	});
	$("#iphone"+orient).mouseleave(function() {
		$("#controller").fadeOut(200);
		$("#statusbar").animate({height:'0px',top:'0px'},200);
	});
	
	//Controller Rollover/Hover Code
	$("#controller span.leftButton").hover(function(){ if(leftState == leftEnabled) {
		$("#controller span.leftButton").css('background-image',leftHover);
	}}, function() {
		$("#controller span.leftButton").css('background-image',leftState);
	});
	
	$("#controller span.rightButton").hover(function() { if(rightState == rightEnabled) {
		$("#controller span.rightButton").css('background-image',rightHover);
	}}, function() {
		$("#controller span.rightButton").css('background-image',rightState);
	});
	
	$("#controller span.playButton").hover(function() {
		if(playState == playEnabled) { $("#controller span.playButton").css('background-image',playHover); }
		if(playState == pauseEnabled) { $("#controller span.playButton").css('background-image',pauseHover); }
	}, function() {
		$("#controller span.playButton").css('background-image',playState);
	});
	
	//Mouse-based Slider Code
	$("#slider").mousedown(function(e) { mDX = e.pageX; mDown = 1; });
	$("").mousemove(function(e) { if(mDown) {
		mCX = e.pageX - mDX;
		$("#slider").css('left',((-1*sWidth*(curPos-1))+mCX)+'px');
		if(mCX > 50 && curPos > 1) 				{ mDown = 0; curPos--; autoplay=0; moveSlider(200); }
		else if(mCX < -50 && curPos < maxPos)	{ mDown = 0; curPos++; autoplay=0; moveSlider(200); }
		else if(mCX > 180 && curPos == 1)		{ mDown = 0; moveSlider(200); }
		else if(mCX < -180 && curPos == maxPos)	{ mDown = 0; moveSlider(200); }
	}});
	$("").mouseup(function(e) { if(mDown) { mCX = e.pageX - mDX; mDown = 0; moveSlider(100); } });
}

$(document).ready(function(){
	maxApps = $("#panelSlider div.app").length;
	maxPage = Math.ceil(maxApps / 5);
	danglers = maxApps % 5;
	$("#panelSlider").css('width',((maxApps*147)+20)+'px');
	
	//Navigation Rollover/Hover Code
	$("#panelNav div.btnLeft").hover(function(){
		if(curPage != 1)		{ $("#panelNav div.btnLeft").css('backgroundImage',navLeftHover);	}
	},function(){
		if(curPage != 1)		{ $("#panelNav div.btnLeft").css('backgroundImage',navLeft);	}
	});

	$("#panelNav div.btnRight").hover(function(){
		if(curPage != maxPage)	{ $("#panelNav div.btnRight").css('backgroundImage',navRightHover);	}
	},function(){
		if(curPage != maxPage)	{ $("#panelNav div.btnRight").css('backgroundImage',navRight);	}
	});
	
	//define click functions/hooks for the nav buttons
	$("#panelNav div.btnLeft").click(function()	{	if(curPage > 1){ curPage--; movePanelSlider(); updatePanelButtons(); }});
	$("#panelNav div.btnRight").click(function(){	if(curPage < maxPage) { curPage++; movePanelSlider(); updatePanelButtons(); }});
	$("#panelSlider div.app").click(changeApp);
	
	//create simple rollover effect:
	$("#panelSlider .app").hover(function()	{	$(this).find("div.name").css({color:'#b71100'});	}
								,function()	{	$(this).find("div.name").css({color:'#000000'});	});
	
	updatePanelButtons();
	
	$("#panelContent").load('apps/'+defaultPage+'/page.html',null,function() { initPhone(); setTimeout('autoScroll();',4000); });
});
