(function(C){C.jmap=C.jmap||{};
C.jmap.store={};
C.jmap.JDetails={name:"jMaps Google Maps Plugin",description:"jMaps is a jQuery plugin that makes google maps easy",version:"3.0",releaseDate:"19/04/2008",author:"Tane Piper <digitalspaghetti@gmail.com>",extender:"Joe McCann <joe@subprint.com>",blog:"http://digitalspaghetti.me.uk",repository:"http://hg.digitalspaghetti.me.uk/jmaps",googleGroup:"http://groups.google.com/group/jmaps",licenceType:"MIT",licenceURL:"http://www.opensource.org/licenses/mit-license.php"};
C.jmap.JErrors={en:{functionDoesNotExist:"jMap Error 1: The function does not exist",addressNotFound:"This address cannot be found.  Please modify your search.",browserNotCompatible:"This browser is reported as being not compatible with Google Maps.",cannotLoad:"Cannot load the Google Maps API at this time.  Please check your connection."},fr:{addressNotFound:"Cette adresse ne peut pas Ãªtre trouvÃ©e. Veuillez modifier votre recherche.",browserNotCompatible:"Ce navigateur est rapportÃ© en tant qu'Ã©tant non compatible avec des cartes de Google.",cannotLoad:"Ne peut pas charger les cartes api de Google actuellement. Veuillez vÃ©rifier votre raccordement."},de:{addressNotFound:"Diese Adresse kann nicht gefunden werden. Ã„ndern Sie bitte Ihre Suche.",browserNotCompatible:"Diese Datenbanksuchroutine wird als seiend nicht kompatibel mit Google Diagrammen berichtet.",cannotLoad:"Kann nicht die Google Diagramme API diesmal laden. ÃœberprÃ¼fen Sie bitte Ihren AnschluÃŸ."},nl:{addressNotFound:"Dit adres kan worden gevonden niet. Gelieve te wijzigen uw onderzoek.",browserNotCompatible:"Dit browser wordt gemeld zoals zijnd niet compatibel met Kaarten Google.",cannotLoad:"Kan de Google Kaarten API op dit moment laden niet. Gelieve te controleren uw verbinding."},es:{addressNotFound:"Esta direcciÃ³n no puede ser encontrada. Modifique por favor su bÃºsqueda.",browserNotCompatible:"Este browser se divulga como siendo no compatible con los mapas de Google.",cannotLoad:"No puede cargar los mapas API de Google en este tiempo. Compruebe por favor su conexiÃ³n."},sv:{addressNotFound:"Denna adress kunde ej hittas. Var god justera din sÃ¶kning",browserNotCompatible:"Denna webblÃ¤sare Ã¤r ej kompatibel med Google Maps",cannotLoad:"Kan inte ladda Google Maps API fÃ¶r tillfÃ¤llet. Var god kontrollera din anslutning."}};
C.jmap.JDefaults={language:"en",mapType:"map",mapCenter:[31.169036,-100.076888],mapDimensions:[400,400],mapZoom:12,mapControlSize:"small",mapEnableType:false,mapEnableOverview:false,mapEnableDragging:true,mapEnableInfoWindows:true,mapEnableDoubleClickZoom:false,mapEnableScrollZoom:false,mapEnableSmoothZoom:false,mapEnableGoogleBar:false,mapEnableScaleControl:false,mapEnableKey:false,mapShowjMapIcon:false,debugMode:false};
C.jmap.JIconDefaults={iconImage:"",iconShadow:"",iconSize:null,iconShadowSize:null,iconAnchor:null,iconInfoWindowAnchor:null,iconPrintImage:"",iconMozPrintImage:"",iconPrintShadow:"",iconTransparent:""};
C.jmap.JMarkerManagerDefaults={borderPadding:100,maxZoom:17,trackMarkers:false};
C.jmap.JMarkerDefaults={pointLatLng:[],pointHTML:null,pointOpenHTMLEvent:"click",pointIsDraggable:false,pointIsRemovable:false,pointRemoveEvent:"dblclick",pointMinZoom:4,pointMaxZoom:17,pointIcon:null,pointMaxContent:null,pointMaxTitle:null,centerMap:false};
C.jmap.JScreenOverlayDefaults={};
C.jmap.JSearchAddressDefaults={address:null,cache:{lat:null,lng:null},countryCode:"uk"};
C.jmap.JSearchDirectionsDefault={fromAddress:"",toAddress:"",directionsPanel:""};
C.jmap.JTrafficDefaults={method:"create",mapCenter:[]};
C.jmap.JMoveToDefaults={centerMethod:"normal",mapType:null,mapCenter:[],mapZoom:null};
C.jmap.JSavePositionDefaults={recall:false};
C.jmap.variables={mapType:"Unknown",mapCenter:[]};
C.jmap.JStreetViewDefaults={container:null,options:{},method:null,lat:0,lng:0};
C.jmap.init=function(G,H,A){H=C.extend({},C.jmap.JDefaults,H);
H=C.jmap.JOptions=C.meta?C.extend({},H,C(this).data()):H;
C.jmap._initChecks(G);
G.jmap=C.jmap.GMap2=new GMap2(G);
if(H.mapShowjMapIcon){C.jmap.addScreenOverlay({imageUrl:"http://hg.digitalspaghetti.me.uk/jmaps/raw-file/3228fade0b3c/docs/images/jmaps-mapicon.png",screenXY:[70,10],overlayXY:[0,0],size:[42,25]})
}var B=C.jmap._initMapType(H.mapType);
G.jmap.setCenter(new GLatLng(H.mapCenter[0],H.mapCenter[1]),H.mapZoom,B);
switch(H.mapControlSize){case"small":G.jmap.addControl(new GSmallMapControl());
break;
case"large":G.jmap.addControl(new GLargeMapControl());
break
}if(H.mapEnableType){G.jmap.addControl(new GMapTypeControl())
}if(H.mapEnableOverview){G.jmap.addControl(new GOverviewMapControl())
}if(!H.mapEnableDragging){G.jmap.disableDragging()
}if(!H.mapEnableInfoWindows){G.jmap.disableInfoWindow()
}if(H.mapEnableDoubleClickZoom){G.jmap.enableDoubleClickZoom()
}if(H.mapEnableScrollZoom){G.jmap.enableScrollWheelZoom()
}if(H.mapEnableSmoothZoom){G.jmap.enableContinuousZoom()
}if(H.mapEnableGoogleBar){G.jmap.enableGoogleBar()
}if(H.mapEnableScaleControl){G.jmap.addControl(new GScaleControl())
}if(H.mapEnableKey){G.jmap.addControl(new ExtMapTypeControl({showTraffic:true,showTrafficKey:true}))
}if(H.debugMode){console.log(G.jmap)
}C.jmap.getMapType();
if(typeof A=="function"){return A(G,H)
}};
var D;
C.jmap.addStreetOverlay=function(F,A){F=C.extend({},C.jmap.JStreetViewDefaults,F);
var B=new GStreetviewOverlay();
C.jmap.GMap2.addOverlay(B);
D=B;
if(typeof A=="function"){return A(marker,F)
}};
C.jmap.removeStreetOverlay=function(A){C.jmap.GMap2.removeOverlay(A)
};
C.jmap.checkForStreetView=function(I,A){var H=0;
I=C.extend({},C.jmap.JStreetViewDefaults,I);
var J=new GLatLng(I.lat,I.lng);
panoClient=new GStreetviewClient();
panoClient.getNearestPanorama(J,B);
function B(E){if(E.code!=200){C("body").append("<p>"+E.code+"</p>");
return 
}else{C("body").append("<p>"+E.code+"</p>")
}}if(typeof A=="function"){return A(marker,I)
}};
C.jmap.addStreetView=function(B,A){B=C.extend({},C.jmap.JStreetViewDefaults,B);
if(B.method=="remove"){}else{var G=C("#"+B.container).get(0);
myPano=new GStreetviewPanorama(G);
var H=new GLatLng(B.lat,B.lng);
myPOV={yaw:0,pitch:0};
myPano.setLocationAndPOV(H,myPOV)
}if(typeof A=="function"){return A(myPano,B)
}};
C.jmap.streetView=function(B,A){B=C.extend({},C.jmap.JStreetViewDefaults,B);
switch(B.method){case"create":C.jmap.GStreetViewOverlay=new GStreetviewOverlay();
C.jmap.GMap2.addOverlay(C.jmap.GStreetViewOverlay);
break;
case"destroy":C.jmap.GMap2.removeOverlay(C.jmap.GStreetViewOverlay);
break
}if(typeof A=="function"){return A()
}};
C.jmap.disableStreetView=function(A){C.jmap.GStreetViewOverlay.hide();
if(typeof A=="function"){return A()
}};
C.jmap.enableStreetView=function(A){C.jmap.GStreetViewOverlay.show();
if(typeof A=="function"){return A()
}};
C.jmap.addMarker=function(B,A){B=C.extend({},C.jmap.JMarkerDefaults,B);
var G={};
if(typeof B.pointIcon=="object"){C.extend(G,{icon:B.pointIcon})
}if(B.pointIsDraggable){C.extend(G,{draggable:B.pointIsDraggable})
}if(B.centerMap){C.jmap.GMap2.setCenter(new GLatLng(B.pointLatLng[0],B.pointLatLng[1]))
}var H=new GMarker(new GLatLng(B.pointLatLng[0],B.pointLatLng[1]),G);
if(B.pointHTML){GEvent.addListener(H,B.pointOpenHTMLEvent,function(){H.openInfoWindowHtml(B.pointHTML,{maxContent:B.pointMaxContent,maxTitle:B.pointMaxTitle})
})
}if(B.pointIsRemovable){GEvent.addListener(H,B.pointRemoveEvent,function(){C.jmap.GMap2.removeOverlay(H)
})
}if(C.jmap.GMarkerManager){C.jmap.GMarkerManager.addMarker(H,B.pointMinZoom,B.pointMaxZoom)
}else{C.jmap.GMap2.addOverlay(H)
}if(typeof A=="function"){return A(H,B)
}};
C.jmap.removeMarker=function(B,A){C.jmap.GMap2.removeOverlay(B);
if(typeof A=="function"){return A(B)
}};
C.jmap.addScreenOverlay=function(B,A){B=C.extend({},C.jmap.JScreenOverlayDefaults,B);
var F=new GScreenOverlay(B.imageUrl,new GScreenPoint(B.screenXY[0],B.screenXY[1]),new GScreenPoint(B.overlayXY[0],B.overlayXY[1]),new GScreenSize(B.size[0],B.size[1]));
C.jmap.GMap2.addOverlay(F);
if(typeof A=="function"){return A(F,B)
}};
C.jmap.addTrafficInfo=function(B,A){B=C.extend({},C.jmap.JTrafficDefaults,B);
switch(B.method){case"create":C.jmap.GTrafficOverlay=new GTrafficOverlay();
C.jmap.GMap2.addOverlay(C.jmap.GTrafficOverlay);
if(B.mapCenter[0]&&B.mapCenter[1]){C.jmap.GMap2.setCenter(new GLatLng(B.mapCenter[0],B.mapCenter[1]))
}break;
case"destroy":C.jmap.GMap2.removeOverlay(C.jmap.GTrafficOverlay);
break
}if(typeof A=="function"){return A()
}};
C.jmap.disableTraffic=function(A){C.jmap.GTrafficOverlay.hide();
if(typeof A=="function"){return A()
}};
C.jmap.enableTraffic=function(A){C.jmap.GTrafficOverlay.show();
if(typeof A=="function"){return A()
}};
C.jmap.createGeoCache=function(A){C.jmap.GGeocodeCache=new GGeocodeCache();
if(typeof A=="function"){return A()
}};
C.jmap.createGeoCoder=function(B,A){if(B){C.jmap.GClientGeocoder=new GClientGeocoder(B)
}else{C.jmap.GClientGeocoder=new GClientGeocoder()
}if(typeof A=="function"){return A()
}};
C.jmap.createIcon=function(B){B=C.extend({},C.jmap.JIconDefaults,B);
var A=new GIcon(G_DEFAULT_ICON);
if(B.iconImage){A.image=B.iconImage
}if(B.iconShadow){A.shadow=B.iconShadow
}if(B.iconSize){A.iconSize=B.iconSize
}if(B.iconShadowSize){A.shadowSize=B.iconShadowSize
}if(B.iconAnchor){A.iconAnchor=B.iconAnchor
}if(B.iconInfoWindowAnchor){A.infoWindowAnchor=B.iconInfoWindowAnchor
}return A
};
C.jmap.searchAddress=function(H,A){H=C.extend({},C.jmap.JSearchAddressDefaults,H);
var G=C.extend({},C.jmap.JMarkerManagerDefaults);
if(typeof C.jmap.GClientGeocoder=="undefined"){var B=new GClientGeocoder()
}else{B=C.jmap.GClientGeocoder
}B.getLatLng(H.address,function(E){if(!E){alert(H.address+"\n\t\t is not a valid address.");
throw new Error(C.jmap.JErrors[C.jmap.JOptions.language].addressNotFound)
}if(typeof A=="function"){return A(H,E)
}})
};
C.jmap.searchDirections=function(B,A){B=C.extend({},C.jmap.JSearchDirectionsDefaults,B);
var F=C("#"+B.directionsPanel).get(0);
C.jmap.GDirections=new GDirections(C.jmap.GMap2,F);
C.jmap.GDirections.load(B.fromAddress+" to "+B.toAddress);
GEvent.addListener(C.jmap.GDirections,"error",function(){if(C.jmap.GDirections.getStatus().code==G_GEO_UNKNOWN_ADDRESS){alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: "+C.jmap.GDirections.getStatus().code)
}else{if(C.jmap.GDirections.getStatus().code==G_GEO_SERVER_ERROR){alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: "+C.jmap.GDirections.getStatus().code)
}else{if(C.jmap.GDirections.getStatus().code==G_GEO_MISSING_QUERY){alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: "+C.jmap.GDirections.getStatus().code)
}else{if(C.jmap.GDirections.getStatus().code==G_GEO_BAD_KEY){alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: "+C.jmap.GDirections.getStatus().code)
}else{if(C.jmap.GDirections.getStatus().code==G_GEO_BAD_REQUEST){alert("A directions request could not be successfully parsed.\n Error code: "+C.jmap.GDirections.getStatus().code)
}else{alert("An unknown error occurred.")
}}}}}});
if(typeof A=="function"){return A()
}};
C.jmap.clearDirections=function(B,A){B=C.extend({},C.jmap.JSearchDirectionsDefaults,B);
C.jmap.GDirections.clear();
if(typeof A=="function"){return A()
}};
C.jmap.moveTo=function(G,A){G=C.extend({},C.jmap.JMoveToDefaults,G);
if(G.mapType){var B=C.jmap._initMapType(G.mapType)
}var H=new GLatLng(G.mapCenter[0],G.mapCenter[1]);
switch(G.centerMethod){case"normal":C.jmap.GMap2.setCenter(H,G.mapZoom,B);
break;
case"pan":C.jmap.GMap2.panTo(H);
break
}if(typeof A=="function"){return A()
}};
C.jmap.savePosition=function(B,A){B=C.extend({},C.jmap.JMoveToDefaults,B);
if(B.recall){C.jmap.GMap2.returnToSavedPosition()
}else{C.jmap.GMap2.savePosition()
}if(typeof A=="function"){return A()
}};
C.jmap.createKeyboardHandler=function(A){C.jmap.keyboardHandler=new GKeyboardHandler(C.jmap.GMap2);
if(typeof A=="function"){return A()
}};
C.jmap.getMapType=function(){var A=C.jmap.GMap2.getMapTypes();
var B=C.jmap.GMap2.getCurrentMapType();
if(B.Hz){C.jmap.variables.mapType=B.Hz
}};
C.jmap.getCenter=function(){var A=C.jmap.GMap2.getCenter();
C.jmap.variables.mapCenter=A;
if(typeof callback=="function"){return callback(A)
}};
C.jmap.getBounds=function(){var A=C.jmap.GMap2.getBounds();
C.jmap.variables.mapBounds=A;
if(typeof callback=="function"){return callback(A)
}};
C.jmap.createStreetviewPanorama=function(B,A){var B=C.extend({},C.jmap.JStreetViewDefaults,B);
var F=C.jmap.GStreetviewPanorama=new GStreetviewPanorama(C(B.container).get(0),B.viewoptions);
if(typeof A=="function"){return A(F,B)
}};
C.jmap._initMapType=function(B){switch(B){case"map":var A=G_NORMAL_MAP;
break;
case"sat":A=G_SATELLITE_MAP;
break;
case"hybrid":A=G_HYBRID_MAP;
break
}return A
};
C.jmap._initChecks=function(A){if(typeof GBrowserIsCompatible=="undefined"){C(A).text(C.jmap.JErrors[C.jmap.JOptions.language].cannotLoad).css({color:"#f00"});
throw Error(C.jmap.JErrors[C.jmap.JOptions.language].cannotLoad)
}if(!GBrowserIsCompatible()){C(A).text(C.jmap.JErrors[C.jmap.JOptions.language].browserNotCompatible).css({color:"#f00"});
throw Error(C.jmap.JErrors[C.jmap.JOptions.language].browserNotCompatible)
}};
C.jmap.storePoints=function(B,A){C.jmap.store=C.extend({},C.jmap.store,B);
if(typeof A=="function"){return A(C.jmap.store)
}};
C.fn.jmap=function(A,F,B){return this.each(function(){if(A=="init"){new C.jmap.init(this,F,B)
}else{if(typeof A=="object"||A===null){new C.jmap.init(this,A,F)
}else{if(typeof F=="function"){new C.jmap[A](F)
}else{try{new C.jmap[A](F,B)
}catch(E){throw Error(C.jmap.JErrors[C.jmap.JOptions.language].functionDoesNotExist)
}}}}})
}
})(jQuery);