// JavaScript Document
 var t = 0,t1 = 0;
 var imgHeight = 17, imgWidth = 17;
 var offsetX, offsetY, needToJump=false, dragObj=null, holdObj=null, trackObj=null, direction, scrollObj=null, moveObj=null, pctValueWidth=0, pctValueHeight=0;
 var arrScrollers = new Array();
  function DHTMLinit() 
  {
	initDHTMLAPI();	
	
	// Knob stuff
	document.onmousedown = engage;
	document.onmousemove = dragIt;
	document.onmouseup = release;
  }
  function initDHTMLAPI() 
  {
  	if (document.images) 
	{
    	isCSS = (document.body && document.body.style) ? true : false;
    	isW3C = (isCSS && document.getElementById) ? true : false;
    	isIE4 = (isCSS && document.all) ? true : false;
    	isNN4 = (document.layers) ? true : false;
  	}
  }
  function scroll_UP(wnobj, lyrobj, trackobj, dragobj) {
  alert('hi');
    document.getElementById(wnobj).scrollTop  =  document.getElementById(wnobj).scrollTop - 10;
	shiftTo(dragobj, 1, getDragPositionV(wnobj, lyrobj, trackobj, dragobj));
    t = setTimeout("scroll_UP('" + wnobj + "', '" + lyrobj + "', '" + trackobj + "', '" + dragobj + "')", 50);
  }
  function scroll_DOWN(wnobj, lyrobj, trackobj, dragobj) {
  alert('hi1');
    document.getElementById(wnobj).scrollTop  =  document.getElementById(wnobj).scrollTop + 10;
	shiftTo(dragobj, 1, getDragPositionV(wnobj, lyrobj, trackobj, dragobj));
    t = setTimeout("scroll_DOWN('" + wnobj + "', '" + lyrobj + "', '" + trackobj + "', '" + dragobj + "')", 50);
  }
  function getDragPosition(wnobj, lyrobj, trackobj, dragobj)
  {
	var intWnObjWidth = parseInt(document.getElementById(wnobj).offsetWidth);
	var intlyrObjWidth = parseInt(document.getElementById(lyrobj).offsetWidth);
	var inttrackObjWidth = parseInt(document.getElementById(trackobj).offsetWidth);
	var intdragObjWidth = parseInt(document.getElementById(dragobj).offsetWidth);
	var curPosition = parseInt(document.getElementById(wnobj).scrollLeft);
	var scrollAmount = (intlyrObjWidth - intWnObjWidth);
	var dragAmount = (inttrackObjWidth - intdragObjWidth);
	var posPercent = (curPosition / scrollAmount) * 100;
	var dragPosition = parseInt((dragAmount * posPercent) / 100);
	return dragPosition;
  }
  function getDragPositionV(wnobj, lyrobj, trackobj, dragobj)
  {
	var intWnObjHeight = parseInt(document.getElementById(wnobj).offsetHeight);
	var intlyrObjHeight = parseInt(document.getElementById(lyrobj).offsetHeight);
	var inttrackObjHeight = parseInt(document.getElementById(trackobj).offsetHeight);
	var intdragObjHeight = parseInt(document.getElementById(dragobj).offsetHeight);
	var curPosition = parseInt(document.getElementById(wnobj).scrollTop);
	var scrollAmount = (intlyrObjHeight - intWnObjHeight);
	var dragAmount = (inttrackObjHeight - intdragObjHeight);
	var posPercent = (curPosition / scrollAmount) * 100;
	var dragPosition = parseInt((dragAmount * posPercent) / 100);
	return dragPosition;
  }
  function scroll_LEFT(wnobj, lyrobj, trackobj, dragobj) {
    document.getElementById(wnobj).scrollLeft  =  document.getElementById(wnobj).scrollLeft - 10;	
	shiftTo(dragobj, getDragPosition(wnobj, lyrobj, trackobj, dragobj), 1);
    t = setTimeout("scroll_LEFT('" + wnobj + "', '" + lyrobj + "', '" + trackobj + "', '" + dragobj + "')", 50);
  }
  
   function scroll_RIGHT(wnobj, lyrobj, trackobj, dragobj) {
    document.getElementById(wnobj).scrollLeft  =  document.getElementById(wnobj).scrollLeft + 10;
	shiftTo(dragobj, getDragPosition(wnobj, lyrobj, trackobj, dragobj), 1);
    t = setTimeout("scroll_RIGHT('" + wnobj + "', '" + lyrobj + "', '" + trackobj + "', '" + dragobj + "')", 50);
  }
  
  function scroll_STOP()
  {
	clearTimeout(t);
  }
  function getObject(obj) 
  {
	var theObj = getRawObject(obj);
	if (theObj && isCSS)
		theObj = theObj.style;
	return theObj;
  }
  function shiftScroll(obj, x, y)
  {
  	var theObj = getRawObject(obj);
  	if (theObj) 
	{
    	// equalize incorrect numeric value type
    	var units = (typeof theObj.left == "string") ? "px" : 0;
		if(x >= 0)
			theObj.scrollLeft = x + units;
		if(y >= 0)
			theObj.scrollTop = y + units;
  	}
  }
  function shiftTo(obj, x, y)  
  {
  	var theObj = getObject(obj);
  	if (theObj && isCSS) 
	{
    	// equalize incorrect numeric value type
    	var units = (typeof theObj.left == "string") ? "px" : 0 
		theObj.top = y + units;
   		theObj.left = x + units;
  	}
  }

  function getRawObject(obj) 
  {
  	var theObj;
  	if (typeof obj == "string") 
	{
    	if (isW3C)
      		theObj = document.getElementById(obj);
    	else if (isIE4)
      		theObj = document.all(obj);
  	} 
	else
    	theObj = obj;
  	return theObj;
  }
  
  function engage(evt) 
  {
	evt = (evt) ? evt : event;
  	setDragElem(evt);
	shiftPosition(evt);
  	if (dragObj) 
	{
    	if (evt.pageX) //NS4+
		{
      		offsetX = evt.pageX - ((dragObj.offsetLeft) ? dragObj.offsetLeft : dragObj.left);
			offsetY = evt.pageY - ((dragObj.offsetTop) ? dragObj.offsetTop : dragObj.top);
		}
    	else if (evt.clientX) //IE4+ NS6+
		{
      		offsetX = evt.clientX - ((dragObj.offsetLeft) ? dragObj.offsetLeft : 0);
			offsetY = evt.clientY - ((dragObj.offsetTop) ? dragObj.offsetTop : 0);
		}
  	}
  	dragIt(evt); //start moving on mousedown
  	return false;
  }
  
  function dragIt(evt) 
  {
 	evt = (evt) ? evt : event;
 	if (dragObj) 
	{
		if(direction == "v")
		{
  			if (evt.pageY) eY=evt.pageY; else eY=evt.clientY;
			moveToPos = eY-offsetY;
			// If the user click on the bar and not the knob
			if(needToJump)
			{ 
				// nParentOffset = dragObj.offsetParent.offsetLeft;
				// nGrandParentOffset = dragObj.offsetParent.offsetParent.offsetLeft;
				// nDragWidth = (target.name=="volumeBar"?nPlayKnobWidth:nVolumeKnobWidth);
				// moveToPos = eX-nParentOffset-nGrandParentOffset - (nDragWidth/2);
			}			
			moveToPos=(moveToPos<0?0:(moveToPos>trackHeight?trackHeight:moveToPos));
			if(moveToPos>=0 && (moveToPos <= trackHeight))
				shiftTo(dragObj, 1, moveToPos);
			evt.cancelBubble = true;
	  
			sliderPct = (moveToPos<=1?0:(moveToPos>trackHeight?1:(moveToPos/trackHeight)));
			shiftScroll(moveObj, 0, (pctValueHeight*sliderPct));
			//getObject(findArrayVaue(scrollObj, 6, 1))
			if(document.all)tmp=window.event.x; else tmp="";
		}
		else
		{
			if (evt.pageX) eX=evt.pageX; else eX=evt.clientX;
			moveToPos = eX-offsetX;
			// If the user click on the bar and not the knob
			if(needToJump)
			{ 
				// nParentOffset = dragObj.offsetParent.offsetLeft;
				// nGrandParentOffset = dragObj.offsetParent.offsetParent.offsetLeft;
				// nDragWidth = (target.name=="volumeBar"?nPlayKnobWidth:nVolumeKnobWidth);
				// moveToPos = eX-nParentOffset-nGrandParentOffset - (nDragWidth/2);
			}			
			moveToPos=(moveToPos<0?0:(moveToPos>trackWidth?trackWidth:moveToPos));
			if(moveToPos>=0 && (moveToPos <= trackWidth))
				shiftTo(dragObj, moveToPos, 1);
			evt.cancelBubble = true;

			sliderPct = (moveToPos<=1?0:(moveToPos>trackWidth?1:(moveToPos/trackWidth)));
			shiftScroll(moveObj, (pctValueWidth*sliderPct), 0);
			//getObject(findArrayVaue(scrollObj, 6, 1))
			if(document.all)tmp=window.event.x; else tmp="";
		}
  		//if (displayDebugInfo) trace("<b>Percentage: "+sliderPct+"</b><br>Event X (mouse pos on page): "+evt.pageX+"(NS) "+evt.clientX+"(IE)<br>Obj offset in container: (offsetLeft)"+dragObj.offsetLeft+"<br>Difference (offsetX):"+offsetX+ "<p>Move to (mouse pos - offsetX)"+moveToPos+" <br>Event offsetX (IE): "+evt.offsetX+"<p>Obj left position: "+dragObj.style.left+"<br>OffsetParent offsetLeft:"+dragObj.offsetParent.offsetLeft+"<br>window.event.x (IE): "+tmp);
  		return false;
   }
  }
  function release(evt) 
  {
 	if (dragObj) 
  		dragObj.zindex = 0; 
 	dragObj = null;
	trackObj = null;
	scrollObj = null;
 	needToJump = false;
  }
  
  function setDragElem(evt) 
  {
	target = (evt.target) ? evt.target : evt.srcElement;
	needToJump = false;
//	var divID = (target.name && target.src) ? target.name + "Wrap" : "";
	var targetID = target.id;
	var divID = null;
	if (targetID.indexOf("dragBar") >= 0) 
	{
		// targetID = target.id;
		trackObj = null;
		divID = targetID;
	}
	else if (targetID.indexOf("track") >= 0) 
	{
		if (document.all)
			trackObj = document.all(targetID);
		else if (document.getElementById)
	  		trackObj = document.getElementById(targetID);
		targetID = findArrayValue(targetID, 5, 6);
		divID = targetID;
	}
	else
		return;
	scrollObj = divID;
	needToJump = true;
	holdObj = findArrayValue(targetID, 6, 0);
	moveObj = findArrayValue(targetID, 6, 1);
	pctValueWidth = (getObjStyle(findArrayValue(targetID, 6, 2), 0) - getObjStyle(findArrayValue(targetID, 6, 1), 0));
	pctValueWidth = (pctValueWidth > 0) ? pctValueWidth : 0;
	pctValueHeight = (getObjStyle(findArrayValue(targetID, 6, 2), 1) - getObjStyle(findArrayValue(targetID, 6, 1), 1));
	pctValueHeight = (pctValueHeight > 0) ? pctValueHeight : 0;
	nDragWidth = getObjStyle(targetID, 0);
	nDragHeight = getObjStyle(targetID, 1);
	trackWidth = getObjStyle(findArrayValue(targetID, 6, 5), 0) - nDragWidth;
	trackHeight = getObjStyle(findArrayValue(targetID, 6, 5), 1) - nDragHeight;
	direction = findArrayValue(targetID, 6, 8);

/*	if (target.name == "volumeBar") 
	{
		divID = "volumeKnobWrap";
		needToJump = true;
	} 
	else if (target.name == "playBar") 
	{
		divID = "playKnobWrap";
		needToJump = true;
	} */
	if (divID) 
	{
		if (document.all)
			dragObj = document.all(divID);
		else if (document.getElementById)
	  		dragObj = document.getElementById(divID);
		if (dragObj)
	  		dragObj.zindex = 100;
		return;
	}
	dragObj = null;
	scrollObj = null;
	return;
  }
//  arrScrollers [0 - hold, 1 - wn, 2 - lyr, 3 - scrollbar, 4 - side1, 5 - track, 6 - dragbar, 7 - side2, 8 - axis]
function Scrollers(phold, pwn, plyr, pscrollbar, pside1, ptrack, pdragBar, pside2, paxis)
{
	arrScrollers.push([phold, pwn, plyr, pscrollbar, pside1, ptrack, pdragBar, pside2, paxis]);
}
function arrangeScrollers()
{
	DHTMLinit();
	for(i = 0; i < arrScrollers.length; i++)
	{
		holdWidth = getObjStyle(arrScrollers[i][0], 0);
		holdHeight = getObjStyle(arrScrollers[i][0], 1);
		lyrWidth = getObjStyle(arrScrollers[i][2], 0);
		lyrHeight = getObjStyle(arrScrollers[i][2], 1);
		var theholdObj = getObject(arrScrollers[i][0]);
		var theWnObj = getObject(arrScrollers[i][1]);
		var thelyrObj = getObject(arrScrollers[i][2]);
		var theScrollBarObj = getObject(arrScrollers[i][3]);
		var theTrackObj = getObject(arrScrollers[i][5]);
		var theDragBarObj = getObject(arrScrollers[i][6]);
		var side1Obj = getObject(arrScrollers[i][4]);
		var side2Obj = getObject(arrScrollers[i][7]);
		theholdObj.visibility = "visible";
		thelyrObj.visibility = "visible";
		theWnObj.width = holdWidth;
		theWnObj.height = holdHeight;
		if(arrScrollers[i][8] == "v")
		{
			side2Obj.top = holdHeight - imgHeight;
			theScrollBarObj.hight = holdHeight;
			theScrollBarObj.left = holdWidth - imgWidth;
			theTrackObj.height = holdHeight - (imgHeight * 2);
			theTrackObj.width = imgWidth;
			theTrackObj.top = imgHeight;
			dragBarHeight = parseInt((lyrHeight-holdHeight));
			theDragBarObj.width = imgWidth - 4;
			theDragBarObj.left = 1;
			if(dragBarHeight > 0)				
				theDragBarObj.height = parseInt((holdHeight + 2 - (imgHeight * 2)) / (lyrHeight/holdHeight));
			else
				theDragBarObj.height = 0;
		}
		else
		{
			side2Obj.left = holdWidth - imgWidth;
			theScrollBarObj.width = holdWidth;
			theScrollBarObj.top = holdHeight - imgHeight;
			theTrackObj.width = holdWidth - (imgWidth * 2);
			theTrackObj.height = imgHeight;
			theTrackObj.left = imgWidth;
			dragBarWidth = parseInt((lyrWidth-holdWidth));
			theDragBarObj.height = imgHeight - 4;
			theDragBarObj.top = 1;
			if(dragBarWidth > 0)				
				theDragBarObj.width = parseInt((holdWidth + 2 - (imgWidth * 2)) / (lyrWidth/holdWidth));
			else
				theDragBarObj.width = 0;
		}
	}
}
function getObjStyle(obj, option)
{
//alert("getObjStyle");
	// 0 - Width, 1 - Height, 2 - Left, 3 - Top
	var intObjSize = 0;
	try{
		switch(option)
		{
			case 0 : intObjSize = parseInt(document.getElementById(obj).offsetWidth);
						break;
			case 1 : intObjSize = parseInt(document.getElementById(obj).offsetHeight);
						break;
			case 2 : intObjSize = parseInt(document.getElementById(obj).offsetLeft);
						break;
			case 3 : intObjSize = parseInt(document.getElementById(obj).offsetTop);
						break;
		}
	}
	catch(err){}
	return intObjSize;
}
function findArrayValue(objValue, objSearchCol, objResultCol)
{
	var resultValue = "";
	for(i = 0; i < arrScrollers.length; i++)
	{
		if(arrScrollers[i][objSearchCol] == objValue)
			resultValue = arrScrollers[i][objResultCol];
	}
	return resultValue;
}
//  initialize();
function  shiftPosition(evt) 
  {
	evt = (evt) ? evt : event;
    if (trackObj) 
	{
    	if (evt.pageX) //NS4+
		{
      		offsetX = evt.pageX - ((trackObj.offsetLeft) ? trackObj.offsetLeft : trackObj.left);
			offsetY = evt.pageY - ((trackObj.offsetTop) ? trackObj.offsetTop : trackObj.top);
		}
    	else if (evt.clientX) //IE4+ NS6+
		{
      		offsetX = evt.clientX - ((trackObj.offsetLeft) ? trackObj.offsetLeft : 0);
			offsetY = evt.clientY - ((trackObj.offsetTop) ? trackObj.offsetTop : 0);
		}
 		if (trackObj) 
		{
			if(direction == "v")
			{
				moveToPos = offsetY - imgHeight - getObjStyle(holdObj, 3);
				moveToPos=(moveToPos<0?0:(moveToPos>trackHeight?trackHeight:moveToPos));
				if(moveToPos>=0 && (moveToPos <= trackHeight))
					shiftTo(dragObj, -1, moveToPos);
				evt.cancelBubble = true;
				sliderPct = (moveToPos<=1?0:(moveToPos>trackHeight?1:(moveToPos/trackHeight)));
				shiftScroll(moveObj, 0, (pctValueHeight*sliderPct));
				if(document.all)tmp=window.event.x; else tmp="";
			}
			else
			{
				moveToPos = offsetX - imgWidth - getObjStyle(holdObj, 2);;		
				moveToPos=(moveToPos<0?0:(moveToPos>trackWidth?trackWidth:moveToPos));
				if(moveToPos>=0 && (moveToPos <= trackWidth))
					shiftTo(dragObj, moveToPos, -1);
				evt.cancelBubble = true;
				sliderPct = (moveToPos<=1?0:(moveToPos>trackWidth?1:(moveToPos/trackWidth)));
				shiftScroll(moveObj, (pctValueWidth*sliderPct), 0);
				if(document.all)tmp=window.event.x; else tmp="";
			}
		}
   	}
  }
  
  
function moveRight(wnobj, holdobj)
{	
	if(t == 0)
	{
		t1 = 100;
		t = setTimeout("moveRight('" + wnobj + "', '" + holdobj + "')", 0);
	}
	else
	{		
		document.getElementById(wnobj).scrollTop = document.getElementById(wnobj).scrollTop + 10;
		t1 = t1 - 10;
		if(t1 <= 0)
			t = 0;
		else
			t = setTimeout("moveRight('" + wnobj + "', '" + holdobj + "')", 50);
	}
}

function moveLeft(wnobj, holdobj)
{
	if(t == 0)
	{
		t1 = 100;		
		t = setTimeout("moveLeft('" + wnobj + "', '" + holdobj + "')", 0);
	}
	else
	{
		document.getElementById(wnobj).scrollTop = document.getElementById(wnobj).scrollTop - 10;
		t1 = t1 - 10;
		if(t1 <= 0)
			t = 0;
		else
			t = setTimeout("moveLeft('" + wnobj + "', '" + holdobj + "')", 50);
	}
}
