var remember = false; //Remember menu states, and restore them on next visit.
var contractall_default= true; //Should all submenus be contracted by default? (true or false)
var expandall_default = false;
var default_open_menu = 99999;
var menuTimeout = 60;
var menu, titles, submenus, arrows, bypixels;
var heights = new Array();

var collapsed_image = "images/product_menu/collapsed.gif";
var expanded_image = "images/product_menu/expanded.gif";

var n = navigator.userAgent;
if(/Opera/.test(n)) bypixels = 2;
else if(/Firefox/.test(n)) bypixels = 3;
else if(/MSIE/.test(n)) bypixels = 2;
else bypixels = 2;

function set_default_open_menu(n){
  default_open_menu = n;
  contractall();
}
/* search the dom for the job named */
function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) {
    x=d.all[n];
  }
  for (i=0;!x&&i<d.forms.length;i++) {
    x=d.forms[i][n];
  }
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) {
    x=MM_findObj(n,d.layers[i].document);
  }
  if(!x && d.getElementById) {
    x=d.getElementById(n);
  }
  // alert('object ' + n + ' is ' + x);
  return x;
}

function expandall(){
if (typeof menu!="undefined"){
	for(i=0; i<Math.max(titles.length, submenus.length); i++){
		titles[i].className="menu_title";
        titles[i].style.color = "#666666";
		//arrows[i].src = expanded_image;
		submenus[i].style.display="";
		submenus[i].style.height = heights[i]+"px";
	}
}
}

function contractall(){
if (typeof menu!="undefined"){
	for(i=0; i<Math.max(titles.length, submenus.length); i++){
		if(!submenus[i].id){
			titles[i].className="titlehidden";
			titles[i].style.color = "#025797";
			//arrows[i].src = collapsed_image;
			submenus[i].style.display="none";
			submenus[i].style.height = 0;
		}else{
		  titles[i].style.color = "#666666";
		}
	}
}
}


function init(){
    menu = MM_findObj('sideMenu');
    if ((menu = MM_findObj('sideMenu')) != null) {
        titles = getElementsByClassName("menu_title", "span", menu);
        submenus = getElementsByClassName("submenu_items", "div", menu);
      //  arrows = getElementsByClassName("arrow", "img", menu);
        for(i=0; i<Math.max(titles.length, submenus.length); i++) {
            //titles[i].onclick = gomenu;
           // arrows[i].onclick = return gomenu;
            heights[i] = submenus[i].offsetHeight;
            submenus[i].style.height = submenus[i].offsetHeight+"px";
        }
    }

    if(remember)
		restore();
    else if (contractall_default){
		contractall();
		//default_open_menu = 9999;
    }else if (expandall_default)
		expandall();
}

function restore() {
    if(getcookie("menu") != null) {
        var hidden = getcookie("menu").split(",");
        for(var i in hidden) {
            titles[hidden[i]].className = "titlehidden";
            titles[hidden[i]].style.color = "#025797";
			
            submenus[hidden[i]].style.height = "0px";
            submenus[hidden[i]].style.display = "none";
          //  arrows[hidden[i]].src = collapsed_image;
        }
    }
}
/*
function gomenu(e) {
    if (!e)
        var e = window.event;
    var ce = (e.target) ? e.target : e.srcElement;
    var sm;
    for(var i in titles) {
        if(titles[i] == ce || arrows[i] == ce)
            sm = i;
    }
    if(parseInt(submenus[sm].style.height) > parseInt(heights[sm])-2) {
        hidemenu(sm);
    } else if(parseInt(submenus[sm].style.height) < 2) {
        titles[sm].className = "title";
        showmenu(sm);
    }
}
*/

function gomenu(e) {
    if (!e)
        var e = window.event;
    var ce = (e.target) ? e.target : e.srcElement;
    var sm;
    for(var i in titles) {
        if(titles[i] == ce ){ //|| arrows[i] == ce){
          sm = i;
          if(parseInt(submenus[sm].style.height) > parseInt(heights[sm])-2) {
              hidemenu(sm);
          } else if(parseInt(submenus[sm].style.height) < 2) {
              titles[sm].className = "menu_title";
              titles[sm].style.color = "#666666";
              showmenu(sm);
          }
        }else{
          tm = i;
          if(parseInt(submenus[tm].style.height) > parseInt(heights[tm])-2) {
              hidemenu(tm);
          }
        }
    }
	return false;
}


function hidemenu(sm) {
    var nr = (submenus[sm].getElementsByTagName("a").length-0)*(bypixels-0);
    submenus[sm].style.height = (parseInt(submenus[sm].style.height)-nr)+"px";
    var to = setTimeout("hidemenu("+sm+")", menuTimeout);
    if(parseInt(submenus[sm].style.height) <= nr) {
        clearTimeout(to);
        submenus[sm].style.display = "none";
        submenus[sm].style.height = "0px";
      //  arrows[sm].src = collapsed_image;
        titles[sm].className = "titlehidden";
        titles[sm].style.color = "#025797";
    }
}

function showmenu(sm) {
    var nr = submenus[sm].getElementsByTagName("a").length*bypixels;
    submenus[sm].style.display = "";
    submenus[sm].style.height = (parseInt(submenus[sm].style.height)+nr)+"px";
    var to = setTimeout("showmenu("+sm+")", menuTimeout);
    if(parseInt(submenus[sm].style.height) > (parseInt(heights[sm])-nr)) {
        clearTimeout(to);
        submenus[sm].style.height = heights[sm]+"px";
        //arrows[sm].src = expanded_image;
    }
}

function store() {
    var hidden = new Array();
    for(var i in titles) {
        if(titles[i].className == "titlehidden")
            hidden.push(i);
    }
    putcookie("menu", hidden.join(","), 30);
}

function getElementsByClassName(strClassName, strTagName, oElm){
    var arrElements = (strTagName == "*" && document.all)? document.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];
        if(oRegExp.test(oElement.className)){
            arrReturnElements[i] = oElement;
        }
    }
    return (arrReturnElements)
}

function putcookie(c_name,value,expiredays) {
    var exdate=new Date();
    exdate.setDate(exdate.getDate()+expiredays);
    document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate);
}

function getcookie(c_name) {
    if(document.cookie.length > 0) {
        var c_start = document.cookie.indexOf(c_name + "=");
        if(c_start != -1) {
            c_start = c_start + c_name.length + 1;
            var c_end = document.cookie.indexOf(";",c_start);
            if(c_end == -1)
                c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return null;
}

window.onload = init;
if(remember) window.onunload = store;

