﻿function InfoWindow(poi) {
  this.poi = (poi) ? poi : {cityName:"北京市", name:"", phone:"", latLon:"",address:"",pid:'',myMapButtonDisplay:"none",saveButtonDisplay:'',fixMapButtonDisplay:'none',funsDisplay:'',objId:-1,description:'',icon:'',type:1,transparency:100,stroke:'3',color:'',arrow:'0',fill:1,bgcolor:'',bgtransparency:''};
}
InfoWindow.template=[];
InfoWindow.data=[];

InfoWindow.prototype.getWinText = function() {
  var htmlStr = "";
  htmlStr += this.getData("infowindow0.html").process(this);
  return htmlStr;
}
InfoWindow.prototype.getEditText=function(){
    return this.getData("infowindow1.html").process(this);
}
InfoWindow.prototype.getFeedbackText=function(){
    return this.getData("feedback1.html").process(this);
}

InfoWindow.prototype.getData = function(template){
    template=template||"infowindow0.html";
    var i=this.getTemplateIndex(template);
    if(i!=-1){return InfoWindow.data[i];}
    var templateData=getUrlText(getScriptUrl("infowindow.js").replace("infowindow.js", template));
    if(templateData!=""){
        InfoWindow.template.push(template);
        InfoWindow.data.push(templateData);
    }
    return templateData;
}
InfoWindow.prototype.getTemplateIndex=function(template){
    for(var i=0;i<InfoWindow.template.length;i++){
        if(template==InfoWindow.template[i]){
            return i;
        }
    }
    return -1;
}

function showTipDiv(showDiv,hideDiv){
	if (showDiv) document.getElementById(hideDiv).style.display = "none";
	if (hideDiv) document.getElementById(showDiv).style.display = "";

}
function getScriptUrl(name) {
	var scripts = document.getElementsByTagName("script");
  for (var i = 0; i < scripts.length; i++) {
	  if (scripts[i].src.indexOf(name)>=0) {
	     return  scripts[i].src;
	  }
	}
  return name;
}
function getUrlText(url){
    this.retData="";
    var self=this;
    new Ajax.Request(url,{method:'get',asynchronous:false,onComplete:function(obj){self.retData=obj.responseText;}});
    return self.retData;
}
function inforwindowNearSubmit(url, cid, cityName, latLon, strName,poitype,pid){
    if(validate.checkValue([poitype]))
    setHash("#ac=nb&poitype="+encodeDURI(poitype)+"&city="+encodeDURI(cityName)+"&strlatlon="+latLon+"&name="+encodeDURI(strName,1));
}
function inforwindowMudiFunBus(url, cid, cityName, latLon, name, keyword,pid){
    if(validate.checkValue([keyword]))
    setHash("#ac=bsl"+"&origLatLon="+latLon+"&origName=" + encodeDURI(name,1) + "&destName=" + encodeDURI(keyword,1) + "&city=" + encodeDURI(cityName));
}
function inforwindowMudiFunDriver(url, cid, cityName, latLon, name, keyword,pid){
    if(validate.checkValue([keyword]))
    setHash("#ac=nsl"+"&origLatLon="+latLon+"&origName=" + encodeDURI(name,1) + "&destName=" + encodeDURI(keyword,1) + "&origCity=" + encodeDURI(cityName));
}
function inforwindowChuFaFunBus(url, cid, cityName, latLon, name, keyword,pid){
    if(validate.checkValue([keyword]))
    setHash("#ac=bsl"+"&destLatLon="+latLon+"&destName=" + encodeDURI(name,1) + "&origName=" + encodeDURI(keyword,1) + "&city=" + encodeDURI(cityName));
}
function inforwindowChuFaFunDriver(url, cid, cityName, latLon, name, keyword,pid){
    if(validate.checkValue([keyword]))
    setHash("#ac=nsl"+"&destLatLon="+latLon+"&destName=" + encodeDURI(name,1) + "&origName=" + encodeDURI(keyword,1) + "&origCity=" + encodeDURI(cityName));
}
var bubbleFun={
    addPic:function(obj,mmid){
        try{
            var value=window.prompt("请输入图片路径","http://");
            if(!value)return;
            obj.value+="<img border=0 align=left src="+value+">";
        }catch(e){}
        updatePois2(obj,mmid);
    },
    addMoive:function(obj,mmid){
        try{
            var value=window.prompt("请输入视频(swf)路径","http://");
            if(!value)return;
            obj.value+="<table width=90 height=90><tr><td><object height=90><param name=movie value="+value+"></param><param name=wmode value=transparent></param><embed src="+value+" type=application/x-shockwave-flash wmode=transparent></embed></object></td></tr></table>";
        }catch(e){}
        updatePois2(obj,mmid);
    }
}
function feebackPoi(mmid){
	 var obj=getObjByObjId(mmid);
        if(!obj){return;}
		var imgsrc=obj.icon||"/images/icon/custom/a-5.gif";
		imgsrc=imgsrc.replace("gif1","gif3");

        var poiMarker=obj.marker;
        poiMarker.info.title="";
        poiMarker.info.content = obj.tipInfo.getFeedbackText();
        poiMarker.paint();
		
		poiMarker.info.setZMBtnVisible(false);
        poiMarker.openInfoWindow();
		InfoWindow.changePoiIcon(mmid,imgsrc);
		maplet.refresh();
}
/*bubble edit poi*/
function editPoi(mmid){
        var obj=getPoiByObjId(mmid);
        if(!obj){obj=getLineByObjId(mmid);}
        if(!obj)return;
        var poiMarker=obj.marker;
        poiMarker.info.title="";
        poiMarker.info.content = obj.tipInfo.getEditText();
        poiMarker.paint();
        maplet.refresh();
		poiMarker.info.setZMBtnVisible(false);
        poiMarker.openInfoWindow();
}
function setViewContentC(mmid){
    var obj=getPoiByObjId(mmid);
    if(!obj){obj=getLineByObjId(mmid);}
    if(!obj)return null;
    var poiMarker=obj.marker;
	if(!poiMarker)return null;
    poiMarker.info.title=obj.getMarkerTitle();
    poiMarker.info.content = obj.getMarkerContent();
    poiMarker.paint();
    return poiMarker;
}

/*bubble view poi*/
function viewPoi(mmid){
        var poiMarker=setViewContentC(mmid);
		if(poiMarker){
			maplet.refresh();
			maplet.hideBubble();
			poiMarker.openInfoWindow();
			/**for bubble */
			Request = request.init();
			if(getObjByObjId(mmid)&&getObjByObjId(mmid).type==0&&(Request.ac=='lc'||Request.ac=='nb')){
				if(poiMarker.info)poiMarker.info.setZMBtnVisible(true);
			}else{
				if(poiMarker.info)poiMarker.info.setZMBtnVisible(false);
			}
			return poiMarker;
		}else{
			return null;
		}
}
/*view by db id*/
function viewPoiByPid(pid){
	var poiObj=getPoiById(pid);
	var poiMarker=null;
	//console.debug("pid:"+poiMarker);
	if(poiObj){
		//console.debug("pid:"+pid+":"+poiObj.objId);
		poiMarker=viewPoi(poiObj.objId);
		if(!poiMarker)setTimeout(function(){viewPoiByPid(pid);},1000);
	}else{
		poiObj=getLineById(pid);
		if(!poiObj)return;
		poiMarker=viewPoi(poiObj.objId);
		if(!poiMarker)setTimeout(function(){viewPoiByPid(pid);},1000);
	}
}
/*update title*/
function updatePois(obj,mmid){
    var poiObj=getPoiByObjId(mmid);
    if(poiObj){
        poiObj.state=2;
        poiObj.name=obj.value;
        poiObj.marker.info.title=obj.value
        poiObj.tipInfo.poi.name=obj.value;
		if(poiObj.type==1){
			$(mmid).getElementsByTagName("div")[0].childNodes[0].innerHTML=obj.value;
			mymaps.updatePoi(poiObj);
		}
    }
    else{
        poiObj=getLineByObjId(mmid);
        if(!poiObj){return;}
        poiObj.state=2;
        poiObj.name=obj.value;
        poiObj.marker.info.title=obj.value
        poiObj.tipInfo.poi.name=obj.value;
		if(poiObj.type==1){
			$(mmid).getElementsByTagName("div")[0].childNodes[0].innerHTML=obj.value;
			mymaps.updateLine(poiObj);
		}
    }

}
/*update content*/
function updatePois2(obj,mmid){
    var poiObj=getPoiByObjId(mmid);
    var objValue=obj.value.replace(new RegExp("\"","gm"),"").replace(new RegExp("'","gm"),"");
    if(poiObj){
        poiObj.state=2;
        poiObj.description=objValue;
        poiObj.marker.info.content = obj.value;
        poiObj.tipInfo.poi.description=obj.value;
		if(poiObj.type==1){
			$(mmid).getElementsByTagName("div")[1].innerHTML=obj.value||obj.innerHTML;
			mymaps.updatePoi(poiObj);
		}
    }else{
        poiObj=getLineByObjId(mmid);
        if(!poiObj){return;}
        poiObj.state=2;
        poiObj.description=objValue;
        poiObj.marker.info.content = obj.value;
        poiObj.tipInfo.poi.description=obj.value;
		if(poiObj.type==1){
			$(mmid).getElementsByTagName("div")[1].innerHTML=obj.value;
			mymaps.updateLine(poiObj);
		}
    }

}

function getmaplist(){
    if(user.userId==""){user.createLoginPanel();return;}
	var url = "http://www.mapbar.com/mapjson/getMapsJson.jsp?&stype=userid&keyword="+user.userId+"&pn=1&rn=100&r="+Math.random();
    new Transfer.Request(url,{oncomplate:function(){getMaplistCbk();},id:'mymaplistsc'});
}
function getMaplistCbk(){
    if(!$("maplist_s"))return;
    rsArr=[];
    rsArr.push("<select style='width:150px;'>");
    rsArr.push("<option value='-1'>新创建一个地图</option>");
    for(var i=0;i<mymaplist.maps.length;i++){
        rsArr.push("<option value='"+mymaplist.maps[i].id+"'>"+mymaplist.maps[i].title.stripTags()+"</option>");
    }
    rsArr.push("</select>");
    $("maplist_s").innerHTML=rsArr.join("");
    rsArr=[];
    showTipDiv("saveToMymapDiv","tipdiv");
}
function saveRsPoi(mmid,title,content){
    var obj=getPoiByObjId(mmid);
    if(!obj)return;
    var mapsId=$("maplist_s").getElementsByTagName("select")[0].value;
    var userId=user.userId;
    title=encodeDURI(title||obj.tmpMarkerTitle);
    content=encodeDURI(content||obj.tmpMarkerContent);
    if(mapsId!=-1){
        var cbk=function(){
            maplet.hideBubble();
            var obj1=new MapPoi();
            obj1.strlatlon=obj.strlatlon;
            obj1.type=1;
            obj1.city=mapbardis.city;
            obj1.name=obj.name;
            obj1.description=obj.address;
            window.addPoi(obj1,function(obj2){mymaps.addNewPoiCbk(obj2,1,0);});
        }
        mymaps.getMapInfo(mapsId,cbk);
    }else{
        mymaps.makeAddMapPanel();
        maplet.hideBubble();
        var obj1=new MapPoi();
        obj1.strlatlon=obj.strlatlon;
        obj1.type=1;
        obj1.city=mapbardis.city;
        obj1.name=obj.name;
        obj1.description=obj.address;
        window.addPoi(obj1,function(obj2){mymaps.addNewPoiCbk(obj2,1,1);});
    }
 }

InfoWindow.changePoiIcon=function (mmid,src){
	/*
    if(poiObj){
		if($("editTextPanel"))$("editTextPanel").getElementsByTagName("img")[0].src=src;
		poiObj.marker.icon.img.getElementsByTagName("img")[0].src=src;
		poiObj.icon=src;
		poiObj.state=2;
		if($(mmid))$(mmid).getElementsByTagName("img")[0].src=src;
		if(poiObj.type==1)mymaps.updatePoi(poiObj);
    }
	if($("editTextPanel"))showTipDiv('editTextPanel','iconSelectPanel');
	*/
	var imgonload=function(){
		var poiObj=getPoiByObjId(mmid);
		if(poiObj){
			if($("editTextPanel"))$("editTextPanel").getElementsByTagName("img")[0].src=src;;
			poiObj.marker.icon.img.getElementsByTagName("img")[0].src=src;
			poiObj.icon=src;
			poiObj.state=2;
			if($(mmid))$(mmid).getElementsByTagName("img")[0].src=src;
			if(poiObj.type==1)mymaps.updatePoi(poiObj);
		}
		if($("editTextPanel"))showTipDiv('editTextPanel','iconSelectPanel');
	}
	var newimg = new Image();
	newimg.src=src;
	if(newimg.complete){
		imgonload();
	}else{
		newimg.onload=imgonload;
	}
	
   
}

var brushOperate={
    setValue:function(mmid,name,v){
        var obj=getLineByObjId(mmid);
        if(!obj)return;
        obj[name]=v;
        obj.state=2;
        var myBrush=obj.marker.brush;
        myBrush[name] = v ;
        maplet.refresh();
        mymaps.updateLine(obj);
    },
    setColor:function(mmid,v,obj){
        this.setValue(mmid,"color",v);
        obj.style.backgroundColor=v;
    },
    setStroke:function(mmid,v,obj){
        if(isNaN(v)){alert("请输入数字");if(obj)obj.value=1;return false;}
        this.setValue(mmid,"stroke",v);
    },
    setTransparency:function(mmid,v,obj){
        if(isNaN(v)){alert("请输入数字");if(obj)obj.value=60;return false;}
        this.setValue(mmid,"transparency",v);
    },
    setArrowStyle:function(mmid,v){
        this.setValue(mmid,"arrow",v);
    },
    setBgColor:function(mmid,v,obj){
       this.setValue(mmid,"bgcolor",v);
       obj.style.backgroundColor=v;
    },
    setBgTransparency:function(mmid,v,obj){
        if(isNaN(v)){alert("请输入数字");if(obj)obj.value=60;return false;}
        this.setValue(mmid,"bgtransparency",v);
    }
}

//initSlider('${poi.objId}');
function initSlider(mmid){
    return;
    /*need slider and mapbarslider.js support*/
    var mm = Control.Slider.CreateInstanceByMapbarStyle(
    {   path:'/controls/MapbarSlider/',
        sliderid: "mySlider1",
        container: $("lineWEditPanel"),
        sliderValue:20,
        values:[2,4,6,8,10,12,14,16,18,20],
        range:$R(2,20),
        onSlide:function(v){
            //alert(1);
            brushOperate.setStroke(mmid,v);
        },
        onChange:function(v){
            brushOperate.setStroke(mmid,v);
        }
    }
    );

    var mm2 = Control.Slider.CreateInstanceByMapbarStyle(
    {   path:'/controls/MapbarSlider/',
        sliderid: "mySlider2",
        container: $("lineTEditPanel"),
        sliderValue:20,
        values:[2,4,6,8,10,12,14,16,18,100],
        range:$R(2,100),
        onSlide:function(v){
            brushOperate.setTransparency(mmid,v);
    //                        $("txt").value = v;
        },
        onChange:function(v){
            brushOperate.setTransparency(mmid,v);
    //                        $("txt").value = v;
        }
    }
    );
}