﻿var poiTypes;
var poimarker;
//添加兴趣点预处理
function addPOIPrev(point){
    if (point != undefined){
        var id = "addpoipoint";
        var poiWinHtml = "<table style='margin:0 0 0 5px' cellspacing='0' cellpadding='0' width='98%' id='poiwintable'>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;称:</td>";
        poiWinHtml += "<td ><input id='addpoiname' type='text' style='width:200px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'><td width='60px'>一级类别:</td>";
        poiWinHtml += "<td ><select id='addpoitype' onchange='ChangePOIType(this.value)' style='width:200px'>";
        if(poiTypes != undefined){
            for (var i = 0;i < poiTypes.length;i++){
                var poiType = poiTypes[i];
                poiWinHtml += "<option value='" + poiType.TYPECODE + "'>" + poiType.TYPENAME + "</option>";
            }
        }
        poiWinHtml += "</select></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'><td width='60px'>二级类别:</td>";
        poiWinHtml += "<td ><select id='addsubtype'  style='width:200px'>";
        poiWinHtml += "</select></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>联系地址:</td>";
        poiWinHtml += "<td ><input id='addaddress' type='text' style='width:200px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>联系电话:</td>";
        poiWinHtml += "<td ><input id='addphone' type='text' style='width:200px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='60px'>";
        poiWinHtml += "<td width='60px'>描述信息:</td>";
        poiWinHtml += "<td ><textarea id='adddescribe' style='width:200px;height:60px'></textarea></td>";
        poiWinHtml += "</tr>";
        //poiWinHtml += "<tr height='30px'>";
        //poiWinHtml += "<td width='60px'>是否共享:</td>";
        //poiWinHtml += "<td ><input id='isshare' type='checkbox' style='border:0px'></td>";
        //poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td colspan='2' align='center'><input onclick='AddPOI(" + point.get_x() + "," + point.get_y() + ")' type='button' value='添 加'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "</table>";
        map.showInfoWindow(point,'兴趣点添加',poiWinHtml,null,removeTempMarker);  
        poimarker = map.getMarkerById(id); 
        if (poimarker){
            poimarker.set_point(point);
            poimarker.set_click(function(){map.showInfoWindow(point);});
            map.refreshMarker(poimarker);
        }else{
            poimarker=MarkerSelector.OrangePoiMarker();
            map.addMarker(poimarker,id,point,"",function(){map.showInfoWindow(point);});
        }
        if(poiTypes != undefined){
            ChangePOIType(poiTypes[0].TYPECODE);
        }
    }
}

function removePoiPrev(){
    if(poimarker){
        map.removeMarker(poimarker);
        map.hideInfoWindow();
    }
}

//移除临时POI
function removeTempMarker(){
    var poiMarker = map.getMarkerById("addpoipoint"); 
    if(poiMarker != undefined && poiMarker != null)map.removeMarker(poiMarker);
}


//获取兴趣点一级类别
function GetPOITypeList(){
    var url = 'Controlller/POIHandler.ashx';
    var type = "getpoitype";
    var pars = 'request=' + type + '&random=' + new Date().getMilliseconds();
	var myAjax = new Ajax.Request(
		url,
		{method: 'get', parameters: pars, onComplete: function(originalRequest){
		    poiTypes = eval(originalRequest.responseText);
		}}
	);	
}

//获取兴趣点二级类别
function ChangePOIType(tCode){
    var url = 'Controlller/POIHandler.ashx';
    var type = "getpoisubtype";
    var pars = 'request=' + type + '&typecode=' + tCode + '&random=' + new Date().getMilliseconds();
	var myAjax = new Ajax.Request(
		url,
		{method: 'get', parameters: pars, onComplete: function(originalRequest){
		    var poiSubTypes = eval(originalRequest.responseText);
		    $('addsubtype').options.length = 0
		    for (var i = 0;i < poiSubTypes.length;i++){
		        var poiSubType = poiSubTypes[i];
                var selectItem = new Option(poiSubType.TYPENAME,poiSubType.TYPENAME);
                if($('addsubtype') != undefined){
                    $('addsubtype').options.add(selectItem); 
                }
		    }
		}}
	);
}

//添加兴趣点
function AddPOI(x,y){
    var poiName = $("addpoiname").value;
    var poiType = $("addpoitype").value;
    var subType = $("addsubtype").value;
    var address = $("addaddress").value;
    var phone = $("addphone").value;
    var info = $("adddescribe").value;
    //var isShare = $("isshare").checked;
    var isShare = false;
    var options =  $("addpoitype").options;
    for(var i = 0;i < options.length;i++){
        if(options[i].value == poiType){
            poiType = options[i].text;
            break;
        }
    }
    poiName = CommonUtil.trim(poiName);
    if(poiName == ""){
        alert("兴趣点名称不能为空！");
        return;
    }else if(poiName.length > 40){
        alert("兴趣点名称太长，请修改兴趣点名称！");
        return;
    }
    if(poiType == "" || subType == ""){
        alert("兴趣点类别不能为空！");
        return;
    }
    if(!isShare){
        var scale = map.get_level();
        var poi = {'NAME':poiName,'TYPE':poiType,'SUBTYPE':subType,'X':x,'Y':y,'SCALE':scale,'ADDRESS':address,'PHONE':phone,'INFO':info};
        var poiStr = Convert.ToJSONString(poi);
        var ppoi = CommonUtil.getCookie("personalpoi");
        var IsExist = false;
        if (ppoi == null || ppoi == undefined || ppoi == "null"){
            ppoi = "[";
        }else{
            if (ppoi.length > 1800){
                alert("对不起您的兴趣点列表已满，不能再添加兴趣点，请删除部分兴趣点或清空COOKIE再行添加!");
                return;
            }
            //判断是否已经存在同名的
            var pois = eval(ppoi);          
            for(var i = 0;i < pois.length;i++){
                if (pois[i].NAME == poiName){
                    alert("该兴趣点名称已存在！");
                    IsExist = true;
                    break;
                }
            }
            
            if (IsExist)return;
            ppoi = ppoi.substring(0,ppoi.length - 1);
            ppoi += ",";
        }
        //写入COOKIE
        CommonUtil.setCookie("personalpoi",ppoi + poiStr + "]",new Date(Date.parse("Jan 1,3000")));
        map.set_mouseMode(MouseMode.Pan);
        map.cancelGetGeometry();
        map.hideInfoWindow();
        ShowPOIList();
        alert("兴趣点添加成功！");   
        POILocatePlace(poi);                   
        return;
    }
    map.hideInfoWindow();
    map.set_mouseMode(MouseMode.Pan);
    var url = 'Controlller/POIHandler.ashx';
    var type = "addpoi";
    var pars = 'request=' + type + '&random=' + new Date().getMilliseconds();
    pars += "&poiname=" + poiName + "&type=" + poiType + "&subtype=" + subType + "&address=" + address + "&phone=" + phone + "&info=" + info;
    pars += "&x=" + x + "&y=" + y;
	var myAjax = new Ajax.Request(
		url,
		{method: 'get', parameters: pars, onComplete: function(originalRequest){
		    if (originalRequest.responseText == "True"){
		        alert("兴趣点添加成功！");
		    }
		}}
	);	
}

//添加兴趣点纠错预处理
function addPOIErrorPrev(point){
    if (point != undefined){
        var id = "addpoiERRORpoint";
        var poiWinHtml = "<table style='margin:0 0 0 5px' cellspacing='0' cellpadding='0' width='98%' id='poierrorwintable'>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;称:</td>";
        poiWinHtml += "<td ><input id='errorpoiname' type='text' style='width:160px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'><td width='60px'>错误类别:</td>";
        poiWinHtml += "<td ><select id='errortype' style='width:160px'>";
        poiWinHtml += "<option value='兴趣点位置错误'>兴趣点位置错误</option>";
        poiWinHtml += "<option value='兴趣点地址错误'>兴趣点地址错误</option>";
        poiWinHtml += "<option value='兴趣点电话错误'>兴趣点电话错误</option>";
        poiWinHtml += "</select></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>联系地址:</td>";
        poiWinHtml += "<td ><input id='erroraddress' type='text' style='width:160px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>联系电话:</td>";
        poiWinHtml += "<td ><input id='errorphone' type='text' style='width:160px'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td width='60px'>错误描述:</td>";
        poiWinHtml += "<td ><textarea id='errordescribe' style='width:160px;height:60px'></textarea></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "<tr height='30px'>";
        poiWinHtml += "<td colspan='2' align='center'><input onclick='AddPOIError(" + point.get_x() + "," + point.get_y() + ")' type='button' value='纠 错'></td>";
        poiWinHtml += "</tr>";
        poiWinHtml += "</table>"; 
        map.showInfoWindow(point,'兴趣点纠错',poiWinHtml);    
        var marker = map.getMarkerById(id); 
        if (marker){
            marker.set_point(point);
            marker.set_click(function(){map.showInfoWindow(point);});
            map.refreshMarker(marker);
        }else{
            map.addMarker(MarkerSelector.OrangePoiMarker(),id,point,"",function(){map.showInfoWindow(point);});
        }
    }
}

//添加兴趣点纠错
function AddPOIError(x,y){
    var poiName = $("errorpoiname").value;
    var errorType = $("errortype").value;
    var address = $("erroraddress").value;
    var phone = $("errorphone").value;
    var info = $("errordescribe").value;
    if(poiName == ""){
        alert("纠错名称不能为空！");
        return;
    }
    if(errorType == ""){
        alert("纠错类别不能为空！");
        return;
    }
    map.hideInfoWindow();
    map.set_mouseMode(MouseMode.Pan);
    var url = 'Controlller/POIHandler.ashx';
    var type = "addpoierror";
    var pars = 'request=' + type + '&random=' + new Date().getMilliseconds();
    pars += "&poiname=" + poiName + "&errortype=" + errorType + "&address=" + address + "&phone=" + phone + "&errordescribe=" + info;
    pars += "&x=" + x + "&y=" + y;
	var myAjax = new Ajax.Request(
		url,
		{method: 'get', parameters: pars, onComplete: function(originalRequest){
		    if (originalRequest.responseText == "True"){
		        alert("兴趣点纠错已提交成功，谢谢您的支持，我们将对您提交的信息进行审核！");
		    }
		}}
	);	
}

//显示个人兴趣点列表
function ShowPOIList(fNum,tNum){
    var pageSize = 10;
    if (fNum == undefined){
        fNum = 0;
    }
    if (tNum == undefined){
        tNum = pageSize;
    }
    var pnameStr = "<table cellspacing='0' cellpadding='0' border='0' style='width:95%;'>";
    var pois = CommonUtil.getCookie("personalpoi");
   
    if (pois != undefined && pois != null && pois != ""){  
        pois = eval(pois);
        var num = pois.length;
        var pageNo =Math.ceil(num / pageSize);
        var curPage = Math.ceil(tNum /pageSize);
        if (tNum > num)tNum = num;
        for (var i = fNum;i < tNum;i++){
            var poi = pois[i];
            if(poi != undefined){
                var name = poi.NAME;
                var x = poi.X;
                var y = poi.Y;
                var toption = Convert.ToJSONString(poi);
                pnameStr += "<tr height='28px'><td width='200px'>&nbsp;&nbsp;<span onmousedown='POILocatePlace(" + toption + ")' id='" + name + "_name' onmouseover='this.style.color=\"#88b9d7\"' onmouseout='this.style.color=\"\"' style='font-weight:bold;font-size:12px;cursor:hand'>" + name + "</span></td>";
                pnameStr += "<td width='60px'><a href='javascript:DeletePersonalPOI(\"" + name + "\")'>删除</a></td></tr>";
                pnameStr += "<tr height='20px'><td colspan='2' id='" + name + "_type' style='color:gray;font-size:12px;'>&nbsp;&nbsp;类别：" +  poi.TYPE + "-->" + poi.SUBTYPE + "</td></tr>";
                pnameStr += "<tr height='20px'><td colspan='2' id='" + name + "_address' style='color:gray;font-size:12px;border-bottom:1px dashed  gray'>&nbsp;&nbsp;地址：" + poi.ADDRESS +"</td></tr>";

            }
        }
        pnameStr += "<tr height='30px'><td colspan='2' style='font-size:12px' align='center'>";
        if (fNum == 0 && tNum < num){  //有下一页 和最后一页无上一页
            var fromNum = fNum + pageSize;
            var toNum = tNum + pageSize;
            var lastNum = pageSize * (pageNo - 1); 
            pnameStr += "<a style='color:gray'>第一页</a>&nbsp;&nbsp;<a style='color:gray'>上一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + fromNum + "," + toNum + ")'>下一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + lastNum + "," + num + ")'>最后一页</a>";
        }else if(fNum > 0 && tNum < num){//有下一页 和最后一页 上一页
            var fromNum = fNum + pageSize;
            var toNum = tNum + pageSize;
            var lastNum = pageSize * (pageNo - 1);  
            var prevFromNum = fNum - pageSize;
            if(prevFromNum < 0)prevFromNum = 0;
            var prevToNum = tNum - pageSize;
            pnameStr += "<a href='javascript:ShowPOIList(0," + pageSize + ")'>第一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + prevFromNum + "," + prevToNum + ")'>上一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + fromNum + "," + toNum + ")'>下一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + lastNum + "," + num + ")'>最后一页</a>";
        }else if(fNum > 0 && tNum >= num){//有上一页 第一页
            var fromNum = fNum - pageSize;
            if (fromNum < 0)fromNum = 0;
            var toNum =fromNum + pageSize// soption.TONUM - soption.PAGESIZE;
            pnameStr += "<a href='javascript:ShowPOIList(0," + pageSize + ")'>第一页</a>&nbsp;&nbsp;<a href='javascript:ShowPOIList(" + fromNum + "," + toNum + ")'>上一页</a>&nbsp;&nbsp;<a style='color:gray'>下一页</a>&nbsp;&nbsp;<a style='color:gray'>最后一页</a>";
        }
        pnameStr += "</td></tr>";
        if (num != 0){
            pnameStr += "<tr height='20px'><td align='center' colspan='2'> 共" + num + "条 当前第" + curPage + "页</td></tr>";
        }else{
            pnameStr += "<tr height='20px'><td align='center' colspan='2'> 无兴趣点！</td></tr>";
        }
        
    }else{
        pnameStr += "<tr height='20px'><td align='center' colspan='2'> 暂无兴趣点！</td></tr>";
    }
    pnameStr += "</table>";
    $("poitab_content").innerHTML = pnameStr;
    //$("poitab_content").style.display = "block";
}

//删除兴趣点
function DeletePersonalPOI(name){
    if(!confirm("确定删除吗？")){
        return;
    }
    var pois = CommonUtil.getCookie("personalpoi");
    var poiTemp = "[";
    var poiStr = "";
    if (pois != undefined && pois != null && pois != ""){       
        pois = eval(pois);
        for (var i = 0;i < pois.length;i++){
            if (pois[i] != undefined){
                if (pois[i].NAME != name){
                    if(poiStr != ""){
                        poiStr += ",";
                    }
                    poiStr +=  Convert.ToJSONString(pois[i]);
                }else{
                    var poiMarker = map.getMarkerById(pois[i].NAME + "_poi"); 
                    if(poiMarker != undefined && poiMarker != null)map.removeMarker(poiMarker);
                }
            }
        }
    }
    poiTemp += poiStr;
    poiTemp += "]";
    CommonUtil.setCookie("personalpoi",poiTemp,new Date(Date.parse("Jan 1,3000")));
    var poiMarker = map.getMarkerById("addpoipoint"); 
    if(poiMarker != undefined && poiMarker != null)map.removeMarker(poiMarker);
    ShowPOIList();
}

var tempMarker;
//兴趣点定位
function POILocatePlace(option){   
    if (tempMarker != undefined){
        //map.removeMarker(tempMarker);
        map.hideInfoWindow();
    }
    var point = new Point(option.X,option.Y);
    var poiWinHtml = "<table style='margin:0 0 0 5px' cellspacing='0' cellpadding='0' width='98%' id='poiwintable'>";
    poiWinHtml += "<tr height='25px'><td width='70px'>一级类别:</td>";
    poiWinHtml += "<td >" + option.TYPE + "</td>";
    poiWinHtml += "</tr>";
    poiWinHtml += "<tr height='25px'><td width='70px'>二级类别:</td>";
    poiWinHtml += "<td >" + option.SUBTYPE;
    poiWinHtml += "</td>";
    poiWinHtml += "</tr>";
    poiWinHtml += "<tr height='25px'>";
    poiWinHtml += "<td width='70px'>联系地址:</td>";
    poiWinHtml += "<td >" + option.ADDRESS + "</td>";
    poiWinHtml += "</tr>";
    poiWinHtml += "<tr height='25px'>";
    poiWinHtml += "<td width='70px'>联系电话:</td>";
    poiWinHtml += "<td >" + option.PHONE + "</td>";
    poiWinHtml += "</tr>";
    poiWinHtml += "<tr height='25px'>";
    poiWinHtml += "<td width='70px'>描述信息:</td>";
    poiWinHtml += "<td >" + option.INFO + "</td>";
    poiWinHtml += "</tr>";
    poiWinHtml += "</table>";
    if (option.SCALE != undefined){
        map.zoomTo(option.SCALE,point);
    }
    var poiMarker = map.getMarkerById(option.NAME + "_poi");
    if(poiMarker == undefined || poiMarker == null){
        tempMarker = map.addMarker(MarkerSelector.OrangeLabelMarker(),option.NAME + "_poi",point,option.NAME,function(){map.showInfoWindow(point,option.NAME,poiWinHtml);});
        map.removeMarker(map.getMarkerById('addpoipoint'));
    }
}


