// page_game.js

var mZonesLeft = 250;
var mRoom;
var mMaxZones = 12;
var mZone = new Array();
var mCurrZone;

var mBoardLeft = 93;
var mBoardBottom = 320;

var mBoardWidth = 108;
var mBoardHeight = 356;


var mAnimatePuckFuncID;
var mPctDecelV = .96;
var mPctDecelH = .99;

var mGameUIImagesFolder = "images_ui/games/shuffleboard/";
//----------------------------
Scr640x480 = 	{
				folder: "scrn640x480",
				roomHeight: 290,
				roomWidth: 599
				}
//----------------------------
Scr800x600 = 	{
				folder: "scrn800x600",
				roomHeight: 410,
				roomWidth: 759
				}
//----------------------------
Scr1024x768 = 	{
				folder: "scrn1024x768",
				roomHeight: 578,
				roomWidth: 983
				}
				
var mScrn = Scr800x600;
var mImages = mGameUIImagesFolder + mScrn.folder + "/";
var mDebug;

//-------------------------------------------------------------------------
function Init_GamePage()
	{
	BuildRoom();
/*	mDebug = new Debug();
	mDebug.CreateWindow(690,500);
	BuildTalkWindow();
	*/
	}

//---------------------------------------------------------------------------
function BuildRoom(){
	//-- Draw the Stage	 (i.e. Shuffleboard Room)
	mRoom = new Stage({
//		backgroundColor: "#b0b0b0",
		backgroundImage:"url("+mImages+"carpet.jpg)",
		scrnSize: _Scr800x600,
		width:3500
	});
	
	//-- Draw Grid
	mRoom.grid = new Grid({
		parent: mRoom.div,
		top: 21,
		left: 50,
		height: 310,
		width: 100,	
		fontColor: "green",
		cellCursor: "hand",
		border: "medium solid black"
//		getRowsFunc: GetTotalPlayersInRoom,
//		getRowFunc: GetPlayer
	});
	
	//-- Draw the Zones
	for (var zone = 0; zone < mMaxZones; ++zone) {
		zoneLeft = mZonesLeft + (zone * 290);
		mZone[zone] = new Div({
			parent: mRoom.div,
			left: zoneLeft,
			top: 10,
			height: mRoom.GetHeight() - 28,
			width: 280,
			border: "thin black"
		});
		
		//-- Place board pict in zone
		mZone[zone].img = new Image({
			parent: mZone[zone].elem,
			top: 0,
			left: 90,
			src: mImages+"board.gif"
		});
		
		//-- Initialze pucks for each board
		var pucks = mZone[zone].pucks = new Array();
		var dv = 2;
		
		for (var idx = 0; idx < 8; ++idx){
			var p = idx < 4 ? "red" : "blue";
			var path = mImages+"puck_"+p+".gif";
			var id = idx+"p"+zone;
			dv = dv==2 ? dv=-2 : dv=2;
			
			var pk = pucks[idx] = new Image({
				parent: mZone[zone].elem,
				top: mBoardBottom+5+dv,
				left: mBoardLeft+6 +(idx*16),
				src: path,
				onmousedown: DragObject_Begin,
				cursor: "pointer"
			});
			pk.hVelocity = 0;
			pk.vVelocity = 0;
		}
	}
}
	
/*
//---------------------------------------------------------------------------------------------------
function InitPuckElems()
	{
	for (var zone = 0; zone < mMaxZones; ++zone) 
		{
		var z = mZone[zone];
		for (idx = 0; idx < 8; ++idx) 
			{
			var obj = z.pucks[idx];
			var elem = obj.elem;
			elem.vVelocity = obj.vVelocity;
			elem.hVelocity = obj.hVelocity;
			}
		}
	}

//---------------------------------------------------------------------------------------------------
function ReleasePuck(elem)
	{
	if (elem.startReleaseTime > 0)
		{
		var id = elem.id.split("p");
		mCurrZone = id[1];

		var dX = elem.elEndLeft - elem.StartReleaseX;
		var dY = elem.elEndTop - elem.StartReleaseY;
		var elapsed = elem.tickerEnd - elem.startReleaseTime;
		var avr = dY/elapsed;

		// Initialize puck velocity 
		elem.vVelocity = (elem.elEndTop - elem.StartReleaseY) / 3;
		elem.hVelocity = (elem.elEndLeft - elem.StartReleaseX) * avr;

		mDebug.AddMsg("dX="+dX+"  dY="+dY+"  elapsed="+elapsed+"ms\nvPix/ms="+avr+"\n\n");
		if (elem.vVelocity != 0 || elem.hVelocity != 0) 
			{
			AnimatePucks();
			}
		}
	}

//---------------------------------------------------------------------------------------------------
function GetZone()
	{
	return mZone[mCurrZone];
	}
//---------------------------------------------------------------------------------------------------
function AdjustPuckVelocity(elem){
	// Take friction, board curvature, and collisions into account to calculate new volocity
	if (elem.vVelocity) {
		elem.vVelocity *= mPctDecelV;
		if (Math.abs(elem.vVelocity) < .5) 
			elem.vVelocity = 0;
	}
	if (elem.hVelocity) {
		elem.hVelocity *= mPctDecelH;
		if (Math.abs(elem.hVelocity) < .3) elem.hVelocity = 0;
	}
}
//---------------------------------------------------------------------------------------------------
function IsMoving(elem)
	{
	var rslt = (elem.vVelocity != 0 || elem.hVelocity != 0);
	return rslt;
	}
//---------------------------------------------------------------------------------------------------
function AreAnyMoving()
	{
	var zone = GetZone();
	for (idx = 0; idx < 8; ++idx)
		{
		if (IsMoving(zone.pucks[idx].elem)) return true;
		}
	return false;
	}
//---------------------------------------------------------------------------------------------------
function MovePuck(elem)
	{
	if (IsMoving(elem))
		{
		var s = elem.style;
		s.top = parseInt(s.top) + elem.vVelocity;
		s.left = parseInt(s.left) + elem.hVelocity;
		}
	}

//---------------------------------------------------------------------------------------------------
function MovePucks()
	{
	if (AreAnyMoving())
		{
		var zone = GetZone();
		for (idx = 0; idx < 8; ++idx)
			{
			elem = zone.pucks[idx].elem;
			MovePuck(elem);
			AdjustPuckVelocity(elem);
			}
		}
	else clearInterval(mAnimatePuckFuncID);
	}

//---------------------------------------------------------------------------------------------------
function AnimatePucks()
	{
	mAnimatePuckFuncID = setInterval("MovePucks()",33);
	}
	
	
//---------------------------------------------------------------------------------------------------
function BuildTalkWindow()
	{
	var panel = new Panel({
		id: "game_chat",
		top: 100,
		left: 190,
		height: 310,
		width: 420,
		backgroundColor: "blue"
	});
	new Grid({
		parent: panel.div,
		top: 40,
		left: 10,
		height: 240,
		width: 280,
		border: "thin dashed red",
		fontColor: "green",
		cellCursor: "hand"
	});
	new Image({
		top: 400,
		left: 490,
		src: "../photos/a.z.turnbo.jpg",
		onmousedown: Drag_Begin
	});
	new Image({
		top: 450,
		left: 490,
		src: "images_ui/loading_spiril.gif",
		onmousedown: Drag_Begin
	});
	new Text({
		top: 250,
		left: 330,
		height: 22,
		width: 510,
		text: "We're just getting started",
		textAlign: "left",
		fontSize: 40,
		fontWeight: "bold",
		color: "green",
		onmousedown: Drag_Begin
	});
	
	
	}
*/