你的位置:首页 > Java教程

[Java教程]javascript: jquery.gomap


from:http://www.pittss.lv/jquery/gomap/solutions.php

jquery.gomap-1.3.3.js:

/** * jQuery goMap * * @url		http://www.pittss.lv/jquery/gomap/ * @author	Jevgenijs Shtrauss <pittss@gmail.com> * @version	1.3.3 2014.11.27 * This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php> */(function($) {	var geocoder = new google.maps.Geocoder();	function MyOverlay(map) { this.setMap(map); };	MyOverlay.prototype = new google.maps.OverlayView();	MyOverlay.prototype.onAdd = function() { };	MyOverlay.prototype.onRemove = function() { };	MyOverlay.prototype.draw = function() { };	$.goMap = {};	$.fn.goMap = function(options) {		return this.each(function() {			var goMap = $(this).data('goMap');			if(!goMap) {				var goMapBase = $.extend(true, {}, $.goMapBase);				$(this).data('goMap', goMapBase.init(this, options));				$.goMap = goMapBase;			}			else {				$.goMap = goMap;			}		});	};	$.goMapBase = {		defaults: {			address:					'', // Street, City, Country			latitude:					56.9,			longitude:					24.1,			zoom:						4,			delay:						200,			hideByClick:				true,			oneInfoWindow:				true,			prefixId:					'gomarker',			polyId:						'gopoly',			groupId:					'gogroup',		  navigationControl:			true, // Show or hide navigation control			navigationControlOptions:	{				position:	'TOP_LEFT', // TOP, TOP_LEFT, TOP_RIGHT, BOTTOM, BOTTOM_LEFT, BOTTOM_RIGHT, LEFT, RIGHT				style:		'DEFAULT' 	// DEFAULT, SMALL, LARGE			},		  mapTypeControl: 			true, // Show or hide map control			mapTypeControlOptions:		{				position: 	'TOP_RIGHT', // TOP, TOP_LEFT, TOP_RIGHT, BOTTOM, BOTTOM_LEFT, BOTTOM_RIGHT, LEFT, RIGHT				style: 		'DEFAULT'// DEFAULT, DROPDOWN_MENU, HORIZONTAL_BAR			},		  scaleControl: 				false, // Show or hide scale			scrollwheel:				true, // Mouse scroll whell		  directions: 				false,		  directionsResult: 			null,			disableDoubleClickZoom:		false,			streetViewControl:			false,			markers:					[],			overlays:					[],			polyline:					{				color:		'#FF0000',				opacity:	1.0,				weight:		2			},			polygon:					{				color:			'#FF0000',				opacity:		1.0,				weight:			2,				fillColor:		'#FF0000',				fillOpacity:	0.2			},			circle:						{				color:			'#FF0000',				opacity:		1.0,				weight:			2,				fillColor:		'#FF0000',				fillOpacity:	0.2			},			rectangle:					{				color:			'#FF0000',				opacity:		1.0,				weight:			2,				fillColor:		'#FF0000',				fillOpacity:	0.2			},			maptype:					'HYBRID', // Map type - HYBRID, ROADMAP, SATELLITE, TERRAIN			html_prepend:				'<div >',			html_append:				'</div>',			addMarker:					false		},				map:			null,		count:			0,		markers:		[],		polylines:		[],		polygons:		[],		circles:		[],		rectangles:		[],		tmpMarkers:		[],		geoMarkers:		[],		lockGeocode:	false,		bounds:			null,		overlays:		null,		overlay:		null,		mapId:			null,		plId:			null,		pgId:			null,		cId:			null,		rId:			null,		opts:			null,		centerLatLng:	null,		init: function(el, options) {			var opts 	= $.extend(true, {}, $.goMapBase.defaults, options);			this.mapId	= $(el);			this.opts	= opts;			if (opts.address)				this.geocode({address: opts.address, center: true});//			else if (opts.latitude != $.goMapBase.defaults.latitude && opts.longitude != $.goMapBase.defaults.longitude)//				this.centerLatLng = new google.maps.LatLng(opts.latitude, opts.longitude);			else if ($.isArray(opts.markers) && opts.markers.length > 0) {				if (opts.markers[0].address)					this.geocode({address: opts.markers[0].address, center: true});				else					this.centerLatLng = new google.maps.LatLng(opts.markers[0].latitude, opts.markers[0].longitude);			}			else				this.centerLatLng = new google.maps.LatLng(opts.latitude, opts.longitude);			var myOptions = {				center: 				this.centerLatLng,				disableDoubleClickZoom:	opts.disableDoubleClickZoom,		    mapTypeControl:			opts.mapTypeControl,				streetViewControl:		opts.streetViewControl,				mapTypeControlOptions: {					position:	google.maps.ControlPosition[opts.mapTypeControlOptions.position.toUpperCase()],					style:		google.maps.MapTypeControlStyle[opts.mapTypeControlOptions.style.toUpperCase()]				},				mapTypeId:				google.maps.MapTypeId[opts.maptype.toUpperCase()],				panControl: 			opts.navigationControl,				zoomControl:			opts.navigationControl,				panControlOptions: {					position:	google.maps.ControlPosition[opts.navigationControlOptions.position.toUpperCase()]				},				zoomControlOptions: {					position:	google.maps.ControlPosition[opts.navigationControlOptions.position.toUpperCase()],					style:		google.maps.ZoomControlStyle[opts.navigationControlOptions.style.toUpperCase()]				},		    scaleControl:			opts.scaleControl,		    scrollwheel:			opts.scrollwheel,				zoom:					opts.zoom			};			this.map 		= new google.maps.Map(el, myOptions);			this.overlay	= new MyOverlay(this.map);			this.overlays = { 				polyline:	{ id: 'plId', array: 'polylines', 	create: 'createPolyline' },				polygon:	{ id: 'pgId', array: 'polygons', 	create: 'createPolygon' },				circle:		{ id: 'cId', array: 'circles',		create: 'createCircle' },				rectangle:	{ id: 'rId', array: 'rectangles',	create: 'createRectangle' }			};			this.plId = $('<div />').appendTo(this.mapId);			this.pgId = $('<div />').appendTo(this.mapId);			this.cId = $('<div />').appendTo(this.mapId);			this.rId = $('<div />').appendTo(this.mapId);			for (var j = 0, l = opts.markers.length; j < l; j++)				this.createMarker(opts.markers[j]);			for (var j = 0, l = opts.overlays.length; j < l; j++)				this[this.overlays[opts.overlays[j].type].create](opts.overlays[j]);			var goMap = this;			if (opts.addMarker == true || opts.addMarker == 'multi') {				google.maps.event.addListener(goMap.map, 'click', function(event) {					var options = {						position: event.latLng,						draggable: true					};					var marker = goMap.createMarker(options);					google.maps.event.addListener(marker, 'dblclick', function(event) {						marker.setMap(null);						goMap.removeMarker(marker.id);					});				});			}			else if (opts.addMarker == 'single') {				google.maps.event.addListener(goMap.map, 'click', function(event) {					if(!goMap.singleMarker) {						var options = {							position: event.latLng,							draggable: true						};						var marker = goMap.createMarker(options);						goMap.singleMarker = true;						google.maps.event.addListener(marker, 'dblclick', function(event) {							marker.setMap(null);							goMap.removeMarker(marker.id);							goMap.singleMarker = false;						});					}				});			}			delete opts.markers;			delete opts.overlays;			return this;		},		ready: function(f) {			google.maps.event.addListenerOnce(this.map, 'bounds_changed', function() { 				return f();		  }); 		},		geocode: function(address, options) {			var goMap = this;			setTimeout(function() {				geocoder.geocode({'address': address.address}, function(results, status) {		    	if (status == google.maps.GeocoderStatus.OK && address.center)						goMap.map.setCenter(results[0].geometry.location);					if (status == google.maps.GeocoderStatus.OK && options && options.markerId)						options.markerId.setPosition(results[0].geometry.location);					else if (status == google.maps.GeocoderStatus.OK && options) {						if(goMap.lockGeocode) {							goMap.lockGeocode = false;							options.position = results[0].geometry.location;							options.geocode  = true;							goMap.createMarker(options);						}					}					else if(status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {						goMap.geocode(address, options);					}  	  			});			}, this.opts.delay);		},		geoMarker: function() {			if(this.geoMarkers.length > 0 && !this.lockGeocode) {				this.lockGeocode = true;				var current = this.geoMarkers.splice(0, 1);				this.geocode({address:current[0].address}, current[0]);			}			else if(this.lockGeocode) {				var goMap = this;				setTimeout(function() {					goMap.geoMarker();				}, this.opts.delay);			}		},		setMap: function(options) {			delete options.mapTypeId;			if (options.address) {				this.geocode({address: options.address, center: true});				delete options.address;			}			else if (options.latitude && options.longitude) {				options.center = new google.maps.LatLng(options.latitude, options.longitude);				delete options.longitude;				delete options.latitude;			}			if(options.mapTypeControlOptions && options.mapTypeControlOptions.position)				options.mapTypeControlOptions.position = google.maps.ControlPosition[options.mapTypeControlOptions.position.toUpperCase()];			if(options.mapTypeControlOptions && options.mapTypeControlOptions.style)				options.mapTypeControlOptions.style = google.maps.MapTypeControlStyle[options.mapTypeControlOptions.style.toUpperCase()];			if(typeof options.navigationControl !== 'undefined') {				options.panControl = options.navigationControl;				options.zoomControl = options.navigationControl;			}						if(options.navigationControlOptions && options.navigationControlOptions.position) {				options.panControlOptions = {position: google.maps.ControlPosition[options.navigationControlOptions.position.toUpperCase()]};				options.zoomControlOptions = {position: google.maps.ControlPosition[options.navigationControlOptions.position.toUpperCase()]};			}			if(options.navigationControlOptions && options.navigationControlOptions.style) {				if(typeof options.zoomControlOptions === 'undefined')					options.zoomControlOptions = {style: google.maps.ZoomControlStyle[options.navigationControlOptions.style.toUpperCase()]};				else					options.zoomControlOptions.style = google.maps.ZoomControlStyle[options.navigationControlOptions.style.toUpperCase()];			}			this.map.setOptions(options);		},		getMap: function() {		  return this.map;		},		createListener: function(type, event, data) {			var target;			if(typeof type != 'object')				type = {type:type};			if(type.type == 'map')				target = this.map;			else if(type.type == 'marker' && type.marker)				target = $(this.mapId).data(type.marker);			else if(type.type == 'info' && type.marker)				target = $(this.mapId).data(type.marker + 'info');			if(target)				return google.maps.event.addListener(target, event, data);			else if((type.type == 'marker' || type.type == 'info') && this.getMarkerCount() != this.getTmpMarkerCount())				var goMap = this;				setTimeout(function() {					goMap.createListener(type, event, data);				}, this.opts.delay);		},		removeListener: function(listener) {			google.maps.event.removeListener(listener);		},		setInfoWindow: function(marker, html) {			var goMap = this;			html.content  = goMap.opts.html_prepend + html.content + goMap.opts.html_append;			var infowindow = new google.maps.InfoWindow(html);			infowindow.show = false;			$(goMap.mapId).data(marker.id + 'info',infowindow);			if (html.popup) {				goMap.openWindow(infowindow, marker, html);				infowindow.show = true;			}			google.maps.event.addListener(marker, 'click', function() {				if (infowindow.show && goMap.opts.hideByClick) {					infowindow.close();					infowindow.show = false;				}				else {					goMap.openWindow(infowindow, marker, html);					infowindow.show = true;				}			});		},		openWindow: function(infowindow, marker, html) {			var goMap = this;			if(this.opts.oneInfoWindow)				this.clearInfo();			if (html.ajax) {				infowindow.open(this.map, marker);				$.ajax({					url: html.ajax,					success: function(html) {						infowindow.setContent(goMap.opts.html_prepend + html + goMap.opts.html_append);					}				});			}			else if (html.id) {				infowindow.setContent(goMap.opts.html_prepend + $(html.id).html() + goMap.opts.html_append);				infowindow.open(this.map, marker);			}			else				infowindow.open(this.map, marker);		},		setInfo: function(id, text) {			var info = $(this.mapId).data(id + 'info');			if(typeof text == 'object')				info.setOptions(goMap.opts.html_prepend + text + goMap.opts.html_append);			else				info.setContent(goMap.opts.html_prepend + text + goMap.opts.html_append);		},		getInfo: function(id, hideDiv) {			 var info = $(this.mapId).data(id + 'info').getContent();			if(hideDiv)				return $(info).html();			else				return info;		},		clearInfo: function() {			for (var i = 0, l = this.markers.length; i < l; i++) {				var info = $(this.mapId).data(this.markers[i] + 'info');				if(info) {					info.close();					info.show = false;				}			}		},		fitBounds: function(type, markers) {			var goMap = this;			if(this.getMarkerCount() != this.getTmpMarkerCount())				setTimeout(function() {					goMap.fitBounds(type, markers);				}, this.opts.delay);			else {				this.bounds = new google.maps.LatLngBounds();				if(!type || (type && type == 'all')) {					for (var i = 0, l = this.markers.length; i < l; i++) {						this.bounds.extend($(this.mapId).data(this.markers[i]).position);					}				}				else if (type && type == 'visible') {					for (var i = 0, l = this.markers.length; i < l; i++) {						if(this.getVisibleMarker(this.markers[i]))							this.bounds.extend($(this.mapId).data(this.markers[i]).position);					}					}				else if (type && type == 'markers' && $.isArray(markers)) {					for (var i = 0, l = markers.length; i < l; i++) {						this.bounds.extend($(this.mapId).data(markers[i]).position);					}				}				this.map.fitBounds(this.bounds);			}		},		getBounds: function() {			return this.map.getBounds();		},		createPolyline: function(poly) {			poly.type = 'polyline';			return this.createOverlay(poly);		},		createPolygon: function(poly) {			poly.type = 'polygon';			return this.createOverlay(poly);		},		createCircle: function(poly) {			poly.type = 'circle';			return this.createOverlay(poly);		},		createRectangle: function(poly) {			poly.type = 'rectangle';			return this.createOverlay(poly);		},		createOverlay: function(poly) {			var overlay = [];			if (!poly.id) {				this.count++;				poly.id = this.opts.polyId + this.count;			}			switch(poly.type) {				case 'polyline':					if (poly.coords.length > 0) {						for (var j = 0, l = poly.coords.length; j < l; j++)							overlay.push(new google.maps.LatLng(poly.coords[j].latitude, poly.coords[j].longitude));						overlay = new google.maps.Polyline({							map: this.map,							path: overlay,							strokeColor: 	poly.color ? poly.color : this.opts.polyline.color,							strokeOpacity:	poly.opacity ? poly.opacity : this.opts.polyline.opacity,							strokeWeight:	poly.weight ? poly.weight : this.opts.polyline.weight						});					}					else						return false;					break;				case 'polygon':					if (poly.coords.length > 0) {						for (var j = 0, l = poly.coords.length; j < l; j++)							overlay.push(new google.maps.LatLng(poly.coords[j].latitude, poly.coords[j].longitude));						overlay = new google.maps.Polygon({							map: this.map,							path: overlay,							strokeColor: poly.color ? poly.color : this.opts.polygon.color,							strokeOpacity: poly.opacity ? poly.opacity : this.opts.polygon.opacity,							strokeWeight: poly.weight ? poly.weight : this.opts.polygon.weight,							fillColor: poly.fillColor ? poly.fillColor : this.opts.polygon.fillColor,							fillOpacity: poly.fillOpacity ? poly.fillOpacity : this.opts.polygon.fillOpacity						});					}					else						return false;					break;				case 'circle':					overlay = new google.maps.Circle({						map: this.map,						center: new google.maps.LatLng(poly.latitude, poly.longitude),						radius: poly.radius,						strokeColor: poly.color ? poly.color : this.opts.circle.color,						strokeOpacity: poly.opacity ? poly.opacity : this.opts.circle.opacity,						strokeWeight: poly.weight ? poly.weight : this.opts.circle.weight,						fillColor: poly.fillColor ? poly.fillColor : this.opts.circle.fillColor,						fillOpacity: poly.fillOpacity ? poly.fillOpacity : this.opts.circle.fillOpacity					});					break;				case 'rectangle':					overlay = new google.maps.Rectangle({						map: this.map,						bounds: new google.maps.LatLngBounds(new google.maps.LatLng(poly.sw.latitude, poly.sw.longitude), new google.maps.LatLng(poly.ne.latitude, poly.ne.longitude)),						strokeColor: poly.color ? poly.color : this.opts.circle.color,						strokeOpacity: poly.opacity ? poly.opacity : this.opts.circle.opacity,						strokeWeight: poly.weight ? poly.weight : this.opts.circle.weight,						fillColor: poly.fillColor ? poly.fillColor : this.opts.circle.fillColor,						fillOpacity: poly.fillOpacity ? poly.fillOpacity : this.opts.circle.fillOpacity					});					break;				default:					return false;					break;			}			this.addOverlay(poly, overlay);			return overlay;		},		addOverlay: function(poly, overlay) {			$(this[this.overlays[poly.type].id]).data(poly.id, overlay);			this[this.overlays[poly.type].array].push(poly.id);		},		setOverlay: function(type, overlay, options) {			overlay = $(this[this.overlays[type].id]).data(overlay);			if (options.coords && options.coords.length > 0) {				var array = [];				for (var j = 0, l = options.coords.length; j < l; j++)					array.push(new google.maps.LatLng(options.coords[j].latitude, options.coords[j].longitude));				options.path = array;				delete options.coords;			}			else if (options.ne && options.sw) {				options.bounds = new google.maps.LatLngBounds(new google.maps.LatLng(options.sw.latitude, options.sw.longitude), new google.maps.LatLng(options.ne.latitude, options.ne.longitude));				delete options.ne;				delete options.sw;			}			else if (options.latitude && options.longitude) {				options.center = new google.maps.LatLng(options.latitude, options.longitude);				delete options.latitude;				delete options.longitude;			}			overlay.setOptions(options);		},		showHideOverlay: function(type, overlay, display) {			if(typeof display === 'undefined') {				if(this.getVisibleOverlay(type, overlay))					display = false;				else					display = true;			}			if(display)				$(this[this.overlays[type].id]).data(overlay).setMap(this.map);			else				$(this[this.overlays[type].id]).data(overlay).setMap(null);		},		getVisibleOverlay: function(type, overlay) {			if($(this[this.overlays[type].id]).data(overlay).getMap())				return true;			else				return false;		},		getOverlaysCount: function(type) {			return this[this.overlays[type].array].length;		},		removeOverlay: function(type, overlay) {			var index = $.inArray(overlay, this[this.overlays[type].array]), current;			if (index > -1) {				current = this[this.overlays[type].array].splice(index, 1);				var markerId = current[0];				$(this[this.overlays[type].id]).data(markerId).setMap(null);				$(this[this.overlays[type].id]).removeData(markerId);				return true;			}			return false;		},		clearOverlays: function(type) {			for (var i = 0, l = this[this.overlays[type].array].length; i < l; i++) {				var markerId = this[this.overlays[type].array][i];				$(this[this.overlays[type].id]).data(markerId).setMap(null);				$(this[this.overlays[type].id]).removeData(markerId);			}			this[this.overlays[type].array] = [];		},		showHideMarker: function(marker, display) {			if(typeof display === 'undefined') {				if(this.getVisibleMarker(marker)) {					$(this.mapId).data(marker).setVisible(false);					var info = $(this.mapId).data(marker + 'info');					if(info && info.show) {						info.close();						info.show = false;					}				}				else					$(this.mapId).data(marker).setVisible(true);			}			else				$(this.mapId).data(marker).setVisible(display);		},		showHideMarkerByGroup: function(group, display) {			for (var i = 0, l = this.markers.length; i < l; i++) {				var markerId = this.markers[i];				var marker	 = $(this.mapId).data(markerId);				if(marker.group == group) {					if(typeof display === 'undefined') {						if(this.getVisibleMarker(markerId)) {							marker.setVisible(false);							var info = $(this.mapId).data(markerId + 'info');							if(info && info.show) {								info.close();								info.show = false;							}						}						else							marker.setVisible(true);					}					else						marker.setVisible(display);				}			}		},		getVisibleMarker: function(marker) {			return $(this.mapId).data(marker).getVisible();		},		getMarkerCount: function() {			return this.markers.length;		},		getTmpMarkerCount: function() {			return this.tmpMarkers.length;		},		getVisibleMarkerCount: function() {			return this.getMarkers('visiblesInMap').length;		},		getMarkerByGroupCount: function(group) {			return this.getMarkers('group', group).length;		},		getMarkers: function(type, name) {			var array = [];			switch(type) {				case "json":					for (var i = 0, l = this.markers.length; i < l; i++) {						var temp = "'" + i + "': '" + $(this.mapId).data(this.markers[i]).getPosition().toUrlValue() + "'";						array.push(temp);					}					array = "{'markers':{" + array.join(",") + "}}";					break;				case "data":					for (var i = 0, l = this.markers.length; i < l; i++) {						var temp = "marker[" + i + "]=" + $(this.mapId).data(this.markers[i]).getPosition().toUrlValue();						array.push(temp);					}					array = array.join("&"); 										break;				case "visiblesInBounds":					for (var i = 0, l = this.markers.length; i < l; i++) {						if (this.isVisible($(this.mapId).data(this.markers[i]).getPosition()))							array.push(this.markers[i]);					}					break;				case "visiblesInMap":					for (var i = 0, l = this.markers.length; i < l; i++) {						if(this.getVisibleMarker(this.markers[i]))							array.push(this.markers[i]);					}					break;				case "group":					if(name)						for (var i = 0, l = this.markers.length; i < l; i++) {							if($(this.mapId).data(this.markers[i]).group == name)								array.push(this.markers[i]);						}					break;				case "markers":					for (var i = 0, l = this.markers.length; i < l; i++) {						var temp = $(this.mapId).data(this.markers[i]);						array.push(temp);					}					break;				default:					for (var i = 0, l = this.markers.length; i < l; i++) {						var temp = $(this.mapId).data(this.markers[i]).getPosition().toUrlValue();						array.push(temp);					}					break;			}			return array;		},		getVisibleMarkers: function() {			return this.getMarkers('visiblesInBounds');		},		createMarker: function(marker) {			if (!marker.geocode) {				this.count++;				if (!marker.id)					marker.id = this.opts.prefixId + this.count;				this.tmpMarkers.push(marker.id);			}			if (marker.address && !marker.geocode) {				this.geoMarkers.push(marker);				this.geoMarker();			}			else if (marker.latitude && marker.longitude || marker.position) {				var options = { map:this.map };				options.id 			= marker.id;				options.group		= marker.group ? marker.group : this.opts.groupId; 				options.zIndex 		= marker.zIndex ? marker.zIndex : 0;				options.zIndexOrg	= marker.zIndexOrg ? marker.zIndexOrg : 0;				if (marker.visible == false)					options.visible = marker.visible;				if (marker.title)					options.title = marker.title;				if (marker.draggable)					options.draggable = marker.draggable;				if (marker.icon && marker.icon.image) {					options.icon = marker.icon.image;					if (marker.icon.shadow)						options.shadow = marker.icon.shadow;				}				else if (marker.icon)					options.icon = marker.icon;				else if (this.opts.icon && this.opts.icon.image) {					options.icon = this.opts.icon.image;					if (this.opts.icon.shadow)						options.shadow = this.opts.icon.shadow;				}				else if (this.opts.icon)					options.icon = this.opts.icon;				options.position = marker.position ? marker.position : new google.maps.LatLng(marker.latitude, marker.longitude);				var cmarker = new google.maps.Marker(options);				if (marker.html) {					if (!marker.html.content && !marker.html.ajax && !marker.html.id)						marker.html = { content:marker.html };					else if (!marker.html.content)						marker.html.content = null;					this.setInfoWindow(cmarker, marker.html);				}				this.addMarker(cmarker);				return cmarker;			}		},		addMarker: function(marker) {			$(this.mapId).data(marker.id, marker);			this.markers.push(marker.id);		},		setMarker: function(marker, options) {			var tmarker = $(this.mapId).data(marker);			delete options.id;			delete options.visible;			if(options.icon) {				var toption = options.icon;				delete options.icon;				if(toption && toption == 'default') {					if (this.opts.icon && this.opts.icon.image) {						options.icon = this.opts.icon.image;						if (this.opts.icon.shadow)							options.shadow = this.opts.icon.shadow;					}					else if (this.opts.icon)						options.icon = this.opts.icon;				}				else if(toption && toption.image) {					options.icon = toption.image;					if (toption.shadow)						options.shadow = toption.shadow;				}				else if (toption)					options.icon = toption;			}			if (options.address) {				this.geocode({address: options.address}, {markerId:tmarker});				delete options.address;				delete options.latitude;				delete options.longitude;				delete options.position;			}			else if (options.latitude && options.longitude || options.position) {				if (!options.position)					options.position = new google.maps.LatLng(options.latitude, options.longitude);			}			tmarker.setOptions(options);		},		removeMarker: function(marker) {			var index = $.inArray(marker, this.markers), current;			if (index > -1) {				this.tmpMarkers.splice(index,1);				current = this.markers.splice(index,1);				var markerId = current[0];				var marker  = $(this.mapId).data(markerId);				var info   = $(this.mapId).data(markerId + 'info');				marker.setVisible(false);				marker.setMap(null);				$(this.mapId).removeData(markerId);				if(info) {					info.close();					info.show = false;					$(this.mapId).removeData(markerId + 'info');				}				return true;			}			return false;		},		clearMarkers: function() {			for (var i = 0, l = this.markers.length; i < l; i++) {				var markerId = this.markers[i];				var marker  = $(this.mapId).data(markerId);				var info   = $(this.mapId).data(markerId + 'info');				marker.setVisible(false);				marker.setMap(null);				$(this.mapId).removeData(markerId);				if(info) {					info.close();					info.show = false;					$(this.mapId).removeData(markerId + 'info');				}			}			this.singleMarker = false;			this.lockGeocode = false;			this.markers = [];			this.tmpMarkers = [];			this.geoMarkers = [];		},		isVisible: function(latlng) {			return this.map.getBounds().contains(latlng);		}	}})(jQuery);

  jquery.dump.js:

/** * jquery.dump.js * @author Torkild Dyvik Olsen * @version 1.0 * * A simple debug function to gather information about an object. * Returns a nested tree with information. * */(function($) {$.fn.dump = function() {  return $.dump(this);}$.dump = function(object) {  var recursion = function(obj, level) {   if(!level) level = 0;   var dump = '', p = '';   for(i = 0; i < level; i++) p += "\t";      t = type(obj);   switch(t) {     case "string":      return '"' + obj + '"';      break;     case "number":      return obj.toString();      break;     case "boolean":      return obj ? 'true' : 'false';     case "date":      return "Date: " + obj.toLocaleString();     case "array":      dump += 'Array ( \n';      $.each(obj, function(k,v) {        dump += p +'\t' + k + ' => ' + recursion(v, level + 1) + '\n';      });      dump += p + ')';      break;     case "object":      dump += 'Object { \n';      $.each(obj, function(k,v) {        dump += p + '\t' + k + ': ' + recursion(v, level + 1) + '\n';      });      dump += p + '}';      break;     case "jquery":      dump += 'jQuery Object { \n';      $.each(obj, function(k,v) {        dump += p + '\t' + k + ' = ' + recursion(v, level + 1) + '\n';      });      dump += p + '}';      break;     case "regexp":      return "RegExp: " + obj.toString();     case "error":      return obj.toString();     case "document":     case "domelement":      dump += 'DOMElement [ \n'         + p + '\tnodeName: ' + obj.nodeName + '\n'         + p + '\tnodeValue: ' + obj.nodeValue + '\n'         + p + '\tinnerHTML: [ \n';      $.each(obj.childNodes, function(k,v) {        if(k < 1) var r = 0;        if(type(v) == "string") {         if(v.textContent.match(/[^\s]/)) {           dump += p + '\t\t' + (k - (r||0)) + ' = String: ' + trim(v.textContent) + '\n';         } else {           r--;         }        } else {         dump += p + '\t\t' + (k - (r||0)) + ' = ' + recursion(v, level + 2) + '\n';        }      });      dump += p + '\t]\n'         + p + ']';      break;     case "function":      var match = obj.toString().match(/^(.*)\(([^\)]*)\)/im);      match[1] = trim(match[1].replace(new RegExp("[\\s]+", "g"), " "));      match[2] = trim(match[2].replace(new RegExp("[\\s]+", "g"), " "));      return match[1] + "(" + match[2] + ")";     case "window":     default:      dump += 'N/A: ' + t;      break;   }      return dump;  }   var type = function(obj) {   var type = typeof(obj);      if(type != "object") {     return type;   }      switch(obj) {     case null:      return 'null';     case window:      return 'window';     case document:      return 'document';     case window.event:      return 'event';     default:      break;   }      if(obj.jquery) {     return 'jquery';   }      switch(obj.constructor) {     case Array:      return 'array';     case Boolean:      return 'boolean';     case Date:      return 'date';     case Object:      return 'object';     case RegExp:      return 'regexp';     case ReferenceError:     case Error:      return 'error';     case null:     default:      break;   }      switch(obj.nodeType) {     case 1:      return 'domelement';     case 3:      return 'string';     case null:     default:      break;   }      return 'Unknown';  }   return recursion(object);}function trim(str) {  return ltrim(rtrim(str));}function ltrim(str) {  return str.replace(new RegExp("^[\\s]+", "g"), "");}function rtrim(str) {  return str.replace(new RegExp("[\\s]+$", "g"), "");}})(jQuery);

  jquery.chili-2.2.js

/*===============================================================================Chili is the jQuery code highlighter plugin...............................................................................LICENSE: http://www.opensource.org/licenses/mit-license.phpWEBSITE: http://noteslog.com/chili/											  Copyright 2008 / Andrea Ercolino===============================================================================*/( function($) {ChiliBook = { //implied global	 version:      "2.2" // 2008-07-06// options --------------------------------------------------------------------	, automatic:     true	, automaticSelector: "code"	, lineNumbers:    !true	, codeLanguage:    function( el ) {		var recipeName = $( el ).attr( "class" );		return recipeName ? recipeName : '';	}	, recipeLoading:   true	, recipeFolder:    "" // used like: recipeFolder + recipeName + '.js'	// IE and FF convert   to " ", Safari and Opera do not	, replaceSpace:    " "	, replaceTab:     "    "	, replaceNewLine:   " <br/>"	, selectionStyle:   [ "position:absolute; z-index:3000; overflow:scroll;"						 , "width:16em;"						 , "height:9em;"						 , "border:1px solid gray;"						 , "padding:15px;"						 , "background-color:yellow;"						 ].join( ' ' )// ------------------------------------------------------------- end of options	, defaultReplacement: '<span >$$</span>' // TODO: make this an option again	, recipes:      {} //repository	, queue:       {} //registry	, unique:       function() {		return (new Date()).valueOf();	}};$.fn.chili = function( options ) {	var book = $.extend( {}, ChiliBook, options || {} );	function cook( ingredients, recipe, blockName ) {		function prepareBlock( recipe, blockName ) {			var steps = [];			for( var stepName in recipe[ blockName ] ) {				steps.push( prepareStep( recipe, blockName, stepName ) );			}			return steps;		} // prepareBlock		function prepareStep( recipe, blockName, stepName ) {			var step = recipe[ blockName ][ stepName ];			var exp = ( typeof step._match == "string" ) ? step._match : step._match.source;			return {				recipe: recipe				, blockName: blockName				, stepName: stepName				, exp: "(" + exp + ")"				, length: 1             // add 1 to account for the newly added parentheses					+ (exp             // count number of submatches in here						.replace( /\\./g, "%" )   // disable any escaped character						.replace( /\[.*?\]/g, "%" ) // disable any character class						.match( /\((?!\?)/g )    // match any open parenthesis, not followed by a ?					|| []              // make sure it is an empty array if there are no matches					).length            // get the number of matches				, replacement: step._replace ? step._replace : book.defaultReplacement			};		} // prepareStep			function knowHow( steps ) {			var prevLength = 1;			var exps = [];			for (var i = 0; i < steps.length; i++) {				var exp = steps[ i ].exp;				// adjust backreferences				exp = exp.replace( /\\\\|\\(\d+)/g, function( m, aNum ) {					return !aNum ? m : "\\" + ( prevLength + 1 + parseInt( aNum, 10 ) );				} );				exps.push( exp );				prevLength += steps[ i ].length;			}			var prolog = '((?:\\s|\\S)*?)';			var epilog = '((?:\\s|\\S)+)';			var source = '(?:' + exps.join( "|" ) + ')';			source = prolog + source + '|' + epilog;			return new RegExp( source, recipe._case ? "g" : "gi" );		} // knowHow		function escapeHTML( str ) {			return str.replace( /&/g, "&" ).replace( /</g, "<" );		} // escapeHTML		function replaceSpaces( str ) {			return str.replace( / +/g, function( spaces ) {				return spaces.replace( / /g, replaceSpace );			} );		} // replaceSpaces		function filter( str ) {			str = escapeHTML( str );			if( replaceSpace ) {				str = replaceSpaces( str );			}			return str;		} // filter		function applyRecipe( subject, recipe ) {			return cook( subject, recipe );		} // applyRecipe		function applyBlock( subject, recipe, blockName ) {			return cook( subject, recipe, blockName );		} // applyBlock		function applyStep( subject, recipe, blockName, stepName ) {			var replaceSpace    = book.replaceSpace;			var step = prepareStep( recipe, blockName, stepName );			var steps = [step];			var perfect = subject.replace( knowHow( steps ), function() {				return chef.apply( { steps: steps }, arguments );			} );			return perfect;		} // applyStep		function applyModule( subject, module, context ) {			if( ! module ) {				return filter( subject );			}			var sub = module.split( '/' );			var recipeName = '';			var blockName = '';			var stepName  = '';			switch( sub.length ) {				case 1:					recipeName = sub[0];					break;				case 2:					recipeName = sub[0]; blockName = sub[1];					break;				case 3:					recipeName = sub[0]; blockName = sub[1]; stepName = sub[2];					break;				default:					return filter( subject );			}			function getRecipe( recipeName ) {				var path = getPath( recipeName );				var recipe = book.recipes[ path ];				if( ! recipe ) {					throw {msg:"recipe not available"};				}				return recipe;			}			try {				var recipe;				if ( '' == stepName ) {					if ( '' == blockName ) {						if ( '' == recipeName ) {							//nothing to do						}						else { // ( '' != recipeName )							recipe = getRecipe( recipeName );							return applyRecipe( subject, recipe );						}					}					else { // ( '' != blockName )						if( '' == recipeName ) {							recipe = context.recipe;						}						else {							recipe = getRecipe( recipeName );						}						if( ! (blockName in recipe) ) {							return filter( subject );						}						return applyBlock( subject, recipe, blockName );					}				}				else { // ( '' != stepName )					if( '' == recipeName ) {						recipe = context.recipe;					}					else {						recipe = getRecipe( recipeName );					}					if( '' == blockName ) {						blockName = context.blockName;					}					if( ! (blockName in recipe) ) {						return filter( subject );					}					if( ! (stepName in recipe[blockName]) ) {						return filter( subject );					}					return applyStep( subject, recipe, blockName, stepName );				}			}			catch( e ) {				if (e.msg && e.msg == "recipe not available") {					var cue = 'chili_' + book.unique();					if( book.recipeLoading ) {						var path = getPath( recipeName );						if( ! book.queue[ path ] ) {							/* this is a new recipe to download */							try {								book.queue[ path ] = [ {cue: cue, subject: subject, module: module, context: context} ];								$.getJSON( path, function( recipeLoaded ) {									book.recipes[ path ] = recipeLoaded;									var q = book.queue[ path ];									for( var i = 0, iTop = q.length; i < iTop; i++ ) {										var replacement = applyModule( q[ i ].subject, q[ i ].module, q[ i ].context );										if( book.replaceTab ) {											replacement = replacement.replace( /\t/g, book.replaceTab );										}										if( book.replaceNewLine ) {											replacement = replacement.replace( /\n/g, book.replaceNewLine );										}										$( '#' + q[ i ].cue ).replaceWith( replacement );									}								} );							}							catch( recipeNotAvailable ) {								alert( "the recipe for '" + recipeName + "' was not found in '" + path + "'" );							}						}						else {							/* not a new recipe, so just enqueue this element */							book.queue[ path ].push( {cue: cue, subject: subject, module: module, context: context} );						}						return '<span id="' + cue + '">' + filter( subject ) + '</span>';					}					return filter( subject );				}				else {					return filter( subject );				}			}		} // applyModule		function addPrefix( prefix, replacement ) {			var aux = replacement.replace( /(<span\s+class\s*=\s*(["']))((?:(?!__)\w)+\2\s*>)/ig, "$1" + prefix + "__$3" );			return aux;		} // addPrefix		function chef() {			if (! arguments[ 0 ]) {				return '';			}			var steps = this.steps;			var i = 0; // iterate steps			var j = 2;	// iterate chef's arguments			var prolog = arguments[ 1 ];			var epilog = arguments[ arguments.length - 3 ];			if (! epilog) {				var step;				while( step = steps[ i++ ] ) {					var aux = arguments; // this unmasks chef's arguments inside the next function					if( aux[ j ] ) {						var replacement = '';						if( $.isFunction( step.replacement ) ) {							var matches = []; //Array.slice.call( aux, j, step.length );							for (var k = 0, kTop = step.length; k < kTop; k++) {								matches.push( aux[ j + k ] );							}							matches.push( aux[ aux.length - 2 ] );							matches.push( aux[ aux.length - 1 ] );							replacement = step.replacement								.apply( { 									x: function() { 										var subject = arguments[0];										var module = arguments[1];										var context = { 											 recipe:  step.recipe											, blockName: step.blockName 										};										return applyModule( subject, module, context );									} 								}, matches );						}						else { //we expect step.replacement to be a string							replacement = step.replacement								.replace( /(\\\$)|(?:\$\$)|(?:\$(\d+))/g, function( m, escaped, K ) {									if( escaped ) {    /* \$ */ 										return "$";									}									else if( !K ) {    /* $$ */ 										return filter( aux[ j ] );									}									else if( K == "0" ) { /* $0 */ 										return step.stepName;									}									else {        /* $K */										return filter( aux[ j + parseInt( K, 10 ) ] );									}								} );						}						replacement = addPrefix( step.recipe._name, replacement );						return filter( prolog ) + replacement;					} 					else {						j+= step.length;					}				}			}			else {				return filter( epilog );			}		} // chef		if( ! blockName ) {			blockName = '_main';			checkSpices( recipe );		}		if( ! (blockName in recipe) ) {			return filter( ingredients );		}		var replaceSpace = book.replaceSpace;		var steps = prepareBlock( recipe, blockName );		var kh = knowHow( steps );		var perfect = ingredients.replace( kh, function() {			return chef.apply( { steps: steps }, arguments );		} );		return perfect;	} // cook	function loadStylesheetInline( sourceCode ) { 		if( document.createElement ) { 			var e = document.createElement( "style" ); 			e.type = "text/css"; 			if( e.styleSheet ) { // IE 				e.styleSheet.cssText = sourceCode; 			} 			else { 				var t = document.createTextNode( sourceCode ); 				e.appendChild( t ); 			} 			document.getElementsByTagName( "head" )[0].appendChild( e ); 		} 	} // loadStylesheetInline				function checkSpices( recipe ) {		var name = recipe._name;		if( ! book.queue[ name ] ) {			var content = ['/* Chili -- ' + name + ' */'];			for (var blockName in recipe) {				if( blockName.search( /^_(?!main\b)/ ) < 0 ) {					for (var stepName in recipe[ blockName ]) {						var step = recipe[ blockName ][ stepName ];						if( '_style' in step ) {							if( step[ '_style' ].constructor == String ) {								content.push( '.' + name + '__' + stepName + ' { ' + step[ '_style' ] + ' }' );							}							else {								for (var className in step[ '_style' ]) {									content.push( '.' + name + '__' + className + ' { ' + step[ '_style' ][ className ] + ' }' );								}							}						}					}				}			}			content = content.join('\n');			loadStylesheetInline( content );			book.queue[ name ] = true;		}	} // checkSpices	function askDish( el ) {		var recipeName = book.codeLanguage( el );		if( '' != recipeName ) {			var path = getPath( recipeName );			if( book.recipeLoading ) {				/* dynamic setups come here */				if( ! book.queue[ path ] ) {					/* this is a new recipe to download */					try {						book.queue[ path ] = [ el ];						$.getJSON( path, function( recipeLoaded ) {							book.recipes[ path ] = recipeLoaded;							var q = book.queue[ path ];							for( var i = 0, iTop = q.length; i < iTop; i++ ) {								makeDish( q[ i ], path );							}						} );					}					catch( recipeNotAvailable ) {						alert( "the recipe for '" + recipeName + "' was not found in '" + path + "'" );					}				}				else {					/* not a new recipe, so just enqueue this element */					book.queue[ path ].push( el );				}				/* a recipe could have been already downloaded */				makeDish( el, path ); 			}			else {				/* static setups come here */				makeDish( el, path );			}		}	} // askDish	function makeDish( el, recipePath ) {		var recipe = book.recipes[ recipePath ];		if( ! recipe ) {			return;		}		var $el = $( el );		var ingredients = $el.text();		if( ! ingredients ) {			return;		}		//fix for msie: \r (13) is used instead of \n (10)		//fix for opera: \r\n is used instead of \n		ingredients = ingredients.replace(/\r\n?/g, "\n");		//reverse fix for safari: msie, mozilla and opera render the initial \n		if( $el.parent().is('pre') ) {/*			if( ! $.browser.safari ) {				ingredients = ingredients.replace(/^\n/g, "");			}*/		}		var dish = cook( ingredients, recipe ); // all happens here			if( book.replaceTab ) {			dish = dish.replace( /\t/g, book.replaceTab );		}		if( book.replaceNewLine ) {			dish = dish.replace( /\n/g, book.replaceNewLine );		}		el.innerHTML = dish; //much faster than $el.html( dish );		//tried also the function replaceHtml from http://blog.stevenlevithan.com/archives/faster-than-innerhtml		//but it was not faster nor without sideffects (it was not possible to count spans into el)		//opera and safari select PRE text correctly /*		if( $.browser.msie || $.browser.mozilla ) {			enableSelectionHelper( el );		}*/		var $that = $el.parent();		var classes = $that.attr( 'class' );		var ln = /ln-(\d+)-([\w][\w\-]*)|ln-(\d+)|ln-/.exec( classes );		if( ln ) {			addLineNumbers( el );			var start = 0;			if( ln[1] ) {				start = parseInt( ln[1], 10 );				var $pieces = $( '.ln-' + ln[1] + '-' + ln[2] );				var pos = $pieces.index( $that[0] );				$pieces.slice( 0, pos ).each( function() {					start += $( this ).find( 'li' ).length;				} );			}			else if( ln[3] ) {				start = parseInt( ln[3], 10 );			}			else {				start = 1;			}			$el.find( 'ol' )[0].start = start;			$('body').width( $('body').width() - 1 ).width( $('body').width() + 1 );		}		else if( book.lineNumbers ) {			addLineNumbers( el );		}	} // makeDish	function enableSelectionHelper( el ) {	 return false; //disable the selection helper		var element = null;		$( el )		.parents()		.filter( "pre" )		.bind( "mousedown", function() {			element = this;			if( $.browser.msie ) {				document.selection.empty();			}			else {				window.getSelection().removeAllRanges();			}		} )		.bind( "mouseup", function( event ) {			if( element && (element == this) ) {				element = null;				var selected = '';				if( $.browser.msie ) {					selected = document.selection.createRange().htmlText;					if( '' == selected ) { 						return;					}					selected = preserveNewLines( selected );					var container_tag = '<textarea >';				}				else {					selected = window.getSelection().toString(); //opera doesn't select new lines					if( '' == selected ) {						return;					}					selected = selected						.replace( /\r/g, '' )						.replace( /^# ?/g, '' )						.replace( /\n# ?/g, '\n' )					;					var container_tag = '<pre >';				}				var $container = $( container_tag.replace( /\bSTYLE\b/, ChiliBook.selectionStyle ) )					.appendTo( 'body' )					.text( selected )					.attr( 'id', 'chili_selection' )					.click( function() { $(this).remove(); } )				;				var top = event.pageY - Math.round( $container.height() / 2 ) + "px";				var left = event.pageX - Math.round( $container.width() / 2 ) + "px";				$container.css( { top: top, left: left } );				if( $.browser.msie ) {//					window.clipboardData.setData( 'Text', selected ); //I couldn't find anything similar for Mozilla					$container[0].focus();					$container[0].select();				}				else {					var s = window.getSelection();					s.removeAllRanges();					var r = document.createRange();					r.selectNodeContents( $container[0] );					s.addRange( r );				}			}		} )		;	} // enableSelectionHelper	function getPath( recipeName ) {		return book.recipeFolder + recipeName + ".js";	} // getPath	function getSelectedText() {		var text = '';		if( $.browser.msie ) {			text = document.selection.createRange().htmlText;		}		else {			text = window.getSelection().toString();		}		return text;	} // getSelectedText	function preserveNewLines( html ) {		do { 			var newline_flag = ChiliBook.unique();		}		while( html.indexOf( newline_flag ) > -1 );		var text = '';		if (/<br/i.test(html) || /<li/i.test(html)) {			if (/<br/i.test(html)) {				html = html.replace( /\<br[^>]*?\>/ig, newline_flag );			}			else if (/<li/i.test(html)) {				html = html.replace( /<ol[^>]*?>|<\/ol>|<li[^>]*?>/ig, '' ).replace( /<\/li>/ig, newline_flag );			}			var el = $( '<pre>' ).appendTo( 'body' ).hide()[0];			el.innerHTML = html;			text = $( el ).text().replace( new RegExp( newline_flag, "g" ), '\r\n' );			$( el ).remove();		}		return text;	} // preserveNewLines	function addLineNumbers( el ) {		function makeListItem1( not_last_line, not_last, last, open ) {			var close = open ? '</span>' : '';			var aux = '';			if( not_last_line ) {				aux = '<li>' + open + not_last + close + '</li>';			}			else if( last ) {				aux = '<li>' + open + last + close + '</li>';			}			return aux;		} // makeListItem1		function makeListItem2( not_last_line, not_last, last, prev_li ) {			var aux = '';			if( prev_li ) {				aux = prev_li;			}			else {				aux = makeListItem1( not_last_line, not_last, last, '' )			}			return aux;		} // makeListItem2		var html = $( el ).html();		var br = /<br>/.test(html) ? '<br>' : '<BR>';		var empty_line = '<li>' + book.replaceSpace + '</li>';		var list_items = html			//extract newlines at the beginning of a span			.replace( /(<span [^>]+>)((?:(?: |\xA0)<br>)+)(.*?)(<\/span>)/ig, '$2$1$3$4' ) // I don't know why <span .*?> does not work here			//transform newlines inside of a span			.replace( /(.*?)(<span .*?>)(.*?)(?:<\/span>(?: |\xA0)<br>|<\/span>)/ig,    // but here it does				function( all, before, open, content ) {					if (/<br>/i.test(content)) {						var pieces = before.split( br );						var lastPiece = pieces.pop();						before = pieces.join( br );						var aux = (before ? before + br : '') //+ replace1( lastPiece + content, open );							+ (lastPiece + content).replace( /((.*?)(?: |\xA0)<br>)|(.*)/ig, 							function( tmp, not_last_line, not_last, last ) {								var aux2 = makeListItem1( not_last_line, not_last, last, open );								return aux2;							} 						);						return aux;					}					else {						return all;					}				} 			)			//transform newlines outside of a span			.replace( /(<li>.*?<\/li>)|((.*?)(?: |\xA0)<br>)|(.+)/ig, 				function( tmp, prev_li, not_last_line, not_last, last ) {					var aux2 = makeListItem2( not_last_line, not_last, last, prev_li );					return aux2;				} 			)			//fix empty lines for Opera			.replace( /<li><\/li>/ig, empty_line )		;		el.innerHTML = '<ol>' + list_items + '</ol>';	} // addLineNumbers	function revealChars( tmp ) {		return $			.map( tmp.split(''), 				function(n, i) { 					return ' ' + n + ' ' + n.charCodeAt( 0 ) + ' ';				} )			.join(' ');	} // revealChars//-----------------------------------------------------------------------------// the coloring starts here	this	.each( function() {		var $this = $( this );		$this.trigger( 'chili.before_coloring' );		askDish( this );		$this.trigger( 'chili.after_coloring' );	} );	return this;//-----------------------------------------------------------------------------};//main$( function() {	if( ChiliBook.automatic ) {		$( ChiliBook.automaticSelector ).chili();	}} );} ) ( jQuery );

  recipes.js

/*===============================================================================Chili is the jQuery code highlighter plugin...............................................................................LICENSE: http://www.opensource.org/licenses/mit-license.phpWEBSITE: http://noteslog.com/chili/											  Copyright 2008 / Andrea Ercolino===============================================================================*/ChiliBook.recipeLoading = false;ChiliBook.recipes[ "php.js" ] =/* ---------------------------------------------------------------------------- * this recipe uses a little trick for highlighting php code *  1: replace each php snippet with a placeholder *  2: highlight html without php and php snippets apart *  3: replace each placeholder with its highlighted php snippet * * the trick is not perfect only if the html without php is broken * however, in such a case many highlighters get fooled but Chili does not * * --- * this recipe has been adapted for working with Safari * in fact, Safari cannot match more than 101236 characters with a lazy star * --------------------------------------------------------------------------*/{	 _name: "php"	, _case: true	, _main: {		 all: {			 _match: /[\w\W]*/ 			, _replace: function( all ) {				var placeholder = String.fromCharCode(0);				var blocks = [];				var that = this;				var no_php_1 = all.replace( /<\?[^?]*\?+(?:[^>][^?]*\?+)*>/g, function( block ) {					blocks.push( that.x( block, '/block/php_1' ) );					return placeholder;				} );				var no_php_2 = no_php_1.replace( /^[^?]*\?+(?:[^>][^?]*\?+)*>|<\?[\w\W]*$/g, function( block ) {					blocks.push( that.x( block, '/block/php_2' ) );					return placeholder;				} );				if( blocks.length ) {					var html = this.x( no_php_2, 'html' );					var count = 0;					return html.replace( new RegExp( placeholder, "g" ), function() {						return blocks[ count++ ];					} );				}				else {					return this.x( all, '/php' );				}			}		}	}	, block: {		 php_1: { // --- <? +++ ?> ---			 _match: /(<\?(?:php\b)?)([^?]*\?+(?:[^>][^?]*\?+)*>)/			, _replace: function( all, open, content ) {				return "<span class='start'>" + this.x( open ) + "</span>"					+ this.x( content.replace( /\?>$/, '' ), '/php' ) 					+ "<span class='end'>" + this.x( '?>' ) + "</span>";			}			, _style: {					 start: "color: red; font-weight: bold"					, end:  "color: red;"			}		}		, php_2: { // +++ ?> --- <? +++			 _match: /([^?]*\?+(?:[^>][^?]*\?+)*>)|(<\?(?:php\b)?)([\w\W]*)/			, _replace: function( all, content, open2, content2 ) {				if( open2 ) {					return "<span class='start'>" + this.x( open2 ) + "</span>"						+ this.x( content2, '/php' );				}				else {					return this.x( content.replace( /\?>$/, '' ), '/php' ) 						+ "<span class='end'>" + this.x( '?>' ) + "</span>";				}			}			, _style: {					 start: "color: red; font-weight: bold"					, end:  "color: red;"			}		}	}	, php: {		 mlcom: {			 _match: /\/\*[^*]*\*+([^\/][^*]*\*+)*\// 			, _style: "color: gray;"		}		, com: {			 _match: /(?:\/\/.*)|(?:[^\\]\#.*)/ 			, _style: "color: green;"		}		, string1: {			 _match: /\'[^\'\\]*(?:\\.[^\'\\]*)*\'/ 			, _style: "color: purple;"		}		, string2: {			 _match: /\"[^\"\\]*(?:\\.[^\"\\]*)*\"/ 			, _style: "color: fuchsia;"		}		, value: {			 _match: /\b(?:[Nn][Uu][Ll][Ll]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])\b/ 			, _style: "color: gray; font-weight: bold;"		}		, number: {			 _match: /\b[+-]?(\d*\.?\d+|\d+\.?\d*)([eE][+-]?\d+)?\b/ 			, _style: "color: red;"		}		, const1: {			 _match: /\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\b/ 			, _style: "color: red;"		}		, const2: {			 _match: /\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR))\b/ 			, _style: "color: red;"		}		, global: {			 _match: /(?:\$GLOBALS|\$_COOKIE|\$_ENV|\$_FILES|\$_GET|\$_POST|\$_REQUEST|\$_SERVER|\$_SESSION|\$php_errormsg)\b/ 			, _style: "color: red;"		}		, keyword: {			 _match: /\b(?:__CLASS__|__FILE__|__FUNCTION__|__LINE__|__METHOD__|abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exception|exit|extends|extends|final|for|foreach|function|global|if|implements|include|include_once|interface|isset|list|new|old_function|or|php_user_filter|print|private|protected|public|require|require_once|return|static|switch|this|throw|try|unset|use|var|while|xor)\b/ 			, _style: "color: navy; font-weight: bold;"		}		, variable: {			 _match: /\$(\w+)/			, _replace: '<span >$</span><span >$1</span>' 			, _style: "color: #4040c2;"		}		, heredoc: {			 _match: /(\<\<\<\s*)(\w+)((?:(?!\2).*\n)+)(\2)\b/			, _replace: '<span >$1</span><span >$2</span><span >$3</span><span >$4</span>' 		}	}}ChiliBook.recipes[ "html.js" ] = {	 _name: 'html'	, _case: false	, _main: {		 doctype: { 			 _match: /<!DOCTYPE\b[\w\W]*?>/ 			, _style: "color: #CC6600;"		}		, ie_style: {			 _match: /(<!--\[[^\]]*\]>)([\w\W]*?)(<!\[[^\]]*\]-->)/			, _replace: function( all, open, content, close ) {				return "<span class='ie_style'>" + this.x( open ) + "</span>" 					 + this.x( content, '//style' ) 					 + "<span class='ie_style'>" + this.x( close ) + "</span>";			}			, _style: "color: DarkSlateGray; font-weight: bold;"		}		, comment: { 			 _match: /<!--[\w\W]*?-->/ 			, _style: "color: #4040c2;"		}		, script: { 			 _match: /(<script\s+[^>]*>)([\w\W]*?)(<\/script\s*>)/			, _replace: function( all, open, content, close ) { 				 return this.x( open, '//tag_start' ) 					 + this.x( content, 'js' ) 					 + this.x( close, '//tag_end' );			} 		}		, style: { 			 _match: /(<style\s+[^>]*>)([\w\W]*?)(<\/style\s*>)/			, _replace: function( all, open, content, close ) { 				 return this.x( open, '//tag_start' ) 					 + this.x( content, 'css' ) 					 + this.x( close, '//tag_end' );			} 		}		// matches a starting tag of an element (with attrs)		// like "<div ... >" or "<img ... />"		, tag_start: { 			 _match: /(<\w+)((?:[?%]>|[\w\W])*?)(\/>|>)/ 			, _replace: function( all, open, content, close ) { 				 return "<span class='tag_start'>" + this.x( open ) + "</span>" 					 + this.x( content, '/tag_attrs' ) 					 + "<span class='tag_start'>" + this.x( close ) + "</span>";			}			, _style: "color: navy; font-weight: bold;"		} 		// matches an ending tag		// like "</div>"		, tag_end: { 			 _match: /<\/\w+\s*>|\/>/ 			, _style: "color: navy;"		}		, entity: { 			 _match: /&\w+?;/ 			, _style: "color: blue;"		}	}	, tag_attrs: {		// matches a name/value pair		attr: {			// before in $1, name in $2, between in $3, value in $4			 _match: /(\W*?)([\w-]+)(\s*=\s*)((?:\'[^\']*(?:\\.[^\']*)*\')|(?:\"[^\"]*(?:\\.[^\"]*)*\"))/ 			, _replace: "$1<span class='attr_name'>$2</span>$3<span class='attr_value'>$4</span>"			, _style: { attr_name: "color: green;", attr_value: "color: maroon;" }		}	}};ChiliBook.recipes[ "js.js" ] = {	 _name: 'js'	, _case: true	, _main: {		 ml_comment: { 			 _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//			, _style: 'color: gray;'		}		, sl_comment: { 			 _match: /\/\/.*/			, _style: 'color: green;'		}		, string: { 			 _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/			, _style: 'color: teal;'		}		, num: { 			 _match: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/			, _style: 'color: red;'		}		, reg_not: { //this prevents "a / b / c" to be interpreted as a reg_exp			 _match: /(?:\w+\s*)\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*(?:\s*\w+)/			, _replace: function( all ) {				return this.x( all, '//num' );			}		}		, reg_exp: { 			 _match: /\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*/			, _style: 'color: maroon;'		}		, brace: { 			 _match: /[\{\}]/			, _style: 'color: red; font-weight: bold;'		}		, statement: { 			 _match: /\b(with|while|var|try|throw|switch|return|if|for|finally|else|do|default|continue|const|catch|case|break)\b/			, _style: 'color: navy; font-weight: bold;'		}		, error: { 			 _match: /\b(URIError|TypeError|SyntaxError|ReferenceError|RangeError|EvalError|Error)\b/			, _style: 'color: Coral;'		}		, object: { 			 _match: /\b(String|RegExp|Object|Number|Math|Function|Date|Boolean|Array)\b/			, _style: 'color: DeepPink;'		}		, property: { 			 _match: /\b(undefined|arguments|NaN|Infinity)\b/			, _style: 'color: Purple; font-weight: bold;'		}		, 'function': { 			 _match: /\b(parseInt|parseFloat|isNaN|isFinite|eval|encodeURIComponent|encodeURI|decodeURIComponent|decodeURI)\b/			, _style: 'color: olive;'		}		, operator: {			 _match: /\b(void|typeof|this|new|instanceof|in|function|delete)\b/			, _style: 'color: RoyalBlue; font-weight: bold;'		}		, liveconnect: {			 _match: /\b(sun|netscape|java|Packages|JavaPackage|JavaObject|JavaClass|JavaArray|JSObject|JSException)\b/			, _style: 'text-decoration: overline;'		}	}};ChiliBook.recipes[ "css.js" ] = {	 _name: 'css'	, _case: true	, _main: {		 comment: { 			 _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\// 			, _style: "color: olive;"		}		, directive: {			 _match: /@\w+/			, _style: "color: fuchsia;"		}		, url: {			 _match: /\b(url\s*\()([^)]+)(\))/			, _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"			, _style: "color: fuchsia;"		}		, block:  {			 _match: /\{([\w\W]*?)\}/			, _replace: function( all, pairs ) {				return '{' + this.x( pairs, '/definition' ) + '}';			}		}		, 'class': {			 _match: /\.\w+/			, _style: "color: #CC0066; font-weight: bold;"		}		, id:   {			 _match: /#\w+/			, _style: "color: IndianRed; font-weight: bold;"		}		, pseudo: {			 _match: /:\w+/			, _style: "color: #CC9900;"		}		, element: {			 _match: /\w+/			, _style: "color: Purple; font-weight: bold;"		}	}	, definition: {		 comment: { 			 _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//		}		, property: {			 _match: /\b(?:zoom|z-index|writing-mode|word-wrap|word-spacing|word-break|width|widows|white-space|volume|voice-family|visibility|vertical-align|unicode-bidi|top|text-underline-position|text-transform|text-shadow|text-overflow|text-kashida-space|text-justify|text-indent|text-decoration|text-autospace|text-align-last|text-align|table-layout|stress|speech-rate|speak-punctuation|speak-numeral|speak-header|speak|size|scrollbar-track-color|scrollbar-shadow-color|scrollbar-highlight-color|scrollbar-face-color|scrollbar-dark-shadow-color|scrollbar-base-color|scrollbar-arrow-color|scrollbar-3d-light-color|ruby-position|ruby-overhang|ruby-align|right|richness|quotes|position|play-during|pitch-range|pitch|pause-before|pause-after|pause|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-Y|overflow-X|overflow|outline-width|outline-style|outline-color|outline|orphans|min-width|min-height|max-width|max-height|marks|marker-offset|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|line-break|letter-spacing|left|layout-grid-type|layout-grid-mode|layout-grid-line|layout-grid-char-spacing|layout-grid-char|layout-grid|layout-flow|layer-background-image|layer-background-color|include-source|ime-mode|height|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float|filter|empty-cells|elevation|display|direction|cursor|cue-before|cue-after|cue|counter-reset|counter-increment|content|color|clip|clear|caption-side|bottom|border-width|border-top-width|border-top-style|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-left-width|border-left-style|border-left-color|border-left|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-color|border-bottom|border|behavior|background-repeat|background-position-y|background-position-x|background-position|background-image|background-color|background-attachment|background|azimuth|accelerator)\s*:/			, _style: "color: #330066;"		}		, special: {			 _match: /\b(?:-use-link-source|-set-link-source|-replace|-moz-user-select|-moz-user-modify|-moz-user-input|-moz-user-focus|-moz-outline-width|-moz-outline-style|-moz-outline-color|-moz-outline|-moz-opacity|-moz-border-top-colors|-moz-border-right-colors|-moz-border-radius-topright|-moz-border-radius-topleft|-moz-border-radius-bottomright|-moz-border-radius-bottomleft|-moz-border-radius|-moz-border-left-colors|-moz-border-bottom-colors|-moz-binding)\s*:/			, _style: "color: #330066; text-decoration: underline;"		}		, url: {			 _match: /\b(url\s*\()([^)]+)(\))/			, _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"		}		, value: {			 _match: /\b(?:xx-small|xx-large|x-soft|x-small|x-slow|x-low|x-loud|x-large|x-high|x-fast|wider|wait|w-resize|visible|url|uppercase|upper-roman|upper-latin|upper-alpha|underline|ultra-expanded|ultra-condensed|tv|tty|transparent|top|thin|thick|text-top|text-bottom|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table-caption|sw-resize|super|sub|status-bar|static|square|spell-out|speech|solid|soft|smaller|small-caption|small-caps|small|slower|slow|silent|show|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|s-resize|run-in|rtl|rightwards|right-side|right|ridge|rgb|repeat-y|repeat-x|repeat|relative|projection|print|pre|portrait|pointer|overline|outside|outset|open-quote|once|oblique|nw-resize|nowrap|normal|none|no-repeat|no-open-quote|no-close-quote|ne-resize|narrower|n-resize|move|mix|middle|message-box|medium|marker|ltr|lowercase|lower-roman|lower-latin|lower-greek|lower-alpha|lower|low|loud|local|list-item|line-through|lighter|level|leftwards|left-side|left|larger|large|landscape|justify|italic|invert|inside|inset|inline-table|inline|icon|higher|high|hide|hidden|help|hebrew|handheld|groove|format|fixed|faster|fast|far-right|far-left|fantasy|extra-expanded|extra-condensed|expanded|embossed|embed|e-resize|double|dotted|disc|digits|default|decimal-leading-zero|decimal|dashed|cursive|crosshair|cross|crop|counters|counter|continuous|condensed|compact|collapse|code|close-quote|circle|center-right|center-left|center|caption|capitalize|braille|bottom|both|bolder|bold|block|blink|bidi-override|below|behind|baseline|avoid|auto|aural|attr|armenian|always|all|absolute|above)\b/			, _style: "color: #3366FF;"		}		, string: { 			 _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/ 			, _style: "color: teal;"		}		, number: { 			 _match: /(?:\b[+-]?(?:\d*\.?\d+|\d+\.?\d*))(?:%|(?:(?:px|pt|em|)\b))/ 			, _style: "color: red;"		}		, color : { 			 _match: /(?:\#[a-fA-F0-9]{3,6})|\b(?:yellow|white|teal|silver|red|purple|olive|navy|maroon|lime|green|gray|fuchsia|blue|black|aqua|YellowGreen|Yellow|WhiteSmoke|White|Wheat|Violet|Turquoise|Tomato|Thistle|Teal|Tan|SteelBlue|SpringGreen|Snow|SlateGrey|SlateGray|SlateBlue|SkyBlue|Silver|Sienna|SeaShell|SeaGreen|SandyBrown|Salmon|SaddleBrown|RoyalBlue|RosyBrown|Red|Purple|PowderBlue|Plum|Pink|Peru|PeachPuff|PapayaWhip|PaleVioletRed|PaleTurquoise|PaleGreen|PaleGoldenRod|Orchid|OrangeRed|Orange|OliveDrab|Olive|OldLace|Navy|NavajoWhite|Moccasin|MistyRose|MintCream|MidnightBlue|MediumVioletRed|MediumTurquoise|MediumSpringGreen|MediumSlateBlue|MediumSeaGreen|MediumPurple|MediumOrchid|MediumBlue|MediumAquaMarine|Maroon|Magenta|Linen|LimeGreen|Lime|LightYellow|LightSteelBlue|LightSlateGrey|LightSlateGray|LightSkyBlue|LightSeaGreen|LightSalmon|LightPink|LightGrey|LightGreen|LightGray|LightGoldenRodYellow|LightCyan|LightCoral|LightBlue|LemonChiffon|LawnGreen|LavenderBlush|Lavender|Khaki|Ivory|Indigo|IndianRed|HotPink|HoneyDew|Grey|GreenYellow|Green|Gray|GoldenRod|Gold|GhostWhite|Gainsboro|Fuchsia|ForestGreen|FloralWhite|FireBrick|DodgerBlue|DimGrey|DimGray|DeepSkyBlue|DeepPink|Darkorange|DarkViolet|DarkTurquoise|DarkSlateGrey|DarkSlateGray|DarkSlateBlue|DarkSeaGreen|DarkSalmon|DarkRed|DarkOrchid|DarkOliveGreen|DarkMagenta|DarkKhaki|DarkGrey|DarkGreen|DarkGray|DarkGoldenRod|DarkCyan|DarkBlue|Cyan|Crimson|Cornsilk|CornflowerBlue|Coral|Chocolate|Chartreuse|CadetBlue|BurlyWood|Brown|BlueViolet|Blue|BlanchedAlmond|Black|Bisque|Beige|Azure|Aquamarine|Aqua|AntiqueWhite|AliceBlue)\b/ 			, _style: "color: green;"		}	}};

  

<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Search / goMap</title> <link type="text/css" href="../main.css" rel="stylesheet" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="../js/jquery-1.11.1.min.js"></script> <script type="text/javascript" src="../js/jquery.gomap-1.3.3.js"></script><script type="text/javascript" src="../js/jquery.dump.js"></script><script type="text/javascript" src="../js/jquery.chili-2.2.js"></script><script type="text/javascript" src="../js/recipes.js"></script>  <script type="text/javascript"> $(function() {	var lat = 56.946536;	var lon = 24.10485;	var zoom = 8;	$("#map").goMap({		scaleControl: true, 		maptype: 'ROADMAP', 		streetViewControl: false,		zoom: zoom,		markers: [{			id: 'address',			latitude: lat, 			longitude: lon,			draggable: true    }]	});//	$("#message").appendTo('#dialogMap').show();	$.goMap.createListener({type:'marker', marker:'address'}, 'position_changed', function() { 		$("#latlon").val($($.goMap.mapId).data('address').getPosition().toUrlValue());  });	$("#search_map").click(function() {		if($("#map_address").val() == "")			alert("Address is empty!")		else {			var _address = $.goMap.createListener({type:'marker', marker:'address'}, 'position_changed', function() { 				$.goMap.fitBounds();				$.goMap.removeListener(_address);				$.goMap.setMap({zoom:17});		  });			$.goMap.setMarker('address', {address:$("#map_address").val()});		}		return false;	});});</script> <style>.gomapMarker {	width:30px;	height:200px;	display:block;}</style></head> <body> <div id="wrap">	<div id="header">		<div id="logo"><h1><b>$.goMap()</b> / search</h1> google maps jQuery plugn</div>		<div id="menu">			<a href="../solutions.php">→ Back</a>		</div>	</div>	<div id="content">		<b>$.goMap()</b> is <a href="http://www.jquery.com/">jQuery</a> plugin useing <a href="http://code.google.com/apis/maps/documentation/javascript/">Google Maps v3</a>.		<h3>Simple example</h3>		<input type="text" name="map_address" value="" id="map_address" /> <input type="button" name="search_map" value="Search" id="search_map" />		<br/>		<input type="text" name="latlon" value="" id="latlon" readonly/>		<br/><style>em, .map, #map2 { 	width:100%;	margin:0 auto;	height:400px;	display:block;}</style>		<br/>		<div id="map"></div>		<div id="footer">pittss © / contacts: pittss@gmail.com</div>	</div></div> </body> </html> 

  

<!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>group / goMap</title> <link type="text/css" href="../main.css" rel="stylesheet" /> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="../js/jquery-1.5.1.min.js"></script> <script type="text/javascript" src="../js/jquery.gomap-1.3.1.js"></script><script type="text/javascript" src="../js/jquery.dump.js"></script><script type="text/javascript" src="../js/jquery.chili-2.2.js"></script><script type="text/javascript" src="../js/recipes.js"></script>  <script type="text/javascript"> $(function() {	$("#map").goMap({		icon: '../img/apartment.png'	});	$.goMap.ready(function() {		var bounds = $.goMap.getBounds();		var southWest = bounds.getSouthWest();		var northEast = bounds.getNorthEast();		var lngSpan = northEast.lng() - southWest.lng();		var latSpan = northEast.lat() - southWest.lat();		for (var i = 0; i < 60; i++) {			var group = 'g1';			var icon = 'http://www.google.com/intl/en_ALL/mapfiles/marker_green'+String.fromCharCode(i + 65)+'.png';			if(i > 50) {				group = 'g4';				icon = 'http://www.google.com/intl/en_ALL/mapfiles/marker_black'+String.fromCharCode((i-50) + 65)+'.png';			}			else if(i > 40) {				group = 'g3';				icon = 'http://www.google.com/intl/en_ALL/mapfiles/marker_orange'+String.fromCharCode((i-40) + 65)+'.png';			}			else if(i > 20) {				group = 'g2';				icon = 'http://www.google.com/intl/en_ALL/mapfiles/marker'+String.fromCharCode((i-20) + 65)+'.png';			}			$.goMap.createMarker({				latitude: southWest.lat() + latSpan * Math.random(),				longitude: southWest.lng() + lngSpan * Math.random(),				group: group,				icon: icon			});		}	});	$("#group").change(function() {		var group = $(this).val();		if(group == 'all')			for (var i in $.goMap.markers) {				$.goMap.showHideMarker($.goMap.markers[i], true);			} 		else {			for (var i in $.goMap.markers) {				$.goMap.showHideMarker($.goMap.markers[i], false);			}			$.goMap.showHideMarkerByGroup(group, true);		}	});	$("#count1").click(function(){		$("#map").goMap();		alert($.goMap.getMarkerCount()); 	});});</script> </head> <body> <div id="wrap">	<div id="header">		<div id="logo"><h1><b>$.goMap()</b> / group</h1> google maps jQuery plugn</div>		<div id="menu">			<a href="../solutions.php">→ Back</a>		</div>	</div>	<div id="content">		<b>$.goMap()</b> is <a href="http://www.jquery.com/">jQuery v1.5</a> plugin useing <a href="http://code.google.com/apis/maps/documentation/javascript/">Google Maps v3</a>.		<h3>Simple example</h3>		<br/><style>em, .map, #map2 { 	width:100%;	margin:0 auto;	height:400px;	display:block;}</style>		<br/>		<select id="group">			<option value="all">Show all markers</option>			<option value="g1">Show only group "g1"</option>			<option value="g2">Show only group "g2"</option>			<option value="g3">Show only group "g3"</option>			<option value="g4">Show only group "g4"</option>		</select>		<input type="button" name="count1" value="count markers" id="count1" />		<div id="map"></div>		<div id="footer">pittss © <?=date("Y");?> / contacts: pittss@gmail.com</div>	</div></div> </body> </html>