;(function($){
var plugname='mw_google_maps';
var useRoute=false;
var methods={
init:function(params){
return this.each(function(){
var data=$(this).data(plugname);
if(!data){
var defaults={
latitude:35.71012566481748,
longitude: 139.81149673461914,
zoom:13
};
$(this).data(plugname, {
config:$.extend(defaults, params),
points:[],
geocode: {}});
}});
},
addMarker: function(params){
return this.each(function(){
var data=$(this).data(plugname);
var defaults={
latitude:35.71012566481748,
longitude: 139.81149673461914,
title:'',
draggable: false
}
data.points.push($.extend(defaults, params));
});
},
render: function(params){
return this.each(function(){
var gmap=$(this);
var data=gmap.data(plugname);
var position=new google.maps.LatLng(data.config.latitude,
data.config.longitude
);
var map=new google.maps.Map(gmap.get(0), {
center: position,
zoom: data.config.zoom,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false,
scaleControl: true
});
if(data.points.length < 1 ||
typeof(data.points[0].latitude)=='undefined' ||
typeof(data.points[0].longitude)=='undefined')
return true;
if(useRoute===true){
var directionsRenderer=new google.maps.DirectionsRenderer();
directionsRenderer.setMap(map);
var wayPoints=[];
$.each(data.points, function(key, val){
wayPoints.push({
location: new google.maps.LatLng(val.latitude,
val.longitude
)
});
});
var request={
origin: wayPoints[0].location,
destination: wayPoints.pop().location,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
waypoints: wayPoints
};
var directionsService=new google.maps.DirectionsService();
directionsService.route(request, function(result, status){
if(status==google.maps.DirectionsStatus.OK){
directionsRenderer.setDirections(result);
directionsRenderer.setOptions({
suppressMarkers: true
});
}});
}
var getIcon=function(key){
if(useRoute===true){
return 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' +(key + 1) + '|F96757|000000';
}
return '';
}
var minLat=data.points[0].latitude;
var maxLat=data.points[0].latitude;
var minLng=data.points[0].longitude;
var maxLng=data.points[0].longitude;
var currentInfoWindow=null;
$.each(data.points, function(key, val){
var marker=new google.maps.Marker({
position: new google.maps.LatLng(val.latitude,
val.longitude
),
draggable: val.draggable,
map: map,
icon: getIcon(key)
});
if(typeof(val.title!='undefined')){
var infowindow=new google.maps.InfoWindow({
content: val.title
});
google.maps.event.addListener(marker, 'click', function(){
if(currentInfoWindow){
currentInfoWindow.close();
}
infowindow.open(map, marker);
currentInfoWindow=infowindow;
});
}
if(data.points.length > 1){
var Lat=val.latitude;
var Lng=val.longitude;
if(Lat < minLat) minLat=Lat;
if(Lat > maxLat) maxLat=Lat;
if(Lng < minLng) minLng=Lng;
if(Lng > maxLng) maxLng=Lng;
}
render_geocode(data, map, marker);
});
if(data.points.length > 1){
var sw=new google.maps.LatLng(maxLat, minLng);
var ne=new google.maps.LatLng(minLat, maxLng);
var bounds=new google.maps.LatLngBounds(sw, ne);
map.fitBounds(bounds);
}else{
var latlng=new google.maps.LatLng(data.points[0].latitude, data.points[0].longitude);
map.setCenter(latlng);
}});
},
geocode: function(params){
return this.each(function(){
var data=$(this).data(plugname);
var defaults={
btn:'',
address:'',
latitude:'',
longitude: ''
}
data.geocode=$.extend(defaults, params);
})
},
useRoute: function(){
useRoute=true;
}};
function render_geocode(data, map, marker){
if(!(
typeof(data.geocode.btn)!=='undefined' &&
typeof(data.geocode.address)!=='undefined' &&
typeof(data.geocode.latitude)!=='undefined' &&
typeof(data.geocode.longitude)!=='undefined' &&
typeof(data.geocode.zoom)!=='undefined' &&
data.geocode.btn.length &&
data.geocode.address.length &&
data.geocode.latitude.length &&
data.geocode.longitude.length &&
data.geocode.zoom.length &&
data.points.length==1)
)
return true;
data.geocode.btn.click(function(){
var geocoder=new google.maps.Geocoder();
geocoder.geocode({
address: data.geocode.address.val()
},
function(results, status){
if(status==google.maps.GeocoderStatus.OK){
map.setCenter(results[0].geometry.location);
marker.setOptions({
position: results[0].geometry.location
});
setInputValueLatLng(results[0].geometry.location.lat(), results[0].geometry.location.lng());
}else{
alert('Failed!');
}}
);
});
google.maps.event.addListener(marker, 'dragend', function(event){
var latlng=new google.maps.LatLng(event.latLng.lat(), event.latLng.lng());
map.setCenter(latlng);
data.geocode.address.val('');
setInputValueLatLng(event.latLng.lat(), event.latLng.lng());
});
google.maps.event.addListener(map, 'zoom_changed', function(){
var zoom=map.getZoom();
data.geocode.zoom.val(zoom);
});
function setInputValueLatLng(lat, lng){
data.geocode.latitude.val(lat);
data.geocode.longitude.val(lng);
}}
$.fn[plugname]=function(method){
if(methods[method]){
return methods[method]
.apply(this, Array.prototype.slice.call(arguments, 1));
}else if(typeof method==='object'||! method){
return methods.init.apply(this, arguments);
}else{
$.error('Method ' +  method + ' does not exist on jQuery.' + plugname);
return this;
}};})(jQuery);
!function(d,l){"use strict";l.querySelector&&d.addEventListener&&"undefined"!=typeof URL&&(d.wp=d.wp||{},d.wp.receiveEmbedMessage||(d.wp.receiveEmbedMessage=function(e){var t=e.data;if((t||t.secret||t.message||t.value)&&!/[^a-zA-Z0-9]/.test(t.secret)){for(var s,r,n,a=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),o=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]'),c=new RegExp("^https?:$","i"),i=0;i<o.length;i++)o[i].style.display="none";for(i=0;i<a.length;i++)s=a[i],e.source===s.contentWindow&&(s.removeAttribute("style"),"height"===t.message?(1e3<(r=parseInt(t.value,10))?r=1e3:~~r<150&&(r=150),s.height=r):"link"===t.message&&(r=new URL(s.getAttribute("src")),n=new URL(t.value),c.test(n.protocol))&&n.host===r.host&&l.activeElement===s&&(d.top.location.href=t.value))}},d.addEventListener("message",d.wp.receiveEmbedMessage,!1),l.addEventListener("DOMContentLoaded",function(){for(var e,t,s=l.querySelectorAll("iframe.wp-embedded-content"),r=0;r<s.length;r++)(t=(e=s[r]).getAttribute("data-secret"))||(t=Math.random().toString(36).substring(2,12),e.src+="#?secret="+t,e.setAttribute("data-secret",t)),e.contentWindow.postMessage({message:"ready",secret:t},"*")},!1)))}(window,document);