var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = docMouseMove;
document.onmouseup = docMouseUp;
document.onkeydown = docKeyDown;
if (window.addEventListener)
	window.addEventListener('DOMMouseScroll', docScroll, false);
window.onmousewheel = document.onmousewheel = docScroll;

function swi(o){n=document.getElementById('t'+o); i=document.getElementById('i'+o);if(n)n.style.height=n.style.height!='auto'?'auto':'100px';
if(i)i.src='http://info-stone.ru/design/im/s'+n.style.height+'.gif';}

var mouseX=0;
var mouseY=0;
var mouseCaptItems = Array();

var scrollObj = null;
var navKeyObj = null;
var editKeyCtrl = null;

function addHandler(o,name,method){
	try{o.addEventListener(name,method,false);}
	catch(e){o.attachEvent("on"+name,method);}
}

function registerMouseCap(o){
	mouseCaptItems[o.id] = o;
}

function deregisterMouseCap(o){
	delete mouseCaptItems[o.id];
}

function getEvent(event){
	if (event == null) event = window.event;
	return event;
}

function docKeyDown(e){
	e = getEvent(e);
	var kc = e.keyCode;
	if(kc>32&&kc<41)
		if(navKeyObj!=null&&typeof(navKeyObj.keydown)!=null)
			navKeyObj.keydown(e);
	/*switch(kc){
		case 9:  // tab key
		case 13: // enter-key (forms without submit buttons)
		case 27: // escape key
		case 32: // space-bar key
			break;
		case 33: // repag key
		case 34: // avpag key
		case 37: // left arrow key
		case 38: // up arrow key
		case 39: // right arrow key
		case 40: // down arrow key
			if(navKeyObj!=null&&typeof(navKeyObj.keydown)!=null)
				navKeyObj.keydown(e);
			break;
	}*/
}

function docMouseMove(e) {
	e = getEvent(e);
	if (IE){
		mouseX = e.clientX + document.body.scrollLeft;
		mouseY = e.clientY + document.body.scrollTop;
	}else{
		mouseX = e.pageX;
		mouseY = e.pageY;
	}
	if (mouseX < 0){mouseX = 0}
	if (mouseY < 0){mouseY = 0}  
	for(key in mouseCaptItems){
		mouseCaptItems[key].mmove(mouseX,mouseY);
			return false;
	}
	return true;
}

function docMouseUp(e){
	for(key in mouseCaptItems){
		mouseCaptItems[key].mup(mouseX,mouseY);
	}
	return true;
}

function docScroll(e){
	var delta = 0;
	if(!e)
		e = window.event;
	if(e.wheelDelta){
		delta = e.wheelDelta/120;
		if(navigator.appName=="Opera")
			delta = delta;
		}else if(e.detail){
			delta = -e.detail/3;
		}
	var prevent = false;
	if(delta&&scrollObj!=null)
		prevent = scrollObj.wheel(delta);
	if(e.preventDefault&&prevent)
		e.preventDefault();
	e.returnValue = !prevent;
}

function getChildByClass(oparent,cname){
	var ret = null;
	var i;
	for(i=0;i<oparent.childNodes.length;i++){
		var ch = oparent.childNodes[i];
		if(ch.className==cname)
			return ch;
		ret = getChildByClass(ch,cname);
		if(ret!=null)
			return ret;
	}
	return ret;
}

function getSize(sParam, hLayer)
{
	nPos = 0;
	while (hLayer && (hLayer.tagName) && !( /(body|html)/i.test(hLayer.tagName))){
		nPos += eval('hLayer.' + sParam);
		if (sParam == 'offsetTop')
			if (hLayer.clientTop)
				nPos += hLayer.clientTop;
		if (sParam == 'offsetLeft')
			if (hLayer.clientLeft)
				nPos += hLayer.clientLeft;
		hLayer = hLayer.offsetParent;
	}
	return nPos;
}