/**
 * delivers all javascript functions needed for the 'mb_window' - module
 * @author Michael Biedermann
 * @version 2.1.1
 * @copyright 2005-2007
 **/
 
function mb_window_startDrag(e, elementID)
{
    var objDiv = document.getElementById(elementID);
    var parentDiv=objDiv.parentNode;
    var dragMaxX=0
    var dragMaxY=0
    if(parseInt(parentDiv.style.width))
        dragMaxX=parseInt(parentDiv.style.width)-parseInt(objDiv.style.width);
    if(parseInt(parentDiv.style.height))
        dragMaxY=parseInt(parentDiv.style.height)-parseInt(objDiv.style.height);
    var elXPos=parseInt(objDiv.style.left);
    var elYPos=parseInt(objDiv.style.top);
    var clientXStart=e.clientX;
    var clientYStart=e.clientY;
    var deltaX=0;
    var deltaY=0;

    //move element to top
    objDiv.style.zIndex+=10;

    if(document.addEventListener)
    {
        document.addEventListener("mousemove", mb_window_moveHandler, true);
        document.addEventListener("mouseup", mb_window_upHandler, true);
    }
    else if(document.attachEvent)
    {
        document.attachEvent("onmousemove", mb_window_moveHandler);
        document.attachEvent("onmousedown", mb_window_downHandler);
        document.attachEvent("onmouseup", mb_window_upHandler);
    }
    else
    {
        var oldmovehandler=document.onmousemove;
        var olduphandler = document.onmouseup;
        document.onmousemove=mb_window_moveHandler;
        document.onmouseup=mb_window_upHandler;
    }
    if(e.stopPropagation) e.stopPropagation();
    else e.cancelBubble =true;
    if(e.preventDefault) e.preventDefault();
    else e.returnValue=false;

    function mb_window_moveHandler(e)
    {
        if(!e) e=window.event;
        deltaX=e.clientX-clientXStart;
        deltaY=e.clientY-clientYStart;
        var newXPos=elXPos+deltaX;
        var newYPos=elYPos+deltaY;

        if(newXPos<0)
            objDiv.style.left="0px";
        else
        {
            if(dragMaxX==0 || newXPos<=dragMaxX)
                objDiv.style.left=newXPos+"px";
            else
                objDiv.style.left=dragMaxX+"px";
        }

        if(newYPos<0)
            objDiv.style.top="0px";
        else
        {
            if(dragMaxY==0 || newYPos<=dragMaxY)
                objDiv.style.top=newYPos+"px";
            else
                objDiv.style.top=dragMaxY+"px";
        }
        if(e.stopPropagation) e.stopPropagation();
        else {
            e.cancelBubble =true;
            e.returnValue=false;
        }

    }

    function mb_window_downHandler(e)
    {
        if(!e) e=window.event;
        e.cancelBubble =true;
        e.returnValue=false;
    }

    function mb_window_upHandler(e)
    {
        if(!e) e=window.event;
        objDiv.style.zIndex-=10;
        if(document.removeEventListener)
        {
            document.removeEventListener("mousemove", mb_window_moveHandler, true);
            document.removeEventListener("mouseup", mb_window_upHandler, true);
        }
        else if(document.detachEvent)
        {
            document.detachEvent("onmouseup", mb_window_upHandler);
            document.detachEvent("onmousemove", mb_window_moveHandler);
            document.detachEvent("onmousedown", mb_window_downHandler);
        }
        else
        {
            document.onmouseup=olduphandler;
            document.onmousemove=oldmovehandler;
        }
        if(e.stopPropagation) e.stopPropagation();
        else e.cancelBubble =true;
    }
}

function mb_window_startResize(event, elementID, subElementID, minHeight, minWidth, bottomBar, toolBar)
{
    var objDiv = document.getElementById(elementID);
    var subObjDiv = document.getElementById(subElementID);
    if(toolBar==1)
        var objToolBar=document.getElementById(elementID+"toolBar");
    if(bottomBar==1)
    {
        var objBottomBar=document.getElementById(elementID+"bottomBar");
        var objStateInformation=document.getElementById(elementID+"stateInformation");
    }
    var leftBorder=document.getElementById(elementID+"leftBorder");
    var rightBorder=document.getElementById(elementID+"rightBorder");
    var bottomBorder=document.getElementById(elementID+"bottomBorder");
    var topBar=document.getElementById(elementID+"topBar");

    var elXPos=parseInt(objDiv.style.left)+parseInt(objDiv.style.width);
    var elYPos=parseInt(objDiv.style.top)+parseInt(objDiv.style.height);
    var deltaX=event.clientX-elXPos;
    var deltaY=event.clientY-elYPos;

    if(document.addEventListener)
    {
        document.addEventListener("mousemove", mb_window_moveHandler, true);
        document.addEventListener("mouseup", mb_window_upHandler, true);
    }
    else if(document.attachEvent)
    {
        document.attachEvent("onmousemove", mb_window_moveHandler);
        document.attachEvent("onmousedown", mb_window_downHandler);
        document.attachEvent("onmouseup", mb_window_upHandler);
    }
    else
    {
        var oldmovehandler=document.onmousemove;
        var olduphandler = document.onmouseup;
        document.onmousemove=mb_window_moveHandler;
        document.onmousup=mb_window_upHandler;
    }

    if(event.stopPropagation) event.stopPropagation();
    else event.cancelBubble =true;

    if(event.preventDefault) event.preventDefault();
    else event.returnValue=false;

    function mb_window_moveHandler(e)
    {
        if(!e) e=window.event;
        var newWidth=e.clientX-deltaX-parseInt(objDiv.style.left);
        var newHeight=e.clientY-deltaY-parseInt(objDiv.style.top);

        if(newWidth>=minWidth)
        {
            if(newWidth>minWidth)
            {
                objDiv.style.width=newWidth+"px";
                subObjDiv.style.width=newWidth-8+"px";
                bottomBorder.style.width=newWidth-8+"px";
                topBar.style.width=newWidth-12+"px";
                if(toolBar==1)
                    objToolBar.style.width=newWidth-8+"px";
                if(bottomBar==1)
                {
                    objBottomBar.style.width=newWidth-8+"px";
                    objStateInformation.style.width=newWidth-22+"px";
                }
            }
        }

        if(newHeight>minHeight)
        {
            if(newHeight>minHeight)
            {
                subObjDiv.style.height=newHeight-(20+bottomBar*20+toolBar*20)-4+"px";
                objDiv.style.height=newHeight +"px";
                leftBorder.style.height=newHeight-(20+4)+"px";
                rightBorder.style.height=newHeight-(20+4)+"px";
            }
        }
            
        if(e.stopPropagation) e.stopPropagation();
        else e.cancelBubble =true;
    }

    function mb_window_downHandler(e)
    {
        if(!e) e=window.event;
        e.cancelBubble =true;
        e.returnValue=false;
    }

    function mb_window_upHandler(e)
    {
        if(!e) e=window.event;
        if(document.removeEventListener)
        {
            document.removeEventListener("mousemove", mb_window_moveHandler, true);
            document.removeEventListener("mouseup", mb_window_upHandler, true);
        }
        else if(document.detachEvent)
        {
            document.detachEvent("onmouseup", mb_window_upHandler);
            document.detachEvent("onmousemove", mb_window_moveHandler);
            document.detachEvent("onmousedown", mb_window_downHandler);
        }
        else
        {
            document.onmouseup=olduphandler;
            document.onmousemove=oldmovehandler;
        }
        if(e.stopPropagation) e.stopPropagation();
        else e.cancelBubble =true;
    }

}

function mb_window_show(windowName)
{
	objWindow=document.getElementById(windowName);
    var scrollY=0;
    var scrollX=0;
    if(objWindow.parentNode)
    {
        scrollY+=parseInt(objWindow.parentNode.scrollTop);
        scrollX+=parseInt(objWindow.parentNode.scrollLeft);
        var parentNodeObj=objWindow.parentNode;
        while(parentNodeObj=parentNodeObj.parentNode)
        {
            if(parentNodeObj.scrollTop)
                scrollY+=parseInt(parentNodeObj.scrollTop);
            if(parentNodeObj.scrollLeft)
                scrollX+=parseInt(parentNodeObj.scrollLeft);
        }
    }
    objWindow.style.left=parseInt(document.getElementById(windowName+"initLeft").innerHTML)+scrollX+"px";
    objWindow.style.top=parseInt(document.getElementById(windowName+"initTop").innerHTML)+scrollY+"px";
	objWindow.style.display="block";
}

function mb_window_closeWindow(windowName)
{
	objWindow=document.getElementById(windowName);
	objWindow.style.display="none";
}

function mb_window_setTitle(windowName, title)
{
    document.getElementById(windowName+"Title").innerHTML=title;
}

function mb_window_setStateInformation(windowName, stateInformation)
{
    document.getElementById(windowName+"stateInformation").innerHTML=stateInformation;
}

function mb_window_getStateInformation(windowName)
{
    return document.getElementById(windowName+"stateInformation").innerHTML;
}

function mb_window_setSize(windowName, newWidth, newHeight)
{
    var bottomBar=0;
    var toolBar=0;
    //checks
    if(document.getElementById(windowName+"bottomBar"))
        bottomBar=1;
    if(document.getElementById(windowName+"toolBar"))
        toolBar=1;

    var windowObj=document.getElementById(windowName);
    windowObj.style.height=newHeight+toolBar*20+bottomBar*20+20+4+"px";
    windowObj.style.width=newWidth+8+"px";
    var windowContentObj=document.getElementById(windowName+"Content");
    windowContentObj.style.width=newWidth+"px";
    windowContentObj.style.height=newHeight+"px";
    var sideBarHeight=newHeight+bottomBar*20+toolBar*20;
    document.getElementById(windowName+"rightBorder").style.height=sideBarHeight+"px";
    document.getElementById(windowName+"leftBorder").style.height=sideBarHeight+"px";
    document.getElementById(windowName+"topBar").style.width=newWidth-4+"px";
    document.getElementById(windowName+"bottomBorder").style.width=newWidth+"px";
    if(document.getElementById(windowName+"bottomBar"))
        document.getElementById(windowName+"bottomBar").style.width=newWidth+"px";
}

function minimizeWindow(windowName)
{
}

function maximizeWindow(windowName)
{
}

