/**
 * @author mgiannessi
 */
var AnaToolBar;
var ConfirmWin;
var CosmoMenuOk = false;
var Configuratore = false;
var dhxLayout;
var dhxLayOffer;
var dhxWins;
var dhxWinsOff;
var dhxMenu;
var LoginWin;
var MessagesWin;
var MsgWinToolbar;
var MenuV;
var OffToolbar;
var Psw;
var RecuperaWin;
var RegistraWin;
var RegistraToolBar;
var StatusLoginWin;
var StatusRecuperaWin;
var TabellaGrid;
var User;
var VarPrint;
var WSC_CallBackId;
var LoginToolBar;


function WSC_OnLoadStartWin(Skin){
    window.dhx_globalImgPath = "../DHX/imgs/";
    dhxWins = new dhtmlXWindows();
    dhxWins.setImagePath("../DHX/imgs/");
    dhxWins.setIconsPath = "../DHX/imgs/";
    //dhxWins.setSkin(Skin);
}

function WSC_OnLoadStartLay(Type, Skin, ResHor, ResVert){
    dhxLayout = new dhtmlXLayoutObject(document.body, Type, Skin);
    dhxLayout.setImagePath("../DHX/imgs/");
    dhxLayout.setIconsPath = "../DHX/imgs/";
    dhxLayout.setEffect("resize", true);
    dhxLayout.setAutoSize(ResHor, ResVert);
}

function WSC_OnLoadMessage(){
    // Windows per conferme
    ConfirmWin = dhxWins.createWindow("Confirm", 400, 200, 400, 67);
    ConfirmWin.setIconsPath = "../DHX/imgs/";
    ConfirmWin.setIcon("Abort.png", "Abort.png");
    ConfirmWin.center();
    ConfirmWin.setModal(false);
    ConfirmWin.denyResize(false);
    ConfirmWin.button("close").show();
    ConfirmWin.button("park").hide();
    ConfirmWin.button("minmax1").hide();
    ConfirmWin.button("minmax2").hide();
    ConfirmWin.attachObject('WSC_MessageDiv');
    ConfirmWin.attachEvent("OnClose", function(){
        ConfirmWin.setModal(false);
        ConfirmWin.hide();
    });
    MsgWinToolbar = ConfirmWin.attachToolbar();
    MsgWinToolbar.attachEvent("onClick", WSC_ClickConfirm);
    ConfirmWin.hide();
    
    // Windows per messaggi
    MessagesWin = dhxWins.createWindow("Messaggi", 400, 200, 400, 120);
    MessagesWin.setIconsPath = "../DHX/imgs/";
    MessagesWin.setIcon("Conferma.png", "Conferma.png");
    MessagesWin.center();
    MessagesWin.setModal(false);
    MessagesWin.denyResize(false);
    MessagesWin.button("close").show();
    MessagesWin.button("park").hide();
    MessagesWin.button("minmax1").hide();
    MessagesWin.button("minmax2").hide();
    MessagesWin.attachObject('WSC_MessageDiv');
    MessagesWin.attachEvent("OnClose", function(){
        MessagesWin.setModal(false);
        MessagesWin.hide();
    });
    MessagesWin.hide();
}

function WSC_OnLoadSection(Cell, Altezza, Larghezza, Header, Obj, Url, FixHor, FixVert){

    // Sezione
    if (Altezza != 0) {
        Cell.setHeight(Altezza);
    }
    
    if (Larghezza != 0) {
        Cell.setWidth(Larghezza);
    }
    
    if (Header == "") {
        Cell.hideHeader();
    }
    else {
        Cell.setText(Header);
    }
    if (Obj != "") {
        Cell.attachObject(Obj);
    }
    if (Url != "") {
        Cell.attachURL(Url);
    }
    Cell.fixSize(FixHor, FixVert);
}

function WSC_OnLoadContent(Cell, Header, Url){
    // Sezione contenuto
    if (Header == "") {
        Cell.hideHeader();
    }
    else {
        Cell.setText(Header);
    }
    if (Url != "") {
        Cell.attachURL(Url);
    }
    VarPrint = "Print";
    AnaToolBar = Cell.attachToolbar();
    AnaToolBar.setIconsPath = "../DHX/imgs/";
    AnaToolBar.addButton("Print", 1, "  Stampa  ", "../images/Print.png");
    AnaToolBar.attachEvent("onClick", WSC_ClickToolContent);
}

function WSC_OnLoadMenuV(Cell, Width, Title, FixHor, FixVert, CheckLogin){
    // Sezione menu
    Cell.setWidth(Width);
    //Cell.showHeader();
    //Cell.setText(Title);
	Cell.hideHeader();
    Cell.fixSize(FixHor, FixVert);
    
    var MenuToolBar = Cell.attachToolbar();
    MenuToolBar.setIconsPath = "../DHX/imgs/";
    MenuToolBar.addButton("MenuOpen", 1, " Espandi ", "../DHX/imgs/folderOpen.gif");
    MenuToolBar.addButton("MenuClose", 2, " Chiudi ", "../DHX/imgs/folderClosed.gif");
    MenuToolBar.attachEvent("onClick", WSC_ClickToolMenu);
    MenuV = Cell.attachTree();
    MenuV.enableKeyboardNavigation(true);
    MenuV.setImagePath("../DHX/imgs/csh_bluebooks/");
    MenuV.attachEvent("onClick", function(id){
        WSC_ClickMenuItem(id, CheckLogin, 'V')
    });
    MenuV.attachEvent("onXLE", function(){
        MenuV.openItem(1);
    });
}

function WSC_OnLoadLogin(Check){
    // Windows di login
    LoginWin = dhxWins.createWindow("Login", 400, 200, 360, 186);
    LoginWin.setIconsPath = "../DHX/imgs/";
    LoginWin.center();
    LoginWin.denyResize(false);
    LoginWin.button("close").hide();
    LoginWin.button("park").hide();
    LoginWin.button("minmax1").hide();
    LoginWin.button("minmax2").hide();
    LoginWin.setText('Accesso area riservata');
    LoginWin.attachEvent("OnClose", function(){
        LoginWin.setModal(false);
        LoginWin.hide();
        WSC_CallBack("Login", WSC_CallBackId, "Close");
    });
    StatusLoginWin = LoginWin.attachStatusBar();
    
    LoginToolBar = LoginWin.attachToolbar();
    LoginToolBar.setIconsPath = "../DHX/imgs/";
    LoginToolBar.addButton("Login", 1, " Login  ", "../DHX/imgs/Lock.png");
    LoginToolBar.addButton("Recupera", 2, " Recupera login  ", "../DHX/imgs/Recupera.png");
    LoginToolBar.addButton("Registrati", 3, " Registrati", "../DHX/imgs/Registrati.png");
    LoginToolBar.attachEvent("onClick", WSC_ClickLogin);
    
    var LoginForm = LoginWin.attachObject('Login');
    if (Check) {
        var loader = dhtmlxAjax.postSync("/WSC_LOGIN_Check");
        if (loader.xmlDoc.responseText.slice(0, 2) == "OK") {
            WSC_CallBack("Login", WSC_CallBackId, "Confirmed");
            LoginWin.hide();
        }
        else {
            WSC_Login(true, false, "", 0);
        }
    }
    else {
        LoginWin.hide();
    }
    
    // Windows di recupera login
    RecuperaWin = dhxLayout.dhxWins.createWindow("Recupera", 400, 200, 400, 140);
    RecuperaWin.setIconsPath = "../DHX/imgs/";
    RecuperaWin.center();
    RecuperaWin.denyResize(false);
    RecuperaWin.attachEvent("OnClose", DoOnCloseRecupera);
    RecuperaWin.button("park").hide();
    RecuperaWin.button("minmax1").hide();
    RecuperaWin.button("minmax2").hide();
    RecuperaWin.setText('Recupera login');
    StatusRecuperaWin = RecuperaWin.attachStatusBar();
    
    var RecuperaToolBar = RecuperaWin.attachToolbar();
    RecuperaToolBar.setIconsPath = "../DHX/imgs/";
    RecuperaWin.setIcon("../../images/Mail.png");
    RecuperaToolBar.addButton("SendLogin", 1, " Spedisci i dati di login all'indirizzo email sotto specificato ...", "../images/Conferma.png");
    RecuperaToolBar.attachEvent("onClick", WSC_ClickLogin);
    var RecuperaForm = RecuperaWin.attachObject('RecPws');
    RecuperaWin.hide();
    
    // Windows di registrazione
    RegistraWin = dhxLayout.dhxWins.createWindow("Registrazione", 400, 0, 804, 400);
    RegistraWin.center();
    RegistraWin.denyResize(false);
    RegistraWin.attachEvent("OnClose", function(){
        RegistraWin.setModal(false);
        RegistraWin.hide();
        LoginWin.setModal(true);
        LoginWin.show();
    });
    RegistraWin.button("park").hide();
    RegistraWin.button("minmax1").hide();
    RegistraWin.button("minmax2").hide();
    RegistraWin.setText('Form di registrazione al sito');
    RegistraWin.setIconsPath = "../DHX/imgs/";
    RegistraWin.setIcon("../../images/page_setup.gif");
    RegistraToolBar = RegistraWin.attachToolbar();
    RegistraToolBar.setIconsPath = "../DHX/imgs/";
    RegistraToolBar.addButton("Registrami", 1, " Conferma anagrafica", "../images/Conferma.png");
    RegistraToolBar.attachEvent("onClick", WSC_ClickLogin);
    //RegistraWin.attachURL("../WRA/PersoneFisiche/index.html?Type=Base");
    RegistraWin.hide();
}

function WSC_Alert(Title, Message, Modal){

    MessagesWin.button("close").show();
    document.getElementById('WSC_MessageDiv').innerHTML = Message;
    MessagesWin.center();
    MessagesWin.setModal(Modal);
    MessagesWin.setText(Title);
    MessagesWin.setIcon("Error.png", "Error.png");
    MessagesWin.show();
}

function WSC_Confirm(Title, ConfirmTxt, CancelTxt, Message, Modal, id, IconType){
    ConfirmWin.button("close").hide();
    document.getElementById('WSC_MessageDiv').innerHTML = Message;
    ConfirmWin.center();
    ConfirmWin.setModal(Modal);
    ConfirmWin.setText(Title);
    MsgWinToolbar.clearAll();
    if (IconType == "Mark") {
        MsgWinToolbar.addButton("Conferma", 1, ConfirmTxt, "../DHX/imgs/Good_mark.png");
        MsgWinToolbar.addButton("Annulla", 2, CancelTxt, "../DHX/imgs/Bad_mark.png");
    }
    else {
        MsgWinToolbar.addButton("Conferma", 1, ConfirmTxt, "../iamges/Conferma.png");
        MsgWinToolbar.addButton("Annulla", 2, CancelTxt, "../images/Delete.png");
    }
    WSC_CallBackId = id;
    ConfirmWin.show();
}

function WSC_ClickConfirm(id){
    WSC_CallBack("Confirm", WSC_CallBackId, id);
}

function WSC_ClickMenuItem(id, CheckLogin, Type){
    if (Type == "V") {
        var MyUrl = MenuV.getUserData(id, "URL");
        var MyTarget = MenuV.getUserData(id, "TARGET");
        dhxLayout.cells("b").showToolbar();
        if (CosmoMenuOk) {
            dhxLayout.cells("b").hideMenu();
        }
    }
    else {
        var MyUrl = id.slice(4, 100);
        var MyTarget = 'Nel contenuto';
        dhxLayout.cells("b").hideToolbar();
    }
    var Continua = true;
    if (CheckLogin) {
        var loader = dhtmlxAjax.postSync("/WSC_LOGIN_Check");
        if (loader.xmlDoc.responseText.slice(0, 2) == "OK") {
            Continua = true;
        }
        else {
            Continua = false;
        }
    }
    if (Continua) {
        AnaToolBar.removeItem(VarPrint);
        // Solo i TAG che iniziano con WSC_Elenco stamperanno le griglie
        if (MyUrl.slice(0, 10) == "WSC_Elenco") {
            AnaToolBar.addButton("PrintGrid", 1, "  Stampa  ", "../DHX/imgs/Print.png");
            VarPrint = "PrintGrid";
        }
        else {
            AnaToolBar.addButton("Print", 1, "  Stampa  ", "../DHX/imgs/Print.png");
            VarPrint = "Print";
        }
        switch (MyUrl) {
            case "WSC_WRA_Esci":
                var logout = dhtmlxAjax.postSync("/WSC_WRA_Esci");
                WSC_Login(true, false, "", 0);
                break;
                
            case "WSC_CSM":
                if (CosmoMenuOk) {
                    dhxLayout.cells("b").showMenu();
                    dhxLayout.cells("b").hideToolbar();
                }
                else {
                    dhxLayout.cells("b").hideToolbar();
                    dhxMenu = dhxLayout.cells("b").attachMenu();
                    dhxMenu.attachEvent("onClick", function(id){
                        WSC_ClickMenuItem(id, CheckLogin, 'H');
                    });
                    dhxMenu.loadXML("/WSC_MenuGetXml?Menu=BU_CSM&Type=H");
                    CosmoMenuOk = true;
                }
                dhxLayout.cells("b").attachURL("../CP/COSMO/Index.html");
                break;
                
            default:
                AnaToolBar.removeItem("Registrami");
                if (MyUrl != "") {
                    if (MyUrl == "WSC_WRA_Profilo") {
                        AnaToolBar.addButton("Registrami", 2, " Conferma anagrafica", "../DHX/imgs/Conferma.png");
                    }
                    switch (MyTarget) {
                        case "Stessa finestra": // Parent windows
                            window.location.href = MyUrl
                            break;
                        case "Nuova finestra": // New windows
                            window.open(MyUrl);
                            break;
                        case "Sotto al menu": // Sotto al menu
                            window.iContent.location.href = MyUrl
                            break;
                        case "Nel contenuto": // iContent
                            dhxLayout.cells("b").attachURL(MyUrl);
                            break;
                        case "Dialog": // Dialog
                            alert('funzione non attiva')
                            break;
                    }
                }
        }
    }
    else {
        LoginWin.setModal(true);
        LoginWin.show();
    }
}

function WSC_ClickToolMenu(id){
    switch (id) {
        case "MenuOpen":
            MenuV.openAllItems(0)
            break;
            
        case "MenuClose":
            MenuV.closeAllItems(0)
            break;
    }
}

function WSC_ClickToolContent(id){
    switch (id) {
        case "Print":
            dhxLayout.cells("b")._frame.contentWindow.print();
            break;
            
        case "PrintGrid":
            dhxLayout.cells("b")._frame.contentWindow.doPrintGrid();
            break;
            
        case "Registrami":
			var result = dhxLayout.cells("b")._frame.contentWindow.InvioAnagrafica();
			if (result.slice(0, 2) == "OK") {
				WSC_Alert("Aggiornamento CONFERMATO !", " L' aggiornamento dei dati del profilo è avvenuto con successo ", true);
				}
			else{
				WSC_Alert("Aggiornamento non Riuscito !", " L' aggiornamento dei dati del profilo non è avvenuto con successo perchè , "+result, true);
			}
            break;
    }
}

function WSC_ClickLogin(id){

    switch (id) {
    
        case "Login":
            LoginWin.hide();
            User = window.document.Login.username.value;
            Psw = window.document.Login.password.value;
            var params = "username=" + User + "&password=" + Psw;
            var loader = dhtmlxAjax.postSync("/WSC_Login", params);
            if (loader.xmlDoc.responseText.slice(0, 2) == "OK") {
                window.document.Login.username.value = "";
                window.document.Login.password.value = "";
                StatusLoginWin.setText("");
                LoginWin.setModal(false);
                WSC_CallBack("Login", WSC_CallBackId, "Executed");
            }
            else {
                LoginWin.hide();
                WSC_Alert("ATTENZIONE !", "Nome utente o password non validi", true);
                StatusLoginWin.setText("    Nome utente o password non validi");
                LoginWin.show();
            }
            break;
            
        case "Recupera":
            LoginWin.setModal(false);
            LoginWin.hide();
            RecuperaWin.center();
            RecuperaWin.setModal(true);
            RecuperaWin.show();
            break;
            
        case "SendLogin":
            var U = window.document.RecPws.Email.value;
            var params = "F021=" + U;
            var loader = dhtmlxAjax.postSync("/WSC_FYL_CheckMail'", params);
            if (loader.xmlDoc.responseText == "NON TROVATA") {
                StatusRecuperaWin.setText("Mail sconosciuta !");
            }
            else {
                var params = "u=" + U;
                var loader = dhtmlxAjax.postSync("/WSC_REG_SENDLOGIN", params);
                if (loader.xmlDoc.responseText != "OK") {
                    StatusRecuperaWin.setText(loader.xmlDoc.responseText);
                }
                else {
                    DoOnCloseRecupera();
                }
            }
            break;
            
        case "Registrati":
            LoginWin.setModal(false);
            LoginWin.hide();
            RegistraWin.center();
            RegistraWin.setModal(true);
            RegistraWin.show();
            RegistraWin.attachURL("../WRA/PersoneFisiche/index.html?Type=Base");
            break;
            
        case "Registrami":
            var result = RegistraWin._frame.contentWindow.InvioAnagrafica();
            if (result == "NON TROVATA" || result == "OK") {
                RegistraWin.button("close").show();
                RegistraWin.setModal(false);
                RegistraWin.hide();
                if (WSC_CallBackId == "Ordine") {
                    WSC_CallBack("Confirm", "Ordine", "ConfermaAna");
                }
                else {
					//alert("La conferma della registrazione arriverà via mail.")
					WSC_Alert("REGISTRAZIONE CONFERMATA !", "In pochi minuti arriverà la richiesta di conferma via mail per ottenere lo user name e la password.<br><br>Buona giornata.", true);
                    LoginWin.setModal(true);
                    LoginWin.show();
                }
            }
            else{
            	WSC_Alert("REGISTRAZIONE non Completata !", result, true);
            }
            
            break;
    }
}

function WSC_Login(Modal, CloseBox, Message, id){
    WSC_CallBackId = id;
    LoginWin.setModal(Modal);
    if (CloseBox) {
        LoginWin.button("close").show();
    }
    else {
        LoginWin.button("close").hide();
    }
    StatusLoginWin.setText(Message);
    LoginWin.setIcon("key.png", "key.png");
    LoginWin.show();
}

function DoOnCloseRecupera(){
    RecuperaWin.setModal(false);
    RecuperaWin.hide();
    LoginWin.setModal(true);
    LoginWin.show();
}

function DoOnCloseRegistra(){
    RegistraWin.setModal(false);
    RegistraWin.hide();
    LoginWin.show();
}

function RemoveAll(itemId){
    AnaToolBar.removeItem(itemId);
}

function StartLoadMenuData(){
    dhxLayout.cells("b").progressOn();
}

function EndLoadMenuData(){
    dhxLayout.cells("b").progressOff();
}

function URLEncode(clearString){
    var output = '';
    var x = 0;
    clearString = clearString.toString();
    var regex = /(^[a-zA-Z0-9_.]*)/;
    while (x < clearString.length) {
        var match = regex.exec(clearString.substr(x));
        if (match != null && match.length > 1 && match[1] != '') {
            output += match[1];
            x += match[1].length;
        }
        else {
            if (clearString[x] == ' ') 
                output += '+';
            else {
                var charCode = clearString.charCodeAt(x);
                var hexVal = charCode.toString(16);
                output += '%' + (hexVal.length < 2 ? '0' : '') + hexVal.toUpperCase();
            }
            x++;
        }
    }
    return output;
}

function URLDecode(encodedString){
    var output = encodedString;
    var binVal, thisString;
    var myregexp = /(%[^%]{2})/;
    while ((match = myregexp.exec(output)) != null && match.length > 1 && match[1] != '') {
        binVal = parseInt(match[1].substr(1), 16);
        thisString = String.fromCharCode(binVal);
        output = output.replace(match[1], thisString);
    }
    return output;
}

function DoNotCheck(id){
    var ok;
};

function DoOnCheck(id){
	if (ClickCheck) {
		var MyTarget = MenuV.getUserData(id, "TARGET");
		MyTarget = MyTarget.replace(",", "&");
		MyTarget = MyTarget.replace(",", "&");
		MyTarget = MyTarget.replace(",", "&");
		MyTarget = MyTarget.replace(",", "&");
		MyTarget = MyTarget.replace(",", "&");
		MyTarget = MyTarget.replace(",", "&");
		
		var MyUrl = MenuV.getUserData(id, "URL");
		if (MyUrl != "") {
			var loader = dhtmlxAjax.getSync("/WSC_LOGIN_Check");
			if (loader.xmlDoc.responseText.slice(0, 2) == "OK") {
				if (MenuV.isItemChecked(id)) {
					MenuV.setSubChecked(id, true)
					switch (MyTarget.slice(MyTarget.length-6, MyTarget.length+6)) {
						case "200AGS":
							var loader = dhtmlxAjax.postSync('../WSC_GET_PRICE', MyTarget);
							SBc.setText(loader.xmlDoc.responseText);
							DoLoadBasket();
							break;
							
						case "210AST":
							var loader = dhtmlxAjax.postSync('../WSC_GET_PRICE', MyTarget);
							SBc.setText(loader.xmlDoc.responseText);
							DoLoadBasket();
							break;
							
						case "220TAS":
							var loader = dhtmlxAjax.postSync('../WSC_GET_PRICE', MyTarget);
							SBc.setText(loader.xmlDoc.responseText);
							DoLoadBasket();
							break
														
						default:
							var loader = dhtmlxAjax.postSync('/WSC_Cat_InBasket', MyTarget);
							dhxLayout.cells("c").expand();
							SBc.setText(loader.xmlDoc.responseText);
							var loader = dhtmlxAjax.postSync('../WSC_UPD_PRICE');
							MenuV.openAllItems(id);
							DoLoadBasket();
							break;
					}
				}
				else {
					MenuV.setSubChecked(id, false)
					var loader = dhtmlxAjax.postSync('/WSC_Cat_FromBasket', MyTarget);
					var loader = dhtmlxAjax.postSync('../WSC_UPD_PRICE');
					SBc.setText(loader.xmlDoc.responseText);
					MenuV.openAllItems(id)
					DoLoadBasket();
				}
			}
			else {
				codice = MyTarget;
				WSC_Login(true, true, "Per gestire il carrello è necessario effettuare il login !", id);
			}
		}
	}
}

function doTabellaGrid(LaySkin, GridSkin, Titolo, PathImg, ValHeader, ValFilter, ValWidths, ValAlign, ValSort, ValColType, ValMuLine, url, Formato){
    WSC_OnLoadStartWin(LaySkin);
    WSC_OnLoadStartLay("1C", LaySkin, "a", "a");
    WSC_OnLoadMessage();
    WSC_OnLoadLogin(false);
    WSC_OnLoadSection(dhxLayout.cells("a"), 240, 300, Titolo, '', '', false, false);
    
    TabellaGrid = dhxLayout.cells("a").attachGrid();
    TabellaGrid.setImagePath(PathImg);
    TabellaGrid.setHeader(ValHeader);
    TabellaGrid.attachHeader(ValFilter);
    TabellaGrid.setInitWidths(ValWidths);
    TabellaGrid.setColAlign(ValAlign);
    TabellaGrid.setSkin(GridSkin);
    TabellaGrid.setColSorting(ValSort);
    TabellaGrid.setColTypes(ValColType);
    TabellaGrid.setNumberFormat("0,000", 0, ",", ".");
    TabellaGrid.setNumberFormat("0,000", 2, ",", ".");
    TabellaGrid.enableSmartRendering(1);
    TabellaGrid.enableSmartXMLParsing(true);
    TabellaGrid.enableTreeCellEdit(false)
    TabellaGrid.attachEvent("onXLS", function(){
        dhxLayout.cells('a').progressOn();
    });
    TabellaGrid.attachEvent("onXLE", function(){
        dhxLayout.cells('a').progressOff();
    });
    TabellaGrid.enableMultiline(ValMuLine);
    TabellaGrid.init();
    TabellaGrid.load(url, Formato);
}

function URL_Variable(Type){
    var query = window.location.search.substring(1);
    var vars = query.split("&");
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split("=");
        if (pair[0] == Type) {
            return pair[1];
        }
    }
    return false;
}
