﻿
var x0 = 0, y0 = 0, x1 = 0, y1 = 0;
var offx = 6, offy=6;
var moveable = false;
var hover = 'orange', normal = '#336699';//color;
var index = 10000;//z-index;

var ie5=document.all&&document.getElementById;

var ns6=document.getElementById&&!document.all;

var borderSize;

function startDrag(obj,e)
{
  if (ie5&&e.button == 1 ||ns6&&e.button == 0)
  {

    if(obj.setCapture)
    	obj.setCapture();
    else if(window.captureEvents)
		window.captureEvents(Event.MouseDown);

    var win = obj.parentNode;
    var sha = win.nextSibling;

    x0 = e.clientX;
    y0 = e.clientY;
    x1 = parseInt(win.style.left);
    y1 = parseInt(win.style.top);

    normal = obj.style.backgroundColor;

    obj.style.backgroundColor = hover;
    win.style.backgroundColor = hover;
    win.style.borderColor = hover;
    obj.nextSibling.style.color = hover;
    sha.style.left = x1 + offx;
    sha.style.top = y1 + offy;
    moveable = true;
  }
}

function drag(obj,e)
{
  if (moveable)
  {
    var win = obj.parentNode;
    var sha = win.nextSibling;
    win.style.left = x1 + e.clientX - x0;
    win.style.top = y1 + e.clientY - y0;
    sha.style.left = parseInt(win.style.left) + offx;
    sha.style.top = parseInt(win.style.top) + offy;
  }
}

function stopDrag(obj)
{
  if (moveable)
  {
    var win = obj.parentNode;
    var sha = win.nextSibling;
    var msg = obj.nextSibling;
    win.style.borderColor = normal;
    win.style.backgroundColor = normal;
    obj.style.backgroundColor = normal;
    msg.style.color = normal;
    sha.style.left = obj.parentNode.style.left;
    sha.style.top = obj.parentNode.style.top;
    if(obj.releaseCapture)
    	obj.releaseCapture();
   	else if(window.releaseEvents)
		window.releaseEvents(Event.MouseUp);
    moveable = false;
  }
}

function getFocus(obj)
{
  if (obj.style.zIndex != index)
  {
    index = index + 2;
    var idx = index;
    obj.style.zIndex = idx;
    obj.nextSibling.style.zIndex = idx - 1;
  }
}

function min(obj)
{
  var win = obj.parentNode.parentNode;
  var sha = win.nextSibling;
  var tit = obj.parentNode;
  var msg = tit.nextSibling;
  var flg = msg.style.display=="none";
  if (flg)
  {
    win.style.height = parseInt(msg.style.height) + parseInt(tit.style.height) + 2 * 2;
    sha.style.height = win.style.height;
    msg.style.display = "block";
    obj.innerHTML = "<font face='webdings'>0</font>";
  }
  else
  {
    win.style.height = parseInt(tit.style.height) + 2 * 2;
    sha.style.height = win.style.height;
    obj.innerHTML = "<font face='webdings'>2</font>";
    msg.style.display = "none";
  }
}

function xWin(id, w, h, l, t, tit, msg)
{
  index = index + 2;
  this.id = id;
  this.width = w;
  this.height = h;
  this.left = l;
  this.top = t;
  this.zIndex = index;
  this.title = tit;
  this.message = msg;
  this.obj = null;
  if (ie5)
  	borderSize = 0;
  else
  	borderSize = 6;
  
  this.bulid = bulid;
  this.bulid();
}

function bulid()
{
  var str = ""
    + "<div id=xMsg" + this.id + " "
    + "style='"
    + "z-index:" + this.zIndex + ";"
    + "width:" + this.width + ";"
    + "height:" + this.height + ";"
    + "left:" + this.left + ";"
    + "top:" + this.top + ";"
    + "background-color:" + normal + ";"
    + "color:" + normal + ";"
    + "font-size:8pt;"
    + "font-family:Tahoma;"
    + "position:absolute;"
    + "cursor:default;"
    + "border:2px solid " + normal + ";"
    + "' "
    + "onmousedown='getFocus(this)'>"
    + "<div "
    + "style='"
    + "background-color:" + normal + ";"
    + "width:" + (this.width) + ";"
    + "height:20;"
    + "color:white;"
    + "' "
    + "onmousedown='startDrag(this,event)' "
    + "onmouseup='stopDrag(this)' "
    + "onmousemove='drag(this,event)' "
    + "ondblclick='min(this.childNodes[1])'"
    + ">"
    + "<div style='float:left;width:" + (this.width-2*12-6) + "px;padding-left:3px;'>" + this.title + "</div>"
    + "<span style='width:12px;border-width:0px;color:white;' onclick='min(this)'><font face='webdings'>0</font></span>"
    + "<span style='width:12px;border-width:0px;color:white;' onclick='ShowHide(\""+this.id+"\",null)'><font face='webdings'>r</font></span>"
    + "</div>"
    + "<div id=xMsg" + this.id + "mg style='"
    + "width:" + (this.width-borderSize) + ";"
    + "height:" + (this.height-20-borderSize) + ";"
    + "background-color:white;"
    + "line-height:14px;"
    + "word-break:break-all;"
    + "padding:3px;overflow: auto;	scrollbar-3dlight-color : #dddddd;"
	+ "scrollbar-arrow-color :#363636;"
	+ "scrollbar-base-color : #333333;"
	+ "scrollbar-darkshadow-color : #dddddd;"
	+ "scrollbar-face-color : #eeeeee;"
	+ "scrollbar-shadow-color : #999999;"
	+ "scrollbar-track-color : #dddddd;"
    + "'>" + this.message + "</div>"
    + "</div>"
    + "<div id=xMsg" + this.id + "bg style='"
    + "width:" + this.width + ";"
    + "height:" + this.height + ";"
    + "top:" + this.top + ";"
    + "left:" + this.left + ";"
    + "z-index:" + (this.zIndex-1) + ";"
    + "position:absolute;"
    + "background-color:black;"
    + "filter:alpha(opacity=40);"
    + "'></div>";
  insertHtml("beforeend",document.body, str);
}

function ShowHide(id, dis)
{
  var bdisplay = (dis == null)?((document.getElementById("xMsg"+id).style.display=="")?"none":""):dis
  document.getElementById("xMsg"+id).style.display = bdisplay;
  document.getElementById("xMsg"+id+"bg").style.display = bdisplay;
  //if(bdisplay=="")
	//center(id);
}
function ShowText(id, msg)
{
	document.getElementById("xMsg"+id+"mg").innerHTML=msg;
}

function getMSGObject(id)
{
    return document.getElementById("xMsg"+id+"mg");
}

function center(id)
{
xwin = document.getElementById("xMsg"+id);
var wleft = (document.body.clientWidth-xwin.style.width.replace("px",""))/2 < 0 ? 0 : (document.body.clientWidth-xwin.style.width.replace("px",""))/2;
var wtop = (document.body.clientHeight-xwin.style.height.replace("px",""))/2 < 0 ? 0 : (document.body.clientHeight-xwin.style.height.replace("px",""))/2;;

xwin.style.left = wleft;
xwin.style.top  = wtop;

xwinbg = document.getElementById("xMsg"+id+"bg");
xwinbg.style.left = wleft;
xwinbg.style.top  = wtop;
}






function insertHtml(where, el, html){
        where = where.toLowerCase();
        if(el.insertAdjacentHTML){
            switch(where){
                case "beforebegin":
                    el.insertAdjacentHTML('BeforeBegin', html);
                    return el.previousSibling;
                case "afterbegin":
                    el.insertAdjacentHTML('AfterBegin', html);
                    return el.firstChild;
                case "beforeend":
                    el.insertAdjacentHTML('BeforeEnd', html);
                    return el.lastChild;
                case "afterend":
                    el.insertAdjacentHTML('AfterEnd', html);
                    return el.nextSibling;
            }
            throw 'Illegal insertion point -> "' + where + '"';
        }
  var range = el.ownerDocument.createRange();
        var frag;
        switch(where){
             case "beforebegin":
                range.setStartBefore(el);
                frag = range.createContextualFragment(html);
                el.parentNode.insertBefore(frag, el);
                return el.previousSibling;
             case "afterbegin":
                if(el.firstChild){
                    range.setStartBefore(el.firstChild);
                    frag = range.createContextualFragment(html);
                    el.insertBefore(frag, el.firstChild);
                    return el.firstChild;
                }else{
                    el.innerHTML = html;
                    return el.firstChild;
                }
            case "beforeend":
                if(el.lastChild){
                    range.setStartAfter(el.lastChild);
                    frag = range.createContextualFragment(html);
                    el.appendChild(frag);
                    return el.lastChild;
                }else{
                    el.innerHTML = html;
                    return el.lastChild;
                }
            case "afterend":
                range.setStartAfter(el);
                frag = range.createContextualFragment(html);
                el.parentNode.insertBefore(frag, el.nextSibling);
                return el.nextSibling;
            }
            throw 'Illegal insertion point -> "' + where + '"';
    }