/**
 * DDPanel (Drop Down Panel)
 *
 * Modified version for the BonusThemes.com template TeraHost
 * http://www.bonusthemes.com
 *
 * @version 1.1
 * @copyright Creative Pulse 2008
 * @link http://www.creativepulse.eu/goto/ddpanel
 */

function DDPanel(aa) {
  var ba = document.getElementById(aa.source_id);
  if (!ba)return;
  this.iname = aa.iname;
  this.offset_wdg = document.getElementById(aa.offset_id);
  this.offset_tag_x = aa.offset_tag_x;
  this.offset_tag_align = aa.offset_tag_align;
  this.offset_tag_valign = aa.offset_tag_valign;
  this.offset_cnt_x = aa.offset_cnt_x;
  this.offset_cnt_align = aa.offset_cnt_align;
  this.offset_y = aa.offset_y;
  this.speed = aa.speed;
  this.interval = aa.interval;
  this.state = 0;
  this.timer = 0;
  this.progress = 0;
  this.y_start = 0;
  var ca = null,src_cnt_node = null;
  ba = ba ? ba.firstChild : null;
  while (ba) {
    if (ba.nodeType == 1) {
      var da = ba.firstChild;
      while (da && da.nodeType != 1)da = da.nextSibling;
      var ea = '';
      if (da && da.tagName == 'H3') {
        ca = da;
        ba.removeChild(da);
      }
      src_cnt_node = ba;
      break;
    }
    else {
      ba = ba.nextSibling;
    }
  }
  this.wdg_tag = document.createElement('div');
  this.wdg_tag.style.display = 'none';
  document.getElementsByTagName('body')[0].appendChild(this.wdg_tag);
  var fa = document.createElement('table');
  this.wdg_tag.appendChild(fa);
  fa.setAttribute('cellSpacing', 0);
  fa.setAttribute('cellPadding', 0);
  var ga = document.createElement('tbody');
  fa.appendChild(ga);
  var td = this.mkrow(ga, aa.class_tag_l, aa.class_tag_c, aa.class_tag_r, true);
  td.appendChild(ca);
  this.make_clickable(td.firstChild);
  this.wdg_tag_sz = this.getwh(this.wdg_tag, 0, 0);
  this.wdg_tag.style.display = 'block';
  this.wdg_cnt = document.createElement('div');
  this.wdg_cnt.style.display = 'none';
  document.getElementsByTagName('body')[0].appendChild(this.wdg_cnt);
  this.wdg_cnt.style.overflow = 'hidden';
  var fa = document.createElement('table');
  this.wdg_cnt.appendChild(fa);
  fa.setAttribute('cellSpacing', 0);
  fa.setAttribute('cellPadding', 0);
  var ga = document.createElement('tbody');
  fa.appendChild(ga);
  this.mkrow(ga, aa.class_cnt_tl, aa.class_cnt_tc, aa.class_cnt_tr, false);
  var td = this.mkrow(ga, aa.class_cnt_ml, aa.class_cnt_mc, aa.class_cnt_mr, false);
  this.mkrow(ga, aa.class_cnt_bl, aa.class_cnt_bc, aa.class_cnt_br, false);
  td.appendChild(src_cnt_node);
  this.wdg_cnt_sz = this.getwh(this.wdg_cnt, 0, 0);
  this.set_position();
}
DDPanel.prototype.getwh = function(ha, w, h) {
  ha.style.position = 'absolute';
  ha.style.left = '0px';
  ha.style.top = '0px';
  ha.style.visibility = 'hidden';
  if (w > 0)ha.style.width = w + 'px';
  if (h > 0)ha.style.height = h + 'px';
  ha.style.display = 'block';
  var ia = {w:ha.offsetWidth,h:ha.offsetHeight};
  ha.style.display = 'none';
  ha.style.visibility = 'visible';
  return ia;
}
DDPanel.prototype.make_clickable = function(ja) {
  ja.style.cursor = 'pointer';
  ja.setAttribute('iname', this.iname);
  ja.onclick = function() {
    document[this.getAttribute('iname')].h_click();
  }
}
DDPanel.prototype.mkrow = function(ka, cl, cc, cr, la) {
  var td;
  var tr = document.createElement('tr');
  ka.appendChild(tr);
  td = document.createElement('td');
  tr.appendChild(td);
  td.className = cl;
  if (la)this.make_clickable(td);
  var ma = document.createElement('td');
  tr.appendChild(ma);
  ma.className = cc;
  if (la)this.make_clickable(td);
  td = document.createElement('td');
  tr.appendChild(td);
  td.className = cr;
  if (la)this.make_clickable(td);
  return ma;
}
DDPanel.prototype.set_position = function() {
  if(!this.wdg_tag) return;
  if (this.wdg_tag.style.display == 'block') {
    this.y_start = this.offset_y;
    var x = 0,obj = this.offset_wdg;
    while (obj) {
      x += obj.offsetLeft;
      this.y_start += obj.offsetTop;
      obj = obj.offsetParent;
    }
    if (this.offset_tag_align == 'right')tag_x = x + this.offset_wdg.offsetWidth - this.wdg_tag_sz.w - this.offset_tag_x; else if (this.offset_tag_align == 'center')tag_x = x + Math.round((this.offset_wdg.offsetWidth - this.wdg_tag_sz.w) / 2); else tag_x = x + this.offset_tag_x;
    if (this.offset_cnt_align == 'right')cnt_x = x + this.offset_wdg.offsetWidth - this.wdg_cnt_sz.w - this.offset_cnt_x; else if (this.offset_cnt_align == 'center')cnt_x = x + Math.round((this.offset_wdg.offsetWidth - this.wdg_cnt_sz.w) / 2); else cnt_x = x + this.offset_cnt_x;
    y = this.y_start;
    if (this.wdg_cnt.style.display == 'block') {
      if (this.offset_tag_valign == 'top')this.wdg_cnt.style.top = (y + this.wdg_tag.offsetHeight) + 'px'; else this.wdg_cnt.style.top = y + 'px';
      this.wdg_cnt.style.left = cnt_x + 'px';
      y += this.wdg_cnt.offsetHeight;
    }
    if (this.offset_tag_valign == 'top')this.wdg_tag.style.top = this.y_start + 'px'; else this.wdg_tag.style.top = y + 'px';
    this.wdg_tag.style.left = tag_x + 'px';
  }
}
DDPanel.prototype.h_click = function() {
  this.state = this.state < 1 ? 2 : -1;
  if (this.timer == 0)this.h_timer();
}
DDPanel.prototype.h_timer = function() {
  this.timer = 0;
  if (this.state == 2) {
    var na = Math.round((100 - this.progress) * this.speed / 100);
    if (na == 0)na = 1;
    this.progress += na;
    if (this.progress >= 100) {
      this.progress = 100;
      this.state = 1;
    }
  }
  else if (this.state == -1) {
    var na = Math.round(this.progress * this.speed / 100);
    if (na == 0)na = 1;
    this.progress -= na;
    if (this.progress <= 0) {
      this.progress = 0;
      this.state = 0;
    }
  }
  var h = 0;
  if (this.state != 0)h = Math.round(this.wdg_cnt_sz.h * this.progress / 100);
  var y = this.y_start;
  if (h == 0) {
    this.wdg_cnt.style.display = 'none';
  }
  else {
    if (this.wdg_cnt.style.display != 'block') {
      this.wdg_cnt.style.display = 'block';
      this.set_position();
    }
    this.wdg_cnt.style.height = h + 'px';
    this.wdg_cnt.scrollTop = this.wdg_cnt_sz.h - h;
    y += h;
  }
  if (this.offset_tag_valign == 'bottom')this.wdg_tag.style.top = y + 'px';
  if (this.state == -1 || this.state == 2)this.timer = setTimeout('document["' + this.iname + '"].h_timer()', this.interval);
}