var checkDrag = true;
function drag(evt, newbox, productid, ptype){	
	if (checkDrag == false){
		alert('Please Wait...<BR>Drag is busy.', 'clearMask()');
		return false;		
	}
	
	checkDrag = false;
	setProductId(productid);
	if(!document.getElementById('playlistDivShow')){
		openPlaylist();
	}
	
	setnewbox(newbox);
	setFolder(ptype);
	if(IsThreadBusy()){
		return false;
	}
	setThreadBusy();
	
	//alert(IsThreadBusy());

	newbox1 = newbox.replace("newbox","box");
	
	old_box = findPos(document.getElementById(newbox1));
	
	evt = new Evt(evt);
	
	newbox = document.getElementById(newbox);
	//newbox.style.left	 = evt.x - 80 ;
	newbox.style.left	 = parseInt(old_box);
	
	newbox.style.display = "block";

	var left = getX(newbox);
	var top = getY(newbox);
	if(!top){
		top = document.getElementById(newbox).style.top;
	}
	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 windowLoaded(evt) {
	// prevent IE text selection while dragging!!! Little-known trick!
	document.body.ondrag = function () { return false; };
	document.body.onselectstart = function () { return false; };
}
var newbox;
var newbox_id;

function setnewbox(this_box) {

	newbox = document.getElementById(this_box);
	newbox_id = this_box;
}

function getnewbox(){
	return newbox;
}

function getnewbox_id(){
	return newbox_id;
}
var ProductIdset;
function setProductId(ProductId){
	ProductIdset = ProductId;
}

function getProductId(){
	return ProductIdset;
}
var folderName;
function setFolder(folderName){
	folderSet = folderName;
}

function getFolder(){
	return folderSet;
}
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 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;
}
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;
}

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";
}
function setnewbox(this_box) {

	newbox = document.getElementById(this_box);
	newbox_id = this_box;
}
var busy_thread = false;

function setThreadBusy() {

	busy_thread = true;
}

function setThreadFree() {	
	busy_thread = false;
}

function IsThreadBusy() {

	return busy_thread;
}
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;
	}
};
function getBoxWidth(node) {
	return parseInt(node.style.width);
}

function getBoxHeight(node) {
	return parseInt(node.style.height);
}
function IsObjectExists(tag_name) {

	obj = document.getElementById(tag_name);

	if(!obj) {
		return false;
	}
	else {
		return true;
	}
}
function getYoffset() {
	var ee = window.event;
	
	if (typeof ee.offsetY != 'undefined'){
		return ee.offsetY;
	}else if (typeof ee.pageY != 'undefined'){
		return ee.pageY - ee.target.offsetTop;
	}
}

function dragRelease(evt){	
	
	evt = new Evt(evt);
	
	x = getX(newbox);
	y = getY(newbox);
	
	box_width = getBoxWidth(newbox);
	box_height = getBoxHeight(newbox);

	x_dim = document.getElementById("x0").value;
	y_dim = document.getElementById("y0").value;
	
	//determining visibilty of object(cart/playlist)
	if(IsObjectExists("FeaturedArtisePart")) {
		obj = document.getElementById("FeaturedArtisePart");
		target = "FeaturedArtisePart";
	}
	
	pl_width = (getBoxWidth(obj)) ? getBoxWidth(obj) : 186;
	pl_height = (getBoxHeight(obj)) ? getBoxHeight(obj) : 600;
	//var e = (e) ? e : window.event;
	var e = window.event;
	
	//scroll_down = getYoffset();
	
	//scroll_down = document.body.scrollTop;
	scroll_down = document.documentElement.scrollTop;
	//alert(scroll_down);	
	//pl_x = parseInt(screen.width / 2) - 300;
	pl_x = 250;
	
	if (navigator.appName == 'Netscape'){
		pl_y = parseInt(600+scroll_down);
	}else{
		pl_y = parseInt(600);
	}
	
	flag = false;
	//var Evt = window.event;
	//var newX = (e.clientX) ? e.clientX : evt.x;		
	
	//var win_x = e.clientX;
	var win_x = evt.x;
	
	win_y = parseInt(evt.y + scroll_down);
	
	//alert('pl x:' + pl_x+"winx"+win_x);
	//alert('pl width:' +win_x + pl_x + pl_width);		
	//alert('pl width:' + pl_width);		
	//alert('pl y:' + pl_y+"winy"+win_y);
	//alert('pl height:' + pl_y + pl_height);
	//alert('pl height:' + pl_height);
	//alert('box x:' + x);
	//alert('box y:' + y);
	
	
	if((win_x >= pl_x && win_x <= (pl_x + pl_width)) && (win_y >= pl_y && win_y <= (pl_y + pl_height))) {
		
		prod_id = getProductId();
		folder  = getFolder();
       
	XMLHttp = null;
	 if(window.XMLHttpRequest) {
		XMLHttp = new XMLHttpRequest();
	}else if(window.ActiveXObject) {
		XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
		
		if(prod_id && folder){
			var url_check = "sessionckeck.php?prod_id="+prod_id+"&folder="+folder;
			 
			XMLHttp.open("GET", url_check, true);
			XMLHttp.onreadystatechange = function test(){
							   
				if(XMLHttp.readyState == 4) {
					//alert(XMLHttp.responseText);
					if (XMLHttp.responseText == 'exist'){			
						alert("this video or music already exists please add another");
						revertBack(x,y);
					}else{		
						this_box = getnewbox_id();
						wipeThis(this_box, 1000);

						//adding to plalist
						if(target == "FeaturedArtisePart") {
							AddToPlaylist(prod_id, folder);
							checkDrag = true;
						}					
					}
				}			
			}
			XMLHttp.send(null);
		}else{
			revertBack(x,y);
		}
		
	}else{
		revertBack(x,y);
	}
	windowUnLoaded(window.event);
	Evt.removeEventListener(document,"mousemove",dragMove,false);
	Evt.removeEventListener(document,"mouseup",dragRelease,false);
	
}
var isNS = false;
var isIE = false;
if (document.layers) isNS=true;
if (document.all) isIE=true;
var s = 0;

function getHeight(o) {
	
	var object=getObject(o);
	if(isNS){
		return parseInt(object.clip.height);
	}else{
		return parseInt(object.height);
	}
}
function getObject(id) {

	if (isNS) obj="document."+id;
	if (isIE) obj=id+".style";
	var object=eval(obj);
	return object;
}

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 windowUnLoaded(evt) {
	// prevent IE text selection while dragging!!! Little-known trick!
	document.body.ondrag = function () { return true; };
	document.body.onselectstart = function () { return true; };
}

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;
//		alert(t +' '+ r +' '+ b +' '+ l);
		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 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 revertBack(x, y) {
	
	var x_dim = document.getElementById("x0").value;
	var 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 revertPosition() {
	
	newbox = getnewbox();
	
	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();
		checkDrag = true;
		newbox.style.display = "none";
	}
}

function getNewArray() {

	var path_array = new Array(2);
	
	path_array[0] = new Array();
	path_array[1] = new Array();

	return path_array;
}

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;

}
