﻿var timerlen = 5;
var slideAniLen = 250;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endWidth = new Array();
var moving = new Array();
var dir = new Array();

function slideright(objname) {
  if (moving[objname])
    return;

  if (document.getElementById(objname).style.display != "none")
    return; // cannot slide down something that is already visible

  moving[objname] = true;
  dir[objname] = "right";
  startslide(objname);
}

function slideleft(objname) {
  if (moving[objname])
    return;

  if (document.getElementById(objname).style.display == "none")
    return; // cannot slide up something that is already hidden

  moving[objname] = true;
  dir[objname] = "left";
  startslide(objname);
}

function startslide(objname) {
  obj[objname] = document.getElementById(objname);

  endWidth[objname] = parseInt(obj[objname].style.width);
  startTime[objname] = (new Date()).getTime();

  if (dir[objname] == "right") {
    obj[objname].style.width = "1px";
  }

  obj[objname].style.display = "block";

  timerID[objname] = setInterval('slidetick(\'' + objname + '\');', timerlen);
}

function slidetick(objname) {
  var elapsed = (new Date()).getTime() - startTime[objname];

  if (elapsed > slideAniLen)
    endSlide(objname)
  else {
    var d = Math.round(elapsed / slideAniLen * endWidth[objname]);
    if (dir[objname] == "left")
      d = endWidth[objname] - d;

    obj[objname].style.width = d + "px";
  }

  return;
}

function endSlide(objname) {
  clearInterval(timerID[objname]);

  if (dir[objname] == "left")
    obj[objname].style.display = "none";

  obj[objname].style.width = endWidth[objname] + "px";

  delete (moving[objname]);
  delete (timerID[objname]);
  delete (startTime[objname]);
  delete (endWidth[objname]);
  delete (obj[objname]);
  delete (dir[objname]);

  return;
}


function initSlider(id)
{
  var slider = document.getElementById(id);
  var nodes = slider.childNodes;
  for (var i = 0; i < nodes.length; i++)
  {
    var node = nodes[i];
    if (node.nodeType == 3)
    {
      slider.removeChild(node);
      i--;
      continue;
    }
    node.style.position = "absolute";
    node.style.top = "0px";
    node.style.whiteSpace = "noWrap";
  }
  var speed = -1;


  window.setInterval
  (
		function ()
    {
		  if (speed == 0) return;

		  var x = 0;
		  for (var i = 0; i < nodes.length; i++)
      {
        if (i == 0)
        {
		      x = parseFloat(nodes[0].style.left || 0) + speed;
		      if (speed < 0)
          {
            if (x <= -1 * nodes[0].offsetWidth)
            {
              if (nodes.length != 1)
              {
		            slider.appendChild(nodes[0]);
		            i--;
		            continue;
		          }
		          else
              {
		            x = slider.clientWidth;
		          }
		        }
		      }
		    }
		    if (speed > 0)
        {
          if (x >= slider.offsetWidth)
          {
            if (nodes.length != 1)
            {
		          nodes[i].style.left = (parseFloat(nodes[0].style.left || 0) - nodes[i].offsetWidth - 1) + "px";
		          slider.insertBefore(nodes[i], nodes[0]);
		          continue;
		        }
		        else
            {
		          x = -slider.clientWidth;
		        }
		      }
		    }
		    nodes[i].style.left = x + "px";
		    x += nodes[i].offsetWidth + 1;
		  }
		},
		50
	);
}

window.onload = function () {
  initSlider("textSlider");
}

function CreateBookmarkLink() {
  title = document.title;
  url = document.URL;

  if (window.sidebar) { // Mozilla Firefox Bookmark
    window.sidebar.addPanel(title, url, "");
  } else if (window.external) { // IE Favorite
    window.external.AddFavorite(url, title);
  }
  else if (window.opera && window.print) { // Opera Hotlist
    return true;
  }
}



