// variable globale
var _IE = false; // Internet Explorer
var _NE = false; // Netscape
var _OP = false; // Opera

var _dragdrop = false;	// vrai si drap&drop en cours
var curElement = null;	// element deplacer
var g_curX = 0;
var g_curY = 0;			// position de l'élément déplacer
var g_mouX, g_mouY;		// position de la souris
var g_grille = 24 ;	// taille de la grille

function set_on_grille(p) {
	set_left(p, get_g_left(p))
	set_top (p, get_g_top (p))
}

function get_g_left(p) { return (Math.floor((get_left(p)+g_grille/2)/g_grille)) * g_grille }
function get_g_top(p)  { return (Math.floor((get_top(p) +g_grille/2)/g_grille)) * g_grille }

function get_left(p) { return parseInt(p.style.left);}
function get_top(p)  { return parseInt(p.style.top); }
function set_left(p,left) { p.style.left = left;}
function set_top(p, top)  { p.style.top = top;  }
function set_width(p,  width) { p.style.width  = width;}
function set_height(p, height){ p.style.height = height;}

function set_display(p, b) { p.style.display = b ? "" : "none";}
function set_visible(p, b) { p.style.visibility = b ? "visible" : "hidden";}
function getObj(id) { return document.getElementById(id); }
function set_src(p,i) { p.src = i }

function preload() {
var d=document;
if(d.images)
{
	if(!d.MM_p)
		d.MM_p=new Array();
	var i,j=d.MM_p.length,
	a= preload.arguments;
	for(i=0; i<a.length; i++)
	{
		d.MM_p[j]=new Image;
		d.MM_p[j].src= "img/"+ a[i] + ".gif";
		++j;
	}
}
}


function initGlobal()
{
	initBrowser()
	initDragDrop()
}

// initialise le type de browser pour gerer les spécificités.
function initBrowser()
{
	//alert(navigator.appName)
	if (navigator.appName == "Netscape")
		_NE = true;
	else if (navigator.appName == "Microsoft Internet Explorer")
		_IE = true;
	else if (navigator.appName == "Opera")
		_NE = true;
}


// initialisation pour gestion du drag&drop
function initDragDrop()
{
	document.onmousedown = doMouseDown;
	document.onmousemove = doMouseMove;
	document.onmouseup   = doMouseUp;
}

//------------------------------------------------------------
// clic gauche sur la souris
//------------------------------------------------------------
function doMouseDown(e) {

	if (_NE)
	{
		if (e.target.id == "")
			return;
		curElement = document.getElementById(e.target.id) //event.srcElement;
		if (curElement)
		{
			if (curElement.id.charAt(0) != "_")
			{
				curElement = null;
				return;
			}
		}

		if (e.which == 1)	// left button
		{
			g_curX = parseInt(curElement.style.left) - e.clientX
			g_curY = parseInt(curElement.style.top)  - e.clientY

			g_mouX  = e.pageX; // + g_curX;
			g_mouY  = e.pageY; // + g_curY;
		}
		else if (e.which == 3) // right button
		{
		   curElement.style.zIndex = 6;
			doActionOnRightClick(curElement)
			curElement = null;
			return;
		}
	}
	else
	if (event.button==1 && event.srcElement.tagName=="IMG") // clic gauche sur la souris, selection d'une piece
	{
		//alert(event.srcElement.className)

		curElement = event.srcElement;
		g_curX = curElement.style.pixelLeft
		g_curY = curElement.style.pixelTop
		g_mouX = event.clientX;
		g_mouY = event.clientY;
	}
	else if (event.button==2)
	{
		curElement = event.srcElement;
	   curElement.style.zIndex = 6;
		doActionOnRightClick(curElement)
		curElement = null;
		return;
	}

   curElement.style.zIndex = 6;
	_dragdrop = true;
   return false;
}

//-------------------------------------------------------
// gere le deplacement d'une piece avec la souris
//-------------------------------------------------------
function doMouseMove(e)
{
	if (_dragdrop == false)
		return;

	var newleft=0;
	var newtop =0;

	if (curElement==null)
		return

	if (_NE)
	{
		newleft =  g_curX + e.pageX;
		newtop  =  g_curY + e.pageY;
	}
	else //if (event.button==1) perdu sur opera
	{
	  // position de l'echiquier
	  newleft = g_curX + event.clientX - g_mouX //document.all.idbody.scrollLeft
	  newtop  = g_curY + event.clientY - g_mouY  // + document.all.idbody.scrollTop
   }

	set_left(curElement, newleft+"px");
   set_top(curElement,  newtop+"px");
	return false;
}

//-------------------------------------------------------------
// souris relachée - le joueur pose la piece
//-------------------------------------------------------------
function doMouseUp()
{
	if (_dragdrop == true)
	{
		_dragdrop = false;

		if (curElement)
		{
			set_on_grille(curElement)
			curElement.style.zIndex = 5;
			curElement = null;
		}
	}
}
