// ===============================================================
// CBkort version 2.x, copyright Carl Bro GIS&IT, 2006
// ===============================================================
// $Archive: /Products/CBKort2/development/2.6/standard/wwwroot/js/standard/dialog.js $ 
// $Date: 25-03-11 18:30 $
// $Revision: 14 $ 
// $Author: Nsm $
// =============================================================== 

function Dialog(title,closeHandler,id,nopadding,resizeHandler)
{
    this.startLeft = (cbKort.mapX+10)+'px';
    this.startTop = (cbKort.mapY+10)+'px';
    this.width = '200px';
    this.title = title;
    this.nopadding = nopadding;
    this.id = (id ? id : dialogs.length);
    this.n = dialogs.length;
    this.closeHandler = closeHandler;

    this.resizeHandler = resizeHandler;
    this.resizeElement = (resizeHandler ? '<span onmousedown="dialog_resize(event, \''+this.id+'\')" style="z-index:8;cursor:se-resize;position:absolute;right:-1px;bottom:'+(ie ? '-2' : '-1')+'px;"><div id="resizeelement_' + this.id +'" style="width:10px;height:10px;"><img src="/images/standard/resize.gif"/></div></span>' : '');
    this.minheight = 27;
    this.minwidth = 15;

    this.n = this.check();
    if(this.n==dialogs.length)
    {
        dialogs[this.n] = this;
        this.createDialog();
    }
}

Dialog.prototype.createDialog = function()
{
    var e = getElement('dialog'+this.id);
    if(!e)
    {
        var d = document.createElement('div');
        d.className = 'movablebox';
        d.id = 'dialog'+this.id;
        d.style.visibility = 'visible';
        d.style.display = 'none';
        d.style.left = this.startLeft;
        d.style.top = this.startTop;
        d.style.width = this.width;
        document.body.appendChild(d);
        //d.onclick = SpatialMap.Function.bind (this.activate, this);
    }
    e = getElement('dialog'+this.id);
    var t = '  <div id="dialog'+this.id+'_titlebar" class="titleBar" onmousedown="dragStart(event, \'dialog'+this.id+'\')">' +
            '    <span class="titleBarText" id="'+this.id+'_titleBar">'+this.title+'</span>' +
            '    <img id="dialog'+this.id+'_mm" class="titleBarButtons" src="/images/standard/buttons/minimizebutton_white.gif" onclick="movableBoxMiniMaxiMize(\'dialog'+this.id+'_content\',this.id);"><img class="titleBarButtons" src="/images/standard/buttons/closebutt.gif" onclick="dialogs['+this.n+'].closeDialog()">' +
            '  </div>' +
            '  <div><div id="dialog'+this.id+'_content" class="divcontent'+(this.nopadding ? ' divcontent_nopadding' : '')+'"></div>'+this.resizeElement+'</div>';
    e.innerHTML = '';
    e.innerHTML = t;
}

Dialog.prototype.showDialog = function()
{
    jq('#'+'dialog'+this.id).show('fast');
    this.activate ();
    //showElement(getElement('dialog'+this.id));
    //showBlock(getElement('dialog'+this.id));
}
Dialog.prototype.hideDialog = function()
{
    jq('#'+'dialog'+this.id).hide('fast');
    //hideElement(getElement('dialog'+this.id));
    //hideBlock(getElement('dialog'+this.id));
}
Dialog.prototype.closeDialog = function()
{
    this.hideDialog();
    if(this.closeHandler)
       this.closeHandler();
}
Dialog.prototype.addContentHTML = function(h)
{
    var ce = getElement('dialog'+this.id+'_content');
    if(ce)
        ce.innerHTML = h;
}
Dialog.prototype.getContentHTML = function()
{
    var ce = getElement('dialog'+this.id+'_content');
    if(ce)
        return ce.innerHTML;
    return null;
}
Dialog.prototype.addContentElement = function(e)
{
    var ce = getElement('dialog'+this.id+'_content');
    if(ce)
        ce.appendChild(e);
}
Dialog.prototype.setDialogWidth = function(width)
{
    getElement('dialog'+this.id).style.width = width;
    this.width = width;
}
Dialog.prototype.setDialogTitle = function(title)
{
    getElement(this.id+'_titleBar').innerHTML = title;
}
Dialog.prototype.setDialogClosehandler = function(handler)
{
    this.closeHandler = handler;
}
Dialog.prototype.setMinSize = function(width,height)
{
    if(height)
        this.minheight = parseInt(height);
    if(width)
        this.minwidth = parseInt(width);
}
Dialog.prototype.setDialogPosition = function(dialogleft,dialogtop)
{
    var e = getElement('dialog'+this.id);
    e.style.left = dialogleft;
    e.style.top = dialogtop;
}
Dialog.prototype.check = function()
{
    for(var ndialogs = 0;ndialogs<dialogs.length;ndialogs++)
    {
        if(dialogs[ndialogs].id == this.id)
            return ndialogs;
    }
    return dialogs.length;
}
Dialog.prototype.setDialogIndex = function(index) {
    var e = getElement('dialog'+this.id);
    if (e) {
        e.style.zIndex = index;
    }
}
Dialog.prototype.activate = function() {
    for(var i=0;i<dialogs.length;i++) {
        dialogs[i].setDialogIndex ((dialogs[i].id != this.id ? 1000 : 1002));
    }
}




var dialog_resize_id = 9999;
var dialog_resize_startpos_x;
var dialog_resize_startpos_y;
var dialog_width;
var dialog_height;
var dialog_resize_start = false; 
function dialog_resize(event, id)
{
    var x, y;
    // Get cursor position with respect to the page.
    if (ie)
    {
        
        x = window.event.clientX + document.documentElement.scrollLeft
            + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop
            + document.body.scrollTop;
    }
    if (nn6)
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }
  
    // Activate resize
    dialog_resize_startpos_x = x;
    dialog_resize_startpos_y = y;
    dialog_resize_id = id;
    dialog_resize_start = true;
    
    var el = getElement('dialog'+id);
    dialog_width = getWidth(el)-(ie ? 1 : 0);
    dialog_height = getHeight(el)-(ie ? 2 : 0);
    
    // Capture mousemove and mouseup events on the page.
    if (ie)
    {
        document.attachEvent("onmousemove", dialogResizeSart);
        document.attachEvent("onmouseup",   dialogResizeStop);
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if (nn6)
    {
        document.addEventListener("mousemove", dialogResizeSart, true);
        document.addEventListener("mouseup",   dialogResizeStop, true);
        event.preventDefault();
    }
}
function dialogResizeSart(event)
{
    var x, y;
    // Get cursor position with respect to the page.
    if (ie)
    {
        x = window.event.clientX + document.documentElement.scrollLeft
          + document.body.scrollLeft;
        y = window.event.clientY + document.documentElement.scrollTop
          + document.body.scrollTop;
    }
    if (nn6)
    {
        x = event.clientX + window.scrollX;
        y = event.clientY + window.scrollY;
    }

    var d = dialogGet(dialog_resize_id);
    var dx = x-dialog_resize_startpos_x;
    var dy = y-dialog_resize_startpos_y;
    // Set new size
    var w = dialog_width+dx;
    var h = dialog_height+dy;
    
    if(w<d.minwidth)
    {
        dx = null;
        w = d.minwidth;
    }
    if(h<d.minheight)
    {
        dy = null;
        h = d.minheight;
    }
    
    if(d.resizeHandler)
        d.resizeHandler(dx,dy,dialog_resize_start);
    dialog_resize_start = false;

    var el = getElement('dialog'+dialog_resize_id);
    setWidth(el,w);
    setHeight(el,h);

    if (ie)
    {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
    }
    if (nn6)
        event.preventDefault();
}

function dialogResizeStop(event)
{
    // Stop capturing mousemove and mouseup events.
    if (ie)
    {
        document.detachEvent("onmousemove", dialogResizeSart);
        document.detachEvent("onmouseup",   dialogResizeStop);
    }
    if (nn6)
    {
        document.removeEventListener("mousemove", dialogResizeSart,   true);
        document.removeEventListener("mouseup",   dialogResizeStop, true);
    }
    dialog_resize_id = 9999;
    dialog_resize_startpos_x = null;
    dialog_resize_startpos_y = null;
    dialog_width = null;
    dialog_height = null;
}

function dialogGet(id)
{
    for(var i=0;i<dialogs.length;i++)
    {
        if(dialogs[i].id == id)
            return dialogs[i];
    }
    return false
}
var dialogs = new Array();

