function hookEvent(element, eventName, callback) {
	if(typeof(element) == "string")	element = document.getElementById(element);
	if(element == null) return;
	if(element.addEventListener) {
 		if(eventName == 'mousewheel') {
			element.addEventListener('DOMMouseScroll',callback, false);
		}
		element.addEventListener(eventName, callback, false);
	}
	else if(element.attachEvent) element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback) {
	if(typeof(element) == "string") element = document.getElementById(element);
	if(element == null) return;
	if(element.removeEventListener) {
		if(eventName == 'mousewheel') {
			element.removeEventListener('DOMMouseScroll',callback, false);
		}
		element.removeEventListener(eventName, callback, false);
	}
	else if(element.detachEvent) element.detachEvent("on" + eventName, callback);
}

function cancelEvent(e) {
	e = e ? e : window.event;
	if(e.stopPropagation) e.stopPropagation();
	if(e.preventDefault) e.preventDefault();
	e.cancelBubble = true;
	e.cancel = true;
	e.returnValue = false;
	return false;
}

function MouseWheel(e) {
	e = e ? e : window.event;
	var wheelData = e.detail ? e.detail * -1 : e.wheelDelta / 40;
	
	var obj = document.getElementById('cars-list');
	var scroller = document.getElementById('scroller');
	obj.scrollTop = obj.scrollTop - wheelData * 5;
	if(obj.scrollTop > obj.scrollHeight - obj.offsetHeight) obj.scrollTop = obj.scrollHeight - obj.offsetHeight;
	scroller.style.marginTop = (Math.round((obj.scrollTop * obj.offsetHeight)/obj.scrollHeight)) + 'px';
	if(navigator.userAgent.toLowerCase().indexOf('chrome') == -1 && navigator.userAgent.toLowerCase().indexOf('safari') == -1 && !window.opera) document.getElementById('bhide').style.marginTop = obj.scrollTop + 'px';
		
	return cancelEvent(e);
}

var dragElement = null;
var mouseShift = 0;
var startY = 0;
var startMouseY = 0;
var startMouseX = 0;

function drag(event) {
	if(!event) event = window.event; 
	var scroller = document.getElementById('scroller');
	dragElement = true;
	startY = scroller.style.marginTop;
	startMouseY = event.clientY;
	startMouseX = event.clientX;
}

document.onmouseup=function() {
	dragElement = null;
	startY = null;
}

document.onmousedown=function() {
	if(dragElement) return false;
	return true;
}

function _onselectstart() {
	if(dragElement) return false;
	return true;
}

document.onselectstart=function() {
	if(dragElement) return false;
	return true;
}

var mouseX = 0;
var mouseY = 0;

document.onmousemove=function(event) {
	if(!event) event = window.event; 
	var obj = document.getElementById('cars-list');
	var scroller = document.getElementById('scroller');
		
    mouseX = event.clientX - startMouseX;
    mouseY = event.clientY - startMouseY;
	if (dragElement) {
		document.body.style.cursor = 'pointer';
		
		if((Math.abs(mouseX) < 40)) {
			if(startY!='') startY = parseInt(parseFloat(startY));
			var mTop = startY + mouseY;
			if(mTop < 0) {
				scroller.style.marginTop = "0px";
				obj.scrollTop = "0px"
			} else if(mTop > obj.offsetHeight - scroller.offsetHeight) {
				scroller.style.marginTop = (obj.offsetHeight - scroller.offsetHeight) + "px";
				obj.scrollTop = obj.scrollHeight - obj.offsetHeight;
			} else {
				scroller.style.marginTop = mTop + "px";
				var temp = obj.scrollHeight / obj.offsetHeight;
				obj.scrollTop = Math.round(mTop * temp);
			}
			if(navigator.userAgent.toLowerCase().indexOf('chrome') == -1 && navigator.userAgent.toLowerCase().indexOf('safari') == -1)document.getElementById('bhide').style.marginTop = obj.scrollTop + 'px';
		}
	} else {
		document.body.style.cursor = 'auto';
	}
}

function setScroll() {
	var obj = document.getElementById('cars-list');
	var scroller = document.getElementById('scroller');
	if(obj.scrollHeight > obj.offsetHeight && !window.opera) {
		document.getElementById('bhide').style.marginTop=obj.scrollTop + 'px';
		/*if(window.opera && window.getSelection) document.getElementById('cars-list').style.overflow='hidden';*/
		scroller.style.marginTop = (Math.abs((obj.offsetHeight/
									obj.scrollHeight) * obj.scrollTop)) + 'px'
		document.getElementById('bhide').style.display="block";
		scroller.style.height = Math.abs(((obj.offsetHeight * obj.offsetHeight) / obj.scrollHeight))+'px';
	}
	return false;
}