/** 
 * Common.js
 * 
 */

var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;

//**********************************************
// Map Nearby App
//**********************************************
MapNearbyApp = function(blockId, map, enableScheduleControl) {
	
	this.blockId = blockId;
	this.map = map;
	
	var nearbyPois;

	//** Init Nearby POI Area.
	var nb_switchers = Dom.getElementsByClassName('nearby_mc', 'img', blockId);
	var subCatBlocks = Dom.getElementsByClassName('nearby_block', 'ul', blockId);
	var subCatItems = Dom.getElementsByClassName('nearby_sc', 'a', blockId);
	var mainCatItems = Dom.getElementsByClassName('nearby_mc', 'a', blockId);
	var loading = Dom.getElementsByClassName('nearby_loading', 'span', blockId)[0];
	Dom.setStyle(loading, 'visibility', 'hidden');
	var nb_showHide = new Array(nb_switchers.length);
	for (var i = 0; i < nb_showHide.length; i++) {
		nb_showHide[i] = false;
		Dom.setStyle(subCatBlocks[i], 'display', 'none');
	}
	Event.on(nb_switchers, 'click', function(e){
		var target = YAHOO.util.Event.getTarget(e);
		var mIdx = target.id.substring(blockId.length + 4);
		if (nb_showHide[mIdx]) {
			Dom.setStyle(subCatBlocks[mIdx], 'display', 'none');
			target.src = '/wps/themes/html/iMove/img/sub_open.gif';
			nb_showHide[mIdx] = false;
		}
		else {
			Dom.setStyle(subCatBlocks[mIdx], 'display', '');
			target.src = '/wps/themes/html/iMove/img/sub_close.gif';
			nb_showHide[mIdx] = true;
		}
	});
	Event.on(subCatItems, 'click', function(e){
		Dom.setStyle(loading, 'visibility', '');
		var target = YAHOO.util.Event.getTarget(e);
		var sIdx = target.id.substring(blockId.length + 7);
		//alert(sIdx);
		var bounds = map.getBounds();
		//alert(bounds.getNorthEast().lng() + '/' + bounds.getNorthEast().lat() + ' - ' + bounds.getSouthWest().lng() + '/' + bounds.getSouthWest().lat());
		var postData = 'function=getPoisByCoordinate&catId=' + sIdx + '&lbLng=' + bounds.getSouthWest().lng() + '&lbLat=' + bounds.getSouthWest().lat() + '&rtLng=' + bounds.getNorthEast().lng() + '&rtLat=' + bounds.getNorthEast().lat();
		YAHOO.util.Connect.asyncRequest('POST', poiAjaxServlet, { success:successHandler, failure:failureHandler }, postData);
	});
	Event.on(mainCatItems, 'click', function(e){
		Dom.setStyle(loading, 'visibility', '');
		var target = YAHOO.util.Event.getTarget(e);
		var sIdx = target.id.substring(blockId.length + 7);
		var bounds = map.getBounds();
		var postData = 'function=getPoisByCoordinateAndMainCat&catId=' + sIdx + '&lbLng=' + bounds.getSouthWest().lng() + '&lbLat=' + bounds.getSouthWest().lat() + '&rtLng=' + bounds.getNorthEast().lng() + '&rtLat=' + bounds.getNorthEast().lat();
		YAHOO.util.Connect.asyncRequest('POST', poiAjaxServlet, { success:successHandler, failure:failureHandler }, postData);
	});
	
	this.displayAllPoiInRange = function(){
		var bounds = map.getBounds();
		var postData = 'function=getPoisByCoordinate&catId=0&lbLng=' + bounds.getSouthWest().lng() + '&lbLat=' + bounds.getSouthWest().lat() + '&rtLng=' + bounds.getNorthEast().lng() + '&rtLat=' + bounds.getNorthEast().lat();
		YAHOO.util.Connect.asyncRequest('POST', poiAjaxServlet, { success:successHandler, failure:failureHandler }, postData);
	};
	
	this.getNearbyPois = function(){
		return nearbyPois;
	};
	
	var successHandler = function(o){
		Dom.setStyle(loading, 'visibility', 'hidden');
		if(o.responseText !== undefined){
			
			nearbyPois = eval('(' + o.responseText + ')');
			var pois = nearbyPois;
			
			//pois = eval('(' + o.responseText + ')');
			//alert(pois.length);
			
			map.clearOverlays();
			
			for (var i = 0; i < pois.length; i++) {
				var point = new ULatLng(pois[i].latitude, pois[i].longitude);
				var catIcon = new UIcon();
				if (pois[i].buy) catIcon.image = '/wps/themes/html/iMove/img/urmap_shop.gif';
				if (pois[i].eat) catIcon.image = '/wps/themes/html/iMove/img/urmap_eat.gif';
				if (pois[i].live) catIcon.image = '/wps/themes/html/iMove/img/urmap_stay.gif';
				if (pois[i].travel) catIcon.image = '/wps/themes/html/iMove/img/urmap_play.gif';
				catIcon.iconWidth = 19;
				catIcon.iconHeight = 19;
				catIcon.iconAnchor = new UPoint(9, 9);
				catIcon.infoWindowAnchor = new UPoint(9, 0);
				
				var marker = new UMarker(point, catIcon, pois[i].display + '(' + pois[i].webcatpois[0].webcat.catmst.catName + ')', pois[i].introduction.substring(0, 60)+'...');
				//var marker = new UMarker(point, catIcon, pois[i].display, pois[i].introduction);
				
				//if (enableScheduleControl) addInfoWindow(marker, pois[i]);
				if (enableScheduleControl) addScheduleControl(marker, pois[i]);
				
				map.addOverlay(marker);
			}
			
		}
	};
	
	var addScheduleControl = function(marker, poi){
		marker.addListener('click', function(){
			if (confirm('將 ' + poi.display + ' 加入行程內容?')) {
				var json = {'type':1, 'poi':poi};
				schedule[schedule.length-1].push(json);
				ScheduleDDApp.refresh();
			}
		});
	};
	
	var addInfoWindow = function(marker, poi){
		marker.addListener('mouseover', function(){
			var html = '<b>' + poi.display + '</b><br/>' + poi.introduction;
			marker.openInfoWindow(html, 200, 120);
		});
	};
	
	var failureHandler = function(o){
		Dom.setStyle(loading, 'visibility', 'hidden');
		alert('AJAX Connection Failure !!');
	};
};

