document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
/*
if(iMouseDown && !lMouseState) // button just clicked!
if(!iMouseDown && lMouseState) // button just released!
*/
var mouseOffset = null;
var iMouseDown  = false;
var lMouseState = false;

var dragObject     = null;
var nbClicks = 0;
var callah = "";
var rcol = "001D4F";
var keep_ratio = false;

function getPos (elem) {
    var pos={'r':0,'l':0,'t':0,'b':0};
    var tmp=elem;
 
    do {
        pos.l += tmp.offsetLeft;
        tmp = tmp.offsetParent;
    } while( tmp !== null );
    pos.r = pos.l + elem.offsetWidth;
 
    tmp=elem;
    do {
        pos.t += tmp.offsetTop;
        tmp = tmp.offsetParent;
    } while( tmp !== null );
    pos.b = pos.t + elem.offsetHeight;
 
    return pos;
}

function drawMask (mousePos,mleft,mtop,limit_left,limit_top,limit_right,limit_bottom) {
	document.getElementById("mask").style.borderColor = "#"+rcol.toString();
	var slave_x = false;
	var slave_y = false;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		if (parseInt(rat[0]) <= parseInt(rat[1]))
			slave_y = true;
		else
			slave_x = true;
	}
	if (mousePos.x > mleft && mousePos.y > mtop) { //------------------------------ Quartier SUD-EST
		var larg = mousePos.x - mleft;
		var haut = mousePos.y - mtop;
		// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
		if ((!slave_x) && (!slave_y)) {
			// Axe des X
			if (mousePos.x > limit_right)
				larg = limit_right - mleft;
			// Axe des Y
			if (mousePos.y > limit_bottom)
				haut = limit_bottom - mtop;
		}
		// Le ratio est fixé, l'axe des X suit celui des Y
		if ((slave_x) && (!slave_y)) {
			// Axe des Y
			if (mousePos.y > limit_bottom)
				haut = limit_bottom - mtop;
			// Axe des X
			larg = Math.round(haut*ratio);
			var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
			if (larg > max_W) {
				larg = max_W;
				haut = Math.round(larg/ratio);
			}
		}
		// Le ratio est fixé, l'axe des Y suit celui des X
		if ((!slave_x) && (slave_y)) {
			// Axe des X
			if (mousePos.x > limit_right)
  			larg = limit_right - mleft;
			// Axe des Y
			haut = Math.round(larg/ratio);
			var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
			if (haut > max_H) {
				haut = max_H;
				larg = Math.round(haut*ratio);
			}
		}
		
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("mask").style.left = mleft.toString()+"px";
		document.getElementById("mask").style.top = mtop.toString()+"px";
	}
	else if (mousePos.x < mleft && mousePos.y < mtop) { //------------------------------ Quartier NORD-OUEST
		var larg = mleft - mousePos.x;
		var haut = mtop - mousePos.y;
		mleft -= larg;
		mtop -= haut;
		// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
		if ((!slave_x) && (!slave_y)) {
			// Axe des X
			if (mousePos.x < limit_left) {
				larg = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
				mleft = limit_left;
			}
			// Axe des Y
			if (mousePos.y < limit_top) {
				haut = document.getElementById("maskForm").elements.maskTop.value-limit_top;
				mtop = limit_top;
			}
		}
		// Le ratio est fixé, l'axe des X suit celui des Y
		if ((slave_x) && (!slave_y)) {
			// Axe des Y
			if (mousePos.y < limit_top) {
				haut = document.getElementById("maskForm").elements.maskTop.value-limit_top;
				mtop = limit_top;
			}
			// Axe des X
			larg = Math.round(haut*ratio);
			var max_W = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
			if (larg > max_W) {
				larg = max_W;
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
				haut = Math.round(larg/ratio);
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
			}
			else {
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
			}
		}
		// Le ratio est fixé, l'axe des Y suit celui des X
		if ((!slave_x) && (slave_y)) {
			// Axe des X
			if (mousePos.x < limit_left) {
				larg = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
				mleft = limit_left;
			}
			// Axe des Y
			haut = Math.round(larg/ratio);
			var max_H = document.getElementById("maskForm").elements.maskTop.value-limit_top;
			if (haut > max_H) {
				haut = max_H;
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
				larg = Math.round(haut*ratio);
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
			}
			else {
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
			}
		}
		
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("mask").style.left = mleft.toString()+"px";
		document.getElementById("mask").style.top = mtop.toString()+"px";
	}
	else if (mousePos.x > mleft && mousePos.y < mtop) { //------------------------------ Quartier NORD-EST
		var larg = mousePos.x - mleft;
		var haut = mtop - mousePos.y;
		mtop -= haut;
		// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
		if ((!slave_x) && (!slave_y)) {
			// Axe des X
			if (mousePos.x > limit_right)
				larg = limit_right - mleft;
			// Axe des Y
			if (mousePos.y < limit_top) {
				//haut = mtop - limit_top;
				haut = document.getElementById("maskForm").elements.maskTop.value-limit_top;
				mtop = limit_top;
			}
		}
		// Le ratio est fixé, l'axe des X suit celui des Y
		if ((slave_x) && (!slave_y)) {
			// Axe des Y
			if (mousePos.y < limit_top) {
				//haut = mtop - limit_top;
				haut = document.getElementById("maskForm").elements.maskTop.value-limit_top;
				mtop = limit_top;
			}
			// Axe des X
			larg = Math.round(haut*ratio);
			var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
			if (larg > max_W) {
				larg = max_W;
				haut = Math.round(larg/ratio);
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
			}
		}
		// Le ratio est fixé, l'axe des Y suit celui des X
		if ((!slave_x) && (slave_y)) {
			// Axe des X
			if (mousePos.x > limit_right)
				larg = limit_right - mleft;
			// Axe des Y
			haut = Math.round(larg/ratio);
			var max_H = document.getElementById("maskForm").elements.maskTop.value-limit_top;
			if (haut > max_H) {
				haut = max_H;
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
				larg = Math.round(haut*ratio);
			}
			else {
				mtop = document.getElementById("maskForm").elements.maskTop.value-parseInt(haut);
			}
		}
		
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("mask").style.left = mleft.toString()+"px";
		document.getElementById("mask").style.top = mtop.toString()+"px";
	}
	else if (mousePos.x < mleft && mousePos.y > mtop) { //------------------------------ Quartier SUD-OUEST
		var larg = mleft - mousePos.x;
		var haut = mousePos.y - mtop;
		mleft -= larg;
		// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
		if ((!slave_x) && (!slave_y)) {
			// Axe des X
			if (mousePos.x < limit_left) {
				larg = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
				mleft = limit_left;
			}
			// Axe des Y
			if (mousePos.y > limit_bottom)
				haut = limit_bottom - mtop;
		}
		// Le ratio est fixé, l'axe des X suit celui des Y
		if ((slave_x) && (!slave_y)) {
			// Axe des Y
			if (mousePos.y > limit_bottom)
				haut = limit_bottom - mtop;
			// Axe des X
			larg = Math.round(haut*ratio);
			var max_W = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
			if (larg > max_W) {
				larg = max_W;
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
				haut = Math.round(larg/ratio);
			}
			else {
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
			}
		}
		// Le ratio est fixé, l'axe des Y suit celui des X
		if ((!slave_x) && (slave_y)) {
			// Axe des X
			if (mousePos.x < limit_left) {
				larg = document.getElementById("maskForm").elements.maskLeft.value-limit_left;
				mleft = limit_left;
			}
			// Axe des Y
			haut = Math.round(larg/ratio);
			var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
			if (haut > max_H) {
				haut = max_H;
				larg = Math.round(haut*ratio);
				mleft = document.getElementById("maskForm").elements.maskLeft.value-parseInt(larg);
			}
		}
		
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("mask").style.left = mleft.toString()+"px";
		document.getElementById("mask").style.top = mtop.toString()+"px";
	}
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-limit_left)/zoom).toString();
	document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-limit_top)/zoom).toString();
	if (larg > 0)
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	if (haut > 0)
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	
	var a_left=limit_left;
	var a_width=limit_right-limit_left;
	var a_top=limit_top;
	var a_height=mtop-limit_top;
	var b_left=limit_left;
	var b_top=mtop-limit_top+a_top+1;
	var b_width=mleft-limit_left;
	var b_height=haut;
	var c_left=parseInt(mleft)+parseInt(larg)+1;
	var c_top=mtop-limit_top+a_top+1;
	var c_width=limit_right-c_left+1;
	var c_height=haut;
	var d_left=limit_left;
	var d_top=parseInt(mtop)+parseInt(haut)+1;
	var d_width=limit_right-limit_left;
	var d_height=limit_bottom-d_top+1;
	
	document.getElementById("mask_a").style.left = a_left + "px";
	document.getElementById("mask_a").style.top = a_top + "px";
	document.getElementById("mask_a").style.width = a_width + "px";
	document.getElementById("mask_a").style.height = a_height + "px";
	document.getElementById("mask_b").style.left = b_left + "px";
	document.getElementById("mask_b").style.top = b_top + "px";
	document.getElementById("mask_b").style.width = b_width + "px";
	document.getElementById("mask_b").style.height = b_height + "px";
	if (larg > 0) {
		document.getElementById("mask_c").style.left = c_left + "px";
		document.getElementById("mask_c").style.width = c_width + "px";
	}
	document.getElementById("mask_c").style.top = c_top + "px";
	document.getElementById("mask_c").style.height = c_height + "px";
	document.getElementById("mask_d").style.left = d_left + "px";
	document.getElementById("mask_d").style.width = d_width + "px";
	if (haut > 0) {
		document.getElementById("mask_d").style.top = d_top + "px";
		document.getElementById("mask_d").style.height = d_height + "px";
	}
	
	document.getElementById("mask_a").style.display = "block";
	document.getElementById("mask_b").style.display = "block";
	document.getElementById("mask_c").style.display = "block";
	document.getElementById("mask_d").style.display = "block";
}

function maskMove (mousePos,mleft,mtop,limit_left,limit_top,limit_right,limit_bottom) {
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mask_right = document.getElementById("mask").offsetLeft + document.getElementById("mask").clientWidth;
	var mask_bottom = document.getElementById("mask").offsetTop + document.getElementById("mask").clientHeight;
	var l_right = limit_right;
	var l_bottom = limit_bottom;
	limit_right = limit_right - (document.getElementById("mask").clientWidth-off_W);
	limit_bottom = limit_bottom - (document.getElementById("mask").clientHeight-off_H);
	if (((mousePos.x-off_W) >= limit_left) && (mousePos.x <= limit_right)) {
		var b_width=mleft-limit_left;
		var c_left=parseInt(mleft)+parseInt(document.getElementById("mask").clientWidth)+1;
		var c_width=l_right-c_left+1;
		document.getElementById("mask").style.left = (mousePos.x-off_W).toString()+"px";
		document.getElementById("mask_b").style.width = b_width.toString() + "px";
		document.getElementById("mask_c").style.left = c_left.toString() + "px";
		document.getElementById("mask_c").style.width = c_width.toString() + "px";
		document.getElementById("maskForm").elements.maskLeft.value = mousePos.x-off_W;
		document.getElementById("maskForm").elements.maskTop.value = mousePos.y-off_H;
	}
	else if ((mousePos.x-off_W) < limit_left) {
		var c_left=parseInt(limit_left)+parseInt(document.getElementById("mask").clientWidth)+1;
		var c_width=l_right-c_left+1;
		document.getElementById("mask").style.left = limit_left.toString()+"px";
		document.getElementById("mask_b").style.width = "0px";
		document.getElementById("mask_c").style.left = c_left.toString() + "px";
		document.getElementById("mask_c").style.width = c_width.toString() + "px";
		document.getElementById("maskForm").elements.maskLeft.value = limit_left;
		document.getElementById("maskForm").elements.maskTop.value = mousePos.y-off_H;
	}
	else if (mousePos.x > limit_right) {
		mleft = l_right-document.getElementById("mask").clientWidth;
		var b_width=mleft-limit_left;
		document.getElementById("mask").style.left = mleft.toString()+"px";
		document.getElementById("mask_b").style.width = b_width.toString() + "px";
		document.getElementById("mask_c").style.left = l_right.toString() + "px";
		document.getElementById("mask_c").style.width = "0px";
		document.getElementById("maskForm").elements.maskLeft.value = mleft;
		document.getElementById("maskForm").elements.maskTop.value = mousePos.y-off_H;
	}
	if (((mousePos.y-off_H) >= limit_top) && (mousePos.y <= limit_bottom)) {
		var a_height=mtop-limit_top;
		var b_top=parseInt(mtop)+1;
		var c_top=b_top;
		var d_top=parseInt(mtop)+parseInt(document.getElementById("mask").clientHeight)+1;
		var d_height=l_bottom-d_top+1;
		document.getElementById("mask").style.top = (mousePos.y-off_H).toString()+"px";
		document.getElementById("mask_a").style.height = a_height.toString() + "px";
		document.getElementById("mask_b").style.top = b_top.toString() + "px";
		document.getElementById("mask_c").style.top = c_top.toString() + "px";
		document.getElementById("mask_d").style.top = d_top.toString() + "px";
		document.getElementById("mask_d").style.height = d_height.toString() + "px";
		document.getElementById("maskForm").elements.maskLeft.value = mousePos.x-off_W;
		document.getElementById("maskForm").elements.maskTop.value = mousePos.y-off_H;
	}
	else if ((mousePos.y-off_H) < limit_top) {
		var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(document.getElementById("mask").clientHeight)+1;
		var d_height=l_bottom-d_top+1;
		document.getElementById("mask").style.top = limit_top.toString()+"px";
		document.getElementById("mask_a").style.height = "0px";
		document.getElementById("mask_b").style.top = (limit_top+1).toString() + "px";
		document.getElementById("mask_c").style.top = (limit_top+1).toString() + "px";
		document.getElementById("mask_d").style.top = d_top.toString() + "px";
		document.getElementById("mask_d").style.height = d_height.toString() + "px";
		document.getElementById("maskForm").elements.maskLeft.value = mousePos.x-off_W;
		document.getElementById("maskForm").elements.maskTop.value = limit_top;
	}
	else if (mousePos.y > limit_bottom) {
		mtop = l_bottom-document.getElementById("mask").clientHeight;
		var a_height=mtop-limit_top;
		var b_top=parseInt(mtop)+1;
		var c_top=b_top;
		var d_top=parseInt(mtop)+parseInt(document.getElementById("mask").clientHeight)+1;
		document.getElementById("mask").style.top = mtop.toString()+"px";
		document.getElementById("mask_a").style.height = a_height.toString() + "px";
		document.getElementById("mask_b").style.top = b_top.toString() + "px";
		document.getElementById("mask_c").style.top = c_top.toString() + "px";
		document.getElementById("mask_d").style.top = d_top.toString() + "px";
		document.getElementById("mask_d").style.height = "0px";
		document.getElementById("maskForm").elements.maskLeft.value = mousePos.x-off_W;
		document.getElementById("maskForm").elements.maskTop.value = mtop;
	}
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	document.getElementById("resizeForm").elements["m_left"].value = Math.round((document.getElementById("mask").offsetLeft-limit_left)/zoom).toString();
	document.getElementById("resizeForm").elements["m_top"].value = Math.round((document.getElementById("mask").offsetTop-limit_top)/zoom).toString();
}

function resizeEast (mousePos,limit_top,limit_right,limit_bottom) {
	var pos = getPos(document.getElementById("resizeBox"));
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var mask_right = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(document.getElementById("mask").clientWidth)+1;
	var slave_y = false;
	var min_W = 0;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		slave_y = true;
		min_W = Math.round(rat[0]*zoom);
	}
	// Ajustement de l'axe des X
	if (((mousePos.x-off_W) <= limit_right) && ((mousePos.x-off_W) >= parseInt(document.getElementById("mask").offsetLeft))) {
		var larg = (mousePos.x-off_W)-document.getElementById("mask").offsetLeft;
		if (larg < parseInt(min_W) && slave_y)
			larg = parseInt(min_W);
		var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
		var c_width = limit_right-c_left+1;
	}
	else if ((mousePos.x-off_W) > limit_right) {
		var larg = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft+parseInt(pos.l);
		var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
		var c_width = 0;
	}
	else {
		var larg = 0;
		var c_left=parseInt(document.getElementById("mask").offsetLeft);
		var c_width = limit_right-c_left+1;
	}
	// Si le ratio est fixé, on ajuste aussi l'axe des Y
	if (slave_y) {
		var haut = Math.round(larg/ratio);
		var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
		if (haut > max_H) {
			haut = max_H;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=0;
			larg = Math.round(haut*ratio);
			var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else {
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
	}
	
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("mask_c").style.left = c_left.toString() + "px";
	document.getElementById("mask_c").style.width = c_width.toString() + "px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	if (slave_y) {
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("mask_d").style.top = d_top.toString() + "px";
		document.getElementById("mask_d").style.height = d_height.toString() + "px";
		document.getElementById("rpt").style.height = (haut+40).toString()+"px";
		document.getElementById("rp").style.height = (haut).toString()+"px";
		document.getElementById("mask_b").style.height = haut.toString() + "px";
		document.getElementById("mask_c").style.height = haut.toString() + "px";
		document.getElementById("rp_w").style.height = haut.toString()+"px";
		document.getElementById("rp_e").style.height = haut.toString()+"px";
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	}
}

function resizeWest (mousePos,limit_left,limit_top,limit_bottom) {
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var mright = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var slave_y = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var min_W = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		slave_y = true;
		min_W = Math.round(rat[0]*zoom);
	}
	// Ajustement de l'axe des X
	if (((parseInt(mousePos.x)+parseInt(off_W)) >= limit_left) && ((parseInt(mousePos.x)+parseInt(off_W)) < mright)) {
		var mleft = parseInt(mousePos.x)+parseInt(off_W);
		var b_width=mleft-limit_left;
	}
	else if ((parseInt(mousePos.x)+parseInt(off_W)) < limit_left) {
		var mleft = limit_left;
		var b_width= 0;
	}
	else {
		var mleft = mright;
		var b_width= mleft-limit_left;
	}
	var larg = mright-mleft;
	if (larg < parseInt(min_W) && slave_y) {
		larg = parseInt(min_W);
		var mleft = mright-parseInt(larg);
		var b_width=mleft-limit_left;
	}
	// Si le ratio est fixé, on ajuste aussi l'axe des Y
	if (slave_y) {
		var haut = Math.round(larg/ratio);
		var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
		if (haut > max_H) {
			haut = max_H;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=0;
			larg = Math.round(haut*ratio);
			var mleft = mright-parseInt(larg);
			var b_width=mleft-limit_left;
		}
		else {
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
	}
	
	document.getElementById("mask_b").style.width = b_width.toString() + "px";
	document.getElementById("rpt").style.left = (mleft-19).toString()+"px";
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("mask").style.left = mleft.toString()+"px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-limit_left)/zoom).toString();
	
	if (slave_y) {
		document.getElementById("mask_b").style.height = haut.toString() + "px";
		document.getElementById("mask_c").style.height = haut.toString() + "px";
		document.getElementById("mask_d").style.top = d_top.toString() + "px";
		document.getElementById("mask_d").style.height = d_height.toString() + "px";
		document.getElementById("mask").style.height = haut.toString()+"px";
		document.getElementById("rpt").style.height = (haut+40).toString()+"px";
		document.getElementById("rp").style.height = (haut).toString()+"px";
		document.getElementById("rp_w").style.height = haut.toString()+"px";
		document.getElementById("rp_e").style.height = haut.toString()+"px";
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	}
}

function resizeNorth (mousePos,limit_left,limit_top,limit_right) {
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var slave_x = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var min_H = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		slave_x = true;
		min_H = Math.round(rat[1]*zoom);
	}
	// Ajustement de l'axe des Y
	if (((parseInt(mousePos.y)+parseInt(off_H)) >= limit_top) && ((parseInt(mousePos.y)+parseInt(off_H)) < mbottom)) {
		var mtop = parseInt(mousePos.y)+parseInt(off_H);
		var a_height=mtop-limit_top;
	}
	else if ((parseInt(mousePos.y)+parseInt(off_H)) < limit_top) {
		var mtop = limit_top;
		var a_height= 0;
	}
	else {
		var mtop = mbottom;
		var a_height= mtop-limit_top;
	}
	var haut = mbottom-mtop;
	if (haut < parseInt(min_H)) {
		haut = parseInt(min_H);
		var mtop = parseInt(mbottom)-parseInt(haut);
		var a_height=mtop-limit_top;
	}
	// Si le ratio est fixé, on ajuste aussi l'axe des X
	if (slave_x) {
		var larg = Math.round(haut*ratio);
		var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
		if (larg > max_W) {
			larg = max_W;
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = 0;
			var haut = Math.round(larg/ratio);
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=mtop-limit_top;
		}
		else {
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
	}
		
	document.getElementById("mask_a").style.height = a_height.toString() + "px";
	document.getElementById("mask_b").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("rpt").style.top = (mtop-19).toString()+"px";
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("mask").style.top = mtop.toString()+"px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.height = haut.toString()+"px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-limit_top)/zoom).toString();
		
	if (slave_x) {
		document.getElementById("mask_c").style.left = c_left.toString() + "px";
		document.getElementById("mask_c").style.width = c_width.toString() + "px";
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("rpt").style.width = (larg+40).toString()+"px";
		document.getElementById("rp").style.width = (larg).toString()+"px";
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	}
}

function resizeSouth (mousePos,limit_left,limit_right,limit_bottom) {
	var pos = getPos(document.getElementById("resizeBox"));
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var slave_x = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var min_H = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		slave_x = true;
		min_H = Math.round(rat[1]*zoom);
	}
	// Ajustement de l'axe des Y
	if (((mousePos.y-off_H) <= limit_bottom) && ((mousePos.y-off_H) >= parseInt(document.getElementById("mask").offsetTop))) {
		var haut = (mousePos.y-off_H)-document.getElementById("mask").offsetTop;
		if (haut < parseInt(min_H))
			haut = parseInt(min_H);
		var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
		var d_height=limit_bottom-d_top+1;
	}
	else if ((mousePos.y-off_H) > limit_bottom) {
		var haut = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop+parseInt(pos.t);
		var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
		var d_height = 0;
	}
	else {
		var haut = 0;
		var d_top=parseInt(document.getElementById("mask").offsetTop)+1;
		var d_height = limit_bottom-d_top+1;
	}
	// Si le ratio est fixé, on ajuste aussi l'axe des X
	if (slave_x) {
		var larg = Math.round(haut*ratio);
		var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
		if (larg > max_W) {
			larg = max_W;
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = 0;
			haut = Math.round(larg/ratio);
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut);
			var d_height=limit_bottom-d_top+1;
		}
		else {
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
	}
		
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("mask_d").style.top = d_top.toString() + "px";
	document.getElementById("mask_d").style.height = d_height.toString() + "px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.height = (haut).toString()+"px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	if (slave_x) {
		document.getElementById("mask").style.width = larg.toString()+"px";
		document.getElementById("rpt").style.width = (larg+40).toString()+"px";
		document.getElementById("rpt").style.height = (haut+40).toString()+"px";
		document.getElementById("rp").style.width = (larg).toString()+"px";
		document.getElementById("mask_c").style.left = c_left.toString() + "px";
		document.getElementById("mask_c").style.width = c_width.toString() + "px";
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	}
}

function resizeNorthWest (mousePos,limit_left,limit_top) {
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mright = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var slave_x = false;
	var slave_y = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		if (parseInt(rat[0]) <= parseInt(rat[1]))
			slave_y = true;
		else
			slave_x = true;
	}
	// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
	if ((!slave_x) && (!slave_y)) {
		// Axe des X
		if (((parseInt(mousePos.x)+parseInt(off_W)) >= limit_left) && ((parseInt(mousePos.x)+parseInt(off_W)) < mright)) {
			var mleft = parseInt(mousePos.x)+parseInt(off_W);
			var b_width=mleft-limit_left;
		}
		else if ((parseInt(mousePos.x)+parseInt(off_W)) < limit_left) {
			var mleft = limit_left;
			var b_width= 0;
		}
		else {
			var mleft = mright;
			var b_width= mleft-limit_left;
		}
		var larg = mright-mleft;
		// Axe des Y
		if (((parseInt(mousePos.y)+parseInt(off_H)) >= limit_top) && ((parseInt(mousePos.y)+parseInt(off_H)) < mbottom)) {
			var mtop = parseInt(mousePos.y)+parseInt(off_H);
			var a_height=mtop-limit_top;
		}
		else if ((parseInt(mousePos.y)+parseInt(off_H)) < limit_top) {
			var mtop = limit_top;
			var a_height= 0;
		}
		else {
			var mtop = mbottom;
			var a_height= mtop-limit_top;
		}
		var haut = mbottom-mtop;
	}
	// Le ratio est fixé, l'axe des X suit celui des Y
	if ((slave_x) && (!slave_y)) {
		// Axe des Y
		if (((parseInt(mousePos.y)+parseInt(off_H)) >= limit_top) && ((parseInt(mousePos.y)+parseInt(off_H)) < mbottom)) {
			var mtop = parseInt(mousePos.y)+parseInt(off_H);
			var a_height=mtop-limit_top;
		}
		else if ((parseInt(mousePos.y)+parseInt(off_H)) < limit_top) {
			var mtop = limit_top;
			var a_height= 0;
		}
		else {
			var mtop = mbottom;
			var a_height= mtop-limit_top;
		}
		var haut = mbottom-mtop;
		if (haut < Math.round(rat[1]*zoom)) {
			haut = Math.round(rat[1]*zoom);
			var mtop = mbottom-parseInt(haut);
			var a_height = mtop-limit_top;
		}
		// Axe des X
		var larg = Math.round(haut*ratio);
		var max_W = mright-limit_left;
		if (larg > max_W) {
			larg = max_W;
			var mleft = parseInt(mright)-parseInt(larg);
			var b_width= 0;
			haut = Math.round(larg/ratio);
			var mtop = mbottom-parseInt(haut);
			var a_height = mtop-limit_top;
		}
		else {
			var mleft = parseInt(mright)-parseInt(larg);
			var b_width= mleft-limit_left;
		}
	}
	// Le ratio est fixé, l'axe des Y suit celui des X
	if ((!slave_x) && (slave_y)) {
		// Axe des X
		if (((parseInt(mousePos.x)+parseInt(off_W)) >= limit_left) && ((parseInt(mousePos.x)+parseInt(off_W)) < mright)) {
			var mleft = parseInt(mousePos.x)+parseInt(off_W);
			var b_width=mleft-limit_left;
		}
		else if ((parseInt(mousePos.x)+parseInt(off_W)) < limit_left) {
			var mleft = limit_left;
			var b_width= 0;
		}
		else {
			var mleft = mright;
			var b_width= mleft-limit_left;
		}
		var larg = mright-mleft;
		if (larg < Math.round(rat[0]*zoom)) {
			larg = Math.round(rat[0]*zoom);
			var mleft = mright-parseInt(larg);
			var b_width=mleft-limit_left;
		}
		// Axe des Y
		var haut = Math.round(larg/ratio);
		var max_H = mbottom-limit_top;
		if (haut > max_H) {
			haut = max_H;
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=0;
			larg = Math.round(haut*ratio);
			var mleft = mright-parseInt(larg);
			var b_width=mleft-limit_left;
		}
		else {
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=mtop-limit_top;
		}
	}
		
		
	document.getElementById("mask_a").style.height = a_height.toString() + "px";
	document.getElementById("mask_b").style.width = b_width.toString() + "px";
	document.getElementById("mask_b").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("rpt").style.left = (mleft-19).toString()+"px";
	document.getElementById("rpt").style.top = (mtop-19).toString()+"px";
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("mask").style.left = mleft.toString()+"px";
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("mask").style.top = mtop.toString()+"px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("rp").style.height = haut.toString()+"px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-limit_left)/zoom).toString();
	document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-limit_top)/zoom).toString();
}

function resizeNorthEast (mousePos,limit_left,limit_top,limit_right) {
	var pos = getPos(document.getElementById("resizeBox"));
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mask_right = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(document.getElementById("mask").clientWidth)+1;
	var slave_x = false;
	var slave_y = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		if (parseInt(rat[0]) <= parseInt(rat[1]))
			slave_y = true;
		else
			slave_x = true;
	}
	// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
	if ((!slave_x) && (!slave_y)) {
		// Axe des X
		if (((mousePos.x-off_W) <= limit_right) && ((mousePos.x-off_W) >= parseInt(document.getElementById("mask").offsetLeft))) {
			var larg = (mousePos.x-off_W)-document.getElementById("mask").offsetLeft;
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else if ((mousePos.x-off_W) > limit_right) {
			var larg = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft+parseInt(pos.l);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
  		var c_width = 0;
		}
		else {
			var larg = 0;
			var c_left=parseInt(document.getElementById("mask").offsetLeft);
			var c_width = limit_right-c_left+1;
		}
		// Axe des Y
		if (((parseInt(mousePos.y)+parseInt(off_H)) >= limit_top) && ((parseInt(mousePos.y)+parseInt(off_H)) < mbottom)) {
			var mtop = parseInt(mousePos.y)+parseInt(off_H);
			var a_height=mtop-limit_top;
		}
		else if ((parseInt(mousePos.y)+parseInt(off_H)) < limit_top) {
			var mtop = limit_top;
			var a_height= 0;
		}
		else {
			var mtop = mbottom;
			var a_height= mtop-limit_top;
		}
		var haut = mbottom-mtop;
	}
	// Le ratio est fixé, l'axe des X suit celui des Y
	if ((slave_x) && (!slave_y)) {
		// Axe des Y
		if (((parseInt(mousePos.y)+parseInt(off_H)) >= limit_top) && ((parseInt(mousePos.y)+parseInt(off_H)) < mbottom)) {
			var mtop = parseInt(mousePos.y)+parseInt(off_H);
			var a_height=mtop-limit_top;
		}
		else if ((parseInt(mousePos.y)+parseInt(off_H)) < limit_top) {
			var mtop = limit_top;
			var a_height= 0;
		}
		else {
			var mtop = mbottom;
			var a_height= mtop-limit_top;
		}
		var haut = mbottom-mtop;
		if (haut < Math.round(rat[1]*zoom)) {
			haut = Math.round(rat[1]*zoom);
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=mtop-limit_top;
		}
		// Axe des X
		var larg = Math.round(haut*ratio);
		var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
		if (larg > max_W) {
			larg = max_W;
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = 0;
			var haut = Math.round(larg/ratio);
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=mtop-limit_top;
		}
		else {
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
	}
	// Le ratio est fixé, l'axe des Y suit celui des X
	if ((!slave_x) && (slave_y)) {
		// Axe des X
		if (((mousePos.x-off_W) <= limit_right) && ((mousePos.x-off_W) >= parseInt(document.getElementById("mask").offsetLeft))) {
			var larg = (mousePos.x-off_W)-document.getElementById("mask").offsetLeft;
			if (larg < Math.round(rat[0]*zoom))
				larg = Math.round(rat[0]*zoom);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else if ((mousePos.x-off_W) > limit_right) {
			var larg = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft+parseInt(pos.l);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
  		var c_width = 0;
		}
		else {
			var larg = 0;
			var c_left=parseInt(document.getElementById("mask").offsetLeft);
			var c_width = limit_right-c_left+1;
		}
		// Axe des Y
		var haut = Math.round(larg/ratio);
		var max_H = mbottom-limit_top;
		if (haut > max_H) {
			haut = max_H;
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=0;
			larg = Math.round(haut*ratio);
			var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else {
			var mtop = parseInt(mbottom)-parseInt(haut);
			var a_height=mtop-limit_top;
		}
	}
		
	document.getElementById("mask_a").style.height = a_height.toString() + "px";
	document.getElementById("mask_b").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.top = (mtop+1).toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.left = c_left.toString() + "px";
	document.getElementById("mask_c").style.width = c_width.toString() + "px";
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("mask").style.top = mtop.toString()+"px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rpt").style.top = (mtop-19).toString()+"px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("rp").style.height = haut.toString()+"px";
	document.getElementById("rp").style.height = haut.toString()+"px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-limit_top)/zoom).toString();
}

function resizeSouthEast (mousePos,limit_left,limit_right,limit_bottom) {
	var pos = getPos(document.getElementById("resizeBox"));
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mask_right = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(document.getElementById("mask").clientWidth)+1;
	var slave_x = false;
	var slave_y = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		if (parseInt(rat[0]) <= parseInt(rat[1]))
			slave_y = true;
		else
			slave_x = true;
	}
	// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
	if ((!slave_x) && (!slave_y)) {
		// Axe des X
		if (((mousePos.x-off_W) <= limit_right) && ((mousePos.x-off_W) >= parseInt(document.getElementById("mask").offsetLeft))) {
			var larg = (mousePos.x-off_W)-document.getElementById("mask").offsetLeft;
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else if ((mousePos.x-off_W) > limit_right) {
			var larg = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft+parseInt(pos.l);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
  		var c_width = 0;
		}
		else {
			var larg = 0;
			var c_left=parseInt(document.getElementById("mask").offsetLeft);
			var c_width = limit_right-c_left+1;
		}
		// Axe des Y
		if (((mousePos.y-off_H) <= limit_bottom) && ((mousePos.y-off_H) >= parseInt(document.getElementById("mask").offsetTop))) {
			var haut = (mousePos.y-off_H)-document.getElementById("mask").offsetTop;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
		else if ((mousePos.y-off_H) > limit_bottom) {
			var haut = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop+parseInt(pos.t);
			var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height = 0;
		}
		else {
			var haut = 0;
			var d_top=parseInt(document.getElementById("mask").offsetTop)+1;
			var d_height = limit_bottom-d_top+1;
		}
	}
	// Le ratio est fixé, l'axe des X suit celui des Y
	if ((slave_x) && (!slave_y)) {
		// Axe des Y
		if (((mousePos.y-off_H) <= limit_bottom) && ((mousePos.y-off_H) >= parseInt(document.getElementById("mask").offsetTop))) {
			var haut = (mousePos.y-off_H)-document.getElementById("mask").offsetTop;
			if (haut < Math.round(rat[1]*zoom))
				haut = Math.round(rat[1]*zoom);
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
		else if ((mousePos.y-off_H) > limit_bottom) {
			var haut = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop+parseInt(pos.t);
			var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height = 0;
		}
		else {
			var haut = 0;
			var d_top=parseInt(document.getElementById("mask").offsetTop)+1;
			var d_height = limit_bottom-d_top+1;
		}
		// Axe des X
		var larg = Math.round(haut*ratio);
		var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
		if (larg > max_W) {
			larg = max_W;
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = 0;
			haut = Math.round(larg/ratio);
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut);
			var d_height=limit_bottom-d_top+1;
		}
		else {
			c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
	}
	// Le ratio est fixé, l'axe des Y suit celui des X
	if ((!slave_x) && (slave_y)) {
		// Axe des X
		if (((mousePos.x-off_W) <= limit_right) && ((mousePos.x-off_W) >= parseInt(document.getElementById("mask").offsetLeft))) {
			var larg = (mousePos.x-off_W)-document.getElementById("mask").offsetLeft;
			if (larg < Math.round(rat[0]*zoom))
				larg = Math.round(rat[0]*zoom);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else if ((mousePos.x-off_W) > limit_right) {
			var larg = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft+parseInt(pos.l);
			var c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
  		var c_width = 0;
		}
		else {
			var larg = 0;
			var c_left=parseInt(document.getElementById("mask").offsetLeft);
			var c_width = limit_right-c_left+1;
		}
		// Axe des Y
		var haut = Math.round(larg/ratio);
		var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(pos.t))-document.getElementById("mask").offsetTop;
		if (haut > max_H) {
			haut = max_H;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=0;
			larg = Math.round(haut*ratio);
			var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
			var c_width = limit_right-c_left+1;
		}
		else {
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
	}
		
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("mask_d").style.top = d_top.toString() + "px";
	document.getElementById("mask_d").style.height = d_height.toString() + "px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("rp").style.height = (haut).toString()+"px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.left = c_left.toString() + "px";
	document.getElementById("mask_c").style.width = c_width.toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
}

function resizeSouthWest (mousePos,limit_left,limit_bottom) {
	var pos = getPos(document.getElementById("resizeBox"));
	var off_W = document.getElementById("maskForm").elements.off_W.value;
	var off_H = document.getElementById("maskForm").elements.off_H.value;
	var mright = parseInt(document.getElementById("mask").offsetLeft) + parseInt(document.getElementById("mask").clientWidth);
	var mbottom = parseInt(document.getElementById("mask").offsetTop) + parseInt(document.getElementById("mask").clientHeight);
	var slave_x = false;
	var slave_y = false;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	if (keep_ratio) {
		var rat = document.getElementById("resizeForm").elements["ratio"].value.split(":");
		var ratio = parseInt(rat[0])/parseInt(rat[1]);
		if (parseInt(rat[0]) <= parseInt(rat[1]))
			slave_y = true;
		else
			slave_x = true;
	}
	// Le ratio n'est pas fixé, aucun des côtés n'est esclave de l'autre
	if ((!slave_x) && (!slave_y)) {
		// Axe des X
		if (((parseInt(mousePos.x)+parseInt(off_W)) >= limit_left) && ((parseInt(mousePos.x)+parseInt(off_W)) < mright)) {
			var mleft = parseInt(mousePos.x)+parseInt(off_W);
			var b_width=mleft-limit_left;
		}
		else if ((parseInt(mousePos.x)+parseInt(off_W)) < limit_left) {
			var mleft = limit_left;
			var b_width= 0;
		}
		else {
			var mleft = mright;
			var b_width= mleft-limit_left;
		}
		var larg = mright-mleft;
		// Axe des Y
		if (((mousePos.y-off_H) <= limit_bottom) && ((mousePos.y-off_H) >= parseInt(document.getElementById("mask").offsetTop))) {
			var haut = (mousePos.y-off_H)-document.getElementById("mask").offsetTop;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
		else if ((mousePos.y-off_H) > limit_bottom) {
			var haut = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop+parseInt(pos.t);
			var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height = 0;
		}
		else {
			var haut = 0;
			var d_top=parseInt(document.getElementById("mask").offsetTop)+1;
			var d_height = limit_bottom-d_top+1;
		}
	}
	// Le ratio est fixé, l'axe des X suit celui des Y
	if ((slave_x) && (!slave_y)) {
		// Axe des Y
		if (((mousePos.y-off_H) <= limit_bottom) && ((mousePos.y-off_H) >= parseInt(document.getElementById("mask").offsetTop))) {
			var haut = (mousePos.y-off_H)-document.getElementById("mask").offsetTop;
			if (haut < Math.round(rat[1]*zoom))
				haut = Math.round(rat[1]*zoom);
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
		else if ((mousePos.y-off_H) > limit_bottom) {
			var haut = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop+parseInt(pos.t);
			var d_top=parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height = 0;
		}
		else {
			var haut = 0;
			var d_top=parseInt(document.getElementById("mask").offsetTop)+1;
			var d_height = limit_bottom-d_top+1;
		}
		// Axe des X
		var larg = Math.round(haut*ratio);
		var max_W = mright-limit_left;
		if (larg > max_W) {
			larg = max_W;
			var mleft = parseInt(mright)-parseInt(larg);
			var b_width= 0;
			haut = Math.round(larg/ratio);
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut);
			var d_height=limit_bottom-d_top+1;
		}
		else {
			var mleft = parseInt(mright)-parseInt(larg);
			var b_width= mleft-limit_left;
		}
	}
	// Le ratio est fixé, l'axe des Y suit celui des X
	if ((!slave_x) && (slave_y)) {
		// Axe des X
		if (((parseInt(mousePos.x)+parseInt(off_W)) >= limit_left) && ((parseInt(mousePos.x)+parseInt(off_W)) < mright)) {
			var mleft = parseInt(mousePos.x)+parseInt(off_W);
			var b_width=mleft-limit_left;
		}
		else if ((parseInt(mousePos.x)+parseInt(off_W)) < limit_left) {
			var mleft = limit_left;
			var b_width= 0;
		}
		else {
			var mleft = mright;
			var b_width= mleft-limit_left;
		}
		var larg = mright-mleft;
		if (larg < Math.round(rat[0]*zoom)) {
			larg = Math.round(rat[0]*zoom);
			var mleft = mright-parseInt(larg);
			var b_width=mleft-limit_left;
		}
		// Axe des Y
		var haut = Math.round(larg/ratio);
		var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(pos.t))-document.getElementById("mask").offsetTop;
		if (haut > max_H) {
			haut = max_H;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=0;
			larg = Math.round(haut*ratio);
			var mleft = mright-parseInt(larg);
			var b_width=mleft-limit_left;
		}
		else {
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
			var d_height=limit_bottom-d_top+1;
		}
	}
		
	document.getElementById("mask_b").style.width = b_width.toString() + "px";
	document.getElementById("mask_b").style.height = haut.toString() + "px";
	document.getElementById("mask_c").style.height = haut.toString() + "px";
	document.getElementById("mask_d").style.top = d_top.toString() + "px";
	document.getElementById("mask_d").style.height = d_height.toString() + "px";
	document.getElementById("rpt").style.left = (mleft-19).toString()+"px";
	document.getElementById("mask").style.width = larg.toString()+"px";
	document.getElementById("mask").style.left = mleft.toString()+"px";
	document.getElementById("mask").style.height = haut.toString()+"px";
	document.getElementById("rpt").style.width = (larg+40).toString()+"px";
	document.getElementById("rpt").style.height = (haut+40).toString()+"px";
	document.getElementById("rp").style.width = (larg).toString()+"px";
	document.getElementById("rp").style.height = (haut).toString()+"px";
	document.getElementById("rp_w").style.height = haut.toString()+"px";
	document.getElementById("rp_e").style.height = haut.toString()+"px";
	document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-limit_left)/zoom).toString();
}

function scrollByDrag (mousePos) {
	var wheeler = document.getElementById("paramForm").elements["wheelers"].value;
  var scrollBax = getPos(document.getElementById(wheeler+"_scrollBar"));
	var lift = getPos(document.getElementById(wheeler+"_scrollBtn"));
	var off_H = document.getElementById("paramForm").elements.scrollBtn_offsetY.value;
	var limit_top = scrollBax.t;
	var limit_bottom = (scrollBax.b-document.getElementById(wheeler+"_scrollBtn").clientHeight)+parseInt(off_H)-2;
	var room = document.getElementById(wheeler+"_scrollBar").clientHeight - document.getElementById(wheeler+"_scrollBtn").clientHeight;
	
	if (((mousePos.y-off_H) >= limit_top) && (mousePos.y <= limit_bottom)) {
  	tr = (mousePos.y-off_H)-scrollBax.t;
  }
  else if ((mousePos.y-off_H) < limit_top) {
  	tr = 0;
  }
  else if (mousePos.y > limit_bottom) {
  	tr = room;
  }
  
  var limite = document.getElementById(wheeler+"_scrollIt").clientHeight-document.getElementById(wheeler).clientHeight;
	var moveRatio = Math.ceil((tr*100)/room);
	var posY = Math.ceil((moveRatio*limite)/100);
  
  document.getElementById(wheeler+"_scrollBtn").style.top = tr.toString()+"px";
  document.getElementById(wheeler+"_scrollIt").style.top = "-"+posY.toString()+"px";
}

function moveThumb (mousePos,img_id) {
	var hauteur = 0;
	if( typeof( window.innerHeight ) == 'number' )
  	hauteur = window.innerHeight;
  else if( document.documentElement && document.documentElement.clientHeight )
	  hauteur = document.documentElement.clientHeight;
	else if( document.body && document.body.clientHeight )
	  hauteur = document.body.clientHeight;
	
	if (document.getElementById("img_thumb_"+img_id.toString()) && document.getElementById("img_thumb_"+img_id.toString()).style.display == "block") {
		document.getElementById("img_thumb_"+img_id.toString()).style.left = (parseInt(mousePos.x)+18).toString()+"px";
		var imgHeight = document.getElementById("img_thumb_"+img_id.toString()).offsetHeight;
		if (parseInt(mousePos.y)+parseInt(imgHeight) >= parseInt(hauteur))
			document.getElementById("img_thumb_"+img_id.toString()).style.top = (mousePos.y-imgHeight).toString()+"px";
		else
			document.getElementById("img_thumb_"+img_id.toString()).style.top = mousePos.y.toString()+"px";
	}
}

function mouseMove(ev) {
    ev           = ev || window.event; 
    var mousePos = mouseCoords(ev);
    if (callah != "show_thumb" && callah != "dragscroll" && callah != "") {
    	var pos = getPos(document.getElementById("resizeBox"));
      var mleft = document.getElementById("maskForm").elements.maskLeft.value;
      var mtop = document.getElementById("maskForm").elements.maskTop.value;
      /*var limit_left = document.getElementById("resizeBox").offsetLeft;
      var limit_top = document.getElementById("resizeBox").offsetTop;
      var limit_right = parseInt(document.getElementById("resizeBox").clientWidth) + parseInt(limit_left);
      var limit_bottom = parseInt(document.getElementById("resizeBox").clientHeight) + parseInt(limit_top);*/
      var limit_left = pos.l;
      var limit_top = pos.t;
      var limit_right = pos.r-2;
      var limit_bottom = pos.b-2;
    }
    else if (callah == "show_thumb")
    	var img_id = document.getElementById("picsForm").elements["thumb_id"].value;
    
		if (iMouseDown && !lMouseState) {
			if (callah == "cadre") { //------------------------------------------- Création du cadre -------------------------------------------------------/
				drawMask(mousePos,mleft,mtop,limit_left,limit_top,limit_right,limit_bottom);
			}
			else if (callah == "movemask") { //------------------------------------------- Déplacement du cadre -------------------------------------------------------/
				maskMove(mousePos,mleft,mtop,limit_left,limit_top,limit_right,limit_bottom);
  		}
			else if (callah == "e_resize") { //------------------------------------------- Redimendionne à l'Est -------------------------------------------------------/
				resizeEast(mousePos,limit_top,limit_right,limit_bottom);
			}
			else if (callah == "w_resize") { //------------------------------------------- Redimensionne à l'Ouest -------------------------------------------------------/
				resizeWest(mousePos,limit_left,limit_top,limit_bottom);
			}
			else if (callah == "n_resize") { //------------------------------------------- Redimensionne au Nord -------------------------------------------------------/
				resizeNorth(mousePos,limit_left,limit_top,limit_right);
			}
			else if (callah == "s_resize") { //------------------------------------------- Redimensionne au Sud -------------------------------------------------------/
				resizeSouth(mousePos,limit_left,limit_right,limit_bottom);
			}
			else if (callah == "nw_resize") { //------------------------------------------- Redimensionne au Nord-Ouest -------------------------------------------------------/
				resizeNorthWest(mousePos,limit_left,limit_top);
			}
			else if (callah == "ne_resize") { //------------------------------------------- Redimensionne au Nord-Est -------------------------------------------------------/
				resizeNorthEast(mousePos,limit_left,limit_top,limit_right);
			}
			else if (callah == "se_resize") { //------------------------------------------- Redimensionne au Sud-Est -------------------------------------------------------/
				resizeSouthEast(mousePos,limit_left,limit_right,limit_bottom);
			}
			else if (callah == "sw_resize") { //------------------------------------------- Redimensionne au Sud-Ouest -------------------------------------------------------/
				resizeSouthWest(mousePos,limit_left,limit_bottom);
			}
			else if (callah == "dragscroll") {
				scrollByDrag(mousePos);
			}
		}
		else {
			if (callah == "show_thumb") { //------------------------------------------- Déplacement de la vignette -------------------------------------------------------/
				moveThumb(mousePos,img_id);
			}
		}
} 
 
function mouseCoords(ev){ 
    if(ev.pageX || ev.pageY){ 
        return {x:ev.pageX, y:ev.pageY}; 
    } 
    return { 
        x:ev.clientX + document.body.scrollLeft - document.body.clientLeft, 
        y:ev.clientY + document.body.scrollTop  - document.body.clientTop 
    }; 
}

function ishover (elem,event) {
	var p = getPos(elem);
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	if ((mousePos.x >= p.l) && (mousePos.x <= p.r) && (mousePos.y >= p.t) && (mousePos.y <= p.b))
		return true;
	else
		return false;
}

function cadre (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	//document.getElementById("mask").setAttribute("onmouseover","",false);
	document.getElementById("mask").style.left = mousePos.x + "px";
	document.getElementById("mask").style.top = mousePos.y + "px";
	document.getElementById("mask").style.width = "0px";
	document.getElementById("mask").style.height = "0px";
	document.getElementById("mask").style.borderColor = "transparent";
	document.getElementById("mask").style.cursor = "crosshair";
	document.getElementById("mask").style.display = "block";
	document.getElementById("rpt").style.display = "none";
	
	document.getElementById("maskForm").elements.maskLeft.value = mousePos.x;
	document.getElementById("maskForm").elements.maskTop.value = mousePos.y;
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	document.getElementById("resizeForm").elements["m_left"].value = "0";
	document.getElementById("resizeForm").elements["m_top"].value = "0";
	document.getElementById("resizeForm").elements["m_width"].value = "0";
	document.getElementById("resizeForm").elements["m_height"].value = "0";
	
	var fond = event.target || event.srcElement;
	if (fond.addEventListener) {
		fond.addEventListener("mousedown", cadre, false);
	}
	else if (fond.attachEvent) {
		fond.attachEvent("onmousedown", cadre);
	}
	callah = "cadre";
}

function movemask (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	document.getElementById("maskForm").elements.off_W.value = mousePos.x - document.getElementById("mask").offsetLeft;
	document.getElementById("maskForm").elements.off_H.value = mousePos.y - document.getElementById("mask").offsetTop;
	document.getElementById("rpt").style.display = "none";
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var mask = event.target || event.srcElement;
	if (mask.addEventListener) {
		mask.addEventListener("mousedown", movemask, false);
	}
	else if (mask.attachEvent) {
		mask.attachEvent("onmousedown", movemask);
	}
	callah = "movemask";
}

function makeClickable(object,ev){
	object.onmousedown = function(){
		dragObject = this;
		ev = ev || window.event;
		var mousePos = mouseCoords(ev);
		//nbClicks++;
		document.getElementById("mask").style.left = mousePos.x + "px";
		document.getElementById("mask").style.top = mousePos.y + "px";
		document.getElementById("mask").style.display = "block";
		
		//document.getElementById("test").innerHTML = nbClicks.toString();
	}
}

function e_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var lr = parseInt(document.getElementById("mask").clientWidth) + parseInt(document.getElementById("mask").offsetLeft);
	document.getElementById("maskForm").elements.off_W.value = mousePos.x - lr;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var e_r = event.target || event.srcElement;
	if (e_r.addEventListener) {
		e_r.addEventListener("mousedown", e_resize, false);
	}
	else if (e_r.attachEvent) {
		e_r.attachEvent("onmousedown", e_resize);
	}
	callah = "e_resize";
}

function w_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	document.getElementById("maskForm").elements.off_W.value = document.getElementById("mask").offsetLeft-mousePos.x;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var w_r = event.target || event.srcElement;
	if (w_r.addEventListener) {
		w_r.addEventListener("mousedown", w_resize, false);
	}
	else if (w_r.attachEvent) {
		w_r.attachEvent("onmousedown", w_resize);
	}
	callah = "w_resize";
}

function n_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	document.getElementById("maskForm").elements.off_H.value = document.getElementById("mask").offsetTop-mousePos.y;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var n_r = event.target || event.srcElement;
	if (n_r.addEventListener) {
		n_r.addEventListener("mousedown", n_resize, false);
	}
	else if (n_r.attachEvent) {
		n_r.attachEvent("onmousedown", n_resize);
	}
	callah = "n_resize";
}

function s_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var lr = parseInt(document.getElementById("mask").clientHeight) + parseInt(document.getElementById("mask").offsetTop);
	document.getElementById("maskForm").elements.off_H.value = mousePos.y - lr;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var s_r = event.target || event.srcElement;
	if (s_r.addEventListener) {
		s_r.addEventListener("mousedown", s_resize, false);
	}
	else if (s_r.attachEvent) {
		s_r.attachEvent("onmousedown", s_resize);
	}
	callah = "s_resize";
}

function nw_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	document.getElementById("maskForm").elements.off_W.value = document.getElementById("mask").offsetLeft-mousePos.x;
	document.getElementById("maskForm").elements.off_H.value = document.getElementById("mask").offsetTop-mousePos.y;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var nw_r = event.target || event.srcElement;
	if (nw_r.addEventListener) {
		nw_r.addEventListener("mousedown", nw_resize, false);
	}
	else if (nw_r.attachEvent) {
		nw_r.attachEvent("onmousedown", nw_resize);
	}
	callah = "nw_resize";
}

function ne_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var lr = parseInt(document.getElementById("mask").clientWidth) + parseInt(document.getElementById("mask").offsetLeft);
	document.getElementById("maskForm").elements.off_W.value = mousePos.x - lr;
	document.getElementById("maskForm").elements.off_H.value = document.getElementById("mask").offsetTop-mousePos.y;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var ne_r = event.target || event.srcElement;
	if (ne_r.addEventListener) {
		ne_r.addEventListener("mousedown", ne_resize, false);
	}
	else if (ne_r.attachEvent) {
		ne_r.attachEvent("onmousedown", ne_resize);
	}
	callah = "ne_resize";
}

function se_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var lr = parseInt(document.getElementById("mask").clientWidth) + parseInt(document.getElementById("mask").offsetLeft);
	document.getElementById("maskForm").elements.off_W.value = mousePos.x - lr;
	lr = parseInt(document.getElementById("mask").clientHeight) + parseInt(document.getElementById("mask").offsetTop);
	document.getElementById("maskForm").elements.off_H.value = mousePos.y - lr;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var se_r = event.target || event.srcElement;
	if (se_r.addEventListener) {
		se_r.addEventListener("mousedown", se_resize, false);
	}
	else if (se_r.attachEvent) {
		se_r.attachEvent("onmousedown", se_resize);
	}
	callah = "se_resize";
}

function sw_resize (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	document.getElementById("maskForm").elements.off_W.value = document.getElementById("mask").offsetLeft-mousePos.x;
	var lr = parseInt(document.getElementById("mask").clientHeight) + parseInt(document.getElementById("mask").offsetTop);
	document.getElementById("maskForm").elements.off_H.value = mousePos.y - lr;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			keep_ratio = true;
		}
		else {
			keep_ratio = false;
		}
	}
	else {
		keep_ratio = false;
	}
	
	var sw_r = event.target || event.srcElement;
	if (sw_r.addEventListener) {
		sw_r.addEventListener("mousedown", sw_resize, false);
	}
	else if (sw_r.attachEvent) {
		sw_r.attachEvent("onmousedown", sw_resize);
	}
	callah = "sw_resize";
}

function mouseUp(ev){
	if (callah != "cadre" && callah != "dragscroll" && callah != "")
		alignAll();
	dragObject = null;
	iMouseDown  = false;
	lMouseState = true;
	if (callah == "movemask")
		show_rp();
	/*else if (callah.match("resize"))
		hide_rp();*/
	callah = "";
	if (document.getElementById("mask"))
		document.getElementById("mask").style.cursor = "move";
}

function show_thumb (event,img_id) {
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var hauteur = 0;
	if( typeof( window.innerHeight ) == 'number' )
  	hauteur = window.innerHeight;
  else if( document.documentElement && document.documentElement.clientHeight )
	  hauteur = document.documentElement.clientHeight;
	else if( document.body && document.body.clientHeight )
	  hauteur = document.body.clientHeight;
	
	document.getElementById("picsForm").elements["thumb_id"].value = img_id;
	document.getElementById("img_thumb_"+img_id.toString()).style.left = (parseInt(mousePos.x)+18).toString()+"px";
	var imgHeight = document.getElementById("img_thumb_"+img_id.toString()).offsetHeight;
	if (parseInt(mousePos.y)+parseInt(imgHeight) >= parseInt(hauteur))
		document.getElementById("img_thumb_"+img_id.toString()).style.top = (mousePos.y-imgHeight).toString()+"px";
	else
		document.getElementById("img_thumb_"+img_id.toString()).style.top = mousePos.y.toString()+"px";
	if (document.getElementById("img_thumb_"+img_id.toString()).style.display != "block")
		document.getElementById("img_thumb_"+img_id.toString()).style.display = "block";
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	callah = "show_thumb";
}

function hide_thumb (img_id) {
	document.getElementById("img_thumb_"+img_id.toString()).style.display = "none";
	document.getElementById("picsForm").elements["thumb_id"].value = "";
	callah = "";
}

function alignAll () {
	if (document.getElementById("mask")) {
  	var mleft = document.getElementById("mask").offsetLeft;
  	var mtop = document.getElementById("mask").offsetTop;
  	var larg = document.getElementById("mask").clientWidth;
  	var haut = document.getElementById("mask").clientHeight;
  	var pos = getPos(document.getElementById("resizeBox"));
  	var limit_left = pos.l;
    var limit_top = pos.t;
    var limit_right = pos.r-2;
    var limit_bottom = pos.b-2;
  	var a_height = mtop-limit_top;
  	var b_width = mleft-limit_left;
  	var b_top = parseInt(a_height)+parseInt(limit_top)+1;
  	var b_height = haut;
  	var c_left = parseInt(mleft)+parseInt(larg)+1;
  	var c_width = (limit_right-c_left)+1;
  	var c_top = b_top;
  	var c_height = haut;
  	var d_top = parseInt(mtop)+parseInt(haut)+1;
  	var d_height = (limit_bottom-d_top)+1;
  	
  	document.getElementById("mask_a").style.height = a_height.toString()+"px";
  	document.getElementById("mask_b").style.width = b_width.toString()+"px";
  	document.getElementById("mask_b").style.top = b_top.toString()+"px";
  	document.getElementById("mask_b").style.height = b_height.toString()+"px";
  	document.getElementById("mask_c").style.left = c_left.toString()+"px";
  	document.getElementById("mask_c").style.width = c_width.toString()+"px";
  	document.getElementById("mask_c").style.top = c_top.toString()+"px";
  	document.getElementById("mask_c").style.height = c_height.toString()+"px";
  	document.getElementById("mask_d").style.top = d_top.toString()+"px";
  	document.getElementById("mask_d").style.height = d_height.toString()+"px";
	}
}

function setLeft () {
	var pos = getPos(document.getElementById("resizeBox"));
	var limit_left = pos.l;
	var limit_right = document.getElementById("resizeBox").clientWidth-document.getElementById("mask").clientWidth;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var leftvalue = Math.round(document.getElementById("resizeForm").elements["m_left"].value*zoom);
	if ((leftvalue >= 0) && (leftvalue <= limit_right)) {
		var mleft = parseInt(leftvalue)+parseInt(limit_left);
	}
	else if (leftvalue < 0) {
		var mleft = limit_left;
		document.getElementById("resizeForm").elements["m_left"].value = "0";
	}
	else {
		var mleft = parseInt(limit_right)+parseInt(limit_left);
		document.getElementById("resizeForm").elements["m_left"].value = Math.round(limit_right/zoom).toString();
	}
	
	document.getElementById("mask").style.left = mleft.toString() + "px";
	alignAll();
}

function setTop () {
	var pos = getPos(document.getElementById("resizeBox"));
	var limit_top = pos.t;
	var limit_bottom = document.getElementById("resizeBox").clientHeight-document.getElementById("mask").clientHeight;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var topvalue = Math.round(document.getElementById("resizeForm").elements["m_top"].value*zoom);
	if ((topvalue >= 0) && (topvalue <= limit_bottom)) {
		var mtop = parseInt(topvalue)+parseInt(limit_top);
	}
	else if (topvalue < 0) {
		var mtop = limit_top;
		document.getElementById("resizeForm").elements["m_top"].value = "0";
	}
	else {
		var mtop = parseInt(limit_bottom)+parseInt(limit_top);
		document.getElementById("resizeForm").elements["m_top"].value = Math.round(limit_bottom/zoom).toString();
	}
	
	document.getElementById("mask").style.top = mtop.toString() + "px";
	alignAll();
}

function setWidth () {
	var pos = getPos(document.getElementById("resizeBox"));
	var limit_left = pos.l;
	var limit_top = pos.t;
	var max_W = (document.getElementById("resizeBox").clientWidth-document.getElementById("mask").offsetLeft)+limit_left;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var widthvalue = Math.round(document.getElementById("resizeForm").elements["m_width"].value*zoom);
	var slave_y = false;
	var min_W = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_y = true;
			min_W = Math.round(rat[0]*zoom);
		}
	}
	
	if ((widthvalue >= 0) && (widthvalue <= parseInt(max_W))) {
		var mwidth = widthvalue;
		if ((mwidth < parseInt(min_W)) && slave_y) {
			mwidth = parseInt(min_W);
		}
	}
	else if (widthvalue < 0) {
		var mwidth = 0;
		document.getElementById("resizeForm").elements["m_width"].value = "0";
	}
	else {
		var mwidth = max_W;
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(max_W/zoom).toString();
	}
	
	if (slave_y) {
		var haut = Math.round(mwidth/ratio);
		var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
		if (haut > max_H) {
			haut = max_H;
			mwidth = Math.round(haut*ratio);
		}
	}
	
	document.getElementById("mask").style.width = mwidth.toString() + "px";
	if (slave_y) {
  	document.getElementById("mask").style.height = haut.toString() + "px";
  	document.getElementById("resizeForm").elements["m_width"].value = Math.round(mwidth/zoom).toString();
  	document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
	}
	alignAll();
}

function setHeight () {
	var pos = getPos(document.getElementById("resizeBox"));
	var limit_left = pos.l;
	var limit_top = pos.t;
	var max_H = (document.getElementById("resizeBox").clientHeight-document.getElementById("mask").offsetTop)+limit_top;
	var slave_x = false;
	var min_H = 0;
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var heightvalue = Math.round(document.getElementById("resizeForm").elements["m_height"].value*zoom);
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_x = true;
			min_H = Math.round(rat[1]*zoom);
		}
	}
	
	if ((heightvalue >= 0) && (heightvalue <= parseInt(max_H))) {
		var mheight = heightvalue;
		if ((mheight < parseInt(min_H)) && slave_x)
			mheight = parseInt(min_H);
	}
	else if (heightvalue < 0) {
		var mheight = 0;
		document.getElementById("resizeForm").elements["m_height"].value = "0";
	}
	else {
		var mheight = max_H;
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(max_H/zoom).toString();
	}
	
	if (slave_x) {
		var larg = Math.round(mheight*ratio);
		var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
		if (larg > max_W) {
			larg = max_W;
			mheight = Math.round(larg/ratio);
		}
	}
	
	document.getElementById("mask").style.height = mheight.toString() + "px";
	if (slave_x) {
		document.getElementById("mask").style.width = larg.toString() + "px";
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
  	document.getElementById("resizeForm").elements["m_height"].value = Math.round(mheight/zoom).toString();
	}
	alignAll();
}

function hide_mask () {
	document.getElementById("mask").style.display = "none";
	document.getElementById("mask_a").style.display = "none";
	document.getElementById("mask_b").style.display = "none";
	document.getElementById("mask_c").style.display = "none";
	document.getElementById("mask_d").style.display = "none";
	document.getElementById("resizeForm").elements["m_left"].value = "0";
	document.getElementById("resizeForm").elements["m_top"].value = "0";
	document.getElementById("resizeForm").elements["m_width"].value = "0";
	document.getElementById("resizeForm").elements["m_height"].value = "0";
	hide_rp();
}

function show_rp () {
	var style = "out";
	if (!iMouseDown && lMouseState) {
		var larg = document.getElementById("mask").clientWidth;
		var haut = document.getElementById("mask").clientHeight;
		switch (style) {
			case "in"		: var rleft = document.getElementById("mask").offsetLeft;
										var rtop = document.getElementById("mask").offsetTop;
										document.getElementById("rpt").style.width = (larg).toString()+"px";
										document.getElementById("rpt").style.height = (haut).toString()+"px";
										document.getElementById("rp").style.width = (larg-38).toString()+"px";
										document.getElementById("rp").style.height = (haut-38).toString()+"px";
										document.getElementById("rp_w").style.height = (haut-38).toString()+"px";
										document.getElementById("rp_e").style.height = (haut-38).toString()+"px";
										break;
			case "out"	: var rleft = document.getElementById("mask").offsetLeft-19;
										var rtop = document.getElementById("mask").offsetTop-19;
										document.getElementById("rpt").style.width = (larg+40).toString()+"px";
										document.getElementById("rpt").style.height = (haut+40).toString()+"px";
										document.getElementById("rp").style.width = (larg).toString()+"px";
										document.getElementById("rp").style.height = (haut).toString()+"px";
										document.getElementById("rp_w").style.height = (haut).toString()+"px";
										document.getElementById("rp_e").style.height = (haut).toString()+"px";
										break;
		}
		document.getElementById("rpt").style.left = rleft.toString()+"px";
		document.getElementById("rpt").style.top = rtop.toString()+"px";
		document.getElementById("rpt").style.display = "block";
	}
}

function hide_rp () {
	if (!iMouseDown && lMouseState)
		document.getElementById("rpt").style.display = "none";
}

function move_left () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mleft = document.getElementById("mask").offsetLeft;
	var limit_left = pos.l;
	var b_width = document.getElementById("mask_b").clientWidth;
	var c_width = document.getElementById("mask_c").clientWidth;
	var c_left = document.getElementById("mask_c").offsetLeft;
	
	if (mleft > limit_left) {
		mleft--;
		b_width--;
		c_width++;
		c_left--;
		document.getElementById("mask").style.left = mleft + "px";
		document.getElementById("mask_b").style.width = b_width + "px";
		document.getElementById("mask_c").style.width = c_width + "px";
		document.getElementById("mask_c").style.left = c_left + "px";
		document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-limit_left)/zoom).toString();
	}
}

function move_right () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mleft = document.getElementById("mask").offsetLeft;
	var mwidth = document.getElementById("mask").clientWidth;
	var limit_right = pos.r-2;
	var b_width = document.getElementById("mask_b").clientWidth;
	var c_width = document.getElementById("mask_c").clientWidth;
	var c_left = document.getElementById("mask_c").offsetLeft;
	
	if (parseInt(mleft+mwidth) < parseInt(limit_right)) {
		mleft++;
		b_width++;
		c_width--;
		c_left++;
		document.getElementById("mask").style.left = mleft + "px";
		document.getElementById("mask_b").style.width = b_width + "px";
		document.getElementById("mask_c").style.width = c_width + "px";
		document.getElementById("mask_c").style.left = c_left + "px";
		document.getElementById("resizeForm").elements["m_left"].value = Math.round((mleft-pos.l)/zoom).toString();
	}
}

function move_up () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mtop = document.getElementById("mask").offsetTop;
	var limit_top = pos.t;
	var a_height = document.getElementById("mask_a").clientHeight;
	var bc_top = document.getElementById("mask_b").offsetTop;
	var d_height = document.getElementById("mask_d").clientHeight;
	var d_top = document.getElementById("mask_d").offsetTop;
	
	if (mtop > limit_top) {
		mtop--;
		a_height--;
		bc_top--;
		d_height++;
		d_top--;
		document.getElementById("mask").style.top = mtop + "px";
		document.getElementById("mask_a").style.height = a_height + "px";
		document.getElementById("mask_b").style.top = bc_top + "px";
		document.getElementById("mask_c").style.top = bc_top + "px";
		document.getElementById("mask_d").style.height = d_height + "px";
		document.getElementById("mask_d").style.top = d_top + "px";
		document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-limit_top)/zoom).toString();
	}
}

function move_down () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mtop = document.getElementById("mask").offsetTop;
	var mheight = document.getElementById("mask").clientHeight;
	var limit_bottom = pos.b-2;
	var a_height = document.getElementById("mask_a").clientHeight;
	var bc_top = document.getElementById("mask_b").offsetTop;
	var d_height = document.getElementById("mask_d").clientHeight;
	var d_top = document.getElementById("mask_d").offsetTop;
	
	if (parseInt(mtop+mheight) < parseInt(limit_bottom)) {
		mtop++;
		a_height++;
		bc_top++;
		d_height--;
		d_top++;
		document.getElementById("mask").style.top = mtop + "px";
		document.getElementById("mask_a").style.height = a_height + "px";
		document.getElementById("mask_b").style.top = bc_top + "px";
		document.getElementById("mask_c").style.top = bc_top + "px";
		document.getElementById("mask_d").style.height = d_height + "px";
		document.getElementById("mask_d").style.top = d_top + "px";
		document.getElementById("resizeForm").elements["m_top"].value = Math.round((mtop-pos.t)/zoom).toString();
	}
}

function wup () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mleft = document.getElementById("mask").offsetLeft;
	var mwidth = document.getElementById("mask").clientWidth;
	var limit_top = pos.t;
	var limit_right = pos.r-2;
	var limit_bottom = pos.b-2;
	var c_width = document.getElementById("mask_c").clientWidth;
	var c_left = document.getElementById("mask_c").offsetLeft;
	var slave_y = false;
	var min_W = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_y = true;
			min_W = Math.round(rat[0]*zoom);
		}
	}
	
	if (parseInt(mleft+mwidth) < parseInt(limit_right)) {
		mwidth++;
		c_width--;
		c_left++;
		if ((mwidth < parseInt(min_W)) && (slave_y)) {
			mwidth = parseInt(min_W);
			var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(mwidth)+1;
			var c_width = limit_right-c_left+1;
		}
		document.getElementById("mask").style.width = mwidth + "px";
		document.getElementById("mask_c").style.width = c_width + "px";
		document.getElementById("mask_c").style.left = c_left + "px";
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(mwidth/zoom).toString();
		if (slave_y) {
			var haut = Math.round(mwidth/ratio);
			var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
			if (haut > max_H) {
				haut = max_H;
				var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
				var d_height=0;
				larg = Math.round(haut*ratio);
				var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = limit_right-c_left+1;
			}
			else {
				var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
				var d_height=limit_bottom-d_top+1;
			}
			document.getElementById("mask").style.height = haut.toString()+"px";
			document.getElementById("mask_d").style.top = d_top.toString() + "px";
			document.getElementById("mask_d").style.height = d_height.toString() + "px";
			document.getElementById("rpt").style.height = (haut+40).toString()+"px";
			document.getElementById("rp").style.height = (haut).toString()+"px";
			document.getElementById("mask_b").style.height = haut.toString() + "px";
			document.getElementById("mask_c").style.height = haut.toString() + "px";
			document.getElementById("rp_w").style.height = haut.toString()+"px";
			document.getElementById("rp_e").style.height = haut.toString()+"px";
			document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
		}
	}
}

function wdown () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mwidth = document.getElementById("mask").clientWidth;
	var limit_top = pos.t;
	var limit_right = pos.r-2;
	var limit_bottom = pos.b-2;
	var c_width = document.getElementById("mask_c").clientWidth;
	var c_left = document.getElementById("mask_c").offsetLeft;
	var slave_y = false;
	var min_W = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_y = true;
			min_W = Math.round(rat[0]*zoom);
		}
	}
	
	if (mwidth > 2) {
		mwidth--;
		c_width++;
		c_left--;
		if ((mwidth < parseInt(min_W)) && (slave_y)) {
			mwidth = parseInt(min_W);
			var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(mwidth)+1;
			var c_width = limit_right-c_left+1;
		}
		document.getElementById("mask").style.width = mwidth + "px";
		document.getElementById("mask_c").style.width = c_width + "px";
		document.getElementById("mask_c").style.left = c_left + "px";
		document.getElementById("resizeForm").elements["m_width"].value = Math.round(mwidth/zoom).toString();
		if (slave_y) {
			var haut = Math.round(mwidth/ratio);
			var max_H = (parseInt(document.getElementById("resizeBox").clientHeight)+parseInt(limit_top))-document.getElementById("mask").offsetTop;
			if (haut > max_H) {
				haut = max_H;
				var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
				var d_height=0;
				larg = Math.round(haut*ratio);
				var c_left=parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = limit_right-c_left+1;
			}
			else {
				var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(haut)+1;
				var d_height=limit_bottom-d_top+1;
			}
			document.getElementById("mask").style.height = haut.toString()+"px";
			document.getElementById("mask_d").style.top = d_top.toString() + "px";
			document.getElementById("mask_d").style.height = d_height.toString() + "px";
			document.getElementById("rpt").style.height = (haut+40).toString()+"px";
			document.getElementById("rp").style.height = (haut).toString()+"px";
			document.getElementById("mask_b").style.height = haut.toString() + "px";
			document.getElementById("mask_c").style.height = haut.toString() + "px";
			document.getElementById("rp_w").style.height = haut.toString()+"px";
			document.getElementById("rp_e").style.height = haut.toString()+"px";
			document.getElementById("resizeForm").elements["m_height"].value = Math.round(haut/zoom).toString();
		}
	}
}

function hup () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mtop = document.getElementById("mask").offsetTop;
	var mheight = document.getElementById("mask").clientHeight;
	var limit_left = pos.l;
	var limit_bottom = pos.b-2;
	var limit_right = pos.r-2;
	var bc_height = document.getElementById("mask_b").clientHeight;
	var d_height = document.getElementById("mask_d").clientHeight;
	var d_top = document.getElementById("mask_d").offsetTop;
	var slave_x = false;
	var min_H = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_x = true;
			min_H = Math.round(rat[1]*zoom);
		}
	}
	
	if (parseInt(mtop+mheight) < parseInt(limit_bottom)) {
		mheight++;
		bc_height++;
		d_height--;
		d_top++;
		if (mheight < parseInt(min_H) && (slave_x)) {
			mheight = parseInt(min_H);
			bc_height = mheight-1;
			d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(mheight);
			d_height=limit_bottom-d_top+1;
		}
		document.getElementById("mask").style.height = mheight + "px";
		document.getElementById("mask_b").style.height = bc_height + "px";
		document.getElementById("mask_c").style.height = bc_height + "px";
		document.getElementById("mask_d").style.height = d_height + "px";
		document.getElementById("mask_d").style.top = d_top + "px";
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(mheight/zoom).toString();
		if (slave_x) {
			var larg = Math.round(mheight*ratio);
			var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
			if (larg > max_W) {
				larg = max_W;
				c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = 0;
				mheight = Math.round(larg/ratio);
				d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(mheight);
				d_height=limit_bottom-d_top+1;
			}
			else {
				c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = limit_right-c_left+1;
			}
			document.getElementById("mask").style.width = larg.toString()+"px";
			document.getElementById("rpt").style.width = (larg+40).toString()+"px";
			document.getElementById("rpt").style.height = (mheight+40).toString()+"px";
			document.getElementById("rp").style.width = (larg).toString()+"px";
			document.getElementById("mask_c").style.left = c_left.toString() + "px";
			document.getElementById("mask_c").style.width = c_width.toString() + "px";
			document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
		}
	}
}

function hdown () {
	var pos = getPos(document.getElementById("resizeBox"));
	var zoom = parseFloat(document.getElementById("resizeForm").elements["zoom"].value);
	var mheight = document.getElementById("mask").clientHeight;
	var limit_left = pos.l;
	var limit_bottom = pos.b-2;
	var limit_right = pos.r-2;
	var bc_height = document.getElementById("mask_b").clientHeight;
	var d_height = document.getElementById("mask_d").clientHeight;
	var d_top = document.getElementById("mask_d").offsetTop;
	var slave_x = false;
	var min_H = 0;
	// Teste si le ratio est fixé, est défini quelle dimension est esclave de l'autre
	var ratio_format = new RegExp("^[0-9]*:[0-9]*$");
	if (document.getElementById("resizeForm").elements["ratio"].value != "0:0") {
		var ratio = document.getElementById("resizeForm").elements["ratio"].value;
		if (ratio.match(ratio_format)) {
			var rat = ratio.split(":");
			var ratio = parseInt(rat[0])/parseInt(rat[1]);
			slave_x = true;
			min_H = Math.round(rat[1]*zoom);
		}
	}
	
	if (mheight > 2) {
		mheight--;
		bc_height--;
		d_height++;
		d_top--;
		if (mheight < parseInt(min_H) && (slave_x)) {
			mheight = parseInt(min_H);
			bc_height = mheight-1;
			var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(mheight);
			var d_height=limit_bottom-d_top+1;
		}
		document.getElementById("mask").style.height = mheight + "px";
		document.getElementById("mask_b").style.height = bc_height + "px";
		document.getElementById("mask_c").style.height = bc_height + "px";
		document.getElementById("mask_d").style.height = d_height + "px";
		document.getElementById("mask_d").style.top = d_top + "px";
		document.getElementById("resizeForm").elements["m_height"].value = Math.round(mheight/zoom).toString();
		if (slave_x) {
			var larg = Math.round(mheight*ratio);
			var max_W = (parseInt(document.getElementById("resizeBox").clientWidth)+parseInt(limit_left))-document.getElementById("mask").offsetLeft;
			if (larg > max_W) {
				larg = max_W;
				c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = 0;
				mheight = Math.round(larg/ratio);
				var d_top = parseInt(document.getElementById("mask").offsetTop)+parseInt(mheight);
				var d_height=limit_bottom-d_top+1;
			}
			else {
				c_left = parseInt(document.getElementById("mask").offsetLeft)+parseInt(larg)+1;
				var c_width = limit_right-c_left+1;
			}
			document.getElementById("mask").style.width = larg.toString()+"px";
			document.getElementById("rpt").style.width = (larg+40).toString()+"px";
			document.getElementById("rpt").style.height = (mheight+40).toString()+"px";
			document.getElementById("rp").style.width = (larg).toString()+"px";
			document.getElementById("mask_c").style.left = c_left.toString() + "px";
			document.getElementById("mask_c").style.width = c_width.toString() + "px";
			document.getElementById("resizeForm").elements["m_width"].value = Math.round(larg/zoom).toString();
		}
	}
}

function scrolleUp (step,loop,delay,item) {
	var posY = document.getElementById(item+"_scrollIt").style.top;
	posY = parseInt(posY.substr(0,posY.length-2));
	var delai = 0;
	var room = 0;
	var moveRatio = 0;
	for (var i=0;i < loop;i++) {
		if (posY >= 0)
			posY = 0;
		else
			posY += step;
		delai += delay;
		window.setTimeout("document.getElementById(\""+item+"_scrollIt\").style.top = "+posY.toString()+" + 'px'",delai);
		room = document.getElementById(item+"_scrollBar").clientHeight - document.getElementById(item+"_scrollBtn").clientHeight;
		moveRatio = Math.ceil((Math.abs(posY)*100)/limite);
		tr = Math.ceil((moveRatio*room)/100);
				
		window.setTimeout("document.getElementById(\""+item+"_scrollBtn\").style.top = "+tr.toString()+" + 'px'",delai);
		//window.setTimeout("document.getElementById(\""+item+"_scrollIt\").style.top = "+posY.toString()+" + 'px'",delai);
		if (posY == 0)
			break;
	}
}

function scrolleDown (step,loop,delay,item) {
	var posY = document.getElementById(item+"_scrollIt").style.top;
	posY = parseInt(posY.substr(0,posY.length-2));
	var inHeight = document.getElementById(item+"_scrollIt").clientHeight;
	var outHeight = document.getElementById(item+"_scrollIt").parentNode.clientHeight;
	limite = inHeight - outHeight;
	var delai = 0;
	var room = document.getElementById(item+"_scrollBar").clientHeight - document.getElementById(item+"_scrollBtn").clientHeight;
	var moveRatio = 0;
	var tr = 0;
	for (var i=0;i < loop;i++) {
		if (Math.abs(posY) >= limite) break;
		posY -= step;
		delai += delay;
		window.setTimeout("document.getElementById(\""+item+"_scrollIt\").style.top = "+posY.toString()+" + 'px'",delai);
		room = document.getElementById(item+"_scrollBar").clientHeight - document.getElementById(item+"_scrollBtn").clientHeight;
		moveRatio = Math.ceil((Math.abs(posY)*100)/limite);
		tr = Math.ceil((moveRatio*room)/100);
		if (tr >= room)
			tr = room;
		//document.getElementById("testah").innerHTML += "limite: "+limite+", room: "+room+", moveRatio: "+moveRatio+", posY: "+posY+", tr: "+tr+"<br/>";
		window.setTimeout("document.getElementById(\""+item+"_scrollBtn\").style.top = "+tr.toString()+" + 'px'",delai);
		//window.setTimeout("document.getElementById(\""+item+"_scrollIt\").style.top = "+posY.toString()+" + 'px'",delai);
	}
}

function dragscroll (event) {
	iMouseDown  = true;
	lMouseState = false;
	event = event || window.event;
	var mousePos = mouseCoords(event);
	
	var wheeler = document.getElementById("paramForm").elements["wheelers"].value;
	var p = getPos(document.getElementById(wheeler+"_scrollBtn"));
	document.getElementById("paramForm").elements.scrollBtn_offsetY.value = mousePos.y - p.t;
	
	if (event.preventDefault) {
		event.preventDefault();
	}
	
	var elem = event.target || event.srcElement;
	if (elem.addEventListener) {
		elem.addEventListener("mousedown", dragscroll, false);
	}
	else if (elem.attachEvent) {
		elem.attachEvent("onmousedown", dragscroll);
	}
	callah = "dragscroll";
}

function scrollIt(delta) {
  var coef = 4;
  var wheeler = document.getElementById("paramForm").elements["wheelers"].value;
	if (delta < 0) {
		scrolleDown(coef*Math.abs(delta),9,8,wheeler);
	}
  else {
		scrolleUp(coef*delta,9,8,wheeler);
	}
}

/** Event handler for mouse wheel event.
 */
function wheel(event){
        var delta = 0;
        var wheeler = document.getElementById("paramForm").elements["wheelers"].value;
        if (!event) /* For IE. */
                event = window.event;
        if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.
                 */
                delta = -event.detail/3;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
        if (delta && wheeler != "") {
					if (ishover(document.getElementById(wheeler),event)) {
						scrollIt(delta);
						if (event.preventDefault)
		          event.preventDefault();
						event.returnValue = false;
					}
					else {
						
					}
				}
}

/** Initialization code. 
 * If you use your own event management code, change it as required.
 */ 

if (window.addEventListener)
        /** DOMMouseScroll is for mozilla. */
        window.addEventListener('DOMMouseScroll', wheel, false);
/** IE/Opera. */
window.onmousewheel = document.onmousewheel = wheel;

function switch_color () {
	if (rcol == "001D4F")
		rcol = "d0d0d0";
	else
		rcol = "001D4F";
	
	document.getElementById("mask").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_nw").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_n").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_ne").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_w").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_e").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_sw").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_s").style.borderColor = "#"+rcol.toString();
	document.getElementById("rp_se").style.borderColor = "#"+rcol.toString();
	document.getElementById("mask_a").style.borderColor = "#"+rcol.toString();
	document.getElementById("mask_b").style.borderColor = "#"+rcol.toString();
	document.getElementById("mask_c").style.borderColor = "#"+rcol.toString();
	document.getElementById("mask_d").style.borderColor = "#"+rcol.toString();
}

function check_box (box) {
	var val_id = box.id + "_val";
	if (document.getElementById(val_id).value.toString() == "0") {
		document.getElementById(val_id).value = "1";
		box.style.backgroundPosition = "0px -19px";
	}
	else {
		document.getElementById(val_id).value = "0";
		box.style.backgroundPosition = "0px 0px";
	}	
}

/**
* fonction getXhr() qui crée et retourne un objet XMLHTTPRequest
*
* @return object xhr;
**/
function getXhr() {
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	   try {
       xhr = new ActiveXObject("Msxml2.XMLHTTP");
  	 } catch (e) {
       xhr = new ActiveXObject("Microsoft.XMLHTTP");
  	 }
	}
	else { // XMLHttpRequest non supporté par le navigateur 
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   xhr = false; 
	} 
	return xhr;
}






