var is_ie4 = (document.all) ? true : false;
var is_ns4 = (document.layers) ? true : false;
var is_ns6 = (document.getElementById && !document.all) ? true : false;

/*
function fx_setalpha(lay, alpha) {
  if (is_ie4) { eval("document.all[" + lay +"].style.filter.alpha = 70;"); }
  if (is_ns6) { eval("document.getElementById('" + lay +"').style.opacity = alpha;"); }
}
*/

function cursor_hand() {
  document.body.style.cursor = 'pointer';
}

function cursor_move() {
  document.body.style.cursor = 'move';
}

function cursor_wait() {
  document.body.style.cursor = 'wait';
}

function cursor_clear() {
  document.body.style.cursor = 'default';
}

function fx_hidelayer(lay) {
  if (is_ie4) {eval("document.all." + lay +".style.visibility = \"hidden\";");}
  if (is_ns4) {document.layers[lay].visibility = "hide";}
  if (is_ns6) {document.getElementById(lay).style.display = "none";}
}

function fx_showlayer(lay) {
  if (is_ie4) {eval("document.all." + lay +".style.visibility = \"visible\";");}
  if (is_ns4) {document.layers[lay].visibility = "show";}
  if (is_ns6) {
    document.getElementById(lay).style.visibility = "visible";
    document.getElementById(lay).style.display    = "block";
  }
}

function fx_writetolayer(lay,txt) {
  if (is_ie4) {
    eval("document.all[" + lay + "].innerHTML = txt");
  }
  if (is_ns4) {
    document[lay].document.write(txt);
    document[lay].document.close();
  }
  if (is_ns6) {
    over = document.getElementById([lay]);
    range = document.createRange();
    range.setStartBefore(over);
    domfrag = range.createContextualFragment(txt);
    while (over.hasChildNodes()) {
      over.removeChild(over.lastChild);
    }
    over.appendChild(domfrag);
  }
}

function fx_showlayer_relative(layer, obj) {
  var newX = findPosX(obj);
  var newY = findPosY(obj);
  var x = document.getElementById(layer);
  if (!x) return null; 
  x.style.top = newY + 'px';
  x.style.left = newX + 'px';
  fx_showlayer(layer);
}

function fx_showlayer_position(layer, newX, newY) {
  var x = document.getElementById(layer);
  x.style.top = newY + 'px';
  x.style.left = newX + 'px';
  fx_showlayer(layer);
}

function findPosX(obj)
{
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}

function findPosY(obj)
{
  var curtop = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}


//http://www.webreference.com/programming/javascript/mk/column2/index.html
document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var dragObject  = null;
var mouseOffset = null;
var lastCoords  = null;
function mouseCoords(ev){
  if(ev.pageX || ev.pageY){
    return {x:ev.pageX, y:ev.pageY};
  }
  return {
    x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
    y:ev.clientY + document.body.scrollTop  - document.body.clientTop
  };
}

function getMouseOffset(target, ev){
  ev = ev || window.event;

  var docPos    = getPosition(target);
  var mousePos  = mouseCoords(ev);
  lastCoords    = mousePos;
  return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
  var left = 0;
  var top  = 0;

  while (e.offsetParent){
    left += e.offsetLeft;
    top  += e.offsetTop;
    e     = e.offsetParent;
  }

  left += e.offsetLeft;
  top  += e.offsetTop;

  return {x:left, y:top};
}

function mouseMove(ev){
  ev           = ev || window.event;
  var mousePos = mouseCoords(ev);

  if(dragObject){
    dragObject.style.position = 'absolute';
    dragObject.style.top      = mousePos.y - mouseOffset.y;
    dragObject.style.left     = mousePos.x - mouseOffset.x;

    return false;
  }
}

function mouseUp(){
  document.onmousemove = mouseMove;
  dragObject = null;
  cursor_clear();
}

function forceDraggable(item) {
  if(!item) return;
  cursor_move();
  item.onmousemove = function(ev){
    dragObject  = this;
    mouseOffset = getMouseOffset(this, ev);
    return false;
  }
}

function makeDraggable(item){
  if(!item) return;
  cursor_move();
  item.onmousedown = function(ev){
    dragObject  = this;
    mouseOffset = getMouseOffset(this, ev);
    return false;
  }
}

function makeClickable(object){
  object.onmousedown = function(){
    dragObject = this;
  }
}

