
var _x, _y,_status = R_MOVE;
var R_ROTATE = 1;
var R_MOVE = 0;

var binded = false;

var rep = 0;

function ruler_PickFunc() { window.focus(); }

function ruler_DragFunc()
{	
	if (_status == R_ROTATE) {
		if (ruler.img.src != '/image/spacer.gif') 
			ruler.img.swapImage('/image/spacer.gif');
		
		var z = Math.sqrt(Math.pow((ruler._x - dd.e.e.clientX), 2) + Math.pow((ruler._y - dd.e.e.clientY),2));
		ruler.angle = Math.PI - Math.acos((ruler._x - dd.e.e.clientX)/z);
		if ((ruler._y - dd.e.e.clientY) < 0) ruler.angle = -ruler.angle;
		
		if ( isNaN(ruler.dangle) ) {
			ruler.dangle = ruler.angle - ruler._angle;
		}
		
		ruler.angle -= ruler.dangle;
		ruler.draw();
	} else {
		ruler._x = ruler.img.x - ruler.dx;
		ruler._y = ruler.img.y - ruler.dy;
	}

}

function ruler_DropFunc()
{
	if (_status == R_ROTATE) {
		var x = ruler.x;
		var y = ruler.y;
		
		var xmax = Math.max(x[0], x[1], x[2], x[3]);
		var ymax = Math.max(y[0], y[1], y[2], y[3]);
		
		var xmin = Math.min(x[0], x[1], x[2], x[3]);
		var ymin = Math.min(y[0], y[1], y[2], y[3]);
		
		ruler.img.moveTo(xmin, ymin);
		ruler.img.resizeTo(xmax - xmin, ymax - ymin);
		ruler.img.swapImage('/scripts/ruler/?angle=' + ruler.angle + '&img=' + ruler.img.defsrc);
				
		ruler.dx = xmin - x[0];
		ruler.dy = ymin - y[0];
		

		ruler.jg.clear();
		
		ruler._angle = ruler.angle;
		ruler.dangle = NaN;
	} else {
		ruler._x = ruler.img.x - ruler.dx;
		ruler._y = ruler.img.y - ruler.dy;
	}
}

function myRuler() 
{
	SET_DHTML('myRuler' + CURSOR_HAND);
	this.img = dd.elements.myRuler;
	
	dd.elements.myRuler.setPickFunc(ruler_PickFunc);
	dd.elements.myRuler.setDropFunc(ruler_DropFunc);
	dd.elements.myRuler.setDragFunc(ruler_DragFunc);
	
	this.x = [this.img.x, this.img.x + this.img.w, this.img.x, this.img.x + this.img.w];
	this.y = [this.img.y, this.img.y + this.img.h, this.img.y, this.img.y + this.img.h];
	this._x = 0, this._y = 0;
	this.dx = 0, this.dy = 0;
	this.angle = 0, this.dangle = NaN; this._angle = 0;
	
	this.jg = new jsGraphics("myCanvas");
	
	if (!binded) {
		$(document).bind('keydown', function(event) { 
			if (event.keyCode == 32) {
				_status = R_ROTATE;
				//$('textarea').trigger('blur');  
			}
		});
		
		
		$(document).bind('keyup', function(event) { 
			if (event.keyCode == 32) { 
				ruler_DropFunc(); 
				_status = R_MOVE; 
				ruler.img.show(); 
			} 
		});
		binded = true;
	}	
}

myRuler.prototype.draw = function() 
{
	this.jg.clear();
	this.jg.setColor("gold");
	
	var x = this.x, y = this.y;
	
	var size = $.iUtil.getSize(document.getElementById('myRuler'));
	
	x[0] = this._x;
	y[0] = this._y;
	x[1] = x[0] + size.w*Math.cos(this.angle); 
	y[1] = y[0] - size.w*Math.sin(this.angle);
	x[3] = x[0] + size.h*Math.cos(3.14/2 - this.angle);
	y[3] = y[0] + size.h*Math.sin(3.14/2 - this.angle);
	x[2] = x[1] + size.h*Math.cos(3.14/2 - this.angle);
	y[2] = y[1] + size.h*Math.sin(3.14/2 - this.angle);
	
	/*
	var _x = x[0] + 100*Math.cos(this.angle),
		_y = y[0] - 100*Math.sin(this.angle);
	*/
	
	this.x = x;
	this.y = y;

	this.jg.drawLine(x[0], y[0], x[1], y[1]);
	//this.jg.fillPolygon(x, y);
	this.jg.paint();		
}
