// menu.js - Expanding animated DHTML menu (only IE5+, NS6+ support)
// Author: Vasy Malyshev (rpra@rpra.ru)
//
// You may do whatever you want with this source code

var img_names = new Array();
var imgs = new Array();

  img_names[0] = 'goup_.gif';
  img_names[1] = 'home_.gif';
  img_names[2] = 'mail_.gif';
  img_names[3] = 'cart_.gif';

preload_imgs();

function preload_imgs()
{
  for(var i=0;i<img_names.length;i++) {
	imgs[i] = new Image();
	imgs[i].src = '/inc/pics/'+img_names[i];
  }
}

function preload_logo(logo_num)
{
  var img = imgs[imgs.length] = new Image();
  img.src = '/inc/pics/logos/'+logo_num+'.gif';
}

function objInfo(obj)
{
  info_win = window.open("","", "width=600");
  for(props in obj) {
	info_win.document.write(props + ' = ' + eval('obj.'+props) + '<br>');
  }
}

//document.captureEvents(event.CLICK);

var ITEM_HEIGHT = 40;
var SUB_HEIGHT = 25;
var MOVE_SPEED = 4;
var MOVE_DELAY = 0;

function click_handler(cl_event)
{
  if(!document.getElementById) {
  // 
	return;
  }
  var menu = document.getElementById("menu");
//  objInfo(cl_event.srcElement);
  var clicked_sub_menu = cl_event.srcElement.parentNode.parentNode.parentNode;
//  objInfo(clicked_sub_menu);

  menu = clicked_sub_menu.parentNode;
  
  for(var i=0; i<menu.childNodes.length; i++) {
    if(menu.childNodes[i].nodeName == "DIV") {
      if(menu.childNodes[i].getAttribute("expanded")) {
        if(clicked_sub_menu == menu.childNodes[i])
	  collapse(clicked_sub_menu);
	else {
	  collapse(menu.childNodes[i]);
	  expand(clicked_sub_menu);
	}
	return false;
      }
    }
  }
  expand(clicked_sub_menu);
  return false;
}

function collapse(menu)
{
  if(!menu.getAttribute("expanded"))
    return;
  var next = menu.nextSibling;
//  ,   ,   
  var menus_to_move = new Array();
  while(next) {
	if(next.nodeName == "DIV") {
	  menus_to_move[menus_to_move.length] = next.id;
	}
	next = next.nextSibling;
  }
  var subs;
  
  for(var i=0;i<menu.childNodes.length;i++) {
  	if(menu.childNodes[i].className == 'subs') {
		var n = count_divs(menu.childNodes[i].childNodes);
		subs = menu.childNodes[i].id;
		break;
	}
  }
//  ,    
    hideSubs(subs, 25);
    moveSubMenus(menus_to_move, -n);
    menu.setAttribute("expanded", "");
}

function expand(menu)
{
  if(menu.getAttribute("expanded"))
    return;
  var next = menu.nextSibling;
  var menus_to_move = new Array();
//  ,   ,   
  while(next) {
	if(next.nodeName == "DIV")
	  menus_to_move[menus_to_move.length] = next.id;
	next = next.nextSibling;
  }
//       
  var subs;
  for(var i=0;i<menu.childNodes.length;i++) {
  	if(menu.childNodes[i].className == 'subs') {
		var n = count_divs(menu.childNodes[i].childNodes);
		subs = menu.childNodes[i].id;
		break;
	}
  }
//	objInfo(subs);
  moveSubMenus(menus_to_move, n);
  showSubs(subs, -150);
  menu.setAttribute("expanded", "true");
}

function hideSubs(id, curr)
{
  var node = document.getElementById(id);

  if(curr >= -200) {
	curr -=MOVE_SPEED;
	node.style.posLeft = curr;
    setTimeout('hideSubs("'+id+'",'+curr+')', MOVE_DELAY);
  }

//  node.style.posLeft = - 200;
}

function showSubs(id, curr)
{
  var node = document.getElementById(id);

  if(curr <= 25) {
	curr += MOVE_SPEED;
	node.style.posLeft = curr;
	setTimeout('showSubs("' + id + '",' + curr + ')', MOVE_DELAY);
  }
}

function moveSubMenus(menus_to_move, n)
{
  for(var i=0; i<menus_to_move.length; i++) {
	if(n>0) {
	  moveNodeDown(menus_to_move[i],
					sub_menus[menus_to_move[i]].style.posTop,
					sub_menus[menus_to_move[i]].style.posTop + n*SUB_HEIGHT);
	} else {
	  moveNodeUp(menus_to_move[i],
					sub_menus[menus_to_move[i]].style.posTop,
					sub_menus[menus_to_move[i]].style.posTop + n*SUB_HEIGHT);
	}
  }
}

function moveNodeUp(id, start, end)
{
  var node = sub_menus[id];
  if(start >= end) {
	node.style.posTop -= MOVE_SPEED;
	start-=MOVE_SPEED;
	setTimeout('moveNodeUp('+id+','+start+','+end+')', MOVE_DELAY);
  } else {
	return;
  }
}

function moveNodeDown(id, start, end)
{
  var node = document.getElementById(id);
  if(start <= end) {
	node.style.posTop += MOVE_SPEED;
	start+=MOVE_SPEED;
	setTimeout('moveNodeDown('+id+','+start+','+end+')', MOVE_DELAY);
  } else {
	return;
  }
}

var sub_menus = new Array();

// 
function init_menu()
{
  if(!document.getElementById) {
  // 
	return;
  }
  var n = 0;
  var offset = 130;
  var menu = document.getElementById("menu");

  for(var i=0; i<menu.childNodes.length; i++) {
	if(menu.childNodes[i].nodeName == "DIV") {
	  menu.childNodes[i].id = i;
	  sub_menus[i] = menu.childNodes[i];
	  menu.childNodes[i].style.top = n*ITEM_HEIGHT + offset;
	  n++;
	}
	if(menu.childNodes[i].getAttribute("expanded")) {
		var sub_menu = menu.childNodes[i];
		for(var j=0;j<sub_menu.childNodes.length;j++) {
			if(sub_menu.childNodes[j].className == 'subs') {
				offset += (count_divs(sub_menu.childNodes[j].childNodes))*SUB_HEIGHT;
				showSubs(sub_menu.childNodes[j].id, -150);
			}
		}
	}

  }
}

function count_divs(objArray)
{
  var n = 0;
  for(var i=0; i<objArray.length; i++)
	if(objArray[i].nodeName == "DIV")
	  n++;  
  return n;
}

