﻿function setMapletContextMenu(){
    var mymenu = new MContextMenu();
    setContextShareMenu(mymenu);
    maplet.setContextMenu(mymenu);
}
function setMarkerContextMenu(myicon){
    var mymenu3 = new MContextMenu();
    var delItem=new MContextMenuItem('删除');
    mymenu3.addItem(delItem);
    MEvent.addListener(delItem, "select", function(item, pt){mymaps.delPoi(myicon.id);});
    var updateItem=new MContextMenuItem('修改信息');
    mymenu3.addItem(updateItem);
    MEvent.addListener(updateItem, "select", function(item, pt){editPoi(myicon.id);});
    setContextShareMenu(mymenu3);
    myicon.setContextMenu(mymenu3);
    
}
function setContextShareMenu(mymenu){
    mymenu.addItem(new MContextMenuItem('放大', "maplet.zoomIn()"));
    mymenu.addItem(new MContextMenuItem('缩小', "maplet.zoomOut()"));
    var item3 = new MContextMenuItem('添加一个点');
    mymenu.addItem(item3);
    MEvent.addListener(item3, "select", function(item, pt){addPoiByLatLon(pt);});
    var item4 = new MContextMenuItem('添加一条线');
    mymenu.addItem(item4);
    MEvent.addListener(item4, "select", function(){setTimeout(function(){setLineMode(function(obj){mymaps.addNewLineCbk(obj);});},100);});
    var item5 = new MContextMenuItem('添加一个面');
    mymenu.addItem(item5);
    MEvent.addListener(item5, "select", function(){setTimeout(function(){setAreaMode(function(obj){mymaps.addNewAreaCbk(obj);});},100);});
}
function addCdataTag(str){
	return "<![CDATA["+str+"]]>";
}
/**
*@describe labelPanel
*/
var drawPanel={
    id:"labelPanel",
    show:function(){
        if($(this.id)){Element.show(this.id);return;}else{this.creatLabelPanelOnMap();}
    },
    hide:function(){
        if($(this.id))Element.hide($(this.id));
    },
    creatLabelPanelOnMap:function(){
        var div=document.createElement("div");
        $("mapbar").appendChild(div);
        div.id=this.id;
        div.setAttribute("unselectable","on");
        rsArr=[];
        rsArr.push("<img title='拖动' style='cursor:pointer'unselectable='on' onmouseup='setTimeout(function(){setMoveMode();},100);' src='"+imageslib+"icon/button/1-over.gif'/>");
        rsArr.push("<img title='标点'  style='cursor:pointer'unselectable='on' onmouseup='setTimeout(function(){setPoiMode(0,function(obj){mymaps.addNewPoiCbk(obj);});},100);' src='"+imageslib+"icon/button/2.gif'/>");
        rsArr.push("<img title='画线'  style='cursor:pointer'unselectable='on' onmouseup='setTimeout(function(){setLineMode(function(obj){mymaps.addNewLineCbk(obj);});},100);' src='"+imageslib+"icon/button/3.gif'/>");
        rsArr.push("<img title='画面'  style='cursor:pointer'unselectable='on' onmouseup='setTimeout(function(){setAreaMode(function(obj){mymaps.addNewAreaCbk(obj);});},100);' src='"+imageslib+"icon/button/4.gif'/>");
        div.innerHTML=rsArr.join("");
        rsArr=[];
    },
    /**
    *ic 0:拖动 1:标点 2：画线 3：画面
    *state 0:未选中 1：选中
    */
    changeButton:function(ic,state){
        var imgs=$("labelPanel").getElementsByTagName("img");
        for(var i=0;i<imgs.length;i++){imgs[i].src=imageslib+"icon/button/"+(i+1)+".gif";}
        if(ic>-1&&ic<4){
            if(state==0){
                imgs[ic].src=imageslib+"icon/button/"+(ic+1)+".gif";
            }else if(state==1){
                imgs[ic].src=imageslib+"icon/button/"+(ic+1)+"-over.gif";
            }
        }
    }
}

rsUrl="#";
mmUrl="";
/*my maps*/
var mymaps={
	switc:function(type){
        this.switchdiv(type);
        this.changeHash(type);
    },
    switchdiv:function(type){
        if(typeof rs_Panel=="undefined")rs_Panel=$("rsPanel");
        if(typeof mm_Panel=="undefined")mm_Panel=$("mmPanel");
        Element.hide("rsPanel");
        Element.hide("mmPanel");
        var th=$("rsTitle").getElementsByTagName("th");
        for(var i=0;i<th.length;i++){
            th[i].className="";
        }
        th[type].className="th1";
        if(type==1){
            Element.show("mmPanel");
        }else{
//            drawPanel.hide();
            Element.show("rsPanel");
        }
    },
    changeHash:function(type){
		Request = request.init();
        if(Request.ac!="mm"){rsUrl=window.location.hash||"#";}
        else{
			mmUrl=window.location.hash;
		}
        if(type==1){
//            setHash(mmUrl||"#ac=mm",mmUrl==''||!user.checkLogin()?true:false);
            var isGetData=true;
            isGetData=(mmUrl==''||!user.checkLogin())
            setHash(mmUrl||"#ac=mm",isGetData);
        }else{
            setHash(rsUrl,false);
        }
    },
    init:function(){
        if(user.checkLogin()){user.loginInfo();}else{user.notLoginInfo();}
        Request = request.init();
        if(mm_Panel.style.display=="none")this.switchdiv(1);
        if(Request.mapId){mymaps.getMapInfo(Request.mapId);return ;}
        if(Request.ac2==1&&user.checkLogin()){mymaps.addMap();return ;}
        rsArr=[];
        mymaps.clearPoi();
        mymaps.clearLine();
//        if(this.checkLogin()||Request.uid||""!=""){this.loginInit();}
        if(user.checkLogin()){mymaps.loginInit();}
        else{mymaps.notLoginInit();}
    },
    loginInit:function(){
        if(user.checkLogin())user.loginInfo();else{user.notLoginInfo();}
//        targetUrl1="#ac=mm&uid="+user.userId+"";
//        window.location.hash=targetUrl1;
        mm_Panel.innerHTML="";
        rsArr=[];
        rsArr.push("<p><a class='font14' href='javascript:void(0);' onclick='mymaps.addMap();return false;'>创建新地图</a></p>");
        rsArr.push("<p><b class='font14'>我的地图</b></p>");
        rsArr.push("<p id='myMapListPanel'>加载中...</p>");
        mm_Panel.innerHTML=rsArr.join("");
        rsArr=[];
        this.getMapListByUser(user.userId);
    },
    notLoginInit:function(){
        user.notLoginInfo();
        rsArr.push("<table cellPadding=2><tr><td class='font14'><b>在Mapbar地图上创建您的个性地图</b></td></tr>");
        rsArr.push("<tr><td>创建和分享你的世界中的个性，标注出你喜欢的地点。<ul><li>标出你感兴趣的点</li><li>画出线和区域</li><li>添加文字，照片或视频</li><li>发布你的地图</li><li>共享给你的朋友和家人</li></ul></td></tr>");
        rsArr.push("<tr><td><input type=\"button\" class=\"Inp001\" onclick=\"mymaps.addMap();return false;\" value=\"创建一幅地图\"/></td></tr>");
        rsArr.push("<tr><td><a href='javascript:void(0);'onclick='user.createLoginPanel();'>登录</a>并进入你所创建的地图。</td></tr>");
        rsArr.push("<tr><td style='height:35px;'></td></tr>");
		rsArr.push("<tr><td><div id='c_map' style='width:270px;overflow:hidden;'></div></td></tr>");
        rsArr.push("</table>");
        mm_Panel.innerHTML=rsArr.join("");
		this.getCommendMap();
        rsArr=[];
    },
	getCommendMap:function(){
		if(typeof __hotspots_=='undefined'){
			var c_map_cbk=function(){
				mymaps.createCommendMap();
			}
			var url=json_c_map;
			new Transfer.Request(url,{oncomplate:c_map_cbk,id:'_c_map'});
		}else{
			this.createCommendMap();
		}
	},
	createCommendMap:function(){
		if(typeof __hotspots_!='undefined'){
			var rsArr_c_map=[];
			rsArr_c_map.push("<table style='width:270px;'><tr><td class='font14'><b>最新个人地图</b></td></tr>");
			for(var i=0;i<__hotspots_.maphots.length;i++){
				rsArr_c_map.push("<tr><td>");
				var hash="#ac=mm&mapId="+__hotspots_.maphots[i].id;
				rsArr_c_map.push("<a href='"+hash+"' onclick=\"setHash('"+hash+"');return false;\" >"+__hotspots_.maphots[i].name+"</a>");
				rsArr_c_map.push("</td></tr>");
			}
			rsArr_c_map.push("</table>");
			if($("c_map"))$("c_map").innerHTML=rsArr_c_map.join("");
			rsArr_c_map=null;
		}
	},
    errorShow:function(){
        rsArr.push("<table><tr><td><nobr>与服务器通信失败，请稍后再试！</nobr></td></tr>");
        rsArr.push("<tr><td></td></tr>");
        rsArr.push("</table>");
        mm_Panel.innerHTML=rsArr.join("");
        rsArr=[];
    },
    getMapListByUser:function(userId){
		mymap=null;
        Request=request.init();
        var self=this;
        userId=Request.uid||userId;
        Request.pn=Request.pn||1;
        Request.rn=Request.rn||10;
        if(userId==""){self.getMapListCbk();return;}
        var url = "http://www.mapbar.com/mapjson/getMapsJson.jsp?&stype=userid&keyword="+userId+"&pn="+Request.pn+"&rn="+Request.rn+"&r="+Math.random();;
        new Transfer.Request(url,{oncomplate:function(){self.getMapListCbk();},id:'mymaplistsc'});
    },
    getMapListCbk:function(){
		
		if(mmUrl=="")mmUrl='#ac=mm';
		Request=request.init();
        rsArr=[];
        rsArr.push("<table >");
        for(var i=0;typeof mymaplist!="undefined"&&i<mymaplist.maps.length;i++){
            var hash="#ac=mm&mapId="+mymaplist.maps[i].id;
            rsArr.push("<tr><td><a href='"+hash+"' onclick=\"setHash('"+hash+"');return false;\" class='font14'>"+toHtmlStr(mymaplist.maps[i].title)+"</a></td></tr>");
            rsArr.push("<tr><td>"+mymaplist.maps[i].cTime);
            if((typeof Request.uid=="undefined")&&user.userId!=""||user.userId==Request.uid){
                rsArr.push("&nbsp;&nbsp;<a href='javascript:void(0);' class='color7C' onclick=\"if(confirm('确定删除？删除操作不可恢复！')){mymaps.delMap('"+mymaplist.maps[i].id+"');}\">删除</a>");
            }
            rsArr.push("</td></tr>");
        }
        if(typeof mymaplist!="undefined"&&mymaplist.maps.length==0&&mymaplist.ipn==1){
            rsArr.push("<tr><td>您还没有创建地图！</td></tr>");
        }else if(typeof mymaplist!="undefined"&&mymaplist.maps.length==0&&mymaplist.ipn>1){
            Request.pn = mymaplist.ipn-1;
            window.location.hash="#"+request.toHashString(Request);
            return;
        }else if(typeof mymaplist!="undefined"){
            this.mapListPage(mymaplist.ipn,mymaplist.pn,Request.uid||user.userId,"ac=mm&uid");
        }
		rsArr.push("<tr><td style='height:35px;'></td></tr>");
		rsArr.push("<tr><td><div id='c_map' style='width:270px;overflow:hidden;'></div></td></tr>");
        rsArr.push("</table>");
        if($("myMapListPanel"))$("myMapListPanel").innerHTML=rsArr.join("");
		this.getCommendMap();
    },
    mapListPage:function(nPage, tp, strQueryUTF, key){
        if(tp<=1)return;
        var iCurr = parseInt(nPage);
        var nTotalPage = tp;
        var iMinPage = Math.max(1, iCurr - 4);
        var iMaxPage = Math.min(nTotalPage, (iCurr<5?5:iCurr)+4);
        rsArr.push("<tr style='height:30px;'><td align='center'>");
        if (iCurr > 1) {
            var hash="#" + key + "=" + encodeURI(strQueryUTF) + "&pn=" + (iCurr - 1);
            rsArr.push("<a href=' "+hash+"' onclick=\"setHash('"+hash+"');return false;\" class='font14'>\u4E0A\u4E00\u9875</a>");
        }
        for (var ie = iMinPage; ie <= iMaxPage; ie++) {
            if (ie == iCurr) {
                rsArr.push("&nbsp;<b>" + ie + "</b>");
            }else{
                var hash="#" + key + "=" + encodeURI(strQueryUTF) + "&pn=" + ie;
                rsArr.push("&nbsp;<a href='"+hash+"' onclick=\"setHash('"+hash+"');return false;\">" + ie + "</a>");
            }
        }
        if (iCurr < nTotalPage) {
            var hash="#" + key + "=" + encodeURI(strQueryUTF) + "&pn=" + (iCurr + 1);
            rsArr.push("&nbsp;<a  href='"+hash+"' onclick=\"setHash('"+hash+"');return false;\" class='font14'>\u4E0B\u4E00\u9875</a>");
        }
        rsArr.push("</td></tr>");
    },
    getMapInfo:function(mapId,cbk){
        Request=request.init();
        if(rsUrl=="")rsUrl=window.location.hash||"#";//记录搜索结果链接
		Request.ac='mm';
        var self=this;
        mapId=mapId||Request.mapId;
        //if(Request.mapId==undefined||Request.mapId=="")Request.mapId =mapId;
		Request.mapId =mapId;
		mmUrl=request.toHashString(Request);
        setHash(mmUrl,false,true);
		var url ="http://www.mapbar.com/mapjson/getMapInfoJson.jsp?nid="+mapId+"&rn=500&r="+Math.random();
        new Transfer.Request(url,{oncomplate:function(){mymaps.getMapInfoCbk(cbk);},id:'mymapsc'});
    },
    getMapInfoCbk:function(cbk){
        if(typeof mymap=="undefined"||!mymap){
            mymaps.errorShow();return;
        }
        if(user.userId==''&&mymap.Map.ispublic==0){
            this.notLoginInit();
            return;}
		//用户登录，看别人的私有地图，转至自己的初始页面。
        if(user.userId!=mymap.Map.userid&&user.userId!=''&&mymap.Map.ispublic==0){
            mymaps.loginInit();
            return;
        }
        this.clearPoi();
        this.clearLine();
        rsArr=[];
        rsArr.push("<div id='myMapInfo'></div>");
        rsArr.push("<div id='myMapItemsPanel'></div>");
        mm_Panel.innerHTML=rsArr.join("");
        this.setMapViewPanel();
        this.setItems();
        this.mapOperate();
		//气泡自动打开
		viewPoiByPid(Request.markerId);
        if(typeof cbk=="function"){
            cbk();
        }
    },
    delMap:function(mapId){
            var data="<data><share><userId>"+user.userId+"</userId><userIdc>"+user.userIdc+"</userIdc></share><mapInfo><mapid>"+mapId+"</mapid><operate>3</operate></mapInfo></data>";
            myMapAutoSave.save(data,mymaps.init);
    },
    setMapViewPanel:function(){
        rsArr=[];
        rsArr.push("<p></p>");
        rsArr.push("<table width=80% ><tr><td width=70% class='font14'><a href='#ac=mm' onclick=\"setHash('#ac=mm&r="+Math.random()+"');return false;\">我的地图</a> - <a href='#ac=mm&' onclick='mymaps.addMap();return false;'>创建新地图</a>");
        rsArr.push("</td><td width=30% align=right><input type='button' style='display:none;' value='保存' onclick='myMapAutoSave.timer();' id='autoSaveBtn'></td></tr></table>");
        rsArr.push("<p></p><table>");
        rsArr.push("<tr><td><div style='width:280px;overflow:hidden' class='font14'><b>"+toHtmlStr(mymap.Map.title||"")+"</b></div></td></tr>");
        rsArr.push("<tr><td><div style='width:280px;overflow:hidden'>"+toHtmlStr(mymap.Map.content||"")+"</div></td></tr>");
        if(user.userId==mymap.Map.userid&&user.userId!=""){//登录状态时才有
            rsArr.push("<tr><td><a href='#ac=mm' onclick='mymaps.editMap();return false;'>编辑地图名称和描述</a></td></tr>");
        }
        var time="";
		if(typeof mymap!="undefined"&&mymap!=null){time="保存于 "+(mymap.Map.updatetime||mymap.Map.createtime);}
        rsArr.push("<tr><td><em id='mapLastUpdateTime'>"+time+"</em></td></tr>");
//        rsArr.push("<tr><td id='mymapSharePanel'><a href='javascript:void(0);'onclick='mymaps.share();'>分享这幅地图，将页面URL发送给朋友</a></td></tr>");
        rsArr.push("<tr><td><input type=button value=\"复制地址，传给QQ/MSN上的好友\" onclick='menuTools.copyText();'style='width:250px;'></td></tr>");
        rsArr.push("</table></div>");
        $("myMapInfo").innerHTML=rsArr.join("");
    },
    setMapEditPanel:function(operate){
        operate=operate||1;
        var value1="我的地图",value2="",value3=1;map_tags="";
        if(operate==2){
            value1=typeof mymap!="undefined"?mymap.Map.title:"我的地图";
            value2=typeof mymap!="undefined"?mymap.Map.content:"";
            value2=value2.replace(new RegExp("\"","gm"),"'");
            value3=typeof mymap!="undefined"?mymap.Map.ispublic:1;
			map_tags=typeof mymap!="undefined"?mymap.Map.tags:"";
        }
        rsArr=[];
        rsArr.push("<p><table width=80% ><tr><td width=70% class='font14'><a href='#ac=mm' onclick=\"setHash('#ac=mm&r="+Math.random()+"');return false;\">我的地图</a>");
        if(operate!=1)rsArr.push(" - <a href='#ac=mm&' onclick='mymaps.addMap();return false;'>创建新地图</a>");
        rsArr.push("</td><td width=30% align=right><input type='button' value='保存' style='display:none;' onclick='myMapAutoSave.timer();' id='autoSaveBtn'></td></tr></table></p>");
        rsArr.push("<p/><table>");
        rsArr.push("<tr><td class='font14' style='color:#999999'>地图的名称：</td></tr>");
        rsArr.push("<tr><td><input type='text' name='mapTitle' id='mapInput1' style='width:226px;' maxlength=30 onblur=\"this.setAttribute('lock',false);\" onfocus=\"this.setAttribute('lock',true);\" onkeyup='mymaps.saveMap();' value=\""+toHtmlStr(value1)+"\"></td></tr>");
        rsArr.push("<tr><td class='font14' style='color:#999999'>描述：</td></tr>");
		rsArr.push("<tr><td><textarea name='mapDesc'  style='width:226px;height:70px;' value=\""+value2+"\" id='mapInput2' onblur=\"this.setAttribute('lock',false);\" onfocus=\"this.setAttribute('lock',true);\" onkeyup='mymaps.saveMap();'>"+toHtmlStr(value2)+"</textarea><input type='hidden' value="+operate+" name='mapOperate'><input type='hidden' value="+value3+" id='isPublic'></td></tr>");
		rsArr.push("<tr><td class='font14' style='color:#999999'>标签：(生活,足迹)</td></tr>");
        rsArr.push("<tr><td><input type='text' name='map_tags' id='map_tags' style='width:226px;' maxlength=30 onblur=\"this.setAttribute('lock',false);\" onfocus=\"this.setAttribute('lock',true);\" onkeyup='mymaps.saveMap();' value=\""+toHtmlStr(map_tags)+"\"></td></tr>");
		var c_tags = ["轨迹","路书","生活","大杂烩"];
		rsArr.push("<tr><td><span  style='color:#999999'>推荐标签：</span><span>");
		for(var _i = 0;_i<c_tags.length;_i++){
			rsArr.push("<a href='javascript:void(0);'onclick='mymaps.setTag(this.innerHTML)'>"+c_tags[_i]+"</a> ");	
		}
		rsArr.push("<span></td></tr>");
//        rsArr.push("<tr><td><input type='radio' id='isPublicRb1' name='a' "+(value3==0?'checked':'')+" onclick=\";$('isPublic').value=0;mymaps.saveMap();\"><label for='isPublicRb1'>私有</label><input type='radio'  id='isPublicRb2' name='a' "+(value3==1?'checked':'')+" onclick=\";$('isPublic').value=1;mymaps.saveMap();\"><label for='isPublicRb2'>公开</label></td></tr>");
//        rsArr.push("<tr><td>公开的地图将会在共享地图搜索中被搜索到。</td></tr>");
//        rsArr.push("<tr><td id='mymapSharePanel'><a href='javascript:void(0);'onclick='mymaps.share();'>分享这幅地图，将页面URL发送给朋友</a></td></tr>");
        rsArr.push("<tr><td><input type=button value=\"复制地址，传给QQ/MSN上的好友\" onclick='menuTools.copyText();'style='width:250px;'></td></tr>");
        var time="";
		if(typeof mymap!="undefined"&&mymap!=null){time="保存于 "+(mymap.Map.updatetime||mymap.Map.createtime);}
        rsArr.push("<tr><td><em id='mapLastUpdateTime'>"+time+"</em></td></tr>");
		rsArr.push("</table></p>");
        if(operate==1){
        rsArr.push("<table id='mapPrompt'>");
        rsArr.push("<tr><td>选择<img src='"+imageslib+"icon/button/2.gif' style='vertical-align:middle;cursor:pointer;' onmouseup='setTimeout(function(){setPoiMode(0,function(obj){mymaps.addNewPoiCbk(obj);});},100);'>，点击地图，标注您的个性地点</td></tr>");
        rsArr.push("<tr><td>选择<img src='"+imageslib+"icon/button/3.gif' style='vertical-align:middle;cursor:pointer;' onmouseup='setTimeout(function(){setLineMode(function(obj){mymaps.addNewLineCbk(obj);});},100);'>，单击地图开始画线</td></tr>");
        rsArr.push("<tr><td>选择<img src='"+imageslib+"icon/button/4.gif' style='vertical-align:middle;cursor:pointer;' onmouseup='setTimeout(function(){setAreaMode(function(obj){mymaps.addNewAreaCbk(obj);});},100);'>，单击地图开始画面</td></tr>");
        rsArr.push("<tr><td>&nbsp;</td></tr>");
        rsArr.push("<tr><td>提示：您可以使用鼠标右键的菜单，在任何时候开始标注</td></tr>");
        rsArr.push("</table>");
        }
        $("myMapInfo").innerHTML=rsArr.join("");
    },
	setTag:function(value){
		$("map_tags").value=$("map_tags").value+($("map_tags").value?",":"")+value;
		mymaps.saveMap();
	},
    share:function(){
        if($("mymapSharePanel")){
            $("mymapSharePanel").innerHTML="<input id='mymapcopyPanel' type=text style='width:226px;' value='"+window.location.href+"'><br><input type=button value='复制到MSN、QQ' onclick=\"menuTools.copy('mymapcopyPanel');\"> 或者发送<a href=\"mailto:?subject=mapbar&body="+escape(window.location.href)+"\">Email</a>";
        }
    },
    clearMapPrompt:function(){
        var prompt=$("mapPrompt");
        if(prompt)prompt.parentNode.removeChild(prompt);
    },
    setItems:function(){
        this.clearMapPrompt();
        rsArr=[];
        rsArr.push("<table >");
        for(var i=mymap.Items.length-1;i>=0;i--){
            this.addItem("mapItem_"+i,mymap.Items[i].icon,mymap.Items[i].title,mymap.Items[i].content,mymap.Items[i].type) ;
        }
        rsArr.push("</table>");
        $("myMapItemsPanel").innerHTML=rsArr.join("");
    },
    clearItems:function(){
        $("myMapItemsPanel").innerHTML="";
    },
    addMap:function(operate,clearMap){
        //if(!user.checkLogin()){user.createLoginPanel();return;}
        if(typeof clearMap=="undefined")clearMap=true;
        //mymaps.switc(1);
        var Request=request.init();
        Request.mapId=undefined;
        Request.ac2=1;
		mymap=null;//清除
        setHash(request.toHashString(Request),false,true);
//        drawPanel.show();
        if(clearMap){
            this.clearPoi();
            this.clearLine();
        }
        this.createAddMapPanel(operate);
    },
    createAddMapPanel:function(operate){
        operate=operate||1;
        if(!$("myMapItemsPanel")||operate==1){
            this.makeAddMapPanel(operate);
            this.clearItems();
			mymap=null;
        }
        this.switchdiv(1);
    },
    makeAddMapPanel:function(operate){
        rsArr=[];
        rsArr.push("<div id='myMapInfo'></div>");
        rsArr.push("<div id='myMapItemsPanel'></div>");
        mm_Panel.innerHTML=rsArr.join("");
        this.setMapEditPanel(operate);
    },
    viewMap:function(){
        this.setMapViewPanel();
    },
    editMap:function(operate){
        this.setMapEditPanel(operate||2);
    },
    saveMap:function(operate,callback){
        this.getSaveMapInfo(operate);
        if(!myMapAutoSave.getLock()){
            myMapAutoSave.buttonState(0);
            myMapAutoSave.setTimeoutSave(callback);
        }
        if(operate==1){myMapAutoSave.setLock();}   //避免重复添加地图
    },
    getSaveMapInfo:function(operate){
        if(!$("mapInput1"))return;
//        if($("mapInput1").value.replace(new RegExp(" ","gm"),"")==""){$("mapInput1").value="我的地图";}
        var title=$("mapInput1").value;
        if(title.replace(new RegExp(" ","gm"),"")==""){title="我的地图";}
        var desc=$("mapInput2").value;
		var map_tags = $("map_tags").value;
        operate=operate||(document.getElementsByName("mapOperate")[0].value);
        var isPublic=$("isPublic").value;
        try{
        mymap.Map.ispublic=isPublic;
        mymap.Map.title=decodeURIComponent(title);
        mymap.Map.content=decodeURIComponent(desc);
		mymap.Map.tags = decodeURIComponent(map_tags);
        }catch(e){}
		Request=request.init();
		if(operate!=1&&!Request.mapId){operate=1;}
        myMapAutoSave.postBody.map="<mapInfo><operate>"+operate+"</operate><title>"+addCdataTag(title||"我的地图")+"</title><ispublic>"+isPublic+"</ispublic><content>"+addCdataTag(desc)+"</content><tags>"+addCdataTag(map_tags)+"</tags><mapid>"+(operate==1?"":Request.mapId)+"</mapid></mapInfo>";
    },
    mapOperate:function(){
		if(!mapo)return;
        if(mymap.mapinfo.center!=""&&mymap.mapinfo.center!="UFBVA"&&mymap.mapinfo.scale!=""){
            if(typeof maplet != "object"){initMap(mymap.mapinfo.center,mymap.mapinfo.scale);}
            else{
                maplet.centerAndZoom(mymap.mapinfo.center,mymap.mapinfo.scale);
            }
        }
        for(var i=0;i<mymap.Items.length;i++){
            if(mymap.Items[i].type==1){this.addPoi(i);}
            else if(mymap.Items[i].type==2){this.addLine(i);}
            else if(mymap.Items[i].type==3){this.addArea(i);}
        }
		//
//        drawPanel.show();
    },
    addPoi:function(i){
        var obj=new MapPoi();
        obj.type=1;
        //only icon
        obj.tmpMarkerIcon=obj.icon=mymap.Items[i].icon||"/images/icon/pic01.gif";
        obj.strlatlon=mymap.Items[i].strlatlon;
        obj.name=mymap.Items[i].title;
        obj.id=mymap.Items[i].pid;
        obj.city=mapbardis.city;
		if(mymap)obj.allowEdit=(user.userId==mymap.Map.userid);
        obj.description=mymap.Items[i].content;
        window.addPoi(obj,function(){$('mapItem_'+i).id=obj.objId;});
    },
    addLine:function(i){
        var obj=new MapLine();
        obj.type=1;
        obj.lineType=0;
        obj.strlatlon=mymap.Items[i].strlatlon;
        obj.color=mymap.Items[i].color.replace("%23","#").replace("@-j-@","#");
        obj.stroke=mymap.Items[i].width;
        obj.transparency=mymap.Items[i].ts;
        obj.arrow=mymap.Items[i].style||false;
		if(mymap)obj.allowEdit=(user.userId==mymap.Map.userid);
        obj.name=mymap.Items[i].title;
        obj.id=mymap.Items[i].pid;
        obj.description=mymap.Items[i].content;
        window.addLine(obj,function(){$('mapItem_'+i).id=obj.objId;});
    },
    addArea:function(i){
        var obj=new MapLine();
        obj.type=1;
        obj.lineType=1;
        obj.strlatlon=mymap.Items[i].strlatlon;
        obj.color=mymap.Items[i].color.replace("%23","#").replace("@-j-@","#");
        obj.stroke=mymap.Items[i].width;
        obj.transparency=mymap.Items[i].ts;
        obj.arrow=false;//mymap.Items[i].style;
        obj.fill=true;
        obj.bgcolor=mymap.Items[i].fcolor.replace("%23","#").replace("@-j-@","#");
        obj.bgtransparency=mymap.Items[i].fts;
		
		if(mymap)obj.allowEdit=(user.userId==mymap.Map.userid);
        obj.name=mymap.Items[i].title;
        obj.id=mymap.Items[i].pid;
        obj.description=mymap.Items[i].content;
        window.addArea(obj,function(){$('mapItem_'+i).id=obj.objId;});
    },
    addItem:function(trId,imgSrc,title,content,type){
        imgSrc=imgSrc||"/images/icon/pic01.gif";
        if(type==2){imgSrc="/images/icon/line1.gif";}
        else if(type==3){imgSrc="/images/icon/area1.jpg";}
        rsArr.push("<tr id='"+trId+"'><td align=center valign=top style='width:35px;'><img src='"+imgSrc+"'></td><td >");
        rsArr.push("<div style='width:230px;overflow:hidden'><a href='javascript:void(0);'onclick=\"mymaps.openInfoWindow(this);return false;\"'>"+title+"</a></div>");
        rsArr.push("<div style='width:230px;overflow:hidden'>"+content+"</div>");
        /*if(user.userId==mymap.Map.userid&&user.userId!=""){
            rsArr.push("&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:void(0);'onclick='mymaps.delPoi(this.parentNode.parentNode.id);'>删除</a>");
        }*/
        rsArr.push("</td></tr>");
//        rsArr.push("<tr id='"+trId+"_content'><td>&nbsp;</td><td><a>"+mymap.Map.content+"</a></td></tr>");
    },
    addNewPoiCbk:function(obj,type,isNewMap){
		if(isNewMap||!$("myMapInfo")){
			mymaps.createAddMapPanel(1);
			mmUrl="ac=mm&ac2=1";
			setHash("#ac=mm&ac2=1",false,true);
		}
		else{mymaps.switchdiv(1);}
		Request = request.init();
		if(Request.ac!="mm"){
			if(mmUrl=="")mmUrl="ac=mm&ac2=1"
			//mymaps.changeHash(1);
			//setHash("#ac=mm&ac2=1",false,true);
			setHash(mmUrl,false,true);
		}
		if(!$("myMapItemsPanel")){
			mymaps.createAddMapPanel(1);
			mmUrl="ac=mm&ac2=1";
			setHash("#ac=mm&ac2=1",false,true);
		}
		
		mymaps.clearMapPrompt();
        
		
		var panel=$("myMapItemsPanel");
        rsArr=[];
        rsArr.push("<table>");
        var icon=obj.icon,title=obj.name||"标点";
        if(type==2){title=obj.name||"画线";}
        else if(type==3){title=obj.name||"画面";}

        this.addItem(obj.marker.id,icon,title,obj.description||"",type);
        rsArr.push("</table>");
        panel.innerHTML+=rsArr.join("");
        rsArr=[];
        obj.state=1;//新增
        myMapAutoSave.insert(obj.marker.id);
        //进入编辑模式
        editPoi(obj.marker.id);
    },
    addNewLineCbk:function(obj,type){
        obj.lineType=0;
        this.addNewPoiCbk(obj,2);
    },
    addNewAreaCbk:function(obj,type){
        obj.lineType=1;
        this.addNewPoiCbk(obj,3);
    },
    delPoi:function(MMid){
        if(!confirm("删除操作无法复原，请确认！")){return ;}
        maplet.hideBubble();
        var i = getPoiIndexByObjId(MMid);
        if(i!=-1){//del poi
            var poiMarker = PoiArr[i].marker;
            maplet.removeOverlay(poiMarker);
            if(PoiArr[i].id == 0 && PoiArr[i].state==1&&PoiArr[i].lock==0){PoiArr.splice(i,1);}
            else if(PoiArr[i].id != 0||PoiArr[i].lock==1){PoiArr[i].state=3;}
        }else {
            i = getLineIndexByObjId(MMid);
            if(i!=-1){
                var lineMarker=LineArr[i].marker;
                maplet.removeOverlay(lineMarker);
                if(LineArr[i].id == 0 && LineArr[i].state==1){LineArr.splice(i,1);}
                else if(LineArr[i].id != 0){LineArr[i].state=3;}
            }
        }
        maplet.refresh();
        var node=$(MMid);
        if(node.parentNode){
            node.parentNode.removeChild(node);
        }
        myMapAutoSave.insert(MMid);
        myMapAutoSave.timer();
    },
    /*obj:poiObject setEditMode callBack*/
    updatePoi:function(poiObj){

        myMapAutoSave.insert(poiObj.objId);
    },
    updateLine:function(LineObj){
        myMapAutoSave.insert(LineObj.objId);
    },
    clearPoi:function(){
        if(typeof maplet=="object"){delPoiByType(1);maplet.hideBubble();}
    },
    clearLine:function(){
        if(typeof maplet=="object")delLineByType(1);
    },

    openInfoWindow:function(obj){
        var mmid= obj.parentNode.parentNode.parentNode.id;
        viewPoi(mmid);
		//记录状态
		var _obj = getObjByObjId(mmid);
		if(_obj){
			Request = request.init();
			Request.markerId=_obj.id;
			setHash(request.toHashString(Request),false);
		}
    }
}
var myMapAutoSave={
    myMapArr:[],
    myMapArrBak:[],
    postBody:{
        map:'',
        items:''
    },
    lock:false,
    proxy:autoSaveUrlProxy||"",
    insert:function(objId){
        //if(!user.checkLogin()){return;}
        //if the contener of mymap is blank ,autosave
        for(var i=0;i<this.myMapArr.length;i++){
            if(this.myMapArr[i]==objId){return;}
        }
        this.myMapArr.push(objId);
        this.buttonState(0);
        this.setTimeoutSave();
    },
    //延时自动保存
    setTimeoutSave:function(callback){
		//如果没有登录，不触发自动保存程序，只有手动有效。
		if(!user.checkLogin()){return;}
        if(!this.getLock()){
			if(typeof autoSaveTimer=="undefined"||autoSaveTimer==null)
            autoSaveTimer=setTimeout(function(){myMapAutoSave.timer(callback);autoSaveTimer=null;},10000);
        }
    },
    setLock:function(){
        this.lock=true;
    },
    //解锁
    setUnlock:function(){
        this.lock=false;
    },
    getLock:function(){
        return this.lock;
    },
    //auto save function
    timer:function(callback){
		//if(!user.checkLogin()){user.createLoginPanel();return;}
        var Reqeust=request.init();
        this.buttonState(1);
        if(this.checkState()){  //判断是否有需要保存的数据
            return;
        }
        this.myMapArrBak=this.myMapArr; //备份操作
        for(var i=0;i<this.myMapArr.length;i++){
            var type=1;//poi 1 line 2 area 3
            var operate=1;  //insert 1 update 2 del 3
            var title='',content='',pid=0,strlatlon='',mmId='',icon='';
            var z=getPoiIndexByObjId(this.myMapArr[i]);
            if(z!=-1){ //点
                title=PoiArr[z].name;
                content=PoiArr[z].description;
                mmId=PoiArr[z].objId;
                pid=PoiArr[z].id;
                strlatlon=PoiArr[z].strlatlon;
                icon=PoiArr[z].icon;
                if(pid==0){operate=1;}
                else{operate=PoiArr[z].state;}
                PoiArr[z].lock=1;
            }else{   //线 or 面
                z=getLineIndexByObjId(this.myMapArr[i]);
                if(z==-1){continue;}
                if(LineArr[z].lineType==0){type=2;}
                else if(LineArr[z].lineType==1){type=3;}
                title=LineArr[z].name;
                content=LineArr[z].description;
                mmId=LineArr[z].objId;
                pid=LineArr[z].id;
                strlatlon=LineArr[z].strlatlon;
                if(pid==0){operate=1;}
                else{operate=LineArr[z].state;}
                LineArr[z].lock=1;

            }
            var item="<item><operate>"+operate+"</operate><type>"+type+"</type>";
            if(title.length>0)item+="<title>"+addCdataTag(title)+"</title>";
            item+="<content>"+addCdataTag(content)+"</content><pid>"+pid+"</pid><strlatlon>"+addCdataTag(strlatlon)+"</strlatlon><icon>"+addCdataTag(icon)+"</icon><markerId>"+addCdataTag(mmId)+"</markerId>";
            if(type!=1){
                item+="<color>"+addCdataTag(LineArr[z].color.replace("#","@-j-@"))+"</color><stroke>"+addCdataTag(LineArr[z].stroke)+"</stroke><transparency>"+addCdataTag(LineArr[z].transparency)+"</transparency><arrow>"+addCdataTag(LineArr[z].arrow)+"</arrow>";

            }
            if(type==3){
                item+="<bgColor>"+addCdataTag(LineArr[z].bgcolor)+"</bgColor><bgTransparency>"+addCdataTag(LineArr[z].bgtransparency)+"</bgTransparency>";
            }
            item+="<mapId>"+Reqeust.mapId+"</mapId></item>";
            this.postBody.items+=item;
        }
        this.myMapArr=[];
        if(!$('mapInput1')){this.postBody.map='';}//通过判断mapinput1来判断 map是否处于编辑模式
        mymaps.getSaveMapInfo();
		var userid=(typeof mymap!="undefined"&&mymap&&mymap.Map)?mymap.Map.userid:user.userId;
        var data="<data><share><userId>"+addCdataTag(userid)+"</userId><userIdc>"+addCdataTag(user.userIdc)+"</userIdc><ip>@-ip-@</ip></share>"+this.postBody.map+"<marker>"+this.postBody.items+"</marker></data>";
		data=data.replace(new RegExp("'","gm"),"\"");
        this.save(data,callback);
        this.postBody.map=''; //清数据
        this.postBody.items='';
    },
    buttonState:function(type){
        if(!$('autoSaveBtn'))return;
        Element.show('autoSaveBtn');
        if(type==1){$('autoSaveBtn').disabled='disabled';}
        if(type==0){$('autoSaveBtn').disabled='';}
    },
    save:function(data,callback){
        callback=callback||this.saveCbk;
        data="encode=utf-8&postData="+encodeURIComponent(data);
        new Ajax.Request(this.proxy,{method:'post',parameters:data,onComplete:callback});
    },
    saveCbk:function(obj){
		//如果没有登录
		if(obj.responseText.replace(new RegExp("\r\n","gm"),"")==""){
			mymaps.getSaveMapInfo();
			//获取点信息
            for(var i=0;i<myMapAutoSave.myMapArrBak.length;i++){
                myMapAutoSave.myMapArr.push(myMapAutoSave.myMapArrBak[i]);
            }
            myMapAutoSave.myMapArrBak=[];
			if(!myMapAutoSave.checkState())myMapAutoSave.buttonState(0);//手动保存模式
			//if(!user.checkLogin()){user.createLoginPanel();return;}
			user.createLoginPanel();
			user.handleStack.push("myMapAutoSave.timer();");
			return;

		}
        eval(obj.responseText);
        if(AutoSaved.saved=="true"){
            myMapAutoSave.myMapArrBak=[];
            if(myMapAutoSave.checkState())myMapAutoSave.buttonState(1);//保存成功使button 处于不能点击状态
            if(poiInfo&&poiInfo.mapId!=""){   //改变地址栏
                Request=request.init();
                Request.ac="mm";
                Request.mapId=poiInfo.mapId;
                setHash(request.toHashString(Request),false);
                document.getElementsByName("mapOperate")[0].value=2;
            }

            myMapAutoSave.updatePois();  //添加点(线)或者修改时，更新数据中点线的状态。
            if($("mapLastUpdateTime"))$("mapLastUpdateTime").innerHTML= "保存于 "+AutoSaved.saveDate; //更新 保存时间
//            if(!myMapAutoSave.checkEditMapState()){mymaps.viewMap();} //如果光标不在地图编辑输入区时，转换为地图浏览模式
        }else{
            //获取地图编辑信息
            mymaps.getSaveMapInfo();
            //获取点信息
            for(var i=0;i<myMapAutoSave.myMapArrBak.length;i++){
                myMapAutoSave.myMapArr.push(myMapAutoSave.myMapArrBak[i]);
            }
            myMapAutoSave.myMapArrBak=[];
            if(!myMapAutoSave.checkState())myMapAutoSave.buttonState(0);//手动保存模式
        }
        myMapAutoSave.setUnlock();
    },
    checkState:function(){
        if($("mapInput1")&&$("mapInput1").value=='')return false;
        return  this.checkEmpty();
    },
    checkEmpty:function(){
        return   this.myMapArr.length==0&&this.postBody.map=='';//没有需要保存的数据
    },
    //if  cursor in ,then return true;
    checkEditMapState:function(){
        if(!$('mapInput1'))return false;
        return true;

        var a1=$('mapInput1').getAttribute("lock");
        var a2=$('mapInput2').getAttribute("lock");
        return a1=="true"||a2=="true";
    },
    updatePois:function(){
        if(typeof poiInfo ==undefined)return;
        for(var i=0;i<poiInfo.item.length;i++){
            var j=getPoiIndexByObjId(poiInfo.item[i].markerid);
            if(j!=-1){PoiArr[j].id=poiInfo.item[i].pid;
                PoiArr[j].lock=0;
                if(PoiArr[j].state!=1){this.myMapArr.push[poiInfo.item[i].markerid];}
            }else{
                j=getLineIndexByObjId(poiInfo.item[i].markerid);
                if(j==-1)continue;
                LineArr[j].id=poiInfo.item[i].pid;
                LineArr[j].lock=0;
                if(LineArr[j].state!=1){this.myMapArr.push[poiInfo.item[i].markerid];}
            }
        }
    }
}
function winUnload(){
    if(ie)return;
    if(myMapAutoSave.checkEmpty()){return;};
    var e = winUnload.arguments[0] || window.event;
    e.returnValue = "您的地图信息尚未保存，离开将导致信息丢失。建议您先保存！";
}
Event.observe(window,"beforeunload",winUnload);

