

// impostare a true per attivare i messaggi di debug
var DEBUG = false;



var strmessages = {
    error   : "Si e' verificato un errore durante l'operazione",
    success : "Operazione eseguita con successo"
}



function stdEffect(content)
{
    var content_str = "";
    
    if (content != null && content != "")
    {
        content_str = content + " ";
    }
    
    
    //
    // jQuery di default per tutte le pagine
    //
    
    
    /*
     * Applica l'effetto tooltips a tutti i campi che hanno la classe trigger-tooltips
     * Se sono presenti altre classi come center, top, bottom, right, left le utilizza
     * per posizionare il tooltip nell'area che si preferisce.
     *
     * Es.
     * 
     * <a href="#" class="trigger-tooltip top center">trigger</a>
     * <div class="tooltip">
     *   Questo e' il mio tooltip
     * </div>
     *
     * Posizionamento:
     * la prima classe per il posizionamento si riferisce all'asse verticale e può valere:
     *   top | [center] | bottom
     * 
     * la seconda classe di posizionamento si riferisce all'asse orizzontale e può valere:
     *   left | center | [right]
     * 
     */
    $(content_str + '.trigger-tooltip').each(function(){
    
        var jthis = $(this);
        var position_v = '';
        var position_o = '';
        
        var class_attr  = jthis.attr('class');
        var class_array = class_attr.split(" ");
        
        for (i = 0; i < class_array.length; i++)
        {
            if (class_array[i] == 'center'
                || class_array[i] == 'top'
                || class_array[i] == 'bottom'
                || class_array[i] == 'right'
                || class_array[i] == 'left')
            {
                if (position_v == '')
                    position_v = class_array[i];
                else if (position_o == '')
                    position_o = class_array[i];
            }
        }
        
        if (position_v == '')
            position_v = 'center';
        
        if (position_o == '')
            position_o = 'right';
        
        jthis.tooltip({
            position: [position_v, position_o], 
            offset: [0, 0],
            effect: 'toggle', 
            opacity: 1,
			relative: true
        });
        
    });
    
    
    /*
     * Chiede conferma prima di eseguire l'operazione.
     * Utilizza <rel> per il messaggio
     */
    $(content_str + '.confirm').click(function(){
        
        var jthis = $(this);
        var message = jthis.attr("rel");
        
        return confirm(message);
        
    });
    
    
    /*
     * Applicata ai link
     * Utilizza le proprietà <rel> e <rev>
     * <rel>  messaggio da visualizzare per la conferma
     * <rev>  indica il selettore jquery (Es. '#pippo', '.miaclasse') da nascondere
     *        con fadeOut("fast")
     */
    $(content_str + '.delete').click(function(){
        
        var jthis   = $(this);
        var message = jthis.attr("rel");
        
        if (confirm(message))
        {
            $.get(jthis.attr("href"), {},
                function(data, textStatus){
                    
                    // per debug
                    if (DEBUG)
                        alert(data);
                    
                    if (data == "ok")
                        // elimina il parent
                        jthis.parents(jthis.attr("rev")).each(function(){
                            $(this).hide();
                            return false;
                        });
                    else
                        alert(strmessages['error']);
                    
                }, "text");
        }
        
        return false;
    });
    
    
    /*
     * Caricamento ajax dei contenuti
     */
    $(content_str + '.load').click(function(){
        
        var jthis   = $(this);
        var jloader = $('<span></span>').html($('#ajax-loader').html());
        
        jthis.after(jloader);
        
        $(jthis.attr("rel")).load(jthis.attr("href"),
            
            function(){
                $(jloader).remove();
                stdEffect(jthis.attr("rel"));
            });
        
        return false;
    });
    
    
    /*
     * Esecuzione di comandi ajax
     */
    $(content_str + '.ajax').click(function(){
        
        var jthis   = $(this);
        var message = jthis.attr("rel");
        
        
        if (confirm(message))        
        {
            // visualizza il loader
            var jloader = $('<span></span>').html($('#ajax-loader').html());
        
            jthis.after(jloader);
            
            
            $.get(jthis.attr("href"), {},
                function(data, textStatus){
                    
                    $(jloader).remove();
                    
                    // per debug
                    if (DEBUG)
                        alert(data);
                    
                    if (data == "ok" || data == "OK")
                    {
                        // Operazione eseguita correttamente: visualizza un messaggio di conferma.
                        alert(strmessages['success']);
                    }
                    else
                        alert(strmessages['error']);
                    
                }, "text");
        }
        
        return false;
        
    });
    
    
    /*
     * Link semplice per qualsiasi elemento con proprietà rel impostata
     */
    $(content_str + '.link').click(function(){
        
        var jthis = $(this);
        
        location.href = jthis.attr("rel");
        
        return false;
    });
    
    
    /*
     * Link che aprono finestre di dialogo
     */
    $(content_str + '.wopen').click(function(){
        
        var jthis = $(this);
        
        window.open(jthis.attr("href"), jthis.attr("rel"), "width=700,height=600,menubar=no,locationbar=no,resizable=yes,scrollbars=yes");
        
        return false;
    });
    
    
    /*
     * 
     */
    $(content_str + '.quickbox').each(function(){
        
        var jthis = $(this);
        
        jthis.children('h3,h4,h5,.trigger').click(function(){
            jthis.children('.content').toggle();
        
            if (jthis.children('.content').is(':visible'))
             $(this).addClass('open');
            else
             $(this).removeClass('open');
            
            return false;
        });
        
    });
    
    
    $(content_str + '.toggle').each(function(){
        
        var href = $(this).attr("href");
        
        $(this).click(function(){
            
            $(href).toggle();
            
            return false;
        });
        
    });
    
    
    /*
     * Crea i comandi per la selezione multipla dei checkbox
     */
    $(content_str + '.multi-checkbox').each(function(){
        
        var sel_all, unsel_all;
        var jthis = $(this);
        
        unsel_all = $('<li><a href="#">Deseleziona tutto</a></li>').click(function(){
            
            jthis.children(':checkbox').each(function(){
                this.checked = false;
            });
            
            return false;
        });
        
        sel_all = $('<li><a href="#">Seleziona tutto</a></li>').click(function(){
            
            jthis.children(':checkbox').each(function(){
                this.checked = true;
            });
            
            return false;
        });
        
        $('<div class="clear"></div>').prependTo(this);
        $('<ul class="actions"></ul>').append(sel_all).append(unsel_all).prependTo(this);
        
    });
    
    
    //
    // Chicche eseguite per default
    //
    $(content_str + '.success-box').each(function(){
        
        var jthis = $(this);
        
        if (!jthis.is(':has(.block)'))
        {
            setTimeout(function(){
                
                jthis.fadeOut(400);
                
            }, 3000);
        }
        
    });
    
    
    $('a[href^="http://"]')
        .attr({
            target: "_blank"
        });
    
    
    $('a.external')
        .attr({
            target: "_blank"
        });
    
    
    $('form').each(function(){
		$(this).validate();
	});
    
}



$(document).ready(function(){
    
   stdEffect();
    
});


