/************************************/
/* zoom.js - Zoom avec sélection    */
/* Matthieu Vion - 2007             */
/* http://www.crea-web.fr           */
/************************************/

var x_init,y_init,p_x_init,p_y_init,top,left,width,height,s=0;
var rectangle,r,positions,z,rs,image;

function init(i, z, r, s) {
	this.r=r;this.s=s;this.z=z;
	image=document.getElementById(i);
	create();
	image.onmousedown=down;
	positions=findPos(image);
}

function deplace(event) {
	if(!event) event = window.event;
	x_init=event.clientX+positions[0];y_init=event.clientY+positions[1];
	document.onmousemove=change;document.onclick=quit;
}

function change(event) {
	if(!event) event = window.event;
	x_new=event.clientX;y_new=event.clientY;
	rs.marginLeft=x_new+'px';rs.marginTop=y_new+'px';
	rs.backgroundPosition=((-x_new+positions[0])*r)+'px '+((-y_new+positions[1])*r)+'px';
}

function up(event) {
	if(!event) event = window.event;
	document.onmouseup = "";document.onmousedown = "";document.onmousemove = deplace;
	p_x_end = event.clientX - positions[0];p_y_end = - (event.clientY - positions[1]);
	if(p_x_init <= p_x_end) left = -p_x_init; else left = -p_x_end;
	if(p_y_init >= p_y_end) top = p_y_init; else top = p_y_end;
	if(p_x_end >= p_x_init) width = p_x_end-p_x_init; else width = p_x_init-p_x_end;
	if(p_y_init >= p_y_end) height = p_y_end*-1-p_y_init*-1; else height = p_y_init*-1-p_y_end*-1;
	if(width > s) width = s; if(height > s) height = s;
	rs.height = height*r+'px'; rs.width = width*r+'px';
	rs.background = "#e8e8e8 url("+z+") no-repeat"; rs.backgroundPosition = (left*r)+'px '+(top*r)+'px';$
	rs.opacity = "1"; rs.filter = "alpha(Opacity=100)"; rs.border="2px solid #666";
}

function down(event) {
	if(!event) event=window.event;
	document.onmousemove=move;
	document.onmouseup=up;
	x_init=event.clientX-2; y_init=event.clientY-2;
	p_x_init=event.clientX - positions[0]; p_y_init=-(event.clientY - positions[1]);
	rs.visibility="visible";
	move(event);
}

function move(event) {
	if(!event) event = window.event;
	x_new = event.clientX; y_new = event.clientY;
	if (x_new >= x_init) { if(x_new - x_init < s) { rs.marginLeft = x_init+'px'; rs.width = (x_new - x_init)+'px';}}
	else { if(x_init - x_new < s) {rs.marginLeft = x_new+'px'; rs.width = (x_init - x_new)+'px';}}
	if (y_new >= y_init) { if(y_new - y_init < s) {rs.marginTop = y_init+'px'; rs.height = (y_new - y_init)+'px';}}
	else {if(y_init - y_new < s) {rs.marginTop = y_new+'px'; rs.height = (y_init - y_new)+'px';}}
}

function findPos(obj) {
	var curleft,curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

function create() {
	document.write('<div id="rectangle"></div>');
	rectangle = document.getElementById("rectangle");
	rs = rectangle.style;
	dessine();
}

function dessine() {
	rs.position="absolute"; rs.left="0"; rs.top="0";
	//rs.innerHTML="<img src='"+z+"' style='width=1000px;height:1000px' />";
	rs.background="#ccd7ff"; rs.border="1px dashed #000";
	rs.opacity="1"; rs.filter="alpha(Opacity=40)";
	rs.visibility="hidden"; rs.cursor="crosshair";
}

function quit() {
	document.onmousemove = ""; document.onclick = "";
	image.onmousedown = down;
	dessine();
}