var allowedIds = ['contextPlayerContainer', 'orContainer'];
var stopIds = ['voted_other_songs_container'];

/* Simple Drag function */
function DragWindow() {
    this.makeDragable = function (objReff)
	{
    	trace(objReff);
		if (Config.browserName == "msie") {
			objReff.attachEvent("onmousedown",popupDragMouseDownHandler);
			objReff.attachEvent("onmouseover",popupDragMouseOverHandler);
		} else {
			objReff.addEventListener("mousedown",popupDragMouseDownHandler,false);
			objReff.addEventListener("mouseover",popupDragMouseOverHandler,false);
		}
		dragObjectReff = objReff;
	}
    return false;
}

var dragingNow = false;
var initialMouseX;
var initialMouseY; 
var initialObjectX;
var initialObjectY; 
  
function popupDragMouseDownHandler(e)  {
	if(!e) e = window.event;
	var objReff = getEventSrc(e);
	var tempTag = objReff.tagName.toLowerCase();
	if (tempTag == "embed" || tempTag == "object" || tempTag == "a") { return false; }
	objReff = allowed(objReff);
	if (!objReff) return false;
    dragingNow = true;
    initialObjectX = getLeft(objReff);
    initialObjectY = getTop(objReff);
    initialMouseX = MouseMonitor.getInstance().getX();
    initialMouseY = MouseMonitor.getInstance().getY();  
    objReff.style.margin='0px';
	objReff.style.left = initialObjectX + (Config.browserName == 'msie' ? "" : "px" );
    objReff.style.top = initialObjectY + (Config.browserName == 'msie' ? "" : "px" );
}

function popupDragMouseUpHandler(e)
{
	if(!e) e = window.event;
	var objReff = getEventSrc(e);
	objReff = allowed(objReff);
	if (!objReff) return false;
	dragingNow = false;
	if (typeof(objReff) == 'function') {
		objReff.onclick =  function a () { return false; } 
	}
	objReff.style.cursor = "";     
}

function popupDragMouseMoveHandler(e)
{
	if (dragingNow == true) {
		
		if(!e) e = window.event;
		var objReff = getEventSrc(e);
		objReff = allowed(objReff);
		if (!objReff) return false;
		
		// disableSelection();
		var currentX = MouseMonitor.getInstance().getX();
		var xDiff = initialMouseX - currentX;
		var currentY = MouseMonitor.getInstance().getY();
		var yDiff = initialMouseY - currentY;
		
		objReff.style.left = (initialObjectX - xDiff) + (Config.browserName == 'msie' ? "" : "px" );
        objReff.style.top = (initialObjectY - yDiff) + (Config.browserName == 'msie' ? "" : "px" );
    }
}

function popupDragMouseOverHandler (e) {
	if(!e) e = window.event;
	var objReff = getEventSrc(e);
	objReff.style.cursor = "";
	objReff = allowed(objReff);
	if (!objReff) return false;
	objReff.style.cursor = "move";
}

function disableSelection() {
	switch (Config.browserName) {
		case 'msie':
			if (document.selection) document.selection.empty();
			break;
		case 'firefox':
			window.getSelection().removeAllRanges();
			break;
		case 'safari':
			break;
    }
}

function stopTest(obj) {
	for (var i in stopIds) {
		if (obj.id == stopIds[i]) return true;
	}
	return false;
}

function allowed(objReff) {
	for (var i in allowedIds) {
		var obj = objReff;
		while (obj != null) {
			if (stopTest(obj)) return null;
			if (obj.id == allowedIds[i]) return obj;
			obj = obj.parentNode;
		}
	}
	return null;
}
 
if (Config.browserName == "msie") {
	document.attachEvent("onmouseup",popupDragMouseUpHandler);
	document.attachEvent("onmousemove",popupDragMouseMoveHandler);
} else {
	window.addEventListener("mouseup",popupDragMouseUpHandler,false);
	window.addEventListener("mousemove",popupDragMouseMoveHandler,false);
} 
 