text: /*******************************************************************************
  * KindEditor - WYSIWYG HTML Editor for Internet
  * Copyright (C) 2006-2011 kindsoft.net
  *
  * @author Roddy <luolonghao@gmail.com>
  * @site http://www.kindsoft.net/
  * @licence http://www.kindsoft.net/license.php
  *******************************************************************************/
  
  // Google Maps: http://code.google.com/apis/maps/certification.html
  
  KindEditor.plugin('map', function(K) {
  	var self = this, name = 'map', lang = self.lang(name + '.');
  	self.clickToolbar(name, function() {
  		var html = ['<div style="padding:10px 20px;">',
  			'<div class="ke-dialog-row">',
  			lang.address + ' <input id="kindeditor_plugin_map_address" name="address" class="ke-input-text" value="" style="width:200px;" /> ',
  			'<span class="ke-button-common ke-button-outer">',
  			'<input type="button" name="searchBtn" class="ke-button-common ke-button" value="' + lang.search + '" />',
  			'</span>',
  			'</div>',
  			'<div class="ke-map" style="width:558px;height:360px;"></div>',
  			'</div>'].join('');
  		var dialog = self.createDialog({
  			name : name,
  			width : 600,
  			title : self.lang(name),
  			body : html,
  			yesBtn : {
  				name : self.lang('yes'),
  				click : function(e) {
  					var geocoder = win.geocoder,
  						map = win.map,
  						center = map.getCenter().lat() + ',' + map.getCenter().lng(),
  						zoom = map.getZoom(),
  						maptype = map.getMapTypeId(),
  						url = 'http://maps.googleapis.com/maps/api/staticmap';
  						url += '?center=' + encodeURIComponent(center);
  						url += '&zoom=' + encodeURIComponent(zoom);
  						url += '&size=558x360';
  						url += '&maptype=' + encodeURIComponent(maptype);
  						url += '&markers=' + encodeURIComponent(center);
  						url += '&language=' + self.langType;
  						url += '&sensor=false';
  					self.exec('insertimage', url).hideDialog().focus();
  				}
  			},
  			beforeRemove : function() {
  				searchBtn.remove();
  				if (doc) {
  					doc.write('');
  				}
  				iframe.remove();
  			}
  		});
  		var div = dialog.div,
  			addressBox = K('[name="address"]', div),
  			searchBtn = K('[name="searchBtn"]', div),
  			win, doc;
  		var iframeHtml = ['<!doctype html><html><head>',
  			'<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />',
  			'<style>',
  			'	html { height: 100% }',
  			'	body { height: 100%; margin: 0; padding: 0; background-color: #FFF }',
  			'	#map_canvas { height: 100% }',
  			'</style>',
  			'<script src="http://maps.googleapis.com/maps/api/js?sensor=false&language=' + self.langType + '"></script>',
  			'<script>',
  			'var map, geocoder;',
  			'function initialize() {',
  			'	var latlng = new google.maps.LatLng(31.230393, 121.473704);',
  			'	var options = {',
  			'		zoom: 11,',
  			'		center: latlng,',
  			'		disableDefaultUI: true,',
  			'		panControl: true,',
  			'		zoomControl: true,',
  			'		mapTypeControl: true,',
  			'		scaleControl: true,',
  			'		streetViewControl: false,',
  			'		overviewMapControl: true,',
  			'		mapTypeId: google.maps.MapTypeId.ROADMAP',
  			'	};',
  			'	map = new google.maps.Map(document.getElementById("map_canvas"), options);',
  			'	geocoder = new google.maps.Geocoder();',
  			'	geocoder.geocode({latLng: latlng}, function(results, status) {',
  			'		if (status == google.maps.GeocoderStatus.OK) {',
  			'			if (results[3]) {',
  			'				parent.document.getElementById("kindeditor_plugin_map_address").value = results[3].formatted_address;',
  			'			}',
  			'		}',
  			'	});',
  			'}',
  			'function search(address) {',
  			'	if (!map) return;',
  			'	geocoder.geocode({address : address}, function(results, status) {',
  			'		if (status == google.maps.GeocoderStatus.OK) {',
  			'			map.setZoom(11);',
  			'			map.setCenter(results[0].geometry.location);',
  			'			var marker = new google.maps.Marker({',
  			'				map: map,',
  			'				position: results[0].geometry.location',
  			'			});',
  			'		} else {',
  			'			alert("Invalid address: " + address);',
  			'		}',
  			'	});',
  			'}',
  			'</script>',
  			'</head>',
  			'<body onload="initialize();">',
  			'<div id="map_canvas" style="width:100%; height:100%"></div>',
  			'</body></html>'].join('\n');
  		// TODO：用doc.write(iframeHtml)方式加载时，在IE6上第一次加载报错，暂时使用src方式
  		var iframe = K('<iframe class="ke-textarea" frameborder="0" src="' + self.pluginsPath + 'map/map.html" style="width:558px;height:360px;"></iframe>');
  		function ready() {
  			win = iframe[0].contentWindow;
  			doc = K.iframeDoc(iframe);
  			//doc.open();
  			//doc.write(iframeHtml);
  			//doc.close();
  		}
  		iframe.bind('load', function() {
  			iframe.unbind('load');
  			if (K.IE) {
  				ready();
  			} else {
  				setTimeout(ready, 0);
  			}
  		});
  		K('.ke-map', div).replaceWith(iframe);
  		// search map
  		searchBtn.click(function() {
  			win.search(addressBox.val());
  		});
  	});
  });
  