// 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('

'+message+'




 '); } } function be_patient_refresh() { document.onkeydown = function(e) { e = (!e) ? event : e; if(e.keyCode == 116) be_patient() } } // initialisation Popup if(typeof(Popup) != 'undefined') { Popup.close_str = ''; Popup.img_close_url = 'images/close.gif'; Popup.img_loading_url = 'images/loading.gif'; Popup.autocheck_images = false; Popup.init(); }