var geoCodeResults = null; var opened = false; var ajaxDatas; window.addEvent('domready', function() { calculBody(); $('fondPopup').setProperties({style:'width:'+width_body+'px; height:'+height_body+'px;'}); new Fx.Style('fondPopup', 'opacity').set(0); addScrolltoTop(); addManifesteSlider(); openPopup(); }); function getVar (nomVariable){ var infos = location.href.substring(location.href.indexOf("?")+1, location.href.length)+"&" if (infos.indexOf("#")!=-1) infos = infos.substring(0,infos.indexOf("#"))+"&" var variable = 0 nomVariable = nomVariable + "=" var taille = nomVariable.length if (infos.indexOf(nomVariable)!=-1) { variable = infos.substring(infos.indexOf(nomVariable)+taille,infos.length).substring(0,infos.substring(infos.indexOf(nomVariable)+taille,infos.length).indexOf("&")) } return variable; } function addScrolltoTop(){ var myTransition = new Fx.Transition(Fx.Transitions.Sine); var scroll = new Fx.Scroll(window, {duration: 600,transition: myTransition.easeOut} ); $$('#home a.openPopup').each(function(el){; el.addEvent('click', function(e) { e = new Event(e); scroll.toTop(); e.stop(); }); }); } function addManifesteSlider(){ if($('home')){ $('cntSlide').setStyles('overflow:hidden; cursor:n-resize;'); $('slider').setStyle('display','block'); var scroll2 = new Scroller('cntSlide', {area: 0, velocity: 1}); $('cntSlide').addEvent('mouseover', scroll2.start.bind(scroll2)); $('cntSlide').addEvent('mouseout', scroll2.stop.bind(scroll2)); var lastPositionTop; scroll2.addEvent('onChange',function(){ var positionTop = $('cntSlide').getSize().scroll.y; var btnTop = $('btn').getStyle('top').toInt(); if(positionTop < lastPositionTop){ if(btnTop<=25) $('btn').setStyle('top',10); else $('btn').setStyle('top',btnTop-25); lastPositionTop = btnTop; } else{ if(btnTop>=470) $('btn').setStyle('top',485); else $('btn').setStyle('top',btnTop+25); lastPositionTop = btnTop; } }); Element.Events.extend({ 'wheelup': { type: Element.Events.mousewheel.type, map: function(event){ event = new Event(event); if (event.wheel >= 0) this.fireEvent('wheelup', event) } }, 'wheeldown': { type: Element.Events.mousewheel.type, map: function(event){ event = new Event(event); if (event.wheel <= 0) this.fireEvent('wheeldown', event) } } }); $('cntSlide').addEvents({ 'wheelup': function(e) { e = new Event(e).stop(); var btnTop = $('btn').getStyle('top').toInt(); var scrollY = this.getSize().scroll.y; if(btnTop <= 25){ $('btn').setStyle('top',10); this.scrollTo(scrollY, scrollY-25); } else{ $('btn').setStyle('top',btnTop-25); this.scrollTo(scrollY, scrollY-25); } }, 'wheeldown': function(e) { e = new Event(e).stop(); var btnTop = $('btn').getStyle('top').toInt(); var scrollY = this.getSize().scroll.y; if(btnTop >= 460){ $('btn').setStyle('top',475); this.scrollTo(scrollY, scrollY+25); } else{ $('btn').setStyle('top',btnTop+25); this.scrollTo(scrollY, scrollY+25); } } }); var scrollY = $('cntSlide').getSize().scroll.y; var mySlide3 = new Slider($('slider'), $('btn'), { steps: 470, offset:-10, mode: 'vertical', onChange: function(step){ $('cntSlide').scrollTo(scrollY, step+25) if(step == 0) $('cntSlide').scrollTo(scrollY, step-25); } }).set(10); $('btn').setStyle('top',10); $('cntSlide').scrollTo(scrollY, -10) } } var heightPopupContent; function getContent(url,replace,callback){ var ajax = new Ajax(url, { method: 'get', update: $(replace), data: ajaxDatas, onComplete: function() { if (callback != null) { callback(); openPopup(); closePopup(); heightPopupContent = $('popup').getSize().size.y; } } }).request(); } function loadAsset(typeFile,file,id){ switch(typeFile) { case 'css': new Asset.css(''+file+'', {id: ''+id+''}); break; default: new Asset.javascript(''+file+'', {id: ''+id+''}); break; } } function resizeElement(elm,width,height){ $(elm).setStyle('width',''+width+'px'); $(elm).setStyle('height',''+height+'px'); } function calculBody(){ width_body = window.getWidth(); height_body = window.getScrollHeight(); } window.onresize = function(){ calculBody(); resizeElement('fondPopup',width_body,height_body); } function closePopup(){ var elms = $ES('.closePopup','popup_center'); elms.each(function(el){ el.addEvent('click', function(e) { e = new Event(e); hidePopup(); $("conteneur").focus(); e.stop(); }); }); } function hidePopup() { var fx2 = $('popup').effects({duration: 600,transition: Fx.Transitions.Quart.easeOut}); fx2.start({'width':0,'height':0,opacity:0, duration: 200}); $('popup').empty(); $('popup').setStyle('visibility','hidden'); var fx = $('fondPopup').effects({duration: 600,transition: Fx.Transitions.Quart.easeOut}); fx.start({'width':0,'height':0,opacity : 0, duration: 200}); $('js_popup').remove(); $('js_popup2').remove(); $('css_popup').remove(); $('css_popup2').remove(); } //actionid function openPopup(actionid){ var elms = $ES('.openPopup','home'); var get_popup = getVar("popup"); var get_id = getVar("id"); if((get_id != "") && (get_popup == "validation")){ open(); } elms.each(function(el){ el.addEvent('click', function(e) { e = new Event(e); opened = false; var elm = this; if($("fondPopup").style.visibility == "visible"){ hidePopup(); (function(){ open(elm); }).delay(1500); } else{ open(elm); } e.stop(); return false; }); }); function open(elm){ if(opened == false){ calculBody(); if((get_id != "") && (get_popup == "validation") && (opened == false)){ var content = get_popup; ajaxDatas = "id="+get_id+""; } else{ var content = elm.getAttribute('href'); var position = (content.lastIndexOf("=")+1).toInt(); ajaxDatas = "id="+actionid+""; content = content.substr(position); } var fx = $('fondPopup').effects(); new Fx.Style('popup', 'opacity').set(0); $('popup').setStyle('background','#EDEDED'); $('popup').setStyle('border','1px solid #A0B71F'); fx.start( {width: width_body, height: height_body, opacity : .7, duration: 500} ).chain(function(){ $('popup').setStyle('visibility','visible'); var fx2 = $('popup').effects({duration: 600,transition: Fx.Transitions.Quart.easeOut}); fx2.start({'width':543,'height':600,opacity:1, duration: 200}).chain(function(){ $('popup').setStyle('background','none'); $('popup').setStyle('border','0'); getContent('/fair_friends/includes/popup/'+content+'.inc.php','popup', function() { calculBody(); resizeElement('fondPopup',width_body,height_body); loadAsset('css','/fair_friends/css/popup.css','css_popup'); loadAsset('css','/fair_friends/css/'+content+'.css','css_popup2'); loadAsset('js','/fair_friends/js/popup.php','js_popup'); loadAsset('js','/fair_friends/js/'+content+'.php','js_popup2'); $("popup").focus(); } ); }); }); } opened = true; } } function geoCodeLocPopup(country, address, ville, postcode) { geoCodeLoc(country, address, ville, postcode, displaygeoCodeLocPopup); } function displaygeoCodeLocPopup(geoCodeResults) { $('geocode_results').setHTML(''); /** * It can be empty, even with status == 200. * So we test for it */ if (geoCodeResults.length > 0) { //only 1 result, fill in the fields automatically if (geoCodeResults.length == 1) { var geoCodeResult = geoCodeResults[0]; var latitude = geoCodeResult[0]; var longitude = geoCodeResult[1]; var address = geoCodeResult[4]; var postcode = geoCodeResult[2]; var city = geoCodeResult[3]; $('latitude').value = latitude; $('longitude').value = longitude; $('champ_rue').value = address; $('champ_cp').value = postcode; $('champ_ville').value =city; var p = new Element('p'); //p.setStyle('color', '#F00'); p.addClass('erreur'); p.addClass('errorMessage'); p.appendText("Adresse valide."); p.injectInside($('geocode_results')); $('geocode_results').setStyle('display','block'); $('geocode_results').setStyle('display','block'); } //several results, show a drop down of choices else { var select = new Element('select'); select.setProperty('name','champ_geocode_result'); select.setProperty('id','geocode_result'); for(var i = 0; i < geoCodeResults.length; i++) { var geoCodeResult = geoCodeResults[i]; var latitude = geoCodeResult[0]; var longitude = geoCodeResult[1]; var address = geoCodeResult[4]; var postcode = geoCodeResult[2]; var city = geoCodeResult[3]; var option = new Element('option'); option.setProperty('value',i); option.setHTML(address + ', ' + city + ', ' + postcode); option.injectInside(select); } select.injectInside($('geocode_results')); $('geocode_results').setStyle('display','block'); // inutile, $('geocode_results') est une div, pas d'event change $('geocode_results').addEvent( 'change', function(evt){ new Event(evt).stop(); setCoordInHiddenFields($('geocode_result').getValue()); } ); // $('geocode_result') et non $('geocode_results') $('geocode_result').addEvent( 'change', function(evt){ new Event(evt).stop(); setCoordInHiddenFields(this.value); } ); } } else { var p = new Element('p'); //p.setStyle('color', '#F00'); p.addClass('erreur'); p.addClass('errorMessage'); p.appendText("Cette adresse n'a pu être trouvée."); p.injectInside($('geocode_results')); $('geocode_results').setStyle('display','block'); } } function geoCodeLoc(country, address, ville, postcode, display) { if (display == null) { alert('display is null.'); return; } var url = '/fair_friends/ajax/getCoordinates.php'; var q = country + '+' + address + '+' + ville + '+' + postcode ; url += '?query=' + q; var jSonRequest = new Json.Remote( url, { async : true, method: 'post', onComplete: function(coord){ geoCodeResults = []; var status = coord.Status.code; if (status == 200 || status == '200') //found { for(var i = 0; i < coord.Placemark.length; i++) { var placemark = coord.Placemark[i]; // just make sure the placemark in in france var country = placemark.AddressDetails.Country.CountryNameCode; if (country != 'FR') continue; var latitude = placemark.Point.coordinates[1]; var longitude = placemark.Point.coordinates[0]; /** * It happens that sometimes, even with status == 200, the entry is invalid. * Searching for city=q, postcode=q and stree=q is one of them, * ie it returns a results that's meaningless * (well, it actually points to france itself since "France" was the only term understood) */ if (placemark.AddressDetails.Country.AdministrativeArea == null) { continue; } var subAdministrativeArea = placemark.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea; var locality = subAdministrativeArea.Locality; var postcode = ""; var city = ""; var address = ""; var council = ""; if (locality.DependentLocality != null) { //esentially null when search on paris with very approximate address if (locality.DependentLocality.PostalCode == null) { address = locality.DependentLocality.DependentLocalityName; } else { postcode = locality.DependentLocality.PostalCode.PostalCodeNumber; address = locality.DependentLocality.Thoroughfare.ThoroughfareName; } } else { postcode = locality.PostalCode.PostalCodeNumber; address = locality.Thoroughfare.ThoroughfareName; } city = locality.LocalityName; council = subAdministrativeArea.SubAdministrativeAreaName; var t = []; t.push(latitude); t.push(longitude); t.push(postcode); t.push(city); t.push(address); t.push(council); geoCodeResults[i] = t; } //callback display(geoCodeResults); } else { $('geocode_results').setHTML(''); var p = new Element('p'); //p.setStyle('color', '#F00'); p.addClass('erreur'); p.addClass('errorMessage'); p.appendText("Cette adresse n'a pu être trouvée."); p.injectInside($('geocode_results')); $('geocode_results').setStyle('display','block'); } } } ).send(); } function setCoordInHiddenFields(index) { var geoCodeResult = geoCodeResults[index]; $('latitude').value = geoCodeResult[0]; $('longitude').value = geoCodeResult[1]; $('champ_rue').value = geoCodeResult[4]; $('champ_cp').value = geoCodeResult[2]; $('champ_ville').value = geoCodeResult[3]; $('geocode_results').setHTML(''); var p = new Element('p'); //p.setStyle('color', '#F00'); p.addClass('erreur'); p.addClass('errorMessage'); p.appendText("Adresse valide."); p.injectInside($('geocode_results')); $('geocode_results').setStyle('display','block'); return; }