/* GENERATED - DO NOT EDIT reservation.min.js : scripts/reservation.js,scripts/jquery.tagdragon.min.js */
/* reservation.js */

var carrouselType;var openDate=new Date(),openDateTime;var delaiMinimum={mode:null,vp:null,vu:null,sp:null,ml:null};var daysClosed=null,openingHours=null;var adaConfig={'vp':{'iniOffset':1,'minOffset':0,'maxOffset':21},'vu':{'iniOffset':1,'minOffset':0,'maxOffset':14},'sp':{'iniOffset':7,'minOffset':7,'maxOffset':28},'ml':{'iniOffset':0,'minOffset':0,'maxOffset':0}};function setHoraireMenu(lst,date,old_val)
{var d=new Date(date);d.setHours(0,0,0,0);var h_start=(openDate.getTime()==d.getTime())?openDateTime.getHours():0;if(!old_val||old_val=='undefined')
old_val=(lst.selectedIndex>=0)?lst.options[lst.selectedIndex].value:"";if(!old_val.length)
old_val=(lst.name=="h_depart")?heureDepart:heureRetour;lst.options.length=1;if(!date||!openingHours||!(a=openingHours[date.getDay()]))
return;for(var t=new Date(a[0]);t<=a[1];t.setMinutes(t.getMinutes()+30))
{if(!a[2]||!a[3]||t<=a[2]||t>=a[3])
{if(h_start&&t.getHours()<h_start)continue;h=t.getHours();m=t.getMinutes();v=(h.toString().length>1?"":"0")+h+":"+(m.toString().length>1?"":"0")+m;if(!old_val.length)old_val=v;lst.options[lst.options.length]=new Option(v,v,(v==old_val),(v==old_val));}}
if(currentType=='sp'&&lst.options.length>1)
lst.selectedIndex=1;}
function checkDateRetour(d)
{var minOffset=adaConfig[currentType].minOffset*3600*24000;var maxOffset=adaConfig[currentType].maxOffset*3600*24000;var tDepart=$('#depart').datepicker('getDate').getTime();return[((d.getTime()>=minOffset+tDepart)&&(d.getTime()<=maxOffset+tDepart)&&isBusinessDay(d)),''];}
function checkDateDepart(d)
{return[(d.getTime()>=openDate.getTime()&&isBusinessDay(d)),''];}
function doType(val)
{$('#recherche .menu_reservation label').removeClass('current').filter('[for=radio_'+val+']').addClass('current');currentType=val;$('#div_sp_info').css('display',(val=='sp'?'block':'none'));$('#span_h_depart, #span_h_retour').css('display',(val=='sp'?'none':'block'));$('#retour, #btn_retour').css('display',(val=='ml'?'none':'inline'));$('#span_ml_retour').css('display',(val=='ml'?'block':'none'))
showCategory();if($('#depart').val()&&$('#retour').val()&&setOpenDateTime())
alert("Désolé, les dates sélectionnées ne sont pas valides pour ce type de véhicule.\nMerci de modifier votre sélection.");}
function doAgence(id)
{$('#agence').empty();enableCalendarControls(false,'chargement en cours');$.get('../xmlagenceinfo.php?id='+id,function(xml)
{var e=xml.documentElement;if(!e||!e.getAttribute("id"))
{enableCalendarControls(false,'agence inconnue');return;}
$('#agence').attr('value',e.getAttribute('id'));if(currentZone!=e.getAttribute('zone'))
{currentZone=e.getAttribute('zone');showCategory();}
doHoraires(xml);if(e&&e.getAttribute('bal')=='1')
$('#agence_bal').show();var err=[];$('#depart, #retour').each(function(){if((d=$(this).datepicker('getDate'))&&!isBusinessDay(d)){$(this).val(null);err.push('- la date de '+this.id+' sélectionnée n\'est pas valide pour cette agence');}});if(err.length)
alert('Désolé :\n'+err.join('\n')+'\nMerci de modifier votre sélection.');});}
function enableCalendarControls(enabled,info)
{$('#calendar :input').attr('disabled',!enabled);if(info)$('#calendar img.btn_cal').attr('title',info).attr('alt',info);if(!enabled)$('#agence_bal').hide();}
function doHoraires(xml)
{if(document.cookie.indexOf("ADA001_TC_MODE=")==-1)
{delaiMinimum.vp=parseInt(xml.documentElement.getAttribute("vp_delai_min"));delaiMinimum.vu=parseInt(xml.documentElement.getAttribute("vu_delai_min"));delaiMinimum.sp=parseInt(xml.documentElement.getAttribute("sp_delai_min"));delaiMinimum.ml=parseInt(xml.documentElement.getAttribute("ml_delai_min"));delaiMinimum.mode=xml.documentElement.getAttribute("delai_mode");}
daysClosed=new Array(12);for(var i=0,lst=xml.getElementsByTagName("fermeture");i<lst.length;i++)
{m=lst[i].getAttribute("mois")-1;if(!daysClosed[m])
daysClosed[m]=new Array();daysClosed[m].push(lst[i].getAttribute("jour"));}
openingHours=null;for(var i=0,lst=xml.getElementsByTagName("horaire");i<lst.length;i++)
{if(!openingHours)openingHours=new Array(7);j=parseInt(lst[i].getAttribute("jour"));if(j==7)
j=0;openingHours[j]=new Array(makeTime(lst[i].getAttribute("ouverture")),makeTime(lst[i].getAttribute("fermeture")),makeTime(lst[i].getAttribute("pause_debut")),makeTime(lst[i].getAttribute("pause_fin")));}
if(openingHours)
{enableCalendarControls(true,"ouvrir le calendrier");setOpenDateTime();}}
function setOpenDateTime()
{var hasChanged=false;if(!openingHours||!openingHours.length)
return hasChanged;openDateTime=getOpenDateTime();openDate=new Date(openDateTime);openDate.setHours(0,0,0,0);if(!(depart=$('#depart').datepicker('getDate'))||!(checkDateDepart(depart)[0]))
{if(!depart||isBusinessDay(depart))
{depart=nextBusinessDay(openDate,0);$('#depart').datepicker('setDate',depart);hasChanged=true;}}
setHoraireMenu(document.getElementById('h_depart'),depart);if(!(retour=$('#retour').datepicker('getDate'))||!(checkDateRetour(retour)[0]))
{if(!retour||isBusinessDay(retour))
{retour=nextBusinessDay(depart,adaConfig[currentType].iniOffset);$('#retour').datepicker('setDate',retour);hasChanged=true;}}
setHoraireMenu(document.getElementById('h_retour'),retour);return hasChanged;}
function getOpenDateTime()
{var dOpen=new Date();dOpen.setHours(dOpen.getHours()+1,0,0,0);if(delaiMinimum.mode!='O')
{dOpen.setHours(dOpen.getHours()+delaiMinimum[currentType]);if
(!isBusinessDay(dOpen)||openingHours[dOpen.getDay()][1].getHours()<dOpen.getHours()||(currentType=='sp'&&dOpen.getHours()>openingHours[dOpen.getDay()][0].getHours()))
{dOpen=nextBusinessDay(dOpen,1);dOpen.setHours(openingHours[dOpen.getDay()][0].getHours());}
return dOpen;}
var h=delaiMinimum[currentType];if(!h)h=1;var offset=(isBusinessDay(dOpen)&&openingHours[dOpen.getDay()][1].getHours()>dOpen.getHours())?0:1;while(h>0)
{dOpen=nextBusinessDay(dOpen,offset);if(offset)
dOpen.setHours(openingHours[dOpen.getDay()][0].getHours());else
offset=1;h-=openingHours[dOpen.getDay()][1].getHours()-dOpen.getHours();}
dOpen.setHours(openingHours[dOpen.getDay()][1].getHours()+h,0,0,0);return dOpen;}
function nextBusinessDay(date,offset_days)
{var d=new Date(date),dayms=24*3600*1000;d.setHours(3,0,0,0);for(d.setTime(d.getTime()+offset_days*dayms);;d.setTime(d.getTime()+dayms))
if(isBusinessDay(d))
break;d.setHours(0,0,0,0);return d;}
function isBusinessDay(date)
{if(daysClosed&&daysClosed[date.getMonth()]!=null)
for(var x in daysClosed[date.getMonth()])
if(daysClosed[date.getMonth()][x]==date.getDate())
return false;if(!openingHours)
return true;if(!openingHours[date.getDay()])
return false;return true;}
function doCheckHoraireDepart()
{var d=$('#depart').datepicker('getDate');setHoraireMenu(document.getElementById('h_depart'),d);if($('#retour').datepicker('getDate').getTime()<d.getTime())
{d=nextBusinessDay(d,adaConfig[currentType].iniOffset);$('#retour').datepicker('setDate',d);doCheckHoraireRetour();return false;}
return false;}
function doCheckHoraireRetour()
{setHoraireMenu(document.getElementById('h_retour'),$('#retour').datepicker('getDate'));}
function makeTime(tm)
{if(tm==null||!tm.toString().length)
return null;a=tm.toString().split(":");return new Date(0,0,0,a[0],a[1],0);}
function doCheckNumber(fld)
{if(!fld.value.match(/\d+/))
{fld.style.backgroundColor="#ff7777";fld.select();}
else
{fld.style.backgroundColor="";}}
function doCheck(frm,with_fix)
{var err="",d=$('#depart').datepicker('getDate'),r=$('#retour').datepicker('getDate');if(!frm.agence.value.length)
err+="\n- L'agence indiquée est invalide";if(frm.categorie.options&&!validateSelect(frm.categorie))
err+="\n- Vous devez indiquer la catégorie du véhicule";if(!validateSelect(frm.h_depart))
err+="\n- Vous devez indiquer l'heure de départ";if(d&&r&&d.getTime()>r.getTime())
err+="\n- La date de départ ne peut être postérieure à la date de retour";if(!validateSelect(frm.h_retour))
err+="\n- Vous devez indiquer l'heure de retour";var days=(r&&d)?(r.getTime()-d.getTime())/(1000*60*60*24):0,max_days=adaConfig[currentType].maxOffset;if(days>max_days&&currentType!='sp')
err+="\n- La durée de la location demandée est trop élevée pour une réservation en ligne";if(currentType=='sp'&&days<7)
err+="\n- Pour une location d'un véhicule sans permis inférieure à 7 jours, merci de contacter directement votre agence";if(days==0&&frm.h_retour.selectedIndex<=frm.h_depart.selectedIndex)
err+="\n- L'heure de départ doit être antérieure à l'heure du retour";if(frm.age&&frm.age.options&&!validateSelect(frm.age))
err+="\n- Vous devez indiquer votre âge";if(currentType!='sp'&&frm.permis&&frm.permis.options&&!validateSelect(frm.permis))
err+="\n- Vous devez indiquer votre nombre d'années de permis";if(frm.distance&&frm.distance.value.length&&!frm.distance.value.match(/^\d*$/))
err+="\n- La distance à parcourir est invalide";if(err.length)
{alert("Attention !\n"+err);return false;}
if(currentType=='sp'&&days>max_days&&!with_fix)
{alert("La durée de réservation en ligne maximum est d'un mois, le tarif affiché correspond au premier mois de location, au delà le paiement s'effectue en agence");r=nextBusinessDay(d,28);$('#retour').datepicker('setDate',r);setHoraireMenu(document.getElementById('h_retour'),r);return doCheck(frm,true);}
return true;}
function showCategory()
{var lst=document.getElementById("categorie");if(!lst.options)
{if(carrouselType==currentType)return;carrouselType=currentType;$.get('../lib.categorie.php?skin=v2&zone=fr&type='+currentType,function(html)
{$('#carrousel_categorie ul.carrousel-band').html(html);$('#carrousel_categorie').carrousel('update');});return;}
var val=(lst.selectedIndex>0)?lst.options[lst.selectedIndex].value:currentCat;if(e=document.getElementById("cat_"+val))
e.style.display='none';lst.options.length=1;msg="Choisissez d'abord une agence";if(currentType&&currentZone)
{var zone=currentZone;if(!mnuCategory[zone+'-'+currentType])
zone="fr";for(var a=mnuCategory[zone+'-'+currentType],n=a?a.length:0,i=0;i<n;i++)
{v=a[i].match(/^(\d+)\-(.+)/);lst.options.add(new Option(v[2],v[1],(v[1]==val),(v[1]==val)));}
var divType=document.getElementById('cat_'+zone+'-'+currentType);if(!divType.innerHTML.length)
$.get("../lib.categorie.php?skin=www&zone="+zone+'&type='+currentType,function(html){divType.innerHTML=html;selectCategory();});else
selectCategory();msg=(i>0)?"Choisissez un véhicule":"Erreur: pas de catégories pour cette zone";}
else
selectCategory();lst.options[0].text="--- "+msg+" ---";}
function selectCategory()
{for(var lst=document.getElementById("categorie"),i=0;i<lst.options.length;i++)
if(e=document.getElementById("cat_"+lst.options[i].value))
e.style.display=lst.options[i].selected?'block':'none';if(lst.options[lst.selectedIndex].value)
{var $img=$('#cat_'+lst.options[lst.selectedIndex].value+' img.cat_med')
if($img.length)
{var img=$img.attr('class').replace(/(.+\s)*([^\s]+)$/,'$2');if(img!='cat_med')
$('#cat_visu').attr('src','../'+img);}}
if(!img)
$('#cat_visu').attr('src','../img/cat_flotte_'+currentType+'.png');}
function setupReservation()
{$.datepicker.setDefaults({numberOfMonths:2,dateFormat:'dd-mm-yy',firstDay:1,dayNamesMin:['di','lu','ma','me','je','ve','sa'],monthNames:['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre']});$('#depart').datepicker({onSelect:doCheckHoraireDepart,beforeShowDay:checkDateDepart});$('#retour').datepicker({onSelect:doCheckHoraireRetour,beforeShowDay:checkDateRetour});$('#calendar img.btn_cal').css('cursor','pointer').click(function()
{if(!openingHours)return;$('#'+this.id.replace('btn_','')).datepicker('show');});$('#calendar input').attr('autocomplete','off').attr('readonly',true);$('#radio_'+currentType).attr('checked','checked');if($.fn.tagdragon)
{$('#autocomplete').tagdragon({'field':'ville','url':'../json.agences.php','max':30,'charMin':3,'delay':100,'onSelectedItem':function(val){if(val.id)doAgence(val.id);},'onLoadedList':function(results){len=(results&&results.length>0);$('#ville_ok').css('display',len?"block":"none");$('#ville_ko').css('display',!len?"block":"none");}});}
carrouselType=currentType;if(id=$('#agence').val())
{doAgence(id);}
else
{enableCalendarControls(false);}
doType(currentType);$("#cat_details img.cat_med").live("click",function(){$('#cat_visu').attr('src','../'+$(this).attr('class').replace(/(.+\s)*([^\s]+)$/,'$2'));return false;});$("#cat_details .galerie .next, .cat_details .galerie .prev").live("click",function(){var $band=$(this).parent().find('.band');var direction=$(this).hasClass('prev')?1:-1;moveBand($band,direction);return false;});};function moveBand($band,direction)
{var mask_band_width=$band.parent().width();var band_width=$band.width();var band_left=(direction==1)?0:mask_band_width-band_width;$band.animate({left:band_left+'px'},500,function(){$band.parent().parent().find('.next').toggle();$band.parent().parent().find('.prev').toggle();});}
/* jquery.tagdragon.min.js */
/*******************************************************************************
 * 
 * JQUERY TAGDRAGON (v1.31, September 2009, by Ferdy Christant - ferdychristant.com)
 * 
 * jQuery TagDragon is a versatile jQuery plugin for autosuggest functionality
 * of input boxes and texareas. You can learn more about TagDragon at:
 * 
 * http://www.s3maphor3.org/tagdragon
 * 
 * LICENSE
 * 
 * Tagdragon is charityware. It is not free. You can make use of it after making
 * a required donation at :
 * 
 * http://www.s3maphor3.org/tagdragon/buy
 * 
 * 100% of the revenue will be used for project JungleDragon, a charitable
 * project!
 * 
 ******************************************************************************/

(function($){$.fn.extend({tagdragon:function(options){return this.each(function(){new $.tagdragonz(this,options)})},tagdragon_configure:function(options){return this.trigger("tagdragon_configure",[options])},tagdragon_load:function(){return this.trigger("tagdragon_load")},tagdragon_clear:function(){return this.trigger("tagdragon_clear")}});$.tagdragonz=function(input,options){var tagbox=input;var defaults={field:"tags",url:"jsontags.php",tagsep:",",enclose:"",max:10,cache:true,delay:500,charMin:1,dblClick:true,postData:null,visible:true,dataType:"json",onRenderItem:function(row){return decodeURIComponent(row.tag)},onSelectItem:function(val){return true},onSelectedItem:function(val){return true},onLoadList:function(filter){return true},onLoadedList:function(results){return true}};var options=$.extend(defaults,options);var input=$("#"+options.field);$(input).attr("autocomplete","off");var lkup=document.createElement("div");$(lkup).attr({id:"tagbox-lkup"});$(lkup,tagbox).show();input.after(lkup);var lkuplst=document.createElement("ol");$(lkup,tagbox).append(lkuplst);var cursor=-1;var length=0;var loading=false;var loaded=false;var cacheLst=null;var inserted=false;var preg_escape=function(str){return(str+"").replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g,"\\$1")};var hideLkup=function(){$(lkuplst,tagbox).empty();$(lkup,tagbox).hide();loaded=false;cacheLst=null;inserted=false};var insertTag=function(filter,tag){var cur=input.val();var words=tag.split(" ").length;var enclose=(words>1)?options.enclose.length>0?options.enclose:"":"";cur=cur.replace(eval("/"+preg_escape(filter)+"$/i"),enclose+tag+enclose);input.val(cur);cursor=-1};var addItem=function(val,filter,index){if(!options.visible){return}var row=val;var val=options.onRenderItem(val,index,length,filter);var li=document.createElement("li");lkuplst.appendChild(li);var aLink=document.createElement("a");$(aLink).attr({href:"#"});$(aLink,tagbox).text(val);$(aLink,tagbox).addClass(index%2==0?"td-odd":"td-even");$(aLink,tagbox).html($(aLink,tagbox).text().replace(eval("/("+preg_escape(filter)+")/gi"),"<em>$1</em>"));li.appendChild(aLink);$(aLink).click(function(e){options.onSelectItem(row);insertTag(filter,val);options.onSelectedItem(row);e.preventDefault();hideLkup();inserted=true;input.focus()})};var loadList=function(){inserted=false;var filter=parseFilter(input.val());options.onLoadList(filter);$(lkuplst,tagbox).empty();$.ajax({type:"GET",url:options.url,data:$.extend({tag:encodeURIComponent(filter),max:options.max},options.postData),dataType:options.dataType,cache:options.cache,success:function(json){if(filter!=parseFilter(input.val())){loadList()}else{$(lkuplst,tagbox).empty();length=json.length;cacheLst=json;cursor=-1;for(i=0;i<json.length&&i<options.max;i++){addItem(json[i],filter,i)}if(options.visible){$(lkup,tagbox).show()}loading=false;loaded=true;options.onLoadedList(json)}},error:function(XMLHttpRequest,textStatus,errorThrown){length=0;cacheLst=null;loading=false;loaded=false;options.onLoadedList(false)}})};var parseFilter=function(val){if(options.tagsep.length==0){return val}if(val.indexOf(options.tagsep)>-1){if(options.tagsep==" "){val=val.substring(val.lastIndexOf(options.tagsep)+1,val.length)}else{val=jQuery.trim(val.substring(val.lastIndexOf(options.tagsep)+1,val.length))}}return val};var triggerLoad=function(){if(inserted){return false}else{var filter=parseFilter(input.val());if(filter.length>=options.charMin){loading=true;setTimeout(function(){loadList()},options.delay)}else{hideLkup()}}};$("*",input.form).focus(function(e){if(this.id==options.field){triggerLoad()}else{hideLkup()}});input.dblclick(function(e){if(options.dblClick&&!loading){triggerLoad()}});$(lkuplst,tagbox).blur(function(e){hideLkup()});var handleSpecials=function(e){var e=e||window.event;var key=e.charCode||e.keyCode;if(!loaded){return true}switch(key){case 9:cursor=((cursor+1)<length)?cursor+1:cursor;if(cursor<length){$("li:eq("+cursor+")",tagbox).addClass("hl");if((cursor-1)>-1){$("li:eq("+(cursor-1)+")",tagbox).removeClass("hl")}e.preventDefault()}break;case 40:cursor=((cursor+1)<length)?cursor+1:cursor;if(cursor<length){$("li:eq("+cursor+")",tagbox).addClass("hl");if((cursor-1)>-1){$("li:eq("+(cursor-1)+")",tagbox).removeClass("hl")}e.preventDefault()}break;case 38:cursor=(cursor-1>=0)?cursor-1:cursor;if(cursor>=0){$("li:eq("+cursor+")",tagbox).addClass("hl");$("li:eq("+(cursor+1)+")",tagbox).removeClass("hl");e.preventDefault()}break;case 13:if(input[0].type!="textarea"){e.preventDefault()}if(cursor>=0&&cursor<length){var row=cacheLst[cursor];options.onSelectItem(row);insertTag(parseFilter(input.val()),$("li:eq("+(cursor)+")",tagbox).text());options.onSelectedItem(row);e.preventDefault();hideLkup()}break;case 27:hideLkup();e.preventDefault();break}};var handleKey=function(e){var e=e||window.event;var key=e.charCode||e.keyCode;if(key==13){return true}if(key>8&&key<46&&key!=32){return false}if(loading==false){triggerLoad()}if(options.visible){$(lkup,tagbox).show()}};$(input).keyup(handleKey);$(input).keydown(handleSpecials);$(tagbox).bind("tagdragon_configure",function(){$.extend(options,arguments[1])});$(tagbox).bind("tagdragon_load",function(){triggerLoad()});$(tagbox).bind("tagdragon_clear",function(){hideLkup()})}})(jQuery);

