﻿var WinMgr=new WinUI();
function WinUI()
{
    var lstWins=new Array();
    var lastZ=1000; //zIndex de la última ventana activa
    var lastWin=""; //Id de última ventana activa
    var oThis=this;
    
    //registra ventanas flotantes
    this.RegisterWindows=function (lstWindows)
    {
        lstWins = lstWindows.split(",");
        if (document.addEventListener) 
		{
			window.addEventListener ( "unload",   function (e){ oThis.Unload(e);}, false);
		}
		else
		{
		    window.attachEvent('onunload',this.Unload);
		}
    }
    
    this.Unload=function()
    {
        for(i=0;i<lstWins.length;i++) //guarda posiciones de las ventanas
        {
            var win = $get(lstWins[i]+"_pnlBody");
            if (win!=null)
            {
                var top;
                var left;
                
                var visible;
                if (win.style.display=="block")
                {
                    visible='true';
                }
                else
                {
                    visible='false';
                }
            
                if (win.getAttribute("xIni")!=null && win.getAttribute("yIni")!=null && win.style.display=='none')
                {
                    top = win.getAttribute("yIni")+"px";
                    left = win.getAttribute("xIni")+"px";
                }
                else
                {
                    top=win.style.top;
                    left=win.style.left;
                }
                
                var valor=top+"_"+left+"_"+visible;
                
                var exdate=new Date();
                exdate.setDate(exdate.getDate()+90);
                setCookie(lstWins[i], valor, exdate ,null,null,null);
            }
        }
    }
    
    this.ActivateWindow=function(idWin)
    {
        if (idWin!=lastWin)
        {
            $get(idWin + "_pnlBody").style.zIndex=++lastZ;
            lastWin=idWin;
        }
    }
    
    this.HighLightWindow=function(idWin, enable)
    {
        if (enable)
        {
            $get(idWin + "_pnlBody").style.border="#ffff00 1px dotted";
        }
        else
        {
            $get(idWin + "_pnlBody").style.border="#000000 1px solid";
        }
    }
    
    this.DeactivateWindow=function(idWin)
    {
        //ui
        $get(idWin + "_pnlBody").style.border="#000000 1px solid";
    }
    
    this.ChangeVisibility=function(winHandle)
    {
        var win = $get(winHandle);
        
        if (win.getAttribute("xIni")!=null)
        {
            win.style.left = win.getAttribute("xIni")+"px";
            win.removeAttribute("xIni");
        }
        if (win.getAttribute("yIni")!=null)
        {
            win.style.top = win.getAttribute("yIni")+"px";
            win.removeAttribute("yIni");
        }
        
        if (win.style.display=="block")
        {
            win.style.display='none';
        }
        else
        {
            win.style.display='block';
        }
    }
    
    //guarda cookie
    function setCookie(name,value,expires,path,domain,secure)
    { 
        document.cookie=name+ "=" +escape(value) + ((expires==null)?"":";expires="+expires.toGMTString()) +((path==null)?"":";path=" + path) +((domain==null)?"":";domain="+domain) +((secure==null)?"":";secure"); 
    } 
    
    //borra cookie
    function deleteCookie(name,path,domain)
    { 
        if(getCookie(name))
        { 
            document.cookie=name+"="+((path==null)?"":";path="+path) +((domain==null)?"":";domain="+domain)+";expires=Thu,01-Jan-70 00:00:01 GMT"; 
        } 
    } 
    //retorna cookie
    function getCookie(c_name)
    {
        if (document.cookie.length>0)
        {
          c_start=document.cookie.indexOf(c_name + "=");
          if (c_start!=-1)
          { 
            c_start=c_start + c_name.length+1; 
            c_end=document.cookie.indexOf(";",c_start);
            if (c_end==-1) c_end=document.cookie.length;
            return unescape(document.cookie.substring(c_start,c_end));
          } 
        }
        return null;
    }
}

function DragService()
{
    var mouseX,mouseY;
    var winDraggin=null;
    var isDraggin=false;
    
    this.RegisterService=function(idCaption, idWin)
    {
        captionDraggin=$get(idCaption);
        winDraggin=$get(idWin);
        if (document.addEventListener)
        {
            captionDraggin.addEventListener("mousedown", InitDragWindow, false); 
            document.addEventListener("mouseup", EndDragWindow, false); 
            document.addEventListener("mousemove", DragWindow, false);
            document.addEventListener("draggesture", function(e){e.cancelBubble=true;e.returnValue=false;}, true);
        }
        else
        {
            captionDraggin.attachEvent("onmousedown",InitDragWindow);
            document.attachEvent("onmouseup",EndDragWindow);
            document.attachEvent("onmousemove",DragWindow);
        }
    }
    
    function InitDragWindow(e)
    {
        if (e==null) e=event; 
        winDraggin.setAttribute("xStart",winDraggin.style.left);
        winDraggin.setAttribute("yStart",winDraggin.style.top);
        getMouseXY(e);
        winDraggin.setAttribute("mxStart",mouseX);
        winDraggin.setAttribute("myStart",mouseY); 
        isDraggin=true; 
        if (!document.addEventListener) 
        {
            e.srcElement.setCapture();
        }
    }
    
    function DragWindow(e)
    {       
        if (e==null) e=event;
        
        if (isDraggin)
        { 
            x = parseInt(winDraggin.getAttribute("xStart"));
            y = parseInt(winDraggin.getAttribute("yStart"));
            
            mx = parseInt(winDraggin.getAttribute("mxStart"));
            my = parseInt(winDraggin.getAttribute("myStart"));
            
            getMouseXY(e);

            mx = mouseX - mx;
            my = mouseY - my;
            
            winDraggin.style.left=x+mx;
            winDraggin.style.top=y+my;
            
            e.cancelBubble=true;
            e.returnValue=false;
        }
    }
    
    function EndDragWindow(e)
    {
        if (e==null) e=event;
        if (isDraggin)
        {
            if (!document.addEventListener) 
            {
                e.srcElement.releaseCapture();
            }
            isDraggin=false;
            e.cancelBubble=true;
            e.returnValue=false;
        }
    }
    
    function getMouseXY(e) 
    {
        if (document.addEventListener) 
        { 
            mouseX = e.pageX;
            mouseY = e.pageY;
        }
        else 
        {              
            mouseX = e.clientX + document.body.scrollLeft;
            mouseY = e.clientY + document.body.scrollTop;
        }
    }  
}

