﻿/*
公共访问基函数

char *pcQueryResult;        数据记录
unsigned long ulLength;     所有字符总长度
unsigned int unRecordNum;   总记录数
int nRetStatus;             执行结果 1：没有取完,2：取完了，-1：失败，-2：失败，原因为没有停止。

*/
function CallFuncBase(callbackname, cmdName, inPara, para) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName(cmdName, nsuri));
    if (inPara != "") {
        el.create_child(new WS.QName(inPara, nsuri)).set_value(para);
    }
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
                   function (call, envelope) {
                       var len = envelope.get_body().get_all_children()[0].get_all_children().length;
                       var arrResult = new Array();
                       for (var i = 0; i < len; i++) {
                           try {
                               if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                                   return;
                               arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                           }
                           catch (err) {
                           }
                       } 
                       var temOP = eval(callbackname);
                       temOP(arrResult);
                   });
}

function CallFuncBase2(callbackname, cmdName, inPara, para) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName(cmdName, nsuri));
    if (inPara != "") {
        el.create_child(new WS.QName(inPara, nsuri)).set_value(para);
    }
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
                   function (call, envelope) {
                       var len = envelope.get_body().get_all_children()[0].get_all_children().length;
                       var arrResult = new Array();
                       for (var i = 0; i < len; i++) {
                           try {
                               if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                                   return;
                               arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                           }
                           catch (err) {
                           }
                       }
                       var temOP = eval(callbackname);
                       temOP(arrResult);
                   });
}


/*
获取通道状态(返回时多返回一个通道号)
*/
function CallFuncBase_Status(callbackname, cmdName, inPara, ch) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName(cmdName, nsuri));
    if (inPara != "") {
        el.create_child(new WS.QName(inPara, nsuri)).set_value(ch);
    }
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
                   function (call, envelope) {
                       var len = envelope.get_body().get_all_children()[0].get_all_children().length;
                       var arrResult = new Array();
                       for (var i = 0; i < len; i++) {
                           try {
                               if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                                   return;
                               arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                           }
                           catch (err) {
                           }
                       }
                       var temOP = eval(callbackname);
                       temOP(arrResult, ch);
                   });
}



/*
根据sql查询录音
*/
function CallFuncBase_QuerySQLRecord(callbackname, year, month, sql) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXExecuteSQL', nsuri));
    el.create_child(new WS.QName('usYear', nsuri)).set_value(year);
    el.create_child(new WS.QName('ucMonth', nsuri)).set_value(month);    
    el.create_child(new WS.QName('pcSQL', nsuri)).set_value(sql);
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}

/*
取出查詢錄音结果
*/
function CallFuncBase_QuerySQLRecordResponse(callbackname) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXGetQueryRecordResult', nsuri));
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    if (i == 0)
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value().split('\n'); //元数0为数据记录，1为长度，2为执行结果。
                    else
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();

                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}


/*
增加日誌
*/
function CallFuncBase_AddOpLog(callbackname, dt, operator, content) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXAddOpRecord', nsuri));
    el.create_child(new WS.QName('pcOperation', nsuri)).set_value(content);
    el.create_child(new WS.QName('pcOperator', nsuri)).set_value(operator);
    el.create_child(new WS.QName('pcTime', nsuri)).set_value(dt);
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}


/*
取出查询日志记录
*/
function CallFuncBase_GetOpQueryRecordResponse(callbackname) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXGetQueryOpDBResult', nsuri));
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    if (i == 0)
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value().split('\n'); //元数0为数据记录，1为长度，2为执行结果。
                    else
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();

                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}


/*
取出查询用户记录
*/
function CallFuncBase_GetUserQueryRecordResponse(callbackname) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXGetQueryUserDBResult', nsuri));
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    if (i == 0)
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value().split('\n'); //元数0为数据记录，1为长度，2为执行结果。
                    else
                        arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();

                }
                catch (err) {
                    //alert("查詢用戶數據庫時出錯：" + arrResult[i]);
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}


/*
修改IP地址
*/
function CallFuncBase_SetNetCfg(callbackname, ip, mask, gateway, dns, mac) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXSetNetCfg', nsuri));
    var obj = el.create_child(new WS.QName('NetCfg', nsuri));
    obj.create_child(new WS.QName('IPAddr', nsuri)).set_value(ip);
    obj.create_child(new WS.QName('Mask', nsuri)).set_value(mask);
    obj.create_child(new WS.QName('Gateway', nsuri)).set_value(gateway);
    obj.create_child(new WS.QName('DNS', nsuri)).set_value(dns);
    obj.create_child(new WS.QName('MacAddr', nsuri)).set_value(mac);
    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
}



/*
设置全局配置参数
*/
function CallFuncBase_SetGlobalCfg(callbackname, cfg) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXSetGlobalCfg', nsuri));
    var obj = el.create_child(new WS.QName('GlobalCfg', nsuri));
    obj.create_child(new WS.QName('user', nsuri)).set_value(cfg[0]);
    obj.create_child(new WS.QName('password', nsuri)).set_value(cfg[1]);
    obj.create_child(new WS.QName('debug-msg-save', nsuri)).set_value(cfg[2]);
    obj.create_child(new WS.QName('debug-msg-print', nsuri)).set_value(cfg[3]);
    obj.create_child(new WS.QName('compress-type', nsuri)).set_value(cfg[4]);
    obj.create_child(new WS.QName('open-heart-pkt', nsuri)).set_value(cfg[5]);
    obj.create_child(new WS.QName('disk-path', nsuri)).set_value(cfg[6]);
    obj.create_child(new WS.QName('work-channels', nsuri)).set_value(cfg[7]);
    obj.create_child(new WS.QName('reboot-time', nsuri)).set_value(cfg[8]);
    obj.create_child(new WS.QName('control-port', nsuri)).set_value(cfg[9]);
    obj.create_child(new WS.QName('web-port', nsuri)).set_value(cfg[10]);
    obj.create_child(new WS.QName('ftp-port', nsuri)).set_value(cfg[11]);
    obj.create_child(new WS.QName('net-mode', nsuri)).set_value(cfg[12]);
    obj.create_child(new WS.QName('remote-ip', nsuri)).set_value(cfg[13]);
    obj.create_child(new WS.QName('remote-user', nsuri)).set_value(cfg[14]);
    obj.create_child(new WS.QName('remote-password', nsuri)).set_value(cfg[15]);
    obj.create_child(new WS.QName('net-timeout', nsuri)).set_value(cfg[16]);
    obj.create_child(new WS.QName('start-chnl-no', nsuri)).set_value(cfg[17]);
    obj.create_child(new WS.QName('group-name', nsuri)).set_value(cfg[18]);

    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {                         
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
    }



/*
设置设备通道配置参数
*/
function CallFuncBase_SetChnlCfg(callbackname, ch, cfg) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName('GXSetChannelCfg', nsuri));
    el.create_child(new WS.QName('ucChannel', nsuri)).set_value(ch);

    var obj = el.create_child(new WS.QName('ChannelCfg', nsuri));
    obj.create_child(new WS.QName('local-code', nsuri)).set_value(cfg[0]);
    obj.create_child(new WS.QName('name', nsuri)).set_value(cfg[1]);
    obj.create_child(new WS.QName('enable-record', nsuri)).set_value(cfg[2]);
    obj.create_child(new WS.QName('start-record-mode', nsuri)).set_value(cfg[3]);
    obj.create_child(new WS.QName('key-mode-keys', nsuri)).set_value(cfg[4]);
    obj.create_child(new WS.QName('key-mode-endkeys', nsuri)).set_value(cfg[5]);
    obj.create_child(new WS.QName('voice-mode-sensive', nsuri)).set_value(cfg[6]);
    obj.create_child(new WS.QName('voice-mode-time', nsuri)).set_value(cfg[7]);
    obj.create_child(new WS.QName('rec-agc', nsuri)).set_value(cfg[8]);
    obj.create_child(new WS.QName('play-agc', nsuri)).set_value(cfg[9]);
    obj.create_child(new WS.QName('rec-agc-param1', nsuri)).set_value(cfg[10]);
    obj.create_child(new WS.QName('rec-agc-param2', nsuri)).set_value(cfg[11]);
    obj.create_child(new WS.QName('play-agc-param1', nsuri)).set_value(cfg[12]);
    obj.create_child(new WS.QName('play-agc-param2', nsuri)).set_value(cfg[13]);
    obj.create_child(new WS.QName('cancel-record-keys', nsuri)).set_value(cfg[14]);
    obj.create_child(new WS.QName('call-out-dtmf-len', nsuri)).set_value(cfg[15]);
    obj.create_child(new WS.QName('dtmf-level', nsuri)).set_value(cfg[16]);
    obj.create_child(new WS.QName('off-hook-time', nsuri)).set_value(cfg[17]);
    obj.create_child(new WS.QName('on-hook-time', nsuri)).set_value(cfg[18]);
    obj.create_child(new WS.QName('cancel-dtmfs', nsuri)).set_value(cfg[19]);
    obj.create_child(new WS.QName('cancel-record-phones', nsuri)).set_value(cfg[20]);
    obj.create_child(new WS.QName('work-time', nsuri)).set_value(cfg[21]);
    obj.create_child(new WS.QName('hookon-volt', nsuri)).set_value(cfg[22]);
    obj.create_child(new WS.QName('hookoff-volt', nsuri)).set_value(cfg[23]);
    obj.create_child(new WS.QName('stop-rcv-dtmf-time', nsuri)).set_value(cfg[24]);
    obj.create_child(new WS.QName('v-mode-rec-max-time', nsuri)).set_value(cfg[25]);
    obj.create_child(new WS.QName('rec-direct', nsuri)).set_value(cfg[26]);
    obj.create_child(new WS.QName('rec-timeout', nsuri)).set_value(cfg[27]);

    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult,ch);
        });
}



/*
增加/修改用戶
*/
function CallFuncBase_Add_Edit_User(callbackname, strfunc, cfg) {
    var envelope = new SOAP.Envelope();
    var body = envelope.create_body();
    var nsuri = 'urn:webserver';
    var el = body.create_child(new WS.QName(strfunc, nsuri));
    var obj = el.create_child(new WS.QName('UserInfo', nsuri));

    obj.create_child(new WS.QName('id', nsuri)).set_value(cfg[0]);
    obj.create_child(new WS.QName('crt-time', nsuri)).set_value(cfg[1]);
    obj.create_child(new WS.QName('usercode', nsuri)).set_value(cfg[2]);
    obj.create_child(new WS.QName('username', nsuri)).set_value(cfg[3]);
    obj.create_child(new WS.QName('userpassword', nsuri)).set_value(cfg[4]);
    obj.create_child(new WS.QName('exitpassword', nsuri)).set_value(cfg[5]);
    obj.create_child(new WS.QName('e-exitsysem', nsuri)).set_value(cfg[6]);
    obj.create_child(new WS.QName('e-autoremotelogin', nsuri)).set_value(cfg[7]);
    obj.create_child(new WS.QName('e-systemmanage', nsuri)).set_value(cfg[8]);
    obj.create_child(new WS.QName('e-customer', nsuri)).set_value(cfg[9]);
    obj.create_child(new WS.QName('e-query', nsuri)).set_value(cfg[10]);
    obj.create_child(new WS.QName('e-count', nsuri)).set_value(cfg[11]);
    obj.create_child(new WS.QName('e-monitor', nsuri)).set_value(cfg[12]);
    obj.create_child(new WS.QName('e-delete', nsuri)).set_value(cfg[13]);
    obj.create_child(new WS.QName('e-viewlog', nsuri)).set_value(cfg[14]);
    obj.create_child(new WS.QName('e-export', nsuri)).set_value(cfg[15]);
    obj.create_child(new WS.QName('e-extract', nsuri)).set_value(cfg[16]);
    obj.create_child(new WS.QName('e-popcustomer', nsuri)).set_value(cfg[17]);
    obj.create_child(new WS.QName('e-usechannel', nsuri)).set_value(cfg[18]);
    obj.create_child(new WS.QName('pop-e-query', nsuri)).set_value(cfg[19]);
    obj.create_child(new WS.QName('pop-e-del', nsuri)).set_value(cfg[20]);
    obj.create_child(new WS.QName('pop-e-monitor', nsuri)).set_value(cfg[21]);
    obj.create_child(new WS.QName('pop-e-linestate', nsuri)).set_value(cfg[22]);
    obj.create_child(new WS.QName('pop-e-edtcus', nsuri)).set_value(cfg[23]);
    obj.create_child(new WS.QName('web-e-query', nsuri)).set_value(cfg[24]);

    var call = new WS.Call('webserverPortType');
    call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
    }



    /*
    修改密碼
    */
    function CallFuncBase_EditPwd(callbackname, ucode, oldpwd, newpwd) {
        var envelope = new SOAP.Envelope();
        var body = envelope.create_body();
        var nsuri = 'urn:webserver';
        var el = body.create_child(new WS.QName('GXChangeUserPassword', nsuri));
        el.create_child(new WS.QName('pcUserCode', nsuri)).set_value(ucode);
        el.create_child(new WS.QName('pcOldPassword', nsuri)).set_value(oldpwd);
        el.create_child(new WS.QName('pcNewPassword', nsuri)).set_value(newpwd);
        var call = new WS.Call('webserverPortType');
        call.invoke(envelope,
        function (call, envelope) {
            var len = envelope.get_body().get_all_children()[0].get_all_children().length;
            var arrResult = new Array();
            for (var i = 0; i < len; i++) {
                try {
                    if (!envelope.get_body().get_all_children()[0].get_all_children()[i])
                        return;
                    arrResult[i] = envelope.get_body().get_all_children()[0].get_all_children()[i].get_value();
                }
                catch (err) {
                }
            }
            var temOP = eval(callbackname);
            temOP(arrResult);
        });
    }















/*********************
* 调用
*********************/

/*
返回数据
*/
function GetCallBack(strArrObj) {
    for (var i = 0; i < str.length; i++) {
    document.getElementById('TextArea1').value = "";
    document.getElementById('TextArea1').value += strArrObj[i] + "\r\n";
    }
}

/*
获取设备空间
*/
function GXGetTerminalDiskSpace_onclick() {
    CallFuncBase(GetCallBack, 'GXGetDiskFreeSpace', '', 0);
}

/*
获取设备硬件信息
*/
function GXGetHardwareInfo_onclick() {
    CallFuncBase(GetCallBack, 'GXGetHardwareInfo', '', 0);
}

/*
获取设备ID
*/
function GXGetTerminalID_onclick() {
    CallFuncBase(GetCallBack, 'GXGetTerminalID', '', 0);
}

/*
获取设备时间
*/
function GXGetTerminalTime_onclick() {
    CallFuncBase(GetCallBack, 'GXGetTerminalTime', '', 0);
}

/*
获取设备通道状态
*/
function GXGetTerminalStatus_onclick() {
    CallFuncBase(GetCallBack, 'GXGetChnlStatus2', '', 0);
}

