var scroll_max = 0;
var scroll_width = 418;
var scroll_viewport = 0;
var scroll_pos = 0;
var scroll_step = 40;
var scroll_obj_id = '';
var idn;
var iup;
var orgCursor=null;  
var dragOK=false;    
var dragYoffset=0
var dragXoffset=0

function createScrollBar(objid,h) {
	scroll_viewport = h;
	scroll_obj_id = objid;
	scroll_max = oid(objid).scrollWidth-2;
	scroll_pos = oid(objid).scrollLeft;
	
	scroll_width = h - 114;
	
	if(scroll_max>scroll_viewport) {

		document.write('<div style="width:'+h+'px; height: 14px;" id="scroller">');
		document.write('<div class="vscrollerbasebeg" id="scrupb"></div>');
		document.write('<div class="vscrollerbase" id="scrbs">');
		document.write('<div class="vscrollerbar" id="scrind"></div>');
		document.write('</div>');
		document.write('<div id="scrdnb" class="vscrollerbaseend"></div>');
		document.write('</div>');

		attachEvents();
	}
}

function attachEvents() {
	oid('scrupb').onmousedown = function () {startTimer('up')};
	oid('scrdnb').onmousedown = function () {startTimer('down')};
	oid('scrupb').onmouseup = function () {releaseTimer();}
	oid('scrdnb').onmouseup = function () {releaseTimer();}
}

function scrollMoveUp() {
	oid(scroll_obj_id).scrollLeft-=scroll_step;
	movePosIndicator();
}

function scrollMoveDown() {
	oid(scroll_obj_id).scrollLeft+=scroll_step;
	movePosIndicator();
}

function movePosIndicator() {
	if(scroll_max>scroll_viewport) {
		oid('scrind').style.left = ((parseInt(oid(scroll_obj_id).scrollLeft) / (parseInt(oid(scroll_obj_id).scrollWidth)-scroll_viewport)) * scroll_width) + 'px' ;
	}
}

function oid(id) {
	return document.getElementById(id);
}

function releaseTimer() {
	clearInterval(iup);
	clearInterval(idn);
}

function startTimer(dir) {
	releaseTimer();
	if(dir=='up') {
		iup = setInterval("scrollMoveUp();", 25)
	}

	if(dir=='down') {
		idn = setInterval("scrollMoveDown();", 25)
	}
}

function moveHandler(e){
	
	if (e == null) { e = window.event }
	if (e.button<=1&&dragOK){

		$newPos =  (e.clientX - dragXoffset);
		if($newPos<=0) $newPos = 0;
		if($newPos>=scroll_width) $newPos = scroll_width;

		oid('scrind').style.left = $newPos + 'px';
		oid(scroll_obj_id).scrollLeft = ((parseInt(oid(scroll_obj_id).scrollWidth)-scroll_viewport) * ($newPos / scroll_width));
		
		return false;
	}
}

function cleanup(e) {
	document.onmousemove=null;
	document.onmouseup=null;
	selObj.style.cursor=orgCursor;
	dragOK=false;
}

function dragHandler(e){
	var htype='-moz-grabbing';
	if (e == null) { e = window.event; htype='move';}
	var target = e.target != null ? e.target : e.srcElement;
	selObj=target;
	orgCursor=target.style.cursor;
	if (target.className=="vscrollerbar") {
		target.style.cursor=htype;
		dragOK=true;
		dragXoffset=e.clientX-parseInt(selObj.style.left);
		dragYoffset=e.clientY-parseInt(selObj.style.top);
		document.onmousemove=moveHandler;
		document.onmouseup=cleanup;
		return false;
	}
}

document.onmousedown=dragHandler;
