
/**
 * @todo bisigna ancora gestire:
 *  - controllo email
*/


/**
 * funzione base che effettua i controlli in quasi tutte le form
 **/
function validate_form(formCurrent){

    var strErrors = "";
    strErrors += validate_compulsory_fields(formCurrent);

    if(strErrors.length>0)
        alert(strErrors);
    else{
        $(formCurrent).submit();
    }
}

function validate_form_admin_onupdate(formCurrent){

    var strErrors = "";

    $('ajaxloader').show();
    $('submitbutton').hide();

    //controllo campi obbligatori
    strErrors += validate_compulsory_fields(formCurrent);
    //cotrollo se username gia esiste
    strErrors += validate_ajax_unique_field_onupdate(formCurrent, "admin", "requiredusername", "username", "Username", "Username gia' utilizzato. Scegline un'altro");

    if(strErrors.length>0){
        alert(strErrors);
        $('ajaxloader').hide();
        $('submitbutton').show();
    }
    else{
        $(formCurrent).submit();
    }

}

function validate_form_admin(formCurrent){

    var strErrors = "";

    $('ajaxloader').show();
    $('submitbutton').hide();

    //controllo campi obbligatori
    strErrors += validate_compulsory_fields(formCurrent);
    //cotrollo se username gia esiste
    strErrors += validate_ajax_unique_field(formCurrent, "admin", "requiredusername", "username", "Username", "Username gia' utilizzato. Scegline un'altro");
    
    if(strErrors.length>0){
        alert(strErrors);
        $('ajaxloader').hide();
        $('submitbutton').show();
    }
    else{
        $(formCurrent).submit();
    }

}


/**
 * Funzione che fa i controlli per la form di registrazione clienti
 **/
function validate_registration_form(formCurrent){

    var strErrors = "";

    $('ajaxloader').show();
    $('submitbutton').hide();

    //controllo campi obbligatori
    strErrors += validate_compulsory_fields(formCurrent);
    //controllo la password con la ripeti password
    strErrors += validate_password_fields(formCurrent);

    var msg_gia_presente = "gia' presente nel nostri archivi. Sicuro di non esserti gia' registrato?";
    var tipoTabella = "clienti";
    
    //cotrollo se username gia esiste
    strErrors += validate_ajax_unique_field(formCurrent, tipoTabella, "requiredusername", "username", "Username", "Username gia' utilizzato. Scegliene un'altro");
    //controllo se email gia inserita
    strErrors += validate_ajax_unique_field(formCurrent, tipoTabella, "requiredemail", "email", "Email", "Email "+msg_gia_presente);
    //controllo se codice fiscale gia presente
    strErrors += validate_ajax_unique_field(formCurrent, tipoTabella, "requiredcodfisc", "codice_fiscale", "Codice fiscale", "Codice fiscale "+msg_gia_presente);
    //controllo se partita iva gia presente
    strErrors += validate_ajax_unique_field(formCurrent, tipoTabella, "requiredpartitaiva", "partita_iva", "Partita iva", "Partita iva "+msg_gia_presente);

    if(strErrors.length>0){
        alert(strErrors);
        $('ajaxloader').hide();
        $('submitbutton').show();
    }
    else{
        $(formCurrent).submit();
    }

}

/**
 * Controlla che il campo inserito non sia già presente nel database
 **/
function validate_ajax_unique_field(formid, tipo_tabella, requiredClassName, field_name, labelCampo, labelError){
    var errorMsg = "";

    var arrayFields = $$('form#'+formid+' .'+requiredClassName);
    if(arrayFields.length > 0){
        if(arrayFields.length != 1)
            errorMsg += "\n\nMa quanti campi "+labelCampo+" ci sono?";
        else{
            var fieldValue = arrayFields[0].value;

            if(fieldValue.length>0){

                var myhash = new Hash();
                myhash.set('field_name', field_name);
                myhash.set('field_value', fieldValue);

                var params = {
                    method: 'post',
                    asynchronous : false,
                    parameters: myhash,
                    onSuccess: function(transport) {
                        if (transport.responseText == '1'){
                            errorMsg += "\n\n"+labelError;
                        }
                    }
                }

                new Ajax.Request("/asyncfunctions/uniquechk"+tipo_tabella, params);
            }
            //else errorMsg += "\n\nIl campo "+labelCampo+" non puo' essere vuoto";
        }
    }
    return errorMsg;
}


/**
 * Funzione uguale alla precedente, solo che esclude dalla ricerca il record corrente,
 * che ha  il campo ovviamente uguale a se stesso
 **/
function validate_ajax_unique_field_onupdate(formid, tipo_tabella, requiredClassName, field_name, labelCampo, labelError){
    var errorMsg = "";

    var idRecord = $('id').value;

    var arrayFields = $$('form#'+formid+' .'+requiredClassName);
    if(arrayFields.length > 0){
        if(arrayFields.length != 1)
            errorMsg += "\n\nMa quanti campi "+labelCampo+" ci sono?";
        else{
            var fieldValue = arrayFields[0].value;

            if(fieldValue.length>0){

                var myhash = new Hash();
                myhash.set('field_name', field_name);
                myhash.set('field_value', fieldValue);
                myhash.set('id_record', idRecord);

                var params = {
                    method: 'post',
                    asynchronous : false,
                    parameters: myhash,
                    onSuccess: function(transport) {
                        if (transport.responseText == '1'){
                            errorMsg += "\n\n"+labelError;
                        }
                    }
                }

                new Ajax.Request("/asyncfunctions/uniquechk_onupdate_"+tipo_tabella, params);
            }
            //else errorMsg += "\n\nIl campo "+labelCampo+" non puo' essere vuoto";
        }
    }
    return errorMsg;

}




/**
 * Effettua il controllo che il campo password e 'ripeti password' siano uguali
 **/
function validate_password_fields(formCurrent){

    var errorMsg = "";

    // effettua il confronto delle password
    var arrayFields = $$('form#'+formCurrent+' .password_confirm');
    if(arrayFields.length > 0){
        if(arrayFields.length != 2)
            errorMsg = '\n\nMa quanti campi password ci sono?';
        else
        if(arrayFields[0].value != arrayFields[1].value)
            errorMsg = '\nLe due password inserite non corrispondono';
    }
    return errorMsg;
}

/**
 * Controlla che i campi marcati come obbligatori siano tutti compilati
 **/
function validate_compulsory_fields(formCurrent){

    var errorMsg = "";

    /* controllo i campi input text,textarea,select,file se obbligatori */
    var arrayFields = $$('form#'+formCurrent+' .required');
    for( var i = 0; i < arrayFields.length; i++){
        if(arrayFields[i].value == "")
            errorMsg += "\n - " + arrayFields[i].title;
    }

    /* controllo i campi checkbox se obbligatori */
    arrayFields = $$('form#'+formCurrent+' .need_checked');
    for( i = 0; i < arrayFields.length; i++){
        if(arrayFields[i].checked == false)
            errorMsg += "\n - " + arrayFields[i].title;
    }

    if(errorMsg != "")
        errorMsg = "Attenzione i seguenti campi sono obbligatori:\n"+errorMsg;

    return errorMsg;
}

function update_tipo_cliente(is_azienda){

    if(is_azienda.value == '1'){
        //settato cliente ad AZIENDA
        $('campi_azienda').show();
        $('ragione_sociale').addClassName('required');
        $('partita_iva').addClassName('required');
        $('partita_iva').addClassName('requiredpartitaiva');

    }else{
        //settato cliente a PRIVATO

        $('ragione_sociale').value = "";
        $('partita_iva').value = "";

        $('ragione_sociale').removeClassName('required');
        $('partita_iva').removeClassName('required');
        $('partita_iva').removeClassName('requiredpartitaiva');
        $('campi_azienda').hide();
    }

}


function seleziona_tutti(){

    var arrayFields = $$('table#lista_gestionale .radio_id');
    var i = 0;

    if($('selezionati_tutti').value == 0){
        for( ; i < arrayFields.length; i++){
            arrayFields[i].checked = true;
        }
        $('selezionati_tutti').value = 1;
    }
    else{
        for( ; i < arrayFields.length; i++){
            arrayFields[i].checked = false;
        }
        $('selezionati_tutti').value = 0;
    }
        
}



/**
 *  Gestisce i bottoni per formattare il testo nella TextArea
 *
 * */

// JavaScript Document
function AddFormat(area,tag) {
    var range
    area.focus();
    var isIe;
    if(window.document.selection){
        isIe=true;
        range=window.document.selection.createRange();
        text=range.text;
    }
    else{
        isIe=false;
        if(area.selectionStart || area.selectionStart == '0') {
            var startPos = area.selectionStart;
            var endPos = area.selectionEnd;
            text=area.value.substring(startPos,endPos);
        }
    }

    if(tag=='ul'){
        txt = "<ul class=\"elenco_testo\">\n <li></li>\n <li></li>\n</ul>";
    }else{

        if(text.length==0){
            switch (tag) {
                case 'rosso':
                    txtdaformattare=prompt('Inserire il testo da colorare in rosso');
                    break;
                case 'center':
                    txtdaformattare=prompt('Inserire il testo da centrare');
                    break;
                default:
                    txtdaformattare=prompt('Inserire il testo da porre fra <'+tag+'> e </'+tag+'>');
            }
        }
        else
            txtdaformattare=text;

        switch (tag) {
            case 'a':
                url=prompt('Immettere l\'indirizzo da associare al link:\nNB: non dimenticare http:// o https:// in base al tipo di link');
                txt="<"+tag+" href=\""+url+"\">"+txtdaformattare+"</"+tag+">";
                break;
            case 'rosso':
                txt="<span class=\"rosso\">"+txtdaformattare+"</span>";
                break;
            case 'center':
                txt="<div align=\"center\" class=\"clear\">"+txtdaformattare+"</div>";
                break;
            default:
                txt="<"+tag+">"+txtdaformattare+"</"+tag+">";
        }
    }


    area.focus();
    if(isIe)
        range.text=txt;
    else
        area.value = area.value.substring(0, startPos) + txt + area.value.substring(endPos, area.value.length);
}

/**
 * Effettua il trim di una stringa in modo molto veloce
 **/
function trim(stringValue){
    return stringValue.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

/**
 * Elimino i caratteri che non si possono inviare in una richiesta get
 **/
function removeCharacters(str){
    str = str.replace(/[\\\/\*\+\?\(\)\!\,\.]/ig,"");
    return str;
}

function DoNav(theUrl){
    document.location.href = theUrl;
}

function DoSearchNav(url, param){

    var paramSearch = trim(param.value);


    if(paramSearch.length < 4)
        alert('inserire una stringa di ricerca lunga almeno 4 caratteri');
    else{
        paramSearch = removeCharacters(paramSearch);
        this.DoNav(url + paramSearch);
    }
        
}


function clean_menu_over(classSelected, classNormal){

    var listaNodi = $$(' .'+classSelected);
    for(var i = 0; i < listaNodi.length; i++){
        listaNodi[i].removeClassName(classSelected);
        listaNodi[i].addClassName(classNormal);
    }

    if($('menu_clicked').value == 1){

}
}

function clean_menu_out(classSelected, classNormal){

    //sleep(1000);

    if($('menu_clicked').value == 0){

        var listaNodi = $$(' .'+classSelected);
        for(var i = 0; i < listaNodi.length; i++){
            listaNodi[i].removeClassName(classSelected);
            listaNodi[i].addClassName(classNormal);
        }
    }
}

function set_menu_clicked(){
    $('menu_clicked').value=1;
}


function sleep(milliseconds) {
    var start = new Date().getTime();
    for (var i = 0; i < 1e7; i++) {
        if ((new Date().getTime() - start) > milliseconds){
            break;
        }
    }
}


/**
 * effettua l'encoding di una stringa per inviarla in una URL
 **/

//function fixedEncodeURIComponent (str) {
//    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
//                                     replace(/\)/g, '%29').replace(/\*/g, '%2A');
//}
/*
function ChangeColor(tableRow, highLight){
    if (highLight){
        //#dcfac9
        //F0F0F0
        tableRow.style.backgroundColor = 'green';
    }
    else{
        tableRow.style.backgroundColor = 'white';
    }
}

function changeColor2(){

    var righe = document.getElementsByTagName('tr');
    for (var i = 0; i < righe.length; i++) {
        righe[i].onmouseover = function() {
            this.className += ' secondocolore';
        }
        righe[i].onmouseout = function() {
            this.className = this.className.replace('secondocolore', '');
        }
    }
}
*/


/**
 * Aggiunge uno slash prima dell'apice
 */
//function cleanSlash(stringa){
  //  return stringa.replace("'", "\'");
//}

