// crea un link di tipo popup a tutti gli <a> che hanno class="popup"
function createPopup() {
    if(document.getElementsByTagName){
        var title_msg = " [Apre una nuova finestra]";
        var links = document.getElementsByTagName("a");
        for (i = 0; i < links.length; i++) {
            var link = links[i];
            if (link.className.indexOf("popup") != -1) {
                link.title += title_msg;
                
                //var ev_funct = function () { return !window.open(this.href); }
                //link.onclick = link.onkeypress = ev_funct;
                link.onclick = function () { return !window.open(this.href); }
                
                link.onkeypress = function(ev){ 
                    var keynum;
                                
                    if(window.event){ // IE
                        keynum = window.event.keyCode;
                    }
                    else if(ev.which){ // Netscape/Firefox/Opera
                        keynum = ev.which;
                    }
                        
                    if (keynum == 13){ // tasto enter
                        return !window.open(this.href);
                    }
                };
            }
        }
    }
}

//prende una stringa nel formato gg/mm/aaaa e restituisce un oggetto Date se la data è valida, altrimenti false
function validDate(date){
    var ar_date = date.split("/");
    var date_obj = new Date();
    ar_date[1]--;
    date_obj.setFullYear(ar_date[2]);
    date_obj.setMonth(ar_date[1]);
    date_obj.setDate(ar_date[0]);
    if ( (date_obj.getFullYear() != ar_date[2]) ||
        ((date_obj.getMonth()) != ar_date[1]) ||
        (date_obj.getDate() != ar_date[0])
        ){
            return false;
    }
    else {					
        return date_obj;
    }
}

//controlla se la differenza tra data to e data from è positiva
function dateDiff(from_id, to_id){
    var errore = "";
    var from_elem = document.getElementById(from_id);
    var from = from_elem.value;
    var nome_campo_from = get_label_content(from_id);
    if (!nome_campo_from){
        nome_campo_from = from_elem.name;
    }
    if(from != ""){ 
        var data_from = validDate(from);
        if(!data_from){
            errore += "- Formato della data '" + nome_campo_from + "' non valido!\n";
        }
    }
    var to_elem = document.getElementById(to_id);
    var to = to_elem.value;
    var nome_campo_to = get_label_content(to_id);
    if (!nome_campo_to){
        nome_campo_to = to_elem.name;
    }
    if(to != ""){ 
        var data_to = validDate(to);
        if(!data_to){    			
            errore += "- Formato della data '" + nome_campo_to + "' non valido!\n";
        }
    }
    if(errore != ""){
        alert(errore);
        return false;
    }
    if( (from != "" && to != "") && ((data_to.getTime() - data_from.getTime()) < 0) ){
        alert("Data '"+ nome_campo_from + "' maggiore di data '" + nome_campo_to + "'");
        return false;
    }
    return true;
}

// ritorna il contenuto di un elemento di tipo label dato l'id contenuto nell'attributo 'for'
function get_label_content(for_id)
{
    var labels = document.getElementsByTagName("label");
    for (i = 0; i < labels.length; i++) {
        if(labels[i].getAttribute('for') == for_id){
            return labels[i].firstChild.nodeValue;
        }
    }
    return false;    	
}

// mostra/nasconde un elemento in base al suo id
function toggle(id)
{
    var elem = document.getElementById(id);
    if (elem){
        if(elem.style.display != 'none'){
            elem.style.display = 'none';
        }
        else {
            elem.style.display = 'block';
        }
        delete elem;
    }
}


// append toggle
function append_toggle(link_toggle_id, elem_toggle_id) {
    if(document.getElementById){
        var title_msg = "Mostra/Nascondi";
        var link = document.getElementById(link_toggle_id);
        if (link){
            
                // nasconde all'inizio l'elemento
                document.getElementById(elem_toggle_id).style.display = 'none';
                // mostra il link
                link.style.display = 'inline';
                
                link.title += title_msg;
                link.onclick = function () { return toggle(elem_toggle_id); }
            }
    }
}


function go_back()
{
    if (document.getElementsByTagName){
        var links = document.getElementsByTagName("a");
        for (i = 0; i < links.length; i++) {
            var link = links[i];
            if (link.className.indexOf("go_back") != -1) {
                link.style.display = 'block';
                link.href = 'javascript:window.history.go(-1)';
            }
        }
    }
}


// se un input ha la classe 'pulsante_stampa', gli viene associato l'evento stampa
function pulsante_stampa()
{
     if(document.getElementsByTagName){
        var title_msg = " [Stampa questa pagina]";
        var links = document.getElementsByTagName("input");
        for (i = 0; i < links.length; i++) {
            var link = links[i];
            if (link.className.indexOf("pulsante_stampa") != -1) {
                link.title += title_msg;
               
                var ev_funct_keypress = function (ev) { 
                    var keynum;
                    
                    if(window.event){ // IE
                        keynum = window.event.keyCode;
                    }
                    else if(ev.which){ // Netscape/Firefox/Opera
                        keynum = ev.which;
                    }
                        
                    if (keynum == 13){ // tasto enter
                       print_window();
                    }
                    return false;
                };
                var ev_funct_onclick = function (ev) { 
                    print_window();
                    return false;
                };
                
                link.onkeypress = ev_funct_keypress;
                link.onclick = ev_funct_onclick;
            }
        }
    }
    
}


// stampa una pagina
function print_window()
{
    if (typeof(window.print) != 'undefined') {
        window.print();
    }
    return false;
}

// eventi chiamati a inzio pagina
window.onload = createPopup;

