"use strict";(function(root,factory){if(typeof exports==='object'){module.exports=factory()}else if(typeof define==='function'&&define.amd){define('GMaps',[],factory)} root.GMaps=factory()}(this,function(){if(!(typeof window.google==='object'&&window.google.maps)){throw 'Google Maps API is required. Please register the following JavaScript library http://maps.google.com/maps/api/js?sensor=true.'} var extend_object=function(obj,new_obj){var name;if(obj===new_obj){return obj} for(name in new_obj){obj[name]=new_obj[name]} return obj};var replace_object=function(obj,replace){var name;if(obj===replace){return obj} for(name in replace){if(obj[name]!=undefined){obj[name]=replace[name]}} return obj};var array_map=function(array,callback){var original_callback_params=Array.prototype.slice.call(arguments,2),array_return=[],array_length=array.length,i;if(Array.prototype.map&&array.map===Array.prototype.map){array_return=Array.prototype.map.call(array,function(item){callback_params=original_callback_params;callback_params.splice(0,0,item);return callback.apply(this,callback_params)})}else{for(i=0;i0&&typeof(coords[i][0])==="object"){coords[i]=arrayToLatLng(coords[i],useGeoJSON)}else{coords[i]=coordsToLatLngs(coords[i],useGeoJSON)}}} return coords};var getElementsByClassName=function(class_name,context){var element,_class=class_name.replace('.','');if('jQuery' in this&&context){element=$("."+_class,context)[0]}else{element=document.getElementsByClassName(_class)[0]} return element};var getElementById=function(id,context){var element,id=id.replace('#','');if('jQuery' in window&&context){element=$('#'+id,context)[0]}else{element=document.getElementById(id)};return element};var findAbsolutePosition=function(obj){var curleft=0,curtop=0;if(obj.offsetParent){do{curleft+=obj.offsetLeft;curtop+=obj.offsetTop}while(obj=obj.offsetParent);} return[curleft,curtop]};var GMaps=(function(global){"use strict";var doc=document;var GMaps=function(options){if(!this)return new GMaps(options);options.zoom=options.zoom||15;options.mapType=options.mapType||'roadmap';var self=this,i,events_that_hide_context_menu=['bounds_changed','center_changed','click','dblclick','drag','dragend','dragstart','idle','maptypeid_changed','projection_changed','resize','tilesloaded','zoom_changed'],events_that_doesnt_hide_context_menu=['mousemove','mouseout','mouseover'],options_to_be_deleted=['el','lat','lng','mapType','width','height','markerClusterer','enableNewStyle'],identifier=options.el||options.div,markerClustererFunction=options.markerClusterer,mapType=google.maps.MapTypeId[options.mapType.toUpperCase()],map_center=new google.maps.LatLng(options.lat,options.lng),zoomControl=options.zoomControl||!0,zoomControlOpt=options.zoomControlOpt||{style:'DEFAULT',position:'TOP_LEFT'},zoomControlStyle=zoomControlOpt.style||'DEFAULT',zoomControlPosition=zoomControlOpt.position||'TOP_LEFT',panControl=options.panControl||!0,mapTypeControl=options.mapTypeControl||!0,scaleControl=options.scaleControl||!0,streetViewControl=options.streetViewControl||!0,overviewMapControl=overviewMapControl||!0,map_options={},map_base_options={zoom:this.zoom,center:map_center,mapTypeId:mapType},map_controls_options={panControl:panControl,zoomControl:zoomControl,zoomControlOptions:{style:google.maps.ZoomControlStyle[zoomControlStyle],position:google.maps.ControlPosition[zoomControlPosition]},mapTypeControl:mapTypeControl,scaleControl:scaleControl,streetViewControl:streetViewControl,overviewMapControl:overviewMapControl};if(typeof(options.el)==='string'||typeof(options.div)==='string'){if(identifier.indexOf("#")>-1){this.el=getElementById(identifier,options.context)}else{this.el=getElementsByClassName.apply(this,[identifier,options.context])}}else{this.el=identifier} if(typeof(this.el)==='undefined'||this.el===null){throw 'No element defined.'} window.context_menu=window.context_menu||{};window.context_menu[self.el.id]={};this.controls=[];this.overlays=[];this.layers=[];this.singleLayers={};this.markers=[];this.polylines=[];this.routes=[];this.polygons=[];this.infoWindow=null;this.overlay_el=null;this.zoom=options.zoom;this.registered_events={};this.el.style.width=options.width||this.el.scrollWidth||this.el.offsetWidth;this.el.style.height=options.height||this.el.scrollHeight||this.el.offsetHeight;google.maps.visualRefresh=options.enableNewStyle;for(i=0;i'+option.title+''}} if(!getElementById('gmaps_context_menu'))return;var context_menu_element=getElementById('gmaps_context_menu');context_menu_element.innerHTML=html;var context_menu_items=context_menu_element.getElementsByTagName('a'),context_menu_items_count=context_menu_items.length,i;for(i=0;i-1){var marker=this.markers[index];marker.setMap(null);if(this.markerClusterer){this.markerClusterer.removeMarker(marker)} GMaps.fire('marker_removed',marker,this)}} for(var i=0;i0){if(options.paths[0].length>0){options.paths=array_flat(array_map(options.paths,arrayToLatLng,useGeoJSON))}} var polygon=new google.maps.Polygon(options),polygon_events=['click','dblclick','mousedown','mousemove','mouseout','mouseover','mouseup','rightclick'];for(var ev=0;ev0){if(options.locations[0].length>0){options.locations=array_flat(array_map([options.locations],arrayToLatLng,!1))}} var callback=options.callback;delete options.callback;var service=new google.maps.ElevationService();if(!options.path){delete options.path;delete options.samples;service.getElevationForLocations(options,function(result,status){if(callback&&typeof(callback)==="function"){callback(result,status)}})}else{var pathRequest={path:options.locations,samples:options.samples};service.getElevationAlongPath(pathRequest,function(result,status){if(callback&&typeof(callback)==="function"){callback(result,status)}})}};GMaps.prototype.cleanRoute=GMaps.prototype.removePolylines;GMaps.prototype.drawRoute=function(options){var self=this;this.getRoutes({origin:options.origin,destination:options.destination,travelMode:options.travelMode,waypoints:options.waypoints,unitSystem:options.unitSystem,error:options.error,callback:function(e){if(e.length>0){var polyline_options={path:e[e.length-1].overview_path,strokeColor:options.strokeColor,strokeOpacity:options.strokeOpacity,strokeWeight:options.strokeWeight};if(options.hasOwnProperty("icons")){polyline_options.icons=options.icons} self.drawPolyline(polyline_options);if(options.callback){options.callback(e[e.length-1])}}}})};GMaps.prototype.travelRoute=function(options){if(options.origin&&options.destination){this.getRoutes({origin:options.origin,destination:options.destination,travelMode:options.travelMode,waypoints:options.waypoints,unitSystem:options.unitSystem,error:options.error,callback:function(e){if(e.length>0&&options.start){options.start(e[e.length-1])} if(e.length>0&&options.step){var route=e[e.length-1];if(route.legs.length>0){var steps=route.legs[0].steps;for(var i=0,step;step=steps[i];i++){step.step_number=i;options.step(step,(route.legs[0].steps.length-1))}}} if(e.length>0&&options.end){options.end(e[e.length-1])}}})}else if(options.route){if(options.route.legs.length>0){var steps=options.route.legs[0].steps;for(var i=0,step;step=steps[i];i++){step.step_number=i;options.step(step)}}}};GMaps.prototype.drawSteppedRoute=function(options){var self=this;if(options.origin&&options.destination){this.getRoutes({origin:options.origin,destination:options.destination,travelMode:options.travelMode,waypoints:options.waypoints,error:options.error,callback:function(e){if(e.length>0&&options.start){options.start(e[e.length-1])} if(e.length>0&&options.step){var route=e[e.length-1];if(route.legs.length>0){var steps=route.legs[0].steps;for(var i=0,step;step=steps[i];i++){step.step_number=i;var polyline_options={path:step.path,strokeColor:options.strokeColor,strokeOpacity:options.strokeOpacity,strokeWeight:options.strokeWeight};if(options.hasOwnProperty("icons")){polyline_options.icons=options.icons} self.drawPolyline(polyline_options);options.step(step,(route.legs[0].steps.length-1))}}} if(e.length>0&&options.end){options.end(e[e.length-1])}}})}else if(options.route){if(options.route.legs.length>0){var steps=options.route.legs[0].steps;for(var i=0,step;step=steps[i];i++){step.step_number=i;var polyline_options={path:step.path,strokeColor:options.strokeColor,strokeOpacity:options.strokeOpacity,strokeWeight:options.strokeWeight};if(options.hasOwnProperty("icons")){polyline_options.icons=options.icons} self.drawPolyline(polyline_options);options.step(step)}}}};GMaps.Route=function(options){this.origin=options.origin;this.destination=options.destination;this.waypoints=options.waypoints;this.map=options.map;this.route=options.route;this.step_count=0;this.steps=this.route.legs[0].steps;this.steps_length=this.steps.length;var polyline_options={path:new google.maps.MVCArray(),strokeColor:options.strokeColor,strokeOpacity:options.strokeOpacity,strokeWeight:options.strokeWeight};if(options.hasOwnProperty("icons")){polyline_options.icons=options.icons} this.polyline=this.map.drawPolyline(polyline_options).getPath()};GMaps.Route.prototype.getRoute=function(options){var self=this;this.map.getRoutes({origin:this.origin,destination:this.destination,travelMode:options.travelMode,waypoints:this.waypoints||[],error:options.error,callback:function(){self.route=e[0];if(options.callback){options.callback.call(self)}}})};GMaps.Route.prototype.back=function(){if(this.step_count>0){this.step_count--;var path=this.route.legs[0].steps[this.step_count].path;for(var p in path){if(path.hasOwnProperty(p)){this.polyline.pop()}}}};GMaps.Route.prototype.forward=function(){if(this.step_count0){static_map_options.markers=[];for(var i=0;i0){var polyline=this.polylines[0];static_map_options.polyline={};static_map_options.polyline.path=google.maps.geometry.encoding.encodePath(polyline.getPath());static_map_options.polyline.strokeColor=polyline.strokeColor static_map_options.polyline.strokeOpacity=polyline.strokeOpacity static_map_options.polyline.strokeWeight=polyline.strokeWeight} return GMaps.staticMapURL(static_map_options)};GMaps.staticMapURL=function(options){var parameters=[],data,static_root=(location.protocol==='file:'?'http:':location.protocol)+'//maps.googleapis.com/maps/api/staticmap';if(options.url){static_root=options.url;delete options.url} static_root+='?';var markers=options.markers;delete options.markers;if(!markers&&options.marker){markers=[options.marker];delete options.marker} var styles=options.styles;delete options.styles;var polyline=options.polyline;delete options.polyline;if(options.center){parameters.push('center='+options.center);delete options.center}else if(options.address){parameters.push('center='+options.address);delete options.address}else if(options.lat){parameters.push(['center=',options.lat,',',options.lng].join(''));delete options.lat;delete options.lng}else if(options.visible){var visible=encodeURI(options.visible.join('|'));parameters.push('visible='+visible)} var size=options.size;if(size){if(size.join){size=size.join('x')} delete options.size}else{size='630x300'} parameters.push('size='+size);if(!options.zoom&&options.zoom!==!1){options.zoom=15} var sensor=options.hasOwnProperty('sensor')?!!options.sensor:!0;delete options.sensor;parameters.push('sensor='+sensor);for(var param in options){if(options.hasOwnProperty(param)){parameters.push(param+'='+options[param])}} if(markers){var marker,loc;for(var i=0;data=markers[i];i++){marker=[];if(data.size&&data.size!=='normal'){marker.push('size:'+data.size);delete data.size}else if(data.icon){marker.push('icon:'+encodeURI(data.icon));delete data.icon} if(data.color){marker.push('color:'+data.color.replace('#','0x'));delete data.color} if(data.label){marker.push('label:'+data.label[0].toUpperCase());delete data.label} loc=(data.address?data.address:data.lat+','+data.lng);delete data.address;delete data.lat;delete data.lng;for(var param in data){if(data.hasOwnProperty(param)){marker.push(param+':'+data[param])}} if(marker.length||i===0){marker.push(loc);marker=marker.join('|');parameters.push('markers='+encodeURI(marker))}else{marker=parameters.pop()+encodeURI('|'+loc);parameters.push(marker)}}} if(styles){for(var i=0;i=latLng.lng()||vertex2.lng()=latLng.lng()){if(vertex1.lat()+(latLng.lng()-vertex1.lng())/(vertex2.lng()-vertex1.lng())*(vertex2.lat()-vertex1.lat())>>0;if(len===0){return-1} var n=0;if(arguments.length>1){n=Number(arguments[1]);if(n!=n){n=0}else if(n!=0&&n!=Infinity&&n!=-Infinity){n=(n>0||-1)*Math.floor(Math.abs(n))}} if(n>=len){return-1} var k=n>=0?n:Math.max(len-Math.abs(n),0);for(;k]/g)||[]).length<=0){return!0} var jDom=$(tmp);return jDom.length>0}catch(ex){return!1}},_process_options:function(opts){this._o=$.extend({},this._o,opts);var o=this.o=$.extend({},this._o);var lang=o.language;if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang]) lang=defaults.language} o.language=lang;o.startView=this._resolveViewName(o.startView,0);o.minViewMode=this._resolveViewName(o.minViewMode,0);o.maxViewMode=this._resolveViewName(o.maxViewMode,4);o.startView=Math.min(o.startView,o.maxViewMode);o.startView=Math.max(o.startView,o.minViewMode);if(o.multidate!==!0){o.multidate=Number(o.multidate)||!1;if(o.multidate!==!1) o.multidate=Math.max(0,o.multidate)} o.multidateSeparator=String(o.multidateSeparator);o.weekStart%=7;o.weekEnd=(o.weekStart+6)%7;var format=DPGlobal.parseFormat(o.format);if(o.startDate!==-Infinity){if(!!o.startDate){if(o.startDate instanceof Date) o.startDate=this._local_to_utc(this._zero_time(o.startDate));else o.startDate=DPGlobal.parseDate(o.startDate,format,o.language,o.assumeNearbyYear)}else{o.startDate=-Infinity}} if(o.endDate!==Infinity){if(!!o.endDate){if(o.endDate instanceof Date) o.endDate=this._local_to_utc(this._zero_time(o.endDate));else o.endDate=DPGlobal.parseDate(o.endDate,format,o.language,o.assumeNearbyYear)}else{o.endDate=Infinity}} o.daysOfWeekDisabled=o.daysOfWeekDisabled||[];if(!$.isArray(o.daysOfWeekDisabled)) o.daysOfWeekDisabled=o.daysOfWeekDisabled.split(/[,\s]*/);o.daysOfWeekDisabled=$.map(o.daysOfWeekDisabled,function(d){return parseInt(d,10)});o.daysOfWeekHighlighted=o.daysOfWeekHighlighted||[];if(!$.isArray(o.daysOfWeekHighlighted)) o.daysOfWeekHighlighted=o.daysOfWeekHighlighted.split(/[,\s]*/);o.daysOfWeekHighlighted=$.map(o.daysOfWeekHighlighted,function(d){return parseInt(d,10)});o.datesDisabled=o.datesDisabled||[];if(!$.isArray(o.datesDisabled)){o.datesDisabled=[o.datesDisabled]} o.datesDisabled=$.map(o.datesDisabled,function(d){return DPGlobal.parseDate(d,format,o.language,o.assumeNearbyYear)});var plc=String(o.orientation).toLowerCase().split(/\s+/g),_plc=o.orientation.toLowerCase();plc=$.grep(plc,function(word){return/^auto|left|right|top|bottom$/.test(word)});o.orientation={x:'auto',y:'auto'};if(!_plc||_plc==='auto');else if(plc.length===1){switch(plc[0]){case 'top':case 'bottom':o.orientation.y=plc[0];break;case 'left':case 'right':o.orientation.x=plc[0];break}}else{_plc=$.grep(plc,function(word){return/^left|right$/.test(word)});o.orientation.x=_plc[0]||'auto';_plc=$.grep(plc,function(word){return/^top|bottom$/.test(word)});o.orientation.y=_plc[0]||'auto'} if(o.defaultViewDate){var year=o.defaultViewDate.year||new Date().getFullYear();var month=o.defaultViewDate.month||0;var day=o.defaultViewDate.day||1;o.defaultViewDate=UTCDate(year,month,day)}else{o.defaultViewDate=UTCToday()}},_events:[],_secondaryEvents:[],_applyEvents:function(evs){for(var i=0,el,ch,ev;iwindowWidth){this.picker.addClass('datepicker-orient-right');left+=width-calendarWidth}else{this.picker.addClass('datepicker-orient-left')}} var yorient=this.o.orientation.y,top_overflow;if(yorient==='auto'){top_overflow=-scrollTop+top-calendarHeight;yorient=top_overflow<0?'bottom':'top'} this.picker.addClass('datepicker-orient-'+yorient);if(yorient==='top') top-=calendarHeight+parseInt(this.picker.css('padding-top'));else top+=height;if(this.o.rtl){var right=windowWidth-(left+width);this.picker.css({top:top,right:right,zIndex:zIndex})}else{this.picker.css({top:top,left:left,zIndex:zIndex})} return this},_allow_update:!0,update:function(){if(!this._allow_update) return this;var oldDates=this.dates.copy(),dates=[],fromArgs=!1;if(arguments.length){$.each(arguments,$.proxy(function(i,date){if(date instanceof Date) date=this._local_to_utc(date);dates.push(date)},this));fromArgs=!0}else{dates=this.isInput?this.element.val():this.element.data('date')||this.inputField.val();if(dates&&this.o.multidate) dates=dates.split(this.o.multidateSeparator);else dates=[dates];delete this.element.data().date} dates=$.map(dates,$.proxy(function(date){return DPGlobal.parseDate(date,this.o.format,this.o.language,this.o.assumeNearbyYear)},this));dates=$.grep(dates,$.proxy(function(date){return(!this.dateWithinRange(date)||!date)},this),!0);this.dates.replace(dates);if(this.dates.length) this.viewDate=new Date(this.dates.get(-1));else if(this.viewDatethis.o.endDate) this.viewDate=new Date(this.o.endDate);else this.viewDate=this.o.defaultViewDate;if(fromArgs){this.setValue()}else if(dates.length){if(String(oldDates)!==String(this.dates)) this._trigger('changeDate')} if(!this.dates.length&&oldDates.length) this._trigger('clearDate');this.fill();this.element.change();return this},fillDow:function(){var dowCnt=this.o.weekStart,html='';if(this.o.calendarWeeks){this.picker.find('.datepicker-days .datepicker-switch').attr('colspan',function(i,val){return parseInt(val)+1});html+=' '} while(dowCnt'+dates[this.o.language].daysMin[(dowCnt++)%7]+''} html+='';this.picker.find('.datepicker-days thead').append(html)},fillMonths:function(){var localDate=this._utc_to_local(this.viewDate);var html='',i=0;while(i<12){var focused=localDate&&localDate.getMonth()===i?' focused':'';html+=''+dates[this.o.language].monthsShort[i++]+''} this.picker.find('.datepicker-months td').html(html)},setRange:function(range){if(!range||!range.length) delete this.range;else this.range=$.map(range,function(d){return d.valueOf()});this.fill()},getClassNames:function(date){var cls=[],year=this.viewDate.getUTCFullYear(),month=this.viewDate.getUTCMonth(),today=new Date();if(date.getUTCFullYear()year||(date.getUTCFullYear()===year&&date.getUTCMonth()>month)){cls.push('new')} if(this.focusDate&&date.valueOf()===this.focusDate.valueOf()) cls.push('focused');if(this.o.todayHighlight&&date.getUTCFullYear()===today.getFullYear()&&date.getUTCMonth()===today.getMonth()&&date.getUTCDate()===today.getDate()){cls.push('today')} if(this.dates.contains(date)!==-1) cls.push('active');if(!this.dateWithinRange(date)){cls.push('disabled')} if(this.dateIsDisabled(date)){cls.push('disabled','disabled-date')} if($.inArray(date.getUTCDay(),this.o.daysOfWeekHighlighted)!==-1){cls.push('highlighted')} if(this.range){if(date>this.range[0]&&dateendStep){classes.push('disabled')} if(thisYear===this.viewDate.getFullYear()){classes.push('focused')} if(callback!==$.noop){before=callback(new Date(thisYear,0,1));if(before===undefined){before={}}else if(typeof(before)==='boolean'){before={enabled:before}}else if(typeof(before)==='string'){before={classes:before}} if(before.enabled===!1){classes.push('disabled')} if(before.classes){classes=classes.concat(before.classes.split(/\s+/))} if(before.tooltip){tooltip=before.tooltip}} html+=''+thisYear+'';thisYear+=step} view.find('td').html(html)},fill:function(){var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth(),startYear=this.o.startDate!==-Infinity?this.o.startDate.getUTCFullYear():-Infinity,startMonth=this.o.startDate!==-Infinity?this.o.startDate.getUTCMonth():-Infinity,endYear=this.o.endDate!==Infinity?this.o.endDate.getUTCFullYear():Infinity,endMonth=this.o.endDate!==Infinity?this.o.endDate.getUTCMonth():Infinity,todaytxt=dates[this.o.language].today||dates.en.today||'',cleartxt=dates[this.o.language].clear||dates.en.clear||'',titleFormat=dates[this.o.language].titleFormat||dates.en.titleFormat,tooltip,before;if(isNaN(year)||isNaN(month)) return;this.picker.find('.datepicker-days .datepicker-switch').text(DPGlobal.formatDate(d,titleFormat,this.o.language));this.picker.find('tfoot .today').text(todaytxt).toggle(this.o.todayBtn!==!1);this.picker.find('tfoot .clear').text(cleartxt).toggle(this.o.clearBtn!==!1);this.picker.find('thead .datepicker-title').text(this.o.title).toggle(this.o.title!=='');this.updateNavArrows();this.fillMonths();var prevMonth=UTCDate(year,month-1,28),day=DPGlobal.getDaysInMonth(prevMonth.getUTCFullYear(),prevMonth.getUTCMonth());prevMonth.setUTCDate(day);prevMonth.setUTCDate(day-(prevMonth.getUTCDay()-this.o.weekStart+7)%7);var nextMonth=new Date(prevMonth);if(prevMonth.getUTCFullYear()<100){nextMonth.setUTCFullYear(prevMonth.getUTCFullYear())} nextMonth.setUTCDate(nextMonth.getUTCDate()+42);nextMonth=nextMonth.valueOf();var html=[];var clsName;while(prevMonth.valueOf()');if(this.o.calendarWeeks){var ws=new Date(+prevMonth+(this.o.weekStart-prevMonth.getUTCDay()-7)%7*864e5),th=new Date(Number(ws)+(7+4-ws.getUTCDay())%7*864e5),yth=new Date(Number(yth=UTCDate(th.getUTCFullYear(),0,1))+(7+4-yth.getUTCDay())%7*864e5),calWeek=(th-yth)/864e5/7+1;html.push(''+calWeek+'')}} clsName=this.getClassNames(prevMonth);clsName.push('day');if(this.o.beforeShowDay!==$.noop){before=this.o.beforeShowDay(this._utc_to_local(prevMonth));if(before===undefined) before={};else if(typeof(before)==='boolean') before={enabled:before};else if(typeof(before)==='string') before={classes:before};if(before.enabled===!1) clsName.push('disabled');if(before.classes) clsName=clsName.concat(before.classes.split(/\s+/));if(before.tooltip) tooltip=before.tooltip} if($.isFunction($.uniqueSort)){clsName=$.uniqueSort(clsName)}else{clsName=$.unique(clsName)} html.push(''+prevMonth.getUTCDate()+'');tooltip=null;if(prevMonth.getUTCDay()===this.o.weekEnd){html.push('')} prevMonth.setUTCDate(prevMonth.getUTCDate()+1)} this.picker.find('.datepicker-days tbody').empty().append(html.join(''));var monthsTitle=dates[this.o.language].monthsTitle||dates.en.monthsTitle||'Months';var months=this.picker.find('.datepicker-months').find('.datepicker-switch').text(this.o.maxViewMode<2?monthsTitle:year).end().find('span').removeClass('active');$.each(this.dates,function(i,d){if(d.getUTCFullYear()===year) months.eq(d.getUTCMonth()).addClass('active')});if(yearendYear){months.addClass('disabled')} if(year===startYear){months.slice(0,startMonth).addClass('disabled')} if(year===endYear){months.slice(endMonth+1).addClass('disabled')} if(this.o.beforeShowMonth!==$.noop){var that=this;$.each(months,function(i,month){var moDate=new Date(year,i,1);var before=that.o.beforeShowMonth(moDate);if(before===undefined) before={};else if(typeof(before)==='boolean') before={enabled:before};else if(typeof(before)==='string') before={classes:before};if(before.enabled===!1&&!$(month).hasClass('disabled')) $(month).addClass('disabled');if(before.classes) $(month).addClass(before.classes);if(before.tooltip) $(month).prop('title',before.tooltip)})} this._fill_yearsView('.datepicker-years','year',10,1,year,startYear,endYear,this.o.beforeShowYear);this._fill_yearsView('.datepicker-decades','decade',100,10,year,startYear,endYear,this.o.beforeShowDecade);this._fill_yearsView('.datepicker-centuries','century',1000,100,year,startYear,endYear,this.o.beforeShowCentury)},updateNavArrows:function(){if(!this._allow_update) return;var d=new Date(this.viewDate),year=d.getUTCFullYear(),month=d.getUTCMonth();switch(this.viewMode){case 0:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()&&month<=this.o.startDate.getUTCMonth()){this.picker.find('.prev').css({visibility:'hidden'})}else{this.picker.find('.prev').css({visibility:'visible'})} if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()&&month>=this.o.endDate.getUTCMonth()){this.picker.find('.next').css({visibility:'hidden'})}else{this.picker.find('.next').css({visibility:'visible'})} break;case 1:case 2:case 3:case 4:if(this.o.startDate!==-Infinity&&year<=this.o.startDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.prev').css({visibility:'hidden'})}else{this.picker.find('.prev').css({visibility:'visible'})} if(this.o.endDate!==Infinity&&year>=this.o.endDate.getUTCFullYear()||this.o.maxViewMode<2){this.picker.find('.next').css({visibility:'hidden'})}else{this.picker.find('.next').css({visibility:'visible'})} break}},click:function(e){e.preventDefault();e.stopPropagation();var target,dir,day,year,month,monthChanged,yearChanged;target=$(e.target);if(target.hasClass('datepicker-switch')){this.showMode(1)} var navArrow=target.closest('.prev, .next');if(navArrow.length>0){dir=DPGlobal.modes[this.viewMode].navStep*(navArrow.hasClass('prev')?-1:1);if(this.viewMode===0){this.viewDate=this.moveMonth(this.viewDate,dir);this._trigger('changeMonth',this.viewDate)}else{this.viewDate=this.moveYear(this.viewDate,dir);if(this.viewMode===1){this._trigger('changeYear',this.viewDate)}} this.fill()} if(target.hasClass('today')&&!target.hasClass('day')){this.showMode(-2);this._setDate(UTCToday(),this.o.todayBtn==='linked'?null:'view')} if(target.hasClass('clear')){this.clearDates()} if(!target.hasClass('disabled')){if(target.hasClass('day')){day=parseInt(target.text(),10)||1;year=this.viewDate.getUTCFullYear();month=this.viewDate.getUTCMonth();if(target.hasClass('old')){if(month===0){month=11;year=year-1;monthChanged=!0;yearChanged=!0}else{month=month-1;monthChanged=!0}} if(target.hasClass('new')){if(month===11){month=0;year=year+1;monthChanged=!0;yearChanged=!0}else{month=month+1;monthChanged=!0}} this._setDate(UTCDate(year,month,day));if(yearChanged){this._trigger('changeYear',this.viewDate)} if(monthChanged){this._trigger('changeMonth',this.viewDate)}} if(target.hasClass('month')){this.viewDate.setUTCDate(1);day=1;month=target.parent().find('span').index(target);year=this.viewDate.getUTCFullYear();this.viewDate.setUTCMonth(month);this._trigger('changeMonth',this.viewDate);if(this.o.minViewMode===1){this._setDate(UTCDate(year,month,day));this.showMode()}else{this.showMode(-1)} this.fill()} if(target.hasClass('year')||target.hasClass('decade')||target.hasClass('century')){this.viewDate.setUTCDate(1);day=1;month=0;year=parseInt(target.text(),10)||0;this.viewDate.setUTCFullYear(year);if(target.hasClass('year')){this._trigger('changeYear',this.viewDate);if(this.o.minViewMode===2){this._setDate(UTCDate(year,month,day))}} if(target.hasClass('decade')){this._trigger('changeDecade',this.viewDate);if(this.o.minViewMode===3){this._setDate(UTCDate(year,month,day))}} if(target.hasClass('century')){this._trigger('changeCentury',this.viewDate);if(this.o.minViewMode===4){this._setDate(UTCDate(year,month,day))}} this.showMode(-1);this.fill()}} if(this.picker.is(':visible')&&this._focused_from){$(this._focused_from).focus()} delete this._focused_from},_toggle_multidate:function(date){var ix=this.dates.contains(date);if(!date){this.dates.clear()} if(ix!==-1){if(this.o.multidate===!0||this.o.multidate>1||this.o.toggleActive){this.dates.remove(ix)}}else if(this.o.multidate===!1){this.dates.clear();this.dates.push(date)}else{this.dates.push(date)} if(typeof this.o.multidate==='number') while(this.dates.length>this.o.multidate) this.dates.remove(0);},_setDate:function(date,which){if(!which||which==='date') this._toggle_multidate(date&&new Date(date));if(!which||which==='view') this.viewDate=date&&new Date(date);this.fill();this.setValue();if(!which||which!=='view'){this._trigger('changeDate')} if(this.inputField){this.inputField.change()} if(this.o.autoclose&&(!which||which==='date')){this.hide()}},moveDay:function(date,dir){var newDate=new Date(date);newDate.setUTCDate(date.getUTCDate()+dir);return newDate},moveWeek:function(date,dir){return this.moveDay(date,dir*7)},moveMonth:function(date,dir){if(!isValidDate(date)) return this.o.defaultViewDate;if(!dir) return date;var new_date=new Date(date.valueOf()),day=new_date.getUTCDate(),month=new_date.getUTCMonth(),mag=Math.abs(dir),new_month,test;dir=dir>0?1:-1;if(mag===1){test=dir===-1?function(){return new_date.getUTCMonth()===month}:function(){return new_date.getUTCMonth()!==new_month};new_month=month+dir;new_date.setUTCMonth(new_month);if(new_month<0||new_month>11) new_month=(new_month+12)%12}else{for(var i=0;i0)},dateWithinRange:function(date){return date>=this.o.startDate&&date<=this.o.endDate},keydown:function(e){if(!this.picker.is(':visible')){if(e.keyCode===40||e.keyCode===27){this.show();e.stopPropagation()} return} var dateChanged=!1,dir,newViewDate,focusDate=this.focusDate||this.viewDate;switch(e.keyCode){case 27:if(this.focusDate){this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill()}else this.hide();e.preventDefault();e.stopPropagation();break;case 37:case 38:case 39:case 40:if(!this.o.keyboardNavigation||this.o.daysOfWeekDisabled.length===7) break;dir=e.keyCode===37||e.keyCode===38?-1:1;if(this.viewMode===0){if(e.ctrlKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear');if(newViewDate) this._trigger('changeYear',this.viewDate)}else if(e.shiftKey){newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth');if(newViewDate) this._trigger('changeMonth',this.viewDate)}else if(e.keyCode===37||e.keyCode===39){newViewDate=this.moveAvailableDate(focusDate,dir,'moveDay')}else if(!this.weekOfDateIsDisabled(focusDate)){newViewDate=this.moveAvailableDate(focusDate,dir,'moveWeek')}}else if(this.viewMode===1){if(e.keyCode===38||e.keyCode===40){dir=dir*4} newViewDate=this.moveAvailableDate(focusDate,dir,'moveMonth')}else if(this.viewMode===2){if(e.keyCode===38||e.keyCode===40){dir=dir*4} newViewDate=this.moveAvailableDate(focusDate,dir,'moveYear')} if(newViewDate){this.focusDate=this.viewDate=newViewDate;this.setValue();this.fill();e.preventDefault()} break;case 13:if(!this.o.forceParse) break;focusDate=this.focusDate||this.dates.get(-1)||this.viewDate;if(this.o.keyboardNavigation){this._toggle_multidate(focusDate);dateChanged=!0} this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.setValue();this.fill();if(this.picker.is(':visible')){e.preventDefault();e.stopPropagation();if(this.o.autoclose) this.hide()} break;case 9:this.focusDate=null;this.viewDate=this.dates.get(-1)||this.viewDate;this.fill();this.hide();break} if(dateChanged){if(this.dates.length) this._trigger('changeDate');else this._trigger('clearDate');if(this.inputField){this.inputField.change()}}},showMode:function(dir){if(dir){this.viewMode=Math.max(this.o.minViewMode,Math.min(this.o.maxViewMode,this.viewMode+dir))} this.picker.children('div').hide().filter('.datepicker-'+DPGlobal.modes[this.viewMode].clsName).show();this.updateNavArrows()}};var DateRangePicker=function(element,options){$(element).data('datepicker',this);this.element=$(element);this.inputs=$.map(options.inputs,function(i){return i.jquery?i[0]:i});delete options.inputs;datepickerPlugin.call($(this.inputs),options).on('changeDate',$.proxy(this.dateUpdated,this));this.pickers=$.map(this.inputs,function(i){return $(i).data('datepicker')});this.updateDates()};DateRangePicker.prototype={updateDates:function(){this.dates=$.map(this.pickers,function(i){return i.getUTCDate()});this.updateRanges()},updateRanges:function(){var range=$.map(this.dates,function(d){return d.valueOf()});$.each(this.pickers,function(i,p){p.setRange(range)})},dateUpdated:function(e){if(this.updating) return;this.updating=!0;var dp=$(e.target).data('datepicker');if(typeof(dp)==="undefined"){return} var new_date=dp.getUTCDate(),i=$.inArray(e.target,this.inputs),j=i-1,k=i+1,l=this.inputs.length;if(i===-1) return;$.each(this.pickers,function(i,p){if(!p.getUTCDate()) p.setUTCDate(new_date)});if(new_date=0&&new_datethis.dates[k]){while(kthis.dates[k]){this.pickers[k++].setUTCDate(new_date)}} this.updateDates();delete this.updating},remove:function(){$.map(this.pickers,function(p){p.remove()});delete this.element.data().datepicker}};function opts_from_el(el,prefix){var data=$(el).data(),out={},inkey,replace=new RegExp('^'+prefix.toLowerCase()+'([A-Z])');prefix=new RegExp('^'+prefix.toLowerCase());function re_lower(_,a){return a.toLowerCase()} for(var key in data) if(prefix.test(key)){inkey=key.replace(replace,re_lower);out[inkey]=data[key]} return out} function opts_from_locale(lang){var out={};if(!dates[lang]){lang=lang.split('-')[0];if(!dates[lang]) return} var d=dates[lang];$.each(locale_opts,function(i,k){if(k in d) out[k]=d[k]});return out} var old=$.fn.datepicker;var datepickerPlugin=function(option){var args=Array.apply(null,arguments);args.shift();var internal_return;this.each(function(){var $this=$(this),data=$this.data('datepicker'),options=typeof option==='object'&&option;if(!data){var elopts=opts_from_el(this,'date'),xopts=$.extend({},defaults,elopts,options),locopts=opts_from_locale(xopts.language),opts=$.extend({},defaults,locopts,elopts,options);if($this.hasClass('input-daterange')||opts.inputs){$.extend(opts,{inputs:opts.inputs||$this.find('input').toArray()});data=new DateRangePicker(this,opts)}else{data=new Datepicker(this,opts)} $this.data('datepicker',data)} if(typeof option==='string'&&typeof data[option]==='function'){internal_return=data[option].apply(data,args)}});if(internal_return===undefined||internal_return instanceof Datepicker||internal_return instanceof DateRangePicker) return this;if(this.length>1) throw new Error('Using only allowed for the collection of a single element ('+option+' function)');else return internal_return};$.fn.datepicker=datepickerPlugin;var defaults=$.fn.datepicker.defaults={assumeNearbyYear:!1,autoclose:!1,beforeShowDay:$.noop,beforeShowMonth:$.noop,beforeShowYear:$.noop,beforeShowDecade:$.noop,beforeShowCentury:$.noop,calendarWeeks:!1,clearBtn:!1,toggleActive:!1,daysOfWeekDisabled:[],daysOfWeekHighlighted:[],datesDisabled:[],endDate:Infinity,forceParse:!0,format:'mm/dd/yyyy',keyboardNavigation:!0,language:'en',minViewMode:0,maxViewMode:4,multidate:!1,multidateSeparator:',',orientation:"auto",rtl:!1,startDate:-Infinity,startView:0,todayBtn:!1,todayHighlight:!1,weekStart:0,disableTouchKeyboard:!1,enableOnReadonly:!0,showOnFocus:!0,zIndexOffset:10,container:'body',immediateUpdates:!1,title:'',templates:{leftArrow:'«',rightArrow:'»'}};var locale_opts=$.fn.datepicker.locale_opts=['format','rtl','weekStart'];$.fn.datepicker.Constructor=Datepicker;var dates=$.fn.datepicker.dates={en:{days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],daysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],daysMin:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],today:"Today",clear:"Clear",titleFormat:"MM yyyy"},fr:{days:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],daysShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],daysMin:['D','L','M','M','J','V','S'],months:['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],monthsShort:['Janv','Févr','Mars','Avril','Mai','Juin','Juil','Août','Sept','Oct','Nov','Dec'],today:"Aujourd'hui",clear:"Effacer",weekStart:1,format:"dd/mm/yyyy",monthsTitle:"Mois"}};var DPGlobal={modes:[{clsName:'days',navFnc:'Month',navStep:1},{clsName:'months',navFnc:'FullYear',navStep:1},{clsName:'years',navFnc:'FullYear',navStep:10},{clsName:'decades',navFnc:'FullDecade',navStep:100},{clsName:'centuries',navFnc:'FullCentury',navStep:1000}],isLeapYear:function(year){return(((year%4===0)&&(year%100!==0))||(year%400===0))},getDaysInMonth:function(year,month){return[31,(DPGlobal.isLeapYear(year)?29:28),31,30,31,30,31,31,30,31,30,31][month]},validParts:/dd?|DD?|mm?|MM?|yy(?:yy)?/g,nonpunctuation:/[^ -\/:-@\u5e74\u6708\u65e5\[-`{-~\t\n\r]+/g,parseFormat:function(format){if(typeof format.toValue==='function'&&typeof format.toDisplay==='function') return format;var separators=format.replace(this.validParts,'\0').split('\0'),parts=format.match(this.validParts);if(!separators||!separators.length||!parts||parts.length===0){throw new Error("Invalid date format.")} return{separators:separators,parts:parts}},parseDate:function(date,format,language,assumeNearby){if(!date) return undefined;if(date instanceof Date) return date;if(typeof format==='string') format=DPGlobal.parseFormat(format);if(format.toValue) return format.toValue(date,format,language);var part_re=/([\-+]\d+)([dmwy])/,parts=date.match(/([\-+]\d+)([dmwy])/g),fn_map={d:'moveDay',m:'moveMonth',w:'moveWeek',y:'moveYear'},dateAliases={yesterday:'-1d',today:'+0d',tomorrow:'+1d'},part,dir,i,fn;if(/^[\-+]\d+[dmwy]([\s,]+[\-+]\d+[dmwy])*$/.test(date)){date=new Date();for(i=0;i((new Date()).getFullYear()+threshold)){year-=100}} return year} var parsed={},setters_order=['yyyy','yy','M','MM','m','mm','d','dd'],setters_map={yyyy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},yy:function(d,v){return d.setUTCFullYear(assumeNearby?applyNearbyYear(v,assumeNearby):v)},m:function(d,v){if(isNaN(d)) return d;v-=1;while(v<0)v+=12;v%=12;d.setUTCMonth(v);while(d.getUTCMonth()!==v) d.setUTCDate(d.getUTCDate()-1);return d},d:function(d,v){return d.setUTCDate(v)}},val,filtered;setters_map.M=setters_map.MM=setters_map.mm=setters_map.m;setters_map.dd=setters_map.d;date=UTCToday();var fparts=format.parts.slice();if(parts.length!==fparts.length){fparts=$(fparts).filter(function(i,p){return $.inArray(p,setters_order)!==-1}).toArray()} function match_part(){var m=this.slice(0,parts[i].length),p=parts[i].slice(0,m.length);return m.toLowerCase()===p.toLowerCase()} if(parts.length===fparts.length){var cnt;for(i=0,cnt=fparts.length;i'+''+''+''+''+'«'+''+'»'+''+'',contTemplate:'',footTemplate:''+''+''+''+''+''+''+''};DPGlobal.template='
'+'
'+''+DPGlobal.headTemplate+''+DPGlobal.footTemplate+'
'+'
'+'
'+''+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'
'+'
'+'
'+''+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'
'+'
'+'
'+''+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'
'+'
'+'
'+''+DPGlobal.headTemplate+DPGlobal.contTemplate+DPGlobal.footTemplate+'
'+'
'+'
';$.fn.datepicker.DPGlobal=DPGlobal;$.fn.datepicker.noConflict=function(){$.fn.datepicker=old;return this};$.fn.datepicker.version='1.6.4';$(document).on('focus.datepicker.data-api click.datepicker.data-api','[data-provide="datepicker"]',function(e){var $this=$(this);if($this.data('datepicker')) return;e.preventDefault();datepickerPlugin.call($this,'show')});$(function(){datepickerPlugin.call($('[data-provide="datepicker-inline"]'))})}))