
var idlist=[];
var localeExt='';
if(o_locale=='zh_tw'){
	localeExt='_'+o_locale;
}

function mapLoader(){
	var omapApi=new omap.Api('map');			//以外部js的方式传递参数
	popomap.config.setEvent('onmousedown',mymousedown);
	//popomap.setEvent('onmousemove',mymousemove);
	popomap.config.setEvent('onmouseup',mymouseup);
	popomap.config.setEvent('onAreaClick',myAreaClick);
	popomap.config.setEvent('onUnitClick',myUnitClick);
	popomap.config.setEvent('customFun',myCustomFun);
	popomap.config.setScreenOption({page:'member/note.jspa?_flowId=mine-search',params:[map]});
	popomap.config.addStyle('css1','css/skin3/map.css');
	omapApi.onMapStatus('ready',onMapReady);	//当地图准备好以后可以进行一些设置
	omapApi.createMap('mapDiv');					//创建地图
}
//在地图状态为"ready"时设置地图上的事件、样式、开关等
function onMapReady(){
	omapUtils.setVirtuals();
	idexMenu.regSigns();
	setTimeout(doMap,1);
	//popomap.setMapTip('<img src="images/map/rightTip.gif">');
	//crossApi.init();
	//crossApi.setListener(doAction);
}
//地图加载完成后的一些操作，如显示某个单位
function doMap(){
	switch(mapAction.action){
		case 'showResult':
			showResult(mapAction.argu[0],mapAction.argu[1]);
			break;
		case 'showNote':
			showNote(mapAction.argu[0]);
			break;
		case 'doRight':
			popomap.init(0,0,true);
			doRight(mapAction.argu);
			break;
		case 'action':
			doMapAction(mapAction.argu);
			break;
		default:
			loadXY();
			break;
	}
	if(loginStatus){
		navUtils.loadNote(true);
	}
}
function doMapAction(argu){
	var action=argu[0];
	var param1=argu[1];
	var param2=argu[2];
	var param3=argu[3];
	switch(action){
		case 'game':
			popomap.init(0,0,true);
			navUtils.openGame();
			break;
		case 'showPop':
			var x=parseInt(param1);
			var y=parseInt(param2);
			var content=param3;
			showPop(x,y,content);
			popomap.init(x,y,true);
			break;
		case 'traffic':
			searchTraffic(param1,param2,param3);
			popomap.init(0,0,true);
			break;
		case 'yp':
			searchYp(param1);
			popomap.init(0,0,true);
			break;
		case 'channel':
			rightOpen(param1);
			break;
		default:
			break;
	}
}
function doRight(argu){
	var right=argu[0];
	var unit=argu[1];
	var param1=argu[2];
	var params='city='+city+'&province='+province+'&map='+map+'&host='+host;
	switch(right){
		case '1':
			rightOpen(ui.getUrl('index'));
			break;
		case '2':
			rightOpen(ui.getUrl('infoIndex'),3,0);
			break;
		case '3':
			rightOpen(ui.getUrl('typelist'));
			break;
		case '4':
			var url=ui.getUrl('unitjoin3',{unit:unit});
			rightOpen(url);
			break;
		case '5':
			var url=decodeURIComponent(param1+'&locale='+o_locale+'&'+params);
			rightOpen(url);
			break;
		case 'tour':
			var url='gztour.htm?pos='+param1;
			rightOpen(url,3,6);
			break;
		case 'news':
			ui.changePanel(1);
			break;
		default:
			//rightOpen(ui.getUrl('index'));
			break;
	}
}
function searchTraffic(param1,param2,param3){
	var url='';
	switch(param1){
		case 'twoAddress':
			var start=encodeURIComponent(param2);
			var end=encodeURIComponent(param3);
			url='traffic/search.jspa?map='+map+'&start='+start+'&end='+end;
			break;
		case 'line':
			var type='b';
			if(param2!='bus') type='s';
			url='traffic/line.jspa?_flowId=viewByName&map='+map+'&type='+type+'&name='+param3;
			break;
		case 'station':
			var station=encodeURIComponent(param2);
			url='traffic/station.jspa?_flowId=listByName&map='+map+'&name='+station;
			break;
	}
	rightOpen(url);
}
function searchYp(keyword){
	keyword=encodeURIComponent(keyword);
	var url='newmap/map.jspa?_flowId=map&map='+map+'&keyword='+keyword;
	rightOpen(url);
}

function mymousedown(evt){
}
function mymousemove(evt){
	window.status=popomap.getCurX(evt)+':'+popomap.getCurY(evt);
}
function mymouseup(evt){
	var actionSet=getActionSet();
	if(actionSet=='') return;
	//var s=60*popomap.getZoom();
	popSet['X']=Math.round(popomap.getCurX(evt));
	popSet['Y']=Math.round(popomap.getCurY(evt));
	if(popSet[actionSet]){
		htmlStr=popSet[actionSet];
		htmlStr=htmlStr.replace('{$X}',popSet['X']);
		htmlStr=htmlStr.replace('{$Y}',popSet['Y']);
	}

	if(evt.button==2){
		switch(actionSet){
			case 'addNote':
				addNote();
				break;
			case 'addErr':
				addErr(popSet['X'],popSet['Y']);
				break;
			case 'addPost':
				addPost();
				break;
			case 'getPosXY':
				getPosXY();
				break;
			case 'setSmart':
				setSmart();
				break;
			case 'getPtInfo':
				getPtInfo();
				break;
			case 'getPointInfo':
				getPointInfo();
				break;
			default:
				break;
		}
	}
	isEntity=false;
}
function myAreaClick(evt){
	isEntity=true;
	return;
	//alert(popomap.getAreaUnitInfo().AreaName+'/'+popomap.getAreaUnitInfo().AreaID+':'+popomap.getAreaUnitInfo().UnitName+'/'+popomap.getAreaUnitInfo().UnitID);
	posx=popomap.getAreaUnitInfo().x;
	posy=popomap.getAreaUnitInfo().y;
	createHistory(popomap.getAreaUnitInfo().AreaID,0,posx,posy,popomap.getAreaUnitInfo().AreaName);
}
function myUnitClick(evt){return;
	//alert(popomap.getAreaUnitInfo().AreaName+'/'+popomap.getAreaUnitInfo().AreaID+':'+popomap.getAreaUnitInfo().UnitName+'/'+popomap.getAreaUnitInfo().UnitID);
	posx=popomap.getAreaUnitInfo().x;
	posy=popomap.getAreaUnitInfo().y;
	createHistory(popomap.getAreaUnitInfo().AreaID,popomap.getAreaUnitInfo().UnitID,posx,posy,popomap.getAreaUnitInfo().UnitName);
}


function loadXY(){
	var str=(document.location.href).split('?');
	var xy=str[1],x=0,y=0;
	if(xy){
		xy=xy.split(',');
		if(xy[0]&&xy[1]){
			x=parseInt(xy[0]);
			y=parseInt(xy[1]);
			switchNavView(0);
		}
	}
	popomap.init(x,y,true);
	popomap.createPop('popAnchor','<img src="/images/flag.gif">',x,y,0,17,5);
}


function showStation(id,x,y,name,signType){
	if(!x||!y) return;
	if(getNavStatus()) {switchNavView(0);popomap.init(x,y);}
	popomap.removePop('lineSt2');
	popomap.go2xy(x,y);
	var station={id:id,x:x,y:y,name:name};
	if(signType=='busStation')station.ico='bs_4.gif';
	else station.ico='sw_2.gif';
	popomap.createSignExt(signType,station,{global:true,display:true,idStr:'lineSt2'});
}
function showStationById(id){
	var url='json/traffic.jspa?_flowId=viewStation&id='+id;
	postData(url,null,fun);

	function fun(value){
		if(!value) return;
		var o_jsData={};
		var o=eval('('+value+')');
		var signType='busStation';
		if(o.stationType=='SUBWAY') signType='subwayStation';
		showStation(o.id,o.x,o.y,o.name,signType);
	}
}


function showPop(x,y,content,times){
	if(!times) times=0;
	times++;
	if(times>100) return;
	if(!x||!y) return;
	try{
		var sy=35*Math.pow(2,popomap.getZoom()-1);
		var htmlStr='<div style="border: 1px solid #209FE2;background-color:#59D2FF;padding:3px;font-size:12px;" nowrap>'+content+'</div><img src="images/map/point.gif" width="17px" height="17px">';
		if(getNavStatus()) {switchNavView(0);popomap.init(x,y);}
		popomap.removePop('tempPop');
		popomap.go2xy(x,y);
		popomap.createPopT('tempPop',htmlStr,x,y-sy,0,0,5);
	}
	catch(e){
		var fun='showPop('+x+','+y+',\''+content+'\''+times+')';
		window.setTimeout(fun,100);
	}
}

function transform2Note(){
	//alert(popomap.getAreaUnitInfo().AreaName+'/'+popomap.getAreaUnitInfo().AreaID+':'+popomap.getAreaUnitInfo().UnitName+'/'+popomap.getAreaUnitInfo().UnitID);
	var data=popomap.getAreaUnitInfo();
	var entityId=data.AreaID;
	var unitId=data.UnitID;

	if(unitId){
		url='/resource/js/unit/'+map+'/'+Math.floor(unitId/1000)+'/'+unitId+'.js';
	}
	else{
		url='/resource/js/entity/'+map+'/'+Math.floor(entityId/1000)+'/'+entityId+'.js';
	}

	postData(url,null,fun);

	function fun(value){
		var o=null;
		try{
			if(value){
				o=eval('('+value+')');
			}
			else{
				return;
			}
		}
		catch(e){
			return;
		}
		var params={};
		params.title=o.name;
		params.content=o.intro;
		params.x=o.x;
		params.y=o.y;
		params.map=map;
		params.ico=1;
		addNote2(params);
	}
}
function transformNote2Note(id){
	if(!loginStatus){
		alert('请先登录');
		showLoginPanel(0,'','');
		return;
	}
	var url='note.jspa?id='+id;
	postData(url,null,fun);

	function fun(value){
		var o=null;
		try{
			if(value){
				o=eval('('+value+')');
			}
			else{
				return;
			}
		}
		catch(e){
			return;
		}
		removePop_All();
		delete o[id];
		addNote2(o);
	}
}
function addNote2(params){
	var p={x:params.x,y:params.y};
	var url=ui.getUrl('addNote',p);
	addNote(params.x,params.y,'');

	var form=document.forms['dataForm'];
	form.innerHTML='';
	form.appendChild(object2form(params));
	form.target='addNoteIfr';
	form.action=url;
	form.submit();
}
function object2form(obj){
	var fragment=document.createDocumentFragment();
	for(var item in obj){
		var elm=document.createElement('input');
		elm.type='hidden';
		elm.name=item;
		elm.value=obj[item];
		fragment.appendChild(elm);
	}
	return fragment;
}
function params2str(params){
	var str='';
	for(var item in params){
		str+=item+'='+encodeURIComponent(params[item])+'&';
	}
	if(str.length==0) return str;
	else{
		//str='?'+str;
		return str.substr(0,str.length-1);
	}
}

function around(flag,type,range){
	changePanel(2);
	var x=Math.floor(popomap.getAreaUnitInfo().x/2);
	var y=Math.floor(popomap.getAreaUnitInfo().y/2);
	var params={range:range,x:x,y:y,type:type};
	var url=ui.getUrl('around',params);
	if(flag=='2') url=ui.getUrl('infoaround',params);
	rightOpen(url);
}
function unitjoin(){
	var o=popomap.getAreaUnitInfo();
	var params={entity:o.AreaID,entityName:encodeURIComponent(o.AreaName),centerX:Math.floor(o.x/2),centerY:Math.floor(o.y/2)};
	rightOpen(ui.getUrl('unitjoin',params));
}
function unitjoin2(){
	rightOpen(ui.getUrl('unitjoin2'));
}
function howArrive(value){
	//$('divArrive').style.display='';
	var d=popomap.getAreaUnitInfo();
	var form=document.forms['arrive'];
	form.start.value=value;
	if(d.UnitID){
		form.endType.value='UNIT';
		form.endId.value=d.UnitID;
		form.endName.value=d.UnitName;
	}
	else{
		form.endType.value='ENTITY';
		form.endId.value=d.AreaID;
		form.endName.value=d.AreaName;
	}
	form.endX.value=d.x;
	form.endY.value=d.y;
	doArrive(document.forms['arrive']);
}
function doArrive(form){
	if (isEmpty(form.start.value)){
   	   national.showMsg('%{EmptyFrom:起始不能为空}');
	   //form.from.focus();
       return false;
	}else{
		form.action = ui.getUrl('arrive');
		form.target = 'rightPanel0TargetIfr';
	}
	if(setMapValue(form)) {
		changePanel(0);
		//setPanel2Style();
		form.submit();
	}
}
function remove_howArrive(){
	$('divArrive').style.display='none';
}
function go2Station(x,y){//temp
	omapApi.go2xyS(x,y);
	omapApi.removePop('o_ifr_stationPop');
}
var upFlag=null;
function setSmartOpen(type){
	if(upFlag!=null){
		national.showMsg('%{ActionHalt:前面的操作未完成}');
		return false;
	}
	setActionSet('setSmart');
	if(type=='from'){
		upFlag=0;
	}
	else if(type=='to'){
		upFlag=1;
	}
	return true;
}
function setSmartClose(type){
	cleanActionSet();
	if(type=='from'){
		popomap.removePop('setSmartStart');
	}
	else if(type=='to'){
		popomap.removePop('setSmartEnd');
	}
	else{
		popomap.removePop('setSmartStart');
		popomap.removePop('setSmartEnd');
	}
	upFlag=null;
}
function setSmart(){
	cleanActionSet();
	var x=popSet['X'];
	var y=popSet['Y'];
	var coor={x:x,y:y};
	//popomap.invokeFun('findStation',x,y,fun);
	if(upFlag==0){
		var htmlStr='<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/map/start.png);width:63px;height:41px"></div>';
		if(window.brw!='ie') htmlStr='<img src="images/map/start.png" width=63 height=41 border=0>';
		popomap.removePop('setSmartStart');
		popomap.createPop('setSmartStart',htmlStr,x,y,20,41,5);
		ifrRight.setFromPos(coor);
		upFlag=null;
	}
	else if(upFlag==1){
		var htmlStr='<div style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=images/map/end.png);width:63px;height:41px"></div>';
		if(window.brw!='ie') htmlStr='<img src="images/map/end.png" width=63 height=41 border=0>';
		popomap.removePop('setSmartEnd');
		popomap.createPop('setSmartEnd',htmlStr,x,y,20,41,5);
		ifrRight.setToPos(coor);
		upFlag=null;
	}
	function fun(value){
		if(!value){
			alert('附近没有找到公交车站,请重新设置');
		}
	}
}
var hisTotal=0;
var posx=0,posy=0;
function createHistory(aid,uid,x,y,name){
	var parNode=$('tdHistory');
	var children=parNode.getElementsByTagName('a');
	for(var i=0;i<children.length;i++){
		if(children[i].style._aid==aid&&children[i].style._uid==uid)
			return;
	}
	var a=document.createElement('a');
	var b=document.createElement('br');
	a.style._aid=aid;
	a.style._uid=uid;
	a.className='b1';
	a.href='javascript:gotoTarget('+x+','+y+','+aid+','+uid+')';
	a.innerHTML=name;
	parNode.insertBefore(b,parNode.firstChild);
	parNode.insertBefore(a,parNode.firstChild);
}
function drawRoadLine(id){
	var mapData={simpleLabel:{}};
	switchNavView(0);
	cleanLine();
	$('divMapClear').style.display='';
	var url='/resource/js/simplelabel/'+map+'/'+Math.floor(id/1000)+'/'+id+'.js';
	var line=eval('('+postData(url)+')');
	var xs=line.xs;
	var ys=line.ys;
	var x=xs.split(',')[0];
	var y=ys.split(',')[0];
	var o={id:id,x:x,y:y,xs:xs,ys:ys,strokeweight:5,autoZoom:true};
	popomap.go2xyS(x,y);
	popomap.drawLine(o);
}

function mapClear(){
	setSmartClose();
	//cleanLine();
	trafficUtils.clear();
	cleanUserPop();
}
function cleanLine(){
	popomap.destroyAllG();
	for(var i=0;i<idlist.length;i++){
		var id=idlist[i];
		popomap.removePop(id);
	}
	idlist=[];
	//setSmartClose();
	$('divMapClear').style.display='none';
}


function drag(obj,src){
	src.onmousedown=function(evt){
		if(!evt) evt=window.event;
		var d=document;
		var x=evt.clientX-obj.offsetLeft;
		var y=evt.clientY-obj.offsetTop;
		obj.setCapture();
		
		d.onmousemove=function(evt){
			if(!evt) evt=window.event;
			obj.style.left=evt.clientX-x;
			obj.style.top=evt.clientY-y;
		};

		d.onmouseup=function(evt){
			if(!evt) evt=window.event;
			obj.releaseCapture();
			d.onmousemove=null;
			d.onmouseup=null;
		};
	}
}

function checkBrowse(){
	if(!window.XMLHttpRequest){
		window.XMLHttpRequest=function(){
			var xmlHttp=null;
			var progids=['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
			for(var i=0;i<progids.length;i++){
				try{
					xmlHttp=new ActiveXObject(progids[i]);
					break;
				}
				catch(e){}
			}
			if(xmlHttp==null){
				//alert('无法创建对象');
			}
			return xmlHttp;
		};
	}
}
function postData(url,postValue,fun,method,async){
	var xmlObj = null;
	if(window.XMLHttpRequest){
		xmlObj = new XMLHttpRequest();
	}
	else {
		return;
	}
	method=method=='POST'?'POST':'GET';
	async=false;
	if(typeof(fun)=='function')async=true;
	if(async) xmlObj.onreadystatechange = doData;
	xmlObj.open (method, url, async);
	if(method=='POST'){
		//xmlObj.setrequestheader("Content-Length",postValue.length);
		xmlObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	}
	xmlObj.send (postValue);
	if(!async){
		return getData();
	}

	function getData(){
		if(xmlObj.getResponseHeader('Content-Type')=='text/xml')
			return xmlObj.responseXML;
		else
			return xmlObj.responseText;
	}

	function doData(){
		if(xmlObj.readyState!=4){
			return;
		}
		if(xmlObj.status==200){
			fun(getData());
			xmlObj.onreadystatechange=function(){};
			xmlObj.abort();
			xmlObj=null;
			delete xmlObj;
		}
		else{
			fun(null);
			xmlObj.onreadystatechange=function(){};
			xmlObj.abort();
			xmlObj=null;
			delete xmlObj;
		}
	}
}
checkBrowse();

var omapUtils={
	isEnableGame:function(){
		if(gameMap[domain]) return true;
		else return false;
	},
	go2Building:function(id,content,times){//for game
		if(!times) times=0;
		times++;
		if(times>100) return;

		var url='http://'+host+'/resource/js/entity/'+map+'/'+Math.floor(id/1000)+'/'+id+'.js';
		if(popomap.getMapStatus()){
			postData(url,null,fun);
		}
		else{
			utils.common.setTimeout(this.go2Build.bind(this),100,id,content,times);
		}

		function fun(value){
			var x=0,y=0;
			try{
				if(value){
					var o=eval('('+value+')');
					x=o.x;
					y=o.y;
				}
				else{
					return;
				}
			}
			catch(e){
				return;
			}
			if(getNavStatus()) {switchNavView(0);}
			showPop(x,y,content);
		}
	},
	setVirtuals:function(){
		if(typeof(virtuals)=='object'){
			var gameEntityIds={};
			for(var i=0;i<virtuals.length;i++){
				gameEntityIds[virtuals[i]]=1;
			}
			popomap.setValue('gameEntityIds',gameEntityIds);
		}
	},
	showGameRoom:function(id){
		if(!isBodyLoadedWithMessage()) return;
		if(getNavStatus()) {switchNavView(0);}
		return popomap.showMapInfo(id,1,{panel:2});
	},
	goHouse:function(houseId){
		if(!isBodyLoadedWithMessage()) return;
		if(!ui.isFullScren()) ui.fullScreen();
		popomap.hiddenMapInfo();
		gameLib.goHouse(houseId);
	},
	buyHouse:function(houseId){
		if(!isBodyLoadedWithMessage()) return;
		if(!ui.isFullScren()) ui.fullScreen();
		popomap.hiddenMapInfo();
		gameLib.buyHouse(houseId);
	}
};
