/*****************************
SCRIPT WEB2I
*****************************/

function $(id) {
    return document.getElementById(id);
}
function $F(id) {
    return document.getElementById(id).value;
}

function addslashes(str) {
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\0/g,'\\0');
    return str;
}
function htmlspecialchars(ch) {
    ch = ch.replace(/&/g,"&amp;")
    ch = ch.replace(/\"/g,"&quot;")
    ch = ch.replace(/\'/g,"&#039;")
    ch = ch.replace(/</g,"&lt;")
    ch = ch.replace(/>/g,"&gt;")
    return ch
}
function stripslashes(str) {
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\\\/g,'\\');
    str=str.replace(/\\0/g,'\0');
    return str;
}

function nl2br(str) {
    return str.replace(/\n/g, '<br />');
}

function trim(string)
{
    return string.replace(/(^\s*)|(\s*$)/g, '');
}
/*******
descr:Fonction qui permet d'ajouter des champs textes à la volée
param: 	1- l'id du champ hidden sur nb total
2- l'id du champ div vide pour accueillir les nouveaux champs
3- class du div de la ligne du formulaire
4- intitulé du label
5- champ name de l'input
********/
function addInputText (idNb, idConteneur, ligneClass, label, name) {
    var nb = parseInt($F(idNb));
    ++nb;

    var Conteneur = $(idConteneur);
    var dDiv = document.createElement("div");
    dDiv.setAttribute("class", ligneClass);
    dDiv.setAttribute("className", ligneClass);  /* redondance pour pallier bug IE */
    Conteneur.appendChild(dDiv);

    /*	contenu  = "<div class='inscription_champ_form_label'>"+label+" "+nb+"</div>";*/
    contenu  = "<div class='"+ligneClass+"_label'>"+label+" "+nb+"</div>";
    contenu += "<div class='"+ligneClass+"_input'><input type='text' id='"+name+"_"+nb+"' name='"+name+"["+nb+"]'></div>";

    dDiv.innerHTML = contenu;

    $(idNb).value = nb;
}


/*******
descr: Cache le div passé en parametre
param: id du div
********/
function Hide(div){
    document.getElementById(div).style.display='none';
}

/*******
descr: Affiche le div passé en parametre
param: id du div
********/
function Show(div){
    document.getElementById(div).style.display='block';
}

/*******
descr: Renvoie le code de la touche appuyer
param: event
********/
function getkey(e)
{
    if (window.event)
    return window.event.keyCode;
    else if (e)
    return e.which;
    else
    return null;
}

/*******
descr: Fonction qui limites les caractères saisies dans un input
param: event, liste de caractères autorisé
********/
function goodchars(e, goods)
{
    var key, keychar;
    key = getkey(e);
    if (key == null) return true;

    // get character
    keychar = String.fromCharCode(key);
    keychar = keychar.toLowerCase();
    goods = goods.toLowerCase();

    // check goodkeys
    if (goods.indexOf(keychar) != -1)
    return true;

    // control keys
    if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
    return true;

    // else return false
    return false;
}


/*******
descr: Récupère la hauteur de l'écran
param: ---
********/
function getWindowHeight() {
    var windowHeight = 0;
    if (document.documentElement && document.documentElement.clientHeight) {
        windowHeight = document.documentElement.clientHeight;
    }
    else if (typeof(window.innerHeight) == 'number') {
        windowHeight = window.innerHeight;
    }
    else if (document.body && document.body.clientHeight) {
        windowHeight = document.body.clientHeight;
    }
    return windowHeight;
}

/*******
descr: Retour la hauteur 1/3 de l'écran
param: ---
********/
function getTop()
{
    return document.documentElement.scrollTop + Math.floor(getWindowHeight()/3);
}

/*******
descr: Div alerte
param: le texte à afficher
********/
function showAlerte(id, txt)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = nl2br(txt);
    document.getElementById(id).style.display = "block";
}
function closeAlerte(id)
{
    document.getElementById(id).style.display = "none";

}

function showConfirmation(id, txt, action)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = nl2br(txt);
    document.getElementById(id+'_ok').href = action;
    document.getElementById(id).style.display = "block";
}


/**************************************/
/**************************************/
/**************************************/

function update_content(url, timer)
{

    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", url, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }
    var racine = doc.getElementsByTagName("content")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        if (child.nodeName == "block") {
            $(child.attributes[0].nodeValue).innerHTML = child.firstChild.data;
        }
    }

    if (timer>0) {
        setTimeout("update_content('"+url+"', "+timer+")", timer);
    }

}


/**************************************/
/**************************************/
/**************************************/
function ajax_fieldvalue_exist_control(classname, field, value) {
    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", 'index.php?c=fieldvalue&class='+classname+'&field='+field+'&value='+value, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }
    var racine = doc.getElementsByTagName("response")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        if (child.nodeName == "code") {
            var code = child.firstChild.data;
        }
    }
    if (code == 0) {
        return true;
    }
    else if (code == 1) {
        return false;
    }
}

function check_text(value) {
    if (!trim(value).match(/.+/i)) {
        return false;
    }
    return true;
}

function check_format(format, value) {
    if (!trim(value).match(format)) {
        return false;
    }
    return true;
}

function check_select(field) {
    if ((field.options[field.options.selectedIndex].value != '') && (field.options[field.options.selectedIndex].value != 0)) {
        return true
    }
    return false;
}

function check_checkbox(field) {
    if (field.checked) {
        return true
    }
    return false;
}

function check_mult_checkbox(field, req) {
    var checked = 0;
    var elements = document.getElementsByName(field+'[]');
    for (var i=0; i<elements.length; i++) {
        if (elements[i].checked) {
            if (++checked>=req) {
                return true;
            }
        }
    }
    return false;
}

function check_image(value) {
    if (!trim(value).match(/(gif|jpeg|jpg|png$)|(^$)/i)) {
        return false;
    }
    return true;
}

function check_confirm(value1, value2) {
    if ((trim(value1)!='') && (value1 != value2)) {
        return false;
    }
    return true;
}

function select_all(field) {
    for(var i=0; i<field.options.length; i++) {
        field.options[i].selected=true;
    }
}

function checkForm() {
    var error = false;
    var error_str = 'Merci de corriger les champs suivants :\n';
    var CheckId;
    var formId;

    switch (arguments.length) {
        case 1 :
        CheckId = arguments[0];
        formId  = arguments[0];
        break;
        case 2 :
        formId = arguments[0];
        CheckId = arguments[1];
        break;
        default :
        exit;
        break;
    }

    with (document.forms[formId]) {
        switch (formId) {
            case 'connexion' : /* connexion d'un membre */
            var check_tab = new Array(
            new Array ('login','check_format', 'Vous avez mal saisi votre email', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array ('password','check_text', 'Mot de passe' )
            );
            var combos_tab = new Array();
            break;
            case 'formcontact' : /* connexion d'un membre */
            var check_tab = new Array(
            new Array ('contact_civilite', 'check_select', 'Civilité' ),
            new Array ('contact_nom','check_text', 'Nom' ),
            new Array ('contact_prenom','check_text', 'Prénom' ),
            new Array ('contact_telephone','check_text', 'téléphone' ),
            new Array ('contact_jour','check_mult_checkbox', 'Jours d\'appel', 1),
            new Array ('contact_heure1', 'check_select', 'Heure de début d\'appel' ),
            new Array ('contact_heure2', 'check_select', 'Heure de fin d\'appel' )
            );
            var combos_tab = new Array();
            break;
        }
        for (var i=0; i<check_tab.length; i++) {
            switch(check_tab[i][1]) {
                case 'ajax_fieldvalue_exist_control' :
                if (!ajax_fieldvalue_exist_control(check_tab[i][3], check_tab[i][4], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2].replace('{value}', elements[check_tab[i][0]].value)+'\n';
                }
                break;
                case 'check_text' :
                if (!check_text(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_format' :
                if (!check_format(check_tab[i][3], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_select' :
                if (!check_select(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_checkbox' :
                if (!check_checkbox(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_mult_checkbox' :
                if (!check_mult_checkbox(check_tab[i][0], check_tab[i][3])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_image' :
                if (!check_image(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_confirm' :
                if (!check_confirm(elements[check_tab[i][0]].value, elements[check_tab[i][0]+'_confirm'].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
            }
        }

        if(error) {
            showAlerte("alerte", error_str);
            return;
        }

        for(var i=0; i<combos_tab.length;i++) {
            select_all(elements[combos_tab[i]+'[]']);
        }

        document.forms[formId].submit();

    }
}

function openBlankLink() {
 var liens = jQuery('a.blank');
    for (var i = 0 ; i < liens.length ; i++)  {
        liens[i].onclick = function()  {
            window.open(this.href);
            return false;
        };
    }
}



jQuery(document).ready(function(){
    openBlankLink();
});
