﻿var mapWidth = 0;//窗口的宽高
var mapHeight = 0;
var leftTopX = 0;//窗口左上角图片编号
var leftTopY = 0;
var sumX = 0;//加载的图片总数，x方向
var sumY = 0;//加载的图片总数，y方向
var WantShow;//需要打印的图标
var IsLoad;
//获取地图窗口基本信息.
function GetMapInfo(){
    var Mapinfo = MapMethod.getCurrentMapInfo();
    mapWidth = Mapinfo.mapWidth;
    mapHeight = Mapinfo.mapHeight;
    leftTopX = Mapinfo.leftTopX;
    leftTopY = Mapinfo.leftTopY;
    sumX = Mapinfo.sumX;
    sumY = Mapinfo.sumY;
}
//地图移动后加载图标
function onLoadIcon(){
    GetMapInfo();
    if(!IsLoad){    
        MarkList = new Array();
        StopList = new Array();
        WantShow = "";
        if(!xmltext) {
            XMLHttp.sendReq("GET","TypeOperate.xml",null,InitMapIcon,LoadIcon); 
        }
    }else{
        LoadIcon();
    }
}
//初始化图标XML
function InitMapIcon(content,func,obj){
    GetMapInfo();
    xmltext = content.responseXML.documentElement;
    IsLoad = true; 
    if(obj){
        func(obj);         
    }else{     
        func(); 
    }
}
//根据横向和纵向个数加载图标.
function LoadIcon(){
    for(var p=0;p<sumY;p++){    
	    y = leftTopY + p;	    
	    for(var _p=0;_p<sumX;_p++){
		    x = leftTopX + _p;
		    ShowDivMark(x, y);
		    ShowDivStop(x, y);
        }
    } 
}
//显示块上的图标.
function ShowDivMark(x, y){
    if(WantShow != "" && WantShow != "《Stations》"){
        var markInfos = _Default.GetDivMark(x, y).value;
	    if(markInfos != ""){
	        markInfos = eval('(' + markInfos + ')');
		    for(var i=0; i < markInfos.incoMark.length; i++){
		        var objSign = GetContent("id", markInfos.incoMark[i].typeid, "DataBaseCotent");
		        if(WantShow.indexOf("《" + objSign + "》") >= 0){
		            var objimg = GetContent("id", markInfos.incoMark[i].typeid, "imageurl");
		            var objtitle = GetContent("id", markInfos.incoMark[i].typeid, "name");
		            if(markInfos.incoMark[i].param != "") objtitle = markInfos.incoMark[i].param;
			        var coords = markInfos.incoMark[i].coords;
			        objSign += coords;
    			    
		            var objparam = {x:coords.split(',')[0],y:coords.split(',')[1],name:objSign,img:objimg,title:objtitle};////,text:objtitle
                    MapMethod.printInco(objparam);
	            }
		    }
	    }
	}
}
//获取块上的公交站点.
function ShowDivStop(x, y){
    if(WantShow.indexOf("《Stations》") >= 0){
        var StationInfo = _Default.GetDivStation(x, y).value;
        if(StationInfo != ""){
            StationInfo = eval('(' + StationInfo + ')');
            var stopimg = GetContent("DataBase","Stations","imageurl");
	        for(var i=0;i<StationInfo.busStop.length;i++){
		        var coords = StationInfo.busStop[i].coords;
		        if(StationInfo.busStop[i].param){		        
		            var StopSign = "Stations" + coords;
	                var stopparam = {x:coords.split(',')[0],y:coords.split(',')[1],img:stopimg,name:StopSign,title:StationInfo.busStop[i].name,onClick:"ShowStopBuses(" + coords + ")"};
	                MapMethod.printInco(stopparam);
                }
	        }
        }
    }
}
//显示公交线路.
function ShowStopBuses(x, y){
    var id = _Default.GetBusStationIDByLocation(x, y).value;
    if(id != ""){ onSearchBusLine(id); }
    else{ alert('站点数据错误'); }
}
//移除当前地图公交站点.
function RemoveCurrentMapStop(){
	for(var p=0;p<sumY;p++){
	    y = leftTopY + p;
	    for(var _p=0;_p<sumX;_p++){
		    x = leftTopX + _p;
            var StationInfo = _Default.GetDivStation(x, y).value;
            if(StationInfo != ""){
                StationInfo = eval('(' + StationInfo + ')');
	            for(var i=0;i<StationInfo.busStop.length;i++){
		            var coords = StationInfo.busStop[i].coords;
		            if(StationInfo.busStop[i].param){
		                var StopSign = "Stations" + coords;
                        MapMethod.removePrint(StopSign);
                    }
	            }
            }
        }
    }
}
//移除当前地图图标.
function RemoveCurrentMapMark(sign){
	for(var p=0;p<sumY;p++){
	    y = leftTopY + p;
	    for(var _p=0;_p<sumX;_p++){
		    x = leftTopX + _p;
            var markInfos = _Default.GetDivMark(x, y).value;
	        if(markInfos != ""){
	            markInfos = eval('(' + markInfos + ')');
		        for(var i=0; i < markInfos.incoMark.length; i++){
		            var objSign = GetContent("id", markInfos.incoMark[i].typeid, "DataBaseCotent");
		            if(objSign == sign){
		                var coords = markInfos.incoMark[i].coords;
		                objSign += coords;        			    
                        MapMethod.removePrint(objSign);
		            }
		        }
	        }
        }
    }
}
//加载公交图标菜单.
function  StopIconOperate(){
    if(!IsLoad){
        XMLHttp.sendReq("GET","TypeOperate.xml",null,InitMapIcon,onStopIconOperate); 
    }else{
        onStopIconOperate();
    }
}
//加载地图公交.
function onStopIconOperate(){  
    var Stop = document.getElementById("StopImg");
    if(Stop.style.display == "none"){
        Stop.style.display = "block";
        WantShow += "《Stations》";
        LoadIcon();
    }
    else{
        Stop.style.display = "none";
        if(WantShow){
            WantShow = WantShow.replace("《Stations》","");
            RemoveCurrentMapStop();
        }
    }
}
//加载图标菜单.
function  IconOperate(checkImgId, sign){
    var obj = {checkImgId:checkImgId,sign:sign};
    if(!IsLoad){
        XMLHttp.sendReq("GET","TypeOperate.xml",null,InitMapIcon,onIconOperate,obj); 
    }else{
        onIconOperate(obj);
    }
}
//加载图标
function onIconOperate(obj){
    var checkImgId = obj.checkImgId;
    var sign = obj.sign;
    var img = document.getElementById(checkImgId);
    if(img.style.display == "none"){
        img.style.display = "block";
        WantShow += "《" + sign + "》";
        LoadIcon();
    }
    else{
        img.style.display = "none";
        if(WantShow){
            WantShow = WantShow.replace("《" + sign + "》","");
            RemoveCurrentMapMark(sign);
        }
    }
}


var xmltext;
//function InitXML(){
//    if(!xmltext) { XMLHttp.sendReq("GET","TypeOperate.xml",null,inHtmlFirst); }
//}

function GetContent(Byelement,Bycontent,Getelement)
{
    if(!xmltext){ alert('XML未初始化')}
    else {
        var Getcontent = xmltext.selectSingleNode("Type[" + Byelement + "='" + Bycontent + "']/" + Getelement).text;
        return Getcontent;
    }
}

//function inHtmlFirst(obj)
//{
//    xmltext = obj.responseXML.documentElement;
//}


/*
创建xmlHttp对象池
*/
var XMLHttp = {
    _objPool:[],
    _getInstance:function()
    {
        for(var i=0; i<this._objPool.length; i++)
        {
            if(this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
            {
                return this._objPool[i];
            }
        }
        
        this._objPool[this._objPool.length] = this._createObj();
        return this._objPool[this._objPool.length - 1];
    },
    
    _createObj:function()
    {
        var objXMLHttp;
        if(window.XMLHttpRequest)
        {
            objXMLHttp = new XMLHttpRequest();
        }
        else
        {
            objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
        
        //mozilla某些版本没有readyState属性
        if(objXMLHttp.readyState == null)
        {
            objXMLHttp.addEventListener("load",function(){
                objXMLHttp.readyState = 4;
                if(typeof objXMLHttp.onreadystatechange == 'function')
                {
                    objXMLHttp.onreadystatechange();
                }   
            }, false);
        }
        
        return objXMLHttp;
    },
    
    //发送请求(方法[post,get],地址,数据,回调函数)
    sendReq:function(method, url, data, callback,fun,obj)
    {
        var objXMLHttp = this._getInstance();
        with(objXMLHttp)
        {
            try
            {
                //加随机数防止缓存
                if(url.indexOf("?") > 0)
                {
                    url += "&randnum=" + Math.random();
                }
                else
                {
                    url += "?randnum=" + Math.random();
                }
                open(method, url, true);
                setRequestHeader('Content-Type', 'application/x-www-from-urlencoded;charset=UTF-8');
                send(data);
                onreadystatechange = function()
                {
                    if(objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                    {
                        if(typeof callback == 'function')
                        {
                            if(obj){
                                callback(objXMLHttp,fun,obj);
                            }
                            else{
                                callback(objXMLHttp,fun);
                            }
                            
                        }
                    }
                };
            }
            catch(e)
            {
                alert('erroy:' + e);
            }
        }
    }
};

/*----------MapNavigation-------------------------------------------------------------------------*/
function GotoArea(area){
    var x;
    var y;
    if(area == '瑞安') { x=-24736; y=41576; }
    if(area == '龙湾') { x=12008; y=25648; }
    if(area == '鹿城') { x=10416; y=17184; }
    if(area == '瓯北') { x=7608; y=2104; }
    if(area == '瓯海') { x=4032; y=8520; }
    var areaParams = {x:x, y:y, isCurrent:true};
    MapMethod.go(areaParams);
    document.getElementById('MapNav').style.display = 'none';
    document.getElementById('MapNavContent').style.display = 'none';
}

function MapNavclick(){
    var MapNavImg = document.getElementById('MapNav');
    if(MapNavImg.style.display == 'none') {
        MapNavImg.style.display = 'block';
        document.getElementById('MapNavContent').style.display = 'block';
    }
    else {
        MapNavImg.style.display = 'none';
        document.getElementById('MapNavContent').style.display = 'none';
    }
}
