dojo.declare('MBREngine',null,{selectName:new Array('hdSelDepart','hdSelArrivee','idDepart','idArrivee','idCompagnie'),xhrParameters:{'hdSelDepart':{laction:'getPaysDepart',rewriteValue:'paysRewrite',value:'pays'},'hdSelArrivee':{laction:'getPaysArrivee',rewriteValue:'paysRewrite',value:'pays'},'idDepart':{laction:'getVillesDepart',rewriteValue:'iata',value:'depart'},'idArrivee':{laction:'getVillesArrivee',rewriteValue:'iata',value:'arrivee'},'idCompagnie':{laction:'getCompagnies',rewriteValue:'codevite',value:'compagnie'}},actionCollector:new Array(),compagniesURL:new Array(),compagniesDateDispo:new Array(),proximiteAeroport:new Array(),selectedIndexidDepart:-1,selectedIndexidArrivee:-1,clickTimeout:new Array(),constructor:function(){dojo.byId('hdSelDepart').selectedIndex=0;dojo.byId('hdSelArrivee').selectedIndex=0;dojo.byId('idDepart').selectedIndex=-1;dojo.byId('idArrivee').selectedIndex=-1;dojo.byId('idCompagnie').selectedIndex=-1;dojo.cookie('jsOogDep',null,{expires:-1});dojo.cookie('jsOogArv',null,{expires:-1});this.builtElements()},builtElements:function(){this.selectAddEvent('hdSelDepart');this.selectAddEvent('hdSelArrivee');this.selectAddEvent('idDepart');this.selectAddEvent('idArrivee');this.selectAddEvent('idCompagnie')},selectAddEvent:function(selectElement){var oThis=this;dojo.connect(dojo.byId(selectElement),'onchange',function(event){if(selectElement=='hdSelDepart'){if(oThis.actionCollector[0]=='hdSelDepart'){oThis.razAllElements(selectElement)}else{oThis.razSelectedElement('hdSelDepart','idDepart',true);oThis.razSelectedElement('hdSelDepart','idArrivee')}}else if(selectElement=='hdSelArrivee'){if(oThis.actionCollector[0]=='hdSelArrivee'){oThis.razAllElements(selectElement)}else{oThis.razSelectedElement('hdSelArrivee','idDepart');oThis.razSelectedElement('hdSelArrivee','idArrivee',true)}}if(dojo.indexOf(['hdSelDepart','hdSelArrivee'],selectElement)>-1){oThis.eventAction(selectElement);oThis['selectedIndex'+selectElement]=dojo.byId(selectElement).selectedIndex}});if(dojo.indexOf(['idDepart','idArrivee','idCompagnie'],selectElement)>-1){dojo.connect(dojo.byId(selectElement),'onclick',function(event){if(selectElement=='idDepart'&&dojo.indexOf(oThis.actionCollector,'idDepart')<dojo.indexOf(oThis.actionCollector,'idArrivee')){oThis['selectedIndexidArrivee']=-1}else if(selectElement=='idArrivee'&&dojo.indexOf(oThis.actionCollector,'idArrivee')<dojo.indexOf(oThis.actionCollector,'idDepart')){oThis['selectedIndexidDepart']=-1}if(dojo.query('option',dojo.byId(selectElement)).length>=1){if(dojo.indexOf(['idDepart','idArrivee'],selectElement)>-1){if(oThis['selectedIndex'+selectElement]==dojo.byId(selectElement).selectedIndex){dojo.byId(selectElement).selectedIndex=oThis['selectedIndex'+selectElement]=-1;dojo.byId(selectElement).value='';if(selectElement!='idArrivee')oThis.razSelectedElement('idDepart','hdSelArrivee');if(selectElement!='idDepart')oThis.razSelectedElement('idArrivee','hdSelDepart');oThis.razSelectedElement('idDepart','idArrivee');oThis.razSelectedElement('idArrivee','idDepart');oThis.actionCollector.removeElement(selectElement);oThis.actionCollector.removeElement('idCompagnie');oThis.eventAction(selectElement)}else{oThis.eventAction(selectElement);oThis['selectedIndex'+selectElement]=dojo.byId(selectElement).selectedIndex}}else{oThis.eventAction(selectElement);oThis['selectedIndex'+selectElement]=dojo.byId(selectElement).selectedIndex}}})}},XHRGetData:function(urlData,selectElement,paramValueName,paramValueHTML){var oThis=this;dojo.xhrGet({url:urlData,handleAs:'json',error:function(response,args){var oErrors={lowcostMessage:'Erreur de chargement des données',message:data.message,urlData:urlData,selectElement:selectElement,paramValueName:paramValueName,paramValueHTML:paramValueHTML,requestURL:args.url,queryString:args.query,jsOogDep:(dojo.cookie('jsOogDep')!=null)?dojo.cookie('jsOogDep'):null,jsOogArv:(dojo.cookie('jsOogArv')!=null)?dojo.cookie('jsOogArv'):null,actionCollector:oThis.actionCollector.join('|')};oThis.sendError(oErrors);alert('Une erreur est survenue, merci de renouveller votre demande ultérieurement.')},load:function(data,args){if((data.name!=undefined&&data.name.toLowerCase().indexOf('error')>-1)){var oErrors={lowcostMessage:'Erreur de chargement des données',message:data.message,urlData:urlData,selectElement:selectElement,paramValueName:paramValueName,paramValueHTML:paramValueHTML,requestURL:args.url,queryString:args.query,jsOogDep:(dojo.cookie('jsOogDep')!=null)?dojo.cookie('jsOogDep'):null,jsOogArv:(dojo.cookie('jsOogArv')!=null)?dojo.cookie('jsOogArv'):null,actionCollector:oThis.actionCollector.join('|')};oThis.sendError(oErrors);alert('Une erreur est survenue, merci de renouveller votre demande ultérieurement.')}else{var autoSelect=(data.length==1&&(dojo.indexOf(['idDepart','idArrivee','idCompagnie'],selectElement)>-1));var newTagOption;if(selectElement=='hdSelDepart'){oThis.buildOptionTag(selectElement,'France et limitrophes','limitrophes');oThis.buildOptionTag(selectElement,'Tous les a'+String.fromCharCode(233)+'roports','tous')}else if(selectElement=='hdSelArrivee'){oThis.buildOptionTag(selectElement,'Tous','tous')}else if(selectElement=='idDepart'){oThis.proximiteAeroport=new Array()}else if(selectElement=='idCompagnie'){oThis.compagniesURL=new Array();oThis.compagniesDateDispo=new Array()}dojo.forEach(data,function(eOption,k){if(selectElement=='idDepart'||selectElement=='idArrivee'){var selectValue=eval('eOption.'+paramValueName)+'|'+eOption.ville+'|'+eOption.iata}else{var selectValue=eval('eOption.'+paramValueName)}if(k==0&&dojo.byId(selectElement).hasChildNodes()&&(dojo.indexOf(['idDepart','idArrivee','idCompagnie'],selectElement)>-1)){dojo.byId(selectElement).innerHTML=''}newTagOption=oThis.buildOptionTag(selectElement,eval('eOption.'+paramValueHTML),selectValue);if(selectElement=='idDepart'){oThis.proximiteAeroport[eOption.villeRewrite]=eOption.proximite}else if(selectElement=='idCompagnie'){if(eOption.dateDispo!=''&&eOption.dateDispo!=undefined&&eOption.dateDispo!='NULL'&&eOption.dateDispo!='0000-00-00'){oThis.compagniesDateDispo[eOption.codevite]=eOption.dateDispo}if(eOption.url!=null&&eOption.url!=''){oThis.compagniesURL[eOption.codevite]=eOption.url.replace(/{arrivee}/,dojo.byId('idArrivee').value.split('|')[2]).replace(/{depart}/,dojo.byId('idDepart').value.split('|')[2])}else{oThis.compagniesURL[eOption.codevite]='http://toutgagner.com/codevite.php?cvite='+eOption.codevite}}});dojo.cookie('jsOogDep',null,{expires:-1});dojo.cookie('jsOogArv',null,{expires:-1});if(autoSelect==true){dojo.attr(newTagOption,'selected','selected');dojo.byId(selectElement).selectedIndex=0;oThis.eventAction(selectElement)}if(dojo.byId('hdSelDepart').hasChildNodes()&&dojo.byId('hdSelArrivee').hasChildNodes()&&dojo.byId('idDepart').hasChildNodes()&&dojo.byId('idArrivee').hasChildNodes()){oThis.enableSelectElement()}}}})},eventAction:function(selectElement){var oThis=this;oThis.disableSelectElement();var a2Keep=new Array(selectElement);var a2Update=new Array();if(selectElement==oThis.actionCollector[0]){oThis.actionCollector=new Array()}if(dojo.byId(selectElement).selectedIndex>-1&&dojo.indexOf(oThis.actionCollector,selectElement)==-1)oThis.actionCollector.push(selectElement);this.deleteLienPrix();if(dojo.byId('dateDispo')!=null)dojo.destroy('dateDispo');switch(selectElement){case 'hdSelDepart':oThis.razSelectedElement('hdSelDepart','idDepart',true);oThis.razSelectedElement('hdSelDepart','idArrivee',true);dojo.forEach(['hdSelArrivee','idDepart','idArrivee'],function(element){if(dojo.indexOf(oThis.actionCollector,element)==-1){a2Update.push(element)}else{a2Keep.push(element)}});break;case 'hdSelArrivee':oThis.razSelectedElement('hdSelArrivee','idDepart');oThis.razSelectedElement('hdSelArrivee','idArrivee',true);dojo.forEach(['idDepart','hdSelDepart','idArrivee'],function(element){if(dojo.indexOf(a2Keep,element)==-1){if(dojo.indexOf(oThis.actionCollector,element)==-1){a2Update.push(element)}else{if(element==='idDepart')a2Keep.push('hdSelDepart');a2Keep.push(element)}}});break;case 'idDepart':oThis.razSelectedElement('idDepart','idArrivee');a2Keep.push('hdSelDepart');if(oThis.actionCollector[0]=='idArrivee')a2Keep.push('hdSelArrivee');else
oThis.razSelectedElement('idDepart','hdSelArrivee');dojo.forEach(['hdSelArrivee','idArrivee'],function(element){if(dojo.indexOf(oThis.actionCollector,element)==-1){a2Update.push(element)}else{a2Keep.push(element)}});if(dojo.byId('idmb_formulaire')!=null){if(dojo.byId('idDepart').value!=''){oThis.addLinkHotel('Depart')}else
dojo.query('input',dojo.byId('idmb_formulaire'))[1].value=''}else if(dojo.byId('idmb_formulaire')==null&&dojo.byId('idDepart').value!=''){oThis.addLinkHotel('Depart')}break;case 'idArrivee':oThis.razSelectedElement('idArrivee','idDepart');a2Keep.push('hdSelArrivee');if(oThis.actionCollector[0]=='idDepart')a2Keep.push('hdSelDepart');dojo.forEach(['hdSelDepart','idDepart'],function(element){if(dojo.indexOf(oThis.actionCollector,element)==-1){a2Update.push(element)}else{a2Keep.push(element)}});if(dojo.byId('idmb_formulaire')!=null){if(dojo.byId('idArrivee').value!=''){oThis.addLinkHotel('Arrivee')}else
dojo.query('input',dojo.byId('idmb_formulaire'))[2].value=''}else if(dojo.byId('idmb_formulaire')==null&&dojo.byId('idArrivee').value!=''){oThis.addLinkHotel('Arrivee')}break;case 'idCompagnie':a2Keep=oThis.selectName;a2Update=new Array();oThis.addLinkCompagnie();oThis.addDateDispo();dojo.removeAttr(dojo.byId('idCompagnie'),'disabled');break}var fromVille='';if(dojo.byId('idDepart')!='')fromVille=dojo.byId('idDepart').value.split('|')[0];else if(dojo.cookie('jsOogDep')!=null)fromVille=dojo.cookie('jsOogDep');var toVille='';if(dojo.byId('idArrivee')!='')toVille=dojo.byId('idArrivee').value.split('|')[0];else if(dojo.cookie('jsOogArv')!=null)toVille=dojo.cookie('jsOogArv');var XHRqueryString='&fromPays='+dojo.byId('hdSelDepart').value+'&toPays='+dojo.byId('hdSelArrivee').value+'&fromVille='+fromVille+'&toVille='+toVille;oThis.selectRemoveOption(a2Keep);dojo.forEach(a2Update,function(tagElement){oThis.XHRGetData('loadData.php?laction='+oThis.xhrParameters[tagElement].laction+XHRqueryString,tagElement,oThis.xhrParameters[tagElement].rewriteValue,oThis.xhrParameters[tagElement].value)});if(dojo.byId('idDepart').value!=''&&dojo.byId('idArrivee').value!=''&&dojo.byId('idCompagnie').innerHTML==''){oThis.loadCompagnies()}oThis.enableSelectElement()},razAllElements:function(exceptElement){var oThis=this;dojo.forEach(this.selectName,function(element2erase){if(element2erase!=exceptElement){oThis.actionCollector.removeElement(element2erase);if(element2erase=='hdSelDepart'){dojo.byId(element2erase).value='limitrophes';dojo.byId(element2erase).selectedIndex=0}else if(element2erase=='hdSelArrivee'){dojo.byId(element2erase).value='tous';dojo.byId(element2erase).selectedIndex=0}else{if(dojo.byId('idmb_formulaire')!=null){if(element2erase=='idDepart'){dojo.query('input',dojo.byId('idmb_formulaire'))[1].value=''}else if(element2erase=='idArrivee'){dojo.query('input',dojo.byId('idmb_formulaire'))[2].value=''}}dojo.byId(element2erase).value='';dojo.byId(element2erase).selectedIndex=-1}}});if(dojo.byId('dvHotelArrivee')!=null){dojo.destroy('dvHotelArrivee')}if(dojo.byId('dvHotelDepart')!=null&&dojo.byId('idDepart').value==''){dojo.destroy('dvHotelDepart')}},razSelectedElement:function(elementSelect,element2erase,bForceErase){if(bForceErase==true||(dojo.indexOf(this.actionCollector,elementSelect)>-1&&(dojo.indexOf(this.actionCollector,elementSelect)<dojo.indexOf(this.actionCollector,element2erase)))||dojo.indexOf(this.actionCollector,element2erase)==-1){this.actionCollector.removeElement(element2erase);if(element2erase=='hdSelDepart'){dojo.byId(element2erase).value='limitrophes';dojo.byId(element2erase).selectedIndex=0}else if(element2erase=='hdSelArrivee'){dojo.byId(element2erase).value='tous';dojo.byId(element2erase).selectedIndex=0}else{if(dojo.byId('idmb_formulaire')!=null){if(element2erase=='idDepart'){dojo.query('input',dojo.byId('idmb_formulaire'))[1].value=''}else if(element2erase=='idArrivee'){dojo.query('input',dojo.byId('idmb_formulaire'))[2].value=''}}dojo.byId(element2erase).value='';dojo.byId(element2erase).selectedIndex=-1}if(element2erase=='idArrivee'&&dojo.byId(element2erase).value==''){if(dojo.byId('dvHotelArrivee')!=null){dojo.destroy('dvHotelArrivee')}}if(element2erase=='idDepart'&&dojo.byId(element2erase).value==''){if(dojo.byId('dvHotelDepart')!=null&&dojo.byId('idDepart').value==''){dojo.destroy('dvHotelDepart')}}}},enableSelectElement:function(){dojo.forEach(['hdSelDepart','hdSelArrivee','idDepart','idArrivee'],function(selectTag){dojo.removeAttr(dojo.byId(selectTag),'disabled')})},disableSelectElement:function(){dojo.forEach(['hdSelDepart','hdSelArrivee','idDepart','idArrivee','idCompagnie'],function(selectTag){dojo.attr(dojo.byId(selectTag),'disabled','disabled')})},loadCompagnies:function(){this.XHRGetData('loadData.php?laction=getCompagnies'+'&toPays='+dojo.byId('hdSelArrivee').value+'&fromPays='+dojo.byId('hdSelDepart').value+'&fromVille='+dojo.byId('idDepart').value.split('|')[0]+'&toVille='+dojo.byId('idArrivee').value.split('|')[0],'idCompagnie','codevite','compagnie');dojo.removeAttr(dojo.byId('idCompagnie'),'disabled')},addLinkCompagnie:function(){this.deleteLienPrix();dojo.create('a',{'class':'lienprix',href:this.compagniesURL[dojo.byId('idCompagnie').value],target:'_blank',innerHTML:'Cliquez ici pour voir les prix des vols<br/>'+dojo.byId('idDepart')[dojo.byId('idDepart').selectedIndex].innerHTML+' - '+dojo.byId('idArrivee')[dojo.byId('idArrivee').selectedIndex].innerHTML+' chez '+dojo.byId('idCompagnie')[dojo.byId('idCompagnie').selectedIndex].innerHTML},dojo.byId('iddvdescription'),'first')},addDateDispo:function(){if(dojo.byId('dateDispo')!=null)dojo.destroy('dateDispo');if(this.compagniesDateDispo[dojo.byId('idCompagnie').value]!=undefined){var tmp=this.compagniesDateDispo[dojo.byId('idCompagnie').value].split('-');var p=dojo.create('p',{id:'dateDispo',innerHTML:'Ouverture de la ligne pr'+String.fromCharCode(233)+'vu le '+tmp[2]+'/'+tmp[1]+'/'+tmp[0]});dojo.place(p,dojo.query('.lienprix')[0],'after')}},addLinkHotel:function(type){if(dojo.byId('dvHotel'+type)!=null){dojo.destroy('dvHotel'+type)}if(dojo.byId('dvHotel'+type)==null&&dojo.byId('id'+type).value!=''){var dvHotel=dojo.create('div',{id:'dvHotel'+type});dojo.create('a',{target:'_blank',href:'/hotels.php',innerHTML:'Trouver un h'+String.fromCharCode(244)+'tel '+String.fromCharCode(224)+' '+dojo.byId('id'+type).value.split('|')[1]},dvHotel);if(type=='Depart'){dojo.byId('iddvdescription').appendChild(dvHotel)}else{dojo.create('a',{target:'_blank',href:'/location-voiture.php',innerHTML:'Louer une voiture '+String.fromCharCode(224)+' l\'a'+String.fromCharCode(233)+'roport de '+dojo.byId('idArrivee')[dojo.byId('idArrivee').selectedIndex].innerHTML},dvHotel);if(dojo.byId('dvHotelDepart')!=null){dojo.byId('iddvdescription').insertBefore(dvHotel,dojo.byId('dvHotelDepart'))}else{dojo.byId('iddvdescription').appendChild(dvHotel)}}}},deleteLienPrix:function(){dojo.query('#iddvdescription .lienprix').forEach(dojo.destroy)},selectRemoveOption:function(select2keep){dojo.forEach(this.selectName,function(el){if(select2keep!=undefined&&dojo.indexOf(select2keep,el)==-1){dojo.empty(el);dojo.attr(dojo.byId(el),'disabled')}})},buildOptionTag:function(container,htmlValue,optValue){if((container=='idDepart'&&dojo.cookie('jsOogDep')!=null&&dojo.cookie('jsOogDep')==value)||(container=='idArrivee'&&dojo.cookie('jsOogArv')!=null&&dojo.cookie('jsOogArv')==value)){return dojo.create('option',{value:optValue,innerHTML:htmlValue,selected:'selected'},container)}return dojo.create('option',{value:optValue,innerHTML:htmlValue},container)},getLastElementInAction:function(){return this.actionCollector[this.actionCollector.length-1]},sendError:function(oErrors){var oThis=this;dojo.xhrPost({url:'/low-cost/engineErrors.php',content:oErrors})},debugShow:function(){console.log('actionCollector::='+this.actionCollector.join(';')+'\n'+'hdSelDepart:value::='+dojo.byId('hdSelDepart').value+' \n'+'------------------------- \n'+'hdSelArrivee:value::='+dojo.byId('hdSelArrivee').value+' \n'+'------------------------- \n'+'idDepart:value::='+dojo.byId('idDepart').value+' \n'+'idDepart:selectedIndex::='+dojo.byId('idDepart').selectedIndex+' \n'+'idDepart:actionCollector::='+dojo.indexOf(this.actionCollector,'idDepart')+' \n'+'------------------------- \n'+'idArrivee:value::='+dojo.byId('idArrivee').value+' \n'+'idArrivee:selectedIndex::='+dojo.byId('idArrivee').selectedIndex+' \n'+'idArrivee:actionCollector::='+dojo.indexOf(this.actionCollector,'idArrivee'))}});dojo.extend(String,{ucfirst:function(){return this.charAt(this,0).toUpperCase()+this.toLowerCase().substr(1)},rewriteString:function(){var sTmp=this.replace(/[àäãâ]/gi,"a");sTmp=sTmp.replace(/[éèêë]/gi,"e");sTmp=sTmp.replace(/[îï]/gi,"i");sTmp=sTmp.replace(/[ñ]/gi,"n");sTmp=sTmp.replace(/[ôö]/gi,"o");sTmp=sTmp.replace(/[ùûü]/gi,"u");sTmp=sTmp.replace(/[ç]/gi,"c");sTmp=sTmp.replace(/[ ]/gi,"-");sTmp=sTmp.replace(/[()]/gi,"");return sTmp.toLowerCase()}});dojo.extend(Array,{removeElement:function(elementToRemove){if(dojo.indexOf(this,elementToRemove)>-1){return this.remove(dojo.indexOf(this,elementToRemove))}else{return this}},remove:function(from,to){var rest=this.slice((to||from)+1||this.length);this.length=from<0?this.length+from:from;return this.push.apply(this,rest)},mergeUnique:function(array2merge){var oThis=this;dojo.forEach(array2merge,function(item){if(dojo.indexOf(oThis,item)==-1){oThis.push(item)}});return oThis}});dojo.addOnLoad(window,function(){dojo.require("dojo.cookie");new MBREngine()});
