// menu
var current_menu = 0;
function show_menu(menu_id)
{
menu_ct();
for(var i = 0; i < 10; i++)
{
if(document.getElementById('submenu_'+i))
{
document.getElementById('submenu_'+i).style.display = 'none';
}
}
if(document.getElementById('submenu_'+menu_id))
document.getElementById('submenu_'+menu_id).style.display = 'block';
}
var menu_timeout = null;
function hide_menu(menu_id)
{
menu_ct();
if(document.getElementById('submenu_'+menu_id))
menu_timeout = setTimeout("document.getElementById('submenu_'+"+menu_id+").style.display = 'none'", 750);
}
function menu_ct()
{
if(menu_timeout)
{
clearTimeout(menu_timeout);
}
}
// container type de vehicules
var type_vehicules_y = 0;
var container_type_vehicules = null;
function show_type_vehicules(container_id, e)
{
type_vehicules_ct();
// Cacher les autres div
var footer_links = document.getElementsByTagName('DIV');
if(footer_links.length > 1)
{
for(var i = 0; i < footer_links.length ; i++)
{
if(footer_links[i].className == 'footer_links' && footer_links[i] != container_id)
{
document.getElementById(footer_links[i].id).style.display = 'none';
}
}
}
container_type_vehicules = document.getElementById(container_id);
container_type_vehicules.style.display = 'block';
if(e)
{
if( e.pageX != undefined){ // gecko, konqueror,
container_type_vehicules._x = e.pageX;
container_type_vehicules._y = e.pageY;
}else if(event != undefined && event.x != undefined && event.clientX == undefined){ // ie4 ?
container_type_vehicules._x = event.x;
container_type_vehicules._y = event.y;
}else if(e.clientX != undefined ){ // IE6, IE7, IE5.5
if(document.documentElement){
container_type_vehicules._x = e.clientX + ( document.documentElement.scrollLeft || document.body.scrollLeft);
container_type_vehicules._y = e.clientY + ( document.documentElement.scrollTop || document.body.scrollTop);
}else{
container_type_vehicules._x = e.clientX + document.body.scrollLeft;
container_type_vehicules._y = e.clientY + document.body.scrollTop;
}
}else{
container_type_vehicules._x = 0;
container_type_vehicules._y = 0;
}
container_type_vehicules.style.top = (container_type_vehicules._y - (container_type_vehicules.offsetHeight + 15)) + 'px';
container_type_vehicules._x -= (container_type_vehicules.offsetWidth + 100);
while(container_type_vehicules._x + container_type_vehicules.offsetWidth + 100 > screen.availWidth)
{
container_type_vehicules._x -= 50;
}
//container_type_vehicules.style.left = container_type_vehicules._x - (container_type_vehicules.offsetWidth + 100) + 'px';
container_type_vehicules.style.left = container_type_vehicules._x + 'px';
}
}
var type_vehicules_timeout = null;
function hide_type_vehicules(container_id)
{
type_vehicules_ct();
if(document.getElementById(container_id))
type_vehicules_timeout = setTimeout("document.getElementById('"+container_id+"').style.display = 'none'", 550);
}
function type_vehicules_ct()
{
if(type_vehicules_timeout)
clearTimeout(type_vehicules_timeout);
}
// autocompletion
var autocomplete_values = new Array();
function autocomplete_init(classname, values_array)
{
autocomplete_values = values_array;
var inputs = document.getElementsByTagName( 'INPUT' )
for( var i = 0; i < inputs.length; i ++ )
{
if( inputs[i].type.toLowerCase() == 'text' && inputs[i].className == classname)
{
if( document.attachEvent )
{
inputs[i].attachEvent( 'onkeyup', autocomplete )
}
else if( document.addEventListener )
{
inputs[i].addEventListener( 'keyup', autocomplete, false )
}
}
}
}
function autocomplete(ev)
{
ev = ( ev != null ) ? ev : window.ev
if( ev.keyCode == 16 || ev.keyCode == 13 ||ev.keyCode == 46)
return;
var element = ( ev.srcElement ) ? ev.srcElement : ev.originalTarget
var value = element.value.toLowerCase()
if( ev.keyCode == 8 )
value = value.substring( 0, value.length - 1 )
if( value.length < 1 )
return;
for( var i = 0; i < autocomplete_values.length; i++ )
{
item = autocomplete_values[i];
if( item.toLowerCase().indexOf( value, 0 ) == 0 && item.length > value.length )
{
element.value = autocomplete_values[ i ]
if( element.createTextRange && !window.opera)
{
hRange = element.createTextRange()
hRange.findText( autocomplete_values[ i ].substr( value.length ) )
hRange.select()
}
else
{
element.setSelectionRange( value.length, item.length )
}
return;
}
}
}
// trim
function trim ( str ) {
var whitespace = ' \n\r\t\f\x0b\xa0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000';
for (var i = 0; i < str.length; i++) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(i);
break;
}
}
for (i = str.length - 1; i >= 0; i--) {
if (whitespace.indexOf(str.charAt(i)) === -1) {
str = str.substring(0, i + 1);
break;
}
}
return whitespace.indexOf(str.charAt(0)) === -1 ? str : '';
}
// explode
function explode( delimiter, string, limit ) {
var emptyArray = { 0: '' };
// third argument is not required
if ( arguments.length < 2
|| typeof arguments[0] == 'undefined'
|| typeof arguments[1] == 'undefined' )
{
return null;
}
if ( delimiter === ''
|| delimiter === false
|| delimiter === null )
{
return false;
}
if ( typeof delimiter == 'function'
|| typeof delimiter == 'object'
|| typeof string == 'function'
|| typeof string == 'object' )
{
return emptyArray;
}
if ( delimiter === true ) {
delimiter = '1';
}
if (!limit) {
return string.toString().split(delimiter.toString());
} else {
// support for limit argument
var splitted = string.toString().split(delimiter.toString());
var partA = splitted.splice(0, limit - 1);
var partB = splitted.join(delimiter.toString());
partA.push(partB);
return partA;
}
}
// préparation objet pour l'AJAX
var xhr;
try { xhr = new ActiveXObject('Msxml2.XMLHTTP'); }
catch (e)
{
try { xhr = new ActiveXObject('Microsoft.XMLHTTP'); }
catch (e2)
{
try { xhr = new XMLHttpRequest(); }
catch (e3) { xhr = false; }
}
}
// Permet de savoir si un champ a été correctement rempli
function check_content(element, type)
{
var not_empty = false;
switch(type)
{
case 'email' :
var reg = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,}$/;
not_empty = reg.test(trim(element.value));
default :
not_empty = (trim(element.value) != '');
}
return not_empty;
}
// Vérifier le contenu du formulaire de contact pour les véhicules d'occasion
function check_occasion_contact(form)
{
// NOM
if(!check_content(form.elements['nom'], 'string'))
{
alert('Veuillez renseigner votre nom');
form.elements['nom'].focus();
return false;
}
// PRENOM
else if(!check_content(form.elements['prenom'], 'string'))
{
alert('Veuillez renseigner votre prenom');
form.elements['prenom'].focus();
return false;
}
// EMAIL + TEL
else if(trim(form.elements['email'].value) == '' && trim(form.elements['tel'].value) == '')
{
alert('Veuillez renseigner votre email ou votre numéro de téléphone afin que l\'on puisse vous joindre');
if(trim(form.elements['email'].value) == '')
form.elements['email'].focus();
else
form.elements['tel'].focus();
return false;
}
// EMAIL
else if(trim(form.elements['tel'].value) == '' && !check_content(form.elements['email'], 'email'))
{
alert('Veuillez renseigner un email valide');
form.elements['email'].focus();
form.elements['email'].select();
return false;
}
return true;
}
/* recherche des catégories disponibles dans une agence */
var popup_type_categories = new Array();
function check_quick_reservation(form)
{
if(form.ag_id.selectedIndex == 0)
{
alert('Veuillez choisir une agence de location');
form.ag_id.focus();
return false;
}
else if(!check_content(form.date_du))
{
alert('Veuillez préciser la date de départ');
form.date_du.focus();
return false;
}
else if(!check_content(form.date_au))
{
alert('Veuillez préciser la date d\'arrivée');
form.date_au.focus();
return false;
}
if(xhr)
{
var type_id = 0;
var url = '';
var field = null;
var value = null;
for(var i = 0; i < form.elements.length; i++)
{
field = form.elements[i];
value = '';
switch(field.type)
{
// Hidden
case 'hidden' :
case 'text':
value = field.value;
break;
// Select
case 'select-one' :
value = field.options[field.selectedIndex].value;
break;
case 'radio' :
if(field.checked && field.name == 'type_id')
type_id = value = field.value;
break;
// pour les radio ou checkbox
default :
if(field.checked)
{
value = field.value;
break;
}
else if(field.length)
{
for(var k = 0; k < field.length; k++)
{
if(field[k].checked)
{
value = field[k].value;
break;
}
}
}
}
if(value != '')
url += field.name + '=' + value+ '&';
}
// Obtenir et changer le contenu selon la catégorie
//if(typeof popup_type_categories[type_id] == 'undefined')
//if(true)
//{
if(xhr)
{
xhr.abort();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
//popup_type_categories[type_id] = xhr.responseText;
//Popup.display(popup_type_categories[type_id]);
Popup.display(xhr.responseText);
}
}
}
xhr.open("POST", "includes/ajax.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(url);
}
//}
//else
//{
// Popup.display(popup_type_categories[type_id]);
//}
return false;
}
else
{
be_patient();
return true;
}
}
/* Affiche un liste de X catégories directement dans la POPUP CSS */
function popup_display_cat(url)
{
if(xhr)
{
xhr.abort();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
//Popup.hide();
//popup_type_categories[type_id] = xhr.responseText;
Popup.display(xhr.responseText);
}
}
}
be_patient();
xhr.open("POST", "includes/ajax.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(url);
}
else
Popup.hide();
}
/* vérification coordonnées */
function check_coordonnees(form)
{
if(!check_content(form.nom))
{
alert('Veuillez préciser votre nom');
form.nom.focus();
return false;
}
else if(!check_content(form.prenom))
{
alert('Veuillez préciser votre prénom');
form.prenom.focus();
return false;
}
else if(!check_content(form.email, 'email'))
{
alert('Veuillez préciser un email valide');
form.email.focus();
return false;
}
be_patient();
return true;
}
/* vérification login */
function check_login(form)
{
if(!check_content(form.email , 'email'))
{
alert('Veuillez préciser un email valide');
form.email.focus();
return false;
}
else if(!check_content(form.pass))
{
alert('Veuillez préciser votre mot de passe');
form.pass.focus();
return false;
}
return true;
}
/* AJAX : affiche le détail de la catégorie sélectionnée */
var categorie_content = new Array();
function display_cat(cat_id,cat_code)
{
// Mettre le style par défaut
var divs = document.getElementsByTagName('div');
for(var i =0; i < divs.length; i ++)
{
if(divs[i].className.indexOf('vehicule_mouseover') >= 0)
{
divs[i].className = 'vehicule_mouseover';
}
}
document.getElementById('categorie_'+cat_id).className += ' selected';
// Obtenir et changer le contenu selon la catégorie
if(typeof categorie_content[cat_id] == 'undefined')
{
if(xhr)
{
xhr.abort();
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
document.getElementById('categorie_detail').innerHTML = xhr.responseText;
categorie_content[cat_id] = xhr.responseText;
}
}
}
xhr.open("POST", "includes/ajax.php", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send('cat_code='+cat_code);
}
}
else
{
document.getElementById('categorie_detail').innerHTML = categorie_content[cat_id];
}
}
// POPUP
function popup(adresse, width, height, popup_name)
{
width = (width == undefined ? 800 : width);
height = (height == undefined ? 800 : height);
var left = (screen.width - width) / 2 ;
var top = (screen.height - height) / 2;
if(popup_name == 'undefined')
popup_name = 'popuped';
var w = window.open(adresse, popup_name, 'top='+top+',left='+left+',width='+width+',height='+height+',statusbar=1,location=0,menubar=0,scrollbars=1');
w.document.close();
w.focus();
}
// slideshow
var photos = new Array();
var current_photos = new Array();
var current_photo = 0;
function slideshow_photos(i, container_id)
{
current_photos[i] = (current_photos[i] >= photos[i].length -1 ? 0 : current_photos[i] + 1 );
current_photo = current_photos[i];
document.getElementById(container_id).innerHTML = '';
window.setTimeout("slideshow_photos("+i+", '"+container_id+"')", 3000);
}
// Avertir pour toute modification
function confirm_saisie()
{
return confirm('Désirez-vous valider les modifications effectuées ?');
}
// **********************************
// CHECK FORM
// **********************************
var reg_email = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,}$/;
var error = '';
// Nom des Champs obligatoires du formulaire
var fields = new Array();
// Titre de ces champs
var fields_title = new Array();
// Champs numériques
var fields_numeric = new Array();
// Emails a vérifier
var fields_email = new Array();
var field_classname_normal = 'field_normal';
var field_classname_error = 'field_error';
var form_lang = 'fr';
// Vérification formulaire demande
function check_form(form)
{
// champ courant
var field = null;
// s'il est correctement rempli
var res = false;
var j = 0;
// Boucle sur tous les champs du form
for(var i = 0; i < form.elements.length; i++)
{
error = '';
if(form.elements[i].type) // eviter de changer la classe d'autres éléments que des input, select, ....
form.elements[i].className = field_classname_normal;
if(form.elements[i].name != fields[j])
continue;
if(j >= fields.length )
break;
// Vérification du champs obligatoire
field = form.elements[fields[j]];
res = false;
// Selon son type
switch(field.type)
{
// Hidden
case 'hidden' :
res = true;
break;
// Select
case 'select-one' :
res = field.selectedIndex > 0 || (field.selectedIndex == 0 && field.options[field.selectedIndex].value != '' && field.options[field.selectedIndex].value > 0);
break;
// text ou textarea
case 'text' :
case 'password' :
case 'textarea' :
res = field.value != '';
// OK, alors voyons voir s'il s'agit d'un champ email
if(res && fields_email.length > 0)
{
for(var k = 0; k < fields_email.length; k++)
{
if(field.name == fields_email[k])
{
res = reg_email.test(field.value);
if(!res)
{
if(form_lang == 'en')
error = 'Please fill in a valid email';
else
error = 'Vous devez préciser un email valide';
break;
}
}
}
}
// OK, alors voyons voir s'il s'agit d'un champ numéric
if(res && fields_numeric.length > 0)
{
for(var k = 0; k < fields_numeric.length; k++)
{
if(field.name == fields_numeric[k])
{
res = !isNaN(field.value);
if(!res)
{
if(form_lang == 'en')
error = 'The field "'+fields_title[j]+'" must contain only numeric chars';
else
error = 'Le champ "'+fields_title[j]+'" doit être composé de chiffres uniquement';
break;
}
}
}
}
break;
// pour les radio ou checkbox
default :
if(field.length)
{
for(var k = 0; k < field.length; k++)
{
field[k].parentNode.parentNode.className = field_classname_normal;
res = field[k].checked;
if(res)
break;
}
}
}
if(!res)
break;
j++;
}
// Si mal rempli
if(!res)
{
if(form_lang == 'en')
error = (error == '') ? 'Le field "' + fields_title[j] +'" is obligatory' : error;
else
error = (error == '') ? 'Le champ "' + fields_title[j] +'" est obligatoire' : error;
alert(error);
if(field.focus)
{
field.focus();
field.className = field_classname_error;
}
else if(field.length)
{
var opt = null;
for(var k = 0; k < field.length; k++)
{
opt = field[k].parentNode;
field[k].parentNode.parentNode.className = field_classname_error;
}
// -> focus sur le premier élément
window.scrollTo(0,opt.offsetTop);
}
return false;
}
return true;
}
// **********************************
// QUICKBOOK
// **********************************
var interval_quickbook = null;
// Mettre à jour depuis les inputs du quickbook
function update_from_quickbook()
{
var els = document.forms['main_form_left'].elements;
update_form_values('ag_id', els['ag_id'].options[els['ag_id'].selectedIndex].value);
update_form_values('date_du', els['date_du'].value);
update_form_values('date_du_heure', els['date_du_heure'].options[els['date_du_heure'].selectedIndex].value);
update_form_values('date_au', els['date_au'].value);
update_form_values('date_au_heure', els['date_au_heure'].options[els['date_au_heure'].selectedIndex].value);
}
// Mise à jour de la valeur de tous les inputs de tous les formulaire ayant le même input name
function update_form_values(input_name, input_value)
{
var el = null;
for(var i = 0; i < document.forms.length; i++)
{
if(document.forms[i].name == 'main_form_left')
continue;
for (var j = 0; j < document.forms[i].elements.length; j ++)
{
el = document.forms[i].elements[j];
if(el && el.name && el.name == input_name)
{
switch(el.type)
{
case 'select-one':
for(var k = 0; k < el.options.length; k++)
{
if(el.options[k].value == input_value)
{
el.options[k].selected = true;
break;
}
}
break;
case 'hidden' :
case 'text':
el.value = input_value;
break;
}
break;
}
}
}
}
// fonction qui affiche la "greybox" pour indiquer au visiteur de patienter un moment
var interval_patient = null;
function be_patient(message)
{
var img = new Image();
img.src = 'images/loading.gif';
if(interval_patient > 0)
clearInterval(interval_patient);
if(!img.complete)
interval_patient = setInterval('be_patient("'+message+'")', 10);
else
{
if(!message || message == null || typeof message == "undefined" || message == '')
message = 'Veuillez patienter pendant la recherche des informations';
Popup.display('
