function preloadImages() {
  var d=document; if(d.images){ if(!d.tab_p) d.tab_p=new Array();
    var i,j=d.tab_p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.tab_p[j]=new Image; d.tab_p[j++].src=a[i];}}
}


/************************* AJAX *******************************/

// Nettoie les caracteres speciaux des chaines passees en parametres dans une requete Ajax
function cleanParam(pValue)
{
    var rOut = pValue;
    rOut = rOut.replace(new RegExp("\\?","g"),"%3F");
    rOut = rOut.replace(new RegExp("\\+","g"),"%2B");
    rOut = rOut.replace(new RegExp("\\+","g"),"%26");
    return rOut;
}

// Tente d'envoyer une e-mail via une requete Ajax et renvoie une boite de dialogue javascript+ajax pour le resultat
function jsSendMail(pUrl, pParams, pForm, pContext, pRedirect) {
    var rOut = false;
    var eval;
    var context;
    var redirect;
    redirect = pRedirect || false;
    context = (pContext) ? '?format='+pContext : '';
    var myAjax = new Ajax.Request (
    pUrl + context,
    {
        method: "post",
        evalScripts: true,
        //parameters : pParams,
        parameters : pForm.serialize(true),
        onLoading : function ()
        {
            new LoadingIndicator.base(
            {
                pic:'ajax-loading.gif'
            }
            );
        },
        onComplete: function transResult (response)
        {
             LoadingIndicator.hideAll();
             if (!pRedirect)
             {
                 if (response.responseText == 'OK')
                 {
                   new Mbox.base('mboxContainer',
                   {
                        externalControl : 'mboxFooterButton',
                        title:'Confirmation de l\'envoi du message...',
                        message:'Votre message a &eacute;t&eacute; envoy&eacute; avec succ&egrave;s !',
                        width:280,
                        icon:'confirm'
                            });
                            pForm.reset();
                        }
                        else
                        {
                            var error = response.responseText;
                            new Mbox.base('mboxContainer',
                            {
                                    externalControl : 'mboxFooterButton',
                                    title:'Erreur d\'envoi',
                                    message:error,
                                    width:280,
                                    icon:'warning'
                            });
                            rOut = false;
                        }
              }
              else
              {
                top.location.replace(response.responseText);
              }
            }
     }
     );
  return rOut;
}

function flashSendMail() {
    new BDAjaxWindow.base(baseUrl + 'xml-request/get-view-formation', '', {width:'700px', height:'750px', isModal:true, showLoading:true, effectDuration:0.3, externalControl:['formation2009-cancel-button']});
}

function sendMailDecouverte1() {
    new BDAjaxWindow.base(baseUrl + 'xml-request/get-view-decouverte1', '', {width:'700px', height:'700px', isModal:true, showLoading:true, effectDuration:0.3, externalControl:['ax-cancel-button']});
}

function sendMailDecouverte112009() {
    new BDAjaxWindow.base(baseUrl + 'xml-request/get-view-decouverte112009', '', {width:'700px', height:'830px', isModal:true, showLoading:true, effectDuration:0.3, externalControl:['ax-cancel-button']});
}

function sendMailDecouverte032010() {
    new BDAjaxWindow.base(baseUrl + 'xml-request/get-view-decouverte032010', '', {width:'700px', height:'830px', isModal:true, showLoading:true, effectDuration:0.3, externalControl:['ax-cancel-button']});
}

function sendMailRevenusfonciers2009() {
    new BDAjaxWindow.base(baseUrl + 'xml-request/get-view-revenusfonciers2009', '', {width:'700px', height:'830px', isModal:true, showLoading:true, effectDuration:0.3, externalControl:['ax-cancel-button']});
}


//Tente d'envoyer une e-mail via une requete Ajax et renvoie une boite de dialogue javascript+ajax pour le resultat
function jsSendMail2(pUrl, pForm, pContext, pRedirect) {
    var eval;
    var context = '';
    var redirect;
    redirect = pRedirect || false;
    context = (pContext) ? '?format='+pContext : '';
    var myAjax = new Ajax.Request (
    pUrl + context,
    {
        method: 'post',
        evalScripts: true,
        parameters : pForm.serialize(true),
        onLoading : function () {
            new BDLoadingIndicator.base({pic:'ajax-loading.gif'});
        },
        onComplete: function transResult (response) {
            BDLoadingIndicator.hideAll();
            var TextResponse = response.responseText;
            var JSONResponse = JSON.parse(TextResponse);
            if (JSONResponse.success) {
                new BDMessageBox.base({
                    title:JSONResponse.title,
                    message:JSONResponse.msg,
                    width:280,
                    icon:'confirm',
                    effectDuration:0.2,
                    closeAction: function() { pForm.reset(); BDAjaxWindow.hideAll(); }
                });
            }
            else {
                new BDMessageBox.base({
                    title:JSONResponse.title,
                    message:JSONResponse.msg,
                    width:280,
                    icon:'warning',
                    effectDuration:0.2
                });
            }
        }
     }
  );
  return false;
}


/**
 * utilisé dans revenus fonciers 2009
 * @param _price : price de chaque item
 * @param _number : nombre d'item
 * @return
 */
function updateTotalPrice(_number, _price) {
    var sum = 0;
    if (isNaN(parseInt(_number)) === false) {
        sum = parseInt(_price) * parseInt(_number);
    }
    $('price').innerHTML = '' + sum +' &euro;';
    return true;
}

/************************* FORMULAIRES *******************************/

// Fixe la longueur maximale d'un textarea
function textareaMaxLength(pObject, pMaxLen)
{
    //pObject.value = pObject.value.slice(0,(pMaxLen-1));
}

// Liee a textareaMaxLength, cette fonction indique dans un objet HTML donne, le nombre de caracteres restants.
function majNbCarac(pInput,pMax,pDisplayObj)    {
    /*var nbCarac = $(pInput).value.length;
    var pluriel = ((pMax - nbCarac) <= 1) ? '' : 's';
    $(pDisplayObj).innerHTML = '('+(pMax - nbCarac)+' caract&egrave;re'+pluriel+' restant'+pluriel+')';*/
}

// Verifie qu'une chaine ne contient pas que des espaces
function isValidString(pString) {
    var r = true;
    var mString = pString.replace(new RegExp(' ','g'),'');
    return (mString.length > 0);
}


function validateSubmit(pForm,pScript) {
  var mForm = $(pForm);
    var errors = new Array();
    var message = "";

    for(i=0; i<(mForm.length); i++) {
        if ((typeof(mForm[i].alt)!='undefined')&&(mForm[i].alt!='')&&(!isValidString(mForm[i].value))) {
            errors.push('<strong>'+mForm[i].alt+'</strong>');
        }
    }

    // On verifie s'il y a des erreurs
    if (errors.length > 0) {
        message+='Le(s) champs suivant(s) n\'ont pas &eacute;t&eacute; renseign&eacute;(s) correctement :';
        for(var i=0;i < errors.length;i++) {
            message+="<br />&nbsp;&nbsp;&nbsp;-&nbsp;"+errors[i];
        }
        message+='<br /><br />';
        new Mbox.base('mboxContainer',{
                externalControl : 'mboxFooterButton',
                title:'Attention',
                message:message,
                width:280,
                icon:'warning'
        });
    }
    else {
        var mUrl = pScript;
      jsSendMail(mUrl, "", mForm);
    }
}

function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;
