window.dragObject = null;
window.dragvn = null;
window.mouseOffset = null;
window.ox = 0;
window.oy = 0;
window.xoffset = 0;
window.fxoffset = 0;

handleMouseDown = function(event) {
	window.dragObject = event.originalTarget || event.target;
	window.mouseOffset = getMouseOffset(window.dragObject, event);
	try{
		window.dragvn = window.dragObject.getAttribute('vn');
	}catch(e) {}
	try {
	if (window.dragObject.className == "progress_indicator")
		eval(window.dragObject.getAttribute('vn')).startDragging();
	} catch(e) {}
}

handleMouseOup = function(event) {
	try {
	if (window.dragObject.className == "progress_indicator") {
		eval(window.dragObject.getAttribute('vn')).finishedDragging();
		handleBarClick(event,window.dragObject.getAttribute('vn' ));
	}
	window.dragObject = null;
	window.ox = 0;
	window.oy = 0;
	window.dragvn=null;
	//window.xoffset = 0;
	}catch(e) {}
}

handleMouseMove = function(event) {
	//console.log(event)
	try {
		if (window.dragObject)
		{
			if (window.dragObject.hasAttribute("candrag"))
			{
				if (window.dragObject.className == "volume_indicator")
				{
					//moveVolumeIndicator(window.dragObject, event);
				}
				
				if (window.dragObject.className == "controlsbar fullscreen")
				{
					movePlayer(window.dragObject, event);
				}
				if (window.dragObject.className == "progress_indicator")
				{
					moveProgressIndicator(window.dragObject, event);
				}
			}
		}
		
		if (window.fullscreenElement !== false)
		{
			eval(window.fullscreenElement+".mouseMove()");
		}
	} catch(e) {}
}

moveProgressIndicator = function(object,ev) {
	
	mousePos = mouseCoords(ev);
	x = window.dragObject.getBoundingClientRect().left - parseInt(window.dragObject.style.left);
	
	//console.log(parseInt(window.dragObject.style.left));
	//var offset = window.pageXOffset;
	//if (eval(window.dragObject.getAttribute('vn')).fullscreen)
	if (1)
	{
			if (window.fxoffset == 0) {
				window.fxoffset = x;
			//console.log(mousePos.x, x, window.xoffset);
		}
		//offset = eval(window.dragObject.getAttribute('vn')).sBars.w;
	}
	/*else {
			if (window.xoffset == 0) {
				window.xoffset = x;
		}
	}*/
	
	if (x < ev.clientX)
		var t = (parseInt(window.dragObject.style.left)+1);
	else
		var t = (parseInt(window.dragObject.style.left)-1);

	//if (eval(window.dragObject.getAttribute('vn')).fullscreen)
	if (1)
	{
		var left = parseInt(eval(window.dragObject.getAttribute('vn')).controls.style.left);
		if (parseInt(window.pxoffset) != left) {
			var x = mousePos.x-window.fxoffset-5+(parseInt(window.pxoffset) - left);
			
			if (mousePos.x < window.fxoffset + 5 - parseInt(window.pxoffset) + left)
				var x = -1;
			else
				if (mousePos.x > window.fxoffset + 195 - parseInt(window.pxoffset) + left)
				var x = 190;
		}
		else {
			var x = mousePos.x-window.fxoffset-5;
			if (mousePos.x < window.fxoffset + 5) 
				var x = left - window.pxoffset;
			else if (mousePos.x > window.fxoffset + 195)
				var x = left - window.pxoffset + 190;
		}
			/**@todo borders **/
		
				
		/*if (mousePos.x < window.fxoffset + 5) 
			var x = left - window.pxoffset;
		else if (mousePos.x > window.fxoffset + 195)
			var x = left - window.pxoffset + 190;*/
			
	}
	/*else {
		var x = mousePos.x-window.xoffset - 5;
		if (mousePos.x < window.xoffset+5)
			var x = -1;
		else if (mousePos.x > window.xoffset + eval(window.dragObject.getAttribute('vn')).width - 170 )
			var x = eval(window.dragObject.getAttribute('vn')).width - 170;
	}*/
		
	//progress_elapsed_time
	
	window.dragObject.style.left = x+"px";
	
	
	//mut bara alba de play
	var obj = document.getElementById('progress_bar_'+window.dragObject.getAttribute('vn'));
	var x = findPosX(obj);
	var w = parseInt(obj.style.width);
	var e = x + w;
	//if (eval(window.dragObject.getAttribute('vn')).fullscreen)
	if (1)
	{
		x = obj.getBoundingClientRect().left;
		var d = ev.clientX  - x;
		w = 200;
	} /*else {
		var d = ev.clientX - x;
	}*/
	var v = (d/w);
	if (v < 0) v = 0;
	if (v > 1) v = 1;
	v = v * 100;
	document.getElementById('progress_elapsed_time_'+window.dragObject.getAttribute('vn')).style.width = v+"%";
	//eval(vn+".jumpTo("+v+", "+event.clientX+")");
	
}

movePlayer = function(object, ev)
{
	mousePos = mouseCoords(ev);
	
	
	var offset = window.pageYOffset;
	/*if (eval(window.dragObject.getAttribute('vn')).fullscreen)
	{
		offset = eval(window.dragObject.getAttribute('vn')).sBars.h;
	}*/
	//object.style.MozTransform = "";
	//object.style.webkitTransform = "";
	
	
	
	var mo = getMouseOffset(object, ev);
	/*if (parseInt(object.style.MozTransform.substring(object.style.MozTransform.indexOf(" "))) != 0)
	{
		object.style.MozTransform = "translate(0px, 0px)";
		object.style.top = + parseInt(object.style.MozTransform.substring(object.style.MozTransform.indexOf(" ")))+"px";
	}*/
	
	if (window.ox == 0)
	{
		pos = getPos(object);
		window.ox = mo.x + pos.x - parseInt(object.style.left);
		//var top = parseInt(object.style.MozTransform.substring(object.style.MozTransform.indexOf(" ")));
		//window.oy = mo.y + pos.y - top;
		window.oy = mo.y + pos.y - parseInt(object.style.top);
	}
	
	//verific daca are top auto si transform, socotesc dif de sus si pun pe zero si updatez top
	
	
	
	
	//console.log(object.getBoundingClientRect().left, object.getBoundingClientRect().top);
	//console.log(mousePos.x, pos.x, window.ox);
	object.style.position = "absolute"
	object.style.left = mousePos.x - window.ox +"px";
	object.style.top = mousePos.y - window.oy + "px";
	
}

moveVolumeIndicator = function(object,ev) {
	mousePos = mouseCoords(ev);
	var offset = window.pageYOffset;
	//if (eval(window.dragObject.getAttribute('vn')).fullscreen)
	if (1)
	{
		offset = eval(window.dragObject.getAttribute('vn')).sBars.h;
	}
	
	y = findPosY(window.dragObject) - offset;
	
	if (y < ev.clientY)
		var t = (parseInt(window.dragObject.style.top)+1);
	else
		var t = (parseInt(window.dragObject.style.top)-1);

	if (t < 0) t = 0;
	if (t >= 0 && t <= 60) {
		window.dragObject.style.top = t+"px";

		var d = (t-60);
		if (d < 0) d = -1 * d;

		var n = (d/60);
		eval(window.dragObject.getAttribute('vn')).adjustVolume(n);
	}
	return false;
}


mouseCoords = function(ev) {
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}


getMouseOffset = function(target, ev) {
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

getPos = function(object)
{
	return {x:object.getBoundingClientRect().left, y:object.getBoundingClientRect().top}
}

getPosition = function(e) {
	var left = 0;
	var top  = 0;

	try {
		while (e.offsetParent) {
			left += e.offsetLeft;
			top  += e.offsetTop;
			e     = e.offsetParent;
		}

		left += e.offsetLeft;
		top  += e.offsetTop;
	} catch(e) {}


	return {x:left, y:top};
}

function findPosX(obj)
{
	var curleft = 0;
	if(obj.offsetParent)
	while(1)
	{
		curleft += obj.offsetLeft;
		if(!obj.offsetParent)
		break;
		obj = obj.offsetParent;
	}
	else if(obj.x)
	curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	window.parents = new Array();
	var curtop = 0;
	if(obj.offsetParent)
	while(1)
	{
		if (obj.offsetTop != 0)
		window.parents.push(obj);
		
		curtop += obj.offsetTop;
		if(!obj.offsetParent)
		break;
		obj = obj.offsetParent;
	}
	else if(obj.y)
	curtop += obj.y;
	return curtop;
}


function handleBarClick(event, vn)
{
	var obj = document.getElementById('progress_bar_'+vn);
	
	var x = findPosX(obj);
	var w = parseInt(obj.style.width);

	var e = x + w;
	//if (eval(vn).fullscreen)
	if (1)
	{
		x = obj.getBoundingClientRect().left;
		var d = event.clientX  - x;
		w = 200;
	} /*else {
		var d = event.clientX - x;
	}*/

	var v = (d/w);
	eval(vn+".jumpTo("+v+", "+event.clientX+")");
}

function getDocDimensions(min) {
	var D = document;
	var width = Math.max(
		Math.max(D.body.scrollWidth, D.documentElement.scrollWidth),
		Math.max(D.body.offsetWidth, D.documentElement.offsetWidth),
		Math.max(D.body.clientWidth, D.documentElement.clientWidth))
	;
	var height = Math.max(
		Math.max(D.body.scrollHeight, D.documentElement.scrollHeight),
		Math.max(D.body.offsetHeight, D.documentElement.offsetHeight),
		Math.max(D.body.clientHeight, D.documentElement.clientHeight))
	;
	
	if (min)
	{
		var height = Math.max(window.innerHeight, window.innerHeight);
	}
	return {'width': width, 'height': height};
}

function getScrollPosition()
{
	return {"w":window.pageXOffset, "h":window.pageYOffset};
}

document.addEventListener('mousedown',handleMouseDown,false);
document.addEventListener('mouseup',handleMouseOup,false);
document.addEventListener('mousemove',handleMouseMove,false);
