﻿// JScript 文件

// JScript 文件

var request_array = new Array();                            //定义记录用户请求的数组
window.setInterval("request_timer_scan();",1000*5);         //每5秒运行一次request_timer_scan方法，获取请求到返回结果

function cookie_function(){}
cookie_function.GetCookieVal=function(offset){
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}
cookie_function.SetCookie=function(name, value){
	var expdate = new Date();
	var argv = cookie_function.SetCookie.arguments;
	var argc = cookie_function.SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
	document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))+((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))+((secure == true) ? "; secure" : "");
}
cookie_function.DelCookie=function(name){
	var exp = new Date();
	exp.setTime(exp.getTime() - 1);
	var cval =P_GetCookie(name);
	document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
cookie_function.GetCookie=function(name){
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen){
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)return cookie_function.GetCookieVal(j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function request_info(carno,functionid,parameters,responseno){
    this.carno_ = carno;                 //车牌号码
    this.functionid_ = functionid;       //功能编号
    this.parameters_ = parameters;       //发送参数
    this.respserialno_ = responseno;     //返回结果序列号
    this.times_ = 0;                     //等待时间
    
    var serialno = cookie_function.GetCookie("request_serialno");
    if(serialno == null){
        this.reqserialno_ = 0;
    }else{
        this.reqserialno_ = parseInt(serialno,10);
    }
    this.reqserialno_++;
    cookie_function.SetCookie("request_serialno",this.reqserialno_.toString());
}


//functionid 取值说明：
/*
1.查询当前位置
2.设置上发条件
3.恢复出厂设置
4.设置城区监护
5.设置长途报平安
6.设置停车监护

7.设置自动应答
8.设置拨出号码

9. 设置长途报平安区域一
10.设置长途报平安区域二
11.设置长途报平安区域三
12.设置长途报平安区域四
.
.
.

*/
function add_request(carno,functionid,parameters,responseno){ 
    
    var request_ = new request_info(carno,functionid,parameters,responseno);
    request_array.push(request_);   
    return request_.reqserialno_;
}

function remove_request_by_request_serialno(serialno){
    for(i=0;i<request_array.length;i++){
        if(request_array[i].reqserialno_ == serialno){
            request_array.splice(i,1);
            return;
        }
    }
}

function remove_request_by_response_serialno(serialno){
    if(serialno == 0)                                       //为零表示没有返回序号，不能根据response序号删除
        return;        
    for(i=0;i<request_array.length;i++){
        if(request_array[i].respserialno_ == serialno){
            request_array.splice(i,1);
            return;
        }
    }
}
//检查该车辆的此功能是否正在执行，如果正在执行，提示用户
function check_request_is_busy(carno,functionid){
    for(i=0;i<request_array.length;i++){
        if(request_array[i].carno_ == carno && request_array[i].functionid_ == functionid){
           return true;
        }
    }
    return false;
}
//根据request序号，更新response序号
function set_request_return_response_serialno(reqserialno,respserialno){
    for(i=0;i<request_array.length;i++){
    //    alert("request_array[i].reqserialno_:"+request_array[i].reqserialno_);
        if(request_array[i].reqserialno_ == reqserialno){
            request_array[i].respserialno_ = respserialno;
            return true;
        }
    }
    return false;
}
function get_carno_by_request_serial_no(reqserialno){
     for(i=0;i<request_array.length;i++){
        if(request_array[i].reqserialno_ == reqserialno){
            return request_array[i].carno_;
        }
    }
    return "";
}
function get_functionid_by_request_serial_no(reqserialno){
    for(i=0;i<request_array.length;i++){
        if(request_array[i].reqserialno_ == reqserialno){
            return request_array[i].functionid_;
        }
    }
    return "";
}

function request_timer_scan(){
    for(i=0;i<request_array.length;i++){
        if(request_array[i].respserialno_ > 0){
            request_array[i].times_ += 5;          
            if(request_array[i].times_ >= 600)
            {  
               if(request_array[i].functionid_==1)
               {
               	   addStatus("["+request_array[i].carno_ + "]即时位置通信不良！");               	 
               }else if(request_array[i].functionid_==2)
               {
               	   addStatus("["+request_array[i].carno_ + "]上发条件通信不良！");               	
               }else if(request_array[i].functionid_==3)
               {
               	   addStatus("["+request_array[i].carno_ + "]出厂配置通信不良！");               	
               }else if(request_array[i].functionid_==4)
               {
               	   addStatus("["+request_array[i].carno_ + "]城区监护通信不良！");               	
               }else if(request_array[i].functionid_==5)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安通信不良！");               	
               }else if(request_array[i].functionid_==6)
               {
               	   addStatus("["+request_array[i].carno_ + "]停车监护通信不良！");               	
               }else if(request_array[i].functionid_==7)
               {
               	   addStatus("["+request_array[i].carno_ + "]自动应答通信不良！");               	
               }else if(request_array[i].functionid_==8)
               {
               	   addStatus("["+request_array[i].carno_ + "]拨出号码通信不良！");               	
               }else if(request_array[i].functionid_==9)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域一通信不良！");               	
               }else if(request_array[i].functionid_==10)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域二通信不良！");               	
               }else if(request_array[i].functionid_==11)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域三通信不良！");               	
               }else if(request_array[i].functionid_==12)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域四通信不良！");               	
               }else if(request_array[i].functionid_==13)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域五通信不良！");               	
               }else if(request_array[i].functionid_==14)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域六通信不良！");               	
               }else if(request_array[i].functionid_==15)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域七通信不良！");               	
               }else if(request_array[i].functionid_==16)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域八通信不良！");               	
               }else if(request_array[i].functionid_==17)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域九通信不良！");               	
               }else if(request_array[i].functionid_==18)
               {
               	   addStatus("["+request_array[i].carno_ + "]长途报平安区域十通信不良！");               	
               }
                request_array.splice(i,1);                                  //删除该请求
                return;
            }
            Get_Return_Result(request_array[i].respserialno_,login_key,get_return_result_callback);                    //该函数定义于acxs_function.js文件中
        }
    }
}
//取短信返回结果回调
function get_return_result_callback(result,responseXml){   
    response_analysis(result.response_serial_no,result.response_code,result.response_result);
}
function request_serail_to_string(){
    var current_opertion = "";
    for(i=0;i<request_array.length;i++){
        current_opertion += (  request_array[i].reqserialno_ + "," 
                             + request_array[i].functionid_ + ","
                             + request_array[i].carno_ + ";");
    }
    return current_opertion;
}

function get_response_serial_no_by_request_serial_no(reqserialno){
    for(i=0;i<request_array.length;i++){
        if(request_array[i].reqserialno_ == reqserialno){
            return request_array[i].respserialno_;
        }
    }
    return "";
}

function response_analysis(respserialno,result,result_text){
    if(result == 0) return;                                             //0表示没有返回结果，不处理
    for(i=0;i<request_array.length;i++){
        if(request_array[i].respserialno_ == respserialno){
            var request_ = request_array[i];
            request_array.splice(i,1);                                  //删除该请求
            var car_no = request_.carno_;
            if(request_.functionid_ == 1){                               //查询当前位置对于查询位置，1表示返回结果，2表示超时没有返回结果，3表示位置无效
                if(result == 1){                                        //成功   等于1 返回即时精准位置 4返回之前精准位置 5返回大概位置
                    Show_Current_Position_To_Map(car_no,login_key,Show_Current_Position_To_Map_Callback);
                    addStatus("["+car_no + "]返回即时精准位置！");
                }else if(result == 4){                                  //返回之前精准位置
                    Show_Current_Position_To_Map(car_no,login_key,Show_Current_Position_To_Map_Callback);
                    addStatus("["+car_no + "]返回之前精准位置！");
                }else if(result == 5){                                  //返回大概位置
                    Show_Current_Position_To_Map(car_no,login_key,Show_Current_Position_To_Map_Callback);
                    addStatus("["+car_no + "]返回大概位置！");
                }else if(result == 3){                                  //位置无效
                    addStatus("["+car_no + "]返回GPS信号不良！");
                }else{
                    addStatus("["+car_no + "]返回通信不良！");
                }
            }else if(request_.functionid_ == 2){                         //设置上发条件
                if(result == 1){                                                                         //成功
                    addStatus("["+car_no + "]设置上发条件成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置上发条件失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 3){                         //恢复出厂配置
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置恢复出厂配置成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置恢复出厂配置失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 4){                         //设置城区监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置城区监护成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置城区监护失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 5){                         //设置长途报平安
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 6){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置停车监护成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置停车监护失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 7){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置自动应答成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置自动应答失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 8){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置拨出号码成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置拨出号码失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 9){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域一成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域一失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 10){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域二成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域二失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 11){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域三成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域三失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 12){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域四成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域四失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 13){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域五成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域五失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 14){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域六成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域六失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 15){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域七成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域七失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 16){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域八成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域八失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 17){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域九成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域九失败！");           //在状态栏提示，失败的原因
                }
            }else if(request_.functionid_ == 18){                         //设置停车监护
                if(result == 1){                                       //成功
                    addStatus("["+car_no + "]设置长途报平安区域十成功！");
                }else{                                                  //失败
                    addStatus("["+car_no + "]设置长途报平安区域十失败！");           //在状态栏提示，失败的原因
                }
            }
            return;
        }
    }
}
function Get_IE_Version(){
    if(navigator.appName != "Microsoft Internet Explorer")
        window.alert("在IE6.0或者IE7.0下浏览网站效果最佳！");
    var ie_version_temp = 6;
    var ieversion = navigator.appVersion;
    var head = ieversion.indexOf("MSIE");
    if(head >0){
        var tail = ieversion.indexOf(";",head+4);
        if(tail > 0){
            ie_version_temp = parseInt(ieversion.substring(head+4,tail));
        }
    }
    var ieminorversion = navigator.appMinorVersion;
    if(ieminorversion.indexOf("SP1") > 0)
	ie_version_temp += 0.1;
    else if(ieminorversion.indexOf("SP2") > 0)
	ie_version_temp += 0.2;
    else if(ieminorversion.indexOf("SP3") > 0)
	ie_version_temp += 0.3;
    return ie_version_temp;
}
