$(document).ready(function(){
    $("#dwtr").hide();
    //百度地图初始化
    initMap();
    //加载大类下拉列表
    doBigTypeList();
    //加载到地图上
    loadAllCompDetail("");
    var lxid=$("#lxid").val();
    if(lxid!=""&&lxid!=null){
        $("#dwtr").show();
        getComponentInfo(lxid);
        $("#title").html('<font size="4" color="#0072bc"><b>修改页面</b></font>');
    }else{
        $("#colortr").hide();
        $("#title").html('<font size="4" color="#0072bc"><b>增加页面</b></font>');
    }
    //加载热区
    loadGridHotArea();
    //按钮样式
    showImsg("dwbut,savebut,resetbut");
});
var bmap="";
//绘图标识
var drawflag=0;
var pointarr=[];
var pointstr="";
var polygon="";
var linepointarr=[];
var linepointstr="";
var polyline="";
var marker="";
var clng="";//中心点经度
var clat="";//中心点纬度
var a="";//经度最大值
var b="";//纬度最大值
var c="";//经度最小值
var d="";//纬度最小值
//数组
var compmarkerarr1=[];
var compmarkerarr2=[];
var compmarkerarr3=[];
var comppolyline=[];
var comppolygon=[];
//缩放级别数组
var zoom2darr=[14,15,16,17,18,19];
var zoom3darr=[8,9,10,11,12,13];
var vertflag=0;
//区域数组
var gridareaarr=[];
var gridlabel=[];
function getComponentInfo(lxid){
    $.ajax({
          async:false,
          type: "POST",               
          dataType: "json",               
          url: ctxPath+'/componentDetailAction.do?dispatch=getComponentInfoByid',
          data:"lxid="+lxid,   
          success: function(data) {
                var assemblytype=data.assemblytype;
                $("#assemblyname").val(data.assemblyname);
                $("#bigtype").val(data.bigtype);
                doSmallTypeList();
                $("#smalltype").val(data.smalltype);
                $("#assemblytype").val(assemblytype);
                $("#tcolor").val(data.tcolor);
                $("#tcolor").css("background-color",data.tcolor);
                if(data.tcolor==""||data.tcolor==null){
                    $("#tcolor").val('#39b778');
                    $("#tcolor").css("background-color",'#39b778');
                }
                if(assemblytype=="1"){
                    $("#colortr").hide();
                    $("#pointlng1").val(data.pointlng);
                    $("#pointlat1").val(data.pointlat);
                }else if(assemblytype=="2"){
                    $("#pointlng2").val(data.pointlng);
                    $("#pointlat2").val(data.pointlat);
                    $("#tpoints2").val(data.tpoints);
                }else if(assemblytype=="3"){
                    $("#pointlng3").val(data.pointlng);
                    $("#pointlat3").val(data.pointlat);
                    $("#tpoints3").val(data.tpoints);
                }
          }
    });
}
//加载大类下拉列表
function doBigTypeList(){
    $.ajax({
           async:false,
           type: "POST",               
           dataType: "json",               
           url: ctxPath+'/componentAction.do?dispatch=doCompBTSelectList',   
           success: function(data) {
            var obj=document.getElementById('bigtype'); 
                obj.options.add(new Option("--请选择--","")); 
                for(var i=0;i<data.length;i++){
                    obj.options.add(new Option(data[i].supername,data[i].superid));     
                }
           }
       });  
} 
//根据大类id加载小类下拉列表
function doSmallTypeList(){
    $("#smalltype").html("");
    var superid=$("#bigtype").val();
    if(superid!=""&&superid!=null){
        $.ajax({
           async:false,
           type: "POST",               
           dataType: "json",               
           url: ctxPath+'/componentAction.do?dispatch=doCompSTSelectList', 
           data:"superid="+superid, 
           success: function(data) {
                var obj=document.getElementById('smalltype'); 
                obj.options.add(new Option("--请选择--","")); 
                for(var i=0;i<data.length;i++){
                    obj.options.add(new Option(data[i].smallname,data[i].smallid));     
                }
           }
       });  
    }else{
        var obj=document.getElementById('smalltype'); 
        obj.options.add(new Option("--请选择--","")); 
    }
    
}
//点击类型下拉框
function onAssemblyTypeChange(){
    var assemblytype=$("#assemblytype").val();
    if(assemblytype=="2"||assemblytype=="3"){
        $("#colortr").show();
    }else{
        $("#colortr").hide();
    }
} 
//添加监听
function addMapListener(){
    var assemblytype=$("#assemblytype").val();
    if(assemblytype==""){
        alert("请选择类型!");
    }
    drawflag="1";
    bmap.addEventListener("click", function(e){
        addLabelArea(e);
    });
}
//删除监听
function removeMapListener(){
    drawflag="0";
    bmap.removeEventListener("click", function(e){
        addLabelArea(e);
    });
}
function addLabelArea(e){
    var curmaptype=bmap.getMapType();
    //坐标转换类
    var ctool=new CoorTools(bmap); 
    var assemblytype=$("#assemblytype").val();
    if(assemblytype=="1"){//点
        if(drawflag=="1"){
            if(marker!=""){
                bmap.removeOverlay(marker);
            }
            //清空面标注信息
            if(polygon!=""){
                bmap.removeOverlay(polygon);
            }
            pointarr=[];              
            $("#tpoints3").val("");
            //清空线标注信息
            if(polyline!=""){
                bmap.removeOverlay(polyline);
            }
            linepointarr=[];              
            $("#tpoints2").val("");
            clng=e.point.lng;
            clat=e.point.lat;
            marker = new BMap.Marker(e.point);  // 创建标注
            bmap.addOverlay(marker);            // 将标注添加到地图中
            if(curmaptype._name=="MyMap"){
                var point3=new BMap.Point(clng,clat);
                var point2=ctool.coor2Baidu(point3);
                clng=point2.lng;
                clat=point2.lat;
            }
            $("#pointlng1").val(clng);
            $("#pointlat1").val(clat);
        }
    }else if(assemblytype=="2"){//线
        if(drawflag=="1"){
            if(polyline!=""){
                bmap.removeOverlay(polyline);
            }
            if(marker!=""){
                bmap.removeOverlay(marker);
            }
            //清空面标注信息
            if(polygon!=""){
                bmap.removeOverlay(polygon);
            }
            pointarr=[];              
            $("#tpoints3").val(""); 
            var npoint=new BMap.Point(e.point.lng,e.point.lat); 
            clng=e.point.lng;
            clat=e.point.lat;
            linepointarr.push(npoint);
            var tcolor=$("#tcolor").val();
            polyline=new BMap.Polyline(linepointarr,{strokeColor:tcolor,strokeWeight:2,strokeOpacity:0.8});
            bmap.addOverlay(polyline);
            linepointstr=fromArrayToString(linepointarr);
            if(curmaptype._name=="MyMap"){
                var tempstr="";
                var tpointstr=linepointstr.split(",")
                for(var i=0;i<tpointstr.length;i+=2){
                    var tlng=tpointstr[i];
                    var tlat=tpointstr[i+1];
                    var point=new BMap.Point(tlng,tlat);
                    var npoint=ctool.coor2Baidu(point);
                    tempstr+=npoint.lng+","+npoint.lat+",";
                }
                linepointstr=tempstr.substring(0,(tempstr.length-1));
                var point3=new BMap.Point(clng,clat);
                var point2=ctool.coor2Baidu(point3);
                clng=point2.lng;
                clat=point2.lat;
            }
            $("#tpoints2").val(linepointstr);
            $("#pointlng2").val(clng);
            $("#pointlat2").val(clat);
        }
    }else if(assemblytype=="3"){//面
        if(drawflag=="1"){
            if(polygon!=""){
                bmap.removeOverlay(polygon);
            }
            if(marker!=""){
                bmap.removeOverlay(marker);
            }
            //清空线标注信息
            if(polyline!=""){
                bmap.removeOverlay(polyline);
            }
            linepointarr=[];              
            $("#tpoints2").val(""); 
            var npoint=new BMap.Point(e.point.lng,e.point.lat); 
            //获取经度和纬度的最大最小值
            if(pointarr.length==0){
                a=e.point.lng;
                b=e.point.lat;
                c=e.point.lng;
                d=e.point.lat;
            }else{
                if(a<e.point.lng){
                    a=e.point.lng;
                }
                if(b<e.point.lat){
                    b=e.point.lat;
                }
                if(c>e.point.lng){
                    c=e.point.lng;
                }
                if(d>e.point.lat){
                    d=e.point.lat;
                }
            }
            clng=(a+c)/2;
            clat=(b+d)/2;
            pointarr.push(npoint);
            var tcolor=$("#tcolor").val();
            polygon=new BMap.Polygon(pointarr,{fillOpacity:0.2,fillColor:tcolor,strokeColor:tcolor,strokeWeight:2,strokeOpacity:0.8});
            bmap.addOverlay(polygon);
            pointstr=fromArrayToString(pointarr);
            if(curmaptype._name=="MyMap"){
                var tempstr="";
                var tpointstr=pointstr.split(",")
                for(var i=0;i<tpointstr.length;i+=2){
                    var tlng=tpointstr[i];
                    var tlat=tpointstr[i+1];
                    var point=new BMap.Point(tlng,tlat);
                    var npoint=ctool.coor2Baidu(point);
                    tempstr+=npoint.lng+","+npoint.lat+",";
                }
                pointstr=tempstr.substring(0,(tempstr.length-1));
                var point3=new BMap.Point(clng,clat);
                var point2=ctool.coor2Baidu(point3);
                clng=point2.lng;
                clat=point2.lat;
            }
            $("#tpoints3").val(pointstr);
            $("#pointlng3").val(clng);
            $("#pointlat3").val(clat);
        }
    }
    
}
//重置
function clearform(){
    if(marker!=""){
        bmap.removeOverlay(marker);
    }
    //清空面标注信息
    if(polygon!=""){
        bmap.removeOverlay(polygon);
    }
    //清空线标注信息
    if(polyline!=""){
        bmap.removeOverlay(polyline);
    }
    $("#assemblyname").val("");
    $("#pointlng1").val("");
    $("#pointlat1").val("");
    $("#pointlng2").val("");
    $("#pointlat2").val("");
    $("#pointlng3").val("");
    $("#pointlat3").val("");
    $("#bigtype").val("");
    $("#smalltype").val("");
    $("#assemblytype").val("");
    //清空点字符串
    pointarr=[];
    $("#tpoints3").val("");
    linepointarr=[];
    $("#tpoints2").val("");
}
//将点数组转化为字符串
function fromArrayToString(pointarr){
    var pointstr=""; 
    for(var i=0;i<pointarr.length;i++){
        pointstr+=pointarr[i].lng+","+pointarr[i].lat+",";
    }
    pointstr=pointstr.substring(0,(pointstr.length-1));
    return pointstr;
}
//将字符串转化为点数组
function fromStringToArray(pointstr){
    var pointarr=[];
    var tpoints=pointstr.split(",")
    for(var i=0;i<tpoints.length;i+=2){
        var tlng=tpoints[i];
        var tlat=tpoints[i+1];
        var tpoint=new BMap.Point(tlng,tlat);
        pointarr.push(tpoint);
    }
    return pointarr;
}
//加载
function loadAllCompDetail(ctypeid){
    var curjgid=$("#curjgid").val();
    $.ajax({
        async:false,
        type: "POST",               
        dataType: "json",               
        url: ctxPath+'/componentDetailAction.do?dispatch=getComponentMapList', 
        data: "curjgid="+curjgid+"&ctypeid="+ctypeid,
        success: function(data) {
            for(var i=0;i<data.length;i++){
                var obj=data[i];
                addCoverObj(obj);
            }
        }
    });
}
//添加覆盖物
function addCoverObj(obj){
    var curmaptype=bmap.getMapType();
    //坐标转换类
    var ctool=new CoorTools(bmap); 
    var tpoints=obj.tpoints;
    var tcolor=obj.assemblycolor;
    var pointlng=obj.longitude;
    var pointlat=obj.latitude;
    var assemblyname=obj.assemblyname;
    var assemblytype=obj.assemblytype;
    var timg=obj.assemblyicon;
    if(tcolor==""||tcolor==null){
        tcolor='red';
    }
    var iconImg = new BMap.Icon(ctxPath+timg, new BMap.Size(20,50),{
        imageOffset: new BMap.Size(0,0),
        offset:new BMap.Size(0,0)
    });
    if(assemblytype=="1"){//点
        var cpoint=new BMap.Point(pointlng,pointlat);
        if(curmaptype._name=="MyMap"){
            cpoint=ctool.coor2Baidu3D(cpoint);
        }   
        var marker1 = new BMap.Marker(cpoint,{icon:iconImg,title:assemblyname,offset:new BMap.Size(0,-24)});
        bmap.addOverlay(marker1);
        compmarkerarr1.push(marker1);
    }else if(assemblytype=="2"){//线
        if(tpoints!=""&&tpoints!=null){
            if(curmaptype._name=="MyMap"){
                var tempstr="";
                var tpointstr=tpoints.split(",")
                for(var i=0;i<tpointstr.length;i+=2){
                    var tlng=tpointstr[i];
                    var tlat=tpointstr[i+1];
                    var point=new BMap.Point(tlng,tlat);
                    var npoint=ctool.coor2Baidu3D(point);
                    tempstr+=npoint.lng+","+npoint.lat+",";
                }
                tpoints=tempstr.substring(0,(tempstr.length-1));
            }
            var opointarr=fromStringToArray(tpoints);
            var polyline1=new BMap.Polyline(opointarr,{strokeColor:tcolor,strokeWeight:2,strokeOpacity:0.8});
            bmap.addOverlay(polyline1);
            comppolyline.push(polyline1);
            var cpoint=new BMap.Point(pointlng,pointlat);
            if(curmaptype._name=="MyMap"){
                cpoint=ctool.coor2Baidu3D(cpoint);
            }   
            var marker1 = new BMap.Marker(cpoint,{icon:iconImg,title:assemblyname,offset:new BMap.Size(0,-24)});
            bmap.addOverlay(marker1);
            compmarkerarr2.push(marker1);
        }
    }else if(assemblytype=="3"){//面
        if(tpoints!=""&&tpoints!=null){
            if(curmaptype._name=="MyMap"){
                var tempstr="";
                var tpointstr=tpoints.split(",")
                for(var i=0;i<tpointstr.length;i+=2){
                    var tlng=tpointstr[i];
                    var tlat=tpointstr[i+1];
                    var point=new BMap.Point(tlng,tlat);
                    var npoint=ctool.coor2Baidu3D(point);
                    tempstr+=npoint.lng+","+npoint.lat+",";
                }
                tpoints=tempstr.substring(0,(tempstr.length-1));
            }
            var opointarr=fromStringToArray(tpoints);
            var polygon1=new BMap.Polygon(opointarr,{fillOpacity:0.2,fillColor:tcolor,strokeColor:tcolor,strokeWeight:2,strokeOpacity:0.8});
            bmap.addOverlay(polygon1);
            comppolygon.push(polygon1);
            var cpoint=new BMap.Point(pointlng,pointlat);
            if(curmaptype._name=="MyMap"){
                cpoint=ctool.coor2Baidu3D(cpoint);
            }   
            var marker1 = new BMap.Marker(cpoint,{icon:iconImg,title:assemblyname,offset:new BMap.Size(0,-24)});
            bmap.addOverlay(marker1);
            compmarkerarr3.push(marker1);
        }
    }
}
//保存
function doSaveComponentDetail(){
    var pointlng="";
    var pointlat="";
    var tpoints="";
    var tcolor=$("#tcolor").val();
    var assemblyname=$("#assemblyname").val();
    var bigtype=$("#bigtype").val();
    var smalltype=$("#smalltype").val();
    var assemblytype=$("#assemblytype").val();
    var lxid=$("#lxid").val();
    var curjgid=$("#curjgid").val();
    if(assemblyname==""){
        alert("名称不能为空!");
        return false;
    }
    if(bigtype==""){
        alert("请选择大类!");
        return false;
    }
    if(smalltype==""){
        alert("请选择小类!");
        return false;
    }
    if(assemblytype==""){
        alert("选择类型!");
        return false;
    }
    if(assemblytype=="1"){
        pointlng=$("#pointlng1").val();
        pointlat=$("#pointlat1").val();
        if(pointlng==""||pointlat==""){
            alert("您还没有在地图上标注位置!");
            return false;
        }
    }else if(assemblytype=="2"){
        tpoints=$("#tpoints2").val();
        if(tpoints==""){
            alert("您还没有在地图上标注位置!");
            return false;
        }
        pointlng=$("#pointlng2").val();
        pointlat=$("#pointlat2").val();
    }else if(assemblytype=="3"){
        tpoints=$("#tpoints3").val();
        if(tpoints==""){
            alert("您还没有在地图上标注位置!");
            return false;
        }
        pointlng=$("#pointlng3").val();
        pointlat=$("#pointlat3").val();
    }
    $.ajax({
        type: "POST",               
        dataType: "json",               
        url: ctxPath+'/componentDetailAction.do?dispatch=saveComponentDetail', 
        data: "pointlng="+pointlng+"&pointlat="+pointlat+"&tpoints="+tpoints+"&tcolor="+tcolor+"&assemblyname="+assemblyname
            +"&bigtype="+bigtype+"&smalltype="+smalltype+"&assemblytype="+assemblytype+"&lxid="+lxid+"&curjgid="+curjgid,
        success: function(msg) {
            if(lxid==""){//增加
                if(msg=="1"){
                    $("#assemblyname").val("");
                    $("#pointlng1").val("");
                    $("#pointlat1").val("");
                    $("#pointlng2").val("");
                    $("#pointlat2").val("");
                    $("#pointlng3").val("");
                    $("#pointlat3").val("");
                    $("#bigtype").val("");
                    $("#smalltype").val("");
                    $("#assemblytype").val("");
                    pointarr=[];              
                    $("#tpoints3").val("");
                    linepointarr=[];              
                    $("#tpoints2").val("");
                    alert("添加成功!");
                    if(assemblytype=="1"){
                        for(var i=0;i<compmarkerarr1.length;i++){
                            bmap.removeOverlay(compmarkerarr1[i]);
                        }
                        compmarkerarr1=[];
                    }else if(assemblytype=="2"){
                        for(var i=0;i<compmarkerarr2.length;i++){
                            bmap.removeOverlay(compmarkerarr2[i]);
                        }
                        compmarkerarr2=[];
                        for(var i=0;i<comppolyline.length;i++){
                            bmap.removeOverlay(comppolyline[i]);
                        }
                        comppolyline=[];
                    }else if(assemblytype=="3"){
                        for(var i=0;i<compmarkerarr3.length;i++){
                            bmap.removeOverlay(compmarkerarr3[i]);
                        }
                        compmarkerarr3=[];
                        for(var i=0;i<comppolygon.length;i++){
                            bmap.removeOverlay(comppolygon[i]);
                        }
                        comppolygon=[];
                    }
                    loadAllCompDetail(assemblytype);
                    removeMapListener();
                }else{
                    alert("添加失败!");
                }
            }else{//修改
                if(msg=="1"){
                    pointarr=[]; 
                    linepointarr=[];                 
                    if(assemblytype=="1"){
                        for(var i=0;i<compmarkerarr1.length;i++){
                            bmap.removeOverlay(compmarkerarr1[i]);
                        }
                        compmarkerarr1=[];
                    }else if(assemblytype=="2"){
                        for(var i=0;i<compmarkerarr2.length;i++){
                            bmap.removeOverlay(compmarkerarr2[i]);
                        }
                        compmarkerarr2=[];
                        for(var i=0;i<comppolyline.length;i++){
                            bmap.removeOverlay(comppolyline[i]);
                        }
                        comppolyline=[];
                    }else if(assemblytype=="3"){
                        for(var i=0;i<compmarkerarr3.length;i++){
                            bmap.removeOverlay(compmarkerarr3[i]);
                        }
                        compmarkerarr3=[];
                        for(var i=0;i<comppolygon.length;i++){
                            bmap.removeOverlay(comppolygon[i]);
                        }
                        comppolygon=[];
                    }
                    loadAllCompDetail(assemblytype);
                    alert("修改成功!");
                    removeMapListener();
                }else{
                    alert("修改失败!");
                }
            }
        }
    });
}
var dwmarker="";
function doDingwei(){
    var curmaptype=bmap.getMapType();
    //坐标转换类
    var ctool=new CoorTools(bmap);   
    if(dwmarker!=""){
        bmap.removeOverlay(dwmarker);
        dwmarker="";
    }
    var assemblytype=$("#assemblytype").val();
    var pointlng="";
    var pointlat="";
    if(assemblytype=="1"){
        pointlng=$("#pointlng1").val();
        pointlat=$("#pointlat1").val();
    }else if(assemblytype=="2"){
        pointlng=$("#pointlng2").val();
        pointlat=$("#pointlat2").val();
    }else if(assemblytype=="3"){
        pointlng=$("#pointlng3").val();
        pointlat=$("#pointlat3").val();
    }
    var iconImg = new BMap.Icon(ctxPath+"/images/dw.gif", new BMap.Size(45,45),{
        imageOffset: new BMap.Size(0,0),
        offset:new BMap.Size(0,0)
    });
    var dwpoint=new BMap.Point(pointlng,pointlat);
    if(curmaptype._name=="MyMap"){
        dwpoint=ctool.coor2Baidu3D(dwpoint);
    }
    dwmarker= new BMap.Marker(dwpoint,{icon:iconImg,offset:new BMap.Size(0,0)});
    bmap.addOverlay(dwmarker);
    bmap.panTo(dwpoint);
    setTimeout(function(){
        if(dwmarker!=""){
            bmap.removeOverlay(dwmarker);
            dwmarker="";
        }
    },3000)
}
//加载热区
function loadGridHotArea(){
    var curjgid=$("#curjgid").val();
    $.ajax({
        async:false,
        type: "POST",               
        dataType: "json",               
        url: ctxPath+'/gridOrgAction.do?dispatch=getGridOrgById', 
        data: "lxid="+curjgid,
        success: function(data) {
            var obj=new Object();
            obj.reseauarea=data.tpoints;
            obj.tcolor=data.tcolor;
            obj.pointlng=data.pointlng;
            obj.pointlat=data.pointlat;
            obj.reseauname=data.reseauname;
            addGridCoverObj(obj);
        }
    });
}
//添加覆盖物
function addGridCoverObj(obj){
    var curmaptype=bmap.getMapType();
    //坐标转换类
    var ctool=new CoorTools(bmap); 
    var tpoints=obj.reseauarea;
    var tcolor=obj.tcolor;
    var pointlng=obj.pointlng;
    var pointlat=obj.pointlat;
    var reseauname=obj.reseauname;
    if(tcolor==""||tcolor==null){
        tcolor='red';
    }
    if(tpoints!=""&&tpoints!=null){
        if(curmaptype._name=="MyMap"){
            var tempstr="";
            var tpointstr=tpoints.split(",")
            for(var i=0;i<tpointstr.length;i+=2){
                var tlng=tpointstr[i];
                var tlat=tpointstr[i+1];
                var point=new BMap.Point(tlng,tlat);
                var npoint=ctool.coor2Baidu3D(point);
                tempstr+=npoint.lng+","+npoint.lat+",";
            }
            tpoints=tempstr.substring(0,(tempstr.length-1));
        }
        var opointarr=fromStringToArray(tpoints);
        var polygon1=new BMap.Polygon(opointarr,{fillOpacity:0.2,fillColor:tcolor,strokeColor:tcolor,strokeWeight:2,strokeOpacity:0.8});
        bmap.addOverlay(polygon1);
        gridareaarr.push(polygon1);
        var cpoint=new BMap.Point(pointlng,pointlat);
        if(curmaptype._name=="MyMap"){
            cpoint=ctool.coor2Baidu3D(cpoint);
        }   
        var myLabel = new BMap.Label(reseauname,     //为lable填写内容    
            {offset:new BMap.Size(-15,-15),    //label的偏移量,为了让label的中心显示在点上    
                position:cpoint
        }); 
        bmap.addOverlay(myLabel);
        gridlabel.push(myLabel);  
    }
}