Valraiso.namespace("popgom.fitting");function mapInit(latitude,longitude,locale){popgom.fitting.list.init(latitude,longitude,locale);}function directionInit(latitude,longitude,fitterLatitude,fitterLongitude,locale){popgom.fitting.direction.init(latitude,longitude,fitterLatitude,fitterLongitude,locale);}popgom.fitting.list={url:"/fittingAjax",scriptExpr:"(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)",userPoint:null,init:function(latitude,longitude,locale){this.userPoint=new google.maps.LatLng(latitude,longitude);popgom.fitting.map.init("list",locale);},drawUserMarkerAndGetFitters:function(){popgom.fitting.map.centerView(this.userPoint);var div=EL("listecentres");Valraiso.DOM.addClassName(div,"scroll",false);this.evalScripts(div.innerHTML);popgom.fitting.map.setUserMarker(this.userPoint);popgom.fitting.map.seeAllMarkers();google.maps.Event.addListener(popgom.fitting.map.instance,"dragend",function(){popgom.fitting.map.dragEnd();});google.maps.Event.addListener(popgom.fitting.map.instance,"zoomend",function(){popgom.fitting.map.dragEnd();});},searchByPoint:function(lat,lng,rayon,refLat,refLng){var query=Bw.IO.Query.create();var url=this.url;url+="?latitude=";url+=lat;url+="&longitude=";url+=lng;if(rayon!=null){url+="&rayon=";url+=rayon;}if(refLat!=null){url+="&refLat=";url+=refLat;}if(refLng!=null){url+="&refLng=";url+=refLng;}var div=EL("listecentres");Valraiso.DOM.addClassName(div,"scroll",false);query.setNoCache();query.get(url,this.showList.bind(this,query,(rayon==null)));},showList:function(query,changeZoom){var html=query.getText();var div=EL("listecentres");div.innerHTML=html;this.evalScripts(html);if(changeZoom){popgom.fitting.map.seeAllMarkers();}},extractScripts:function(html){var matchAll=new RegExp(this.scriptExpr,"img");var matchOne=new RegExp(this.scriptExpr,"im");var tags=html.match(matchAll);var scripts=new Array();if(tags==null){return scripts;}for(var i=0;i<tags.length;i++){var fragment=tags[i].match(matchOne);if(fragment){scripts.push(fragment[1]);}}return scripts;},evalScripts:function(html){var scripts=this.extractScripts(html);for(var i=0;i<scripts.length;i++){var script=scripts[i];eval(script);}}};popgom.fitting.direction={fitterPoint:null,userPoint:null,init:function(lat,lng,fitterLat,fitterLng,locale){this.fitterPoint=new google.maps.LatLng(fitterLat,fitterLng);this.userPoint=new google.maps.LatLng(lat,lng);popgom.fitting.map.init("direction",locale);},draw:function(locale){popgom.fitting.map.centerView(this.userPoint);popgom.fitting.map.seePoints([this.fitterPoint,this.userPoint]);popgom.fitting.map.drawDirection(this.userPoint,this.fitterPoint,locale);}};popgom.fitting.map={instance:null,markerMgr:null,markers:new Array(),initialMarkers:new Array(),dirMgr:null,defautUserPoint:null,nbInitialZoom:null,init:function(context,locale){if(!google.maps.BrowserIsCompatible()){return;}var mapElement=EL("map");var map=this.instance=new google.maps.Map2(mapElement);map.addControl(new google.maps.LargeMapControl());map.addControl(new google.maps.MenuMapTypeControl());map.disableDoubleClickZoom();map.enableContinuousZoom();map.enableScrollWheelZoom();if(context=="list"){popgom.fitting.list.drawUserMarkerAndGetFitters();}else{if(context=="direction"){popgom.fitting.direction.draw(locale);}}},dragEnd:function(){var map=this.instance;var bounds=map.getBounds();var ne=bounds.getNorthEast();var neLng=ne.lng();var center=map.getCenter();var centerLng=center.lng();var centerLat=center.lat();var rayon=Math.abs((neLng-centerLng)*34000/360);var refLat=this.defautUserPoint.lat();var refLng=this.defautUserPoint.lng();this.markerMgr=new google.maps.MarkerManager(this.instance);map.clearOverlays();popgom.fitting.map.deleteAllMarkers();popgom.fitting.map.setUserMarker();popgom.fitting.list.searchByPoint(centerLat,centerLng,rayon,refLat,refLng);},centerView:function(point,zoom){if(!zoom){zoom=16;}this.instance.setCenter(point,zoom);if(!this.markerMgr){this.markerMgr=new google.maps.MarkerManager(this.instance);}this.instance.savePosition();},addFitterMarker:function(index,lat,lng,info){var icon=new google.maps.Icon(google.maps.DEFAULT_ICON,"/img/googlemap/"+index+".gif");icon.shadow="";var point=new google.maps.LatLng(lat,lng);var marker=new google.maps.Marker(point,{icon:icon});marker.bindInfoWindowHtml(info);this.addMarker(marker);},setUserMarker:function(point){if(point==null){point=this.defautUserPoint;}else{this.defautUserPoint=point;}var icon=new google.maps.Icon(google.maps.DEFAULT_ICON,"/img/googlemap/home.gif");icon.shadow="";var marker=new google.maps.Marker(point,{icon:icon});this.addMarker(marker);},addMarker:function(marker){if(this.markerMgr==null){return;}this.markerMgr.addMarker(marker,1);this.markerMgr.refresh();this.markers.push(marker);if(this.initialMarkers.length<this.nbInitialZoom){this.initialMarkers.push(marker);}},seeAllMarkers:function(){var bounds=new google.maps.LatLngBounds();for(var i=0;i<this.initialMarkers.length;i++){bounds.extend(this.initialMarkers[i].getPoint());}this.enlargeView(bounds);},deleteAllMarkers:function(){for(var i=0;i<this.markers.length;i++){var marker=this.markers[i];marker.setPoint(new GLatLng(90,0));}this.markers=[];this.initialMarkers=[];},seePoints:function(points){var bounds=new google.maps.LatLngBounds();for(var i=0;i<points.length;i++){bounds.extend(points[i]);}this.enlargeView(bounds);},enlargeView:function(bounds){var center=bounds.getCenter();var zoom=this.instance.getBoundsZoomLevel(bounds);this.centerView(center,zoom);if(!this.areAllMarkersVisibled(bounds)){this.centerView(center,zoom-1);}},areAllMarkersVisibled:function(bounds){var topRightPoint=this.instance.fromLatLngToDivPixel(bounds.getNorthEast());var bottomLeftPoint=this.instance.fromLatLngToDivPixel(bounds.getSouthWest());var size=this.instance.getSize();if((size.width-topRightPoint.x)<20||bottomLeftPoint.x<20){return false;}if((size.height-bottomLeftPoint.y)<34||topRightPoint.y<34){return false;}return true;},drawDirection:function(from,to,locale){if(!this.dirMgr){this.dirMgr=new google.maps.Directions(this.instance,EL("itineraire"));}this.dirMgr.loadFromWaypoints([from,to],{preserveViewport:true,locale:locale});}};function onFitterDateFieldChange(){var dateField=EL("datesField");var hourExpress=EL("hourExpress");var value=Valraiso.form.select.getSelectedValue(dateField);var expressAppointment="";if(hourExpress!=null){expressAppointment="&hour="+hourExpress.value;var blockLabelHour=EL("idLabelHour");if(blockLabelHour!=null){var pos=value.indexOf("express");if(pos!=-1){blockLabelHour.style.display="none";}else{blockLabelHour.style.display="block";}}}var url="/FitterOpenedHours?fitterid="+fitterid+"&date="+value+expressAppointment;var query=Bw.IO.Query.create();query.setNoCache();query.get(url,function(){gotFitterOpenedHours(query);});}function gotFitterOpenedHours(query){var content=query.getText();var sel=EL("hoursField");sel.innerHTML=content;}function onFitterDateFieldChangePopup(fitterid){var dateField=EL("datesField");var hourExpress=EL("hourExpress");var value=Valraiso.form.select.getSelectedValue(dateField);var expressAppointment="";if(hourExpress!=null){expressAppointment="&hour="+hourExpress.value;var blockLabelHour=EL("idLabelHour");if(blockLabelHour!=null){var pos=value.indexOf("express");if(pos!=-1){blockLabelHour.style.display="none";}else{blockLabelHour.style.display="block";}}}var url="/FitterOpenedHours?fitterid="+fitterid+"&date="+value+expressAppointment;var query=Bw.IO.Query.create();query.setNoCache();query.get(url,function(){gotFitterOpenedHours(query);});}function gotFitterOpenedHoursOrderProcess(query,suffix){var content=query.getText();var hoursFieldDiv="hoursField";if(suffix!=null&&suffix!=""){hoursFieldDiv+=suffix;}var sel=EL(hoursFieldDiv);sel.innerHTML=content;}function onFitterDateFieldChangePopupOrderProcess(fitterid,suffix){var dateFieldId="datesField";if(suffix!=null&&suffix!=""){dateFieldId+=suffix;}var dateField=EL(dateFieldId);var value=Valraiso.form.select.getSelectedValue(dateField);var url="/FitterOpenedHours?orderProcessNoExpress=true&fitterid="+fitterid+"&date="+value;var query=Bw.IO.Query.create();if(suffix!=null&&suffix!=""){url+="&fieldExpress=true";}query.setNoCache();query.get(url,function(){gotFitterOpenedHoursOrderProcess(query,suffix);});}function onFitterDateFieldChangePopupOrderProcessExpress(fitterid,suffix){var dateFieldId="datesField";if(suffix!=null&&suffix!=""){dateFieldId+=suffix;}var dateField=EL(dateFieldId);var value=Valraiso.form.select.getSelectedValue(dateField);var url="/FitterOpenedHours?orderProcessExpress=true&fitterid="+fitterid+"&date="+value;var query=Bw.IO.Query.create();if(suffix!=null&&suffix!=""){url+="&fieldExpress=true";}query.setNoCache();query.get(url,function(){gotFitterOpenedHoursOrderProcess(query,suffix);});}popgom.fitting.appointment={planningPeriods:new Array(),nullDateMessage:null,carModelUrl:"/carModelAjax",dateStart:null,dateStop:null,setDatePeriod:function(dateFrom,dateTo){this.dateStart=Bw.Date.Helpers.read(dateFrom);this.dateStop=Bw.Date.Helpers.read(dateTo);var dateField=EL("dateField");dateField.setValue(this.dateStart);},setAppointmentDate:function(date,hour){var datesField=EL("datesField");var hoursField=EL("hoursField");var appointmentDate=Bw.Date.Helpers.read(date);if(!this.isAvailableDate(appointmentDate)){return;}datesField.setValue(appointmentDate);onFitterDateFieldChange();Valraiso.form.select.setSelectedValue(hoursField,hour);},addPlaningPeriod:function(dayFrom,dayTo,times){var period={dayFrom:dayFrom-1,dayTo:dayTo-1,times:new Array()};for(var i=0;i<times.length;){var tF=this._parseTime(times[i++]);var tT=this._parseTime(times[i++]);period.times.push({hourFrom:tF[0],hourTo:tT[0],minFrom:tF[1],minTo:tT[1]});}this.planningPeriods.push(period);},_parseTime:function(time){var t=time.split(":");var h=parseInt(t[0],10);var m=(t.length>1?parseInt(t[1],10):0);return[h,m];},searchPeriodForDay:function(day){for(var i=0;i<this.planningPeriods.length;i++){var period=this.planningPeriods[i];if(day>=period.dayFrom&&day<=period.dayTo){return period;}}return null;},getListOfHoursForPeriod:function(period){var hours=new Array();for(var i=0;i<period.times.length;i++){var time=period.times[i];var h=time.hourFrom;var m=time.minFrom;hours.push(h+":"+this._zeroPadding(m));h+=1+(m>0?1:0);for(;h<time.hourTo;h++){hours.push(h+":00");}}return hours;},_zeroPadding:function(v){if(v<10){return"0"+v;}return v;},setCar:function(carMaker,carModel,other){var carMakerField=EL("carMakerField");var otherField=EL("otherField");if(!carMakerField){return;}Valraiso.form.select.setSelectedValue(carMakerField,carMaker);this.onCarMakerChange(carModel);otherField.value=other;this.showHideOtherAccordingMakerAndModel(carMaker,carModel);},onCarMakerChange:function(carModel){var popup=EL("carMakerField");var value=Valraiso.form.getFieldValue(popup);if(value&&value.charAt(0)!="#"){EL("carModelContainer").style.display="block";EL("otherModelContainer").style.display="none";var query=Bw.IO.Query.create();var url=this.carModelUrl+"?carMaker="+value;if(carModel!=null){url+="&carModel="+escape(carModel);}query.setNoCache();query.get(url,function(){gotMultiPopupCarModel(query,"");});}else{if(value=="#other"){EL("carModelContainer").style.display="none";EL("otherModelContainer").style.display="block";}else{var other=EL("otherCarModel");Valraiso.form.select.setSelectedValue(EL("carModelField"),"#none");if(other!=null){other.value="";}EL("carModelContainer").style.display="none";EL("otherModelContainer").style.display="none";}}},onCarModelChange:function(){var popup=EL("carModelField");var value=Valraiso.form.getFieldValue(popup);if(value=="#other"){EL("otherModelContainer").style.display="block";}else{EL("otherModelContainer").style.display="none";}},showHideOtherAccordingMakerAndModel:function(maker,model){if(maker=="#other"||model=="#other"){EL("otherModelContainer").style.display="block";}else{EL("otherModelContainer").style.display="none";}},setPopupModelOptions:function(query,callback){var popup=EL("carModelContainer");popup.innerHTML=query.getText();},isAvailableDate:function(date){if(date.getTime()<this.dateStart.getTime()||date.getTime()>this.dateStop.getTime()){return false;}var period=this.searchPeriodForDay(date.getDay());return(period!=null);}};Function.prototype.bind=function(target){var _this=this;var _target=target;var _arguments=new Array();for(var i=1;i<arguments.length;_arguments[i-1]=arguments[i++]){}var _func=function(){var arg=new Array();for(var i=0;i<_arguments.length;arg.push(_arguments[i++])){}for(var i=0;i<arguments.length;arg.push(arguments[i++])){}return _this.apply(_target,arg);};return _func;};
