// GLOBAL CONFIG ////////////////
////////////////////////////////
  var d = document;  
  var ie = document.all;
  var baseURL = d.getElementsByTagName('base')[0].href;
// MENU /////////////////////////
  var menu        =  2;             // 0 = off; 1 = Suckerfish; 2 = vertical slider
  var menuids     = ["suckermenu"]  // Enter id(s) of SuckerTree UL menus, separated by commas
// VERTICAL SLIDER //////////////
  var bnavHeight  = 21;              // height of one button in px
  var timerlen    = 5;
  var slideAniLen = 400;            // slider length in milliseconds
  var timerID     = new Array(); var startTime = new Array(); var obj = new Array(); var endHeight = new Array(); var moving = new Array(); var dir = new Array(); 
/////////////////////////////////

// AJAX
  var Ajaxqueue = 0;
  var Ajax = {
    getTransport: function() {
      Ajaxqueue++;
      return ((window.ActiveXObject) ?  new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest()) || false;
    },
  
    Request: function(url, options) {
      this.options = options;
      this.transport = Ajax.getTransport();
      
        this.transport.open(this.options.method.toUpperCase(), url, false);
        this.transport.setRequestHeader('Encoding', 'UTF-8');
  
        if(this.options.method.toLowerCase() == 'post') this.transport.setRequestHeader('Content-length', this.options.postBody.length);
        this.transport.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
        this.transport.setRequestHeader('Connection', 'close');
        this.transport.send((this.options.method.toLowerCase() == 'post') ? this.options.postBody : null);
        if(this.transport.readyState == 4) this.onStateChange();
  
        return this.transport.responseText;
    },
    
    onStateChange: function(req) {
      if(this.options.container && $(this.options.container)) $(this.options.container).innerHTML = this.transport.responseText;
      if(typeof this.options.onComplete == 'function') this.options.onComplete();
      Ajaxqueue = 0;
    }
  };

// AJAX FADE DIVS
  var divFader = new Array(); var divFaderTimer = new Array();
  function initDivFader(objID, action, timer)
  {  
    d.getElementById(objID).style.height = (ie ? d.getElementById(objID).offsetHeight: d.getElementById(objID).clientHeight) + 'px';
    d.getElementById(objID).style.overflow = 'hidden';
     
    var div = d.getElementById(objID).getElementsByTagName('div')[0];
        div.style.cssFloat = 'left';
        div.style.styleFloat = 'left';
        div.style.overflow = 'hidden';
        div.style.position = 'relative';
        div.style.width = '100%';
    
    divFader[objID] = {'action' : action};
    divFaderTimer[objID] = window.setInterval("fadeDiv('" + objID + "')", timer * 1000);     // window.setInterval
  }
  
  function fadeDiv(objID)
  {
    if(Ajaxqueue > 0) return window.setTimeout("fadeDiv('" + objID + "')", 500);
    
    var action     = divFader[objID]['action'];
    var newContent = Ajax.Request(baseURL + '/ajax.php/?action=' + action, {method: 'get'}).split('<!-- ajax content start -->')[1].split('<!-- ajax content end -->')[0];

    
    var oldDiv = d.getElementById(objID).getElementsByTagName('div')[0];
        oldDiv.id = objID + '_oldDiv';
        
    var newDiv = d.createElement('div');
        newDiv.id = objID + '_newDiv';
        newDiv.style.width = '1%';
        newDiv.style.position = 'relative';
        newDiv.style.cssFloat = 'left';
        newDiv.style.styleFloat = 'left';
        newDiv.style.overflow = 'hidden';
        newDiv.innerHTML = newContent;
                
    d.getElementById(objID).appendChild(newDiv);

    // SLIDE NEW DIV
      obj[newDiv.id] = newDiv;
      endHeight[newDiv.id] = '100';
      moving[newDiv.id] = true;
      dir[newDiv.id] = 'right';
      startTime[newDiv.id] = (new Date()).getTime();

      timerID[newDiv.id] = setInterval('slidetick(\'' + newDiv.id + '\');', 10);
    // SLIDE OLD DIV
      obj[oldDiv.id] = oldDiv;
      endHeight[oldDiv.id] = '100';
      moving[oldDiv.id] = true;
      dir[oldDiv.id] = 'left';
      startTime[oldDiv.id] = (new Date()).getTime();

      timerID[oldDiv.id] = setInterval('slidetick(\'' + oldDiv.id + '\');', 10);
  }
  
// MENU
  function buildmenu()
  {
    if(menu != 0)
    {
      for(var i=0; i<menuids.length; i++)
      {
        var ultags = document.getElementById(menuids[i]).getElementsByTagName('ul');
        for (var t=0; t<ultags.length; t++)
        {
          switch(menu)
          {
            case 1:
              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onmouseover = function()
              {
                this.className = 'kat_active';
                this.parentNode.getElementsByTagName('div')[0].style.display = 'block';
              }
              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onmouseout = function()
              {
                this.className = 'kat';
                this.parentNode.getElementsByTagName('div')[0].style.display = 'none';
              }
            break;
            case 2:
              var litags = ultags[t].parentNode.getElementsByTagName('ul')[0].getElementsByTagName('li');

              ultags[t].parentNode.id = 'menu_' + t;
              ultags[t].parentNode.style.height = litags.length * bnavHeight;
              if(ultags[t].parentNode.className != 'open') ultags[t].parentNode.style.display = 'none';
              if(readCookie('menu_' + t) == 'true') {
                ultags[t].parentNode.style.display = 'block';
                ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].className = 'kat_active';
              }
              
              ultags[t].parentNode.parentNode.getElementsByTagName('a')[0].onclick = function()
              {
                var divTag = this.parentNode.getElementsByTagName('div')[0];
                this.className = (divTag.style.display == 'none') ? 'kat_active' : 'kat';
                
                obj[divTag.id] = document.getElementById(divTag.id);
                endHeight[divTag.id] = parseInt(obj[divTag.id].style.height);
                switch(divTag.style.display)
                {
                  default:
                  case 'block':
                    writeCookie(divTag.id, false);
                    if(moving[divTag.id]) return;
                    moving[divTag.id] = true;
                    dir[divTag.id] = 'up';
                  break;
                  case 'none':
                    writeCookie(divTag.id, true);
                    if(moving[divTag.id]) return false;
                    moving[divTag.id] = true;
                    divTag.style.height = '1px';
                    divTag.style.display = 'block';
                  break;
                }
                
                startTime[divTag.id] = (new Date()).getTime();

                timerID[divTag.id] = setInterval('slidetick(\'' + divTag.id + '\');',timerlen);
                    
              return false;
            }              
            break;
          }
        }
      }
    }
  }

// DIV SLIDER
  function slidetick(objname)
  {
    var sL = (dir[objname] == 'left' || dir[objname] == 'right') ? 300 : slideAniLen;
    var elapsed = (new Date()).getTime() - startTime[objname];
    if (elapsed > sL) endSlide(objname)
    else {
      var d = Math.round(elapsed / sL * endHeight[objname]);
      if(dir[objname] == 'up' || dir[objname] == 'left') d = endHeight[objname] - d;

      if(dir[objname] == 'left' || dir[objname] == 'right') obj[objname].style.width = d + '%'; 
      else obj[objname].style.height = d + 'px';
    }
  }
  
  function endSlide(objname)
  {
    clearInterval(timerID[objname]);

    if(dir[objname] == 'up') obj[objname].style.display = 'none';

    if(dir[objname] == 'right') obj[objname].style.width = '100%'; 
    else if(dir[objname] == 'left') {
      obj[objname].style.width = 0; 
      obj[objname].parentNode.removeChild(obj[objname]);
    }
    else obj[objname].style.height = endHeight[objname] + "px";

    delete(moving[objname]); delete(timerID[objname]); delete(startTime[objname]); delete(endHeight[objname]); delete(obj[objname]); delete(dir[objname]);
  }
  
// NAVIGATION
  function initNavigation()
  {
    var tags = document.getElementById('navi').getElementsByTagName('a');
    for(var i=0;i<tags.length;i++)
    {
      var loadImage = new Image();
          loadImage.src = tags[i].firstChild.src.replace(/\.jpg/g, '_hover.jpg');
          
      tags[i].onmouseover = function() {
        this.firstChild.src = this.firstChild.src.replace(/\.jpg/g, '_hover.jpg');
      }
      tags[i].onmouseout = function() {
        this.firstChild.src = this.firstChild.src.replace(/\_hover\.jpg/g, '.jpg');
      }
    }
  }
  
// HANDLE COOKIES
  function writeCookie(cookie,value)
  {
    document.cookie = cookie+"="+value+";path=/";
  }
  
  function readCookie(name) 
  {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    
    while (i < clen) 
    {
      var j = i + alen;
         
      if(document.cookie.substring(i, j) == arg)
      {
        var endstr = document.cookie.indexOf (";", j);
        if(endstr == -1) endstr = document.cookie.length;
            
        return unescape(document.cookie.substring(j, endstr));
      }
      
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
    }
    
    return null;
  }

// POPUP LAYER
  function checkLoading()
  {
  	if(window.innerHeight && window.scrollMaxY) {	
  		yScroll = window.innerHeight + window.scrollMaxY;
  	} else if (document.body.scrollHeight > document.body.offsetHeight){
  		yScroll = document.body.scrollHeight;
  	} else { 
  		yScroll = document.body.offsetHeight;
  	}
  	
  	if(self.innerHeight) {	
  		windowHeight = self.innerHeight;
  	} else if (document.documentElement && document.documentElement.clientHeight) { 
  		windowHeight = document.documentElement.clientHeight;
  	} else if (document.body) { 
  		windowHeight = document.body.clientHeight;
  	}	
  	
  	if(yScroll < windowHeight){
  		pageHeight = windowHeight;
  	} else { 
  		pageHeight = yScroll;
  	}
    document.getElementById('loading').style.height = pageHeight + 'px';
  }
  
  function popupWindow(url)
  {
    if(!document.getElementById('loading'))
    {
      var div = document.createElement('div');
          div.setAttribute('id', 'loading');
          div.onclick = function() { closePopup() };
      document.getElementsByTagName('body')[0].appendChild(div);
      
      var div = document.createElement('div');
          div.setAttribute('id', 'loadingDiv');
          div.onclick = function() { closePopup() };
      document.getElementsByTagName('body')[0].appendChild(div);
      
      checkLoading();
    }
    
    document.getElementById('loadingDiv').innerHTML = '<iframe id="popupframe" frameboders="0" allowtransparency="true" src="' + url + '" scrolling="no"></iframe>';
    document.getElementById('loading').style.display = 'inline';
    document.getElementById('loadingDiv').style.display = 'inline';
  }
  
  function closePopup()
  {
    document.getElementById('loadingDiv').style.display = 'none';
    document.getElementById('loading').style.display = 'none';
  }
  
// ADD FLASH
  function addFlash()
  {    
    var ret        = new Object();
    ret.embedAttrs = new Object();
    ret.params     = new Object();
    ret.objAttrs   = new Object();

    for(var i=0; i < arguments.length; i=i+2)
    {
      ret.objAttrs[arguments[i]]   = arguments[i+1];
      ret.embedAttrs[arguments[i]] = ret.params[arguments[i]] = arguments[i+1];
      ret.params[arguments[i]]     = arguments[i+1];
    }

    ret.objAttrs['classid'] = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
    ret.embedAttrs['type']  = 'application/x-shockwave-flash';

    var str = '<object ';
    for(var i in ret.objAttrs)   str += i + '="' + ret.objAttrs[i] + '" '; str += '>';
    for(var i in ret.params)     str += '<param name="' + i + '" value="' + ret.params[i] + '" /> ';  str += '<embed ';
    for(var i in ret.embedAttrs) str += i + '="' + ret.embedAttrs[i] + '" '; str += ' ></embed></object>';

    document.write(str);
  }
