var ctrl = {version : 1.0, released : '2009-05-13 16:00:00', empx : 16, pan : false, cur : 0,
	bar : function(ele) {var obj=ele.lastChild;
		if(obj) {var pos=parseFloat(obj.style.left); if(isNaN(pos)||pos<1.5) {obj.style.left='1.5em';}else {obj.style.left='-9999px';}} return false;
	},
	pos : function(v) {var ele=document.getElementById(v),obj=ele.parentNode;
		if(obj&&ele) {ctrl.bar(obj.parentNode); var val=parseInt(ele.style.left),pos=parseInt(obj.scrollLeft),ew=parseInt(ele.offsetWidth),ow=parseInt(obj.offsetWidth);
			if(val&&ew&&ow) {if(obj.timer) {window.clearInterval(obj.timer);} var q=0,c=0,n=pos,m=(val*ctrl.empx)-parseInt((ow-ew)/2),t=Math.max(10,parseInt(Math.abs(m-n)/ew)),k=1/t;
				obj.timer=window.setInterval(function() {q=((-Math.cos((k*c)*Math.PI)/2)+0.5)||0; obj.scrollLeft=Math.ceil(n+(q*(m-n))); c++; if(c>t) {window.clearInterval(obj.timer); obj.scrollLeft=m;}},30);
			}
		} return false;
	},
	ini : function() {var ele=document.createElement('div'); ele.id='EMSizeControl'; ele.style.position="absolute"; 
		ele.style.left="-9999px"; ele.style.width="1em"; ele.style.height="1em"; document.getElementsByTagName("body")[0].appendChild(ele);
		var emsc=document.getElementById('EMSizeControl'),lpos=0, obj=emsc; while(obj.offsetParent) {lpos+=obj.offsetLeft; obj=obj.offsetParent;}
		if(!emsc||lpos!=-9999) {document.body.removeChild(document.getElementById('EMSizeControl'));}
		else {ctrl.empx=document.all&&!window.opera?emsc.offsetWidth:emsc.offsetHeight; document.body.removeChild(emsc);}
		return false;
	},
	set : function(ele,v) {var val=Math.max(Math.min(parseInt(v||16),32),12);
		var obj=ele.parentNode.parentNode.parentNode; if(obj) {ctrl.empx=val; obj.style.fontSize=val+'px';} return false;
	},
	up : function(e) {ctrl.pan=false; return false;},
	down : function(e) {if(!e) {e=window.event; var s=e.srcElement;}else {var s=e.target;}
    	if((e.button==0||e.which==1)&&(s.parentNode.className=='calendar')) {ctrl.pan=true; ctrl.cur=e.clientX;} return false;
	},
	move : function(e) {if(!e) {e=window.event; var s=e.srcElement;}else {var s=e.target;}
		if(ctrl.pan&&s.parentNode&&(s.parentNode.className=='calendar')) {
			var p=s.parentNode.parentNode.scrollLeft||0,t=(e.clientX-ctrl.cur)||0; s.parentNode.parentNode.scrollLeft=p-t; ctrl.cur=e.clientX; 
			if(e.preventDefault) {e.preventDefault();} if(e.stopPropagation) {e.stopPropagation();}else {event.cancelBubble=true;} return false;			
		}else {ctrl.up(); }
	}	
}

if(window.attachEvent) {
	window.attachEvent("onload", ctrl.ini);
	document.attachEvent("onmousedown",ctrl.down);
	document.attachEvent("onmouseup",ctrl.up);
	document.attachEvent("onmousemove",ctrl.move);
}else {
	window.addEventListener("load", ctrl.ini, false);
	document.addEventListener("mousedown",ctrl.down,false);
	document.addEventListener("mouseup",ctrl.up,false);
	document.addEventListener("mousemove",ctrl.move,false);
}
