// JavaScript Document
DHTMLGoodies.ChessRollOver = function(chessFenObj) {
	this.cfo = chessFenObj;
}

DHTMLGoodies.ChessRollOver.prototype = {
	setPopIn : function (ancorId, boardId, fenInfo) {
		if (!document.getElementById(boardId) || !document.getElementById(ancorId)) {
			return;
		}

		document.getElementById(boardId).style.display = 'none';
		document.getElementById(boardId).style.position = 'absolute';
		document.getElementById(boardId).style.overflow = 'hidden';
		document.getElementById(boardId).style.width = ((this.cfo.squareSize*8)+2) + 'px';
		document.getElementById(boardId).style.height = ((this.cfo.squareSize*8)+2) + 'px';

		this.cfo.loadFen(fenInfo, boardId);

		document.getElementById(ancorId).onmouseover = ChessRollOverE.showChessPopIn;
		//document.getElementById(ancorId).onmousemove = ChessRollOverE.moveChessPopIn;
		document.getElementById(ancorId).onmouseout = ChessRollOverE.hideChessPopIn;

		ChessRollOverE.ChessPopIns[ChessRollOverE.ChessPopIns.length] =
				{'anchorId' : ancorId, 'boardId' : boardId };
	}
};

DHTMLGoodies.ChessRollOverEngine = function() {
	this.ChessPopIns = Array();
	this.offsetY = 16;
	this.offsetX = 16;
};

DHTMLGoodies.ChessRollOverEngine.prototype = {
	showChessPopIn : function(e) {
		if (!e)
			e = window.event;

		var elem = (e.target) ? e.target : e.srcElement;

		var x, y;

		if (typeof(e.pageX) == 'number') {
			x = e.pageX + ChessRollOverE.offsetX;
			y = e.pageY + ChessRollOverE.offsetY;
		}
		else {
			if (typeof(e.clientX) == 'number') {
				x = (e.clientX + document.documentElement.scrollLeft) + ChessRollOverE.offsetX;
				y = (e.clientY + document.documentElement.scrollTop) + ChessRollOverE.offsetY;
			}
			else {
				x = 0;
				y = 0;
			}
		}

		var board = ChessRollOverE.getBoardByAnchorId(elem.id);
		if (board) {
			board.style.top = y + 'px';
			board.style.left = x + 'px';
			board.style.display = 'block';
		}
	},

	hideChessPopIn : function(e) {
		if (!e)
			e = window.event;

		var elem = (e.target) ? e.target : e.srcElement;

		var boardId = ChessRollOverE.getBoardByAnchorId(elem.id);

		if (boardId) {
			boardId.style.display = 'none';
		}
	},

	moveChessPopIn : function(e) {
		if (!e)
			e = window.event;

		var elem = (e.target) ? e.target : e.srcElement;

		var x, y;

		if (typeof(e.pageX) == 'number') {
			x = e.pageX + ChessRollOverE.offsetX;
			y = e.pageY + ChessRollOverE.offsetY;
		}
		else {
			if (typeof(e.clientX) == 'number') {
				x = (e.clientX + document.documentElement.scrollLeft) + ChessRollOverE.offsetX;
				y = (e.clientY + document.documentElement.scrollTop) + ChessRollOverE.offsetY;
			}
			else {
				x = 0;
				y = 0;
			}
		}

		var board = ChessRollOverE.getBoardByAnchorId(elem.id);

		if (board) {
			board.style.top = y + 'px';
			board.style.left = x + 'px';
		}
	},

	getBoardByAnchorId : function(id) {
		for (var n=0; n < ChessRollOverE.ChessPopIns.length; n++) {
			if (id == ChessRollOverE.ChessPopIns[n].anchorId)
				return document.getElementById(ChessRollOverE.ChessPopIns[n].boardId);
		}
		return false;
	}
};

ChessRollOverE = new DHTMLGoodies.ChessRollOverEngine();