  // function getByCookie()
  function getByCookie(VSTUP)
  {
      VSTUP+="="; // připojím na konec rovnítko
      allcookies=document.cookie; // do proměnné natáhnu celou cookie uloženou na počítači
      pos=allcookies.indexOf(VSTUP); // vyhledám začátek proměnné v získaném stringu
      if (pos!=-1) // jestli jsem začátek našel, provedu dohledání
      {
          start=pos + VSTUP.length; // začátek hodnoty cookie
          end=allcookies.indexOf(";", start); // konec hodnoty cookie
          if (end==-1) end = allcookies.length; // ošetření na konec řetězce
          VYSTUP=allcookies.substring(start, end); // zjištění hodnoty vystřižením ze stringu
          return VYSTUP; // vrátím získané hodnoty
      }
      // jestli jsem nic nenašel, vrátím chybu
      else return '';
  }

  // function in_array() {{{
  function in_array(item, arr)
  {
    var bFound = false;
    if (typeof(arr) == 'object') {
      for(tItem in arr) {
        if (isNaN(tItem)) {
          value = tItem;
        } else {
          value = arr[tItem];
        }
        if (value == item) {
          bFound = true;
          break;
        }
      }
    }
    return bFound;
  } // }}}


// CLASS TREE

  // function tree()
  function Tree(name, preserveOne)
  {
    // deklarace metod
    this.flipVisibility = treeFlipVisibility;
    this.toCookies = treeToCookies;
    this.clearCookies = treeClearCookies;
    this.closeChildren = treeCloseChildren;
    this.openChildren = treeOpenChildren;
    this.openTree = treeOpenTree;
		this.closeTree = treeCloseTree;

    this.openedFolders = new Array();

    this.name = name;
    this.preserveOne = preserveOne;

		this.imgFolderOpened = '';
		this.imgFolderClosed = '';

    var allCookies = document.cookie;
    var treeCookies = getByCookie(this.name);
//    alert('treeCookies = ' + treeCookies);

    var treeArr = treeCookies.split(':');
    for(var i = 0; i < treeArr.length; i++) {
      // props[0] = 'node_' , props[1] = id; props[2] = parent
      props = treeArr[i].split('_');
      if (typeof(this.openedFolders[props[2]]) != 'object') {
        this.openedFolders[props[2]] = new Array();
      }
      this.openedFolders[props[2]][props[1]] = props[1];  // pridani prvku z pole

    }
  }

  function treeFlipVisibility(id)
  {
    var props = id.split('_');

    var bFound = in_array(props[1], this.openedFolders[props[2]]);
    if (bFound) { // folder otevren - zavrit
      this.closeChildren(props[1]);

      document.getElementById('node_' + props[1] + '_' + props[2]).style.display = 'none';
      delete this.openedFolders[props[2]][props[1]];  // odebrani prvku z pole

			// zmenit obrazek na 'zavreno'
			var img = document.getElementById('img_' + props[1] + '_' + props[2]);
			if (img) {
				img.src = this.imgFolderClosed;
			}

    } else {  // folder zavren - otevrit
      if (typeof(this.openedFolders[props[2]]) != 'object') {
        this.openedFolders[props[2]] = new Array();
      } else {
        if (this.preserveOne) { // a zavrit ostatni ze stejne urovne
          this.closeChildren(props[2]);
        }
      }

      var div = document.getElementById('node_' + props[1] + '_' + props[2]);
			if (div) {
				div.style.display = '';
				this.openedFolders[props[2]][props[1]] = props[1];  // pridani prvku do pole
			}

			// zmenit obrazek na 'otevreno'
			var img = document.getElementById('img_' + props[1] + '_' + props[2]);
			if (img) {
				img.src = this.imgFolderOpened;
			}

    }
    this.toCookies();
  }

  function treeOpenChildren(parent)
  {
    if (typeof(this.openedFolders[parent]) == 'object') {
      for(var id in this.openedFolders[parent]) {
        this.openChildren(id);

        document.getElementById('node_' + id + '_' + parent).style.display = '';

				// zmenit obrazek na 'otevreno'
				var img = document.getElementById('img_' + id + '_' + parent);
				if (img) {
					img.src = this.imgFolderOpened;
				}
      }
    }
    return;
  }

	function treeGotoChildren(id)
	{
	}

  function treeCloseChildren(parent)
  {
    if (typeof(this.openedFolders[parent]) == 'object') {
      for(var id in this.openedFolders[parent]) {
        this.closeChildren(id);

        document.getElementById('node_' + id + '_' + parent).style.display = 'none';
        delete this.openedFolders[parent][id];

				// zmenit obrazek na 'zavreno'
				var img = document.getElementById('img_' + id + '_' + parent);
				if (img) {
					img.src = this.imgFolderClosed;
				}

      }
    }
    return;
  }

  function treeToCookies()
  {
    var treeCookies = this.name + '=';
    var treeCookiesData = '';

    for(var parent in this.openedFolders) {
      for(var id in this.openedFolders[parent]) {
        if ((parent != 'undefined') && (id != 'undefined')) {
          treeCookiesData += 'node_' + id + '_' + parent + ':';
        }
      }
    }
    if (treeCookiesData != '') {
      treeCookiesData = treeCookiesData.substr(0, treeCookiesData.length - 1);
    }
    treeCookies += treeCookiesData;
    document.cookie = treeCookies;
  }

  function treeClearCookies()
  {
    this.openedFolders = new Array();
    this.toCookies();
  }

  function treeOpenTree()
  {
    this.openChildren(0);
  }

	function treeCloseTree()
	{
		this.closeChildren(0);
	}

  // END CLASS

