String.prototype.trim = function() { return this.replace(/^[\s]+/g,'').replace(/[\s]+$/g,''); }
//YAHOO.ext.EventManager.onDocumentReady(uiInit, window, true);
U.addEvent(window, 'load', uiInit);
YAHOO.ext.UpdateManager.defaults.indicatorText = '<img src="js/yui-ext/images/grid/loading.gif>';
//yAHOO.ext.UpdateManager.defaults.disableCaching = true;
//yAHOO.ext.UpdateManager.defaults.loadScripts = true;

var alm;
var map;// = new UMap(document.getElementById('mapDiv'));
var map2;
var Utarget;
var Ustart;
var Uend;
var Upin;
var UbusStationIcon;
var UbusSolutionNum;
var UbusStations = new Array();
var UroutePath;
var UcontextMenuLatLng;
var UpositionType;

var UpoiTree;
var UpoiSource;
var UpoiType;
var Upois = new Array();
var UEventPois = new Array();
var UpoiThread = 0;
var UactivePoi;
var UdisplayedActiveAd = new Object();
var UIconImagePath = 'http://apam.urmap.com/apam/';
var UgeoObjects = new Array();
var UpmsPois = new Array();
var UpmsIcon;
var getBookingUrl = '/channel/booking/getBI.jsp';
var _Utabpane;
var UadIcon;
var UadObject;
var myMenu;
var screenHeight = screen.height;
function uiInit() {
  //setTimeout(loadingDiv.hide, 0);
  //loadingDiv.show();
  initMenu();
  alm = new AutoLayoutManager('layoutValentine.xml');
  alm.getLayout('mainLayout').on('layout', refreshMap);
  alm.getPanel('headerDiv').getUpdateManager().update({ url:'/pms/include/newmapHeaderValentine.jsp', scripts:true});
  alm.getPanel('toolbarDiv').getUpdateManager().update({ url:'/pms/include/toolbar.jsp', scripts:true});
  alm.getPanel('footerDiv').getUpdateManager().update('include/footer.html');
  map = new UMap(document.getElementById('mapDiv'));
  //map = new UMap(document.getElementById('mapDiv'));
  //setTimeout(loadingDiv.hide, 0);
  map.addControl(U_FULLZOOM_CONTROL);
  map.addControl(U_TYPE_CONTROL);
  map.addControl(U_SCALE_CONTROL);
  overviewInit();
  iconInit();
  eventInit();
  poiDivInit();
  // init tab in poiDiv
  
	_Utabpane = new TabPane(U.gi('tabDiv'), '#88f', null, 'url(/img/toolbar_bg.jpg)');
	_Utabpane.addTab('my_menu', '分類地標', 'my_menu', 0);
  _Utabpane.addTab('cp_menu', '廠商地標', 'cp_menu', 1);
  _Utabpane.selectTab('my_menu');
  
  DWRUtil.useLoadingMessage();
  //map.centerAndZoom(new ULatLng(25.0573, 121.546), 9);
  gotoCookieLocation();
  if(pmsInit)
    pmsInit();
  checkOpenUserTab();
  checkOpenPoiTab();
  setEvent();
  initValentineDetailTab();
  initValentineListTab();
  //alm.getLayout('mainLayout').showPanel('detailDiv');
  //TempRoutingDivBanner.setBannerDiv(document.getElementById('routingBannerDiv'));
  
  //setTimeout(loadYAd, 0);
  setTimeout(load_umapExt, 0);
  setTimeout(loadAutoCompleteJS, 0);
  map.addListener('moveend', SearchAllvalentine);
  SearchAllvalentine();
  //setTimeout(function(){map.addListener('moveend', SearchAllvalentine);}, 4000);
}
function initValentineDetailTab(){
	var iframeHeight = 325 + (screenHeight - 768);
	U.gi('detailDiv').innerHTML = '<iframe id="ValentineDetailFrame" style="overflow-x:hidden;overflow-y:auto" name="ValentineDetailFrame" src="event/valentine/love03.jsp" width="100%" height="'+iframeHeight+'px" frameborder="0" allowtransparency="true"></iframe>';
    U.gi('ValentineDetailFrame').src = "event/valentine/love03.jsp";
    alm.getLayout('mainLayout').showPanel('detailDiv');
}
function initValentineListTab(){
	var iframeHeight = 325 + (screenHeight - 768);
	U.gi('listDiv').innerHTML = '<iframe id="ValentineListFrame" style="overflow-x:hidden;overflow-y:auto" name="ValentineListFrame" src="event/valentine/love04.jsp" width="100%" height="'+iframeHeight+'px" frameborder="0" allowtransparency="true"></iframe>';
    U.gi('ValentineListFrame').src = "event/valentine/love04.jsp";
    //alm.getLayout('mainLayout').showPanel('detailDiv');
}
function initMenu(){
	myMenu = new SDMenu("my_menu");
	myMenu.oneSmOnly = true; 
	myMenu.init();
	selectCategory('food');
	selectCategory('tour');
	selectCategory('transportation');
	selectCategory('bureau');
	selectCategory('life');
}
function loadScripts(src, callback){
	var jscript = document.createElement('script');
	jscript.src = src;
	if(callback)
		jscript.onload = callback;
	document.getElementsByTagName('head')[0].appendChild(jscript);
}
function loadYState(){
	document.body.parentNode.parentNode.appendChild(document.createElement('script')).src = 'http://tw.js.webmaster.yahoo.com/24458/ystat.js';

	//loadScripts('');
}
function load_umapExt(){
	loadScripts('/js/urmapExtZoom.js', function(){var uext = new UMapExt(map);});
}
function loadYAd(){
	var chkDomain = (function(){
		//var domaincheck = "urmap.com";
		var domaincheck = "211.21.21.84";
		var CurrentDomain = window.location.host;
		var rCurrentDomain="";
		var chk = false;
		if(CurrentDomain!=domaincheck){
			CurrentDomain= CurrentDomain.split(".");
			for (var i=1; i<5; i++) {
				if(CurrentDomain[i]!=undefined){
					if(i==1){
						rCurrentDomain=CurrentDomain[i];
					}else{
						rCurrentDomain=rCurrentDomain + "." + CurrentDomain[i];
					}
				}
			}
		}

		if(CurrentDomain==domaincheck || rCurrentDomain == domaincheck)
			chk = true;
		return chk;
	})();
	if(!chkDomain) return;
	var css = document.createElement('link');
	css.type = 'text/css';
	css.rel = 'stylesheet';
	css.href = '/js/yad/sample06_utf8_test.css';
	document.getElementsByTagName('head')[0].appendChild(css);
	loadScripts('/js/yad/sample06_utf8_test.js', function(){
		GetYAdResults('tw_weblisher_interest_leisure'
					, 'tw_syndication_weblisher_cm_test'
					, 'utf8', '3');
	});
	
	var ysm_html = "";
	ysm_html = ysm_html +
		'<div id="ysm_hybrid" class="type2" style="display:none">' +
		'<table width="100%" border="0" cellpadding="0" cellspacing="1" bgcolor="#E5E6EB">' +
		'<tr>' +
		'<td align="center" bgcolor="#E5E6EB" height="20"><table width="100%" border="0" cellspacing="0" cellpadding="0" style="background:#D7E6EB;"><tr><td width="50%"><span style="letter-spacing:0.1em;color:#333;padding:4px 0 0 10px;">市場快訊</span></td><td align="right" width="50%"><a href="http://tw.emarketing.yahoo.com/ysm/contactus/index.html?o=TW0076&cmp=TW0076" target="_blank">Ads by Yahoo!</a></td></tr></table></td>' +
		'</tr>' +
		'<tr>' +
		'<td bgcolor="#F5F5F0" style="padding:5px 5px 0 5px;">' +
		'<div id="ysm_listing">' +
		'</div>' +
		'</td>' +
		'</tr>' +
		'</table>' +
		'</div>';
	document.getElementById('YahooAd').innerHTML = ysm_html;
	//setTimeout(, 0);
}
function loadAutoCompleteJS() {
	if(document.getElementById('queryString')){
		loadScripts('/js/auto2-min.js');
		var css = document.createElement('link');
		css.type = 'text/css';
		css.rel = 'stylesheet';
		css.href = 'img/yahooac.css';
		document.body.appendChild(css);
	}
	else{
		setTimeout(loadAutoCompleteJS, 2000);
	}
}
function checkOpenUserTab(){
	if(CURRENT_USERNAME && CURRENT_USERNAME!=''){
		openUserTab(CURRENT_USERNAME);
	}
}

function checkOpenPoiTab(){
	if(OPEN_POI_ID && OPEN_POI_ID!=''){
		addNewTab('poi-detail-'+OPEN_POI_ID,'地標-'+OPEN_POI_NAME,'/pms/loadPoiAction.do?id='+OPEN_POI_ID+'&mode=detail&forward=detail');
	}
}


function refreshMap() {
  map.checkResize();
}

function gotoCookieLocation() {
  var str = document.cookie;
  if(!str) {
    map.centerAndZoom(new ULatLng(25.0573, 121.546), 9);
    return;
  }
  try {
    str = unescape(str)+';';
    var idx = str.indexOf('lastLocation=');
    if(idx<0) {
      map.centerAndZoom(new ULatLng(25.035405, 121.530255), 9);
      return;
    }
    str = str.substring(idx+13, str.indexOf(';', idx));
    var xyz = str.split(',');
    var lat = parseFloat(xyz[0]);
    var lng = parseFloat(xyz[1]);
    var lv = parseInt(xyz[2]);
    if(isNaN(lat) || isNaN(lng) || isNaN(lv))
      map.centerAndZoom(new ULatLng(25.035405, 121.530255), 9);
    else
      map.centerAndZoom(new ULatLng(lat, lng), lv);
  } catch(ex) {
    map.centerAndZoom(new ULatLng(25.0573, 121.546), 9);
  }
}

function writeCookieLocation() {
  document.cookie = 'lastLocation='+escape(map.getCenter().lat()+','+map.getCenter().lng()+','+map.getZoomLevel())+';expires=Wed, 01 Jan 2020 00:00:00 GMT';
}
function writeOverviewCookie() {
  document.cookie = 'overview='+(U.gi('overviewDiv').style.display=='none'?'0':'1')+';expires=Wed, 01 Jan 2020 00:00:00 GMT';
}

function overviewInit() {
  var mapMoved = false;
  var map2Moved = false;
  function mapMoveendListener(ev) {
    if(!map2Moved) {
      mapMoved = true;
      map2.centerMap(map.getCenter());
    } else {
      map2Moved = false;
    }
    writeCookieLocation();
		//alert(Upois.length);
  }
  function map2MoveendListener(ev) {
    if(!mapMoved) {
      map2Moved = true;
      map.centerMap(map2.getCenter());
    } else {
      mapMoved = false;
    }
  }
  function mapZoomListener(oldZ, newZ) {
    /*
    var zoom = newZ-4;
    if(zoom<0)
      zoom = 0;
      */
    var zoom = newZ-4;
    if(newZ>5)
      zoom = 5;
    else if(newZ<5)
      zoom = 0;
    map2.zoomMap(zoom);
    changeBBoxInOverview(newZ-zoom);
  }
  function changeBBoxInOverview(zoom) {
    var bbox = U.gi('bbox');
    var mapDiv = U.gi('mapDiv');
    //bbox.style.width = (mapDiv.clientWidth/Math.pow(2, zoom<4?zoom:4))+'px';
    //bbox.style.height = (mapDiv.clientHeight/Math.pow(2, zoom<4?zoom:4))+'px';
    bbox.style.width = (mapDiv.clientWidth/Math.pow(2, zoom))+'px';
    bbox.style.height = (mapDiv.clientHeight/Math.pow(2, zoom))+'px';
    var overview = U.gi('overviewDiv');
    bbox.style.left = ((overview.clientWidth-bbox.offsetWidth)/2)+'px';
    bbox.style.top = ((overview.clientHeight-bbox.offsetHeight)/2)+'px';
  }
  map.addListener('moveend', mapMoveendListener);
  map.addListener('zoom', mapZoomListener);
  map2 = new UMap(U.gi('overviewDiv'));
  map2.addListener('moveend', map2MoveendListener);
  if(document.cookie.indexOf('overview=0')>=0)
    U.gi('overviewDiv').style.display = 'none';
  U.gi('closeOverviewLink').onclick = function() { U.gi('overviewDiv').style.display = 'none';writeOverviewCookie(); };
  U.gi('openOverviewLink').onclick = function() {
    U.gi('overviewDiv').style.display = 'block';
    map2.centerMap(map.getCenter());
    changeBBoxInOverview(map.getZoomLevel());
    writeOverviewCookie();
  };
}

function iconInit() {
  var icon = new UIcon();
  icon.image = 'img/walkman.gif';
  icon.iconWidth = 24;
  icon.iconHeight = 24;
  icon.iconAnchor = new UPoint(12, 12);
  icon.infoWindowAnchor = new UPoint(12, 0);
  Utarget = new UMarker(new ULatLng(0, 0), icon, null, null, 99);
  map.addOverlay(Utarget);
  icon = new UIcon();
  icon.image = 'img/s.gif';
  icon.iconWidth = 26;
  icon.iconHeight = 30;
  icon.iconAnchor = new UPoint(13, 30);
  icon.infoWindowAnchor = new UPoint(13, 0);
  Ustart = new UMarker(new ULatLng(0, 0), icon, null, null, 100);
  map.addOverlay(Ustart);
  icon = new UIcon(icon);
  icon.image = 'img/e.gif';
  Uend = new UMarker(new ULatLng(0, 0), icon, null, null, 100);
  map.addOverlay(Uend);
  icon = new UIcon();
  icon.image = 'img/pinmark.gif';
  icon.iconWidth = 16;
  icon.iconHeight = 20;
  icon.iconAnchor = new UPoint(5, 20);
  icon.infoWindowAnchor = new UPoint(5, 0);
  Upin = new UMarker(new ULatLng(0, 0), icon, null, null, 98);
  map.addOverlay(Upin);
  UbusStationIcon = new UIcon();
  UbusStationIcon.image = 'img/busStation.gif';
  UbusStationIcon.iconWidth = 16;
  UbusStationIcon.iconHeight = 30;
  UbusStationIcon.iconAnchor = new UPoint(8, 30);
  UbusStationIcon.infoWindowAnchor = new UPoint(8, 0);
  UpmsIcon = new UIcon();
  UpmsIcon.image = '/img/pmsPoi.gif';
  UpmsIcon.iconWidth = 20;
  UpmsIcon.iconHeight = 20;
  UpmsIcon.iconAnchor = new UPoint(10, 20);
  UpmsIcon.infoWindowAnchor = new UPoint(10, 0);
	
	
	/*==========地圖日記start==========*/
  UadIcon = new UIcon();
  UadIcon.image = "http://www.atlaspost.com/designnew/images/mapicon/iconoff.gif";
  UadIcon.iconWidth = 20;
  UadIcon.iconHeight = 20;
  UadIcon.iconAnchor = new UPoint(10, 10);
  UadIcon.infoWindowAnchor = new UPoint(10, 1);
  /*==========end==========*/
	
}

function eventInit() {
  map.addListener('click', mapMarkerClick);
  map.addListener('click', asppoiClick);
  map.addListener('click', pmsPoiClick);
  map.addListener('click', hideContextMenu);
  U.addEvent(U.gi('mapDiv'), 'contextmenu', showContextMenu);
  U.addEvent(U.gi('mapDiv'), 'mousewheel', mapMouseWheelControl);
  U.gi('viewStartLink').onclick = viewStart;
  U.gi('viewEndLink').onclick = viewEnd;
  U.gi('startRoutingLink').onclick = startRouting;
  U.gi('switchSELink').onclick = switchStartEnd;
  U.gi('resetRoutingLink').onclick = resetRoutingSetting;
  U.gi('setStartMenuItem').onclick = function(ev) {
    U.cancelDefault(ev);
    setRoutingStartLocation(UcontextMenuLatLng, '圖面自訂點');
  };
  U.gi('setEndMenuItem').onclick = function(ev) {
    U.cancelDefault(ev);
    setRoutingEndLocation(UcontextMenuLatLng, '圖面自訂點');
  };
  if(U.gi('getPinCoordsMenuItem'))
    U.gi('getPinCoordsMenuItem').onclick = getPinCoords;
  if(U.gi('closeMenuItem'))
    U.gi('closeMenuItem').onclick = hideContextMenu;
  if(U.gi('addPmsPoiMenuItem'))
    U.gi('addPmsPoiMenuItem').onclick = function(ev) { hideContextMenu(ev);showDialog('新增地標', '/pms/loadPoiAction.do?mode=insert&forward=insert&lat='+UcontextMenuLatLng.lat()+'&lng='+UcontextMenuLatLng.lng());return false; }
  if(U.gi('setCustomPoiMenuItem'))
    U.gi('setCustomPoiMenuItem').onclick = function(ev) { hideContextMenu(ev);showDialog('設定個人地點', '/pms/user/setLocation.jsp?lat='+UcontextMenuLatLng.lat()+'&lng='+UcontextMenuLatLng.lng());return false; }
  
  // --- Start of Edward add 
  U.gi('stloc0').onclick = getUserLocation;  
  U.gi('stloc1').onclick = getUserLocation;  
  U.gi('stloc2').onclick = getUserLocation;  
  U.gi('stloc3').onclick = getUserLocation;  
  U.gi('destloc0').onclick = getUserLocation;  
  U.gi('destloc1').onclick = getUserLocation;  
  U.gi('destloc2').onclick = getUserLocation;  
  U.gi('destloc3').onclick = getUserLocation;  
  
  if(U.gi('feedbackAddressMenuItem'))
    U.gi('feedbackAddressMenuItem').onclick = feedbackAddress;
    
  // --- End of Edward add 
}

function showContextMenu(ev) {
  U.cancelDefault(ev);
  U.stopPropagation(ev);
  var menu = U.gi('contextMenu');
  menu.style.display = 'block';
  menu.style.left = (ev.clientX+2)+'px';;
  menu.style.top = ev.clientY+'px';
  UcontextMenuLatLng = map.transformContainerCoordinatesToLatLng(new UPoint(ev.clientX-U.findPosX(U.gi('mapDiv')), ev.clientY-U.findPosY(U.gi('mapDiv'))));
  Upin.setPoint(UcontextMenuLatLng);
  Upin.setMouseonInfo('圖釘點', '經度: '+Math.round(UcontextMenuLatLng.lng()*1000000)/1000000+'<br>緯度: '+Math.round(UcontextMenuLatLng.lat()*1000000)/1000000);
  //map.addOverlay(Upin);
}

function hideContextMenu(ev) {
  U.cancelDefault(ev);
  U.gi('contextMenu').style.display = 'none';
  //Upin.setPoint(new ULatLng(0,0));
}

function mapMouseWheelControl(ev) {
  if(U.wheelDelta(ev)>=120)
    map.zoomOut();
  else if(U.wheelDelta(ev)<=-120)
    map.zoomIn();
}

function getPinCoords() {
  hideContextMenu();
  alert('經度: '+Upin.getPoint().lng()+'\n緯度: '+Upin.getPoint().lat()+'\n經度: '+degreeToDMS(Upin.getPoint().lng())+'\n緯度: '+degreeToDMS(Upin.getPoint().lat()));
}

function degreeToDMS(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
}

function smartQuery(queryString) {
  //var queryString = document.getElementById('queryText').value.trim();
  if(queryString.length==0)
    return false;
	UCounter.addCount('UrMap首頁_function_搜尋');
  var coords = queryString.split(',');
  if(coords.length==2 && !isNaN(coords[0]) && !isNaN(coords[1])) {
    var label = '目標點';
    if(typeof initTargetName!='undefined' && initTargetName!=null) {
      label = initTargetName;
      initTargetName = null;
    }
    setMapTarget(new ULatLng(parseFloat(coords[1]), parseFloat(coords[0])), label, '經度:'+coords[0]+'<br>緯度:'+coords[1], 0);
    return false;
  }
  SearchBean.search(queryString, '0', smartQueryCallback);
  return false;
}

function smartQueryCallback(result) {
  if(result.length==0) {
    alert('很抱歉我們查不到您所輸入的地點');
    return;
  }
  var locations = result.split(';');
  if(locations.length==1) {
    var data = locations[0].split(',');
    if(data.length<8) {
      alert(result);
      return;
    }
    var positionType = (data[3]!='1' || data[7]=='準確' || data[7]=='模糊')?1:2;
    setMapTarget(new ULatLng(parseFloat(data[5]), parseFloat(data[4]), U_TM2_COORDSYS), data[1], data[2], positionType);
  } else {
    var dataTypes = ['', '', '道路', '交叉路口', '縣市', '鄉鎮市區', '村里', '基礎地標','','','','','地標'];
    var resultList = new Object();
    for(var i=0; i<dataTypes.length; i++) {
      resultList[dataTypes[i]] = new Object();
      resultList[dataTypes[i]].count = 0;
    }
    for(var i=0; i<locations.length; i++) {
      var data = locations[i].split(',');
      if(data.length!=8)
        continue;
      if(!resultList[dataTypes[parseInt(data[3])]][data[0]])
        resultList[dataTypes[parseInt(data[3])]][data[0]] = new Array();
      resultList[dataTypes[parseInt(data[3])]][data[0]].push(data[1]+';'+data[5]+';'+data[4]);
      resultList[dataTypes[parseInt(data[3])]].count++;
    }
    U.gi('listDiv').innerHTML = '<span> </span>';
    var resultTree = new treelist(U.gi('listDiv'), searchResultClick, false);
    var pickOne = false;
    for(var i=0; i<dataTypes.length; i++) {
      if(resultList[dataTypes[i]].count==0)
        continue;
      var typeNode = new treenode(dataTypes[i]+'('+resultList[dataTypes[i]].count+')', resultTree, true);
      for(city in resultList[dataTypes[i]]) {
        if(city=='count')
          continue;
        var results = resultList[dataTypes[i]][city];
        var cityNode = new treenode(city+'('+results.length+')', typeNode, false);
        for(var j=0; j<results.length; j++) {
          new treenode(results[j].split(';')[0], cityNode, false, results[j]);
          if(!pickOne) {
            var data = results[j].split(';');
            setMapTarget(new ULatLng(parseFloat(data[1]), parseFloat(data[2]), U_TM2_COORDSYS), data[0], null, 3);
            pickOne = true;
          }
        }
      }
    }
    alm.getLayout('mainLayout').showPanel('listDiv');
		UCounter.addCount('UrMap首頁_function_搜尋結果show');
  }
}

function setMapTarget(latlng, label, desc, positionType) {
  UpositionType = positionType;
  switch(positionType) {
    case 1:
      Utarget.setMouseonInfo(label);
      break;
    case 2:
      Utarget.setMouseonInfo(desc);
      break;
    default:
      Utarget.setMouseonInfo(label, desc);
  }
  Utarget.setPoint(latlng);
  map.centerMap(latlng);
  Utarget.label = label;
  Utarget.desc = desc;
  mapMarkerClick(Utarget);
}

function mapMarkerClick(overlay, latlng, isRightBtn) {
  if(overlay==Utarget) {
    var html;
    switch(UpositionType) {
      case 0:
        html = '我所在的位置是：<br>'+(Utarget.label=='目標點'?'':'<b style="color:blue;">'+Utarget.label+'</b><br>')+'經度 '+Utarget.getPoint().lng()+'<br>緯度 '+Utarget.getPoint().lat();
        break;
      case 1:
        html = '我所在的位置是：<br><b>'+Utarget.label+'</b>';
        break;
      case 2:
        html = '很抱歉，本系統無此地址資料：<br>'+Utarget.label+'<br><br>目前所在位置是：<br><b style="color:blue;">'+Utarget.desc+'</b>';
        break;
      case 3:
        html = '我所在的位置是：<br><b style="color:blue;">'+Utarget.label+'</b><p>如果這不是你要找的地點，其他的相關地點都列在右邊的搜尋結果中</p>';
        break;
      case 4:
        html = '我所在的位置是：<b>'+Utarget.label+'</b><br><b style="color:blue;">'+Utarget.desc+'</b>';
        break;
			
    }
    html += '<p><a href="javascript:void(0);" id="setStartLink">設為起點</a> | <a href="javascript:void(0);" id="setEndLink">設為終點</a>';
    if(UpositionType==1)
      html += ' | <a href="#" id="addPmsPoiLink">在此處新增地標點</a>';
		if(UpositionType==1)
      html+='<br><br><a href="javascript:void(0);" onclick="preFeedbackOneAddress(\''+Utarget.label+'\');">此地址位置不正確，我要回報</a>';
			
    html += '</p>';
		html += '<br>';
		// 加上廣告
		html += addSearchResultAd();
		
    Utarget.openInfoWindow(html);
    U.gi('setStartLink').onclick = function() {setRoutingStartLocation(overlay.getPoint(), overlay.label);};
    U.gi('setEndLink').onclick = function() {setRoutingEndLocation(overlay.getPoint(), overlay.label);};
    if(UpositionType==1)
      U.gi('addPmsPoiLink').onclick = function() { showDialog('新增地標', '/pms/loadPoiAction.do?mode=insert&forward=insert&lat='+overlay.getPoint().lat()+'&lng='+overlay.getPoint().lng()+'&addr='+encodeURI(overlay.label));return false; };
  } else if(overlay==Ustart || overlay==Uend) {
    var desc = overlay==Ustart?'導航起點':'導航終點';
    overlay.openInfoWindow(desc+'<br><b style="color:blue;">'+overlay.label+'</b><p><a href="javascript:void(0);" id="removeRoutingNodeLink">移除這個點</a> | <a href="javascript:void(0);" id="switchStartEndLink">起終點對調</a></p>');
    U.gi('removeRoutingNodeLink').onclick = function() {removeRoutingNode(overlay);};
    U.gi('switchStartEndLink').onclick = switchStartEnd;
  }
}

function asppoiClick(overlay, latlng) {
  if(overlay) {
    if(!overlay.isPoi)
      return ;
    switch(overlay.passiveAction) {
      case '1':
        if(overlay.extLink && overlay.extLink!='')
          window.open(overlay.extLink.indexOf('http')==0?overlay.extLink:'http://'+overlay.extLink);
        break;
      case '2':
        UactivePoi = overlay;
        if(overlay.contentId=='0')
          SearchBean.getAsppoiContent(overlay.pid, showPopupContent);
        else
          SearchBean.getAdvert(overlay.contentId, showPopupContent);
        break;
      case '3':
        if(overlay.contentId=='0')
          SearchBean.getAsppoiContent(overlay.pid, showDetailContent);
        else
          SearchBean.getAdvert(overlay.contentId, showDetailContent);
        break;
			case 'imvlog':
        overlay.openInfoWindow(overlay.desc+'<br>'+(overlay.image?'<img src="'+overlay.image+'">':''), 200,150);
        break;
      default:
        overlay.openInfoWindow('<b>'+overlay.label+'</b><br>'+overlay.desc+'<p><a href="javascript:void(0);" id="setStartLink">設為起點</a> | <a href="javascript:void(0);" id="setEndLink">設為終點</a></p>');
        U.gi('setStartLink').onclick = function() {setRoutingStartLocation(overlay.getPoint(), overlay.label);};
        U.gi('setEndLink').onclick = function() {setRoutingEndLocation(overlay.getPoint(), overlay.label);};
    }
  }
}

function showPopupContent(result) {
  if(!result || result=='')
    return;
  UactivePoi.openInfoWindow(result);
	
}

function showDetailContent(result) {
  if(!result || result=='')
    return;
  U.gi('detailDiv').innerHTML = result;
  alm.getLayout('mainLayout').showPanel('detailDiv');
}

function searchResultClick(node) {
  var data = node.data.split(';');
  setMapTarget(new ULatLng(parseFloat(data[1]), parseFloat(data[2]), U_TM2_COORDSYS), data[0], null, 3);
  node.select(true);
}

function poiDivInit() {
  UpoiTree = new treelist(U.gi('cp_menu'), poiTypeClick, false, '/tree/by_cp.xml');
  map.addListener('moveend', mapChange);
  map.addListener('zoom', mapChange);
  U.gi('closePoiBtn').onclick = function() {
    UpoiTree.selectAll(false);
    getPoi(null, null);
    clearGeoObject();
		clearEventPoi();
  }
}
  function poiTypeClick(node) {
    if(node.isSelected()) {
      if(!node.data) {
        node.select(false);
        return;
      }
      var datas = node.data.split(':');
      for(var i=0; i<datas.length; i++) {
        var data = datas[i].split(';');
        if(data[0]=='geo')
          getGeoObject(data[1]);
        else {
          getPoi(data[0], data[1]);
        }
      }
			UCounter.addCount('UrMap首頁_tree_'+node.parentNode.label+'/'+node.label);
    } else {
      UpoiType = null;
      clearPoi();
      clearGeoObject();
    }
  }
  function getPoi(poiSource, poiType) {
    UpoiSource = poiSource;
    UpoiType = poiType;
    if(!UpoiType) {
      clearPoi();
      return;
    }
    if(map.getZoomLevel()<7)
      return;
    var center = map.getCenter();
    var bounds = map.getBounds();
    if(UpoiSource=='asp')
      SearchBean.findAspPoi(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, false, getAspPoiCallback);
    else if(UpoiSource=='1111')
      SearchBean.find1111JobInArea(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, '1', getJob1111Callback);
    else if(UpoiSource=='surehigh') {
      getSurehighHotel(UpoiType);
    } else if(UpoiSource=='nhg') {
      SearchBean.findNHG(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, getNhgCallback);
    }
		else if(UpoiSource=='nhg_sell') {
   	 SearchBean.findNHG(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, getNhgCallback);
		}
		else if(UpoiSource=='nhg_deal') {
			SearchBean.findNHG_Dealed(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, getNhgCallback);
		}
		else if(UpoiSource=='hotel') {
			getHotel(UpoiType);
		}
		else if(UpoiSource=='imvlog') {
      getImVlog(UpoiType);
    }
		else if(UpoiSource=='objecttype' || UpoiSource=='bidprice' || UpoiSource=='bidcount' || UpoiSource=='arearange') {
			bid104Search(UpoiSource+':'+UpoiType);
		}
		else if(UpoiSource=='atlas') {
			adSearch(UpoiType);
		}
  }
  
	function getAspPoiCallback(result) {
	  //alert(result);
    var pois = new Array();
    var da = result.split(';');
    for(i=0; i<da.length; i++) {
      var at = da[i].split(',');
      if(at.length<13)
        continue;
      var icon = new UIcon();
      icon.image = UIconImagePath+at[3];
      icon.iconWidth = parseInt(at[11]);
      icon.iconHeight = parseInt(at[12]);
      icon.iconAnchor = new UPoint(Math.round(icon.iconWidth/2), Math.round(icon.iconHeight/2));
      icon.infoWindowAnchor = new UPoint(Math.round(icon.iconWidth/2), 0);
      var coords = new ULatLng(parseInt(at[2]), parseInt(at[1]), U_TM2_COORDSYS);
      var txt = at[5];
      if(at[10]!='6')
      	txt += '<p><a href="#" onclick="collectAspPoi(\''+at[0]+'\',\''+at[4]+'\',\''+at[5]+'\','+coords.lat()+','+coords.lng()+');return false;">收藏此地標</a><img src="img/new.gif"></p>';
      var poi = new UMarker(coords, icon, at[4], txt);
      poi.pid = at[0];
      poi.label = at[4];
      poi.desc = at[5];
      poi.isPoi = true;
      poi.passiveAction = at[6];
      poi.extLink = at[7];
      poi.activeAction = at[8];
      poi.contentId = at[9];
      pois.push(poi);
      if(poi.activeAction!='0' && !UdisplayedActiveAd[poi.contentId]) {
        UactivePoi = poi;
        UdisplayedActiveAd[poi.contentId] = 'displayed';
        if(poi.contentId=='0')
          SearchBean.getAsppoiContent(poi.pid, showPopupContent);
        else
          SearchBean.getAdvert(poi.contentId, showPopupContent);
      }
    }
    _setPoi(pois);
  }
	
	function bid104Search(key) {  
  var bounds = map.getBounds();
  var url = '/asp/104bid/adSearch.jsp?type_id='+key+'&maxLat='+bounds.getNorthEast().lat()+'&minLat='+bounds.getSouthWest().lat()
            +'&maxLon='+bounds.getNorthEast().lng()+'&minLon='+bounds.getSouthWest().lng();  
  U.loadByAjax(url, bid104SearchCallback);
}

function bid104SearchCallback(xmlhttp) {
  var pois = new Array();
  var doc = xmlhttp.responseXML;
  var ads = U.gt(doc, 'item');
  var bounds = map.getBounds();
  var UadIconR = new UIcon();
  UadIconR.image = '/asp/104bid/bid_r.gif';
  UadIconR.iconWidth = 16;
  UadIconR.iconHeight = 16;
  UadIconR.iconAnchor = new UPoint(8, 8);
  UadIconR.infoWindowAnchor = new UPoint(8, 1);
  var UadIconB = new UIcon(UadIconR);
  UadIconB.image = '/asp/104bid/bid_b.gif';
  UadIconB.iconWidth = 16;
  UadIconB.iconHeight = 16;
  UadIconB.iconAnchor = new UPoint(8, 8);
  UadIconB.infoWindowAnchor = new UPoint(8, 1);
  var UadIconG = new UIcon(UadIconR);
  UadIconG.image = '/asp/104bid/bid_g.gif';
  UadIconG.iconWidth = 16;
  UadIconG.iconHeight = 16;
  UadIconG.iconAnchor = new UPoint(8, 8);
  UadIconG.infoWindowAnchor = new UPoint(8, 1);
  for(var i=0; i<ads.length; i++) {
    var theId = U.getTagValue(ads[i], 'Id');
    var titleName = U.getTagValue(ads[i], 'Name'); 
    var linkUrl = U.getTagValue(ads[i], 'Link');
    var orginDesc = U.getTagValue(ads[i], 'desc');
    var desc = U.getTagValue(ads[i], 'desc')
               +"<br><a href='#' onclick='javascript:window.open(\""+linkUrl+"\")'>詳細資料</a>";
    var latitude = parseFloat(U.getTagValue(ads[i], 'latitude'));
    var longitude = parseFloat(U.getTagValue(ads[i], 'longitude'));
    var theIcon;  
    if(orginDesc.indexOf("拍定") >= 0)  {
    	theIcon = UadIconR;
    }  else if(orginDesc.indexOf("待拍") >= 0 || orginDesc.indexOf("其他") >= 0)  {
    	theIcon = UadIconB;
    }  else  {
    	theIcon = UadIconG;
    }
    var latlng = new ULatLng(latitude, longitude);
    if(bounds.contains(latlng)) {
      var ad = new UMarker(latlng, theIcon, titleName, desc);
      ad.isPoi = true;
      ad.label = '104法拍屋: '+titleName;
      ad.desc = " 案號: "+theId+"<br>"
                +"內容: "+orginDesc+"<br><a href='#' onclick='javascript:window.open(\""+linkUrl+"\")'>詳細資料</a>" ;
      pois.push(ad);
    }
  }
  _setPoi(pois);
}
	
  function getNhgCallback(result) {
    var doc = U.stringToDom(result);
		var objs = U.gt(doc, 'RECORD');
		var pois = new Array();
		var icon = new UIcon();
		icon.image = '/asp/nhg/nh.gif'
		icon.iconWidth = 15;
		icon.iconHeight = 20;
		icon.iconAnchor = new UPoint(8, 10);
		icon.infoWindowAnchor = new UPoint(8, 0);
    for(var i=0; i<objs.length; i++) {
			var objtype = U.getTagValue(objs[i],'OBJ_TYPE');
			var branch = U.getTagValue(objs[i],'BRANCH');
			var descr = U.getTagValue(objs[i], 'DESC');
			var eyptalk = U.getTagValue(objs[i], 'EYPTALK');
			//eyptalk = 'http://www.eyp.com.tw/interactive/index.php?act=talk&lang=zh-tw&userid=98750';
			if(objtype=='1' && eyptalk !='' && eyptalk !='null' && eyptalk !=null) {// 待售
				//descr+='<br><a href="#" onClick="window.open(\''+eyptalk+'\',\'0800\',\'width=240,height=350,scrollbars=no,status=no,menubar=no,location=no\');return false;" ><img src="/symbol/phone_btn2.gif"></a>';
				descr+='<br><a href="'+eyptalk+'"  target="_blank"><img src="/symbol/phone_btn2.gif"></a>';
				//descr+='<br><a href="#"  onClick="return genEypTalk(\''+eyptalk+'\');" ><img src="/symbol/phone_btn2.gif"></a>';
			}
			var poi = new UMarker(new ULatLng(parseInt(U.getTagValue(objs[i], 'Y')), parseInt(U.getTagValue(objs[i], 'X')), U_TM2_COORDSYS), icon, U.getTagValue(objs[i], 'LABEL'), descr);
    
			poi.label = U.getTagValue(objs[i], 'LABEL');
			poi.desc = U.getTagValue(objs[i], 'DESC');
			poi.isPoi = true;
			if(objtype=='1'){  //是待售物件才這樣子做
				poi.passiveAction = '1';
				poi.extLink = 'http://www.twhg.com.tw/buy/buy01.asp?no='+U.getTagValue(objs[i], 'ID');
			}
			else if(objtype=='2') {//成交物件
				var deal_price = U.getTagValue(objs[i],'DEAL_PRICE');
				if(deal_price=='' || deal_price == '0')
					continue;
			}
			pois.push(poi);
		}
		_setPoi(pois);
  }
	
  function getSurehighHotel(bookingType) {
    var sa = bookingType.split(',');
    var bounds = map.getBounds();
    var lb = bounds.getSouthWest();
    var rt = bounds.getNorthEast();
    var lt = new ULatLng(rt.lat(),lb.lng());
    var rb = new ULatLng(lb.lat(),rt.lng());
    for(var i=0;i<sa.length;i++){
    	var sUrl = getBookingUrl+'?ltlng='+lt.lng()+'&ltlat='+lt.lat()+'&rblng='+rb.lng()+'&rblat='+rb.lat()+'&btype='+sa[i]+'&vendor=surehigh'
      var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl , biCallback, null); 
  	}
  }
  
  function getHotel(bookingType) {
  	
    var sa = bookingType.split(',');
    var bounds = map.getBounds();
    var lb = bounds.getSouthWest();
    var rt = bounds.getNorthEast();
    var lt = new ULatLng(rt.lat(),lb.lng());
    var rb = new ULatLng(lb.lat(),rt.lng());
    for(var i=0;i<sa.length;i++){
    	var sUrl = getBookingUrl+'?ltlng='+lt.lng()+'&ltlat='+lt.lat()+'&rblng='+rb.lng()+'&rblat='+rb.lat()+'&btype='+sa[i]+'&vendor=ALL'
    	var transaction = YAHOO.util.Connect.asyncRequest('GET', sUrl , biCallback, null); 
  	}
  }
  var biCallback = { 
    success: function(o) {
    	var pois = new Array();
    	var xml = o.responseXML;
    	var bis = xml.getElementsByTagName('HOTEL');
    	for(var i=0;i<bis.length;i++){
    		var node = bis[i];
    		var id = node.getAttribute('ID');
    		var address = node.getAttribute('ADDRESS');
    		var cpid = node.getAttribute('CPID');
    		var lat = node.getAttribute('LATITUDE');
    		var link = node.getAttribute('LINK');
    		var lng = node.getAttribute('LONGITUDE');
    		var name = node.getAttribute('NAME');
    		var photo = node.getAttribute('PHOTO');
    		var source = node.getAttribute('SOURCE');
    		var type = node.getAttribute('TYPE');
    		var iconStr = node.getAttribute('ICON');
    		var iconWidth = node.getAttribute('ICON_WIDTH');
    		var iconHeight = node.getAttribute('ICON_HEIGHT');
    		var icon = new UIcon();
      	icon.image = UIconImagePath+iconStr;
      	icon.iconWidth = parseInt(iconWidth);
      	icon.iconHeight = parseInt(iconHeight);
      	icon.iconAnchor = new UPoint(Math.round(icon.iconWidth/2), Math.round(icon.iconHeight/2));
      	icon.infoWindowAnchor = new UPoint(Math.round(icon.iconWidth/2), 0);
      	var poi = new UMarker( new ULatLng(parseFloat(lat), parseFloat(lng)), icon, name, address);
      	poi.linkUrl = link;
      	var cn = node.firstChild;
      	if(cn!=null){
      		poi.descr = cn.nodeValue;
      	}
      	else
      		poi.descr = '';
      	poi.isPoi = true;
      	poi.extLink = link;
      	poi.passiveAction = '1' ;
    		pois.push(poi);
    	}
    	_setPoi(pois);
    }, 
    failure: function(o) {
    	alert('無法取得飯店/景點資料！');
    }, 
    argument: ['']  
  }

function getGeoObject(geoObjectType) {
  U.loadByAjax('/api/getgeo.jsp?type='+geoObjectType, getGeoObjectCallback);
}

function getGeoObjectCallback(xmlhttp) {
  clearGeoObject();
  var xml = xmlhttp.responseXML;
  var geos = U.gt(xml, 'geoobject');
  for(var i=0; i<geos.length; i++) {
    var geoStyle = U.getTagValue(geos[i], 'style');
    var coords = U.getTagValue(geos[i], 'coords');
    var obj;
    if(geoStyle=='1' || geoStyle=='2') {
      var coord = coords.split(';');
      var latlngs = new Array();
      for(var j=0; j<coord.length; j++) {
        var latlng = coord[j].split(',');
        if(latlng.length==2) {
          var pt = new ULatLng(parseFloat(latlng[0]), parseFloat(latlng[1]));
          if(pt.x()>0 && pt.y()>0)
            latlngs.push(pt);
        }
      }
      obj = new UPolyline(latlngs, geoStyle=='2'?'red':null);
    } else {
      continue;
    }
    UgeoObjects.push(obj);
    map.addOverlay(obj);
    //map.centerMap(obj.getVertex(0));
  }
}

  function clearGeoObject() {
    while(UgeoObjects.length>0)
      map.removeOverlay(UgeoObjects.pop());
  }
  function mapChange() {
    clearTimeout(UpoiThread);
		if(map.getZoomLevel()<7 )
      clearPoi();
    else {
      UpoiThread = setTimeout(function() {getPoi(UpoiSource, UpoiType);}, 1500);
    }
  }
  
  /*
  map.addListener('moveend', mapChange);
  map.addListener('zoom', mapChange);
  
  
  */
function getImVlog(poiType) {  
  var bounds = map.getBounds();
  var url = '/asp/imvlog/search.jsp?type_id='+poiType+'&maxLat='+bounds.getNorthEast().lat()+'&minLat='+bounds.getSouthWest().lat()+'&maxLon='+bounds.getNorthEast().lng()+'&minLon='+bounds.getSouthWest().lng();
  U.loadByAjax(url, getImVlogCallback);
}

function getImVlogCallback(xmlhttp) {
  var pois = new Array();
  var doc = xmlhttp.responseXML;
  var ads = U.gt(doc, 'video');
  var adIcon = new UIcon();
  adIcon.image = '/asp/imvlog/uriconfilm.gif';
  adIcon.iconWidth = 20;
  adIcon.iconHeight = 20;
  adIcon.iconAnchor = new UPoint(10, 10);
  adIcon.infoWindowAnchor = new UPoint(10, 1);
  for(var i=0; i<ads.length; i++) {  	
    var titleName = U.getTagValue(ads[i], 'title'); 
    var addr = U.getTagValue(ads[i], 'address');
    var linkUrl = U.getTagValue(ads[i], 'url');
    var desc = "";
    if(addr != "N")
      desc = addr+"<br>";
    desc += "<a href='#' onclick='javascript:window.open(\""+linkUrl+"\");return false;'>詳細資料</a>";
    var latitude = parseFloat(U.getTagValue(ads[i], 'lat'));
    var longitude = parseFloat(U.getTagValue(ads[i], 'lng'));
    var picUrl = U.getTagValue(ads[i], 'picURL');
    var latlng = new ULatLng(latitude, longitude);
    var ad = new UMarker(latlng, adIcon, titleName, desc);
    ad.isPoi = true;
    ad.passiveAction = 'imvlog';
    ad.desc = "<center> <a href='#' onclick='javascript:window.open(\""+linkUrl+"\")'> <b> "+titleName+" </b> </a> <br>";
    ad.desc += "<img src=\""+picUrl+"\" onload=\"Wa_SetImgAutoSize(this);\" onclick='javascript:window.open(\""+linkUrl+"\")' >"+"</center>";     
    pois.push(ad);
  }
  _setPoi(pois);
}
	
function Wa_SetImgAutoSize(img) {
  var MaxWidth=160;//设置图片宽度界限
  var MaxHeight=120;//设置图片高度界限
  var HeightWidth=img.offsetHeight/img.offsetWidth;//设置高宽比
  var WidthHeight=img.offsetWidth/img.offsetHeight;//设置宽高比
  if(img.offsetWidth>MaxWidth){
    img.width=MaxWidth;
    img.height=MaxWidth*HeightWidth;
  }
  if(img.offsetHeight>MaxHeight){
    img.height=MaxHeight;
    img.width=MaxHeight*WidthHeight;
  }
}
	

function _setPoi(pois) {
  clearPoi();
  Upois = pois;
	
  for(var i=0; i<Upois.length; i++)
    map.addOverlay(Upois[i]);
}
function clearPoi() {
  while(Upois.length>0)
    map.removeOverlay(Upois.pop());
}


function collectAspPoi(id, name, desc, lat, lng) {
  showDialog('收藏地標', '/pms/poi/collect.jsp?asppoiId='+id+'&poiName='+encodeURI(name)+'&poiAddress='+encodeURI(desc)+'&poiPhone=&poiLongitude='+lng+'&poiLatitude='+lat+'&mode=insert');
}

/* routing related function */
function removeRoutingNode(node) {
  setRoutingNode(new ULatLng(0, 0), '', node);
  map.closeInfoWindow();
}

function setRoutingNode(latlng, label, node) {
  var desc = node==Ustart?'導航起點':'導航終點';
  node.setPoint(latlng);
  node.setMouseonInfo(label, desc);
  node.label = label;
  if(node==Ustart) {
    U.gi('viewStartLink').innerHTML = label;
    U.blinkElement(U.gi('viewStartLink').parentNode, '#fbb');
  } else {
    U.gi('viewEndLink').innerHTML = label;
    U.blinkElement(U.gi('viewEndLink').parentNode, '#fbb');
  }
  alm.getLayout('mainLayout').showPanel('routingDiv');
}

function viewStart() {
  if(Ustart.getPoint().lat()!=0)
    map.centerAndZoom(Ustart.getPoint(), 9);
  return false;
}

function viewEnd() {
  if(Uend.getPoint().lat()!=0)
    map.centerAndZoom(Uend.getPoint(), 9);
  return false;
}

function switchStartEnd() {
  var point = new ULatLng(Ustart.getPoint().lat(), Ustart.getPoint().lng());
  var label = Ustart.label;
  setRoutingNode(Uend.getPoint(), Uend.label, Ustart);
  setRoutingNode(point, label, Uend);
  map.closeInfoWindow();
  consistRoutingLocationRadio();
	UCounter.addCount('UrMap首頁_function_起終點對調');
}

function resetRoutingSetting() {
  removeRoutingNode(Ustart);
  removeRoutingNode(Uend);
  while(UbusStations.length>0)
    map.removeOverlay(UbusStations.pop());
  UbusSolutionNum = null;
  U.gi('routingResultDiv').style.display = 'none';
  if(UroutePath)
    map.removeOverlay(UroutePath);
  
  clearRoutingLocationRadio();
	UCounter.addCount('UrMap首頁_function_全部清除');
}

function startRouting() {
	if(Ustart.getPoint().lat()==0 || Uend.getPoint().lat()==0) {
    alert('請先設定好起終點!');
    return ;
  }
  if(U.gi('carRouting').checked==true) {
    SearchBean.getRoute(Math.round(Ustart.getPoint().x()), Math.round(Ustart.getPoint().y()), Math.round(Uend.getPoint().x()), Math.round(Uend.getPoint().y()), startCarRoutingCallback);
    UCounter.addCount('UrMap首頁_function_開車導航');
  } else if(U.gi('busRouting').checked==true) {
    SearchBean.getPTRouting(Math.round(Ustart.getPoint().x()), Math.round(Ustart.getPoint().y()), Math.round(Uend.getPoint().x()), Math.round(Uend.getPoint().y()),  startBusRoutingCallback);
    UCounter.addCount('UrMap首頁_function_大眾運輸導航');
  }
}

function startCarRoutingCallback(result) {
  if(result=='' || result.split(':').length!=4) {
    alert('很抱歉，你輸入的起迄點資料無法規劃出適當路徑，請變更起迄點位置以後再試一次。');
    return;
  }
  var distance = parseFloat(result.split(':')[1]);
  var pts = result.split(':')[2].split(';');
  var pathXY = result.split(':')[3].split(',');
  var html = '<table cellspacing="0"><tr><td class="num">全長</td><td class="value">'+distance+' 公尺</td></tr>';
  var box = new UBounds();
  for(var i=0; i<pts.length; i++) {
    var nxy = pts[i].split(',');
    html+='<tr><td class="num">'+(i+1)+'</td><td class="value"><a href="javascript:void(0);" xcoor="'+nxy[1]+'" ycoor="'+nxy[2]+'">&nbsp;'+nxy[0]+'</a></td></tr>';
    box.extend(new ULatLng(parseFloat(nxy[2]), parseFloat(nxy[1]), U_TM2_COORDSYS));
  }
  html+='</table>';
  
  //var searchHotel = '<a onclick="map.centerAndZoom(new ULatLng('+Uend.getPoint().lat()+','+Uend.getPoint().lng()+'), map.getZoomLevel()<7?7:map.getZoomLevel());clickPoiTag(this);UCounter.addCount(\'UrMap首頁_導航終點_線上訂飯店\');return false;" data="asp;141,28,9,10" href="#">搜尋附近旅遊住宿</a>';

  //html += searchHotel;
  box.extend(Ustart.getPoint());
  box.extend(Uend.getPoint());
  U.gi('routingResultDiv').innerHTML = html;
  U.gi('routingResultDiv').style.display = 'block';
  var links = U.gt(U.gi('routingResultDiv'), 'a');
  for(var i=0; i<links.length; i++)
    links[i].onclick = routingVertexLinkClick;
  var viewFullRouteLink = document.createElement('a');
  viewFullRouteLink.href = 'javascript:void(0);';
  viewFullRouteLink.setAttribute('data' ,"asp;141,28,9,10");
  viewFullRouteLink.innerHTML = '觀看全程路線地圖';
  viewFullRouteLink.onclick = function() {
    map.centerAndZoom(box.getCenter(), map.getBoundsZoomLevel(box));
    return false;
  };
  U.gi('routingResultDiv').insertBefore(viewFullRouteLink, U.gi('routingResultDiv').firstChild);
  var searchHotelLink = document.createElement('a');
  searchHotelLink.href = 'javascript:void(0);';
  searchHotelLink.setAttribute('data', 'asp,141,28,9,10');
  searchHotelLink.innerHTML = '搜尋終點附近旅遊住宿';
  //searchHotelLink.id = 'search_nearHotel';
  searchHotelLink.onfocus = function(){this.blur()};
  searchHotelLink.onclick = function() {
    map.centerAndZoom(Uend.getPoint(), map.getZoomLevel()<7?7:map.getZoomLevel());
    
    getPoi('hotel','0');
    UCounter.addCount('UrMap首頁_導航終點_線上訂飯店');
    return false;
  };
  var searchHotelDiv = document.createElement('div');
  searchHotelDiv.id = 'search_nearHotel';
  searchHotelDiv.appendChild(searchHotelLink);
  U.gi('routingResultDiv').appendChild(searchHotelDiv);
  map.centerAndZoom(box.getCenter(), map.getBoundsZoomLevel(box));
  if(UroutePath)
    map.removeOverlay(UroutePath);
  var path = new Array();
  for(var i=0; i<pathXY.length/2; i++)
    path.push(new ULatLng(parseFloat(pathXY[2*i+1]), parseFloat(pathXY[2*i]), U_TM2_COORDSYS));
  UroutePath = new UPolyline(path);
  map.addOverlay(UroutePath);
}

function routingVertexLinkClick(ev) {
  var vertex = U.findTarget(ev, 'a');
  if(vertex.getAttribute('xcoor'))
    map.centerAndZoom(new ULatLng(parseFloat(vertex.getAttribute('ycoor')), parseFloat(vertex.getAttribute('xcoor')), U_TM2_COORDSYS), 9);
  return false;
}

function startBusRoutingCallback(result) {
  U.gi('routingResultDiv').innerHTML = result;
  U.gi('routingResultDiv').style.display = 'block';
  var links = U.gt(U.gi('routingResultDiv'), 'a');
  for(var i=0; i<links.length; i++) {
    links[i].onclick = busStationLinkClick;
    links[i].href = '#';
  }
  var solutions = U.gt(U.gi('routingResultDiv'), 'td');
  for(var i=0; i<solutions.length; i++) {
    solutions[i].solutionNum = i;
    var viewSolutionLink = document.createElement('a');
    viewSolutionLink.href = '#';
    viewSolutionLink.style.paddingLeft = '10px';
    viewSolutionLink.innerHTML = '觀看此方案所有站牌位置';
    viewSolutionLink.onclick = busSolutionLinkClick;
    solutions[i].appendChild(viewSolutionLink);
  }
  UbusSolutionNum = null;
}

function setBusStations(solutionNum) {
  if(UbusSolutionNum==solutionNum)
    return;
  UbusSolutionNum = solutionNum;
  while(UbusStations.length>0)
    map.removeOverlay(UbusStations.pop());
  var stLinks = U.gt(U.gt(U.gi('routingResultDiv'), 'td')[solutionNum], 'a');
  for(var i=0; i<stLinks.length; i++) {
    if(stLinks[i].getAttribute('xcoor')) {
      var station = new UMarker(new ULatLng(parseFloat(stLinks[i].getAttribute('ycoor')), parseFloat(stLinks[i].getAttribute('xcoor')), U_TM2_COORDSYS), UbusStationIcon, stLinks[i].innerHTML, null, 98);
      UbusStations.push(station);
      map.addOverlay(station);
    }
  }
}

function busStationLinkClick(ev) {
  var station = U.findTarget(ev, 'a');
  if(station.getAttribute('xcoor')) {
    setBusStations(station.parentNode.solutionNum);
    map.centerAndZoom(new ULatLng(parseFloat(station.getAttribute('ycoor')), parseFloat(station.getAttribute('xcoor')), U_TM2_COORDSYS), 9);
  }
  return false;
}

function busSolutionLinkClick(ev) {
  var solution = U.findTarget(ev, 'td');
  setBusStations(solution.solutionNum);
  var box = new UBounds();
  for(var i=0; i<UbusStations.length; i++)
    box.extend(UbusStations[i].getPoint());
  box.extend(Ustart.getPoint());
  box.extend(Uend.getPoint());
  map.centerAndZoom(box.getCenter(), map.getBoundsZoomLevel(box));
  return false;
}

function setRoutingStartLocation(latlng, label) {
  setRoutingNode(latlng, label, Ustart);
  map.closeInfoWindow();
  hideContextMenu();
}

function setRoutingEndLocation(latlng, label) {
  setRoutingNode(latlng, label, Uend);
  map.closeInfoWindow();
  hideContextMenu();
}


var pmsPOIArray = new Array();
function markPmsPoi(str) {
  clearPmsPoi();
  var poiStr = str.split(';;;');
  for(var i=0; i<poiStr.length; i++) {
    if(poiStr[i].trim()=='')
      continue;
    var da = poiStr[i].split('@@@');
    var uicon = new UIcon();
    var type = da[5];
    if (type=='0') {
      uicon.image = '/pms/img/publicPOIIcon.gif';
    }
    else if (type=='1') {
      uicon.image = '/pms/img/publicPOIIcon.gif';
    }
    else if (type=='2') {
      uicon.image = '/pms/img/privatePOIIcon.gif';
    }
    else if (type=='3') {
      uicon.image = '/pms/img/colPOIIcon.gif';
    }
    uicon.iconWidth = 21;
    uicon.iconHeight = 21;
    uicon.iconAnchor = new UPoint(10, 20);
    uicon.infoWindowAnchor = new UPoint(10, 0);
    //var poi = new UMarker(new ULatLng(parseFloat(da[4]), parseFloat(da[3])), UpmsIcon, da[1], da[2]);
    var poi = new UMarker(new ULatLng(parseFloat(da[4]), parseFloat(da[3])), uicon, da[1], da[2]);
    poi.id = da[0];
    poi.name = da[1];
    poi.isPms = true;
    poi.pmsType = type;
    var chkObj = document.getElementById('poiType' + type);
    if (chkObj.checked == true) map.addOverlay(poi);
    UpmsPois.push(poi);
    if (!pmsPOIArray[type]) { pmsPOIArray[type] = new Array();
    }
    pmsPOIArray[type].push(poi);
  }
}

function clearPmsPoi() {
	while(UpmsPois.length>0){
    map.removeOverlay(UpmsPois.pop());
  }
  pmsPOIArray = new Array();
}

function removePOIType(type) {
  if (pmsPOIArray[type]) {
    for (i=0;i<pmsPOIArray[type].length; i++) {
      map.removeOverlay(pmsPOIArray[type][i]);
    }
  }
}

function remarkPOIType(type) {
  if (pmsPOIArray[type]) {
    for (i=0;i<pmsPOIArray[type].length; i++) {
      map.addOverlay(pmsPOIArray[type][i]);
    }
  }
}

function pmsPoiClick(overlay, latlng) {
  if(!overlay || !overlay.isPms)
    return;
  addNewTab('poi-detail-'+overlay.id,'地標-'+overlay.name,'/pms/loadPoiAction.do?id='+overlay.id+'&mode=detail&forward=detail&nomove=true');
}

function addFirefoxSearchEngine() {
  if((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
    window.sidebar.addSearchEngine(
      "http://www.urmap.com/firefox/urmap.src",
      "http://www.urmap.com/firefox/urmap.gif",
      "UrMap電子地圖搜尋引擎",
      "General");
  } else {
    alert("此搜尋列僅支援 Firefox 或 Mozilla 瀏覽器");
  }
}


//--Start of add by Edwrad


function getUserLocation( ev ){
	var fid = this.id;
	var fvalue = this.value;
	//alert(this.id);
	//alert(this.value);
	var ptType = fid.substring(0,2);
	
	var ulUrl = '/pms/getUserLocations.jsp?locType='+fvalue+'&ptType='+ptType;
	var transaction = YAHOO.util.Connect.asyncRequest('GET', ulUrl , ulCallback, null); 
}

var ulCallback = { 
    success: function(o) {
    	var text = o.responseText;
    	var sa = text.split(';');
    	if(sa[0].trim()=='success'){
    		var ss = sa[1].split(',');
    		var latlng = new ULatLng(parseFloat(ss[1]),parseFloat(ss[0]));
    		if(ss[3].trim()=='st'){ // 設定起點
    			map.centerMap(latlng);
    			setRoutingStartLocation(latlng, ss[2]);
    			
    		}
    		else{
    			map.centerMap(latlng);
    			setRoutingEndLocation(latlng, ss[2]);
    		}
    			
    	}
    	else if(sa[0]=='failure'){
    		alert(sa[1].trim()+'!');
    	}
    	else{
    		alert('Unexpected return header!');
    	}
    	
    	
    }, 
    failure: function(o) {
    	alert(o.statusText);
    	//alert('系統發生錯誤！');
    }, 
    argument: ['']  
  }
  
var allUserPmsPois = new Array();
function getAllUserPmsPoi( str ){
	clearAllUserPmsPoi();
  var poiStr = str.split(';;;');
  for(var i=0; i<poiStr.length; i++) {
    if(poiStr[i].trim()=='')
      continue;
    var da = poiStr[i].split('@@@');
    var uicon = new UIcon();
    var type = da[5];
    if (type=='0') {
      uicon.image = '/pms/img/publicPOIIcon.gif';
    }
    else
    	continue;
    
    uicon.iconWidth = 21;
    uicon.iconHeight = 21;
    uicon.iconAnchor = new UPoint(10, 20);
    uicon.infoWindowAnchor = new UPoint(10, 0);
    var poi = new UMarker(new ULatLng(parseFloat(da[4]), parseFloat(da[3])), uicon, da[1], da[2]);
    poi.id = da[0];
    poi.name = da[1];
    poi.isPms = true;
    poi.pmsType = type;
    var chkObj = document.getElementById('openPmsPoi');
    if (chkObj.checked == true) map.addOverlay(poi);
    allUserPmsPois.push(poi);
  }	
}
function clearAllUserPmsPoi(){
	while(allUserPmsPois.length>0){
    map.removeOverlay(allUserPmsPois.pop());
  }
  allUserPmsPois = new Array();
}

function removeAllUserPmsPOI() {
  for (i=0;i<allUserPmsPois.length; i++) {
    map.removeOverlay(allUserPmsPois[i]);
  }
  
}

function remarkAllUserPmsPOI() {
  
  for (i=0;i<allUserPmsPois.length; i++) {
    map.addOverlay(allUserPmsPois[i]);
  }
  
}

function clearRoutingLocationRadio(){
	U.gi('stloc0').checked = false;  
  U.gi('stloc1').checked = false;  
  U.gi('stloc2').checked = false;  
  U.gi('stloc3').checked = false;  
  U.gi('destloc0').checked = false;  
  U.gi('destloc1').checked = false;  
  U.gi('destloc2').checked = false;  
  U.gi('destloc3').checked = false;  
}

function consistRoutingLocationRadio(){
	clearRoutingLocationRadio();
	if(Ustart.label == '住家'){
		U.gi('stloc0').checked = true;  
	}
	else if(Ustart.label == '公司'){
		U.gi('stloc1').checked = true;  
	}
	else if(Ustart.label == '學校'){
		U.gi('stloc2').checked = true;  
	}
	else if(Ustart.label == '個人地點'){
		U.gi('stloc3').checked = true;  
	}
	
	if(Uend.label == '住家'){
		U.gi('destloc0').checked = true;  
	}
	else if(Uend.label == '公司'){
		U.gi('destloc1').checked = true;  
	}
	else if(Uend.label == '學校'){
		U.gi('destloc2').checked = true;  
	}
	else if(Uend.label == '個人地點'){
		U.gi('destloc3').checked = true;  
	}
}

//--End of add by Edward

var TempHeadBanner = {
  headBanner: null,
  headBannerContent: new Array(
	  '<a href="http://ad.pccenter.com.tw/activity/International04/index.asp?selectENT=1&AD_website=W00040&AD_location=1" target="_blank"><img src="/banner/468x60_1211.gif"></a>',
    '<a href="/urphone/edm/" target="_blank"><img src="/banner/roll_pic03.gif"></a>',
		'<a href="http://ad.pccenter.com.tw/activity/International04/index.asp?selectENT=1&AD_website=W00040&AD_location=1" target="_blank"><img src="/banner/468x60_1211.gif"></a>',
    '<a href="/YahooMessenger/doc/YM_account.html" target="_blank"><img src="/banner/roll_pic01.gif"></a>',
		'<a href="http://ad.pccenter.com.tw/activity/International04/index.asp?selectENT=1&AD_website=W00040&AD_location=1" target="_blank"><img src="/banner/468x60_1211.gif"></a>',
    '<a href="/urphone/edm/" target="_blank"><img src="/banner/roll_pic03.gif"></a>',
		'<a href="http://ad.pccenter.com.tw/activity/International04/index.asp?selectENT=1&AD_website=W00040&AD_location=1" target="_blank"><img src="/banner/468x60_1211.gif"></a>',
    '<a href="/msn/doc/" target="_blank"><img src="/banner/roll_pic02.gif"></a>'
  ),
  headBannerIdx: 1,
  setBannerDiv: function(div) {
	  TempHeadBanner.headBanner = div;
    TempHeadBanner.headBanner.innerHTML = TempHeadBanner.headBannerContent[0];
    setInterval('TempHeadBanner.headBanner.innerHTML = TempHeadBanner.headBannerContent[(TempHeadBanner.headBannerIdx++)%TempHeadBanner.headBannerContent.length];', 8000);
  }
};

var TempRoutingDivBanner = {
	headBanner: null,
  headBannerContent: new Array(
	'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="250" height="250"><param name="movie" value="/banner/250_250-1218-1.swf"><param name="quality" value="high"><embed src="/banner/250_250-1218-1.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash" width="250" height="250"></embed></object>'    
  ),
  headBannerIdx: 1,
  setBannerDiv: function(div) {
    TempRoutingDivBanner.headBanner = div;
    TempRoutingDivBanner.headBanner.innerHTML = TempRoutingDivBanner.headBannerContent[0];
    setInterval('TempRoutingDivBanner.headBanner.innerHTML = TempRoutingDivBanner.headBannerContent[(TempRoutingDivBanner.headBannerIdx++)%TempRoutingDivBanner.headBannerContent.length];', 8000);
  }
};




function _decodeMap(enc) {
  SearchBean.decode(enc, decodeMapCallback);
}

function decodeMapCallback(result) {
  
  var data = result.split('@');
  var latlng;
  if(data[1].length>0) {
    var targetdata = data[1].split(';');
    if(targetdata.length==4) /* old 67 link */
      latlng = new ULatLng(parseFloat(targetdata[3])-200, parseFloat(targetdata[2])+826, U_TM2_COORDSYS);
    else {
      latlng = new ULatLng(parseFloat(targetdata[3]), parseFloat(targetdata[2]));
    }
    setMapTarget(latlng, targetdata[0], targetdata[1], 1);
  }
  var xyz = data[0].split(';');
  if(xyz.length==4)
    latlng = new ULatLng(parseFloat(xyz[1])-200, parseFloat(xyz[0])+826, U_TM2_COORDSYS);
  else {
    latlng = new ULatLng(parseFloat(xyz[1]), parseFloat(xyz[0]));
  }
  map.centerAndZoom(latlng, parseInt(xyz[2]));
  var mode = xyz[3]=='0'?U_MAP_TYPE:(xyz[3]=='1'?U_SATELLITE_TYPE:U_HYBRID_TYPE);
  map.setMapType(mode);
}

// 打開contextmenu
function feedbackAddress() {
  hideContextMenu();
  var content = '<div style="background:#fdd; padding:4px; height:95%; border:1px solid gray;">我要回報此處的地址門牌(樓層不用輸入)<hr><select id="fbadrCity" onchange="fbadrChangeCity();"><option value="">縣市</option><option value="基隆市">基隆市</option><option value="台北市">台北市</option><option value="台北縣">台北縣</option><option value="桃園縣">桃園縣</option><option value="新竹市">新竹市</option><option value="新竹縣">新竹縣</option><option value="苗栗縣">苗栗縣</option><option value="台中市">台中市</option><option value="台中縣">台中縣</option><option value="彰化縣">彰化縣</option><option value="南投縣">南投縣</option><option value="雲林縣">雲林縣</option><option value="嘉義市">嘉義市</option><option value="嘉義縣">嘉義縣</option><option value="台南市">台南市</option><option value="台南縣">台南縣</option><option value="高雄市">高雄市</option><option value="高雄縣">高雄縣</option><option value="屏東縣">屏東縣</option><option value="宜蘭縣">宜蘭縣</option><option value="花蓮縣">花蓮縣</option><option value="台東縣">台東縣</option><option value="澎湖縣">澎湖縣</option></select><select id="fbadrTown" onchange="fbadrChange();"></select>鄉鎮市區<input type="text" id="fbadrVillage" size="4" onkeyup="fbadrChange();">村里名<br><input type="text" id="fbadrRoad" size="10" onkeyup="fbadrChange();"><select id="fbadrRoadType" onchange="fbadrChange();"><option value="路">路</option><option value="街">街</option><option value="大道">大道</option></select><input type="text" id="fbadrSection" size="3" onkeyup="fbadrChange();">段<br><input type="text" id="fbadrLane" size="3" onkeyup="fbadrChange();">巷<input type="text" id="fbadrAlley" size="3" onkeyup="fbadrChange();">弄<input type="text" id="fbadrNo" size="3" onkeyup="fbadrChange();">號之<input type="text" id="fbadrNo2" size="2" onkeyup="fbadrChange();"><hr>請確認您所要回報的完整地址如下：<br><span style="color:red" id="fbadrAddress"></span><br>請輸入您的 email，以便我們通知您處理結果<br><input type="text" id="fbadrMail"><div style="position:absolute;right:0px;bottom:0px;"><span id="fbadrLoading"></span><input type="button" value="送出" onclick="feedbackAddressSubmit();"><input type="button" value="取消" onclick="map.closeInfoWindow();"></div></div>';
  Upin.openInfoWindow(content, 300, 200);
}

// onchange city
function fbadrChangeCity() {
  var city = U.gi('fbadrCity').value;
  var towns;
  if(city=='基隆市')
    towns = new Array('','七堵區','中山區','中正區','仁愛區','安樂區','信義區','暖暖區');
  else if(city=='台北市')
    towns = new Array('','士林區','大同區','大安區','中山區','中正區','內湖區','文山區','北投區','松山區','信義區','南港區','萬華區');
  else if(city=='台北縣')
    towns = new Array('','八里鄉','三芝鄉','三重市','三峽鎮','土城市','中和市','五股鄉','平溪鄉','永和市','石門鄉','石碇鄉','汐止市','坪林鄉','林口鄉','板橋市','金山鄉','泰山鄉','烏來鄉','貢寮鄉','淡水鎮','深坑鄉','新店市','新莊市','瑞芳鎮','萬里鄉','樹林市','雙溪鄉','蘆洲市','鶯歌鎮');
  else if(city=='桃園縣')
    towns = new Array('','八德市','大園鄉','大溪鎮','中壢市','平鎮市','桃園市','復興鄉','新屋鄉','楊梅鎮','龍潭鄉','龜山鄉','蘆竹鄉','觀音鄉');
  else if(city=='新竹市')
    towns = new Array('','北區','東區','香山區');
  else if(city=='新竹縣')
    towns = new Array('','五峰鄉','北埔鄉','尖石鄉','竹北市','竹東鎮','芎林鄉','峨眉鄉','湖口鄉','新埔鎮','新豐鄉','橫山鄉','關西鎮','寶山鄉');
  else if(city=='苗栗縣')
    towns = new Array('','三義鄉','三灣鄉','大湖鄉','公館鄉','竹南鎮','西湖鄉','卓蘭鎮','南庄鄉','後龍鎮','苗栗市','苑裡鎮','泰安鄉','通霄鎮','造橋鄉','獅潭鄉','銅鑼鄉','頭份鎮','頭屋鄉');
  else if(city=='台中市')
    towns = new Array('','中區','北屯區','北區','西屯區','西區','東區','南屯區','南區');
  else if(city=='台中縣')
    towns = new Array('','大甲鎮','大安鄉','大肚鄉','大里市','大雅鄉','太平市','外埔鄉','石岡鄉','后里鄉','沙鹿鎮','和平鄉','東勢鎮','烏日鄉','神岡鄉','梧棲鎮','清水鎮','新社鄉','潭子鄉','龍井鄉','豐原市','霧峰鄉');
  else if(city=='彰化縣')
    towns = new Array('','二水鄉','二林鎮','大村鄉','大城鄉','北斗鎮','永靖鄉','田中鎮','田尾鄉','竹塘鄉','伸港鄉','秀水鄉','和美鎮','社頭鄉','芳苑鄉','花壇鄉','芬園鄉','員林鎮','埔心鄉','埔鹽鄉','埤頭鄉','鹿港鎮','溪州鄉','溪湖鎮','彰化市','福興鄉','線西鄉');
  else if(city=='南投縣')
    towns = new Array('','中寮鄉','仁愛鄉','水里鄉','名間鄉','竹山鎮','信義鄉','南投市','埔里鎮','草屯鎮','國姓鄉','魚池鄉','鹿谷鄉','集集鎮');
  else if(city=='雲林縣')
    towns = new Array('','二崙鄉','口湖鄉','土庫鎮','大埤鄉','元長鄉','斗六市','斗南鎮','水林鄉','北港鎮','古坑鄉','台西鄉','四湖鄉','西螺鎮','東勢鄉','林內鄉','虎尾鎮','崙背鄉','麥寮鄉','莿桐鄉','褒忠鄉');
  else if(city=='嘉義市')
    towns = new Array('','西區','東區');
  else if(city=='嘉義縣')
    towns = new Array('','大林鎮','大埔鄉','中埔鄉','六腳鄉','太保市','水上鄉','布袋鎮','民雄鄉','朴子市','竹崎鄉','東石鄉','阿里山鄉','梅山鄉','鹿草鄉','番路鄉','新港鄉','溪口鄉','義竹鄉');
  else if(city=='台南市')
    towns = new Array('','中西區','北區','安平區','安南區','東區','南區');
  else if(city=='台南縣')
    towns = new Array('','七股鄉','下營鄉','大內鄉','山上鄉','仁德鄉','六甲鄉','北門鄉','左鎮鄉','永康市','玉井鄉','白河鎮','安定鄉','西港鄉','佳里鎮','官田鄉','東山鄉','南化鄉','後壁鄉','柳營鄉','將軍鄉','麻豆鎮','善化鎮','新化鎮','新市鄉','新營市','楠西鄉','學甲鎮','龍崎鄉','歸仁鄉','關廟鄉','鹽水鎮');
  else if(city=='高雄市')
    towns = new Array('','三民區','小港區','左營區','前金區','前鎮區','苓雅區','新興區','楠梓區','鼓山區','旗津區','鹽埕區');
  else if(city=='高雄縣')
    towns = new Array('','三民鄉','大社鄉','大寮鄉','大樹鄉','仁武鄉','內門鄉','六龜鄉','永安鄉','田寮鄉','甲仙鄉','杉林鄉','岡山鎮','林園鄉','阿蓮鄉','美濃鎮','茄萣鄉','茂林鄉','桃源鄉','梓官鄉','鳥松鄉','湖內鄉','路竹鄉','旗山鎮','鳳山市','橋頭鄉','燕巢鄉','彌陀鄉');
  else if(city=='屏東縣')
    towns = new Array('','九如鄉','三地門鄉','內埔鄉','竹田鄉','牡丹鄉','車城鄉','里港鄉','佳冬鄉','來義鄉','枋山鄉','枋寮鄉','東港鎮','林邊鄉','長治鄉','南州鄉','屏東市','恆春鎮','春日鄉','崁頂鄉','泰武鄉','琉球鄉','高樹鄉','新埤鄉','新園鄉','獅子鄉','萬丹鄉','萬巒鄉','滿州鄉','瑪家鄉','潮州鎮','霧台鄉','麟洛鄉','鹽埔鄉');
  else if(city=='宜蘭縣')
    towns = new Array('','三星鄉','大同鄉','五結鄉','冬山鄉','壯圍鄉','宜蘭市','南澳鄉','員山鄉','頭城鎮','礁溪鄉','羅東鎮','蘇澳鎮');
  else if(city=='花蓮縣')
    towns = new Array('','玉里鎮','光復鄉','吉安鄉','秀林鄉','卓溪鄉','花蓮市','富里鄉','新城鄉','瑞穗鄉','萬榮鄉','壽豐鄉','鳳林鎮','豐濱鄉');
  else if(city=='台東縣')
    towns = new Array('','大武鄉','太麻里鄉','台東市','成功鎮','池上鄉','卑南鄉','延平鄉','東河鄉','金峰鄉','長濱鄉','海端鄉','鹿野鄉','達仁鄉','綠島鄉','關山鎮','蘭嶼鄉');
  else if(city=='澎湖縣')
    towns = new Array('','七美鄉','白沙鄉','西嶼鄉','馬公市','望安鄉','湖西鄉');
  else
    towns = new Array('');
  var town = U.gi('fbadrTown');
  for(var i=town.length-1; i>=0; i--)
    town.remove(i);
  for(var i=0; i<towns.length; i++)
    town.options[i] = new Option(towns[i], towns[i]);
  fbadrChange();
}


// 組完成地址字串
function fbadrChange() {
  var rd = U.gi('fbadrRoad').value==''?'':U.gi('fbadrRoad').value+U.gi('fbadrRoadType').value;
  var sec = U.gi('fbadrSection').value==''?'':U.gi('fbadrSection').value+'段';
  var lane = U.gi('fbadrLane').value==''?'':U.gi('fbadrLane').value+'巷';
  var alley = U.gi('fbadrAlley').value==''?'':U.gi('fbadrAlley').value+'弄';
  var no = U.gi('fbadrNo').value==''?'':U.gi('fbadrNo').value+'號';
  var no2 = U.gi('fbadrNo2').value==''?'':'之'+U.gi('fbadrNo2').value;
  var addr = U.gi('fbadrAddress');
  addr.innerHTML = U.gi('fbadrCity').value+U.gi('fbadrTown').value+U.gi('fbadrVillage').value+rd+sec+lane+alley+no+no2;
}

// submit form 之前的check
function feedbackAddressSubmit() {
  if(U.gi('fbadrMail').value.indexOf('@')<=0) {
    alert('請輸入您的 email');
    return;
  }
  if(U.gi('fbadrCity') && U.gi('fbadrCity').value=='') {
    alert('請選擇縣市鄉鎮');
    return;
  }
  ajaxCall('/SearchEngine/addaddressxytemp.do?address='+encodeURI(U.gi('fbadrAddress').innerHTML)+'&x='+UcontextMenuLatLng.x()+'&y='+UcontextMenuLatLng.y()+'&provider='+encodeURI('UrMap首頁回饋')+'&upload_email='+U.gi('fbadrMail').value+'&action=add&encode=UTF-8', feedbackAddressCallback, false, '<img src="/img/loading.gif">', U.gi('fbadrLoading'));
 if(!U.gi('fbadrCity') && U.gi('fb1MenuItem'))
  U.gi('contextMenu').removeChild(U.gi('fb1MenuItem'));
  map.closeInfoWindow();
}

// 判斷之否成功
function feedbackAddressCallback(xmlhttp) {
  if(xmlhttp.responseText.indexOf('非常感謝您')>0)
    alert('感謝您的協助，我們會儘速審核您所回報的地址');
  else
    alert('系統回報失敗，請確認您輸入的地址有包含正確的縣市及鄉鎮名稱，或稍後再試');
}


function preFeedbackOneAddress(addr) {
  alert('請在地圖上「'+addr+'」的正確位置按下滑鼠右鍵來進行回報');
  map.closeInfoWindow();
  var fbItem = U.gi('fb1MenuItem');
  if(!fbItem) {
    fbItem = document.createElement('a');
    fbItem.id = 'fb1MenuItem';
    fbItem.href = 'javascript:void(0);';
    fbItem.onclick = feedbackOneAddress;
    fbItem.style.cssText = 'color:red;';
    U.gi('contextMenu').insertBefore(fbItem, U.gi('contextMenu').firstChild);
  }
  fbItem.address = addr;
  fbItem.innerHTML = '我要回報「'+addr+'」';
}

function feedbackOneAddress() {
  hideContextMenu();
  var content = '<div style="background:#fdd; padding:4px; height:90%; border:1px solid gray;">我要回報此處的地址門牌<hr>請確認您所要回報的完整地址如下：<br><span style="color:red" id="fbadrAddress">'+U.gi('fb1MenuItem').address+'</span><br>請輸入您的 email，以便我們通知您處理結果<br><input type="text" id="fbadrMail"><div style="position:absolute;right:0px;bottom:0px;"><span id="fbadrLoading"></span><input type="button" value="送出" onclick="feedbackAddressSubmit();"><input type="button" value="取消" onclick="map.closeInfoWindow();"></div></div>';
  Upin.openInfoWindow(content, 300, 110);
}



function ajaxCall(url, callbackFn, isAsynconized, loadingMsg, loadingContainer) {
  var loadingDiv = document.createElement('div');
  if(loadingMsg)
    loadingDiv.innerHTML = loadingMsg;
  if(!loadingContainer) {
    loadingContainer = document.body;
    loadingDiv.style.cssText = 'background:red; color:white; padding:3px 5px 3px 5px; position:absolute; right:0px; top:0px;';
  }
  var xmlhttp;
  if(window.ActiveXObject)
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
  else if(window.XMLHttpRequest)
    xmlhttp = new XMLHttpRequest();
  if(isAsynconized) {
    xmlhttp.onreadystatechange = function() {
      if(xmlhttp.readyState==4) {
        loadingContainer.removeChild(loadingDiv);
        callbackFn(xmlhttp);
      }
    };
  }
  try {
    loadingContainer.appendChild(loadingDiv);
    xmlhttp.open('GET', url, isAsynconized);
    xmlhttp.send(null);
    if(!isAsynconized) {
      loadingContainer.removeChild(loadingDiv);
      callbackFn(xmlhttp);
    }
  } catch(ex) {
    loadingContainer.removeChild(loadingDiv);
    alert(ex);
  }
}

function returnToSave() {
  if(Utarget.getPoint().lat()!=0) {
    map.centerMap(Utarget.getPoint());
    mapMarkerClick(Utarget);
  }
  UCounter.addCount('UrMap首頁_function_回到原查詢點');
}


function generateMapLinkString() {
  var mode = map.getCurrentMapType()==U_MAP_TYPE?0:(map.getCurrentMapType()==U_SATELLITE_TYPE?1:2);
  var str = map.getCenter().lng()+';'+map.getCenter().lat()+';'+map.getZoomLevel()+';'+mode+';twd97'+'@';
  if(Utarget.getPoint().lat()!=0)
    str += Utarget.label+';'+Utarget.desc+';'+Utarget.getPoint().lng()+';'+Utarget.getPoint().lat()+';twd97';
  str += '@';
  return str;
}

function linkMap(ev) {
	var str = generateMapLinkString();
  DWREngine.setAsync(false);
  SearchBean.encode(str, linkMapCallback);
  DWREngine.setAsync(true);
  UCounter.addCount('UrMap首頁_function_網頁連結');
}

function emailMap(ev) {
	var str = generateMapLinkString();
  DWREngine.setAsync(false);
  SearchBean.encode(str, emailMapCallback);
  DWREngine.setAsync(true);
  UCounter.addCount('UrMap首頁_function_郵寄');
}

function linkMapCallback(enc) {
  DWREngine.setAsync(true);
  var url = 'http://www.urmap.com/?link='+enc;
  var html = '連結網址：<input type="button" value="全選" style="font-size:12px;" onclick="document.getElementById(\'urlTA\').select();"><br><textarea id="urlTA" rows="5" cols="33" style="font-size:13px;">'+url+'</textarea><br><br>HTML連結語法：<input type="button" value="全選" style="font-size:12px;" onclick="document.getElementById(\'htmlTA\').select();"><br><textarea id="htmlTA" rows="7" cols="33" style="font-size:13px;"><a target="_blank" href="'+url+'">地圖連結</a></textarea><br><br>我要試試看：<a target="_blank" href="'+url+'">地圖連結</a><p style="color:red;">PS.導航結果目前暫時無法提供網頁連結</p>';
  U.gi('detailDiv').innerHTML = html;
  alm.getLayout('mainLayout').showPanel('detailDiv');
  U.blinkElement(U.gi('detailDiv'), '#fbb');
}

function emailMapCallback(enc) {
  DWREngine.setAsync(true);
  var url = 'http://www.urmap.com/?link='+enc;
  location.href = 'mailto:?subject=UrMap%20Map%20Link&body='+escape(url);
}

function measureDistance(){
	map.setMapAction(U_MEASURE_ACTION);
	UCounter.addCount('UrMap首頁_function_測量距離');
}
	  
			
function clickPoiTag(a){
	var data = a.getAttribute("data");
	var d = data.split(";");
				
  if(CURRENT_POI_CATEGORY){
		CURRENT_POI_CATEGORY.style.cssText = '';
	}
	CURRENT_POI_CATEGORY = a;
	a.style.cssText = 'padding: 2px 8px;	background : #06c;	color: #fff;	text-decoration: none;';
	
	if( map.getZoomLevel()<7 )
		forceAppearenceType = '';
  getPoi(d[0],d[1]);
  if(GetYAdResults){
	GetYAdResults('tw_weblisher_interest_leisure'
					, 'tw_syndication_weblisher_cm_test'
					, 'utf8', '5');
	
	}
}
    	
function selectCategory( cat ){
  		
	SELECT_CAT_MENU_TYPE = cat;
	divId = cat+'CatContent';
	var div = document.getElementById(divId);
	if(div){
		if(div.innerHTML.trim() =='' ){
			loadCategory(cat,false);
		}
	}
}

function loadCategory( cat , isSync ){
	if(!isSync)
		isSync = false;
	ajaxCall('tree/category/'+cat+'.txt',loadCategoryCallback, isSync );
}
    	
function loadCategoryCallback(o){
	var str = o.responseText;
	var sa = str.split("\n");
	var html ='';
	
	for(var i =0; i< sa.length;i++){
		var cat = sa[i].split("@");
	  if(cat.length==2 && cat[0]!='' && cat[0]!='undefined')
		  html += '<a href="#" data="'+cat[1]+'" onclick="clickPoiTag(this);UCounter.addCount(\'UrMap首頁_category_'+cat[0]+'\');return false;" style="text-decoration:none;">'+cat[0]+'</a>';
  }
  var div = document.getElementById(SELECT_CAT_MENU_TYPE+'CatContent');
 	if(div){
		div.innerHTML = html;
	}
}
	
function changeCatBySource( divId ){
 	var div1 = document.getElementById('my_menu');
 	var div2 = document.getElementById('cp_menu');
 	if(divId=='my_menu'){
 		div1.style.display = 'block';	
 		div2.style.display = 'none';	
 	}
 	else{
 		div2.style.display = 'block';	
 		div1.style.display = 'none';	
 	}
}

/*==========地圖日記start==========*/
function adSearchCallback(xmlhttp) {
  clearPoi();
  var doc = xmlhttp.responseXML;
  var ads = U.gt(doc, 'post');
  
  var html = '';
  var bounds = map.getBounds();
    
  for(var i=0; i<ads.length; i++) {  	
    var titleName = U.getTagValue(ads[i], 'title');
    var linkUrl = U.getTagValue(ads[i], 'url');
		var description = U.getTagValue(ads[i], 'description');
	
		var latitude = parseFloat(U.getTagValue(ads[i], 'lat'));
    var lngitude = parseFloat(U.getTagValue(ads[i], 'lng'));
    var picUrl = U.getTagValue(ads[i], 'userthumbnail');
		//去空白區
		titleName = titleName.trim();
		linkUrl = linkUrl.trim();
		description = description.trim();
		picUrl = picUrl.trim();
	
    var desc = "<center><img src=\""+picUrl+"\" onclick='javascript:window.open(\""+linkUrl+"\")' ><br>";
    desc += "<a href='#' onclick='javascript:{window.open(\""+linkUrl+"\")};'>詳細資料</a></center>";
	
    var latlng = new ULatLng(latitude, lngitude);
    if(bounds.contains(latlng)) {
      var ad = new UMarker(latlng, UadIcon, titleName, desc);
      ad.isAdPoi = true;
      ad.label = "<center>"+description+"</center>";
	  
      ad.desc = "<center><a href='#' onclick='javascript:{window.open(\""+linkUrl+"\")};'><b>"+titleName+"</b></a><br>";
      ad.desc += "<img src=\""+picUrl+"\" onclick='javascript:window.open(\""+linkUrl+"\")' >"+"</center>";
      Upois.push(ad);
      map.addOverlay(ad);
    }
  }
/*
  if(Uads.length==0) {
    alert('目前的地圖範圍內無任何符合條件的資訊，請變更您的條件或地圖範圍');
  } 
*/
}

function adSearch(UadCategory) {  
  var bounds = map.getBounds();
  var url = '/asp/atlas/adSearch.jsp?type_id='+UadCategory+'&nelat='+bounds.getNorthEast().lat()+'&swlat='+bounds.getSouthWest().lat()
            +'&nelng='+bounds.getNorthEast().lng()+'&swlng='+bounds.getSouthWest().lng();
  U.loadByAjax(url, adSearchCallback);
}


/*==========end==========*/


function setEvent() {
	var routingBannerObj = new BANNER(document.getElementById('routingBannerDiv'), '1');  
	routingBannerObj.init();
	var routingPanel = alm.getLayout('mainLayout').findPanel('routingDiv');
	routingPanel.events.activate.subscribe(routingBannerObj.show);
}

function getAdjAd( asppoi_type_ids ){
  SearchBean.findAspPoi( 217719, 2646459, 300*1000, 400*1000, asppoi_type_ids, false, getAdPoiCallback );
}

function getAdPoiCallback(result) {
  //  var pois = new Array();
    var da = result.split(';');
		var nearstMarker;
		var nearestDist = 9999999;
    for(i=0; i<da.length; i++) {
      var at = da[i].split(',');
      if(at.length<13)
        continue;
      var coords = new ULatLng(parseInt(at[2]), parseInt(at[1]), U_TM2_COORDSYS);
      var dist = Math.sqrt( Math.pow( (Utarget.getPoint().x()-coords.x()), 2 )+Math.pow( (Utarget.getPoint().y()-coords.y()), 2 )  )
			
			if(dist < nearestDist){
				nearestDist = dist;
		    var icon = new UIcon();
				icon.image = UIconImagePath+at[3];
				icon.iconWidth = parseInt(at[11]);
				icon.iconHeight = parseInt(at[12]);
				icon.iconAnchor = new UPoint(Math.round(icon.iconWidth/2), Math.round(icon.iconHeight/2));
				icon.infoWindowAnchor = new UPoint(Math.round(icon.iconWidth/2), 0);
				
				var txt = at[5];
				var nearstMarker = new UMarker(coords, icon, at[4], txt);
				nearstMarker.pid = at[0];
				nearstMarker.label = at[4];
				nearstMarker.desc = at[5];
				nearstMarker.isPoi = true;
				nearstMarker.passiveAction = at[6];
				nearstMarker.extLink = at[7];
				nearstMarker.activeAction = at[8];
				nearstMarker.contentId = at[9];
				/*
				if(nearstMarker.activeAction!='0' && !UdisplayedActiveAd[nearstMarker.contentId]) {
					UactivePoi = nearstMarker;
					UdisplayedActiveAd[nearstMarker.contentId] = 'displayed';
					if(nearstMarker.contentId=='0')
						SearchBean.getAsppoiContent(nearstMarker.pid, showPopupContent);
					else
						SearchBean.getAdvert(nearstMarker.contentId, showPopupContent);
				}
			     */
			}
		}
		UadObject = nearstMarker;
		map.addOverlay( UadObject );
		if(nearstMarker.contentId){
			UactivePoi = UadObject;
			UdisplayedActiveAd[nearstMarker.contentId] = 'displayed';
			var bounds = map.getBounds();
			if(!bounds.contains(UactivePoi.getPoint()) ){
				bounds.extend(UactivePoi.getPoint());
				var level = map.getBoundsZoomLevel(bounds);
				map.zoomMap(level-1);
			}
			SearchBean.getAdvert(nearstMarker.contentId, showPopupContent);
		}
		else if( nearstMarker.passiveAction == '1'){
			UactivePoi = UadObject;
			var bounds = map.getBounds();
			if(!bounds.contains(UactivePoi.getPoint()) ){
				bounds.extend(UactivePoi.getPoint());
				var level = map.getBoundsZoomLevel(bounds);
				map.zoomMap(level-1);
			}
			nearestMarker.onclick = function(){ window.open(nearstMarker.extLink);}
		}
		
	}
	
function addSearchResultAd(){
	// 學承
	// return '<div style="display: block; float: right; overflow:hidden;" ><img src="http://apam.urmap.com/apam/upload/pccenter/16_16.gif"><a href="javascript:void(0);" onclick="getAdjAd(\'481\');UCounter.addCount(\'UrMap首頁_function_學承-搜尋結果廣告連結\');">免費學漫畫插畫</a></div>';
	// 麥當勞
	//return '<div style="display: block; float: right; overflow:hidden;" ><img src="http://apam.urmap.com/apam/upload/admin/M_logo.gif" style="vertical-align:middle;"><a href="javascript:void(0);" onclick="getAdjAd(\'253\');UCounter.addCount(\'UrMap首頁_function_麥當勞-搜尋結果廣告連結\');">最近的麥當勞</a></div>';
	//花旗
	// return '<div style="display: block; float: right; overflow:hidden;line-height:20px;" ><img src="http://citibank.urmap.com/citibank/imgs/result.gif" style="width:16px;height:19px;" valign="absmiddle"><a href="javascript:void(0);" onclick="getNearCityShop();UCounter.addCount(\'UrMap首頁_function_花旗-搜尋結果廣告連結\');">附近花旗分期商店</a></div>';
	 //附近旅遊住宿
	 return '<div style="display: block; float: right; overflow:hidden;line-height:20px;" ><img src="http://apam.urmap.com/apam/upload/surehigh/surehigh_hotel_mark.gif" style="width:16px;height:19px;" valign="absmiddle"><a href="javascript:void(0);" onclick="getPoi(\'hotel\',\'0\');UCounter.addCount(\'UrMap首頁_function-附近旅遊_搜尋結果廣告連結\');">附近旅遊住宿</a></div>';
}
var Uads = new Array();
var cityBankIcon = new UIcon();
  cityBankIcon.image = "http://citibank.urmap.com/citibank/imgs/result.gif";
  cityBankIcon.iconWidth = 20;
  cityBankIcon.iconHeight = 20;
  cityBankIcon.iconAnchor = new UPoint(10, 10);
  cityBankIcon.infoWindowAnchor = new UPoint(10, 1);
function getNearCityShop(){
	if(map.getZoomLevel() >= 7){
		var encode = '';
		encode = 'UTF-8';
		var mbounds = map.getBounds();
		var url = 'CitiBankSearch.jsp?'
	  			+'NEx='+mbounds.getNorthEast().x()+'&NEy='+mbounds.getNorthEast().y()+'&SWx='+mbounds.getSouthWest().x()+'&SWy='+mbounds.getSouthWest().y();
	  
	 	U.loadByAjax(url, getNearCityShopCallback);
    }
}
function clearCityAds() {
  while(Uads.length>0)
    map.removeOverlay(Uads.pop());
}
function getNearCityShopCallback(xmlhttp){
	//alert(xmlhttp.responseText);
  clearCityAds();
  var doc = xmlhttp.responseText ? xmlhttp.responseText.trim() : xmlhttp.trim();
  //alert(doc);
  var ads = doc.split('；');	//；　＝＝＞全形
  var imageFilePath = 'http://citibank.urmap.com/citibank/imgs/customer_imgs/';
  var html = '';
  var bounds = map.getBounds();
  
	function ashWords(word) {
		return '<font color="#333333">' + word + '</font>';
	}
	function bindMarkerClickEvent(_marker, _latlng, _citiName, _desc){
		_marker.addListener('click', function() {
			_marker.openInfoWindow(_desc);
			U.gi('setStartLink').onclick = function() {setRoutingStartLocation(_marker.getPoint(), _citiName);};
    		U.gi('setEndLink').onclick = function() {setRoutingEndLocation(_marker.getPoint(), _citiName);};
			  });
	}
  if(0 != doc.length) {
	  var chkLatLng = new Array(); //用來存放地標值，檢查是否有重覆
	  var detail_list = '';
	  detail_list += '*分期門檻與期數，以及0手續費之商品，以特約商店公告為主<br>';
	  for(var i=0; i<ads.length; i++) {
		//alert(ads[i]);
		var data = ads[i].split(',');
		var citi_Id = data[16];	//店家ID
		var citiName = data[0];	//店名
		var cat = data[1];	//店家類別
		var address = data[2];	//住址
		
		var TEL1 = data[3];	//電話1	(測試用  記得改回來)
		var TEL2 = data[4];	//電話2
		var latestMsg = data[5];
		var latestMsgByHtml = '<font color="#004287">'+latestMsg+'</font>';	//最新優惠<一串html語法>
		var imageFileName = data[6];	//圖檔名稱
		
		var hyperlink = data[7];	//店家連結
		var flag = data[8];	//異動狀態
		
		var latitude = parseFloat(data[14]);	//y
		var lngitude = parseFloat(data[13]);	//x
		
		//檢查坐標是否有重覆
  		var _2_LatLng = [];
		if(chkLatLng.length > 0) {
			for(var tmp_i=0;tmp_i<chkLatLng.length;tmp_i++) {
				var tmp_latitude = chkLatLng[tmp_i];
				var _1_Lat = parseFloat(tmp_latitude[0]);
				var _2_Lng = parseFloat(tmp_latitude[1]);
				
				if((_1_Lat == latitude) && (_2_Lng == lngitude)) {
					latitude = latitude + 10;
					lngitude = lngitude + 10;
					_2_LatLng[0] = latitude;
					_2_LatLng[1] = lngitude;
					//chkLatLng.push(_2_LatLng);
					tmp_i = 0;	//重新在與陣列中比對
					//continue;
				} else {
					_2_LatLng[0] = latitude;
					_2_LatLng[1] = lngitude;
					//chkLatLng.push(_2_LatLng);
				}
			}
			chkLatLng.push(_2_LatLng);
		} else {
			_2_LatLng[0] = latitude;
			_2_LatLng[1] = lngitude;
			chkLatLng.push(_2_LatLng);
		}
		//alert(citiName+'\n'+'y:'+latitude+'\tx:'+lngitude);
		//new ULatLng(parseFloat(location_y), parseFloat(location_x), U_TM2_COORDSYS);
		var latlng = new ULatLng(latitude, lngitude, U_TM2_COORDSYS);
		
		var _desc = '<table width="90%" border="0">';
		var title_Words = '';
		var _Column_add = 0;	//用於記錄資料  for 泡泡視窗
		var _Column_tel = 0;	//用於記錄資料  for 泡泡視窗
		var _Column_msg = 0;	//用於記錄資料  for 泡泡視窗
		var _Column_img = 0;	//用於記錄資料  for 泡泡視窗
		
		if(citiName) {
			title_Words += citiName;
			
			var tmp_Str = '';
			if(hyperlink) {
				if(hyperlink.indexOf('"') != -1) {	//過濾雙引號
					hyperlink = hyperlink.replace('"','');
				}
				tmp_Str = hyperlink;
				if(tmp_Str.indexOf('http://') == -1)
					tmp_Str = 'http://' + tmp_Str;
			}
			
			detail_list += '<table border="0"><tr><td>'
						+ '<a href="#" onmouseover="mouseOnShowMapData(\''+citiName+'\');" ';
			//如沒Link 則click 拿掉
			if('' != tmp_Str) {
				detail_list += ' onclick="javascript:{window.open(\''+tmp_Str+'\')};" ';
			}
			detail_list += ' style="text-decoration:none"><img src="./imgs/result.gif" height="20px" width="20px" />'
					+ '<font color="#333333"><strong>' + citiName + '</strong></font></a></td></tr>';
		}
		
		if('' != address) {
			_desc += '<tr><td colspan="3">' + ashWords(address) + '</td></tr>';
			
			detail_list += '<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;' + ashWords(address) + '</td></tr>';
			_Column_add = 1;
		}
		
		if(TEL1 || TEL2) {
			_desc += '<tr><td colspan="3">';
			detail_list += '<tr><td>';
			if(TEL1) {
				_desc += ashWords(TEL1);
				detail_list += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + ashWords(TEL1);
			}
			
			if(TEL2) {
				_desc += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + ashWords(TEL2);
				detail_list += '<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + ashWords(TEL2);
			}
			_desc += '</td></tr>';
			detail_list += '</td></tr>';
			_Column_tel = 1;
		}
		detail_list += '</table>';
		
		if(latestMsg && ('' != latestMsg.trim())) {
			_desc += '<tr><td colspan="3">' + latestMsgByHtml + '</td></tr>';
			_Column_msg = 1;
		}
		
		if(imageFileName && ('' != imageFileName.trim())) {
			_desc += '<tr>';
			_desc += '<td colspan="2" width="100px"><img src="'+(imageFilePath + imageFileName)+'" alt="" onerror="this.src=\''+imageFilePath+'Error_default.gif\'" />';
			_Column_img = 1;
			_desc += '</td></tr>';
		}/* else {
			_desc += '<td colspan="2">&nbsp;';
		}*/
		
		_desc += '<tr><td>';
		
		_desc += '<a href="javascript:void(0);" id="setStartLink">設為起點</a> | <a href="javascript:void(0);" id="setEndLink">設為終點</a>';
		
		//_desc += ' | <a href="javascript:void(0);" onclick="javascript:{clearUmapInfoWindow();};">關閉視窗</a>';
		
		if(hyperlink) {
			if(hyperlink.indexOf('http://') == -1)
				hyperlink = 'http://' + hyperlink;
			_desc += ' | <a href="javascript:void(0);" onclick="javascript:{window.open(\''+hyperlink+'\')};">店家資訊</a>';
		}/* else {
			_desc += '&nbsp;';
		}*/
		
		_desc += '</td></tr></table>';

		var ad = new UMarker(latlng, cityBankIcon, citiName);
		ad.isAdPoi = true;
		ad.label = title_Words;
		ad.desc = _desc;
		
		ad._Column_add = _Column_add;
		ad._Column_tel = _Column_tel;
		ad._Column_msg = _Column_msg;
		ad._Column_img = _Column_img;
		bindMarkerClickEvent(ad, latlng, citiName, '<div style="color:#333;font-weight:bold;">' + citiName + '</div>' + _desc);
		Uads.push(ad);
		map.addOverlay(ad);
	  }
	  /*if(listPageFlag) {
		//列表頁內文
  		U.gi("listDiv").innerHTML = detail_list;
  		_Utabpane.selectTab('list');
	  }*/
  }
  //listPageFlag = false;	//點tree列表  也要秀結果  so  關閉它
  /*if(Uads.length==0) {
	//clearAllAdss();
	U.gi("listDiv").innerHTML = '';
    alert('目前的地圖範圍內無任何符合條件的資訊，請變更您的條件或地圖範圍');
  } */
}
// for mazu event
function mazuBike(){
	var coords = new ULatLng(24.013003,120.680396);
	getEventPois(coords,2,'491,492');
	getGeoObject('5');
	startGPS();
  /*
  	map.centerAndZoom(coords,2);
	var center = map.getCenter();
	var bounds = map.getBounds();
	UpoiSource = 'asp';
	UpoiType = '491,492';
	SearchBean.findAspPoi(center.x(), center.y(), bounds.getWidth(U_TM2_COORDSYS), bounds.getHeight(U_TM2_COORDSYS), UpoiType, false, getAspPoiCallback);
	*/

}

function getEventPois( latlng,zoom, asppoi_type_ids ){
	map.centerAndZoom(latlng,zoom);
	var center = map.getCenter();
  var bounds = map.getBounds()
	SearchBean.findAspPoi( center.x(), center.y(), 300*1000, 400*1000, asppoi_type_ids, false, getEventPoiCallback );
}

function getEventPoiCallback( result ){
	var da = result.split(';');
  for(i=0; i<da.length; i++) {
      var at = da[i].split(',');
      if(at.length<13)
        continue;
      var icon = new UIcon();
      icon.image = UIconImagePath+at[3];
      icon.iconWidth = parseInt(at[11]);
      icon.iconHeight = parseInt(at[12]);
      icon.iconAnchor = new UPoint(Math.round(icon.iconWidth/2), Math.round(icon.iconHeight/2));
      icon.infoWindowAnchor = new UPoint(Math.round(icon.iconWidth/2), 0);
      var coords = new ULatLng(parseInt(at[2]), parseInt(at[1]), U_TM2_COORDSYS);
      var txt = at[5];
      if(at[10]!='6')
      	txt += '<p><a href="#" onclick="collectAspPoi(\''+at[0]+'\',\''+at[4]+'\',\''+at[5]+'\','+coords.lat()+','+coords.lng()+');return false;">收藏此地標</a><img src="img/new.gif"></p>';
      var poi = new UMarker(coords, icon, at[4], txt);
      poi.pid = at[0];
      poi.label = at[4];
      poi.desc = at[5];
      poi.isPoi = true;
      poi.passiveAction = at[6];
      poi.extLink = at[7];
      poi.activeAction = at[8];
      poi.contentId = at[9];
      UEventPois.push(poi);
      
  }
		
  for(var i=0; i<UEventPois.length; i++)
	  map.addOverlay(UEventPois[i]);
}

function clearEventPoi() {
  while(UEventPois.length>0)
    map.removeOverlay(UEventPois.pop());
}
function initExam97(){
	//alm.getPanel('hotDiv').getUpdateManager().update({ url:'/EXAM97/exam001.html', scripts:true});
	//alm.getPanel('detailDiv').getUpdateManager().update('EXAM97/exam001.html');
	/*var iframeExam97 = document.createElement('iframe');
	iframeExam97.src = "/EXAM97/exam01.html";
	iframeExam97.width="100%";
	iframeExam97.height="400";
	iframeExam97.frameborder="0";
	iframeExam97.allowtransparency="true" ;
	iframeExam97.style.border = "0px";
	U.gi('detailDiv').appendChild(iframeExam97);*/
	U.gi('detailDiv').innerHTML = '<iframe id="EXAM97Frame" scrolling="no" style="overflow-x:hidden;" name="EXAM97Frame" src="/EXAM97/exam01.html" width="100%" height="360" frameborder="0" allowtransparency="true" ></iframe>';
    U.gi('EXAM97Frame').src = "/EXAM97/exam01.html";
    alm.getLayout('mainLayout').showPanel('detailDiv');
}
function exam97(alink, latlng, addr){
	var sp = latlng.split(',');
	var exam97latlng = new ULatLng(parseFloat(sp[0]), parseFloat(sp[1]), U_TM2_COORDSYS);
	
	var label = typeof alink == 'string'?alink:alink.innerHTML;
	Utarget.setPoint(exam97latlng);
	setMapTarget(exam97latlng, label, addr, 4);
}
function addBookmarkLink() {
	if(document.all)
		window.external.AddFavorite(location.href,document.title);
	else if(window.sidebar)
		window.sidebar.addPanel(document.title,location.href,'');
}
function setHomepage()
{
 if (document.all)
    {
        document.body.style.behavior='url(#default#homepage)';
  		document.body.setHomePage('http://www.urmap.com');
 
    }
    else if (window.sidebar)
    {
	    if(window.netscape)
	    {
			try
			{ 
				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
			} 
			catch (e) 
			{ 
				alert( "該操作被瀏覽器拒絕，如果想啓用該功能，請在地址欄內輸入 about:config,然後將項 signed.applets.codebase_principal_support 值該為true" ); 
			}
    	}
	    var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components. interfaces.nsIPrefBranch);
	    prefs.setCharPref('browser.startup.homepage','http://www.carzymusic.com');
 	}
}
function SearchAllvalentine() {
	var vargs = new getArgs();
	if(vargs.morelove && vargs.morelove == 1){
		U.gi('ValentineListFrame').src = "event/valentine/love04.jsp?type=allGBList";
		alm.getLayout('mainLayout').showPanel('listDiv');
	}
		
	
  var bounds = map.getBounds();
  
  var url = 'event/valentine/searchAll.jsp?NEx='+bounds.getNorthEast().x()+'&NEy='+bounds.getNorthEast().y()+'&SWx='+bounds.getSouthWest().x()+'&SWy='+bounds.getSouthWest().y();
  //alert(url);
  U.loadByAjax(url, adSearchCallback);
  //ajaxCall(url, adSearchCallback, true);
}
var valentineUpois = [];
function adSearchCallback(xmlhttp) {
  if(!UadIconLove){
		UadIconLove = new UIcon();
		UadIconLove.image = "event/valentine/img/12.gif";
		UadIconLove.iconWidth = 20;
		UadIconLove.iconHeight = 20;
		UadIconLove.iconAnchor = new UPoint(10, 10);
		UadIconLove.infoWindowAnchor = new UPoint(10, 1);
	}
  //alert("enter call back");
  //clearPoi();
  //(xmlhttp.responseText);
  var doc = xmlhttp.responseText.trim();
  if(!doc) return;
  //alert(doc);
  var ads = doc.split(';');
  //alert(ads.length);  
  var bounds = map.getBounds();
  if(ads.length > 0) {
	  for(var i=0; i<ads.length; i++) {
		  var data = ads[i].split(',');
		  
		  var name = data[0];	//告白者暱稱
		  var cult = data[1];	//告白對象
		  var address = data[2];	//address
		  
		  var content = data[3];	//content
		  var photo = data[4];	//photo
		  var date = data[5];	//date
		  
		  var x = parseFloat(data[6]);	//x
		  var y = parseFloat(data[7]);	//y
		  
		  var accountId = data[8];
		  var times = data[9];
		  
		  var idkey = data[10];
		  
		  var title = name + ' to ' + cult;
		  var latlng = new ULatLng(y, x, U_TM2_COORDSYS);
		  //console.log(latlng);
		  //var ad = null;
		  if(!valentineUpois[i]){
		  	var vmarker = new UMarker(latlng, UadIconLove, title);
		  	valentineUpois.push(vmarker);
		  }
		  else{
		  	//console.log(valentineUpois[i].lat());
		  	  valentineUpois[i].setPoint(latlng);
		  	  valentineUpois[i].setMouseonInfo(title);
		  }
		  valentineUpois[i].isAdPoi = true;
		  valentineUpois[i].name = name;
		  valentineUpois[i].cult = cult;
		  valentineUpois[i].address = address;
		  
		  valentineUpois[i].content = content;
		  valentineUpois[i].photo = photo;
		  valentineUpois[i].date = date;
		  valentineUpois[i].idkey = idkey;
		  
		  valentineUpois[i].accountId = accountId;
		  valentineUpois[i].times = times;
		  
		  addValentineMarkerClick(valentineUpois[i], i);
		  
		  map.addOverlay(valentineUpois[i]);
		  if(typeof peopleClickPopu === 'undefined') window.peopleClickPopu = null;
		  if(peopleClickPopu && peopleClickPopu == idkey) {
		  	//alert(peopleClickPopu +','+accountId);
			mapClickForMainMap(valentineUpois[i],latlng);
			peopleClickPopu = null;
		  }
	  }
	  for(var i=ads.length; i<valentineUpois.length; i++){
	  	valentineUpois[i].setPoint(new ULatLng(0,0)); 
	  }
  }
}
function addValentineMarkerClick(vmarker, idx){
	try{
		vmarker.removeListener('click', function(){valentineMarkerClick(idx)});
	}catch(e){}
	vmarker.addListener('click', function(){valentineMarkerClick(idx)});
	
	function valentineMarkerClick(idx){
		var marker = valentineUpois[idx];
		var latlng = marker.getPoint();
		var x = latlng.x();
		var y = latlng.y();
		var msg = marker.content;
		var who = marker.name;
		var to = marker.cult;
		var accountId = marker.accountId;
		var photo = marker.photo;
		var times = marker.times;
		var idkey = marker.idkey;
		clickMarquee(msg, who, to, accountId, photo, times, x, y, idkey)
	}
}
function getArgs() {
    var args = new Object();
    var query = location.search.substring(1);     // Get query string
    var pairs = query.split("&");                 // Break at ampersand
    for(var i = 0; i < pairs.length; i++) {
        var pos = pairs[i].indexOf('=');          // Look for "name=value"
        if (pos == -1) continue;                  // If not found, skip
        var argname = pairs[i].substring(0,pos);  // Extract the name
        var value = pairs[i].substring(pos+1);    // Extract the value
        value = decodeURIComponent(value);        // Decode it, if needed
        args[argname] = value;                    // Store as a property
    }
    return args;                                  // Return the object
}