﻿<!--
// 递交处理工具
// 必须同时引入 ParameterSetCreater.js。

var SubmitTools = function(myName, submit_loc)
{
    var new_obj = new Object();
    new_obj.name                = myName;                                               // 对象的名
    new_obj.submit_location     = submit_loc;                                           // 表单位置元素
    new_obj.submit_element      = submit_loc.children[1];                               // 自动生成的递交表单。第0个子元素是注解。
    new_obj.submit_Table        = submit_loc.children[1].children[0];                   // 表单中的内容TABLE
    new_obj.parameterSetCreater = ParameterSetCreater();                                // 参数集生成器
    new_obj.isSubmitting        = false;                                                // 是否正在载入
    new_obj.submitQueue         = new Array();                                          // 允许的递交对象的队列
    
    new_obj.add_submitQueue = function(id, txt, act, targ)    // 添加一个递交对象。参数：对象标识、描述、递交动作、目标窗口
    {
        var s_obj = new Object();
        s_obj.id          = id;                                      // 标识
        s_obj.brief       = txt;                                     // 描述
        s_obj.action      = act;                                     // 递交动作
        s_obj.target      = targ;                                    // 目标窗口
        s_obj.parameters  = this.parameterSetCreater.create();       // 递交参数
        s_obj.submitState = 0;                                       // 当前递交状态：0——无动作；1——要求递交；2——正在递交。
        
        this.submitQueue[this.submitQueue.length] = s_obj;
        return s_obj;
    }
    new_obj.get_submitQueue = function(id)     // 获取指定的递交对象
    {
        for (var i=0; i<this.submitQueue.length; i++)
        {
            if (id.toUpperCase()==this.submitQueue[i].id.toUpperCase()) {return this.submitQueue[i];}
        }
        return null;
    }
    new_obj.get_submitQueueByState = function(flg)     // 按递交状态获取递交对象
    {
        for (var i=0; i<this.submitQueue.length; i++)
        {
            if (flg==this.submitQueue[i].submitState) {return this.submitQueue[i];}
        }
        return null;
    }
    new_obj.submit = function(s_obj)     // 递交指定的对象。递交完成后须执行submitComplete方法。
    {
        if (this.isSubmitting)
        {
            s_obj.submitState = 1;
        }
        else
        {
            this.isSubmitting = true;
            s_obj.submitState = 2;
            this.clear_submit();
            for (var i=0; i<s_obj.parameters.attributes.length; i++)
            {
                this.add_input(s_obj.parameters.attributes[i].name, s_obj.parameters.attributes[i].value, s_obj.parameters.attributes[i].name);
            }
            //this.submit_location.style.display = "block";
            if (s_obj.action!=null && s_obj.action!="") {this.submit_element.action = s_obj.action;}
            this.submit_element.target = (s_obj.target==null||s_obj.target==""?"_self":s_obj.target);
            this.submit_element.submit();
        }
    }
    new_obj.submitComplete = function()    // 递交完成后的扫尾工作
    {
        if (!this.isSubmitting) {return;}
        var s_obj = this.get_submitQueueByState(2);
        if (s_obj) {s_obj.submitState = 0;}
        s_obj = this.get_submitQueueByState(1);
        this.isSubmitting = false;
        if (s_obj) {this.submit(s_obj);}
    }
    new_obj.clear_submit = function()     // 清空递交表单
    {
        for (var i=this.submit_Table.rows.length-1; i>=0; i--) {this.submit_Table.deleteRow(i);}
    }
    new_obj.add_input = function(name, v, t)      // 在递交表单中添加一个控件。参数：控件名、控件值、控件描述。
    {
        var row_no = this.submit_Table.rows.length;
        this.submit_Table.insertRow(row_no);
        this.submit_Table.rows[row_no].insertCell();
        this.submit_Table.rows[row_no].cells[0].innerHTML = "" + row_no + ", " + t + "（" + name + "）"
                                                     + "：<textarea name='" + name + "'>"+v+"</textarea>";
    }
    new_obj.check_keypress = function(c, s)     // 检查按键是否是数字和传入串
    {
        if (c<48 || c>57)
        {
            for (var i=0; i<s.length; i++)
            {
                if (c==s.charCodeAt(i)) {return true;}
            }
            return false;
        }
        else {return true;}
    }
    new_obj.check_null_input = function(i_obj, txt)    // 检查 i_obj 控件是否空值；为空，则显示提示文字 txt，控件聚焦，返回 false；否则，返回 true。
    {
        if (i_obj.value==null || i_obj.value=="")
        {
            alert(txt);
            i_obj.focus();
            return false;
        }
        return true;
    }
    new_obj.onlySubmit = function(act, targ)     // 仅递交表单到指定页面
    {
//        this.submit_location.style.display = "block";
        if (act!=null && act!="") {this.submit_element.action = act;}
        if (targ!=null && targ!="") {this.submit_element.target = targ;}
        this.submit_element.submit();
    }
    
    eval(new_obj.name + " = new_obj");
    return new_obj;
}

//-->
