function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

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

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

function setFocus() {
   field = document.getElementById('field_focus')
   if (field) {
      field.focus();
   }
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function autoOpen(link) {
	h = 400; w = 700; t = 50; l = 50;
	x=window.open(link.href, 'popup', 'height='+h+', width='+w+', top='+t+', left='+l+', resizable=yes, status=yes');
	x.focus();
}

// permet de ne déclencher l action que sur la touche Enter
function ouvreKeypress(KeyPressEvenement, url) {
    if(KeyPressEvenement.keyCode==13) {
        ouvre(url);
        return false;
    }
    return true;
}
function ouvre(pageok) {
	if (!pageok) {
		pageok = this.href;
	}
    x=window.open(pageok,"zoom",'width=583,height=450,top=5,left=5,toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,left=0,top=0');
    x.focus();
}

function ouvre_photo(pageok,titre,l,h) {
    x=window.open(pageok,"zoom",'width='+l+',height='+h+',top=5,left=5,toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,left=0,top=0');
    x.focus();
}


function ouvre_blank(pageok) {
	if (!pageok) {
		pageok = this.href;
	}
    x=window.open(pageok,"_blank",'width=800, height=600, top=0, left=0,toolbar=yes,location=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes');
    x.focus();
}

// permet de ne déclencher l action que sur la touche Enter
function ouvre2Keypress(KeyPressEvenement, url) {
    if(KeyPressEvenement.keyCode==13) {
        ouvre2(url);
        return false;
    }
    return true;
}
function ouvre2(pageok, id) {
	if (!pageok) {
		pageok = this.href;
	}
    x=window.open(pageok, id,'width=583,height=450,toolbar=no,location=no,status=no,menubar=yes,scrollbars=yes,resizable=yes,left=20,top=20');
    x.focus();
}

// permet de ne déclencher l action que sur la touche Enter
function ouvre_imageKeypress(KeyPressEvenement, image, titre, l, h) {
    if(KeyPressEvenement.keyCode==13) {
        ouvre(image,titre,l,h);
        return false;
    }
    return true;
}
function ouvre_image(image,titre,l,h) {
    if (titre=="") {
          titre="Zoom";
    }
    w = window.open(titre,'zoom_image','toolbar=no,location=no,directories=no,menubar=yes,scrollbars=auto,resizable=yes,copyhistory=no,width='+l+',height='+h+',left=0,top=0');
    w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
    w.document.write("<BODY leftMargin=0 topMargin=0 marginwidth=0 marginheight=0><IMG src='"+image+"' border=0></body>");
    w.document.write("</HTML>");
    w.document.close();
}

// permet de ne déclencher l action que sur la touche Enter
function cartoKeypress(KeyPressEvenement, url) {
    if(KeyPressEvenement.keyCode==13) {
        carto(url);
        return false;
    }
    return true;
}
function carto(url) {
    x=window.open(url,"carto","toolbar=no,location=no,status=no,directories=no,menubar=yes,scrollbars=no,resizable=no,copyhistory=no,width=550,height=500,left=50,top=50");
    x.focus();
}


function deroule(x, h, l) {
	if (typeof(x)=='string') {
		x = MM_findObj(x);
	}
	x.style.zIndex=4;
	x.style.height=h;
	x.style.visibility='visible';
	if (l) {
	    x.style.width=l;
	}
}



function enroule(x,h, l) {
	if (typeof(x)=='string') {
		x = MM_findObj(x);
	}
	x.style.zIndex=1;
	x.style.height=h;
	if (l) {
	    x.style.width=l;
	}
}

function roArrdt(a) {
	MM_findObj('vdlcarte').src='/static/vdl/images/a'+a+'.gif'
}

function reArrdt() {
	MM_findObj('vdlcarte').src='/static/vdl/images/carte.gif'
}

//fonction de controle en fonction des types de champs

var lastFocus = null;

function controle(formulaire,champ,format,mini,maxi) {
var  ok = 0;
var  RE="";
// N : numérique
if ( format == "N" ) { RE = /^\d+$/;}
// CP : code postal français (5 chiffres)
if ( format == "CPT" ) { RE = /^\d{5}$/;}
//TEL  : telephone et telecopie
if ( format == "TEL" ) { RE = /^\d{10}$/;}
// EMAIL : email
if ( format == "EMAIL" ) { RE = /^[A-Za-z0-9\.\-_]+[@][A-Za-z0-9\-\.]+[\.][A-Za-z][A-Za-z][A-Za-z]?$/;}
var controle = eval('document.' + formulaire + '.' + champ);
message = '';
if (controle.value.length > 0) {
if (!RE.test(controle.value))
{
message = message+'Votre saisie est incorrecte.\n';
ok = 1; }}
if ( mini != 0 ) {
if (controle.value.length < mini ) {
message = message+'Vous devez saisir au moins ' + mini + ' caracteres.\n';
ok = 1;}
if ( maxi != 0 )
{
if (controle.value.length > maxi )
{
message = message+'Vous ne devez pas saisir plus de ' + maxi + ' caracteres.\n';
ok = 1;}}
if ( ok == 1 ) {
alert(message);
lastFocus = controle;
}}}


function getFocus() {
	if (lastFocus) {
		lastFocus.focus();
		lastFocus.select();
		lastFocus = null;
	}
}

// permet de ne déclencher l action que sur la touche Enter
function AjoutFavorisKeypress(KeyPressEvenement, theURL, theTITLE) {
    if(KeyPressEvenement.keyCode==13) {
      window.external.AddFavorite(theURL, theTITLE);
    }
}
function AjoutFavoris(theURL, theTITLE) {
  window.external.AddFavorite(theURL, theTITLE);
}


//Fonction spÃ©cifique Plan Interactif Ville
function ouvrir_mappy(liste_trouvee) {
  map_way = liste_trouvee.options[liste_trouvee.selectedIndex].value;
  iframe_rafraichir('plan_mappy', map_way);
}

function iframe_rafraichir(iframe_id, lien, rafraichir) {
  if (rafraichir != '') {
    parent.document.getElementById(iframe_id).src = lien;
  }
}

htmlareapopup = false;

function roll_over(x) {
  x.src=x.src.replace('off','over')
}

function roll_off(x) {
  x.src=x.src.replace('over','off')
}

// Pour menu
var to;
var currentMenu;
currentMenu="";
function montre(id) {
	clearTimeout(to);
	if (id=='') {
		tempo=500;
	}
	else {
		tempo=100;
	}
	to = setTimeout("immediateMontre(\""+id+"\")",tempo);
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function immediateMontre(id) {
	if (id!=currentMenu) {
		var d = document.getElementById(id);
		if (currentMenu!="") {
			document.getElementById(currentMenu).style.display='none';
		}
		if (d) {
			d.style.display='block';
			divmenu = document.getElementById('menu');
			x = findPosX(divmenu)+divmenu.offsetWidth - (d.offsetLeft+d.offsetWidth);
			if (x<=0) {
				var m = document.getElementById(id+'_title');
				left = findPosX(m) + m.offsetWidth - d.offsetWidth +1;
				d.style.left=left+'px';
			}
		}
		currentMenu=id;
	}
}

// permet de ne déclencher l action que sur la touche Enter
function locationKeypress(KeyPressEvenement, urlToOpen) {
    if(KeyPressEvenement.keyCode==13) {
        location.href = urlToOpen;
        return false;
    }
    return true;
}
function closeKeypress(KeyPressEvenement) {
    if(KeyPressEvenement.keyCode==13) {
        window.close();
    }
}
function printKeypress(KeyPressEvenement) {
    if(KeyPressEvenement.keyCode==13) {
        window.print();
    }
}



// Main nav
var timeout;
var delay = 500;
var nbsubmenu = 0;


function init(){
    while (document.getElementById('submenuHN'+nbsubmenu))
	nbsubmenu++;
}

function show_horizonNav(id) {
    cancelHide();
    hideNav();
    if (document.getElementById(id))
	document.getElementById(id).style.display="block";
}

function hideDelay() {
    timeout = setTimeout('hideNav()',delay);
}
function cancelHide() {
    if (timeout) {
	clearTimeout(timeout);
    }
}
function hideNav() {
    for(i=0;i<=nbsubmenu;i++) {
	if (document.getElementById("submenuHN"+i))
	    document.getElementById("submenuHN"+i).style.display="none";
    }
}


// Rollover function
function swapBgImage(image, id, position){
	obj=document.getElementById(id);
	obj.style.background="url("+image+") no-repeat "+position;
}


// Browser functions

var windowsOptions = 'toolbar=1, scrollbars=1, location=0, statusbar=0, menubar=0, resizable=1, dependent=1';

function openMediaBrowser(mediatheque_url, input_id){
    var url = mediatheque_url + '?input_id=' + input_id;
    browser_window = window.open(url, 'ImageBrowser', windowsOptions + ',width=700,height=500');
    if (!browser_window.opener) browser_window.opener = window;
    browser_window.focus();
}


function openLinkBrowser(base_url, input_id) {
    var url = 'assistant_liens?BASEURL=' + base_url + '&block_id=' + input_id;
    browser = window.open(url, 'LinkBrowser', windowsOptions + ',width=900,height=550');
    if (!browser_window.opener) browser_window.opener = window;
    browser.focus();
}

  function ouvre(pageok) {
    x=window.open(pageok,"zoom",'width=700,height=550,top=5,left=5,resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,left=0,top=0');
    x.focus();
  }

  function ouvre_blank(pageok) {
    x=window.open(pageok,"_blank",'width=700, height=550, top=5, left=5,resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,location=yes, status=yes,left=0,top=0');
    x.focus();
  }



function PopupImage(img) {
titre="Popup";
w=open("",'image','width=400,height=400,toolbar=no,scrollbars=no,resizable=no');
w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>");
w.document.write("<SCRIPT language=javascript>function checksize() { if (document.images[0].complete) { window.resizeTo(document.images[0].width+10,document.images[0].height+45); window.focus();} else { setTimeout('checksize()',250) } }</"+"SCRIPT>");
w.document.write("<BODY onload='checksize()' onblur='window.close()' onclick='window.close()' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0>");
w.document.write("<TABLE width='100%' border='0' cellspacing='0' cellpadding='0' height='100%'><TR>");
w.document.write("<TD valign='middle' align='center'><IMG src='"+img+"' border=0 alt=''>");
w.document.write("</TD></TR></TABLE>");
w.document.write("</BODY></HTML>");
w.document.close();
}


pad = function(int) {
      return int=(int<10)?"0"+int:int
}


function buildCal(m, y, cM, cH, cDW, cD, brdr, lang, root_section_url, over_day){
    var mn_en=['January','February','March','April','May','June','July','August','September','October','November','December'];
    var mn_fr=['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Decembre'];
    var previous_month_fr = 'Voir le calendrier du mois précédent'
    var next_month_fr = 'Voir le calendrier du mois suivant'
    var see_events_fr = 'Voir les événements du '
    var previous_month_en = 'See the previous month calendar'
    var next_month_en = 'See the next month calendar'
    var see_events_en = 'See events of the '
    var mn = mn_fr
    var previous_month = previous_month_fr
    var next_month =  next_month_fr
    var see_events =  see_events_fr
    var dim=[31,0,31,30,31,30,31,31,30,31,30,31];
    var day = "LMMJVSD"

    if(lang == 'en'){
        mn = mn_en
        day = "MTWTFSS"
        previous_month = previous_month_en
        next_month =  next_month_en
        see_events =  see_events_en
    }

    var oD = new Date(y, m-1, 1); //DD replaced line to fix date bug when current day is 31st
    oD.od=oD.getDay(); //DD replaced line to fix date bug when current day is 31st
    if (oD.od == 0) oD.od=7
    var todaydate=new Date() //DD added
    var scanfortoday=(y==todaydate.getFullYear() && m==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added
    var scanforoverday=

    dim[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
    var t='<table summary="Calendrier mensuel"><caption>Calendrier</caption>';
    t+='<thead>';
    t+='<tr>';
    t+='<td><a id="moisPrecedent" href="#" title="' + previous_month +  '" onclick="javascript:rewriteCalendar(' + (m - 1) +', ' + y + ', \'' + cM + '\', \'' + cH + '\', \'' + cDW + '\', \'' + cD + '\', ' + brdr + ', \'' + lang + '\', \'' + root_section_url + '\', \'' + over_day + '\')"><span class="noDisplay">Mois précédent</span></a></td>';
    t+='<th scope="col" colspan="5">' + mn[m-1].toUpperCase() + ' ' + oD.getFullYear() + '</th>';
    t+='<td><a id="moisSuivant" href="#" title="' + next_month +  '" onclick="javascript:rewriteCalendar(' + (m + 1) +', ' + y + ', \'' + cM + '\', \'' + cH + '\', \'' + cDW + '\', \'' + cD + '\', ' + brdr + ', \'' + lang + '\', \''+ root_section_url + '\', \'' + over_day + '\')"><span class="noDisplay">Mois suivant</span></a></td>';
    t+='</tr>';
    t+='</thead>';
    t+='<tbody>';
    t+='<tr id="jours">';
    for(s=0;s<7;s++)t+='<td class="'+cDW+'">'+day.substr(s,1)+'</td>';
    t+='</tr><tr>';

    for(i=1;i<=42;i++){
        var x=((i-oD.od>=0)&&(i-oD.od<dim[m-1]))? i-oD.od + 1 : '&nbsp;';
        var class_a = ''
        var str_date = pad(i-oD.od+1) +'/'+pad(m)+'/'+oD.getFullYear();
        if (x==scanfortoday){
            //x='<span id="today">'+x+'</span>';} //DD added
            class_a = 'class="today"';
        }
        if (str_date==over_day){
            class_a = 'class="highlight"';
        }
        if (x != '&nbsp;'){
            t+='<td><a href="'+root_section_url+'/events_search?startDate=' + str_date + '&endDate=' + str_date + '&over_day=' + str_date + '&f=" ' + class_a + ' title="' + see_events + (i-oD.od+1) + ' ' + mn[m-1] + '">'+x+'</a></td>';
        }else{
            t+='<td>'+x+'</td>';
        }
        if(((i)%7==0)&&(i<36))t+='</tr><tr>';
    }
    return t+='</tr></tbody></table>';
}


function rewriteCalendar(m, y, cM, cH, cDW, cD, brdr, lang, root_section_url, over_day){
    if (m < 1){
        m =12;
        y = y - 1;
    }
    else if (m > 12){
        m =1;
        y = y + 1;
    }
    document.getElementById('calendarspace').innerHTML = buildCal(m ,y, cM, cH, cDW, cD, brdr, lang, root_section_url, over_day)
}


function writeCalendar(year, lang, root_section_url, over_day){
    var todaydate = new Date()
    var curmonth = todaydate.getMonth()+1 //get current month (1-12)
    var curyear = todaydate.getFullYear() //get current year
    if (year != ''){
        curyear = year;
    }
    if (over_day != ''){
        var reg = new RegExp("/", "g");
        var tmp = over_day.split(reg);
        curmonth = Number(tmp[1]);
        curyear = Number(tmp[2]);
    }
    return buildCal(curmonth, curyear, 'main', 'month', 'daysofweek', 'days', 1, lang, root_section_url, over_day)
}

function writeTodayCalendar(lang, root_section_url, over_day){
    var todaydate=new Date()
    var curmonth=todaydate.getMonth()+1 //get current month (1-12)
    var curyear=todaydate.getFullYear() //get current year
    if (over_day != ''){
        var reg = new RegExp("/", "g");
        var tmp = over_day.split(reg);
        curmonth = Number(tmp[1]);
        curyear = Number(tmp[2]);
    }
    return buildCal(curmonth, curyear, 'main', 'month', 'daysofweek', 'days', 1, lang, root_section_url, over_day)
}


function centerPopup(url,name,width,height,options) {
    var top = (screen.height-height)/2;
    var left = (screen.width-width)/2;
    popup = window.open(url,name,"top="+ top +",left="+ left
+",width="+ width +",height="+ height +","+options);
    popup.focus();
}


function bookmarksite(title,url){
    if (window.sidebar) // firefox
        window.sidebar.addPanel(title, url, "");
    else if(window.opera && window.print){ // opera
        var elem = document.createElement('a');
        elem.setAttribute('href',url);
        elem.setAttribute('title',title);
        elem.setAttribute('rel','sidebar');
        elem.click();
    }
    else if(document.all)// ie
        window.external.AddFavorite(url, title);
}

function verifyNotifyFriendForm(form, lang){
    emailreceiver_empty_fr = 'Veuillez saisir l\'addresse mail de votre ami.';
    senderemail_empty_fr = 'Veuillez saisir votre addresse mail.';
    emailreceiver_valid_fr = 'L\'addresse mail de votre ami n\'est pas valide.';
    senderemail_valid_fr = 'Votre addresse mail n\'est pas valide.';
    sendername_empty_fr = 'Veuillez saisir votre nom.';
    sendermsg_empty_fr = 'Veuillez saisir un message qui sera inséré dans le corp du mail.';

    emailreceiver_empty_en = 'Fill the email of your friend.';
    senderemail_empty_en = 'Fill your email.';
    emailreceiver_valid_en = 'The email of your friend is not correct.';
    senderemail_valid_en = 'Your email is not correct.';
    sendername_empty_en = 'Fill your name.';
    sendermsg_empty_en = 'Fill a message that will be inserted in the body of the mail.';

    emailreceiver_empty = emailreceiver_empty_fr;
    senderemail_empty = senderemail_empty_fr;
    emailreceiver_valid = emailreceiver_valid_fr;
    senderemail_valid = senderemail_valid_fr;
    sendername_empty = sendername_empty_fr;
    sendermsg_empty = sendermsg_empty_fr;

    emailRe = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*\.(\w{2}|(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum))$/

    if(lang == 'en'){
        emailreceiver_empty = emailreceiver_empty_en;
        senderemail_empty = senderemail_empty_en;
        emailreceiver_valid = emailreceiver_valid_en;
        senderemail_valid = senderemail_valid_en;
        sendername_empty = sendername_empty_en;
        sendermsg_empty = sendermsg_empty_en;
    }

    if (form.elements['emailreceiver'].value == ""){
        alert(emailreceiver_empty);
        form.elements['emailreceiver'].focus();
        return false;
    }
    else{
        if(!emailRe.test(form.elements['emailreceiver'].value)){
            alert(emailreceiver_valid);
            form.elements['emailreceiver'].focus();
            return false;
        }
    }

    if (form.elements['senderemail'].value == ""){
        alert(senderemail_empty);
        form.elements['senderemail'].focus();
        return false;
    }
    else{
        if(!emailRe.test(form.elements['senderemail'].value)){
            alert(senderemail_valid);
            form.elements['senderemail'].focus();
            return false;
        }
    }

    if (form.elements['sendername'].value == ""){
        alert(sendername_empty);
        form.elements['sendername'].focus();
        return false;
    }
    if (form.elements['sendermsg'].value == ""){
        alert(sendermsg_empty);
        form.elements['sendermsg'].focus();
        return false;
    }

    return true;
}


//************************************************************
// Folder content
var isSelected = false;

function toggleSelect(toggleSelectButton, selectAllText, deselectAllText) {
formElements = toggleSelectButton.form.elements;

if (isSelected) {
for (i = 0; i < formElements.length; i++) {
formElements[i].checked = false;
}
isSelected = false;
toggleSelectButton.value = selectAllText;
} else {
for (i = 0; i < formElements.length; i++) {
formElements[i].checked = true;
}
isSelected = true;
toggleSelectButton.value = deselectAllText;
}
}