﻿function SYS_MaxZIndex() {
    var maxZ = 1000;
    $('div').each(function() { 
        var zindex = parseInt($(this).css('z-index'), 10); 
        if (!isNaN(zindex)) maxZ = Math.max(maxZ, zindex); 
    });
    return maxZ;
}

/*

function SYS_Loading( show ) {
    $('#SYS_Loading1').remove();
    $('#SYS_Loading2').remove();

    if (show) {
        var maxZ = SYS_MaxZIndex();

        var winH = $(window).height();
        var bodyH = $('body').height();
        var h = winH > bodyH ? winH : bodyH;
        
        var w1 = $('<div id="SYS_Loading1"> </div>');
        w1.css({ 'position': 'absolute', 'left': 0, 'top': 0, 'width': '100%', 'height': h + 'px', 'z-index': maxZ, 'opacity': '0.5' });
        $('body').append(w1);

        var t = $(document).scrollTop();
        maxZ = maxZ + 10;
        var w2 = $('<div id="SYS_Loading2"> </div>');
        w2.css({ 'position': 'absolute', 'left': 0, 'top': t, 'width': '100%', 'height': winH + 'px', 'z-index': maxZ });
        $('body').append(w2);
    }
}

function SYS_Blanker( show ) {
    $('#SYS_Loading1').remove();
    $('#SYS_Loading2').remove();
    if (show) {
        var maxZ = SYS_MaxZIndex();
        var winH = $(window).height();
        var bodyH = $('body').height();
        var h = winH > bodyH ? winH : bodyH;
        var w1 = $('<div id="SYS_Loading1"> </div>');
        w1.css({ 'position': 'absolute', 'left': 0, 'top': 0, 'width': '100%', 'height': h + 'px', 'z-index': maxZ, 'opacity': '0.5' });
        $('body').append(w1);
    }
}


function SYS_Error(err, pw, ph) {
    SYS_Blanker(true);

    var maxZ = SYS_MaxZIndex();

    var w = pw ? pw : 250;
    var h = ph ? ph : 90;

    var winW = $(window).width();
    var winH = $(window).height();
    var l = (winW - w) / 2;
    var t = (winH - h) / 2;
    t = t + $(document).scrollTop();
    
    var html = '';
    html = html + '<div class="SYS_Error">';
    html = html + '<div class="SYS_Close"><a href="#" onclick="SYS_Blanker(false); $(this).closest(\'.SYS_Error\').remove(); return false;">X</a></div>';
    html = html + '<div class="SYS_Text">' + err + '</div>';
    html = html + '</div>';
    
    var msg = $(html);
    msg.css({ 'position': 'absolute', 'left': l, 'top': t, 'width': w + 'px', 'height': h + 'px', 'z-index': maxZ });
    $('body').append(msg);
}

function SYS_Ajax(options) {
    options = $.extend({ type: 'GET', noautoesito: false }, options);

    if (options.form) {
        options.type = 'POST';
        options.url = options.form.attr("action");
        options.data = options.form.serialize();
    }

    if (options.callback) {
        SYS_Loading(true);
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                SYS_Loading(false);
                if (data.esito || options.noautoesito) {
                    options.callback(data);
                } else {
                    SYS_Error('Si è verificato un errore, riprovare.');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            cache: false
        });
    }
}

function SYS_Popup(url, options) {
    options = $.extend({ name: 'SysPopup', width: 0, height: 0, percsize: 0 }, options);
    var params = 'toolbar=0,location=1,status=1,menubar=0,scrollbars=1,resizable=1';
    if (options.percsize > 0) {
        var w = (screen.width * options.percsize) / 100;
        var sh = screen.height - 90;
        var h = (sh * options.percsize) / 100;
        var l = (screen.width - w) / 2;
        var t = (sh - h) / 2.5;
        params = params + ',width=' + w
        params = params + ',height=' + h
        params = params + ',top=' + t
        params = params + ',left=' + l
    } else {
        if (options.width > 0) params = params + ',width=' + options.width
        if (options.height > 0) params = params + ',height=' + options.height
    }
    var win = window.open(url, options.name, params);
    win.focus();
}

*/

function SYS_VerificaCfPiva(codice) {
    if (codice.length==0) return true;
    var p = codice.substring(0,1);
    if ((p>='0') && (p<='9')) return SYS_VerificaPIVA(codice);
    else return SYS_VerificaCodFisc(codice);
}

function SYS_VerificaCodFisc(codice) {
    if (codice.length==0) return true;
    var ok = true;
    var cf = codice.toUpperCase();
    var i;

    if (cf.length != 16) ok = false;
    else {
        var validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        for (i = 0; i < 16; i++) { if (validi.indexOf(cf.charAt(i)) == -1) ok = false; }
    }

    if (ok) {
        var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
        var s = 0;
        for (i = 1; i <= 13; i += 2) s += setpari.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
        for (i = 0; i <= 14; i += 2) s += setdisp.indexOf(set2.charAt(set1.indexOf(cf.charAt(i))));
        if (s % 26 != cf.charCodeAt(15) - 'A'.charCodeAt(0)) ok = false;
    }

    return ok;
}

function SYS_VerificaPIVA(codice) {
    if (codice.length==0) return true;
    var ok = true;
    var pi = codice;
    var i;

    if (pi.length != 11) ok = false;
    else {
        var validi = "0123456789";
        for (i = 0; i < 11; i++) { if (validi.indexOf(pi.charAt(i)) == -1) ok = false; }
    }

    if (ok) {
        var s = 0;
        for (i = 0; i <= 9; i += 2) s += pi.charCodeAt(i) - '0'.charCodeAt(0);
        for (i = 1; i <= 9; i += 2) {
            c = 2 * (pi.charCodeAt(i) - '0'.charCodeAt(0));
            if (c > 9) c = c - 9;
            s += c;
        }
        if ((10 - s % 10) % 10 != pi.charCodeAt(10) - '0'.charCodeAt(0)) ok = false;
    }

    return ok;
}

function SYS_VerificaEmail(email) {
    if (email.search(/^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/) != -1) return true;
    else return false;
}

function SYS_EnsureVisible(el, h) {
    if (el.length>=1) {
        var d = h ? h : 10;
        var x = el.offset().top;
        if ( x < $(document).scrollTop() || x > $('body').height()) {
            x = x - h;
            if (x < 0) x = 0;
            $(document).scrollTop(x);
        }
    }
}


// utils -----------------------------------------------------------------------------------------------
function Wt_GetWinSize() {
    var winW = $(window).width();
    var winH = $(window).height();
    return { width: winW, height: winH }
}

function Wt_GetBodySize() {
    var winW = $(window).width();
    var winH = $(window).height();
    var bodyW = $('body').width();
    var bodyH = $('body').height();
    var x = winW > bodyW ? winW : bodyW;
    var y = winH > bodyH ? winH : bodyH;
    return { width: x, height: y, 'bodyW':bodyW, 'bodyH':bodyH, 'winW':winW, 'winH':winH }
}

function WtPopInfoDiv(el, title, dvW, dvH) {
    WtPopInfo({ width: dvW, heigth: dvH, title: title, html: el.html() });
}

function WtPopInfo(params) {
    var pDef = { width: 500, heigth: 400, title: '', html: '', buttons: [ ['chiudi','WtPopInfoClose(this)'] ], onload: undefined, onclose: undefined, retcode: 0 };
    $.extend(pDef, params);

    var size = Wt_GetBodySize();
    var Wsize = Wt_GetWinSize();
    var MaxZ = SYS_MaxZIndex() + 10;
    var bl = $('<div class="WTGALLERYBL"></div>');
    bl.css({ 'position': 'absolute', 'height': size.height + 'px', 'opacity': 0.5, 'top': '1px', 'left': '1px', 'width': '100%', "z-index": MaxZ });
    
    //var html = '<div class="popup_info WTPOPUP">';
    var html = '';
    html = html + '<div class="popup_info_titolo WTFIXED">' + pDef.title + ':</div>';
    html = html + '<div class="popup_info_box WTAUTO"><div class="popup_info_boxint">';
    html = html + pDef.html;
    html = html + '</div></div>';
    html = html + '<div class="popup_info_buttons WTFIXED">';
    for( i=0; i < pDef.buttons.length; i++ ){
        html = html + '<a href="#" onclick="' + pDef.buttons[i][1] + '; return false;" class="popup_info_button">' + pDef.buttons[i][0] + '</a>';
    }
    html = html + '</div>';
    //html = html + '</div>';
    //var dv = $(html);
    
    var dv = $('<div class="popup_info WTPOPUP"></div>');
    dv.html(html);
    
    MaxZ = MaxZ + 10;
    var dvL = (Wsize.width - pDef.width) / 2;
    var dvT = (Wsize.height - pDef.heigth) / 2.5;
    dvT = dvT + $(document).scrollTop();
    dv.css({ 'position': 'absolute', 'top': dvT + 'px', 'left': dvL + 'px', 'width': pDef.width + 'px', 'height': pDef.heigth + 'px', 'z-index': MaxZ });

    bl.appendTo('body');
    dv.appendTo('body');
    
    bl.bind('click', function() { dv.remove(); $(this).remove(); });
    
    var h = pDef.heigth;
    dv.find('.WTFIXED').each(
        function() { h = h - $(this).outerHeight(); }
    );
    dv.find('.WTAUTO').css('height', h + 'px');
    dv.data('pDef', pDef);
    if (pDef.onload) pDef.onload(dv);
}

function WtPopInfoClose( el, retcode ) {
    var dv = $(el).closest('.WTPOPUP');
    var pDef = dv.data('pDef');
    if (retcode) pDef.retcode = retcode;
    if (pDef.onclose) pDef.onclose(dv, pDef.retcode);
    dv.remove();
    $('.WTGALLERYBL').remove();
}


function Wt_HideBlanker() {
    $('.WT___BLABKER').remove();
    $('.WT___BLABKERLO').remove();
}

function Wt_ShowBlanker(loading) {
    Wt_HideBlanker();

    var MaxZ = SYS_MaxZIndex();
    var Size = Wt_GetBodySize();

    MaxZ = MaxZ + 100;
    var bl = $('<div class="WT___BLABKER" />');
    $('body').append(bl);
    bl.css({ 'display': 'none', 'position': 'absolute', 'top': '0px', 'left': '0px', 'width': Size.width + 'px', 'height': Size.height + 'px', 'z-index': MaxZ, 'opacity': 0.5 });
    
    if (loading) {
        MaxZ = MaxZ + 100;
        var bl2 = $('<div class="WT___BLABKERLO">&nbsp;</div>');
        $('body').append(bl2);
        bl2.css({ 'position': 'absolute', 'top': '0px', 'left': '0px', 'width': Size.winW + 'px', 'height': Size.winH + 'px', 'z-index': MaxZ });
    }  
    bl.css({ 'display': ''});
}



function WtFunction( p ) {
    var params = { type: 'POST', url: '', frm: undefined, dataType: 'text', dati: undefined, funcOk: undefined, funcKo: undefined};
    $.extend(params, p);

    Wt_ShowBlanker(true);
    
    var Url, Data
    if ( params.frm ) {
        Url = params.frm.attr('action');
        Data = params.frm.serialize();
    } else {
        Url = params.url;
        Data = params.dati;
    }
    
    $.ajax({ type: params.type, url: Url, data: Data, dataType: params.dataType, cache: false,
        success: function(data) {
            Wt_HideBlanker();
            var es = false;
            if (data) {
                data = eval("(" + data + ")");
                es = data.esito;
            }
            if (es) {
                if (params.funcOk) params.funcOk(data)    
            } else {
                if (params.funcKo) params.funcKo(data)
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            Wt_HideBlanker();
            if (params.funcKo) params.funcKo(undefined, textStatus)
        }
    });
}

/*
function WtInputNumerUrl(url, el, vMin, vMax ) {
    var ctrl = $(el);
    var v = ctrl.val();
    var ok = true;   

    if (isNaN(v)) ok = false; 
    else v = v - 0;
    
    if (ok && vMin) { if ( v < vMin) ok = false; }
    if (ok && vMax) { if ( v > vMax) ok = false; }
    if (ok) {
        var u = url.replace("%7b0%7d", "{0}");
        window.location = u.replace("{0}", v);
    } else ctrl.val('');
}
*/

function Wt_PopupQta(options) {
    options = $.extend({ qta: 1, callback: undefined }, options);
    
    var h = '<div class=""><input type="text" name="wtQta" class=""popup_qta_box" value="'+ options.qta +'" /></div>';
    
    WtPopInfo({ 
        width: 200, 
        heigth: 120, 
        title: 'Quantità', 
        html: h, 
        buttons: [ ['chiudi','WtPopInfoClose(this)'], ['ok','Wt_PopupQtaOk(this)'] ], 
        onload: function(dv) {
            var opt = dv.data('pDef');
            opt.usr_callback = options.callback;
            opt.usr_qta = options.qta;
            
            var inp = dv.find('input[name="wtQta"]');
            inp.bind('keypress',function(event) {
                if (event.keyCode == '13') {
                    event.preventDefault();
                    dv.find('a.popup_info_button:eq(1)').click();
                }
                else if (event.keyCode == '27') {
                    event.preventDefault();
                    dv.find('a.popup_info_button:eq(0)').click();
                }
            });            
            inp.focus();
        }
    }) 
}

function Wt_PopupQtaOk(el) {
    var dv = $(el).closest('.WTPOPUP');
    var options = dv.data('pDef');
    var qta = dv.find('input[name="wtQta"]').val();
    var ok = true;
    var bl = false;
    var q;
    
    if (isNaN(qta)) ok = false;
    
    if (ok) {
        q = qta * 1;
        if (q != options.usr_qta) {
            if (options.usr_callback) bl = true
            else ok = false 
        }
    }    
    
    WtPopInfoClose(el);
    if (bl) Wt_ShowBlanker(true);   
    if (ok) options.usr_callback(q);   
}


function WtMsgBox( titolo, testo) {
    var h = '<div class="MessageBox">' + testo + '</div>';
    WtPopInfo({ width: 300, heigth: 160, title: titolo, html: h });
}


function WT_ShowErrBox( titolo, testo) {
    var h = '<div class="ErrorBox">' + testo + '</div>';
    WtPopInfo({ width: 300, heigth: 160, title: titolo, html: h });
}


function WT_ShowHttpErrBox( XMLHttpRequest, textStatus, errorThrown) {
    var h = '<div class="ErrorBox">' + '<p>Status:'+  XMLHttpRequest.status +' - '+ XMLHttpRequest.statusText +'<p/><p>'+ XMLHttpRequest.responseText +'<p/>' + '</div>';
    WtPopInfo({ width: 300, heigth: 160, title: "Errore di Connessione Http", html: h });
}


/* ---------------------------------------------------- nuove -------------------------------------------------------- */

function SYS_BuildUrlComponente( componentepide, arguments ){
    var url = Ambiente.RTBase + '/RenderComponente.ashx?ADM___pw='+Ambiente.FilePaginaIde+'&ADM___wysiwyg='+(Ambiente.InEditor ? 1 : 0)+'&ADM___cp='+componentepide;
    if( arguments ){
        $.each(arguments, function(name, value) {
            url += ('&'+ name+'='+value);//'TODO  ci vorrebbe un encodeURIComponent ?!?
        });
    }
    return url;
}

function SYS_ReplaceWithAJAX( element, url, ajaxoptions ){
    ajaxoptions = jQuery.extend({ type: 'GET' }, ajaxoptions);

    var maxZ = SYS_MaxZIndex();
    element.css('position','relative');
    $('<div class="SYS_PLoading"> </div>').appendTo(element).css({ borderWidth: 0, margin: 0, padding: 0, position: 'absolute', top: 0, left: 0, width: element.width(), height: element.height(), 'z-index': ++maxZ, opacity: 0.6 });
    $('<div class="SYS_PLoading2"> </div>').appendTo(element).css({ borderWidth: 0, margin: 0, padding: 0, position: 'absolute', top: 0, left: 0, width: element.width(), height: element.height(), 'z-index': ++maxZ });
    $.ajax({
        type: ajaxoptions.type,
        'url': url,
        dataType: "html",
        data: ajaxoptions.data,
        cache: false,
        success: function(data, textStatus){
            if ( data ) element.replaceWith(data); 
            else {
                element.find('.SYS_PLoading2').remove();
                element.find('.SYS_PLoading').remove();
            }
            if (ajaxoptions.callback) ajaxoptions.callback( element, url, ajaxoptions );
        },
        error: function(XMLHttpRequest, textStatus, errorThrown){
            CPT.popup.openAlert('Errore di Connessione', '<p>Status:'+  XMLHttpRequest.status +' - '+ XMLHttpRequest.statusText +'<p/><p>'+ XMLHttpRequest.responseText +'<p/>' );
            element.find('.SYS_PLoading2').remove();
            element.find('.SYS_PLoading').remove();
        }
    });
    return true;
}

function SYS_ReplaceWithAJAXHash(id, url) {
    window.location = $.param.fragment(window.location.href, 'ADM___h_'+id+'='+ encodeURIComponent(url), 2);
    SYS_ReplaceWithAJAX($('#'+id), url);
}

$(document).ready(function() {

    $('.ADM___AJ').each(function(){ 
        var c = $(this);
        var url = $.bbq.getState( 'ADM___h_'+c.attr( 'id' ) );
        if ( url ){
            c.css('display', 'none');
            SYS_ReplaceWithAJAX(c, url);
        }
    });
    
});


function WT_Ajax(options) {
    options = $.extend({ type: 'GET' }, options);

    if (options.form) {
        options.type = 'POST';
        options.url = options.form.attr("action");
        options.data = options.form.serialize();
    }

    if (options.callback) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                Wt_HideBlanker();
                if (data.esito) {
                    options.callback(data);
                } else {
                    Wt_HideBlanker(); 
                    WT_ShowErrBox('Errore','Si è verificato un errore, riprovare.');
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        $.ajax({
            type: options.type,
            url: options.url,
            data: options.data,
            cache: false
        });
    }
}

function WT_AddCarrello( contenutoide, workflowide, qtelement, gotourl ) {
    var url = Ambiente.RTBase + '/fun/RigaProdotto.ashx?com=ADD&wfide='+ workflowide +'&coide='+ contenutoide;
    if ( qtelement ){
        var qta = qtelement.val();
        if (isNaN(qta)) qta = 1;
        url = url + '&q='+ qta;
    }
    if ( gotourl ){
        url = url + '&return='+ encodeURIComponent(gotourl);
    } else {
        url = url + '&return='+ encodeURIComponent(window.location);
    }
    Wt_ShowBlanker(true);
    window.location = url;
}

function WT_ValidateInteger( ctrl, vMin, vMax ){
    var ok = true;
    var v = ctrl.val();
    if (isNaN(v)) {
        ok = false; 
    } else {
        v = v - 0;
        if ( v < vMin) ok = false;
        if ( v > vMax) ok = false;
    }   
    if (!ok) ctrl.val('');
    return ok;
}


/* -------------------------- login utente ----------------------------------------------------------------- */

function WT_LoginPopup(){

    var elcomponente = $(".LOGINUTENTE");
    
    if ( elcomponente.length==0 ){ alert('maschera non presente nella pagina!'); return; }

	var hlink = elcomponente.find(".login_btn");
    hlink.addClass('selected');

	var maxZ = SYS_MaxZIndex() + 100;
    var winH = $(window).height();
    var bodyH = $('body').height();
    var h = winH > bodyH ? winH : bodyH;
    var bl = $('<div> </div>');
    $('body').append(bl);
    bl.css({ 'position': 'absolute', 'left': 0, 'top': 0, 'width': '100%', 'height': h + 'px', 'z-index': maxZ, 'opacity': '0.01', 'background-color': '#ffffff' });
    
	maxZ = maxZ + 10;
    var pannello = elcomponente.find('form').parent();
    pannello.css('z-index', maxZ);
	pannello.show();
	
	pannello.parent().css('z-index', maxZ-1);

	var self = elcomponente;
	
    bl.click( function(){

		var frm = self.find('form');
		WT_HideErrors(frm);

		var hlink = self.find(".login_btn");
        hlink.removeClass('selected');
		
		var pannello = frm.parent();
        pannello.hide();
		
        bl.remove();
    });
}
function WT_LoginSubmit( frm, UrlOk ){
    var ok = true;
    
    WT_HideErrors(frm);
    
	if (!WT_ValidateRequired(frm.find('input[name="usr"]'))) ok=false;
	if (!WT_ValidateRequired(frm.find('input[name="psw"]'))) ok=false;
	
    if (ok) {
        Wt_ShowBlanker(true);
        $.ajax({
            type: 'POST',
            url: frm.attr('action'),
            data: frm.serialize(),
            dataType: "text",
            cache: false,
            success: function(data, textStatus) {
                if (data) data = eval("(" + data + ")");
                if (data.esito && ! data.rc) {
                    window.location = UrlOk;
                } else {
                    Wt_HideBlanker();
                    var errdescr = '';
                    if ( data.rc ){
                        for (i=0; i<data.rc.length; i++) {
                            switch (data.rc[i]) {
                                case 10:
								case 20:
                                case 11:
								case 22:								
									errdescr=errdescr+'<br />'+ "Dati di autenticazione non corretti." ; break;
                                default: errdescr=errdescr+'<br />'+ "Errore #" + data.rc[i];
                            }
                        }
                    } else {
                        errdescr=errdescr+'<br />'+ "Errore di sistema senza codici di ritorno";
                    }
                    WT_EnsureVisibleFirstError(frm);
                    if (errdescr!='') WT_ShowErrBox('Errore',errdescr);
                }
            },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                Wt_HideBlanker();
                WT_ShowHttpErrBox(XMLHttpRequest, textStatus, errorThrown)
            }
        });
    } else {
        WT_EnsureVisibleFirstError(frm);
    }
}

/* -------------------------- validazione ----------------------------------------------------------------- */

function WT_ValidateRequired(inputel) {
    if (inputel.length==0) return true;
    if ( inputel.filter('input:radio').length>0 ){
        if (inputel.filter(':checked').length==0){
            WT_ShowError(inputel, "uno è richiesto");
            return false;
        }
    } else {
        var v = $.trim(inputel.val());
        if (v.length == 0){
            WT_ShowError(inputel, "campo richiesto");
            return false;
        }
    }
    return true;
}

function WT_ValidateEmail(inputel) {
    var v = inputel.val();
    if (v.search(/^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$/) != -1) return true;
    WT_ShowError(inputel, "e-mail non valida");
    return false;
}

function WT_ShowError( inputel, msg ){
    var txt = inputel.data("WT_Error");
    if ( txt && txt.length>0 ) msg = txt + "; "+ msg;

    inputel.addClass('invalid').data("WT_Error",msg).blur(function(){ WT_HideError( inputel ); });
    
    var tooltip = inputel.data("tooltip");
    if ( tooltip ) tooltip.show();
}

function WT_HideError( inputel ){
    inputel.removeClass('invalid').removeData("WT_Error");
    var tooltip = inputel.data("tooltip"); if ( tooltip ) tooltip.hide();
}

function WT_HideErrors( parentel ){
    parentel.find('.invalid').removeClass('invalid').removeData("WT_Error").each(function(i){ var tooltip = $(this).data("tooltip"); if ( tooltip ) tooltip.hide(); });
}

function WT_EnsureVisibleFirstError( parentel ){
    SYS_EnsureVisible(parentel.find('.invalid'), 25);
}

/* ------------------------ cookies ----------------------------------------------------------------------------------- */

function WT_ReadCookie( nome, chiave, valoredefault ){
    var v = new RegExp('(?:^|; )' + encodeURIComponent(nome) + '=([^;]*)').exec(document.cookie);
    if ( v ){
        v = decodeURIComponent(v[1]);
        v = new RegExp('(?:^|&)' + chiave + '=([^&]*)').exec(v);
        if ( v ) return v[1];
    }
    return valoredefault;
}

function WT_WriteCookie( nome, chiave, valore ){
    var valori = {};
    var v = new RegExp('(?:^|; )' + encodeURIComponent(nome) + '=([^;]*)').exec(document.cookie);
    if ( v ){
        v = decodeURIComponent(v[1]);
        v = v.split('&');
        for( var i=0; i<v.length; i++){
            var nv = v[i].split('=');
            valori[nv[0]] = nv[1];
        }
    }
    valori[chiave] = valore;
    
    var ck = encodeURIComponent(nome) +'=';
    var i = 0;
    for ( k in valori ){
        if ( ++i > 1 ) ck += '&';
        ck += encodeURIComponent(k) +'='+ encodeURIComponent(valori[k]);
    }
    var expires = new Date();
    expires.setDate(expires.getDate() + 365);
    ck = ck + '; expires='+ expires.toUTCString() + '; path=/';
    document.cookie = ck; 
}


/* ------------------------ Prodotto Gallery - rimaneggiato ------------------------------------------------------------ */

function WT_GalleryLoad( thumb ){
    var url = $(thumb).next('input').val();

    var img = new Image();
    img.onload = function(t){ WT_GalleryShow( thumb, this ); };
    img.src = url;
}

function WT_GalleryShow( thumb, img ){
    WT_GalleryClose();

    lista = $(thumb).closest('.GALLERY').find('img');
    var SelIndex = lista.index(thumb);

    var prevIndex = SelIndex - 1;
    if (prevIndex < 0) prevIndex = lista.length-1;

    var nextIndex = SelIndex + 1;
    if (nextIndex >= lista.length) nextIndex = 0;

    var ImgH = img.height;
    var ImgW = img.width;

    var size = Wt_GetBodySize();
    var Wsize = Wt_GetWinSize();
    var MaxZ = SYS_MaxZIndex() + 10;

    var bl = $('<div class="WTGALLERYBL" onclick="WT_GalleryClose()"></div>');
    var dv = $('<div class="WTGALLERY"></div>');

    bl.css({ 'position': 'absolute', 'height': size.height + 'px', 'opacity': 0.5, 'top': '1px', 'left': '1px', 'width': '100%', "z-index": MaxZ });

    var delta = 60;
    MaxZ = MaxZ + 10;
    var dvH = ImgH + delta * 2;
    var dvW = ImgW + delta * 2;
    var dvL = (Wsize.width - dvW) / 2;
    var dvT = (Wsize.height - dvH) / 2.5;
    //dvT = dvT + $(document).scrollTop();
    dv.css({ 'position': 'fixed', 'top': dvT + 'px', 'left': dvL + 'px', 'width': dvW + 'px', 'height': dvH + 'px', 'z-index': MaxZ });

    $('<img style="margin: ' + delta + 'px 0px 0px ' + delta + 'px;" src="' + img.src + '"'+ ( (lista.length==1) ? '' : ' onclick="WT_GalleryLoad( lista.get('+ nextIndex +') )"' ) +' />').appendTo(dv);

    MaxZ = MaxZ + 10;
    var dClose = $('<div class="WTCLOSE"><a href="#" onclick="WT_GalleryClose(); return false;"> </a></div>').appendTo(dv);
    dClose.css({ 'z-index': MaxZ, 'top': '0px', 'right': '0px', 'width': '30px', 'height': '30px', 'position': 'absolute', 'text-align': 'center' });

    var moveTop = (dvH - 33) / 2;
    var dPrec = $('<div class="WTPREC"><a href="#" onclick="WT_GalleryLoad( lista.get('+ prevIndex +') ); return false;"> </a></div>').appendTo(dv);
    dPrec.css({ 'top': moveTop + 'px', 'left': '17px', 'width': '26px', 'height': '33px', 'position': 'absolute', 'text-align': 'center' });
    if ( lista.length==1 ) dPrec.css('display', 'none');

    var dNext = $('<div class="WTNEXT"><a href="#" onclick="WT_GalleryLoad( lista.get('+ nextIndex +') ); return false;"> </a></div>').appendTo(dv);
    dNext.css({ 'top': moveTop + 'px', 'right': '17px', 'width': '26px', 'height': '33px', 'position': 'absolute', 'text-align': 'center' });
    if ( lista.length==1 ) dNext.css('display', 'none');

    bl.appendTo('body');
    dv.appendTo('body');
}

function WT_GalleryClose() {
    $('.WTGALLERYBL').remove();
    $('.WTGALLERY').remove();
}


function WT_Stampa(url) {
    CPT.popup.open({
        title: 'Stampa',
        position: [ 'center', 'center', '935', '90%' ],
        modal: true, 
        source: '<iframe class="USRIF" frameborder="0" style="border: none; margin:0px;" src="' + url + '"> </iframe><div class="CPT_PopButtons"><a href="#" class="CPT_Button GOPRINT"><span>Stampa</span></a><a href="javascript:void(0)" class="CPT_Button" onclick="CPT.popup.popupOf(this).close()">Chiudi</a></div>',
        open: function(s) { 
            var ct = s.element.find('.CPT___CONTENT');
            var h = ct.innerHeight() - s.element.find('.CPT_PopButtons').innerHeight()-5;
            var el = s.element.find('.USRIF');
            el.css({ 'height':h+'px', 'width':'100%' });
            var a = s.element.find('.GOPRINT');
            a.click(function() {
                var i = $(this).closest('.CPT___CONTENT').find('.USRIF');             
                i[0].contentWindow.focus();
                i[0].contentWindow.print();
                return false;
            });
        }
    });
}
