var preloadImages = function(){
	var d = document;
	if(d.images){
		if(!d.pics)
			d.pics = new Array();
		var i,j = d.pics.length, a = preloadImages.arguments;
		for(i = 0; i < a.length; i++)
			if (a[i].indexOf("#")!=0){ 
				d.pics[j]=new Image; d.pics[j++].src=a[i]
			}
	} 
} 

var ELEMENTS_CACHE = {};
function getLayer(name) {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (ELEMENTS_CACHE[element]){element = ELEMENTS_CACHE[element]}
		else if (typeof element == 'string'){element = document.getElementById(element)}

		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

function fadeMenu(oId) {
	menu = getLayer(oId);
	menu.style.display='none';
}

function showSubMenu(oId) {  
	menu = getLayer('_tN_sub_'+oId);
	
	clearTimeout(menu.fade);
	menu.style.display='block';
	ensureOverlap(realX(menu),realY(menu),menu.clientWidth,menu.clientHeight);
}

function hideSubMenu(oId) {
	menu = getLayer('_tN_sub_'+oId);
	
	clearTimeout(menu.fade);
	menu.fade = setTimeout("fadeMenu('_tN_sub_"+oId+"')", 50);
	selectsOn();
}



function realX(el){
 if (el.offsetParent){
   return el.offsetLeft + realX(el.offsetParent); //recursion up to root...
 } else {
   return el.offsetLeft;
 }
}

function realY(el){
 if (el.offsetParent){
   return el.offsetTop + realY(el.offsetParent);//recursion up to root...
 } else {
   return el.offsetTop;
 }
}

function ensureOverlap(x,y,w,h)
{    //get all SELECTs
   colSelects = document.getElementsByTagName("SELECT");

   for (i=0; i<colSelects.length; i++)
   {
     el = colSelects[i];    //current SELECT element
     curX = realX(el);      //-------
     curY = realY(el);      //  get dimensions
     curW = el.clientWidth; //
     curH = el.clientHeight;//------
     
     //turn overlapped off
     if ( testOverlap(x,y,w,h, curX,curY,curW,curH)/* && wmtt.style.display != "none"*/)
     {
       el.style.visibility = "hidden";
     }else{
       el.style.visibility = "visible";
     }
   }
}

function testOverlap(x,y,w,h, x2,y2,w2,h2){
 //returns true if overlapped, else -> false
 x0 = x;  x1 = x + w;  //first rect
 y0 = y;  y1 = y + h;
 
 X0 = x2;  X1 = x2 + w2; //second rect
 Y0 = y2;  Y1 = y2 + h2;

 //test overlap
 return ! ( (x0>X1) || (x1<X0) || (y0>Y1) || (y1<Y0) );
}

function selectsOn()
{   //get all SELECTs
   colSelects = document.getElementsByTagName("SELECT");

   for (i=0; i<colSelects.length; i++)
   {
     el = colSelects[i]; //current SELECT element
     if ( el.style.visibility == "hidden" ){
       el.style.visibility = "visible";
     }
   }
}

function decorate(obj){
	obj.className='active hand';
}
function undecorate(obj){
	obj.className='hand';
}