//Tiny lib, events manager (c)Alexander Melanchenko, http://alexnd.com

var $EVP={
_onresizes:new Array(),
_onloads:new Array(),
_time_threads:new Array(),
_odrag:null,

add_onresize:function(f){
	$EVP._onresizes[$EVP._onresizes.length]=f;
},
onresize:function(){
	for(var i=0; i<$EVP._onresizes.length; i++){
		var f=$EVP._onresizes[i];
		if('function'==typeof f)f();
	}
},

add_onload:function(f){
	$EVP._onloads[$EVP._onloads.length]=f;
},
onload:function(){
	for(var i=0; i<$EVP._onloads.length; i++){
		var f=$EVP._onloads[i];
		if('function'==typeof f)f();
	}
},

add_time_thread:function(c, o, p){
	if( !('function' == typeof c && 'function' == typeof o && p>0) )return null;
	var i=$EVP._time_threads.length,d=new Date(),t=d.getTime(),m=d.getMilliseconds();
	$EVP._time_threads[i]={
		_:null,
		_i:i,
		_c:c,
		_o:o,
		_p:p,
		_ts:t,
		_t:t,
		_m:m,
		_f:function(){
			var fd=new Date();
			$EVP._time_threads[i]._t=fd.getTime();
			$EVP._time_threads[i]._m=fd.getMilliseconds();
			if( 'function' == typeof $EVP._time_threads[i]._c && $EVP._time_threads[i]._c() ){
				clearInterval($EVP._time_threads[i]._);
				$EVP._time_threads[i]._o();
				$EVP._time_threads[i]=null;
			}
		}
	};
	$EVP._time_threads[i]._=setInterval($EVP._time_threads[i]._f, p);
	return i;
},
delete_time_thread:function(i){
	if('object' != typeof $EVP._time_threads[i])
	{
		$EVP._time_threads[i]=null;
	}
},
fire_time_thread:function(i){
	if('object' != typeof $EVP._time_threads[i])
	{
		$EVP._time_threads[i]._o();
	}
},

add_drag:function(ob){
	if(arguments.length>1)$EVP._dragchain=arguments[1];
	ob.onmousedown=$EVP._dragstart;
	ob.dragBegin = new Function();
	ob.drag = new Function();
	ob.dragEnd = new Function();
	return ob;
},
_dragstart:function(e){
	if(!e){
		if(window.event) e = window.event;
		else return false;
	}
	$EVP._odrag=this;
	if (isNaN(parseInt($EVP._odrag.style.left))) { $EVP._odrag.style.left = '0px'; }
	if (isNaN(parseInt($EVP._odrag.style.top))) { $EVP._odrag.style.top = '0px'; }
	var x=parseInt($EVP._odrag.style.left),
	y=parseInt($EVP._odrag.style.top);
	$EVP._odrag.mouseX=e.clientX;
	$EVP._odrag.mouseY=e.clientY;
	$EVP._odrag.dragBegin($EVP._drag, x, y);
	document.onmousemove=$EVP._drag;
	document.onmouseup=$EVP._dragend;
	return false;
},
_drag:function(e){
	if(!e){
		if(window.event) e = window.event;
		else return false;
	}
	var x=parseInt($EVP._odrag.style.left),
	y=parseInt($EVP._odrag.style.top),
	dx=e.clientX - $EVP._odrag.mouseX,
	dy=e.clientY - $EVP._odrag.mouseY;
	if($EVP._dragchain)
	{
		var xc=parseInt($EVP._dragchain.style.left),
		yc=parseInt($EVP._dragchain.style.top);
		$EVP._dragchain.style.left=xc + dx + 'px';
		$EVP._dragchain.style.top=yc + dy + 'px';
	}else{
		$EVP._odrag.style.left=x + dx + 'px';
		$EVP._odrag.style.top=y + dy + 'px';
	}
	$EVP._odrag.mouseX=e.clientX;
	$EVP._odrag.mouseY=e.clientY;
	$EVP._odrag.drag($EVP._odrag, x, y);
	return false;
},
_dragend : function(){
	var x = parseInt($EVP._odrag.style.left),
	y = parseInt($EVP._odrag.style.top);
	$EVP._odrag.dragEnd($EVP._odrag, x, y);
	document.onmousemove=null;
	document.onmouseup=null;
	$EVP._odrag=null;
},

init:function(){
	window.onresize=$EVP.onresize;
	window.onload=$EVP.onload;
}
}
