var cX = 0; var cY = 0; var rX = 0; var rY = 0; var xw; var yw; var lastObj;

if(document.all){ document.onmousemove = UpdateCursorPositionDocAll; }
else{ document.onmousemove = UpdateCursorPosition; }

function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY; AssignPosition(lastObj) }

function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY; AssignPosition(lastObj) }

function GetWindowDim()
{
  if (parseInt(navigator.appVersion)>3)
  {
    if (navigator.appName=="Netscape")
    {
      xw = window.innerWidth-16;
      yw = window.innerHeight-16;
    }

    if (navigator.appName.indexOf("Microsoft")!=-1)
    {
      xw = document.body.offsetWidth-20;
      yw = document.body.offsetHeight-20;
    }
  }
}

function setPosition( e, obj )
{
  evt = e || window.event;
  obj = document.getElementById(obj);
  var x = evt.clientX;
  var y = evt.clientY;
  var xw;
  var yw;

  if (parseInt(navigator.appVersion)>3) {
   if (navigator.appName=="Netscape") {
    xw = window.innerWidth-16;
    yw = window.innerHeight-16;
   }
   if (navigator.appName.indexOf("Microsoft")!=-1) {
    xw = document.body.offsetWidth-20;
    yw = document.body.offsetHeight-20;
   }
  }

  var spacer = 5;

  if( x < (xw/2) )
  {
    var offset = (xw - x) < obj.offsetWidth ? obj.offsetWidth - (xw - x) + spacer: 0;
    obj.style.left = (x - offset + spacer) + "px";
  }
  else
  {
    var offset = x < obj.offsetWidth ? obj.offsetWidth - x + spacer: 0;
    obj.style.left = (x - obj.offsetWidth + offset - spacer) + "px";
  }

  if( y > (yw/2) )
  {
    var offset = y < obj.offsetHeight ? obj.offsetHeight - y + spacer: 0;
    obj.style.top = (y - obj.offsetHeight + document.body.scrollTop + offset - spacer) + "px";
  }
  else
  {
    var offset = (yw - y) < obj.offsetHeight ? obj.offsetHeight - (yw - y) + spacer: 0;
    obj.style.top = (y + document.body.scrollTop - offset + spacer) + "px";
  }
}

function AssignPosition(d)
{
  if( d==null )
  {
    return;
  }

  GetWindowDim();

  if(self.pageYOffset)
  {
    rX = self.pageXOffset;
    rY = self.pageYOffset;
  }
  else if(document.documentElement && document.documentElement.scrollTop)
  {
    rX = document.documentElement.scrollLeft;
    rY = document.documentElement.scrollTop;
  }
  else if(document.body)
  {
    rX = document.body.scrollLeft;
    rY = document.body.scrollTop;
  }

  if(document.all)
  {
    cX += rX;
    cY += rY;
  }

  if( cX < (rX+xw/2) )
  {
    d.style.left = (cX+10) + "px";
  }
  else
  {
    d.style.left = (cX-10-d.offsetWidth) + "px";
  }

  if( cY < (rY+yw/2) )
  {
    d.style.top = (cY+10) + "px";
  }
  else
  {
    d.style.top = (cY-10-d.offsetHeight) + "px";
  }
}

function setVisible(e,obj)
{
  var obj2 = document.getElementById(obj);
  lastObj = obj2;
  AssignPosition( obj2 );
  obj2.style.visibility = (obj2.style.visibility == 'visible') ? 'hidden' : 'visible';
}

function fixMinWidthForIE()
{
  try
  {
    if(!document.body.currentStyle)
    {
      return;
    } //IE only
  }
  catch(e)
  {
    return;
  }

  var elems=document.getElementsByTagName("*");
  for(e=0; e<elems.length; e++)
  {
    var eCurStyle = elems[e].currentStyle;
    var l_minWidth = (eCurStyle.minWidth) ? eCurStyle.minWidth : eCurStyle.getAttribute("min-width"); //IE7 : IE6

    if(l_minWidth && l_minWidth != 'auto')
    {
      var shim = document.createElement("DIV");
      shim.style.cssText = 'margin:0 !important; padding:0 !important; border:0 !important; line-height:0 !important; height:0 !important; BACKGROUND:RED;';
      shim.style.width = l_minWidth;
      shim.appendChild(document.createElement("&nbsp;"));

      if(elems[e].canHaveChildren)
      {
        elems[e].appendChild(shim);
      }
      else
      {
        //??
      }
    }
  }
}

function checkAll(field)
{
for (i = 0; i < field.length; i++)
	if(! field[i].disabled)
	{
		field[i].checked = true ;
	}
}

function uncheckAll(field)
{
for (i = 0; i < field.length; i++)
	field[i].checked = false ;
}

function addPlayer( player, raid, instance )
{
  new Ajax.Updater( 'infopanel',
                    'raidpanels.cgi',
                    {
                      evalScripts: 'true',
                      method: 'get',
                      parameters: $H({ addplayer: player,
                                            raid: raid,
                                        instance: instance
                                    })
                    }
                  );
}

function remPlayer( player, raid )
{
  new Ajax.Updater( 'infopanel',
                    'raidpanels.cgi',
                    {
                      evalScripts: 'true',
                      method: 'get',
                      parameters: $H({ remplayer: player,
                                            raid: raid
                                    })
                    }
                  );
}


