// index_utils.js

var mTotalPhotos = 150;
var mBox;
var mWidth
var mHeight;
var mPhotoPanel;
var mMoveFunc;
var mFolder;
var mIsRunning = false;

var mCenterTop = 160;
var mCenterLeft = 160;
var mSpeedInterval = 20;

var mVisibleMugs;

// Motion Types
var mMove_BounceOffWalls = 0;
var mMove_FromCenter = 1;
var mMove_LeftToRight = 2;
var mMove_RightToLeft = 3;
var mMove_TopToBottom = 4;
var mMove_BottomToTop = 5;
var mMove_TopAndBottom = 6;
var mMove_LeftAndRight = 7;
var mMove_Random = 8;
var mMove_SingleFileLR = 9;

var mMoveFuncs = ["Move_BounceOffWalls", "Move_FromCenter", "Move_LeftToRight", "Move_RightToLeft",
					"Move_TopToBottom", "Move_BottomToTop","Move_TopAndBottom", "Move_LeftAndRight",
					"Move_Random", "Move_SingleFileLR"];
	
var mMoveType = mMove_FromCenter;

//----------------------------------------------------------------
function InitIndexPage()
	{
	if (GetElemByID("id_mug_fun_box"))
		{
		PrepMugFunBox();
		InitPhotoPositions();
		StartMovingFast();
		}
	}
//----------------------------------------------------------------
function PrepMugFunBox()
	{
	mBox = GetElemByID("id_mug_fun_box");
	if (mBox) BuildPhotoPanel();
	}

//--------------------------------------------------------------------------
function BuildPhotoPanel()
	{
	var s = mBox.style;
	var top = parseInt(s.top)+3;
	var left = parseInt(s.left)+3;
	var height = parseInt(s.height)-6;
	var width = parseInt(s.width)-6;
	mHeight = s.height;
	mWidth = s.width;

	mPhotoPanel = new Panel("id_photo_panel", top, left, height, width, "0", "none", "", "", null);
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
//		var top = GetRand(0, s.height-30);
//		var left = GetRand(0, s.width-30);
		var id = "img_"+cnt;

		var photo = mPhotoPanel.AddObject(id, TYPE_IMAGE,-1000,-1000,64,64,"","","");
		photo.SetDragTargetID(id+"_frame");
		}
	mPhotoPanel.Show();
	mFolder = new Folder("../sims_data/photo_thumbs", CreatedImageFolder);
//	mFolder = new Folder("../photos", CreatedImageFolder);
	
	mCtlPanel = new Panel("id_ctls", top+height+10, left, 24, width, "0", "none", "", "", null);
	
	for (cnt = 1; cnt <= 20; ++cnt)
		{
		var but = mCtlPanel.AddObject(cnt+"_but", TYPE_STD_BUTTON,0,-5+cnt*16,16,16," "," "," ");	
		switch(cnt)
			{
			case 1:		but.SetButColor("red");		but.SetChangeFunc("StopMoving"); break;
			case 2:		but.SetButColor("yellow");	but.SetChangeFunc("StartMovingSlow"); break;
			case 3:		but.SetButColor("green");	but.SetChangeFunc("StartMovingFast"); break;
			case 4:		but.SetButColor("white");	but.SetChangeFunc("ShowRandomPhotos"); break;
			case 5:		but.SetButColor("blue");	but.SetChangeFunc("Set_Move_Type"); break;
			case 6:		but.SetButColor("#ff9933");	but.SetChangeFunc("Set_Move_Type"); break;
			case 7:		but.SetButColor("#00ffcc");	but.SetChangeFunc("Set_Move_Type"); break;
			case 8:		but.SetButColor("#ff0066");	but.SetChangeFunc("Set_Move_Type"); break;
			case 9:		but.SetButColor("#ffccff");	but.SetChangeFunc("Set_Move_Type"); break;
			case 10:	but.SetButColor("#ccff00");	but.SetChangeFunc("Set_Move_Type"); break;
			case 11:	but.SetButColor("#999966");	but.SetChangeFunc("Set_Move_Type"); break;
			case 12:	but.SetButColor("#894e00");	but.SetChangeFunc("Set_Move_Type"); break;
			case 13:	but.SetButColor("#cc5588");	but.SetChangeFunc("Set_Move_Type"); break;
			case 14:	but.SetButColor("#005588");	but.SetChangeFunc("Set_Move_Type"); break;
			}
		}
	mCtlPanel.Show();
	}
//--------------------------------------------------------------------------
function CreatedImageFolder()
	{
	ShowRandomPhotos();
	}
//--------------------------------------------------------------------------
function ShowRandomPhotos()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var path = mFolder.GetRandomImage();
		GetElemByID("img_"+cnt).obj.SetSrc(path);
		}
	}
//--------------------------------------------------------------------------
function SwapRandomMugs(total)
	{
	for (var cnt = 1; cnt <= total; ++cnt)
		{
		var path = mFolder.GetRandomImage();
		var idx = GetRand(1,mTotalPhotos);
		GetElemByID("img_"+idx).obj.SetSrc(path);
		}
	}

//----------------------------------------------
function InitPhotoPositions()
	{
	var s;
	var idx;

	switch(mMoveType)
		{
		case mMove_FromCenter:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = mCenterLeft;
				s.top = mCenterTop;
				}
			break;
		case mMove_BounceOffWalls:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = 0;
				s.top = 0;
				}
			break;
		case mMove_LeftToRight:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = -100;
				s.top = GetRand(0,330);
				}
			break;
		case mMove_RightToLeft:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = 400;
				s.top = GetRand(0,330);
				}
			break;
		case mMove_TopToBottom:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = GetRand(0,330);
				s.top = -100;
				}
			break;
		case mMove_BottomToTop:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = GetRand(0,330);
				s.top = 400;
				}
			break;
		case mMove_TopAndBottom:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = GetRand(0,330);
				if (GetRand(0,1)==1) s.top = 400;
				else s.top = -100;
				}
			break;
		case mMove_LeftAndRight:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.top = GetRand(0,330);
				if (GetRand(0,1)==1) s.left = 400;
				else s.left = -100;
				}
			break;
		case mMove_Random:
			for (idx = 1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.top = GetRand(0,330);
				s.left = GetRand(0,330);
				}
			break;
		case mMove_SingleFileLR:
			idx = 0;
			for (var row = 0; row < 340; row += 50)
				{
				if (row%2)
					{
					for (var col = 0; col < 340; col += 50)
						{
						++idx;
						s = GetElemByID("img_"+idx+"_frame").style;
						s.top = row;
						s.left = col;
						}
					}
				else	
					{
					for (var col = 340; col > -50; col -= 50)
						{
						++idx;
						s = GetElemByID("img_"+idx+"_frame").style;
						s.top = row;
						s.left = col;
						}
					}
				}
			mVisibleMugs = idx;
			
			for (i = idx+1; idx <= mTotalPhotos; ++idx)
				{
				s = GetElemByID("img_"+idx+"_frame").style;
				s.left = -100;
				}
			break;
		}
	}
//----------------------------------------------
function Set_Move_Type(elem)
	{
	StopMoving();
	mMoveType = parseInt(elem.id)-5;
	InitPhotoPositions();
	ShowRandomPhotos();
	StartMoving(mSpeedInterval);
	}
//----------------------------------------------
function StartMoving(interval)
	{
	mSpeedInterval = interval;
	StopMoving();
	InitVelocities();
	mIsRunning = true;

	mMoveFunc = setInterval ( mMoveFuncs[mMoveType]+"()", interval );
	}
//----------------------------------------------
function StartMovingFast()
	{
	StartMoving(20);
	}
//----------------------------------------------
function StartMovingSlow()
	{
	StartMoving(150);
	}
//----------------------------------------------
function StopMoving()
	{
	if (mIsRunning)
		{
		mIsRunning = false;
		clearInterval(mMoveFunc);
		}
	}

//-----------------------------------------------------------------
function InitVelocities()
	{
	var idx;
	var elem;
	
	switch(mMoveType)
		{
		case mMove_FromCenter:
		case mMove_BounceOffWalls:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = GetRand(-20,20,0);
				elem.vVelocity = GetRand(-20,20,0);
				}
			break;
		case mMove_LeftToRight:
		case mMove_LeftAndRight:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = GetRand(2,20);
				elem.vVelocity = 0;
				}
			break;
		case mMove_RightToLeft:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = -GetRand(2,20);
				elem.vVelocity = 0;
				}
			break;
		case mMove_TopToBottom:
		case mMove_TopAndBottom:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = 0;
				elem.vVelocity = GetRand(2,20);;
				}
			break;
		case mMove_BottomToTop:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = 0;
				elem.vVelocity = -GetRand(2,20);
				}
		case mMove_Random:
		case mMove_SingleFileLR:
			for (var idx = 1; idx <= mTotalPhotos; ++idx)
				{
				elem = GetElemByID("img_"+idx+"_frame");
				elem.hVelocity = 1;
				}
			break;
		}
	}
	
//-----------------------------------------------------------------
function Move_BounceOffWalls()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left) + elem.hVelocity;
		if (left < 0 || left > 310)
			{
			elem.hVelocity = -elem.hVelocity;
			left = parseInt(style.left) + elem.hVelocity;	
			}

		var top = parseInt(style.top) + elem.vVelocity;
		if (top < 0 || top > 310)
			{
			elem.vVelocity = -elem.vVelocity;
			top = parseInt(style.top) + elem.hVelocity;	
			}

		elem.style.left = left;
		elem.style.top = top;
		}
	}
//-----------------------------------------------------------------
function Move_FromCenter()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left) + elem.hVelocity;
		if (left < -20 || left > 380)
			{
			elem.hVelocity = GetRand(-20,20);
			elem.vVelocity = GetRand(-20,20);
			left = mCenterLeft;
			top = mCenterTop;
			}

		var top = parseInt(style.top) + elem.vVelocity;
		if (top < -20 || top > 380)
			{
			elem.hVelocity = GetRand(-20,20);
			elem.vVelocity = GetRand(-20,20);
			left = mCenterLeft;
			top = mCenterTop;
			}

		elem.style.left = left;
		elem.style.top = top;
		}
	}
//-----------------------------------------------------------------
function Move_LeftToRight()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left) + elem.hVelocity;
		var top = parseInt(style.top);
		if (left > 380)
			{
			left = -100;
			top = GetRand(0,330);
			elem.hVelocity = GetRand(2,20,0);
			}
		elem.style.top = top;
		elem.style.left = left;
		}
	}

//-----------------------------------------------------------------
function Move_RightToLeft()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left) + elem.hVelocity;
		var top = parseInt(style.top);
		if (left < -80)
			{
			left = 400;
			top = GetRand(0,330);
			elem.hVelocity = -GetRand(2,20,0);
			}
		elem.style.top = top;
		elem.style.left = left;
		}
	}
//-----------------------------------------------------------------
function Move_TopToBottom()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left);
		var top = parseInt(style.top) + elem.vVelocity;
		if (top > 400)
			{
			top = -100;
			left = GetRand(0,330);
			elem.vVelocity = GetRand(2,20,0);
			}
		elem.style.top = top;
		elem.style.left = left;
		}
	}
//-----------------------------------------------------------------
function Move_BottomToTop()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left);
		var top = parseInt(style.top) + elem.vVelocity;
		if (top < 0)
			{
			top = 400;
			left = GetRand(0,330);
			elem.vVelocity = -GetRand(2,20,0);
			}
		elem.style.top = top;
		elem.style.left = left;
		}
	}
//-----------------------------------------------------------------
function Move_TopAndBottom()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var left = parseInt(style.left);
		var top = parseInt(style.top) + elem.vVelocity;
		
		if (top > 400) 
			{
			left = GetRand(0,330);
			elem.vVelocity = -GetRand(2,20,0);	
			}
		else if (top < 0) 
			{
			left = GetRand(0,330);
			elem.vVelocity = GetRand(2,20,0);	
			}

		elem.style.top = top;
		elem.style.left = left;
		}
	}
//-----------------------------------------------------------------
function Move_LeftAndRight()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var id = "img_"+cnt+"_frame";
		var elem = GetElemByID(id);
		var style = elem.style;

		var top = parseInt(style.top);
		var left = parseInt(style.left) + elem.hVelocity;
		
		if (left > 400) 
			{
			top = GetRand(0,330);
			elem.hVelocity = -GetRand(2,20,0);	
			}
		else if (left < 0) 
			{
			top = GetRand(0,330);
			elem.hVelocity = GetRand(2,20,0);	
			}

		elem.style.top = top;
		elem.style.left = left;
		}
	}
//-----------------------------------------------------------------
function Move_Random()
	{
	for (var cnt = 1; cnt <= mTotalPhotos; ++cnt)
		{
		var elem = GetElemByID("img_"+cnt+"_frame");
		if (elem.hVelocity > 0)
			{
			var s = elem.style;
			s.top = GetRand(0,330);
			s.left = GetRand(0,330);
			}
		}
	}
//-----------------------------------------------------------------
function Move_SingleFileLR()
	{
	var firstElemS = GetElemByID("img_1_frame").style;

	for (var idx = 1; idx <= mTotalPhotos-1; ++idx)
		{
		var destElem = GetElemByID("img_"+idx+"_frame");
		var srcElem = GetElemByID("img_"+(idx+1)+"_frame");
		if (destElem.hVelocity > 0)
			{
			var destS = destElem.style;
			var srcS = srcElem.style;
			destS.top = srcS.top;
			destS.left = srcS.left;
			}
		}
	destElem = GetElemByID("img_"+idx+"_frame");
	destS = destElem.style;
	destS.top = firstElemS.top;
	destS.left = firstElemS.left;
	}
	
	
	
