﻿/** 
    Questa funzione permette la generazione di una finestra di dialogo
    che comparirà in primo piano rispetto all'operazione corrente. 
    
    La finestra assume valore FOCUS | DIALOG quindi è necessario completare o 
    annullare l'operazione richiesta prima di poter continuare con il lavoro. 
    
    E' tuttavia possibile cambiare il contenuto della finestra di dialogo
    richiamando NetSellGui_OpenDialogWindow dalla Dialog stessa. 
    
    L'URI passato viene modificato in modo da bypassare eventuali
    cache del browser.
    
    Attenzione: Per la gestione del dialog window vengono usati i seguenti fix
        - Iexplore, Chrome e K-Meleon usano un Iframe per visualizzare l'intero della
          pagina.
        - Firefox, Opera e altri brower mozilla-based usano i Div.                                 
    
.**/


// Questa variabile mantiene lo stato della finestra di dialogo.
var NetSellGui_DialogIsOpen = false;


// Apre una finestra di dialogo
function NetSellGui_OpenDialogWindow(URI,DialogText,jCache,jHide) {


    
    // L'URI viene opportunamente modificato per evitare la cache del browser
    if (jCache == null) {
        var _xDate = new Date();
        if (URI.toString().match('\\?') != null)
            URI = URI + '&x=' + _xDate.getSeconds() + '&y=' + _xDate.getMilliseconds();
        else
            URI = URI + '?x=' + _xDate.getSeconds() + '&y=' + _xDate.getMilliseconds();
        _xDate = null;
    }

    // Se la finestra di dialogo è già aperta non crea un nuovo oggetto
    // ma sostiuisce il corpo di quello corrente.
    if (NetSellGui_DialogIsOpen) {
        var ViewObject = document.getElementById("NetSellGui_DialogWindow");
        if (NetSell_Global_BrowserName == 'Netscape' && !navigator.userAgent.toString().match('(Chrome)+') && !navigator.userAgent.toString().match('(K-Meleon)+')) 
        {
            ViewObject.setAttribute("data", URI);
        }
        else {  // Internet Explorer necessita dell'iframe :|
            ViewObject.setAttribute("src", URI);
        }
        return false;
    }


    var theBody = document.getElementsByTagName("body").item(0);
  
    // Lo sfondo trasparente
    var OpaqueDiv = document.createElement("div");
    OpaqueDiv.setAttribute("id", "NetSellGui_OpaqueDiv");
    OpaqueDiv.setAttribute("name", "NetSellGui_OpaqueDiv");
    
    // L'area client
    var ClientDiv = document.createElement("div");
    ClientDiv.setAttribute("id", "NetSellGui_ClientDiv");

    // L'area di Titlebar per chiudere la finestra
    var TitleBar = document.createElement("div");
    TitleBar.setAttribute("id", "NetSellGui_TitlebarDiv");
    
    // Gli elementi che compongono la titleBar
    var CloseWin = document.createElement("img");
    var TitleText = document.createElement("span");
    
    CloseWin.setAttribute("src", NetSell_XalpServiceUrl  + "/layout/theme/" + NetSell_ThemeName + "/DialogWindow/NetSellGui_DialogWindow_Close.png");
    CloseWin.setAttribute("id", "NetSellGui_TitlebarCloseBtn");

    // Attach del testo della dialog
    TitleText.setAttribute("id", "NetSellGui_TitlebarTextSpan");
    if (DialogText != null) {
        TitleText.appendChild(document.createTextNode(DialogText));
    }
    TitleBar.appendChild(TitleText);

    // La funzione reale dovrebbe essere questa ma IE7 non la gestisce e qunidi usiamo la compatibilità
    //CloseWin.setAttribute("onclick", "eval(parent.NetSellGui_CloseDialogWindow())");
    
    /*Compatibilità IE7/IE8/Chrome*/
    CloseWin.onclick = function() {  parent.NetSellGui_CloseDialogWindow() };
    
    // Effettua l'attach degli elementi della titlebar
    TitleBar.appendChild(CloseWin);

    // Alcuni browser mozilla-based riescono ad usare correttamente questo codice
    var ViewObject;
    if (NetSell_Global_BrowserName == 'Netscape' && !navigator.userAgent.toString().match('(Chrome)+') && !navigator.userAgent.toString().match('(K-Meleon)+')) 
    {
        ViewObject = document.createElement("object");
        ViewObject.setAttribute("id", "NetSellGui_DialogWindow");
        ViewObject.setAttribute("type", "text/html");
        ViewObject.setAttribute("data", URI);

    }
    else {  // Internet Explorer, Chrome e K-Meleon necessitano dell'i-frame
        ViewObject = document.createElement("iframe");
        ViewObject.setAttribute("id", "NetSellGui_DialogWindow");
        ViewObject.setAttribute("src", URI);
    }

    // controllo su jHide per non mostrare la div
    if (jHide) {
        ViewObject.setAttribute("style", "visibility:hidden;");
    }
    
    // Aggiunge il visualizzatore all'area Client
    ClientDiv.appendChild(ViewObject);
   
    // Aggiunge l'area client e la titlebar all'OpaqueDiv
    theBody.appendChild(ClientDiv);

    theBody.appendChild(TitleBar);
    // Aggiunge l'opaqueDiv al Body e quindi visualizza la finestra
    theBody.appendChild(OpaqueDiv);



    NetSellGui_DialogIsOpen = true;
    
    // Invalida i riferimenti per il GC
    theBody = null; OpaqueDiv = null; ClientDiv = null; ViewObject = null;
    TitleBar = null;CloseWin = null;
}

// Chiude una finestra di dialogo
function NetSellGui_CloseDialogWindow() 
{   
    var ToDelete = document.getElementById("NetSellGui_OpaqueDiv");
    var TheBody = document.getElementsByTagName("body").item(0);
    if (ToDelete != null)
    TheBody.removeChild(ToDelete);
    ToDelete = document.getElementById("NetSellGui_ClientDiv");
    if (ToDelete != null)
        TheBody.removeChild(ToDelete);
    ToDelete = document.getElementById("NetSellGui_TitlebarDiv");
    if (ToDelete != null)
        TheBody.removeChild(ToDelete);
    ToDelete = null; TheBody = null;
    NetSellGui_DialogIsOpen = false;

}



