if (typeof onload == 'function') __tree_old_onload = onload;

var __docloc = document.location.toString();
var __docpath = document.location.pathname.toString();
var __query = document.location.search.toString().replace(/.idi=\d/,"").replace(/\?/,"").replace(/^&/,"");

function parseUri(sourceUri){
    var uriPartNames = ["source","protocol","authority","domain","port","path","directoryPath","fileName","query","anchor"];
    var uriParts = new RegExp("^(?:([^:/?#.]+):)?(?://)?(([^:/?#]*)(?::(\\d*))?)?((/(?:[^?#](?![^?#/]*\\.[^?#/.]+(?:[\\?#]|$)))*/?)?([^?#/]*))?(?:\\?([^#]*))?(?:#(.*))?").exec(sourceUri);
    var uri = {};
    
    for(var i = 0; i < 10; i++){
        uri[uriPartNames[i]] = (uriParts[i] ? uriParts[i] : "");
    }
    
    // Always end directoryPath with a trailing backslash if a path was present in the source URI
    // Note that a trailing backslash is NOT automatically inserted within or appended to the "path" key
    if(uri.directoryPath.length > 0){
        uri.directoryPath = uri.directoryPath.replace(/\/?$/, "/");
    }
    
    return uri;
}

function __build_menu_izquierdo () {
  var tree = new Bolo.Tree("menu_izq", {
    toggle: Bolo.Tree.SameBranchToggle,
    nodeOptions: {
      onclick: function (e) {
        if (this.container.firstChild.onclick) { eval(this.onclick) }
        else if (this.container.firstChild.href) { document.location = this.container.firstChild.href}
        Event.stop(e);
        return false;
      }
    },
    plugins: [
      function (n) {
        try {
          var nodeHref = n.container.firstChild.getAttribute("href");
          var loc  = parseUri(nodeHref);
          var path = loc.path;
          var query = loc.query;
          var samePath = path && (__docloc.indexOf(path) > -1 || ((typeof __navigation != "undefined") && (__navigation.indexOf(path) > -1)));
          var sameQuery = (query && query.indexOf(__query) > -1);
          var sameNavigationQuery = false;
          if (query && (typeof(__navigation) != "undefined") && (__navigation.indexOf("noCode") > -1)) {
            var local_nav = __navigation;
            local_nav = local_nav.replace(/\&?idi=\d\&?/gi, "");
            local_nav = local_nav.replace(/\&?arg1=noCode\&?/gi, "");
            local_nav = local_nav.gsub(/arg(\d)=/,function(match){ return 'arg'+(match[1]-1)+'=' });
            local_nav = local_nav.replace(/\&?arg([3-7])=(\d)\&?/gi, "");
            sameNavigationQuery = (query && query.indexOf(local_nav) > -1);
          }
          if ((samePath && (!query || (query && sameQuery))) || (query && sameNavigationQuery)) {
            Element.addClassName(n.container, "Current");
          }
        } catch(e) {console.error(e)};
      }]
  });
}

function __check_menu_izq () {
  if ($('menu_izq')) {
    __build_menu_izquierdo();
  }
  else setTimeout(__check_menu_izq, 500);
}

/*onload = function () {
  if (typeof __tree_old_onload  == 'function') __tree_old_onload();
  __check_menu_izq();
}*/

FastInit.addOnLoad(__check_menu_izq);