﻿var map,hh,mpy,mpoy,ww,loMkr,mkr,mkrLoading,crtCB,iMkr,iMkrO,iLoading,moving=0,mqa=0,tmpMkr,ms=0,crtRQ,crtPG,crtCat,mref=1,mrefo=1;
var mkrAy=new Object();
var perPage=5,perNPage=5;
var zmLmt=7;
var NF6="店家暫無地圖資訊~";
var crtLoc="";
function loadSMap(){
	selectTabs('tabs-mapl-li1', 'tabs-mapl-board', 'tabs-mapl-1', 'yp_index_map_tab_selected');
	selectTabs('tabs-maplc-li1', 'tabs-mapl-1', 'tabs-maplc-1', 'yp_index_map_category_selected');
	map=new CMap($('#map_l')[0]);
	map.addControl(CControl.C_SCALE_CTRL);
	map.addControl(new CSmallZoomControl(),new CControlPosition(C_ANCHOR_TOP_LEFT,new CSize(10,10)));
	map.enableContinuousZoom();
	map.disableScrollWheelZoom();
	map.setCenter(new CLatLng(25.0476,121.5170),8);
	CEvent.bind(map,'contextmenu',map,showCM);
	CEvent.addListener(map,'moveend',mapMoveEnd);
	CEvent.addListener(map,'movestart',mapMoveStart);
	iconLoading();
	$('#map_icon_small2').css('left','230px').css('top','5px').css('z-index',999).show();
	$('#map_icon_small').css('left','320px').css('top','5px').css('z-index',999).show();
	rsMkr();
}
function posSearch(lng,lat,tle,f){
	var p=1;
	if(loMkr)map.removeOverlay(loMkr);
	$('#Sel_local_Address').css('visibility','hidden');
	map.setCenter(new CLatLng(parseFloat(lat),parseFloat(lng)),8);
	loMkr=new CMarker(new CLatLng(parseFloat(lat),parseFloat(lng)),{icon:iMkrO,clickable:true,draggable:false});
	loMkr.desc=unescape(tle);
	loMkr.zoom=7;
	CEvent.addListener(loMkr,"mouseover",POSOver);
	map.addOverlay(loMkr);
	loMkr.setText('<p class="black01">*</p>');
	CEvent.fire(loMkr,'mouseover');
	crtLoc='2@lat='+lat+'&lng='+lng+'&tle='+tle+'@'
	if(f!=1&&$('#local_Address').get(0))$('#local_Address').val(unescape(tle));
	if(f!=1)saveMyLocations(tle);
}
function zoom(){
	window.location.href='/map.asp#'+base64Encode(crtLoc);
}
function saveMyLocations(tle){
	if(tle!=$.cookie('myloc1')&&tle!=$.cookie('myloc2')&&tle!=$.cookie('myloc3')){
		if($.cookie('myloc2')){
			$.cookie('myloc3', $.cookie('myloc2'), { expires: 7, path:'/' });
		}
		if($.cookie('myloc1')){
			$.cookie('myloc2', $.cookie('myloc1'), { expires: 7, path:'/' });
		}
		$.cookie('myloc1', tle, { expires: 7, path:'/' });
	}
	else{
		if(tle==$.cookie('myloc2')){
			$.cookie('myloc2', $.cookie('myloc1'), { expires: 7, path:'/' });
			$.cookie('myloc1', tle, { expires: 7, path:'/' });
		}
		else if(tle==$.cookie('myloc3')){
			$.cookie('myloc3', $.cookie('myloc2'), { expires: 7, path:'/' });
			$.cookie('myloc2', $.cookie('myloc1'), { expires: 7, path:'/' });
			$.cookie('myloc1', tle, { expires: 7, path:'/' });
		}
	}
}
function iconLoading(){
	iMkr=new CIcon(null,'/images/yp_data_icon_2.png');
	iMkr.iconSize=new CSize(34,32);
	iMkr.iconAnchor=new CPoint(22,32);
	iMkr.infoWindowAnchor=new CPoint(17,0);
	iMkrO=new CIcon(iMkr,'/images/yp_data_icon_1.png');
	iLoading=new CIcon(null,'/images/loading_map.gif');
	iLoading.iconSize=new CSize(132,136);
	iLoading.iconAnchor=new CPoint(66,68);
	iLoading.infoWindowAnchor=new CPoint(66,0);
}
function POSOver(){
	this.setZIndex(99);
	this.openInfoWindow('<div style="text-align:left;font-size:12px"><b>'+unescape(this.desc)+'</b></div>',new CSize(150,30));
}
function catSearch(cate,seq,p,skip){
	var TR,LB,loc;
	$('#tabs-mapl-2').html('');
	//map.clearOverlays();
	clrMkr();
	rsMkr();
	map.closeInfoWindow();
	if($("input[name='nearby']").get(seq).checked){
		$.each($("input[name='nearby']"),function(i){
			if(i!=seq)$(this).attr('checked','');
		});
		if(map.getZoom()<zmLmt)map.setZoom(zmLmt);
		mkrLoading.setPoint(map.getCenter());
		if(cate!=crtCat){
			crtCat=cate;
			crtRQ='';
		}
		if(!crtRQ){
			crtCat=cate;
			crtSeq=seq;
			TR=map.getBounds().getNorthEast();
			LB=map.getBounds().getSouthWest();
			crtRQ='addclass='+cate+'&minx='+LB.lng().toFixed(6)+'&miny='+LB.lat().toFixed(6)+'&maxx='+TR.lng().toFixed(6)+'&maxy='+TR.lat().toFixed(6)+'&count='+perPage+'&page=';
		}
		crtPG=p;
		request='http://'+hiPageSearch_IP+'/OES/clsOesQueryByMap.asp?'+crtRQ+crtPG+'&key='+$.cookie('key');
					$.getJSON(request, function(data){
						showMarkers(data);
					});
	}
	else{
		$('#tabs-mapl-2').html('');
		//map.clearOverlays();
		clrMkr();
		rsMkr();
	}
}
function showMarkers(jsonObj){
	GAKeyword('search_by_map');
	var LB,TR,mkr,bt;
	mkrLoading.setPoint(new CLatLng(0, 0));
	var l=jsonObj.ResultSet.totalResultsReturned;
	var tor=jsonObj.ResultSet.totalResultsAvailable;
	var curp=jsonObj.ResultSet.page;
	if(l!=0){
		var c;
		if(jsonObj.ResultSet.addclass=='')
			c=2;
		else
			c=1;
		selectTabs('tabs-mapl-li2', 'tabs-mapl-board', 'tabs-mapl-2', 'yp_index_map_tab_selected');
		var tmp=jsonObj.ResultSet.Result;
		var html='<div class="yp_map_search_result"><div class="yp_map_search_result_c1">共找到 <b>'+tor+'</b> 筆店家資料。</div>';
		html+=paging(tor,curp,c);
		map.setCenter(new CLatLng(parseFloat(jsonObj.ResultSet.SysY),parseFloat(jsonObj.ResultSet.SysX)));
		for(var i=0;i<tmp.length;i++){
			bt="";
			mkr=new CMarker(new CLatLng(parseFloat(tmp[i].lat),parseFloat(tmp[i].longt)),{icon:iMkr,clickable:true,draggable:false});
			if(tmp[i]._url)
			  bt+="<span class='yp_content_small_button'><A href='http://" + tmp[i]._url + "' TARGET='_new'>網站</A></span> ";
			if(tmp[i].webpage_url)
			  bt+="<span class='yp_content_small_button'><A href='http://hipage.hinet.net/" + tmp[i].webpage_url + "' TARGET='_new'>網頁</A></span> ";
			if(tmp[i].email)
			  bt+="<span class='yp_content_small_button'><A href='mailto:" + tmp[i].email  + "'>E-mail</A></span> ";
			
			mkr.desc1='<div style="text-align:left;font-size:12px"><b><a href='+tmp[i].op+' target=_new>'+unescape(tmp[i].user1)+'</a></b><br><img border=0 src=http://'+ImgServer+'/iat/'+tmp[i].origarea+'/'+tmp[i].seq+'_3.gif'+'><br>'+unescape(tmp[i].address)+'</div>';
			html+='<div name="map_rs" class="yp_map_category_list" onmouseover="this.className=\'yp_map_category_list_hov\';focusMkr('+i+')" onmouseout="this.className=\'yp_map_category_list_out\';unfocusMkr('+i+')" onMouseOver="this.className=\'yp_map_category_list_hov\'" onMouseOut="this.className=\'yp_map_category_list_out\'">';
			html+='<div class="yp_map_search_result_t1">'+(i+1+((curp-1)*perPage))+'. <a href='+tmp[i].op+' target="_new">'+unescape(tmp[i].user1)+'</a></div>';
			html+='<div><img border=0 src=http://'+ImgServer+'/iat/'+tmp[i].origarea+'/'+tmp[i].seq+'_3.gif'+'></div>';
			html+='<div>'+unescape(tmp[i].address)+'</div>'+bt;
			html+='</div>';
			mkr.num=i;
			map.addOverlay(mkr);
			mkr.setText('<p class="black01">'+(i+1+((curp-1)*perPage))+'</p>');

			CEvent.addListener(mkr,"mouseover",MMMOver);
			CEvent.addListener(mkr,"mouseout",MMMOut);
			mkrAy[i]=mkr;
		}
		mkrAy.length=tmp.length;
		$('#tabs-mapl-2').html(html);
	}
	else
		alert('可見範圍無相關店家~');
}
function pageController(p,c){
	if(c==1)
		catSearch(crtCat,crtSeq,p,1);
	else if(c==2)
		kwSearch(p);
}
function paging(tor,curp,c){
	var html='<div class="yp_map_search_p">';
	var rtop=Math.ceil(tor/perPage),top;
	var down=Math.ceil(curp/perNPage)-1;
	down=down*perNPage+1;
	if(rtop>(down+perNPage-1))
		top=down+perNPage-1;
	else
		top=rtop;
	if(down>1)
		html+='<a href="javascript:void(0)" onclick="pageController('+(down-1)+','+c+')"> < </a>';		
	for(var i=down;i<=top;i++){
		if(curp==i)
			html+=i;
		else
			html+='<a href="javascript:void(0)" onclick="pageController('+i+','+c+')"> '+i+' </a>';
	}
	if(rtop>top)
		html+='<a href="javascript:void(0)" onclick="pageController('+(top+1)+','+c+')"> > </a>';
	html+='</div></div>'
	return html;
}
function rsMkr(){
	mkrLoading = newAddMkr(iLoading,'',true,false,999);
	mkr=newAddMkr(iMkrO,'',true,false,500);
	mkr.setText('<p class="black01">*</p>');
}
function newAddMkr(ic,tle,ca,da,zi){
	var tMkr=new CMarker(new CLatLng(0, 0),{icon:ic,title:tle,clickable:ca,draggable:da});
	map.addOverlay(tMkr);
	if(typeof(zi)=='number')tMkr.setZIndex(zi);
	return tMkr;
}
function MMMOver(){
	if(!checkRangeSin(this,crtCB.getSouthWest(),crtCB.getNorthEast()))map.setCenter(new CLatLng(this.getPoint().lat(),this.getPoint().lng()));
	if(tmpMkr){
		tmpMkr.setZIndex(tmpMkr.intZIndex);
		tmpMkr.setIcon(iMkr);
	}
	this.intZIndex=this.getZIndex();
	this.setZIndex(1);
	this.setIcon(iMkrO);
	this.openInfoWindow('<div class=maplist>'+this.desc1+'</div>');
	tmpMkr=this;
	if(mref){
		$('div[name=map_rs]:eq('+this.num+')').toggleClass('yp_map_category_list_hov').toggleClass('yp_map_category_list_out');
		$('#tabs-mapl-2').get(0).scrollTop=this.num*55;
	}
}
function MMMOut(){
	if(mrefo)$('div[name=map_rs]:eq('+this.num+')').toggleClass('yp_map_category_list_hov').toggleClass('yp_map_category_list_out');
}
function unfocusMkr(idx){
	var obj=mkrAy[idx];
	if(obj){
		mrefo=0;
		CEvent.fire(obj,'mouseout');
		mrefo=1;
	}
	else map.closeInfoWindow();
}
function focusMkr(idx){
	var obj=mkrAy[idx];
	if(obj){
		mref=0;
		CEvent.fire(obj,'mouseover');
		mref=1;
	}
	else
		map.openInfoWindow(map.getCenter(),NF6,new CSize(150,30));
}
function mapMoveEnd(){
	$('#map').css('cursor','Default');
	if(ms){
		if(map.getZoom()<zmLmt)map.setZoom(zmLmt);
		rsMkr();
		hideCM();
		$('#msg1').hide();
		var obj=$('#mapSr');
		var objP=map.fromLatLngToDocPixel(map.getCenter());
		obj.css('left',objP.x-150+"px").css('top',objP.y-20+document.documentElement.scrollTop+"px").show();
		$('#key').get(0).focus();
		ms=0;
	}
	crtCB=map.getBounds();
}
function hideCM(){
	$('#contextMenu').hide();
	mkr.setPoint(new CLatLng(0,0));
	cgMapMenu(99,'menuFnc');
}
function showCM(m,p){
	var obj=$('#contextMenu');
	map.closeInfoWindow();
	var CMLatLng=map.fromDivPixelToLatLng(new CPoint(p.x,p.y));
	mkr.setPoint(CMLatLng);
	var CP=map.fromLatLngToDocPixel(CMLatLng);
	obj.css('top',CP.y+document.documentElement.scrollTop+'px');
	obj.css('left',CP.x+'px');
	obj.css('display','inline');
	obj=null;
}
function cgMapMenu(s,n){
  $("td[name='"+n+"']").each(function(i){
		if(i==s){
			$(this).css('backgroundColor','#ffae06');
			$(this).css('cursor','pointer');
		}
		else
			$(this).css('backgroundColor','#FEE79F');
  });
}
function clrMark(){
	//map.clearOverlays();
	clrMkr();
	rsMkr();
	selectTabs('tabs-mapl-li1', 'tabs-mapl-board', 'tabs-mapl-1', 'yp_index_map_tab_selected')
	map.openInfoWindow(map.getCenter(),'已清除附近店家!',new CSize(150,30));
	$("input[name='nearby']").attr('checked','');
	$('#tabs-mapl-2').html('');
	hideCM();
	crtRQ="";
}
function clrMkr(){
	if(mkrAy){
		for(var i=0;i<mkrAy.length;i++)
			map.removeOverlay(mkrAy[i]);
	}
	map.removeOverlay(mkr);
	map.removeOverlay(mkrAy[i]);
	mkrAy=new Object();
}
function mapMoveStart(){
	map.closeInfoWindow();
	$('#map').css('cursor','Move');
	hideCM();
	$('#mapSr').hide();
}
function mpItf(p){
	if($('#mapSr').css('display')=='block')
		$('#mapSr').hide();
	else{
		map.removeOverlay(mkr);
		ms=1;
		map.panTo(p);
	}
}
function kHandle(e){
	var code=0;
	if(!e)e=window.event;
	if (e.keyCode)code=e.keyCode;
  else if(e.which)code=e.which;
  if(code==13)kwSearch(1);
}
function kwSearch(p){
	$("input[name='nearby']").attr('checked','');
	if($('#key').val().length<2){
		$('#msg1').show();
		$('#key').get(0).focus();
		return false;
	}
	if(map.getZoom()<zmLmt)map.setZoom(zmLmt);
	$('#mapSr').hide();
	var TR,LB,loc;
	$('#tabs-mapl-2').html('');
	//map.clearOverlays();
	clrMkr();
	rsMkr();
	map.closeInfoWindow();
	mkrLoading.setPoint(map.getCenter());
	//if(!crtRQ){
		mkrLoading.setPoint(map.getCenter());
		TR=map.getBounds().getNorthEast();
		LB=map.getBounds().getSouthWest();
		crtRQ='keyword='+escape($('#key').val())+'&minx='+LB.lng().toFixed(6)+'&miny='+LB.lat().toFixed(6)+'&maxx='+TR.lng().toFixed(6)+'&maxy='+TR.lat().toFixed(6)+'&count='+perPage+'&page=';
	//}
	crtPG=p;
	crtCat="";
	request='http://'+hiPageSearch_IP+'/OES/clsOesQueryByMap.asp?'+crtRQ+crtPG+'&key='+$.cookie('key');
	$.getJSON(request, function(data){
		showMarkers(data);
	});
}
function kbHandle(e){
	var code=0;
	if(!e)e=window.event;
	if (e.keyCode)code=e.keyCode;
  else if(e.which)code=e.which;
  if(code==13)locLocating();
}
function locLocating(){
	if($.trim($('#local_Address').val())!=''&&mqa)
		get_longt_lat('local_Address','posSearch',escape($('#local_Address').val()));
	else
		alert('至少輸入地點');
}
function backTo(){
	map.setZoom(loMkr.zoom);
	map.setCenter(loMkr.getPoint());
	CEvent.fire(loMkr,'mouseover');
}
function checkRangeSin(mk,LB,TR){
	if(LB.lat()<mk.getPoint().lat()&& LB.lng()<mk.getPoint().lng()&& TR.lat()>mk.getPoint().lat()&&TR.lng()>mk.getPoint().lng()){	//若在畫面內
		return 1;
	}
	else return 0;
}
function getLL(obj){
	hideCM();
	map.openInfoWindow(obj,'<font size=2>'+llFormat(obj)+'</font>',new CSize(150,30));
}
function llFormat(ll){
	var lalo=ll.toUrlValue().split(',');
	return lalo[1]+' ,'+lalo[0];
}
function GAKeyword(str){pageTracker._trackPageview(str);}