/*
var Ajax;
if (Ajax && (Ajax != null)) {
	Ajax.Responders.register({
	  onCreate: function() {
        if($('spinner') && Ajax.activeRequestCount>0)
          Effect.Appear('spinner',{duration:0.5,queue:'end'});
	  },
	  onComplete: function() {
        if($('spinner') && Ajax.activeRequestCount==0)
          Effect.Fade('spinner',{duration:0.5,queue:'end'});
	  }
	});
}
*/
var RACINE = '';

function popup( url, taille, option, name){
    var popUp;
    var sO='';

    for(var i=0;option.charAt(i)!=0;i++){
        switch(option.charAt(i)){
            case "l":sO=sO+"location=yes,"; break;
            case "d":sO=sO+"directories=yes,"; break;
            case "s":sO=sO+"status=yes,"; break;
            case "t":sO=sO+"toolbar=yes,"; break;
            case "m":sO=sO+"menubar=yes,"; break;
            case "a":sO=sO+"scrollbars=yes,"; break; // ascenseur
            case "r":sO=sO+"resizable=yes,"; break;
            case "p":sO=sO+"personalbar=yes,"; break;
            default:
        }
    }

    for( var t in taille){
        sO += t + "=" + taille[t] +",";
    }
    if (sO != '') sO = sO.substring(0,sO.length);

    popUp = open(url, (name ? name : 'popUpWin'), sO);
    popUp.focus();
    return popUp;
}

/**
 * Help on a form's field
 */

function FormFieldHelper( elementId, elementMessageId, message, callbackFocus, callbackBlur ) {
    this.elementId = elementId;
    this.elementMessageId = elementMessageId;
    this.message = message;
    this.callbackFocus = callbackFocus;
    this.callbackBlur = callbackBlur;
}

FormFieldHelper.prototype.addHelperHandler = function() {
    YAHOO.util.Event.addListener(this.elementId, "focus", this.callbackFocus, this);
    YAHOO.util.Event.addListener(this.elementId, "mouseover", this.callbackFocus, this);
    YAHOO.util.Event.addListener(this.elementId, "blur", this.callbackBlur, this);
    YAHOO.util.Event.addListener(this.elementId, "mouseout", this.callbackBlur, this);
};

function fnCallbackFocus( e, obj ){
    // the execution context is the html element ("myelementid")
    var elMsg = YAHOO.util.Dom.get(obj.elementMessageId);
    elMsg.innerHTML = obj.message;
    YAHOO.util.Dom.setStyle( elMsg, 'visibility', 'visible' );
    YAHOO.util.Dom.setY( elMsg, YAHOO.util.Dom.getY( this ) );
    //alert(this.id + " click event: " + obj.customProp);
}

function fnCallbackBlur(e, obj) {
    // the execution context is the custom object
    var elMsg = YAHOO.util.Dom.get(obj.elementMessageId);
    elMsg.innerHTML = '';
    YAHOO.util.Dom.setStyle( elMsg, 'visibility', 'hidden' );
}

function aiShow( id ){
    if ( YAHOO.util.Dom.inDocument( id ) ){
        YAHOO.util.Dom.setStyle(id, 'display', 'block' );        
    }
}
function aiHide( id ){
    if ( YAHOO.util.Dom.inDocument( id ) ){
        YAHOO.util.Dom.setStyle(id, 'display', 'none' );        
    }
}
function aiToggle( id ){
    if ( YAHOO.util.Dom.inDocument( id ) ){
        var isVisible = YAHOO.util.Dom.getStyle(id, 'display' );
        YAHOO.util.Dom.setStyle(id, 'display', (isVisible == 'none') ? 'block' : 'none' );
        var elImg = YAHOO.util.Dom.get('imgToggle-' + id);
        elImg.src = ( isVisible == 'none' ) ? elImg.src.replace( "off.gif", "on.gif") : elImg.src.replace( "on.gif", "off.gif") ;
    }
}


// Défiscalisation
function afficherInfo(idBalise, texte)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        balise.innerHTML = texte;
    }
}
function effacerInfo(idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        balise.innerHTML = "";
    }
}
function verifCodePostal(idBaliseErreur, idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        var reg = new RegExp("^[0-9]{5}$", "g");
        if(reg.test(balise.value))
        {
            effacerInfo(idBaliseErreur);
            return true;
        }
        else
        {
            afficherInfo(idBaliseErreur, 'Le code postal doit être constitué de 5 chiffres');
            return false;
        }
    }
}
function verifEmail(idBaliseErreur, idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        var reg = new RegExp("^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$", "g");
        if(reg.test(balise.value))
        {
            effacerInfo(idBaliseErreur);
            return true;
        }
        else
        {
            afficherInfo(idBaliseErreur, 'Votre adresse courriel n\'est pas valide.');
            return false;
        }
    }
}
function verifAnnee(idBaliseErreur, idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        var reg = new RegExp("^[0-9]{4}$", "g");
        if(reg.test(balise.value))
        {
            effacerInfo(idBaliseErreur);
            return true;
        }
        else
        {
            afficherInfo(idBaliseErreur, 'Année de naissance complète.');
            return false;
        }
    }
}
function verifRevenus(idBaliseErreur, idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        var reg = new RegExp("^[0-9]{3,}(\\.[0-9]{1,2})?$", "g"); 
        if(reg.test(balise.value))
        {
            effacerInfo(idBaliseErreur);
            return true;
        }
        else
        {
            afficherInfo(idBaliseErreur, 'Votre revenu mensuel net doit comporter au moins 3 chiffres.');
            return false;
        }
    }
}
function verifNotBlank(idBaliseErreur, idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise)
    {
        if (balise.value != "")
        {
            effacerInfo(idBaliseErreur);
            return true;
        }
        else
        {
            afficherInfo(idBaliseErreur, 'Ce champ est obligatoire.');
            return false;
        }
    }
}
function verifForm()
{
    var ok = true;
    if (false){
        if (verifAnnee('erreurAnneeNaissance', 'anneeNaissance') == false) ok=false;
        if (verifRevenus('erreurRevenuMensuelNet', 'revenuMensuelNet') == false) ok=false;
        if (verifNotBlank('erreurNom', 'nom') == false) ok=false;
        if (verifNotBlank('erreurPrenom', 'prenom') == false) ok=false;
        if (verifCodePostal('erreurCodePostal', 'codePostal') == false) ok=false;
        if (verifNotBlank('erreurVille', 'ville') == false) ok=false;
        if (verifNotBlank('erreurTel1', 'tel1') == false) ok=false;
        if (verifEmail('erreurEmail', 'email') == false) ok=false;
    }
    return ok;
}

// Cart
function createXhr()
{
    var xhr;
    if (window.XMLHttpRequest)
        xhr = new XMLHttpRequest();
    else if (window.ActiveXObject)
    {
        try
        { // essaie de charger l'objet pour IE
            xhr = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            try
            {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e)
            {
                alert("Votre navigateur ne prend pas en charge l'objet XMLHTTPRequest.");
            }
        }
    }

    return xhr;
}
function addToCart(url)
{
    var xhr = createXhr();

    if (xhr)
    {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200)
                alert(xhr.responseText);
        }

        xhr.open('get', url);
        xhr.send(null);
    }
}
function removeFromCart(url)
{
    var xhr = createXhr();

    if (xhr)
    {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200)
                alert(xhr.responseText);
        }

        xhr.open('get', url);
        xhr.send(null);
    }
}
function showCart(url)
{
    var xhr = createXhr();

    if (xhr)
    {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200)
            {
                var element = document.getElementById('cartContent');
                if (element)
                        element.innerHTML = xhr.responseText;
                else
                    alert('Erreur : balise cartContent non trouvée.');
            }
        }

        xhr.open('get', url);
        xhr.send(null);
    }
}

// Alerte mail pour la recherche d'annonces
function addMailAlert(url, idZoneMessage, idForm)
{
    var xhr = createXhr();
    var zoneMessage = document.getElementById(idZoneMessage);
    var form = document.forms[idForm];
    if (!form) return;

    if (xhr)
    {
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4)
            {
                if (zoneMessage) zoneMessage.style.display = "block";
                if (xhr.status == 200) {
                    if (zoneMessage) zoneMessage.innerHTML = xhr.responseText;
                }
                else
                    if (zoneMessage) zoneMessage.innerHTML = "Une erreur est survenue.";
            }
        }

        xhr.open('get', url+'?'+'email=' + form.email.value + '&path=' + form.path.value);
        xhr.send(null);
    }
}
function deleteDemoEmail(idBalise)
{
    var balise = document.getElementById(idBalise);
    if (balise && balise.value == "... @ ...")
        balise.value = '';
}

// Caractéristiques
function testerFormatCaracteristique(expression, valeur)
{
    if (valeur != null && valeur != "")
    {
        var reg = new RegExp("^"+expression+"$", "g");
        if(!reg.test(valeur))
            alert("La valeur de cette caractéristique n'est pas correcte.");
    }
}

// Taux de change
function changerDevise()
{
    var selectDevises = document.getElementById('devises');
    var deviseSelectionnee = selectDevises.options[selectDevises.selectedIndex].value;

    setCookie("devise", deviseSelectionnee, 365);

    changerAffichagePrix(deviseSelectionnee);
}
function changerAffichagePrix(devise)
{
    if (devise == 'EUR')
        document.getElementById('tauxApplique').innerHTML = "";
    else
        document.getElementById('tauxApplique').innerHTML = "<span style='font-size: 9px'>&nbsp;1 &euro; = <br />"+ tabDevises[devise] + "&nbsp;" + tabSymbolesDevises[devise] + "</span>";
    
    var balisesPrix = YAHOO.util.Dom.getElementsByClassName('price');

    for (var i=0 ; i < balisesPrix.length ; i++)
    {
        //var prix = tabDevises[devise] * balisesPrix[i].getAttribute('alt');
        var prix = balisesPrix[i].getAttribute('alt');
        //alert( prix );
        prix = tabDevises[devise] * parseFloat(prix);
        //alert( prix );
        balisesPrix[i].innerHTML = formatPrice(prix, "&nbsp;") + " " + tabSymbolesDevises[devise];
    }
}
function formatPrice(price, separateur)
{
    price = Math.round(price);
    var sPrice = '' + price;
    var len = sPrice.length-1;
    var newPrice = '';

    while (len >= 0)
    {
        if ( (sPrice.length-1 - len) % 3 == 0 && len != sPrice.length-1)
            newPrice = separateur + newPrice;
        newPrice = sPrice.substring( len, len + 1) + newPrice;
        len--;
    }
    
    return newPrice;
}
function checkDeviseCookie()
{
    var devise = getCookie("devise");
    var listeDevises = document.getElementById('devises').options;

    if (devise)
    {
        for (i=0 ; i < listeDevises.length ; i++)
        {
            if (listeDevises[i].value == devise)
            {
                listeDevises[i].selected= true;
                changerAffichagePrix(devise);
                break;
            }
        }
    }
    else
        listeDevises[0].selected = true;    
}

// Fonctions de http://www.asp-php.net/tutorial/scripting/cookies.php
function setCookie(nom, valeur, nbJours)
{
    var date = new Date()
    date.setTime(date.getTime() + (nbJours * 24 * 3600 * 1000));
    document.cookie = nom + "=" + escape(valeur) + ";expires=" + date.toGMTString() + ";path=/";
}
 function getCookie(nom)
 {
    var deb = document.cookie.indexOf(nom + "=")

    if (deb >= 0)
    {
        deb += nom.length + 1;
        var fin = document.cookie.indexOf(";",deb);
        if (fin < 0)
            fin = document.cookie.length;
        return unescape(document.cookie.substring(deb, fin));
    }
    return "";
}

// Création d'annonces
function displayMontantRemise(urlLink, id_abonnement)
{
    if (document.getElementById('codePromo').value != "")
    {
        document.getElementById('spinner').style.visibility = "visible";
        var url = urlLink + "/" + document.getElementById('codePromo').value;
        if (id_abonnement)
            url += "/" + id_abonnement;
        
        YAHOO.util.Connect.asyncRequest(
            'GET',
            url,
            {
                success:succesRemise,
                failure:echecRemise
            }
        );
    }
    else
    {
        document.getElementById('montantRemise').innerHTML = "";
        displayPrixTotal();
    }
}

function succesRemise(o)
{
    document.getElementById('spinner').style.visibility = "hidden";
    var reponse = o.responseText;

    document.getElementById('montantRemise').innerHTML = reponse;
    if (!isNaN(reponse))
        document.getElementById('montantRemise').innerHTML += " &euro;";

    displayPrixTotal();
}
function echecRemise(o)
{
    document.getElementById('spinner').style.visibility = "hidden";
    document.getElementById('montantRemise').innerHTML = "Une erreur s'est produite lors de la récupération du montant de la remise.";
}

function refreshOffres(idTypeBien)
{
    if (tabOffres)
    {
        monSelect = document.getElementById("offre_id");
        monSelect.options.length = 0;

        for (i=0 ; i < tabOffres.length ; i++)
            if (tabOffres[i]["typesBien"].indexOf(idTypeBien + ' ') != -1)
                monSelect.options[monSelect.length] = new Option(tabOffres[i]["offre_descr"], tabOffres[i]["offre_id"]);

        if (monSelect.options.length == 0)
        {
            option = new Option("Il n'y a aucune offre", -1);
            option.selected = "selected";
            option.disabled = "disabled";
            monSelect.options[monSelect.length] = option;
        }
    }
}

function selectOffre(id_offre)
{
    monSelect = document.getElementById("offre_id");
    for (i=0 ; i < monSelect.options.length ; i++)
        if (monSelect.options[i].value == id_offre)
            monSelect.options[i].selected = "selected";
}

function displayPrixTotal()
{
    if (tabOffres)
    {
        var monSelect = document.getElementById("offre_id");
        var offre_id = monSelect.options[monSelect.selectedIndex].value;
        var montantTotal = 0;

        for(i=0 ; i < tabOffres.length ; i++)
            if (tabOffres[i]["offre_id"] == offre_id)
            {
                montantTotal += parseFloat(tabOffres[i]["montant"]);
                break;
            }
        
        if (montantTotal > 0)
        {
            var elRemise = document.getElementById('montantRemise');
            var montantRemise = 0;
            if (elRemise) {
                montantRemise = elRemise.innerHTML;
                if (montantRemise.indexOf(' €') != -1) {
                    montantRemise = montantRemise.replace(" €", "");
                    if (!isNaN(montantRemise) && montantRemise != "") {
                        montantTotal -= parseFloat(montantRemise);
                        if (montantTotal < 0)
                            montantTotal = 0.00;
                    }
                } else {
                    montantRemise = montantRemise.replace(" %", "");
                    if (!isNaN(montantRemise) && montantRemise != "") {
                        //montantRemise = parseFloat(montantRemise) * montantTotal / 100;
                        montantTotal -= Math.round( parseFloat(montantRemise) * montantTotal ) / 100;
                        if (montantTotal < 0)
                            montantTotal = 0.00;
                    }
                }
            }


        }

        document.getElementById('prixTotal').innerHTML = montantTotal + " &euro;";
    }
}

function verifConfirmEmail(idEmail, idReemail)
{
    if (!idEmail) idEmail = 'email';
    if (!idReemail) idReemail = 'reemail';

    var email = document.getElementById(idEmail);
    var confirmEmail = document.getElementById(idReemail);

    if (email && confirmEmail)
    {
        email = email.value;
        confirmEmail = confirmEmail.value;
        if (email == confirmEmail)
            return true;
        alert("La confirmation de l'email n'est pas valide.");
    }
    return false;
}

function displayForms(idSelect, idForms, total)
{
    var select = document.getElementById(idSelect);
    var nbAgences = parseInt(select.options[select.selectedIndex].value);
    
    if (select.options[select.selectedIndex].value == '')
    {
        select.selectedIndex = 1;
        nbAgences = 1;
    }
    for (var i=0 ; i < nbAgences ; i++)
        document.getElementById(idForms+i).style.display = "block";

    for (var i=nbAgences ; i < total ; i++)
        document.getElementById(idForms+i).style.display = "none";

    document.getElementById("boutonValidation").style.display = "block"; 
}

// Pour le formulaire de création d'agences
function selectNumber(idSelect, nb)
{
    var select = document.getElementById(idSelect);
    select.selectedIndex = nb;
}

function keygen(plength){
    var keylist="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    var temp=''

    for (i=0;i<plength;i++)
        temp+=keylist.charAt(Math.floor(Math.random()*keylist.length))
    return temp
}
