var dom = document.getElementById; var ie = document.getElementById; 
function capEv(event,method){this[event] = method;};function relEv(event){	this[event] = null;};function getYs(e){ return ie ? event.clientY : e.pageY;}
function getEl(nm){var el = dom ? document.getElementById(nm) : ie ? document.getElementById[nm] : false;el.getTop = function sc(){return parseInt(el.offsetTop) || 0}; el.setTop = function(y){el.style.top = y+"px"};el.getHeight = function sc(){return el.offsetHeight}; el.getClipHeight = function sc(){return el.offsetHeight};	el.capEv = capEv; el.relEv = relEv;	return el;}
document.capEv = capEv; document.relEv = relEv;
sObj = function sc(s, tObj, uObj, dObj, dgObj, hObj, cObj){
	this.s = s;	var self = this; this.tObj = getEl(tObj); this.uObj = getEl(uObj); this.dObj = getEl(dObj); this.dgObj = getEl(dgObj); this.hObj = getEl(hObj); this.cObj = getEl(cObj,hObj);
	this.dH = this.dgObj.getHeight(); this.tH = this.tObj.getHeight(); this.obj = cObj+"Object"; eval(this.obj+"=this");	this.tT = this.dgObj.getTop(); this.tL = this.tH-this.dH; this.tB = this.tT+this.tL; this.hH = this.hObj.getClipHeight(); this.cH = this.cObj.getHeight(); this.cL = this.cH-this.hH; this.sL = this.tL/this.cL; this.sT = null;
	this.tObj.capEv("onmousedown", function (e){self.sJmp(e);return false}); this.uObj.capEv("onmousedown", function sc(){self.scroll(self.s);return false});
	this.uObj.capEv("onmouseup", function sc(){self.stSc()}); 	this.uObj.capEv("onmouseout", function sc(){self.stSc()});	this.dObj.capEv("onmousedown", function sc(){self.scroll(-self.s);return false}); this.dObj.capEv("onmouseup", function sc(){self.stSc()});
	this.dObj.capEv("onmouseout", function sc(){self.stSc()}); this.dgObj.capEv("onmousedown", function (e){self.sDg(e);return false});	if(ie) this.dgObj.capEv("ondragstart", function sc(){return false});
}
sObj.prototype.sDg = function (e){this.dSM = getYs(e); this.dSO = this.dgObj.getTop(); var self = this; document.capEv("onmousemove", function (e){self.drag(e)}); document.capEv("onmouseup", function sc(){self.stD()});}
sObj.prototype.stD = function sc(){document.relEv("onmousemove"); document.relEv("onmouseup");}
sObj.prototype.drag = function (e){var curM = getYs(e); var mDiff = curM-this.dSM;var dD = this.dSO+mDiff; var dM = (dD<this.tT) ? this.tT : (dD>this.tB) ? this.tB : dD;this.dgObj.setTop(dM); var cM = -(dM-this.tT)*(1/this.sL);this.cObj.setTop(cM);}
sObj.prototype.scroll = function (s){var cM = this.cObj.getTop()+s; var dM = this.tT-Math.round(this.cObj.getTop()*(this.tL/this.cL));	if(cM > 0)	cM = 0; else if(cM < -this.cL) cM = -this.cL;if(dM < this.tT)	dM = this.tT; else if(dM > this.tB) dM = this.tB;this.cObj.setTop(cM); 	this.dgObj.setTop(dM); 	this.sT = window.setTimeout(this.obj+".scroll("+s+")",25);}
sObj.prototype.stSc = function sc(){if(this.sT) window.clearTimeout(this.sT); this.sT = null;}
sObj.prototype.sJmp = function (e){	var curM = getYs(e); var dD = curM-(this.dH/2);var dM = (dD<this.tT) ? this.tT : (dD>this.tB) ? this.tB : dD;this.dgObj.setTop(dM); var cM = -(dM-this.tT)*(1/this.sL); this.cObj.setTop(cM);}
window.onload = function sc(){scroller = new sObj(15,"track","up","down","drag","containere","contente");};// JavaScript Document

