var DivWindow_Text = '<table class="DivWindow" name="DivWindow" style="display: none; top: 10px; left: 10px;" id="%DivWindow_Id%" width="%Width%" cellpadding="2" cellspacing="0">'
+'  <tr class="DivWindow_Title"><td width="16px">&nbsp;</td>'
+'    <td align="center" id="%Title_id%" onmousedown="DivWindow_HandleMouseDown(this)" onmouseup="DivWindow_HandleMouseUp(this)" width="100%">%Title%</td>'
+'    <td class="DivWindow_Close" onclick="DivWindow_Free(this)" width="16px"><img src="/_2011/close.gif"/></td></tr>'
+'  <tr><td colspan="3" class="DivWindow_Content" id="%ContentId%" name="DivWindowContent"></td></tr>'
//+'  <tr><td/><td/><td/></tr>'
+'</table>';
  
var DivWindow_LastId = 0;
var DivWindow_Drag = null;
var DivWindow_MouseX = 0;
var DivWindow_MouseY = 0;

function DivWindow_HandleMouseUp(e){
  DivWindow_Drag = null;
}

function DivWindow_HandleMouseDown(e){
  DivWindow_Drag = DivWindow_GetWindowElement(e);
  if (!DivWindow_Drag)
    return;
  var items = document.getElementsByName('DivWindow');
  for (var i=0; i<items.length; i++){
    var item = items[i];
    item.style.zIndex = 0;
  }
  DivWindow_Drag.style.zIndex = 10;
  var CurX = parseInt(DivWindow_Drag.offsetLeft);
  var CurY = parseInt(DivWindow_Drag.offsetTop);
  
  var OfsX = CurX - DivWindow_MouseX;
  var OfsY = CurY - DivWindow_MouseY;
  
  DivWindow_Drag.setAttribute('OfsX',OfsX);
  DivWindow_Drag.setAttribute('OfsY',OfsY);
}

function HandleMouseMove(e){
  if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event) 
  if (e)
  { 
    if (e.pageX || e.pageY)
    { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
      DivWindow_MouseX = e.pageX;
      DivWindow_MouseY = e.pageY;
    }
    else if (e.clientX || e.clientY)
    { // works on IE6,FF,Moz,Opera7
      DivWindow_MouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
      DivWindow_MouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
  }
  if (DivWindow_Drag){
    if (DivWindow_Drag.style.display == 'none'){
      DivWindow_Drag = null
    } else {
      var OfsX = parseInt(DivWindow_Drag.getAttribute('OfsX'));
      var OfsY = parseInt(DivWindow_Drag.getAttribute('OfsY'));
      DivWindow_Drag.style.left = DivWindow_MouseX + OfsX;
      DivWindow_Drag.style.top = DivWindow_MouseY + OfsY;
    }
  }
}

function DivWindow_Center(item){
  var e = DivWindow_GetWindowElement(item);
  if (!e)
    return;
  var x = document.body.clientWidth/2 - e.clientWidth/2 + (document.body.scrollLeft + document.documentElement.scrollLeft);
  var y = document.body.clientHeight/2 - e.clientHeight/2 + (document.body.scrollTop + document.documentElement.scrollTop);
  if (x < 0)
    x = 0;
  if (y < 0)
    y = 0;
  e.style.left = x;
  e.style.top = y;
}

function DivWindow_GetWindowElement(item){
  if (typeof item == 'string')
    item = document.getElementById(item);
  if (!item)
    return null;
  while (item.className != 'DivWindow'){
    if (!item.parentNode)
      return null;
    item = item.parentNode;
  }
  return item;
}

function DivWindow_GetContentElement(item){
  var win = DivWindow_GetWindowElement(item);
  if (!win)
    return null;
  var id = 'DivWindow_Content'+win.wid;
  var e = document.getElementById(id);
  return e;
}

function DivWindow_Free(item){
  var e = DivWindow_GetWindowElement(item);
  if (!e)
    return;
  var p = e.parentNode;
  if (!p)
    return;
  e.style.display = 'none';
  p.removeChild(e);
}

function DivWindow_FreeAll(){
  var items = document.getElementsByName('DivWindow');
  for (var i=items.length-1; i>=0; i--){
    var item = items[i];
    DivWindow_Free(item);
  }
}
  
function DivWindow_New(ATitle, AWidth, FreeOthers){
  if (FreeOthers)
    DivWindow_FreeAll();
  DivWindow_LastId++;
  var ID = DivWindow_LastId;
  var wID = 'DivWindow_'+ID;
  var cID = 'DivWindow_Content'+ID;
  var tID = 'DivWindow_Title'+ID;
  var s = DivWindow_Text;
  s = s.replace('%Title%',ATitle);
  s = s.replace('%Width%',AWidth);
  s = s.replace('%DivWindow_Id%',wID);
  s = s.replace('%Title%',tID);
  s = s.replace('%ContentId%',cID);
  document.body.innerHTML += s;
  var e = document.getElementById(wID);
  e.wid = ID;
  e.style.display = '';
  e.style.position = 'absolute';
  DivWindow_Center(wID);
  document.onmousemove = HandleMouseMove;
  return cID;
}

function DivWindow_CopyContent(AWindow, AElement){
  AWindow = DivWindow_GetWindowElement(AWindow);
  if (!AWindow)
    return;
  var e = DivWindow_GetContentElement(AWindow);
  if (!e)
    return;
  if (typeof AElement == 'string')
    AElement = document.getElementById(AElement);
  if (!AElement)
    e.innerHTML = '';
  else
    e.innerHTML = AElement.innerHTML;    
}
