/*
 * Utils (fonctions utilitaires)
 * Carlos Lobo <clobo@ciss.fr>
 */
/* Constantes JS*/
var gDOMErreur='<div class="ui-state-error ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-alert"/>&nbsp;%1$s&nbsp;</div>';
var gDOMReussite='<div class="ui-state-highlight ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-check"/>&nbsp;%1$s&nbsp;</div>';
var gDOMInfo='<div class="ui-state-highlight ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-info"/>&nbsp;%1$s&nbsp;</div>';
var gDOMCampagneSMS='<br><div class="ui-state-highlight ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-info"/>&nbsp;Nombre de destinataires : <b>%1$s</b>&nbsp;<br>Coût de cette campagne SMS : <b>%2$s \u20ac HT</b><br><br><b>En cliquant sur \'Envoyer\' vous acceptez l\'envoi d\'une campagne SMS du montant indiqué ci-dessus.</b></div><br>';
var gDOMCampagneEmail='<br><div class="ui-state-highlight ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-info"/>&nbsp;Nombre de destinataires : <b>%1$s</b>&nbsp;<br>Coût de cette campagne Email : <b>%2$s \u20ac HT</b><br><br><b>En cliquant sur \'Envoyer\' vous acceptez l\'envoi d\'une campagne Email du montant indiqué ci-dessus.</b></div><br>';
var gDOMAlertSupp='<div class="ui-state-highlight ui-corner-all">&nbsp;<span  style="display:inline-block;vertical-align: top;" class="ui-icon ui-icon-alert"/>&nbsp;Confirmez vous la <b>suppression</b> %1$s <b><i>\'%2$s\'</i></b> ?<br><br><b>Attention</b> : la suppression est <u>définitive</u> !</div>';

var gtabDefautsPersonne=['Nom','Prenom','N° et libellé de la voie','Lieu-dit ou BP','Chez, batiment','Code Postal et Ville','Telephone','Mobile','Date de naissance','Email'];
var gInvalideNom='Le nom doit être renseigné !!';
var gInvalideEmail='L\'adresse email est invalide !!';
var gRegExEmail=/^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,6}$/;
var gsEnvoiSMS='J\'envoie <b>%1$s</b> SMS';
var gsEnvoiEmails='J\'envoie <b>%1$s</b> mails';
var gsNbNPAI='<p><span  style="display:inline-block;vertical-align: middle;"" class="ui-icon ui-icon-alert"/><b>%1$s<\/b> client%2$s n\'habite%3$s pas à l\'adresse indiquée.<\/p>';

var configCKEditor = {height:'120px'};

var optionsLimiteurPWD = {
    'maxCharacterSize': 10,
    'originalStyle': 'originalTextareaInfo',
    'warningStyle' : 'warningTextareaInfo',
    'warningNumber' : 10,
    'displayFormat' : '#input/#max caractères'
};

var optionsLimiteurSMS = {
    'maxCharacterSize': 160,
    'originalStyle': 'originalTextareaInfo',
    'warningStyle' : 'warningTextareaInfo',
    'warningNumber': 10,
    'displayFormat' : '#input/#max | #words mots'
};

var optionsLimiteurAnnonce = {
    'maxCharacterSize': 140,
    'originalStyle': 'originalTextareaInfo',
    'warningStyle' : 'warningTextareaInfo',
    'warningNumber': 10,
    'displayFormat' : '#input/#max | #words mots'
};

var optionsDateSMS={
    autoSize: false,
    dateFormat:'dd/mm/yy',
    closeText: 'Fermer',
    prevText: '&#x3c;Préc',
    nextText: 'Suiv&#x3e;',
    minDate: new Date(),
    currentText: 'Courant',
    monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
        'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
    monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
        'Jul','Aoû','Sep','Oct','Nov','Déc'],
    dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
    dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
    dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
    weekHeader: 'Sm',
    firstDay: 1,
    isRTL: false,
    showMonthAfterYear: false,
    yearSuffix: '',
    changeMonth: true,
    changeYear: true,
    yearRange: 'c:2020',
    showWeek: true,
    weekHeader: 'S',
    altFormat: 'dd/mm/yy',
    duration: 'fast',
    //            showOn: 'button',
    showAnim: '',
    onClose:function(dateText, inst){
        var elt=dateText.split('/');
        if(!isValidDate(elt[0],elt[1],elt[2])){
            $(this).val('');
        }
    }
}
var optionsTimeentry={
    show24Hours:true,
    useMouseWheel: true,
    defaultTime:'+10m',
    minTime:'08:00',
    maxTime:'22:00'
}
var oDefautsPersonne=new Object();
var oDefautsMagasin=new Object();
/* */

/* équivalent du in_array de PHP*/
Array.prototype.in_array = function( needle ){
    for(var i = 0; i < this.length; i++) {
        if(this[i] == needle){
            return true;
        }
    }
    return false;
}
/* répete une chaine num fois*/
String.prototype.repeat = function( num ){
    return new Array( num + 1 ).join( this );
}
/* vérifie si une date est valide (origine : http://www.codetoad.com/javascript_IsValidDate.asp )*/
function isValidDate(day,month,year){
    month--;//javascript months start at 0 (0-11 instead of 1-12)
    var dteDate=new Date(year,month,day);
    return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}
/* renvoi la date du jour au format français*/
function toDay(bHour){
    var dteDate=new Date();
    var res;
    if(typeof(bHour)!='undefined'){
        var h=dteDate.getHours().toString();
        var m=dteDate.getMinutes().toString();
        res=((h.length==1) ? '0'+h : h)+':'+((m.length==1) ? '0'+m : m);
    }else{
        var d=dteDate.getDate().toString();
        var m=dteDate.getMonth();
        m++;
        m=m.toString();
        res=((d.length==1) ? '0'+d : d)+'/'+((m.length==1) ? '0'+m : m)+'/'+dteDate.getFullYear();
    }
    return res;
}
/* renvoie une date au format français */
function formaterDate(dteDate){
    var res;
    var d=dteDate.getDate().toString();
    var m=dteDate.getMonth();
    m++;
    m=m.toString();
    res=((d.length==1) ? '0'+d : d)+'/'+((m.length==1) ? '0'+m : m)+'/'+dteDate.getFullYear();
    return res;
}
/* réinitialise les formulaires*/
function resetForm(IdDuForm){
    $("#"+IdDuForm).each(function() {
        this.reset();
    });
}
/* construit le dom pour l'image du pays*/
function trtFlag(sData){
    var sReturn;
    var p=sData .split(';');
    var racine='<img src="images/flags/%1$s.gif" alt="%2$s" title="%2$s" style="margin:0 auto;"/>';
    sReturn=sprintf(racine,p[1],p[0]);
    return sReturn;
}
/* construit le dom pour les images Modeles*/
function trtTypeModele(sData){
    var sReturn;
    var racine='<img src="images/Modeles/%1$s" alt="%2$s" title="%2$s"/>';
    switch(sData){
        case "1":
            sReturn=sprintf(racine,"phone.png","SMS" );
            break;
        case "2":
            sReturn=sprintf(racine,"email.png","Email" );
            break;
    }
    return sReturn;
}
/* construit le dom pour les images CNIL*/
function trtCNIL(sData){
    var sReturn;
    var racine='<img src="%1$s" alt="%2$s" title="%2$s" style="display:inline;"/>';
    sReturn=sprintf(racine,srcCNIL('C',sData.charAt(0)),altCNIL('C',sData.charAt(0)));
    sReturn+=sprintf(racine,srcCNIL('S',sData.charAt(1)),altCNIL('S',sData.charAt(1)));
    sReturn+=sprintf(racine,srcCNIL('E',sData.charAt(2)),altCNIL('E',sData.charAt(2)));
    return sReturn;
}
/* construit la source de l'image CNIL*/
function srcCNIL(lequel,letat){
    var sReturn="";
    var racine="images/CNIL/";
    switch(lequel){
        case "C":
            sReturn=racine+"courrier"+letat+".png";
            break;
        case "E":
            sReturn=racine+"email"+letat+".png";
            break;
        case "S":
            sReturn=racine+"sms"+letat+".png";
            break;
    }
    return sReturn;
}
/* construit le alt et le title de le l'image CNIL*/
function altCNIL(lequel,letat){
    var sReturn="";
    var sAccepte="";
    if(letat==0){
        sAccepte="Refuse ";
    }else{
        sAccepte="Accepte ";
    }
    switch(lequel){
        case "C":
            sReturn=sAccepte+"de recevoir des courriers";
            break;
        case "E":
            sReturn=sAccepte+"de recevoir des emails";
            break;
        case "S":
            sReturn=sAccepte+"de recevoir des SMS";
            break;
    }
    return sReturn;
}
/* Preparation masque téléphonique */
function formatTelephonique(elt){
    elt=elt.split(';');
    var format = elt[0];
    if(format==''){
        format="* "
        format=format+"## ".repeat(4);
        format=format.substring(0,format.length-1)
    }
    var prefixe = elt[2];
    var ret=new Array(2);
    ret[1]=format;
    ret[0]=prefixe;
    return ret;
}
/* Change l'état d'un bouton par rapport à son id*/
function etatButton(sID,bActif){
    $("#"+sID).button((bActif==true) ? "enable" : "disable" );
}
/* Change l'état d'un bouton d'un dialog par rapport à l'id du dialog et au libellé du bouton*/
function etatButtonDialog(sID,sLibelle,bActif){
    //    $("#"+sID+" ~ .ui-dialog-buttonpane").children("button:contains('"+sLibelle+"')").button((bActif==true) ? "enable" : "disable" );//1.8.2
    $("#"+sID+" ~ .ui-dialog-buttonpane .ui-dialog-buttonset").children("button:contains('"+sLibelle+"')").button((bActif==true) ? "enable" : "disable" );//1.8.4
}
/* Change l'état d'un bouton d'un dialog par rapport à l'id du dialog et au libellé du bouton*/
function changeLibelleButtonDialog(sID,sLibelle,sNewLibelle){
    $("#"+sID+" ~ .ui-dialog-buttonpane .ui-dialog-buttonset").children("button:contains('"+sLibelle+"')").button("option", "label",sNewLibelle);
}
/* Change la visibilité d'un bouton d'un dialog par rapport à l'id du dialog et au libellé du bouton*/
function showButtonDialog(sID,sLibelle,bvisible){
    if(bvisible==true){
        //        $("#"+sID+" ~ .ui-dialog-buttonpane").children("button:contains('"+sLibelle+"')").show();//1.8.2
        $("#"+sID+" ~ .ui-dialog-buttonpane .ui-dialog-buttonset").children("button:contains('"+sLibelle+"')").show();//1.8.4
    }else{
        //        $("#"+sID+" ~ .ui-dialog-buttonpane").children("button:contains('"+sLibelle+"')").hide();//1.8.2
        $("#"+sID+" ~ .ui-dialog-buttonpane .ui-dialog-buttonset").children("button:contains('"+sLibelle+"')").hide();//1.8.4
    }
}
/* Change la visibilité de la zone des boutons d'un dialog par rapport à l'id du dialog*/
function showButtonPaneDialog(sID,bvisible){
    if(bvisible==true){
        $("#"+sID+" ~ .ui-dialog-buttonpane").show();
    }else{
        $("#"+sID+" ~ .ui-dialog-buttonpane").hide();
    }
}
/* enleve les alertes ajax*/
function callbackRemoveAlert(sNom){
    setTimeout(function(){
        $("#"+sNom).removeAttr('style').hide().fadeOut();
    }, 5000);
}
/* change le format de saisie du numéro de carte*/
function changeFormatSaisieNumeroCarte(sSelecteur,sChampSaisie){
    $("#"+sSelecteur+" option:selected").each(function () {
        var laval=$(this).val().split(';');
        if(laval[1]>9){
            laval[1]=0
        }
        $("#"+sChampSaisie).attr('alt', 'p'+laval[1]+'s3c0S');
    });
}
/* gère l'affichage de l'attente de réponse de la fiche personne-carte*/
function affichageAttentePersonneCarte(bCommence){
    if(bCommence==true){
        etatButtonDialog('divPersonneCarte','Enregistrer',false);
        $("#tabsPersonneCarte").hide();
        $("#AlertAjaxPersonneCarte").html('<img align="center" src="images/ajax-loader.gif"/>&nbsp;Veuillez patientez...').show();
    }else{
        etatButtonDialog('divPersonneCarte','Enregistrer',true);
        $("#tabsPersonneCarte").show();
        $("#AlertAjaxPersonneCarte").html('').hide();
    }
}
/* modifie les libellés des colonnes de dataTable*/
function LibellesColonnesDataTable(objLesColonnes){
    var i;
    for(i=0;i<objLesColonnes.length;i++){
        document.getElementById(objLesColonnes[i].IDCol).innerHTML = '<span class="css_right ui-icon ui-icon-carat-2-n-s"></span>'+objLesColonnes[i].LibCol;        
    }
}
function trim (str, charlist) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)
    // +      input by: Erkekjetter
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: DxGx
    // +   improved by: Steven Levithan (http://blog.stevenlevithan.com)
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // *     example 1: trim('    Kevin van Zonneveld    ');
    // *     returns 1: 'Kevin van Zonneveld'
    // *     example 2: trim('Hello World', 'Hdle');
    // *     returns 2: 'o Wor'
    // *     example 3: trim(16, 1);
    // *     returns 3: 6

    var whitespace, l = 0, i = 0;
    str += '';

    if (!charlist) {
        // default list
        whitespace = " \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000";
    } else {
        // preg_quote custom list
        charlist += '';
        whitespace = charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '$1');
    }

    l = str.length;
    for (i = 0; i < l; i++) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(i);
            break;
        }
    }

    l = str.length;
    for (i = l - 1; i >= 0; i--) {
        if (whitespace.indexOf(str.charAt(i)) === -1) {
            str = str.substring(0, i + 1);
            break;
        }
    }

    return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
//gère le sablier
function Sablier(state){
    $('body').css((state===true ? {
        "cursor":"wait"
    }:{
        "cursor":"default"
    }));
}
//rend grisé ou non les champs input ou select d'un form
function changeEtat(prefixe,bdisabled){
    $("#form-"+prefixe+" input").each(function(index,domElement){
        $(domElement).attr('disabled', (bdisabled==true ? 'disabled': ''));

    });
    $("#form-"+prefixe+" select").each(function(index,domElement){
        $(domElement).attr('disabled', (bdisabled==true ? 'disabled': ''));
    });
    $("#form-"+prefixe+" textarea").each(function(index,domElement){
        $(domElement).attr('disabled', (bdisabled==true ? 'disabled': ''));
    });

}
