var dragPop = false;
var targetPop;
var XmousePop;
var YmousePop;
var XposmousePop;
var YposmousePop;
var ofunctionPop;
var allPopups = [];

function popup_display(x)
{
  var win = window.open();
  for (var p in x) win.document.write(p+' = '+x[p]+'<br>');
}

// mousedown popup

function popup_mousedown(e)
{
  var ie = navigator.appName == "Microsoft Internet Explorer";

  if ( ie && window.event.button != 1) return;
  if (!ie && e.button            != 0) return;

  dragPop = false;
  targetPop   = this['target'];
  
  if (ie){
  	XmousePop = window.event.clientX;
	}else{
	XmousePop = e.clientX;
	}

  if (ie){
  	YmousePop = window.event.clientY;
	}else{
	YmousePop = e.clientY;
	}

  if (ie)
       ofunctionPop      = document.onselectstart;
  else ofunctionPop      = document.onmousedown;

  if (ie)
       document.onselectstart = new Function("return false;");
  else document.onmousedown   = new Function("return false;");
 
}

// mousemove popup

function popup_mousemove(e)
{
  if (!dragPop) return;

  var ie      = navigator.appName == "Microsoft Internet Explorer";
  var element = document.getElementById(targetPop);

  if(ie){
  	var mouseX = window.event.clientX;
	}else{
	var mouseX = e.clientX;
	}
	
  if(ie){
  	var mouseY = window.event.clientY;
	}else{
	var mouseY = e.clientY;
	}

  element.style.left = (element.offsetLeft+mouseX-XmousePop)+'px';
  element.style.top  = (element.offsetTop +mouseY-YmousePop)+'px';

  if(ie){
  	XmousePop = window.event.clientX;
	}else{
	XmousePop = e.clientX;
	}
	
  if(ie){
  	YmousePop = window.event.clientY;
	}else{
	YmousePop = e.clientY
   	}

}

// mouseup popup

function popup_mouseup(e)
{
  if (!dragPop) return;
  dragPop = false;

  var ie      = navigator.appName == "Microsoft Internet Explorer";
  var element = document.getElementById(targetPop);

  if (ie)
       document.onselectstart = ofunctionPop;
  else document.onmousedown   = ofunctionPop;
}

// exit popup

function popup_exit(e)
{
  var ie      = navigator.appName == "Microsoft Internet Explorer";
  var element = document.getElementById(targetPop);

  popup_mouseup(e);
  element.style.visibility = 'hidden';
  element.style.display    = 'none';
  return false;
}


// hide all popups

function hideAllPopups()
{
  for (var i=0; i < allPopups.length; i++) {
    allPopups[i].style.visibility = 'hidden';
    allPopups[i].style.display = 'none';
  }
}

// show popup

function popup_show(id, drag_id, exit_id, position, x, y, position_id)
{
  hideAllPopups();
  
  element      = document.getElementById(id);
  drag_element = document.getElementById(drag_id);
  exit_element = document.getElementById(exit_id);

  element.style.position   = "absolute";
  element.style.visibility = "visible";
  element.style.display    = "block";

  if (position == "screen-corner")
  {
    element.style.left = (document.documentElement.scrollLeft+x)+'px';
    element.style.top  = (document.documentElement.scrollTop +y)+'px';
  }

  if (position == "screen-center")
  {
    element.style.left = (document.documentElement.scrollLeft+(document.body.clientWidth -element.clientWidth )/2+x)+'px';
    element.style.top  = (document.documentElement.scrollTop +(document.body.clientHeight-element.clientHeight)/2+y)+'px';
  }

  if (position == "mouse-corner")
  {
    element.style.left = (document.documentElement.scrollLeft+XposmousePop+x)+'px';
    element.style.top  = (document.documentElement.scrollTop +YposmousePop+y)+'px';
  }

  if (position == "mouse-center")
  {
    element.style.left = (document.documentElement.scrollLeft+XposmousePop-element.clientWidth /2+x)+'px';
    element.style.top  = (document.documentElement.scrollTop +YposmousePop-element.clientHeight/2+y)+'px';
  }

  if (position == "element-right" || position == "element-bottom")
  {
    var position_element = document.getElementById(position_id);

    for (var p = position_element; p; p = p.offsetParent)
      if (p.style.position != 'absolute')
      {

        x += p.offsetLeft;
        y += p.offsetTop ;
      }

    if (position == "element-right" ) x += position_element.clientWidth;
    if (position == "element-bottom") y += position_element.clientHeight;

    element.style.left = x+'px';
    element.style.top  = y+'px';
  }

  drag_element['target']   = id;
  drag_element.onmousedown = popup_mousedown;

  exit_element.onclick     = popup_exit;
}

// mouse position popup

function popup_mousepos(e)
{
  var ie = navigator.appName == "Microsoft Internet Explorer";

  if (ie){
  	XposmousePop = window.event.clientX;
	}else{
	XposmousePop = e.clientX;
	}

  if (ie){
  	YposmousePop = window.event.clientY;
	}else{
	YposmousePop = e.clientY;
	}	

}

// Attach Events

if (navigator.appName == "Microsoft Internet Explorer")
     document.attachEvent('onmousedown', popup_mousepos);
else document.addEventListener('mousedown', popup_mousepos, false);

if (navigator.appName == "Microsoft Internet Explorer")
     document.attachEvent('onmousemove', popup_mousemove);
else document.addEventListener('mousemove', popup_mousemove, false);

if (navigator.appName == "Microsoft Internet Explorer")
     document.attachEvent('onmouseup', popup_mouseup);
else document.addEventListener('mouseup', popup_mouseup, false);

