// Agiunge una riga alla tabella che crea la distinta
function addStage2bLine(){          
    var table = document.getElementById('tableBodyDistinta');
    var newRow = document.createElement("tr");


	var lastRow = table.rows.length;
	// -1 significa "ultima riga"
	var newRow = table.insertRow(-1);

    //Campo di testo "nomePezzo"
    col0 = newRow.insertCell(0);
    var input0 = document.createElement('input');
    input0.type = 'text';
    input0.name = 'nomePezzo[]';
    input0.id = 'input_nomePezzo[]';
    input0.size = 20;
    input0.tabIndex = 6*lastRow+1;
    col0.appendChild(input0);     
    
    //Campo di testo "quantita"
    col1 = newRow.insertCell(1);
    var input1 = document.createElement('input');
    input1.type = 'text';
    input1.name = 'quantita[]';
    input1.id = 'input_quantita[]';
    input1.size = 5;
    input1.tabIndex = 6*lastRow+2;
    col1.appendChild(input1);
    
    //Campo di scelta a tendina "tecnica"
    col2 = newRow.insertCell(2);
    var select2 = document.createElement('select');
    select2.name = 'tecnica[]';
    select2.options[0] = new Option('');
    select2.options[1] = new Option('Stereolitografia', 'Stereolitografia');
    select2.options[2] = new Option('Sinterizzazione', 'Sinterizzazione');
    select2.options[3] = new Option('Vacuum casting', 'Vacuum casting');
    select2.options[4] = new Option('Altro', 'Altro');
    select2.options[5] = new Option('Non so', 'Non so');
    select2.tabIndex = 6*lastRow+3;
    col2.appendChild(select2);
    
    //Campo di scelta a tendina "finitura"
    col3 = newRow.insertCell(3);
    var select3 = document.createElement('select');
    select3.name = 'finitura[]';
    select3.options[0] = new Option('');
    select3.options[1] = new Option('Grezzo', 'Grezzo');
    select3.options[2] = new Option('Sabbiato e carteggiato', 'Sabbiato e carteggiato');
    select3.options[3] = new Option('Sab. cart. e verniciato', 'Sab. cart. e verniciato');
    select3.tabIndex = 6*lastRow+4;    
    col3.appendChild(select3);
    
    //Campo di testo multilinea "commentoPezzo"
    col4 = newRow.insertCell(4);
    var textarea4 = document.createElement('textarea');
    textarea4.name = 'commentoPezzo[]';
    textarea4.rows = 2;
    textarea4.cols = 30;
    textarea4.tabIndex = 6*lastRow+5;
    col4.appendChild(textarea4);
    
    //Pulsante che elimina la riga corrente
    col5 = newRow.insertCell(5);            
    var input5 = document.createElement('input');
    input5.type = 'button';
    input5.name = 'delButton';
    input5.value = 'Elimina';
    input5.tabIndex = 6*lastRow+6;
    input5.onclick = function() { Stage2DelRow(this) }; 
    col5.appendChild(input5);         
                              
    return true;
}

/* Elimina un riga della tabella che crea la distinta
 * Viene chiamato dal pulsante in fondo alla riga della distinta
 */
function Stage2DelRow(thisButton){
    //thisButton = pulsante che e' stato permuto
    //primo parentNode = il td della colonna del pulsante
    //secondo parentNode = il tr della riga del nodo
    var td = thisButton.parentNode;    
    var tr = td.parentNode;
    var rowNumber = tr.rowIndex;
    
    //Se sono nella prima riga mi limito a pulirla visto che non posso cancellarla
    //(non e'possibile avere tabelle che non contengono almeno un <tr>
    if((rowNumber<=1) ){        
        tr.childNodes[1].firstChild.value = '';
        tr.childNodes[2].firstChild.value = '';
        // per azzerare il campo select devo selzionare l rima riga che e' vuota
        tr.childNodes[3].firstChild.firstChild.selected = true;
        tr.childNodes[4].firstChild.firstChild.selected = true;        
        tr.childNodes[5].firstChild.value = '';
        return;
    }else{
        //Se non sono nella prima riga posso tranquillamente cancellarla
        document.getElementById('distintaTable').deleteRow(rowNumber);
    }
    return true;
}

/* Eseguo l'upload del file dei disegni
 * Viene chiamato appena seleziono un file dal campo di input di tipo "file"
 */
function sendDisegni(){
    //Mostro il blocco che contine il messaggio di caricamento
    document.getElementById("fileMessage").style.display = "block";
    //Avviso che e' in corso l'upload del file
    document.getElementById("fileMessage").innerHTML = "Invio disegni in corso...";
    //Indico allo script php che operazione eseguire
    document.getElementById("input_nextStage").value = 'uploadDisegni';
    //Faccio partire l'upload
    document.getElementById("formPreventivo").submit();
}

// come sopra ma per il file della distinta
function sendDistinta(){
	document.getElementById("fileMessage").style.display = "block";
	document.getElementById("fileMessage").innerHTML = "Invio distinta in corso...";
	document.getElementById("input_nextStage").value = 'uploadDistinta';
    document.getElementById("formPreventivo").submit();
}

/* Apre una finestra di popup che mostra una pagina
 * @param string url = path della pagina da mostrare
 * @param string width = larghezza della pagina
 * @param string height = altezza della pagina
 */
function openPopup(url, width, height){
    //url = 'picture.php?picture=' + url + '&imgString=' + alt;
    var options = 'width='+ width +', height='+ height +', resizable, location, scrollbars';
    var barcon = window.open(url, '_blank', options);
    barcon.focus();
    return false;
}

/* Esegue il submit del form
 * @param int now = fase del form in cui mi trovo
 * @param int next = fase del form in cui l'utente ha chiesto di passare 
 */
function jumpTo(now, next){
    //Indico allo script php che operazione eseguire    
    document.getElementById("input_nextStage").value = next;
    //Decido cosa validare
    switch(now){
        case 1:
            isValid = validateFormStage1();
            break;
        case 2:
            isValid = validateFormStage2();
            break;
        case 3:
            isValid = validateFormStage3();
            break;            
        case 4:
            isValid = validateFormStage4();
            break;
        case 5:
            isValid = validateFormStage5();
            break;
        default:
            isValid = false;    
    }
    //Eseguo il submit solo se la pagina e' valida
    if(isValid){        
        document.getElementById("formPreventivo").submit();        
        return true;
    }else{
        return false;
        }
}
/* nasconde il messaggio di errore dello script php
 * Viene chiamato dal pulsante "chiudi" presente nel blocco che verra' nascosto
 */
function hideErrorMessage(){
    document.getElementById("errorMessage").style.display = 'none';
    return true;
}

// Apre la pagina attraverso cui scrivere la distinta
function openDistintaPage(){
    //spunto il radio che indica che si vuole usare la distinta compilata
    document.getElementById("input_compilato").checked = 'checked';
    document.getElementById("input_nextStage").value = 2.5;
    document.getElementById("formPreventivo").submit();    
    return true;
}

// carica la home del sito. Viene chiamato dal pulsante alla fine del form
function backToHome(){
    location.assign('../pagine/chisiamo.php');
    return true;
}
/*********************************
    VALIDAZIONE DEL FORM
***********************************/

/*
    Scrive nel tag con id=idName il testo passato in errorMessage formattandolo
    come un errore    
*/
function writeError(idName, errorMessage){
    if(document.getElementById(idName)){
	    document.getElementById(idName).style.color='red';
	    document.getElementById(idName).innerHTML = errorMessage;
    }
}

/*
    Scrive nel tag con id=idName il testo passato in errorMessage formattandolo
    come un messaggio standard
*/
function writeMessage(idName, errorMessage){
    if(document.getElementById(idName)){
	    document.getElementById(idName).style.color='black';
	    document.getElementById(idName).innerHTML = errorMessage;
    }
}
/*
    Riceve una stringa col nome del input da controllare (senza input_ )
    come output modifica l'elemento con id = msg_<nomeCampo>
*/
function validateInput(nomeCampo){
    var input = document.getElementById('input_' + nomeCampo).value;

    //verifica che l'input sia compilato. Vale solo se il campo e' obbligatorio
    if (input==null||input==""){
        writeError('msg_'+nomeCampo, ' &lt; Necessario &gt; ');
        return false;
    }else{
        writeMessage('msg_'+nomeCampo, '*');
        }
    //Controllo che l'indirizzo di posta sia valido
    if (nomeCampo=='mail'){
        var mail_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
        if (!mail_reg_exp.test(input)){
            writeError('msg_'+nomeCampo, 'Indirizzo non valido &gt;');
        }else{
            writeMessage('msg_'+nomeCampo, '*');
        }
    }   
}

/* 
    Quando l'utente esegue submit al form, controllo tutto
    prima di inviare i dati al server
*/
function validateFormStage1(){
    //se torno indietro non serve validazione
    var next = document.getElementById('input_nextStage');
    if(next.value < 2){  
        return true;           
    }
    
    /*prima di tutto ripulisco le vecchie segnalazioni di errore*/
    writeMessage('msg_azienda', '*');
    writeMessage('msg_nome', '*');
    writeMessage('msg_cognome', '*');
    writeMessage('msg_mail', '*');
    writeMessage('msg_telefono', '*');


    //vettore con gli id degli input da controllare
    var inputName=new Array('azienda',
                            'nome',
                            'cognome',
                            'telefono');
    var errorNumber = 0; //numero di campi con errori
    var firstWrongField = null; //primo campo con errori a cui rimandare l'utente
    // reg_exp per controllare la validita' del indirizo e-mail
    var mail_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
    
    // controllo che i campi indicati dal vettore non siano vuoti
    for(i in inputName){
        var input = document.getElementById('input_'+inputName[i]);
        if((input.value == "") || (input.value == "undefined")) {
            //segnalo l'errore
            writeError('msg_'+inputName[i], 'Necessario &gt;');
            //conto il numero di errori
            errorNumber++;
            if(firstWrongField == null){
                firstWrongField = input;
            }
        }
    }
    
    // valido l'indirizzo di posta
    var mail = document.getElementById('input_mail');
    var wrongMail = false;
    if((mail.value == "") || (mail.value == "undefined")){
            //segnalo che il campo e' vuoto
           writeError('msg_mail', 'Necessario &gt;');
           wrongMail = true;
    }else if (!mail_reg_exp.test(mail.value)) {
        //segnalo che l'indirizzo non e' valido
        writeError('msg_mail', 'Indirizzo non valido &gt;');
        wrongMail = true;
        }
    //Se la mail non e' corretta tengo conto di un errore        
    if(wrongMail==true){
        errorNumber++;
        if(firstWrongField == null){
            firstWrongField = mail;
        }          
    }
     
    // controllo se ho avuto errori e lo segnalo
    if(errorNumber>0){
        alert("Ci sono "+errorNumber+" campi non validi, si prega di compilarli correttamente");
        firstWrongField.focus();
        return false;
    }else{
        return true;
        }                                  
}

/* 
    Quando l'utente esegue submit al form, controllo tutto
    prima di inviare i dati al server
*/
function validateFormStage2(){
    //se torno indietro non serve validazione
    var next = document.getElementById('input_nextStage');
    if(next.value < 3){
        return true;         
    }
    writeMessage('msg_descrizione', '*');
    writeMessage('msg_distinta', '*');
    
    var errorNumber = 0; //numero di campi con errori
    var firstWrongField = null; //primo campo con errori a cui rimandare l'utente
    
    /* controllo il campo descrizione */
    var descrizione = document.getElementById('input_descrizione');
	if((descrizione.value == "") || (descrizione.value == "undefined")) {
	    //segnalo l'errore
	    writeError('msg_descrizione', ' &lt; Necessario &gt; ');
	    //conto il numero di errori
	    errorNumber++;
	    if(firstWrongField == null){
	        firstWrongField = descrizione;
	    }
    }
	    
    /* verifico che sia stata fornita o la distinta da allegare 
        o la distinta compilata*/
    var fileMessage = document.getElementById('fileMessage');
    if(!fileMessage.hasChildNodes()){
        //segnalo l'errore
        writeError('msg_distinta', ' &lt; Necessario &gt; ');
        //conto il numero di errori
        errorNumber++;
        if(firstWrongField == null){
            firstWrongField = document.getElementById('input_urlDistinta');
        }
    }

    // controllo se ho avuto errori e lo segnalo
    if(errorNumber>0){
        alert("Ci sono "+errorNumber+" campi non validi, si prega di compilarli correttamente");
        firstWrongField.focus();
        return false;
    }else{
        return true;
    }          
}

function validateFormStage3(){
    //Se torno indietro non seve validazione
    var next = document.getElementById('input_nextStage');
    if(next.value < 4){
        return true;         
    }
    writeMessage('msg_disegni', '*');
    
    var errorNumber = 0; //numero di campi con errori
    var firstWrongField = null; //primo campo con errori a cui rimandare l'utente
    
    /* verifico che sia stata fornita o la distinta da allegare 
        o la distinta compilata*/
    var fileMessage = document.getElementById('fileMessage');
    if(!fileMessage.hasChildNodes()){
        //segnalo l'errore
        writeError('msg_disegni', ' &lt; Necessario &gt; ');
        //conto il numero di errori
        errorNumber++;
        if(firstWrongField == null){
            firstWrongField = document.getElementById('input_urlDisegni');
        }
    }
    // controllo se ho avuto errori e lo segnalo
    if(errorNumber>0){
        alert("E' necessario allegare il file dei disegni prima di procedere");
        firstWrongField.focus();
        return false;
    }else{
        return true;
    }     
}
function validateFormStage4(){
    //se torno indietro non serve validazione
    var next = document.getElementById('input_nextStage');
    if(next.value < 5){
        return true;         
    }
    // verifico sia stata accettata l'informativa sulla privacy
    var privacy = document.getElementById('input_privacyOk');
    if(!privacy.checked){
        //segnalo l'errore
        writeError('msg_privacy', ' &lt; Necessario &gt; ');
        //conto il numero di errori
        alert("E' necessario accettare l'informativa sul trattamento dei dati personali prima di procedere");
        return false;
    }else{
        return true;
   }     
}

function validateFormStage5(){
    return true;
}
