var newbox;
var newbox_id;
var node = '200';

function setnewbox(this_box) {

	newbox = document.getElementById(this_box);
	newbox_id = this_box;
}

function getnewbox() {

	return newbox;
}

function getnewbox_id() {

	return newbox_id;
}

function windowLoaded(evt) {
	// prevent IE text selection while dragging!!! Little-known trick!
	document.body.ondrag = function () { return false; };
	document.body.onselectstart = function () { return false; };
}

function windowUnLoaded(evt) {
	// prevent IE text selection while dragging!!! Little-known trick!
	document.body.ondrag = function () { return true; };
	document.body.onselectstart = function () { return true; };
}

function getBoxWidth(node) {
	return parseInt(node.style.width);
}

function getBoxHeight(node) {
	return parseInt(node.style.height);
}

function getX(node) {
	return parseInt(node.style.left);
}

function getY(node) {
	return parseInt(node.style.top);
}

function setX(node,x) {
	node.style.left = x + "px";
}

function setY(node,y) {
	node.style.top = y + "px";
}

///Event

function Evt(evt) {
	this.evt = evt ? evt : window.event;
	this.source = evt.target ? evt.target : evt.srcElement;
	this.x = evt.pageX ? evt.pageX : evt.clientX;
	this.y = evt.pageY ? evt.pageY : evt.clientY;
}

Evt.prototype.toString = function () {
	return "Evt [ x = " + this.x + ", y = " + this.y + " ]";
};

Evt.prototype.consume = function () {

	if (this.evt.stopPropagation) {

		this.evt.stopPropagation();
		this.evt.preventDefault();
	} else if (this.evt.cancelBubble) {

		this.evt.cancelBubble = true;
		this.evt.returnValue  = false;
	}
};

Evt.addEventListener = function (target,type,func,bubbles) {
	if (document.addEventListener) {
		target.addEventListener(type,func,bubbles);
	} else if (document.attachEvent) {
		target.attachEvent("on"+type,func,bubbles);
	} else {
		target["on"+type] = func;
	}
};

Evt.removeEventListener = function (target,type,func,bubbles) {

	if (document.removeEventListener) {
		target.removeEventListener(type,func,bubbles);
	} else if (document.detachEvent) {
		target.detachEvent("on"+type,func,bubbles);
	} else {
		target["on"+type] = null;
	}
};

///Event

var busy_thread = false;

function setThreadBusy() {

	busy_thread = true;
}

function setThreadFree() {

	busy_thread = false;
}

function IsThreadBusy() {

	return busy_thread;
}

var prd_id;

function getProductId() {

	return prd_id;
}

function setProductId(p_id) {

	prd_id = p_id;
}

function drag(evt, newbox, productid) {

	if(productid != getProductId()) {

		showVideoDetails(productid);
	}

	setProductId(productid);
	open_playlist();
	setnewbox(newbox);

	if(IsThreadBusy()) {

		return false;
	}

	setThreadBusy();

	//alert(IsThreadBusy());

	evt = new Evt(evt);
	
	newbox = document.getElementById(newbox);
	newbox.style.left	 = evt.x - 80;
	newbox.style.display = "block";

	var left = getX(newbox);
	var top = getY(newbox);

	document.getElementById('x0').value = parseInt(left);
	document.getElementById('y0').value = parseInt(top);
	
	windowLoaded(evt);
	
	deltaX = evt.x - getX(newbox);
	deltaY = evt.y - getY(newbox);

	setX(newbox,left);
	setY(newbox,top);

	evt.consume();

	Evt.addEventListener(document,"mousemove",dragMove,false);
	Evt.addEventListener(document,"mouseup",dragRelease,false);
}

function dragMove(evt) {

	newbox = getnewbox();
					
	evt = new Evt(evt);

	if(!isNaN(deltaX) && !isNaN(deltaY))
	{
		from_left = evt.x - deltaX;
		from_top = evt.y - deltaY;

		setX(newbox,from_left);
		setY(newbox,from_top);

		evt.consume();
	}
}

function getNewArray() {

	var path_array = new Array(2);
	
	path_array[0] = new Array();
	path_array[1] = new Array();

	return path_array;
}

var size;


function revertBack(x, y) {

	x_dim = document.getElementById("x0").value;
	y_dim = document.getElementById("y0").value;

	path_array = getPath(x_dim, y_dim, x, y);

	size = parseInt(path_array[0].length) -1;
	move_interval = setInterval('revertPosition()', 1);
}

function IsItemExist(prod_id, target) {

	if(target == "cart") {
		obj = document.cart_form;
	}
	else {
		obj = document.playlist_form;
	}

	size = obj.elements.length;
	if(size)
	for(i=0 ;i<size; i++) {
		if(obj.elements[i].value == prod_id) {
			return true;
		}
	}
	return false;	
}

function IsPlaylistEmpty() {
	if(!document.playlist_form) return true;
	if(document.playlist_form.elements.length == 0) {
		return true;
	}
	return false;	
}

function revertPosition() {
//	alert("dsda");

	newbox = getnewbox();
//	alert(newbox);
	newbox.style.left = path_array[0][size];
	newbox.style.top = path_array[1][size];

	size = size - 15;
	
	if(size < 0) {

		newbox.style.left = path_array[0][0];
		newbox.style.top = path_array[1][0];

		clearInterval(move_interval);
		setThreadFree();
		newbox.style.display = "none";
	}
}

function setArray(x0, y0) {
	
	path_array[0][x_pos++] = x0;
	path_array[1][y_pos++] = y0;
}

function getPath(x0, y0, x1, y1)
{

	path_array = getNewArray();

	x0 = parseInt(x0);
	y0 = parseInt(y0);
	x1 = parseInt(x1);
	y1 = parseInt(y1);

	var x_pos = 0;
	var y_pos = 0;
	
	dy = y1 - y0;
	dx = x1 - x0;

	var t = parseFloat(0.5);                     // offset for rounding

	path_array[0][x_pos] = x0;
	path_array[1][y_pos] = y0;

	x_pos ++ ;
	y_pos ++ ;

	if (Math.abs(dx) > Math.abs(dy)) {          // slope < 1
		var m = parseFloat(dy) / parseFloat(dx);      // compute slope
		var b = y0 - m*x0;
		dx = (dx < 0) ? -1 : 1;
		while (x0 != x1) {
			x0 += dx;

			path_array[0][x_pos] = x0;
			path_array[1][y_pos] = Math.round(m*x0 + b);

			x_pos ++ ;
			y_pos ++ ;

		}
	}
	else if (dy != 0) {                              // slope >= 1
		
		var m = parseFloat(dx) / parseFloat(dy);      // compute slope
		var b = x0 - m*y0;
		dy = (dy < 0) ? -1 : 1;
		while (y0 != y1) {
			y0 += dy;

			path_array[0][x_pos] = Math.round(m*y0 + b);
			path_array[1][y_pos] = y0;

			x_pos ++ ;
			y_pos ++ ;
		}
	}

	return path_array;

}

var isNS = false;
var isIE = false;
if (document.layers) isNS=true;
if (document.all) isIE=true;
var s = 0;

function getObject(id) {

	if (isNS) obj="document."+id;
	if (isIE) obj=id+".style";
	var object=eval(obj);
	return object;
}

function clipIt(o,t,r,b,l) {

	var object=getObject(o);

	if (isNS) {

		object.clip.top=t;
		object.clip.right=r;
		object.clip.bottom=b;
		object.clip.left=l;
	}
	else {
		object.clip="rect("+t+" "+r+" "+b+" "+l+")";
	}
}

function getHeight(o) {
	

	var object=getObject(o);
	if (isNS) {

		return parseInt(object.clip.height);
	}
	else {

		return parseInt(object.height);
	}
}

function getWidth(o) {

	var object=getObject(o);
	if (isNS) {

		return parseInt(object.clip.width);
	}
	else {
		return parseInt(object.width);
	}
}

function wipeThis(o, time) {

	h=getHeight(o);
	w=getWidth(o);
	WipeObject=o;
	msec=time;

	BoxIn();
}

function BoxIn() {

	newbox = getnewbox();

	if (s<=50) {
		s += 3;
		t=h/100*s;
		r=w-w/100*s;
		b=h-h/100*s;
		l=w/100*s;
		clipIt(WipeObject,t,r,b,l);
		setTimeout("BoxIn()", msec/150);
	}
	else {
		newbox.style.left = document.getElementById("x0").value;
		newbox.style.top = document.getElementById("y0").value;
		newbox.style.display = "none";
		clipIt(WipeObject,0,200,200,0);
		setThreadFree();
		s = 0;
	}
}

function setTrue() {

	document.getElementById("ok").value = "true";
}

function setFalse() {

	document.getElementById("ok").value = "false";
}

function dragWindow(evt, newbox) {
	
	setnewbox(newbox);

	evt = new Evt(evt);

	frame_area = getnewbox();

	var left = getX(frame_area);
	var top = getY(frame_area);

	windowLoaded(evt);

	deltaX = evt.x - left;
	deltaY = evt.y - top;

	setX(frame_area,left);
	setY(frame_area,top);

	evt.consume();

	Evt.addEventListener(document,"mousemove",dragMoveWindow,false);
	Evt.addEventListener(document,"mouseup",dragReleaseWindow,false);
}

function dragMoveWindow(evt) {

	frame_area = getnewbox();
					
	evt = new Evt(evt);

	if(!isNaN(deltaX) && !isNaN(deltaY))
	{
		from_left = evt.x - deltaX;
		from_top = evt.y - deltaY;

		if(from_left < 1) {
			from_left = 1;
		}
		
		if(from_left > 760) {
			from_left = 760;
		}

		if(from_top < 1) {
			from_top = 1;
		}

		if(from_top > 500) {
			from_top = 500;
		}

		setX(frame_area,from_left);
		setY(frame_area,from_top);

		evt.consume();
	}
}

function dragReleaseWindow(evt) {

	frame_area = getnewbox();

	evt = new Evt(evt);

	var left = getX(frame_area);
	var top = getY(frame_area);

	deltaX = evt.x - getX(frame_area);
	deltaY = evt.y - getY(frame_area);

	setX(frame_area,left);
	setY(frame_area,top);	
	windowUnLoaded(window.event);
	Evt.removeEventListener(document,"mousemove",dragMoveWindow,false);
	Evt.removeEventListener(document,"mouseup",dragReleaseWindow,false);

}

