var EXPANDER_UP = 1;
var EXPANDER_DOWN = 2;
var expander = null;

function initExpander(turl, upImage, downImage)
{
  document.write('<style type="text/css" media="screen">@import url(' + turl + '/jsstyle.css);</style>\n');
  expander = new _Expander(upImage, downImage);
}

function getExpander()
{
  if (expander != null)
    return expander;
    
  alert("ERROR : expander not initialized!");
  return null;
}

function _Expander(upImage, downImage)
{
  this._registeredTags = new Array();
  this._cookieTags = new Array();
  this._downImage = new Image(9,9);
  this._upImage = new Image(9,9);    
  this._upImage.src = upImage;
  this._downImage.src = downImage;
    
  this._saveCookie = function()
  {
    var cookie = '';
    for (key in this._registeredTags)
    {
      if (this._registeredTags[key] == EXPANDER_UP)
      {
        if (cookie) cookie = cookie + ',';
          cookie = cookie + key;      
      }
    }
    
    var today = new Date();
    if (cookie != null && cookie != '')
    {
      var expiry = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000);
      document.cookie = 'expander=' + escape(cookie) + '; expires=' + expiry.toGMTString() + '; path=/';
    }
    else
    {
      var expiry = new Date(today.getTime() - 2 * 24 * 60 * 60 * 1000);
      document.cookie = 'expander=null; expires=' + expiry.toGMTString() + '; path=/';
    }    
  };
  
  this._loadCookie = function()
  {
    this._cookieTags = new Array();
    
    var index = document.cookie.indexOf("expander=");
    if (index != -1){
      index = document.cookie.indexOf("=", index) + 1;
  
      var endstr = document.cookie.indexOf(";", index);
      if (endstr == -1){
        endstr = document.cookie.length;
      }
    
      var cookie = unescape(document.cookie.substring(index, endstr));            
      var tags = cookie.split(',');
      for (var i = 0; i < tags.length; i++)
      {
        this._cookieTags[tags[i]] = EXPANDER_UP;
      }
    }
  };
  
  this.add = function(tag)
  {
    if (!document.getElementById) return;
    
    var parentel = document.getElementById(tag + "-title");
    if (parentel)  
    {      
      var childel = new Image(9,9);
      childel.className = 'sidebar-expander';
      childel.onclick = new Function("getExpander().toggle('" + tag + "')");
      childel.id = "img-" + tag + "-content";   
      
      if (this._cookieTags[tag])
      {
        childel.src = this._upImage.src;
        this._registeredTags[tag] = EXPANDER_UP;
      }
      else
      {
        childel.src = this._downImage.src;
        this._registeredTags[tag] = EXPANDER_DOWN;
      }      
      
      parentel.appendChild(childel);
      
      if (this._registeredTags[tag] == EXPANDER_UP)
        this.up(tag);
      else
        this.down(tag);
    }
  }
  
  this.toggle = function(tag)
  {
    if (document.getElementById) 
    { 
      if (this._registeredTags[tag] == EXPANDER_DOWN)
        this.up(tag);
      else 
        this.down(tag);
        
      this._saveCookie();
    }
  }  

  this.up = function(tag)
  {
    var id = tag + '-content';
    var img = 'img-' + id;
    document.images[img].src = this._upImage.src;
    document.getElementById(id).style.display = 'none'; 
  	this._registeredTags[tag] = EXPANDER_UP;
  }
  
  this.down = function(tag)
  {
    id = tag+'-content';
    var img = 'img-' + id;
    document.images[img].src = this._downImage.src;
    document.getElementById(id).style.display = 'block'; 
  	this._registeredTags[tag] = EXPANDER_DOWN;
  }
  
  this._loadCookie();
}

