/* fonction pour l'insertion des emoticones */
function smilies(smiley, id)
{
    var field = document.getElementById(id);
    field.focus();

    if (window.ActiveXObject) { // C'est IE
        var textRange = document.selection.createRange();
        var currentSelection = textRange.text;

        textRange.text = currentSelection + smiley;
        textRange.moveStart("character", -smiley.length - currentSelection.length);
        textRange.moveEnd("character", -smiley.length);
        textRange.select();
    } else { // Ce n'est pas IE
        var startSelection   = field.value.substring(0, field.selectionStart);
        var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
        var endSelection     = field.value.substring(field.selectionEnd);

        field.value = startSelection + currentSelection + smiley + endSelection;
        field.focus();
        field.setSelectionRange(startSelection.length , startSelection.length + currentSelection.length);
    }
}

/* fonction pour l'insertion des BBcodes */
function bbcodes(startTag, endTag, tagType, id) {
    var field = document.getElementById(id);
    var positionHaut = field.scrollTop;
    var positionGauche = field.scrollLeft;
    field.focus();

    /* === Partie 1 : on récupère la sélection === */
    if (window.ActiveXObject) {
        var textRange = document.selection.createRange();
        var currentSelection = textRange.text;
    } else {
        var startSelection   = field.value.substring(0, field.selectionStart);
        var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
        var endSelection     = field.value.substring(field.selectionEnd);
    }

    /* === Partie 2 : on analyse le tagType === */
    if (tagType) {
        switch (tagType) {
            case "lien":
                startTag = startTag.split(']');
                if (currentSelection) { // Il y a une sélection

                    if (currentSelection.indexOf("http://") != 0 && currentSelection.indexOf("https://") != 0 && currentSelection.indexOf("ftp://") != 0 && currentSelection.indexOf("www.") != 0) {
                        // La sélection n'est pas un lien, donc c'est le libelle. On demande alors l'URL
                        var URL = prompt("Quelle est l'url (http://) ?") || "";
                        if(URL && URL != "undefined"){
                            startTag = startTag[0] + "=" + URL + "]";
                        }
                        else{
                            startTag = startTag[0] + "]";
                        }
                    }
                    else{
                        startTag = startTag[0] + "]";
                    }
                } else { // Pas de sélection, donc on demande l'URL et le libelle
                    var URL = prompt("Quelle est l'url (http://) ?") || "";
                    var label = prompt("Quel est le libellé du lien ?") || "";
                    if(label && label != "undefined"){
                        startTag = startTag[0] + "=" + URL + "]";
                        currentSelection = label;
                    }
                    else{
                        startTag = startTag[0] + "]";
                        currentSelection = URL;
                    }
                }
            break;

            case "citation":
                startTag = startTag.split(']');
                var parametre = prompt("Quel est l'auteur de la citation ?") || "";

                if(parametre && parametre != "undefined"){
                    startTag = startTag[0] + "=" + parametre + "]";
                }
                else{
                    startTag = startTag[0] + "]";
                }
            break;

            case "image" :
                if (currentSelection) { // Il y a une sélection
                    if (currentSelection.indexOf("http://") != 0 && currentSelection.indexOf("https://") != 0 && currentSelection.indexOf("ftp://") != 0 && currentSelection.indexOf("www.") != 0) {
                        // La sélection n'est pas un lien. On demande alors l'URL
                        var URL = prompt("Quelle est l'url de l'image (http://) ?", currentSelection) || currentSelection;
                        currentSelection = URL;
                    }
                } else { // Pas de sélection, donc on demande l'URL
                    var URL = prompt("Quelle est l'url de l'image (http://) ?") || "";
                    currentSelection = URL;
                }

            break;


            case "couleur":
                startTag = startTag.split(']');
                var couleur = prompt("Quelle est la couleur (en hexa : #000000) ?") || "#000000";
                startTag = startTag[0] + "=" + couleur + "]";
            break;

            case "titre":
                startTag = startTag.split(']');
                var niveau = prompt("Quel est le niveau de titre (1, 2 ou 3) ?") || "1";
                startTag = startTag[0] + "=" + niveau + "]";
            break;

        }
    }

    /* === Partie 3 : on insère le tout === */
    if (window.ActiveXObject) {
        textRange.text = startTag + currentSelection + endTag;
        textRange.moveStart("character", -endTag.length - currentSelection.length);
        textRange.moveEnd("character", -endTag.length);
        textRange.select();
    } else {
        field.value = startSelection + startTag + currentSelection + endTag + endSelection;
        field.focus();
        field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
    }
    
    field.scrollTop = positionHaut;
    field.scrollLeft = positionGauche;
}

/* affiche la date actuelle en temps reel (avec gestion d'un decalage horaire) */
function affiche_date(id, decalage){
	
	var aujourdhui = new Date();
    var time_gmt = parseInt((decalage*1000)+(aujourdhui.getTimezoneOffset()*60000));
    var time = parseInt(aujourdhui.getTime()+time_gmt);

    aujourdhui.setTime(time);

    var jour = aujourdhui.getDate();
    var mois = aujourdhui.getMonth()+1;
    var annee = aujourdhui.getFullYear();
    var heure = aujourdhui.getHours();
    var min = aujourdhui.getMinutes();
    var sec = aujourdhui.getSeconds();

    heure = (heure < 10)? '0'+heure : heure;
    min = (min < 10)? '0'+min : min;
    sec = (sec < 10)? '0'+sec : sec;
    jour = (jour < 10)? '0'+jour : jour;
    mois = (mois < 10)? '0'+mois : mois;
    
    document.getElementById(id).innerHTML = jour+'/'+mois+'/'+annee+' '+heure+':'+min+':'+sec;
    
    setTimeout('affiche_date(\''+id+'\','+decalage+')', 500);
}

/* compte les jours, heures, minutes et secondes depuis une date */
function compte(date, id){
	var cible = new Date(date);
    var time = parseInt(cible.getTime() / 1000);
    
    var aujourdhui = new Date();
    var now = parseInt(aujourdhui.getTime() / 1000);
    
	var restant = now - time;
    
	var jours = parseInt((restant / (60 * 60 * 24)), 10);
	var  heures = parseInt((restant / (60 * 60) - (jours * 24)), 10);
	var minutes = parseInt((restant / 60 - (jours * 24 * 60) - (heures * 60)), 10);
	var secondes = parseInt((restant - (jours * 24 * 60 * 60) - (heures * 60 * 60) - (minutes * 60)), 10);
    
    heures = (heures < 10)? '0'+heures : heures;
    minutes = (minutes < 10)? '0'+minutes : minutes;
    secondes = (secondes < 10)? '0'+secondes : secondes;
    
    document.getElementById(id).innerHTML = jours+' jours '+heures+':'+minutes+':'+secondes;
    
    if (now > time)
        setTimeout('compte(\''+date+'\',\''+id+'\')', 500);
    else
    {
        document.getElementById(id).innerHTML = '0 jours 00:00:00';
    }
}

/* decompte les jours, heures, minutes et secondes jusqu'a une date */
function decompte(date, id)
{
    var cible = new Date(date);
    var time = parseInt(cible.getTime() / 1000);
    
    var aujourdhui = new Date();
    var now = parseInt(aujourdhui.getTime() / 1000);
    var restant = time - now;
    
    var jours = parseInt((restant / (60 * 60 * 24)), 10);
    var heures = parseInt((restant / (60 * 60) - (jours * 24)), 10);
    var minutes = parseInt((restant / 60 - (jours * 24 * 60) - (heures * 60)), 10);
    var secondes = parseInt((restant - (jours * 24 * 60 * 60) - (heures * 60 * 60) - (minutes * 60)), 10);
    
    heures = (heures < 10)? '0'+heures : heures;
    minutes = (minutes < 10)? '0'+minutes : minutes;
    secondes = (secondes < 10)? '0'+secondes : secondes;
    
    document.getElementById(id).innerHTML = jours+' jours '+heures+':'+minutes+':'+secondes;
    
    if (now < time)
        setTimeout('decompte(\''+date+'\',\''+id+'\')', 500);
    else
    {
        document.getElementById(id).innerHTML = '0 jours 00:00:00';
    }
}
