// JavaScript Document
function hideInline(elName) {
    var theElemenet = document.getElementById(elName);
    if (theElemenet) {
        theElemenet.style.display = "none";
    }
}
function showInline(elName) {
    var theElemenet = document.getElementById(elName);
    if (theElemenet) {
        theElemenet.style.display = "inline";
    }
}

function toggleText(a,b){
  var e=document.getElementById(a);
  if(!e)return true;
  if(e.style.height=="100%"){
    e.style.height=b
  } else {
    e.style.height="100%"
  }
  return true;
  }

function toggle(el) {
  el = $(el);
  if (el.style.display == 'none') el.style.display = '';
  else el.style.display = 'none';
}
function fadeOut(el, fadeTimeInSeconds) {
  fade(el, fadeTimeInSeconds);
}
function fadeIn(el, fadeTimeInSeconds) {
  fade(el, fadeTimeInSeconds, true);
}
function foldDown(el, timeInSeconds, heightInPixels) {
  fold(el, {time: timeInSeconds, height: heightInPixels, down: true});
}
function foldUp(el, timeInSeconds, heightInPixels) {
  fold(el, {time: timeInSeconds, height: heightInPixels, down: false});
}
function foldToggle(el, timeInSeconds, heightInPixels) {
  fold(el, {time: timeInSeconds, height: heightInPixels, toggle: true});
}
function delay(func, time) {
  time = time < 20 ? time * 1000 : time;
  setTimeout(func.bind(this), time);
}
function onLoad(func) {
  addEvent(window, 'load', func);
}
function getHeight(el) {
  var el = $(el);
  var height = el.style.height.replace(/px/,'');
  if (height) return parseInt(height);
  else return parseInt(el.offsetHeight);
}
function fade(el, time, fadeIn) {
  fadeIn = fadeIn ? true : false;
  time = time ? time * 1000 : 500;
  zoomIfMsft(el, true);
  el = $(el);
  fdr = new fx.Opacity(el, { duration: time } );
  if (fadeIn == true) {
    fdr.now = 0;
    el.style.visibility = 'hidden';
    el.style.display = '';
  }
  fdr.toggle();
  delay(function() { zoomIfMsft(el, false); }, time);
}
function fold(el, options) {
  el = $(el);
  down = options.down ? true : false;
  time = options.time ? options.time : 250;
  time = time < 20 ? time * 1000 : time;
  elht = getHeight(el);
  if (options.toggle) {
    var mkey = 'ht' + el.id;
    window[mkey] ? elht = window[mkey] : window[mkey] = elht;
    down = (el.style.display=='none') ? true : false;
  }
  var height = (typeof(options.height) == 'undefined') ? elht : options.height;
  height = parseInt(height);
  el.style.height = down ? 0 + 'px' : height + 'px';
  if (el.style.display == 'none') el.style.display = '';
  var effect = new fx.Height(el, {duration: time});
  var start = down ? 0 : height;
  var end   = down ? height : 0;
  effect.custom(start, end);
  if (!down) delay(function() { el.style.display = 'none' }, time);
}
/*--------------------------------------------------------------------------*/

var Class = {
  create: function() {
    return function() {
      this.initialize.apply(this, arguments);
    }
  }
}

Object.extend = function(destination, source) {
  for (property in source) destination[property] = source[property];
  return destination;
}

Function.prototype.bind = function(object) {
  var __method = this;
  return function() {
    return __method.apply(object, arguments);
  }
}

Function.prototype.bindAsEventListener = function(object) {
var __method = this;
  return function(event) {
    __method.call(object, event || window.event);
  }
}

function $() {
  if (arguments.length == 1) return get$(arguments[0]);
  var elements = [];
  arguments.each(function(el){
    elements.push(get$(el));
  });
  return elements;

  function get$(el){
    if (typeof el == 'string') el = document.getElementById(el);
    return el;
  }
}

var fx = new Object();
fx.Base = function(){};
fx.Base.prototype = {
  setOptions: function(options) {
  this.options = {
    duration: 500,
    onComplete: '',
    transition: fx.sinoidal
  }
  Object.extend(this.options, options || {});
  },

  go: function() {
    this.startTime = (new Date).getTime();
    this.timer = setInterval (this.step.bind(this), 10);
  },

  step: function() {
    var time  = (new Date).getTime();
    if (time >= this.options.duration+this.startTime) {
      this.now = this.to;
      clearInterval (this.timer);
      this.timer = null;
      if (this.options.onComplete) setTimeout(this.options.onComplete.bind(this), 10);
    }
    else {
      var Tpos = (time - this.startTime) / (this.options.duration);
      this.now = this.options.transition(Tpos) * (this.to-this.from) + this.from;
    }
    this.increase();
  },

  custom: function(from, to) {
    if (this.timer != null) return;
    this.from = from;
    this.to = to;
    this.go();
  },

  hide: function() {
    this.now = 0;
    this.increase();
  },

  clearTimer: function() {
    clearInterval(this.timer);
    this.timer = null;
  }
}

fx.Layout = Class.create();
fx.Layout.prototype = Object.extend(new fx.Base(), {
  initialize: function(el, options) {
    this.el = $(el);
    this.el.style.overflow = "hidden";
    this.el.iniWidth = this.el.offsetWidth;
    this.el.iniHeight = this.el.offsetHeight;
    this.setOptions(options);
  }
});

fx.Height = Class.create();
Object.extend(Object.extend(fx.Height.prototype, fx.Layout.prototype), {
  increase: function() {
    this.el.style.height = this.now + "px";
  },

  toggle: function() {
    if (this.el.offsetHeight > 0) this.custom(this.el.offsetHeight, 0);
    else this.custom(0, this.el.scrollHeight);
  }
});

fx.Width = Class.create();
Object.extend(Object.extend(fx.Width.prototype, fx.Layout.prototype), {
  increase: function() {
    this.el.style.width = this.now + "px";
  },

  toggle: function(){
    if (this.el.offsetWidth > 0) this.custom(this.el.offsetWidth, 0);
    else this.custom(0, this.el.iniWidth);
  }
});

fx.Opacity = Class.create();
fx.Opacity.prototype = Object.extend(new fx.Base(), {
  initialize: function(el, options) {
    this.el = $(el);
    this.now = 1;
    this.increase();
    this.setOptions(options);
  },

  increase: function() {
    if (this.now == 1) this.now = 0.9999;
    if (this.now > 0 && this.el.style.visibility == "hidden") this.el.style.visibility = "visible";
    if (this.now == 0) this.el.style.visibility = "hidden";
    if (window.ActiveXObject) this.el.style.filter = "alpha(opacity=" + this.now*100 + ")";
    this.el.style.opacity = this.now;
  },

  toggle: function() {
    if (this.now > 0) this.custom(1, 0);
    else this.custom(0, 1);
  }
});

fx.sinoidal = function(pos){
  return ((-Math.cos(pos*Math.PI)/2) + 0.5);
  //this transition is from script.aculo.us
}
fx.linear = function(pos){
  return pos;
}
fx.cubic = function(pos){
  return Math.pow(pos, 3);
}
fx.circ = function(pos){
  return Math.sqrt(pos);
}

fx.Text = Class.create();
fx.Text.prototype = Object.extend(new fx.Base(), {
  initialize: function(el, options) {
    this.el = $(el);
    this.setOptions(options);
    if (!this.options.unit) this.options.unit = "em";
  },

  increase: function() {
    this.el.style.fontSize = this.now + this.options.unit;
  }
});

// Toggle the Tabs
function toggleTab( targetId ) {
	var divs = new Array('overall','uploaders','exchangers','uploads');
	for ( var i=0; i<divs.length; i++ ) {
		if ( divs[i] == targetId ) {
			document.getElementById("mp_tab_"+divs[i]).parentNode.className = "tab on";
			if ( divs[i] == 'uploads' ) {
				document.getElementById('mp_tab_sliver').parentNode.className = 'tab on';
			} else {
				document.getElementById('mp_tab_sliver').parentNode.className = 'tab';
			}
			document.getElementById("mp_"+divs[i]).style.display = "block";
		} else {
			document.getElementById("mp_tab_"+divs[i]).parentNode.className = "tab";
			document.getElementById("mp_"+divs[i]).style.display = "none";
		}
	}
}
