﻿
var rndForImage = null;
var cfgGuid;

// PAGE_LOAD 
function pageLoad(sender, args)
{
    try
    {
        init();
        if ($get("hfCtlChanged").value == "PARTLIST")
        {
            show($('#mod_InfoTec'));
            hideOn();
        }
        cfgGuid = $get("hfPageGuid").value;
        //window.onload = pageUnload; 
    }
    catch (ex)
    { $("#tabs").tabs(); } // inizializza i tabs (di jQuery)

    try
    {
        // visualizzazione dei pulsanti indietro/avanti per la galleria di immagini
        // (se sono sulla prima, disabilito indietro, se sono sull'ultima disabilito avanti)
        var viewMode = GetImageSettings()[1]; // [0] shadeMode, [1] viewMode
        VisibilityButtonsViewModeImage(viewMode);
        ShowElement('imgReqRefresh', !$get('chkAutoRefreshImg').checked);
        if (rndForImage != null)
            S5Web.webServices.wsRenderingConfig.RemoveImagesCache(rndForImage);
        rndForImage = null;
    }
    catch (ex)
    {
        // ignoro
        // se c'è un errore è dato dal fatto che renderizzo in una modalità senza-immagine
        // o con una modalità diversa dal previsto
    }
    $("#upProgress").hide();
} // pageLoad


// PAGE_UNLOAD
function pageUnload(sender, args) 
{
    // chiama il webService che ripulisce i dati della configurazione corrente
    try
    {
        S5Web.webServices.wsRenderingConfig.Unload(cfgGuid, rndForImage);
    }
    catch (ex)
    {  }
} // pageUnload


function UpdateCfgIfRequired(ctlID, hfID)
{
    // è una TextBox
    var hf = $get(hfID);
    var txt = $get(ctlID);
    
    var prevValue = hf.value;
    var currValue = txt.value;

    if (prevValue != currValue)
    {
        $get("hfCtlChanged").value = ctlID;
        // valido l'input dell'utente
        S5Web.webServices.wsRenderingConfig.ValidateFeature(cfgGuid, ctlID, currValue, ValidateFeature_Complete);
        txt.disabled = true;
    }
    else
    {
        var t = $get("val_" + ctlID);
        if (t != null)
            t.style.display = "none";
    }
    
    
} // CheckUpdateReq



function ValidateFeature_Complete(result)
{
    //alert('ValidateFeature_Complete');
    var ctlID = $get("hfCtlChanged").value; 
    $get(ctlID).disabled = false;
    
    // result = "<true,false>|<error_code>|<error_message>"  ("false|-30|the value must be numeric")
    var validationResult = result.toString().split("|");

    if (validationResult[0] == "true")
    {
        //alert("POSTBACK!");
        DoPostback();   // OK => PostBack
    }
    else
    {
        // alert col Messaggio di Errore
        alert("(" + validationResult[1] + ") " + validationResult[2]);

        // Mostro la label con l'asterisco
        var t = $get("val_" + ctlID);
        if (t != null)
            t.style.display = "inline";

        // focus sul Campo
        /*
        var c = $get(ctlID);
        if (c != null)
            $get(ctlID).focus();
        */
    }
}


// POSTBACK dell'UpdatePanel
function UpdateCfg(ctlID)
{
    $get("hfCtlChanged").value = ctlID;
    DoPostback();
} // UpdateCfg


function ShowElement(ctlID, visible)
{
    if (visible)
        $("#" + ctlID).show();
    else
        $("#" + ctlID).hide();

} // ShowElement


function DoPostback()
{
    if (rndForImage != null)
        S5Web.webServices.wsRenderingConfig.RemoveImagesCache(rndForImage);
    rndForImage = null;
    
    loading();
    $("#upProgress").show();
    __doPostBack('UpPanelConfig', '');

} // DoPostback

function HandleChk(obj, fName, valueIfChecked, valueIfNotChecked)
{
    if (obj.checked)
        UpdateCfg(fName + ";" + valueIfChecked);
    else
        UpdateCfg(fName + ";" + valueIfNotChecked);

} // HandleChk


function PartList()
{
    show($('#mod_InfoTec'));
    hideOn();
    if ($get("hfCtlChanged").value != "PARTLIST")
    {
        loading(); 
        $("#upProgress").show();
        $get("hfCtlChanged").value = "PARTLIST";
        setTimeout("__doPostBack('UpPanelConfig', '');", 500);
    }
}


function ApriChiudi(divID)
{
    //var div = $get(divID);
    var div = document.getElementById(divID);
    
    if (div.style.display == "none")
        div.style.display = "block";
    else
        div.style.display = "none";
}

function Apri() 
{
    jQuery.each($(".clickable"), function() 
    {
        var id = $(this).attr("rel");
        $get(id).style.display = "block";
    });
}

function Chiudi()
{
    jQuery.each($(".clickable"), function() 
    {
        var id = $(this).attr("rel");
        $get(id).style.display = "none";
    });
}


// Aggiorno l'immagine della Configurazione
function RefreshImg(sender, vMode)
{
    if (rndForImage == null)
        rndForImage = CreateGUID();

    // immagine 'Loading...'
    $get("imgConfig").src = "img/blank.gif";
    $get("imgConfig").alt = "Loading...";
    $get("imgConfig").title = "Loading...";

    var imageSettings = GetImageSettings();
    imageSettings[1] = vMode;
    imageSettings[1] = CheckViewModeValue(imageSettings[1]);

    // chiamo il webService
    S5Web.webServices.wsRenderingConfig.GetImage(cfgGuid, rndForImage, imageSettings[0], imageSettings[1], LoadImageComplete, LoadImageFailed);
    SaveImageSettings(imageSettings[0], imageSettings[1]);
    return false; // per non fare il postback
} // RefreshImg


// Questa funziona viene eseguita una volta completata la chiamata
// al Metodo 'GetCurrentImgAndName' del webService
function LoadImageComplete(ImgSrc)
{
    if (ImgSrc.lenght == 1)
        alert(ImgSrc[0]); // show the Error message
    else
    {
        $get("imgReqRefresh").src = "img/off.png";
        $get("imgReqRefresh").title = ImgSrc[2];
        $get("imgConfig").src = ImgSrc[0];          // SET src
        $get("imgConfig").alt = ImgSrc[1];          // SET alt
        $get("imgConfig").title = ImgSrc[1];        // SET title
        $get("hrefImgConfig").href = ImgSrc[0];     // SET href
    }
} // LoadImageComplete


// in caso di errore nella chiamata al webService
function LoadImageFailed(error)
{
    var stackTrace = error.get_stackTrace();
    var message = error.get_message();
    var statusCode = error.get_statusCode();
    var exceptionType = error.get_exceptionType();
    var timedout = error.get_timedOut();

    $get("imgConfig").src = "no_image.png";     // SET src
    $get("imgConfig").alt = "no image";         // SET alt

    // Display the error.
    alert("Error while retrieving the image!\r\n" +
          "-------------------------------------\r\n\r\n" +
          "Service Error: " + message + "\r\n" +
          "Exception Type: " + exceptionType + "\r\n" +
          "Timedout: " + timedout + "\r\n" +
          "Status Code: " + statusCode + "\r\n" +
          "Stack Trace:\r\n\r\n" + stackTrace + "\r\n");

} // LoadImageFailed




function CheckViewModeValue(viewMode)
{
    if (viewMode >= 8)
        viewMode = 8;

    if (viewMode <= 1)
        viewMode = 1;

    return viewMode;
} // VisibilityButtonViewModeImage


function GetImageSettings()
{
    var s = $get("hfImage").value.split(';');
    var shade = s[0] * 1;
    var view = s[1] * 1;

    return new Array(shade, view);
} // GetImageSettings


function SaveImageSettings(shadeMode, viewMode)
{
    $get("hfImage").value = shadeMode + ";" + viewMode;
} // SaveImageSettings


// SwitchShadeMode
function SwitchShadeMode(shadeMode)
{
    if (shadeMode == 0)
    {
        $("#tabWire").removeClass("on");
        $("#tabShade").addClass("on");
    }
    else
    {
        $("#tabShade").removeClass("on");
        $("#tabWire").addClass("on");
    }

    var settings = GetImageSettings();              // prendo le impostazioni correnti
    settings[0] = shadeMode;                        // nuovo shadeMode
    SaveImageSettings(settings[0], settings[1]);    // stesso viewMode, nuovo ShadeMode
    RefreshImg(null, settings[1]);                  // aggiorno l'Immagine
} // SwitchShadeMode



function S4()
{
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
}

function CreateGUID()
{
    return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}






