// JavaScript Document
var bMain = true;	//目前在首頁
//var carousel; // for ease of debugging; globals generally not a good idea

/**
 * Custom button state handler for enabling/disabling button state. 
 * Called when the carousel has determined that the previous button
 * state should be changed.
 * Specified to the carousel as the configuration
 * parameter: prevButtonStateHandler
 **/
var handlePrevButtonState = function(type, args) {

    var enabling = args[0];
    var leftImage = args[1];
    if(enabling) {
        leftImage.src = "images/weblink_nav_up_on.gif";    
    } else {
        leftImage.src = "images/weblink_nav_up_off.gif";    
    }
    
};

/**
 * Custom button state handler for enabling/disabling button state. 
 * Called when the carousel has determined that the next button
 * state should be changed.
 * Specified to the carousel as the configuration
 * parameter: nextButtonStateHandler
 **/
var handleNextButtonState = function(type, args) {

    var enabling = args[0];
    var rightImage = args[1];
    
    if(enabling) {
        rightImage.src = "images/weblink_nav_down_on.gif";
    } else {
        rightImage.src = "images/weblink_nav_down_off.gif";
    }
    
};

//處理顯示首頁左邊的網站資源連結
function weblink_load() {
		//首頁左邊是否顯示網站資源連結
	var vweblink = document.getElementById("main_weblink_nav");
	var vweblink_num = document.getElementById("weblink_num");	//網站相關連結數量
	var vcnt = 0;
	if (vweblink_num != null) vcnt = parseInt(vweblink_num.value);

	if (vcnt > 0) {	//有相關連結
		var vwebnav = new YAHOO.extension.Carousel("main_weblink_nav", 
			{
				animationSpeed:    0.80,
				scrollInc:         4,
				orientation:       "vertical",
				prevElement:     "prev-arrow",
				nextElement:     "next-arrow",
				prevButtonStateHandler:   handlePrevButtonState,
				nextButtonStateHandler:   handleNextButtonState
			}
		);
		vwebnav.setProperty("numVisible", 8);
		vwebnav.setProperty("size", vcnt);
		
	}
}


//查詢文化活動訊息
function sendAct() {
	var vfm = document.getElementById("fmact");
	if (vfm != null) {
		ax_url.postform(vfm.name, "get_main_act.asp", 'main_activity_area');
	} else {
		alert("無法查詢活動行事曆～");	
	}
}
YAHOO.util.Event.addListener(window, "load", weblink_load);



//在marker點選時顯示標題
function createMainMarker(point, icon, vinfo) {
	var marker = new GMarker(point, {icon:icon, title:""} );
	//var html = "<p><small>" + title + "</small></p>";
	var vhtml = vinfo;
	//alert(vhtml);
	GEvent.addListener(marker, "click", function() {
		//alert(vhtml);												 
		marker.openInfoWindowHtml(vhtml);
	});
	return marker;
}

//顯示區域中的所有點或商店
//傳入參數，目前的地圖物件
function showAreaMarkers(vmap, vdo) {
	var center = vmap.getCenter();
	
	//alert("go4, " + vdo);
	//document.getElementById("message").innerHTML = center.toString();
	if (vdo) {	//有找到地點的地圖，接著找出範圍內的景點或指定的資料
		var lat = center.lat();		//x
		var lng = center.lng();		//y
		var czoom = vmap.getZoom();	//取得目前的縮放
		var vcityname = document.getElementById("qcityname");	//查詢類型
		var vmaintypeid = document.getElementById("qmaintypeid");	//查詢類型
		//取得地圖範圍的4角座標
		var bounds = vmap.getBounds();
		// 西南座標
		var southWest = bounds.getSouthWest();
		// 東北座標
		var northEast = bounds.getNorthEast();
		// 地圖四角座標
		var lng1 = northEast.lng();	//
		var lng2 = southWest.lng();
		var lat1 = northEast.lat();
		var lat2 = southWest.lat();
		//取得區域內地標的xml marker程式
		var gurl = "get_main_scenery_xml.asp?qcityname=" + escape(vcityname.value) + "&qmaintypeid="+ vmaintypeid.value + "&czoom="+ czoom + "&lng="+ lng + "&lng1="+ lng1 +"&lng2="+ lng2 +"&lat="+ lat +"&lat1="+ lat1 +"&lat2="+ lat2;
		//document.getElementById("mapmsg").innerHTML = gurl;
		//alert(gurl);
		//右邊取得域內資料的列表
		var purl = "get_main_scenery_list.asp?qcityname=" + vcityname.value + "&qmaintypeid="+ vmaintypeid.value + "&czoom="+ czoom + "&lng="+ lng + "&lng1="+ lng1 +"&lng2="+ lng2 +"&lat="+ lat +"&lat1="+ lat1 +"&lat2="+ lat2;
		ax_url.geturl(purl, "MainSceneryList");
		//document.getElementById("debug").innerHTML = gurl;
		GDownloadUrl(gurl, 
			function(data, responseCode) {
				if (responseCode == 200) {
					//document.getElementById("debug").innerHTML = data;
					//return;
					var xml = GXml.parse(data);
					var markers = xml.documentElement.getElementsByTagName("marker");
					//alert(markers.length);
					if (markers.length > 0) {	//有找到區域中的景點或是商店 
						for (var i = 0; i < markers.length; i++) {
							var lat = parseFloat(markers[i].getAttribute("lat"));
							var lng = parseFloat(markers[i].getAttribute("lng"));
												
							var point = new GLatLng(lat,lng);
							var vtitle = markers[i].getAttribute("title");
							var vimg = markers[i].getAttribute("img");
							var vurl = markers[i].getAttribute("url");
							//var vsc_type = markers[i].getAttribute("sc_type");
							var vdata1 = markers[i].getAttribute("levelName");
							var vdata2 = markers[i].getAttribute("recommender");
							var vdata3 = markers[i].getAttribute("travelSeason");
							var vdata4 = markers[i].getAttribute("travelTime");
							var icon=new GIcon();
							//alert(vurl);
							//return;
							if (vimg != "") {
								icon.image = vimg;
								//icon.image = "/images/map_dot.gif";
								icon.iconSize = new GSize(20,20);
								//icon.shadowSize = new GSize(30, 20);
								icon.iconAnchor = new GPoint(10,20); 
								icon.infoWindowAnchor = new GPoint(10, 2); 
							} else {
								icon.image = "/images/map_dot.gif";
								icon.iconSize = new GSize(13,13); 
								icon.iconAnchor = new GPoint(6,6); 
								icon.infoWindowAnchor = new GPoint(6, 6); 
							}
							var vinfo = "<div align='left' style='font-size: .9em; color:#000;'>";
							if (vtitle != null) {
								vinfo += "<strong><a href='" + vurl + "' target='_top' title='" + vtitle + "'><img src='" + icon.image + "' align='left' hspace='2' vspace='2' alt='' border='0'><font color='#000099'>" + vtitle + "</font></a></strong><br>";
								//vinfo += "<strong><img src='" + icon.image + "' align='absmiddle' hspace='2' vspace='2' alt='' /> " + vtitle + "</strong><br />";
							}
							//alert(vinfo);
							//return;
							/*
							if (vagtype != null) {
								vinfo += "開放時間：" + vopentime + "<br>";
							}
							*/
							if ((vdata1 != null) && (vdata1 != "")) {
								vinfo += "景點等級：" + vdata1 + "<br />";
							}
							if ((vdata2 != null) && (vdata2 != "")) {
								vinfo += "族群推薦：" + vdata2 + "<br />";
							}
							if ((vdata3 != null) && (vdata3 != "")) {
								vinfo += "適合季節：" + vdata3 + "<br />";
							}
							if ((vdata4 != null) && (vdata4 != "")) {
								vinfo += "適合時間：" + vdata4 + "<br />";
							}
							vinfo += "</div>";
							//marker.openInfoWindowHtml(vinfo);
							var marker = createMainMarker(point, icon, vinfo);
							gmap.addOverlay(marker);
						}
					} else {
						return false;	
					}
				} else if(responseCode == -1) {
						alert("Data request timed out. Please try later.");
					} else { 
						alert("Request resulted in error. Check XML file is retrievable.");
					}
			}
		);
	}
	
}


/* 依地區查地圖專用 */
function SceneryMaps() {
	if (GBrowserIsCompatible()) {
		var vmapobj = document.getElementById("AreaMap");
		//var vmapobj = document.getElementById("WebMap");
		//alert(vmapobj.length);
		if (vmapobj != null) {
			bMap = true;
			for (var i = 1; i <= 1; i++) {
				//顯示標記的參數
				var vcityname = document.getElementById("qcityname");	//縣市
				var vmaintypeid = document.getElementById("qmaintypeid");	//類型
				var vmapzoom = document.getElementById("MapZoom");	//地圖標放大倍數, 預設是9
				var vx = document.getElementById("MapX");	//座標X 物件 hidden值
				var vy = document.getElementById("MapY");	//座標Y 物件 hidden值
				var vmapaddress = document.getElementById("MapAddress");	//縣市

				if (vmapzoom != null) {
					vzoom = parseInt(vmapzoom.value);
					if (isNaN(vzoom)) vzoom = 12;						
				} else {
					vzoom = 12;
				}					
				var doquery = false;
			
				if ((vx != null) && (vy != null)) {
					//alert("go0");
					gmap = new GMap2(vmapobj);
					//加入mouse移動地圖時的事件
					GEvent.addListener(gmap, "moveend", 
						function() {
							showAreaMarkers(gmap, doquery);
						}
					);
					gmap.addControl(new GLargeMapControl());
					gmap.addControl(new GScaleControl());
					gmap.addControl(new GMapTypeControl());
					geocoder = new GClientGeocoder();
					if ((vx.value != "") && (vy.value != "") && (vcityname.value == "")) {	//有上次的傳座標
						//alert("go1");
						var valx = parseFloat(vx.value);
						var valy = parseFloat(vy.value);
						
						var point = new GLatLng(valx, valy);
						if (!point) {
							alert("沒有找到指定座標的地圖哦～");
							return;
						} else {
							gmap.setCenter(point, vzoom);
							//var marker = new GMarker(point);
							//gmap.addOverlay(marker);
							doquery = true;
							//第一次顯示不要顯示標示點
							showAreaMarkers(gmap, doquery);	//不是預設的不顯示標示的放大size, 就顯示標記
						}
					} else {	//用地點名稱查詢
						//alert("go2");
						//*
						if (vcityname.value == "")
							vaddr = vmapaddress.value;
						else
							vaddr = vcityname.value.replace("  ", "");
						//alert(vaddr);
						geocoder.getLatLng(vaddr, 
							function(point) {
								if (!point) {
									alert("沒有找到指地點的地圖哦～");
									return;
								} else {
									gmap.setCenter(point, vzoom);
									doquery = true;
									//alert("go2-1");
									showAreaMarkers(gmap, doquery);	//不是預設的不顯示標示的放大size, 就顯示標記
								}
							}
						);
						//*/
					}
				}
			}
		}
	}
}
