<!doctype html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>海康9800视频</title>
    <script type="text/javascript" src="/Scripts/jquery-1.9.1.min.js"></script>
    <script type="text/javascript" src="../Scripts/preview.js"></script>
    <%--<script type="text/javascript" src="../Scripts/playback.js"></script>--%>
    <%-- <link href="/UILib/zTree/zTreeStyle/zTreeStyle.css" type="text/css" rel="stylesheet" />--%>
    <script src="/UILib/zTree/jquery.ztree.core-3.5.min.js" type="text/javascript"></script>
    <script src="/UILib/zTree/jquery.ztree.excheck-3.5.min.js" type="text/javascript"></script>
    <style type="text/css">
        /*html, body {
           width: 100%;
           height: 2000px;
           overflow: auto;
       }*/
        .ztree {
            padding-top: 40px;
        }

        /*.ico.m-gun, ul.ztree li span.m-gun_ico_docu {
           background-position: -195px -3px;
           width: 18px;
       }*/

        ul.ztree li a.disabledNode .m-gun-1_ico_docu {
            background-position: -123px -123px;
        }

        .control-container {
            width: 253px;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <link href="http://<%=strPlatformAddr %>/vms/baseui/themes/default/css/all.css" rel="stylesheet" />
        <link href="http://<%=strPlatformAddr %>/vms/web/assets/default/css/monitor.css" type="text/css" rel="stylesheet" />
        <div style="width: 100%;">
            <%--min-width:930px;padding-top:5px;--%>
            <div runat="server" id="divTree" class="treeview" style="width: 160px; float: left; height: 500px; overflow-y: auto;">
                <ul id="treeDemo" class="ztree"></ul>
            </div>
            <div id="divVD" style="float: right; width: 770px; height: 500px;"></div>
            <div style="clear: both;"></div>
        </div>
        <input type="hidden" id="hd_tgt" runat="server" />
        <input type="hidden" id="hd_xmlPre" runat="server" />
        <input type="hidden" id="hd_PointJson" runat="server" />
        <%--
    <input type="hidden" id="hd_playback" runat="server" />
    <div style="width:100%;height:25px;" style="display:none;">
        <input type="button" value="播放" onclick="play()" style="display:none;"/>
        <input type="button" value="回看" onclick="playBack()" style="display:none;"/>
        <div class="control-container" style="display:none;">
                    <a class="toggle-switch tipS" href="#" title="隐藏 操作面板" original-title="隐藏 操作面板"></a>
                    <div id="controlContent" class="control-content tab-grey ui-tabs ui-widget ui-widget-content ui-corner-all">
                        <ul class="tabs ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" role="tablist">
                            <li class="ui-state-default ui-corner-top ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="ptzController" aria-labelledby="ui-id-1" aria-selected="true"><a href="#ptzController" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-1">云镜控制</a></li>
                            <li class="ui-state-default ui-corner-top" role="tab" tabindex="-1" aria-controls="videoParameter" aria-labelledby="ui-id-2" aria-selected="false"><a href="#videoParameter" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-2">视频参数</a></li>
                        </ul>
                        <div class="tab-content">
                            <div id="ptzController" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-1" role="tabpanel" aria-expanded="true" aria-hidden="false" style="display: block;">
                                <div class="control-mask"></div>
                                <div id="controller" class="controller">
                                    <div class="speed">
                                        <span id="speedVolume" class="volume ui-slider ui-slider-vertical ui-widget ui-widget-content ui-corner-all"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="height: 50%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="bottom: 50%;"></a></span><span class="ico"></span>
                                    </div>
                                    <div id="rocker" class="rocker">
                                        <div class="diagonal">
                                            <ul>
                                                <li class="nw ptz-operation" data-op="25"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="ne ptz-operation" data-op="26"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="sw ptz-operation" data-op="27"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="se ptz-operation" data-op="28"><a href="#"><span class="ico"></span><i></i></a></li>
                                            </ul>
                                        </div>
                                        <div class="quartet">
                                            <ul>
                                                <li class="n ptz-operation" data-op="21"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="w ptz-operation" data-op="23"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="c"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="e ptz-operation" data-op="24"><a href="#"><span class="ico"></span><i></i></a></li>
                                                <li class="s ptz-operation" data-op="22"><a href="#"><span class="ico"></span><i></i></a></li>
                                            </ul>
                                        </div>
                                    </div>
                                    <div class="scope">
                                        <ul>
                                            <li class="focal-out ptz-operation" data-op="12"><a class="narrowFocal tipS" href="#" title="焦距缩小"><span class="ico"></span><i></i></a></li>
                                            <li class="focal-in ptz-operation" data-op="11"><a class="tipS" href="#" title="焦距放大"><span class="ico"></span><i></i></a></li>
                                            <li class="lens-out ptz-operation" data-op="13"><a class="tipS" href="#" title="焦点前移"><span class="ico"></span><i></i></a></li>
                                            <li class="lens-in ptz-operation" data-op="14"><a class="tipS" href="#" title="焦点后移"><span class="ico"></span><i></i></a></li>
                                            <li class="aperture-out ptz-operation" data-op="16"><a class="tipS" href="#" title="光圈缩小"><span class="ico"></span><i></i></a></li>
                                            <li class="aperture-in ptz-operation" data-op="15"><a class="tipS" href="#" title="光圈放大"><span class="ico"></span><i></i></a></li>
                                        </ul>
                                    </div>
                                    <div class="tool">
                                        <ul>
                                            <li class="act-lockptz ptz-btn-operation-lock" data-op="8"><a class="tipS" href="#" title="锁定"><span class="ico"></span><i></i></a></li>
                                            <li class="act-zoom3d ptz-btn-operation-3d" data-op="9"><a class="tipS" href="#" title="3D放大"><span class="ico"></span><i></i></a></li>
                                            <li class="act-light ptz-btn-operation-light" data-op="2"><a class="tipS" href="#" title="灯光"><span class="ico"></span><i></i></a></li>
                                            <li class="act-brush ptz-btn-operation-brush" data-op="3"><a class="tipS" href="#" title="雨刷"><span class="ico"></span><i></i></a></li>
                                            <li class="act-patrol ptz-btn-operation-auto" data-op="29"><a class="tipS" href="#" title="自动扫描"><span class="ico"></span><i></i></a></li>
                                        </ul>
                                    </div>
                                </div>
                                 <div class="setting">
                                    <div>
                                        <div class="combobox">
                                            <!-- <input id="call-preset-input" type="text" class="point-number tipS placeholder" placeholder="输入编号或名称"> -->
                                            <input id="call-preset-input" type="text" class="point-number" style="color: gray" value="输入编号或名称">
                                            <div class="btn-group dropup">
                                                <a class="dropdown-toggle" href="#" data-toggle="dropdown"><span class="caret"></span></a>
                                                <ul class="dropdown-menu preset-container-name">
                                                </ul>
                                            </div>
                                        </div>
                                        <a id="btn-call-preset" class="buttonS bDefault tipS" href="#" title="调用"><span class="ico act-apply"></span><i></i></a><a id="btn-open-preset-dialog" class="buttonS bDefault tipS" href="#" data-trigger="controler.setPoint" title="设置"><span>设置</span><i></i></a>
                                    </div>
                                </div>
                            </div>
                             <div id="videoParameter" class="control-panel ui-tabs-panel ui-widget-content ui-corner-bottom" aria-labelledby="ui-id-2" role="tabpanel" aria-expanded="false" aria-hidden="true" style="display: none;">
                                <div class="control-mask"></div>
                                <div class="video-param">
                                    <dl>
                                        <dt><span>亮度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="bright" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
                                        <dd>
                                            <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="bright"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
                                        </dd>
                                    </dl>
                                    <dl>
                                        <dt><span>对比度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="light" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
                                        <dd>
                                            <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="light"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
                                        </dd>
                                    </dl>
                                    <dl>
                                        <dt><span>色度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="tone" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
                                        <dd>
                                            <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="tone"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
                                        </dd>
                                    </dl>
                                    <dl>
                                        <dt><span>饱和度</span><span class="controls"><input type="text" data-trigger="slide" data-default="6" data-param="saturation" class="input-mini" value="0" maxlength="2" style="margin-right: 16px;"><span class="ui-spinner ui-widget"><div class="ui-spinner-buttons" style="height: 20px; left: -16px; top: 0px; width: 16px;"><div class="ui-spinner-up ui-spinner-button ui-state-default ui-corner-tr" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-n" style="margin-left: -1px; margin-top: -4px;"> </span></div><div class="ui-spinner-down ui-spinner-button ui-state-default ui-corner-br" style="width: 14px; height: 8px;"><span class="ui-icon ui-icon-triangle-1-s" style="margin-left: -1px; margin-top: -4px;"> </span></div></div></span></span></dt>
                                        <dd>
                                            <div class="uRange ui-slider ui-slider-horizontal ui-widget ui-widget-content ui-corner-all" data-param="saturation"><div class="ui-slider-range ui-widget-header ui-slider-range-min" style="width: 0%;"></div><a class="ui-slider-handle ui-state-default ui-corner-all" href="#" style="left: 0%;"></a></div>
                                        </dd>
                                    </dl>
                                    <div class="form-actions"><a class="buttonW bDefault" data-trigger="reset" href="#"><span class="ico i-reset"></span><span>默认参数</span></a></div>
                                </div>
                            </div>
                        </div>
                        </div>
                    </div>

    </div>
    <div id="divVDBC" style="width:868px;height:600px;display:none;" ></div>
        --%>
    </form>
</body>
<script type="text/javascript">
    var setting = {
        data: {
            simpleData: {
                enable: true
            }
        },
        callback: {
            onClick: onClick
        }
    };
    $(document).ready(function () {
        var zu = $("#hd_PointJson").val();
        var ujson = JSON.parse(zu);
        var ztObj = $("#treeDemo");
        $.fn.zTree.init(ztObj, setting, ujson);
        $(".m-gun-1_ico_docu", ztObj).addClass("ico").parent("a").addClass("disabledNode");
        $(".m-gun_ico_docu", ztObj).addClass("ico");
    });

    function onClick(e, treeId, treeNode) {
        if (!treeNode.isParent) {
            //if (treeNode.iconSkin == "m-gun")//在线
            setPlays(treeNode.id);
        }
    }
</script>
<script type="text/javascript">
    function installPlug() {
        if (confirm('您还没有安装浏览该视频的插件!是否进行安装?'))
            location.href = "http://<%=strPlatformAddr %>/download/WebCtrl_V4.2.3.exe";
        }

        var txt;
        function tokenCallEvent(reqID, isa) {
            var dd = $("#hd_tgt").val();
            $.ajax({
                type: 'POST',
                async: true,
                url: "VideoMultiHK9800.aspx/getVmsTokenAction",
                contentType: 'application/json',
                data: "{'tgt':'" + dd + "'}",
                dataType: "json",
                success: function (data) {
                    var txt = previewOcxObj.setToken(reqID, data.d);
                }
            });
        }
        function tokenKeep() {
            var dd = $("#hd_tgt").val();
            $.ajax({
                type: 'POST',
                async: true,
                url: "VideoMultiHK9800.aspx/getVmsTokenAction",
                contentType: 'application/json',
                data: "{'tgt':'" + dd + "'}",
                dataType: "json",
                success: function (data) {
                    //alert(data.d);
                }
            });
        }

        //获取url参数
        function RequestFrom(key) {
            var locString = location.search;
            var reg = new RegExp("(\\?|\\&)" + key + "=([^\\&]*)(\\&?)", "i").exec(locString);
            if (reg != null) {
                return RegExp.$2;
            }
            else {
                return "";
            }
        }

        $(function () {
            if (navigator.userAgent.indexOf('MSIE') >= 0 || !!window.ActiveXObject || "ActiveXObject" in window) {
                try {
                    var obj = new ActiveXObject("PLATFORMPLAYBACK.PlatformPlaybackCtrl.1");//PLATFORMPREVIEW.PlatformPreviewCtrl.1
                    //alert("已经注册");
                }
                catch (e) {
                    installPlug();
                    return;
                }
            } else {
                $("#divVD").html("暂时仅支持IE浏览器");
            }

            //设置窗口宽度
            initWH();
            //初始化视频窗口
            PreviewOCX({
                divId: "divVD"
            });

            //设置窗口布局 layout_2X2
            var vWL = RequestFrom("WL");
            vWL = vWL && vWL != "" ? vWL : 2;
            setWindowsLayout(vWL);
            setInterval("tokenKeep()", 27000);
        })

        function initWH() {
            var $vd = $("#divVD");
            var $dt = $("#divTree");
            $vd.width($(window).width() - $dt.width() - 17);
            var hg = window.document.body.clientHeight - 4;
            $vd.height(hg);
            $dt.height(hg);
        }
        function play() {
            tXml = $("#hd_xmlPre").val();
            //●﹏● ╯﹏╰
            previewOcxObj.callback[PREVIEW_EVENT_TOKEN] = tokenCallEvent;
            var indexWin = previewOcxObj.getSelectWindow();
            txt = previewOcxObj.startPreview(indexWin, tXml);
        }
        function setPlays(iCode) {
            var dd = $("#hd_tgt").val();
            $.ajax({
                type: 'POST',
                async: true,
                url: "VideoMultiHK9800.aspx/getPreviewOcxOptions",
                contentType: 'application/json',
                data: "{'tgt':'" + dd + "','iCode':'" + iCode + "'}",
                dataType: "json",
                success: function (data) {
                    if (data != "") {
                        $("#hd_xmlPre").val(data.d);
                        play();
                    }
                }
            });
        }



        //function playBack() {
        //    $("#divVDBC").show();
        //    PlaybackOCX({
        //        divId: "divVDBC"
        //    });
        //    var bcXml = $("#hd_playback").val();
        //    callbackOcxObj.setPlayback("2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", bcXml);
        //}

        //云台控制
        //function test() {
        //    var cmdId = '43010000001310000020';
        //    var pXml = '<?xml version="1.0" encoding="utf-8"?>';
        //    pXml += '<PtzControl>';
        //    pXml += '<Action>0</Action>';// <!—开始或停止(开始为0/停止为1) -->
        //    pXml += '<Priority>50</Priority>';//<!—优先级(如果没有该项,则默认为50)-->
        //    pXml += '<Speed>5</Speed>';//  <!-- 速度(如果没有该项,则默认为5)-->
        //    pXml += '<Preset Index =1 DwellTime=50 Speed=5 />';//<!—预置点编号,停留时间和运行速度-->
        //    pXml += '</PtzControl>';
        //    txt = previewOcxObj.ptzControl(cmdId, pXml);
        //}

        //var tXml = '<?xml version="1.0" encoding="utf-8"?>'
        //tXml += '<Preview>'
        //tXml += '<CamIndexCode>43010000001310000020</CamIndexCode> '// <!-- 监控点编号-->
        //tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>'//  <!-- 设备编号-->
        //tXml += '<UserName>admin</UserName> '// <!—设备登录用户密码-->
        //tXml += '<PassWord>AIkEBdZsuRw=</PassWord>'//密码  56636d85ccabdf64e839a2af0ae4e393e98d9b26d65bb4a12f02fa5bc9f0cc04
        //tXml += '<UserLevel>50</UserLevel>'// <!-- 用户级别-->
        //tXml += '<CamName>海康摄像头(录像机)</CamName>'//  <!-- 监控点名称-->
        //tXml += '<DevType>0</DevType>'//  <!-- 厂商类型海康大华等-->
        //tXml += '<ChannelNo>35</ChannelNo>'// <!-- 监控点序号-->
        //tXml += '<LinkType>1</LinkType>'//  <!—1 tcp  2 udp-->
        //tXml += '<DecodeTag></DecodeTag > '//<!—级联的解码类型-->
        //tXml += '<ProSeries>1</ProSeries >'// <!—产品系列-->
        //tXml += '<StreamType>0</StreamType>'// <!—0 主码流 1 子码流-->
        //tXml += '<NetZone cnid="1" pnid="1"/>'// <!-- 网域ID 客户端网域ID,设备网域ID -->
        //tXml += '<CascCode></CascCode >'//<!—级联标识 ,非空为级联监控点-->
        //tXml += '<StreamSvr>'
        //tXml += '<Svr type="3" ip="113.240.239.245" port="7302" />'// <!--type:服务类型定义与平台统一 vag(3),vtdu(41),vtm(4)   ip服务的IP,port服务的port  rtspPort="7302"-->
        //tXml += '<Svr type="4" ip="113.240.239.245" port="557" />'
        //tXml += '</StreamSvr>'
        //tXml += '<IntellInfo>'
        //tXml += '<IndexCode></IndexCode>'// <!-- 智能通道编号-->
        //tXml += '<ChannelNo></ChannelNo>'// <!-- 智能通道号 -->
        //tXml += '<Domaind></Domaind>'// <!-- 智能设备网域ID  -->
        //tXml += '<UserName></UserName>'// <!-- 智能设备用户密码-->
        //tXml += '<PassWord></PassWord>'
        //tXml += '</IntellInfo>'
        //tXml += '<FishEyeInfo>'
        //tXml += '<InstallType></InstallType>'// <!-- 安装方式-->'
        //tXml += '<VideoDevType></VideoDevType>'// <!-- 机型标清网络半球-->
        //tXml += '</FishEyeInfo>'
        //tXml += '</Preview>'

        //tXml = '<?xml version="1.0" encoding="utf-8"?>'
        //tXml += '<Preview>'
        //tXml += '<StreamSvr>'
        //tXml += '<Svr type="3" ip="10.0.3.17" port="7302" rtspPort="7302" />'
        //tXml += '<Svr type="4" ip="10.0.3.17" port="557" />'
        //tXml += '</StreamSvr>'
        //tXml += '<CamIndexCode>43010000001310000020</CamIndexCode>'
        //tXml += '<DevIndexCode>43010000001130000009</DevIndexCode>'
        //tXml += '<LinkType>1</LinkType>'
        //tXml += '<StreamType>0</StreamType>'
        //tXml += '<CamName>海康摄像头(录像机)</CamName>'
        //tXml += '<UserName>admin</UserName>'
        //tXml += '<PassWord>AIkEBdZsuRw=</PassWord>'
        //tXml += '<UserLevel>50</UserLevel>'
        //tXml += '<DevType>0</DevType>'
        //tXml += '<Manufacturer>0</Manufacturer>'
        //tXml += '<ProSeries>1</ProSeries>'
        //tXml += '<ChannelNo>35</ChannelNo>'
        //tXml += '<SubStream>MAIN</SubStream>'
        //tXml += '<NetZone cnid="2" pnid="1" />'
        //tXml += '<TreatyType>SDK</TreatyType>'
        //tXml += '</Preview>'


        ////全局设置
        //var goXml = '<?xml version="1.0" encoding="utf-8"?><global><snap picture="jpeg" save="d:/snap"/><clip packSize="256" save="d:/cut"/><performance decode="5"/></global>'
        //txt = previewOcxObj.setGlobalParam(goXml);

        ////权限设置
        //var RoleXml = '<?xml version="1.0" encoding="utf-8"?>'
        //RoleXml += '<Privileges>'
        //RoleXml += '< Privilege type="0" />' // <!--type是按钮类型 只填入需要显示的按钮,顺序按照XML解析顺序  -->
        //RoleXml += '< Privilege type="1" />'
        //RoleXml += '< Privilege type="2" />'
        //RoleXml += '< Privilege type="3" />'
        //RoleXml += '< Privilege type="4" />'
        //RoleXml += '< Privilege type="5" />'
        //RoleXml += '< Privilege type="6" />'
        //RoleXml += '< Privilege type="7" />'
        //RoleXml += '< Privilege type="8" />'
        //RoleXml += '< Privilege type="9" />'
        //RoleXml += '< Privilege type="10" />'
        //RoleXml += '< Privilege type="11" />'
        //RoleXml += '< Privilege type="12" />'
        //RoleXml += '< Privilege type="13" />'
        //RoleXml += '< Privilege type="22" />'
        //RoleXml += '</ Privileges >'
        //txt = previewOcxObj.setOperAuth(RoleXml);
</script>
</html>

 

using LHSoft.LHP.Common;
using LHSoft.LHP.DAL.BaseData;
using LHSoft.LHP.MainWeb.HK9800Service;
using LHSoft.LHP.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace LHSoft.LHP.MainWeb.Video.Pages
{
    public partial class VideoMultiHK9800 : Page //BasePage //
    {
        /// <summary>
        /// 组织机构类型代码
        /// </summary>
        const int orgCode = 1000;
        /// <summary>
        /// 监控点类型代码
        /// </summary>
        const int monitorPoints = 10000;

        private string StrTgt { get; set; }
        /// <summary>
        /// 服务地址
        /// </summary>
        protected static string strIp { get; set; }//"10.0.3.17" 113.240.239.245
        /// <summary>
        /// 端口
        /// </summary>
        public static int? AccessPort { get; set; }
        /// <summary>
        /// 帐号
        /// </summary>
        protected static string strAccounts { get; set; }//admin
        /// <summary>
        /// 密码
        /// </summary>
        protected static string strPwd { get; set; }//"Lhsoft9114"
        /// <summary>
        /// 视频平台地址
        /// </summary>
        protected static string strPlatformAddr { get; set; }
        /// <summary>
        /// 接口对象
        /// </summary>
        private static VmsSdkWebServicePortTypeClient vmsSdkWebService;
        protected static VmsSdkWebServicePortTypeClient VmsSdkWebService
        {
            get
            {
                if (vmsSdkWebService == null)
                {
                    vmsSdkWebService = new VmsSdkWebServicePortTypeClient();
                }
                return vmsSdkWebService;
            }
            set
            {
                vmsSdkWebService = value;
            }
        }

        /// <summary>
        /// 获取Token
        /// </summary>
        private string strToken
        {
            get
            {
                string xmltoken = VmsSdkWebService.applyToken(StrTgt);

                {
                    return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : "";
                }

            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!InitLoginVideo())
            {
                Response.Write("未获取到视频服务信息!");
                Response.End();
            }

            StrTgt = Login();
            if (string.IsNullOrEmpty(StrTgt))
            {
                Response.Write("登录失败!");
                Response.End();
            }
            hd_tgt.Value = StrTgt;

            bindTree();

            //获取监控点编号
            //string cameraIndexCode = new VmsSdkWebServicePortTypeClient().getResourceByOrgCode(strToken, 0, "1000", ""); //getResourceByCodes getResourceByPage

            //回看 0 中心存储录像,57 存放于本地
            //xmltoken = new VmsSdkWebServicePortTypeClient().applyToken(sr.Rows[0]["tgt"]);
            //strToken = ServiceResult.Token(xmltoken);
            //string strSaveType = "0";
            //hd_playback.Value = new VmsSdkWebServicePortTypeClient().getPlaybackOcxOptions(strToken, cameraIndexCode, strIp, "2016-06-06T 00:00:00Z", "2016-06-07T 00:00:00Z", strSaveType);
            //}

        }
        /// <summary>
        /// 绑定树 传入MN号则取单站点视频,否则取所有站点视频
        /// </summary>
        private void bindTree()
        {
            if (!string.IsNullOrEmpty(strToken))
            {
                List<udtTreeTemp> pList = new List<udtTreeTemp>();
                //资源
                ServiceResult SourceSr = null;
                int count = 0;

                string strMN = "";
                if (Request["MN"] == null)
                {
                    strMN = GetMN;
                }
                else
                {
                    strMN = Request["MN"].ToString();
                }

                if (!string.IsNullOrEmpty(strMN))
                {
                    #region 加载全部站点
                    if (strMN == "ALL")
                    {
                        string strResource = GetResourceByPage(orgCode, ref SourceSr);
                        count = SourceSr.Rows.Count;
                        for (int i = 0; i < count; i++)//构建监控点资源树的组织资源
                        {
                            udtTreeTemp d = new udtTreeTemp();
                            d.id = SourceSr.Rows[i]["i_id"];
                            d.name = SourceSr.Rows[i]["c_org_name"];
                            d.pId = SourceSr.Rows[i]["i_parent_id"] == "null" || SourceSr.Rows[i]["i_parent_id"] == "c_0" ? "" : SourceSr.Rows[i]["i_parent_id"];
                            d.iCode = SourceSr.Rows[i]["c_index_code"];
                            d.open = true;
                            d.iconSkin = getIcoSkin(SourceSr.Rows[i]["c_path"]);
                            pList.Add(d);
                        }

                        //获取叶子结点
                        List<udtTreeTemp> pListChild = new List<udtTreeTemp>();
                        foreach (var item in pList)
                        {
                            if (!pList.Exists(t => t.pId == item.id))
                            {
                                /*因服务器端根据城市读取4个以上视频点位会报错问题,所以使用WebService读取*/
                                HKServer9800.VmsSdkWebService web = new HKServer9800.VmsSdkWebService();
                                string cameraInfo = web.getResourceByOrgCode(strToken, monitorPoints, true, item.iCode, "");
                                //string cameraInfo = VmsSdkWebService.getResourceByOrgCode(strToken, monitorPoints, item.iCode, "");
                                SourceSr = ServiceResult.Parse(cameraInfo);
                                count = SourceSr.Rows.Count;
                                for (int i = 0; i < count; i++)
                                {
                                    udtTreeTemp d = new udtTreeTemp();
                                    d.id = SourceSr.Rows[i]["c_index_code"];
                                    d.name = SourceSr.Rows[i]["c_name"];
                                    d.pId = item.id;
                                    d.open = true;
                                    d.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1";
                                    pListChild.Add(d);
                                }
                            }
                        }
                        pList.AddRange(pListChild);

                        divTree.Style.Add(HtmlTextWriterStyle.Width, "270px");
                    }
                    #endregion

                    #region 加载单站点
                    else
                    {
                        List<T_MNVideoInfo> listVideoMNInfo = new DAL.BaseData.T_MNVideoDAL().GetByFilter(string.Format("PlatformID='hik9800' AND MN='{0}'", strMN));
                        if (listVideoMNInfo != null && listVideoMNInfo.Count > 0)
                        {
                            string strMNName = "";
                            if (Request["mnname"] != null)
                            {
                                strMNName = Server.UrlDecode(Request["mnname"].ToString());
                            }
                            else
                            {
                                strMNName = GetMN_Name;
                            }
                            udtTreeTemp d = new udtTreeTemp();
                            d.id = strMN;
                            d.name = strMNName;
                            d.pId = "";
                            d.iCode = "";
                            d.open = true;
                            d.iconSkin = getIcoSkin("3");
                            pList.Add(d);

                            var listDevIds = listVideoMNInfo.Select(t => t.DevId).ToList();

                            /*因服务器端读取4个以上视频点位会报错问题,所以分页,按次3条读取*/
                            var PageIndex = 0;
                            var PageTotal = Math.Ceiling((double)listDevIds.Count / 3);
                            string cameraInfo = "";
                            for (; PageIndex < PageTotal; PageIndex++)
                            {
                                string[] strDevIds = listDevIds.Skip(3 * PageIndex).Take(3).ToArray();
                                cameraInfo = VmsSdkWebService.getResourceByCodes(strToken, monitorPoints, strDevIds);// new string[] { item.DevId }
                                SourceSr = ServiceResult.Parse(cameraInfo);
                                count = SourceSr.Rows.Count;

                                for (int i = 0; i < count; i++)
                                {
                                    udtTreeTemp dd = new udtTreeTemp();
                                    dd.id = SourceSr.Rows[i]["c_index_code"];
                                    //先取base数据库中设置名称
                                    var tempVInfo = listVideoMNInfo.Find(f => f.DevId == dd.id);
                                    dd.name = tempVInfo != null && !string.IsNullOrEmpty(tempVInfo.VDName) ? tempVInfo.VDName : SourceSr.Rows[i]["c_name"];
                                    dd.pId = strMN;
                                    dd.open = true;
                                    dd.iconSkin = SourceSr.Rows[i]["i_is_online"] == "1" ? "m-gun" : "m-gun-1";
                                    pList.Add(dd);
                                }
                            }
                        }
                        //divTree.Style.Add(HtmlTextWriterStyle.Width, "200px");
                    }
                    #endregion

                    hd_PointJson.Value = JsonHelper.GetJson<List<udtTreeTemp>>(pList);
                }
            }
        }
        /// <summary>
        /// 初始化视频登录信息
        /// </summary>
        /// <returns></returns>
        private static bool InitLoginVideo()
        {
            List<T_VideoPlatformInfo> vPlatform = new T_VideoPlatformDAL().GetByID("hik9800");
            if (vPlatform == null || vPlatform.Count < 1)
            {
                return false;
            }
            strIp = vPlatform[0].AccessIP; //"113.240.239.245"
            strAccounts = vPlatform[0].CagUser;
            strPwd = vPlatform[0].CagPass;
            strPlatformAddr = strIp;

            if (vPlatform[0].AccessPort.HasValue)
            {
                AccessPort = vPlatform[0].AccessPort.Value;
                strPlatformAddr += ":" + vPlatform[0].AccessPort.Value;
            }
            return true;
        }
        /// <summary>
        /// 登录服务获取唯一标识
        /// </summary>
        /// <returns></returns>
        private string Login()
        {
            string xml = VmsSdkWebService.sdkLogin(strAccounts, SHA256Encrypt(strPwd), strIp, "", "");
            ServiceResult sr = ServiceResult.Parse(xml);
            if (sr.ResultCode != 0 || sr.Rows[0]["tgt"].Length == 0)
            {
                return "";
            }
            return sr.Rows[0]["tgt"];
        }
        /// <summary>
        /// 获取Token
        /// </summary>
        /// <param name="tgt"></param>
        /// <returns></returns>
        private static string getToken(string tgt)
        {
            string xmltoken = VmsSdkWebService.applyToken(tgt);
            return !string.IsNullOrEmpty(xmltoken) ? ServiceResult.Token(xmltoken) : "";
        }
        /// <summary>
        /// 验证Token
        /// </summary>
        /// <param name="tgt"></param>
        /// <returns></returns>
        [System.Web.Services.WebMethod]
        public static string getVmsTokenAction(string tgt)
        {
            return getToken(tgt);
        }

        /// <summary>
        /// 获取预览xml
        /// </summary>
        /// <param name="tgt"></param>
        /// <param name="iCode"></param>
        /// <returns></returns>
        [System.Web.Services.WebMethod]
        public static string getPreviewOcxOptions(string tgt, string iCode)
        {
            //获取视频预览xml
            string strToken = getToken(tgt);
            if (!string.IsNullOrEmpty(strToken))
                return VmsSdkWebService.getPreviewOcxOptions(getToken(tgt), iCode, strIp);
            else
                return "";
        }

        /// <summary>
        /// 密码加密
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string SHA256Encrypt(string str)
        {
            byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
            System.Security.Cryptography.SHA256 Sha256 = new System.Security.Cryptography.SHA256Managed();
            byte[] by = Sha256.ComputeHash(SHA256Data);
            return BitConverter.ToString(by).Replace("-", "").ToLower();
        }

        const int _StartPage = 1;
        const int _PageSize = 10;
        /// <summary>
        /// 分页获取组织资源,并将组织资源信息保存在sr中
        /// </summary>
        /// <param name="token"></param>
        /// <param name="command"></param>
        /// <param name="sr"></param>
        /// <returns></returns>
        public string GetResourceByPage(int command, ref ServiceResult sr)//string token,
        {
            int startpage = _StartPage;

            string result = VmsSdkWebService.getResourceByPage(strToken, command, startpage, _PageSize, "", "", 1);
            StringBuilder sb = new StringBuilder();
            sb.Append(string.Format("第{0}页", startpage));
            sb.Append("\r\n");
            sb.Append(result);
            sb.Append("\r\n");

            sr = ServiceResult.Parse(result);
            while (sr.ResultCode == 0 && sr.Total > sr.Rows.Count)
            {
                result = VmsSdkWebService.getResourceByPage(strToken, command, ++startpage, _PageSize, "", "", 1);
                if (string.IsNullOrEmpty(result))
                {
                    break;
                }
                ServiceResult tmp = ServiceResult.Parse(result);
                if (tmp.Rows.Count < 1)
                {
                    break;
                }
                sr.Rows.AddRange(tmp.Rows);

                sb.Append(string.Format("第{0}页", startpage));
                sb.Append("\r\n");
                sb.Append(result);
                sb.Append("\r\n");
            }
            return sb.ToString();
        }

        /// <summary>
        /// 获取图标
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        private string getIcoSkin(string str)
        {
            int ik = str.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Length;
            switch (ik)
            {
                case 1: str = "province"; break;
                case 2: str = "city"; break;
                case 3: str = "town"; break;
                default: str = "town"; break;

            }
            return str;
        }

        /// <summary>
        /// 获取当前MN号
        /// </summary>
        public string GetMN
        {
            get
            {
                return Request.Cookies["checkedNode"] == null ? "" : Request.Cookies["checkedNode"].Value;
            }
        }

        /// <summary>
        /// 获取站点名称
        /// </summary>
        public string GetMN_Name
        {
            get
            {
                return Request.Cookies["checkedNodeName"] == null ? "" : Server.UrlDecode(Request.Cookies["checkedNodeName"].Value);
            }
        }
    }

    //public class udtTreeTemp
    //{
    //    public string id { get; set; }
    //    public string pId { get; set; }
    //    public string name { get; set; }
    //    public bool open { get; set; }
    //    public string iconSkin { get; set; }
    //    public string iCode { get; set; }
    //}
}