﻿var UMORAK = function() {
	var self = this;
	var MAP;
	var defaultLatlng = new ULatLng(24.95868672803367, 121.26562376972308);
	var defaultZoomlevel = 7;
	var resizeTimeout = null;
	var Initialize = {
		Map: function() {
			UCONST.EXTRAOVERLAY_NAME = ['88水災衛星圖'];
			UCONST.EXTRAOVERLAY_MAPBASE = ['http://maps.urmap.com/map/satellite88/'];
			MAP = new UMap(document.getElementById('mapDiv'));
			MAP.addControl(U_FULLZOOM_CONTROL);
			MAP.addControl(U_TYPE_CONTROL);
			MAP.addControl(U_SCALE_CONTROL);
			MAP.enableWheelZoom();
			MAP.setMapType(U_SATELLITE_TYPE);
			MAP.centerAndZoom(defaultLatlng, defaultZoomlevel);
			morakEvent.importData(morakEvent.init);
		},
		searchPanel: function() {
			USEARCHBEAN.search();
		},
		windowEvent: function() {
			$(window).bind('resize', windowAction.resize).trigger('resize');
		},
		Ajax : function(){
			var loading = function(){
				
			};
			var complete = function(){
				
			};
			$.ajaxSetup({
				beforeSend: loading,
				error: complete,
				success: complete,
				complete: complete
			});
		}
	};
	var mapController = {
		resize: function() {
			MAP.checkResize();
			MAP.refreshMap();
		}
	};
	var windowAction = {
		resize: function() {
			if (resizeTimeout) clearTimeout(resizeTimeout);
			resizeTimeout = setTimeout(function(){
				var getWindowHeight = function() {
					var de = document.documentElement;
					return self.innerHeight||(de && de.clientHeight)||document.body.clientHeight;
				};
				var mapHeight = getWindowHeight() - $('#topHeader').height() - $('#bottomFooter').height() - 5;
				var eventHeight = mapHeight - 90;
				$('#mapDiv').animate({height:mapHeight}, 0, null, mapController.resize);
				if ($('#eventSideContent')) {
					$('#eventSideContent').height(eventHeight);
					$('#listSection').height(eventHeight-65);
				}
			}, 100);
		}
	};
	var morakEvent = {
		init: function() {
			//this.importData();
			//morakEvent.resize();
			morakEvent.show();
			var eventSideTabWrapperDiv = $('#eventSideTabMenu');
			var eventSideTabDiv = $('#eventSideTab');
			var eventSideContentDiv = $('#eventSideContent');
			var overlay = new UDom(eventSideTabWrapperDiv.get(0));
			MAP.addStaticOverlay(overlay, URightTop, new UPoint(0, 65));
			eventSideTabWrapperDiv.show();
			eventSideContentDiv.show();
			var stopEvent = function(event){
				event.stopPropagation();
			};
			eventSideTabWrapperDiv.bind('mousedown', stopEvent).bind('mousewheel', stopEvent);
			eventSideTabDiv.bind('click', function(){
				if (eventSideContentDiv.is(':hidden'))
					eventSideContentDiv.show();
				else
					eventSideContentDiv.hide();
			});
		},
		show: function() {
			var extraOverlayMenuDiv = $('#EXTRAOVERLAYMENU');
			if (extraOverlayMenuDiv && extraOverlayMenuDiv.is(':hidden'))
				extraOverlayMenuDiv.show();
		},
		resize: function() {
			var height = 400;
			$('#eventSideContent').height(height).hide();
			$('#listSection').height(height-65);
		},
		zoom: function(minLat, minLng, maxLat, maxLng) {
			var bounds = new UBounds(new ULatLng(parseFloat(minLat), parseFloat(minLng)), new ULatLng(parseFloat(maxLat), parseFloat(maxLng)));
			MAP.centerAndZoom(bounds.getCenter(), MAP.getBoundsZoomLevel(bounds) + 1);
			MAP.checkResize();
		},
		zoomBefore: function(minLat, minLng, maxLat, maxLng) {
			MAP.setMapType(U_SATELLITE_TYPE);
			morakEvent.show();
			$('#EXTRAOVERLAYMENU :checkbox').attr('checked', false);
			morakEvent.zoom(minLat, minLng, maxLat, maxLng);
		},
		zoomAfter: function(minLat, minLng, maxLat, maxLng) {
			MAP.setMapType(U_SATELLITE_TYPE);
			morakEvent.show();
			$('#EXTRAOVERLAYMENU :checkbox').attr('checked', true);
			morakEvent.zoom(minLat, minLng, maxLat, maxLng);
		},
		importData: function(callback) {
			var url = 'event/morak/data.txt';
			var queryCallback = function(data) {
				if (!data) return;
				eval('data = ' + data);
				var len = data.length;
				if (len > 0) {
					var eleUL = $('#eventSideContent ul');
					var createNode = function(opts) {
						var anchorBefore = $('<a></a>').attr('title', opts.name + '災前').attr('href', 'javascript:void(0);')
											.html('[災前/ ')
											.bind('click', function(){
												morakEvent.zoomBefore(opts.minLat, opts.minLng, opts.maxLat, opts.maxLng);
											});
						var anchorAfter = $('<a></a>').attr('title', opts.name + '災後').attr('href', 'javascript:void(0);')
											.html('災後]')
											.bind('click', function(){
												morakEvent.zoomAfter(opts.minLat, opts.minLng, opts.maxLat, opts.maxLng);
											});
						$('<li></li>').html(opts.name+'<br />').append(anchorBefore).append(anchorAfter).appendTo(eleUL);
					};
					for (var i=0; i<len; i++) {
						var mdata = data[i];
						createNode({name:mdata[0], minLat:mdata[2], minLng:mdata[1], maxLat:mdata[4], maxLng:mdata[3]});
					}
					if (callback)
						callback();
				}
			};
			$.get(url, null, queryCallback);
		}
	};
	(function(){
		for (var i in Initialize)
			Initialize[i]();
	})();
};


