var bewuls = new Object()
var tm = new Object()

tm.closefolder = "starnet/themes/johanfriso-web/img/tree_expand.gif"
tm.openfolder = "starnet/themes/johanfriso-web/img/tree_collapse.gif"

tm.createTree = function(treeid) {
   var ultags = document.getElementById(treeid).getElementsByTagName("ul")

   if (typeof bewuls[treeid] == "undefined") {
      bewuls[treeid] = (tm.getCookie(treeid) != "") ? tm.getCookie(treeid).split(",") : ""
   }
   for (var i = 0; i < ultags.length; i++) {
      tm.buildSubTree(treeid, ultags[i], i)
   }
   //tm.dotask(window, function(){tm.rememberstate(treeid)}, "unload")
}

tm.buildSubTree = function(treeid, ulelement, index) {
   ulelement.parentNode.className = "submenu"
   if (typeof bewuls[treeid] == "object") {
      if (tm.searcharray(bewuls[treeid], index) || ulelement.getAttribute("id") == "h_c" || ulelement.getAttribute("id") == "h_s") {
         ulelement.setAttribute("rel", "open")
         ulelement.style.display = "block"
         ulelement.parentNode.style.backgroundImage = "url("+tm.openfolder+")"
      }
      else {
         ulelement.setAttribute("rel", "closed")
      }
   }
   else if (ulelement.getAttribute("id") == "h_c" || ulelement.getAttribute("id") == "h_s") {
         ulelement.setAttribute("rel", "open")
         ulelement.style.display = "block"
         ulelement.parentNode.style.backgroundImage = "url("+tm.openfolder+")"
   }
   else if (ulelement.getAttribute("rel") == null || ulelement.getAttribute("rel") == false) {
      ulelement.setAttribute("rel", "closed")
   }
   else if (ulelement.getAttribute("rel") == "open") {
      tm.expandSubTree(treeid, ulelement)
   }

   ulelement.parentNode.onclick = function(e) {
      var submenu = this.getElementsByTagName("ul")[0]

      if (submenu.getAttribute("rel") == "closed") {
         submenu.style.display = "block"
         submenu.setAttribute("rel", "open")
         ulelement.parentNode.style.backgroundImage = "url("+tm.openfolder+")"
      }
      else if (submenu.getAttribute("rel") == "open") {
         submenu.style.display = "none"
         submenu.setAttribute("rel", "closed")
         ulelement.parentNode.style.backgroundImage = "url("+tm.closefolder+")"
      }
      tm.preventpropagate(e)
   }
   ulelement.onclick = function(e) {
      tm.preventpropagate(e)
   }
}

tm.expandSubTree = function(treeid, ulelement) {
   var rootnode = document.getElementById(treeid)
   var currentnode = ulelement

   currentnode.style.display = "block"
   currentnode.parentNode.style.backgroundImage = "url("+tm.openfolder+")"
   while (currentnode != rootnode) {
      if (currentnode.tagName == "UL") {
         currentnode.style.display = "block"
         currentnode.setAttribute("rel", "open")
         currentnode.parentNode.style.backgroundImage = "url("+tm.openfolder+")"
      }
      currentnode = currentnode.parentNode
   }
}

tm.flatten = function(treeid, action) {
   var ultags = document.getElementById(treeid).getElementsByTagName("ul")

   for (var i = 0; i < ultags.length; i++) {
      ultags[i].style.display = (action == "expand") ? "block" : "none"
      var relvalue = (action == "expand") ? "open" : "closed"
      ultags[i].setAttribute("rel", relvalue)
      ultags[i].parentNode.style.backgroundImage = (action == "expand") ? "url("+tm.openfolder+")" : "url("+tm.closefolder+")"
   }
}

tm.rememberstate = function(treeid) {
   var ultags = document.getElementById(treeid).getElementsByTagName("ul")
   var openuls = new Array()

   for (var i = 0; i < ultags.length; i++) {
      if (ultags[i].getAttribute("rel") == "open") {
         openuls[openuls.length] = i
      }
   }
   if (openuls.length == 0) {
      openuls[0] = "none open"
   }
   tm.setCookie(treeid, openuls.join(","))
}

tm.getCookie = function(Name) {
   var re = new RegExp(Name+"=[^;]+", "i");

   if (document.cookie.match(re)) {
      return document.cookie.match(re)[0].split("=")[1]
   }
   return ""
}

tm.setCookie = function(name, value) {
   document.cookie = name+"="+value;
}

tm.searcharray = function(thearray, value) {
   var isfound = false

   for (var i = 0; i < thearray.length; i++) {
      if (thearray[i] == value) {
         isfound = true
         thearray.shift()
         break
      }
   }
   return isfound
}

tm.preventpropagate = function(e) {
   if (typeof e != "undefined") {
      e.stopPropagation()
   }
   else {
      event.cancelBubble = true
   }
}

tm.dotask = function(target, functionref, tasktype) {
   var tasktype = (window.addEventListener) ? tasktype : "on"+tasktype

   if (target.addEventListener) {
      target.addEventListener(tasktype, functionref, false)
   }
   else if (target.attachEvent) {
      target.attachEvent(tasktype, functionref)
   }
}