﻿var MAP;
var getBound = function(minLng, minLat, maxLng, maxLat) {
	var SWL = new ULatLng(parseFloat(minLat), parseFloat(minLng));
	var NEL = new ULatLng(parseFloat(maxLat), parseFloat(maxLng));
	return new UBounds(SWL, NEL);
};
var centerBound = function(minLng, minLat, maxLng, maxLat) {
	var bounds = getBound(minLng, minLat, maxLng, maxLat);
	MAP.centerAndZoom(bounds.getCenter(), MAP.getBoundsZoomLevel(bounds) + 2);
	return false;
};
var UAREA = function(opts) {
	var self = this;
	var defaultLatlng = new ULatLng(24.95868672803367, 121.26562376972308);
	var defaultZoomlevel = 7;
	var defaultBound = opts.defaultBound;
	
	var Initialize = {
		Map: function() {
			MAP = new UMap(document.getElementById('map'));
			MAP.addControl(U_FULLZOOM_CONTROL);
			MAP.addListener('moveend', mapController.showCenterLatlng);
			var latlng = defaultBound.getCenter() || defaultLatlng;
			var zoomlevel = (MAP.getBoundsZoomLevel(defaultBound) + 2) || defaultZoomlevel;
			MAP.centerAndZoom(latlng, zoomlevel);
		},
		searchPanel: function() {
			USEARCHBEAN.search();
		},
		breadcrumbPanel: function() {
			if (window.location.search)
				var name = decodeURI(window.location.search.split('?')[1].split('=')[1]);
			(!name) ? Ubreadcrumb = new UBREADCRUMB(MAP) : Ubreadcrumb = new UBREADCRUMB(MAP, {name:name});
			MAP.findWithin();
			$('#towns a').bind('click', function(){
				//Ubreadcrumb.changeTownMenu($(this).html());
				return false;
			});
			
		},
		controllerPanel: function() {
			var controllerDiv = $('<div></div>').attr('id', 'controllerPanel').addClass('controller-panel')
								.html('<a class="controller" href="index.jsp">重選縣市</a><a class="controller" href="map.jsp">放大地圖</a>');
			MAP.container.appendChild(controllerDiv.get(0));
			var stopEvent = function(event) {
				event.stopPropagation();
			};
			// 重選縣市
			$('a', controllerDiv).eq(0).bind('click', stopEvent);
			$('a', controllerDiv).eq(0).bind('dbclick', stopEvent);
			// 放大地圖
			$('a', controllerDiv).eq(1).bind('click', function(event){
				var encodeStr = $(this).attr('href') + '?' + getDefaultBound();
				$(this).attr('href', encodeStr);
				stopEvent(event);
			});
			$('a', controllerDiv).eq(1).bind('dbclick', stopEvent);
		},
		Ajax : function(){
			var loading = function(){
				
			};
			var complete = function(){
				
			};
			$.ajaxSetup({
				beforeSend: loading,
				error: complete,
				success: complete,
				complete: complete
			});
		}
	};
	var mapController = {
		showCenterLatlng: function() {
			var centerLatlng = this.getCenter();
			/*var lat = parseInt(centerLatlng.lat() * 10000).toFixed(0);
			var lng = parseInt(centerLatlng.lng() * 10000).toFixed(0);
			$('#centerLat').html(lat.substr(0, lat.length-4) + '度' + lat.substr(lat.length-4, 2) + '分' + lat.substr(lat.length-2, 2) + '秒');
			$('#centerLng').html(lng.substr(0, lng.length-4) + '度' + lng.substr(lng.length-4, 2) + '分' + lng.substr(lng.length-2, 2) + '秒');*/
			$('#centerLat').html(degreeToDMS(centerLatlng.lat()));
			$('#centerLng').html(degreeToDMS(centerLatlng.lng()));
		}
	};
	var degreeToDMS = function(degree) {
		var d = Math.floor(degree);
		var m = Math.floor((degree-d)*60);
		var s = Math.round((degree*60-d*60-m)*60*10)/10;
		var str = d+'°';
		str += m+'\'';
		str += s+'"';
		return str;
	}
	var getDefaultBound = function() {
		var latlng = MAP.getCenter() || defaultBound.getCenter();
		var zoomlevel = MAP.getZoomLevel();
		if (zoomlevel < defaultZoomlevel)
			zoomlevel = defaultZoomlevel;
		//latlng = UENCODER.encodeLatlng(parseFloat(latlng.lat())) + ',' + UENCODER.encodeLatlng(parseFloat(latlng.lng()));
		//zoomlevel = UENCODER.encodeLatlng(zoomlevel);
		latlng = latlng.toUrlString();
		return UENCODER.objToLocString({center:latlng, zoom:zoomlevel});
	};
	this.getDefaultBound = getDefaultBound;
	(function(){
		for (var i in Initialize)
			Initialize[i]();
	})();
};

