<!-- Beginning hidden

String.prototype.trim = function() {                               // 去前后空格
      return this.replace(/^\s*/g,"").replace(/\s*$/g,"");
}

var ParameterSetCreater = function(i_name) {
      i_name = (i_name==null?"":i_name.trim());
      if (i_name!="" && eval("self."+i_name)) {alert(i_name + "已经存在，请换一个名"); return null;}

      var i_obj = new Object();
      i_obj.name = i_name;                    // 生成器的名
//------ 预建函数 ------------------
      i_obj.accept = function() {     // 接收参数。传入参数是一系列形如“name=value”的参数。不预清上次分析的结果；如需要，则可预先使用 clear() 方法。
            var args = this.accept.arguments;
            var i, k, name, v;
            for (i=0; i<args.length; i++) {
                  if (args[i] != "") {
                        k = args[i].indexOf("=");
                        if (k > 0) {
                              name = args[i].substring(0, k).trim();                          // 属性名
                              v    = (k<args[i].length-1?args[i].substring(k+1).trim():"");   // 属性值
                              if (name!="") {this.setValue(name, v);}
                        }
                  }
            }
      }
      i_obj.getParameterNames = function() {    // 获取所有的属性名。
            var pns = new Array();
            for (var i=0; i<this.attributes.length; i++) {
                  pns[i] = this.attributes[i].name;
            }
            return pns;
      }
      i_obj.getAttribute = function(name) {    // 获取指定名的属性对象。大小写敏感。
            for (var i=0; i<this.attributes.length; i++) {
                  if (this.attributes[i].name == name) {return this.attributes[i];}
            }
            return null;
      }
      i_obj.setValue = function(name, v) {    // 设置：指定属性的值。
            var a_obj = this.getAttribute(name);
            if (a_obj) {a_obj.value = (v==null?"":""+v);}
            else {if (this.appendable) {
                        var a_obj = new Object();
                        a_obj.name  = name;                    // 属性名
                        a_obj.value = (v==null?"":""+v);       // 属性值
                        this.attributes[this.attributes.length] = a_obj;
                  }
            }
      }
      i_obj.clear = function() {                          // 清空所有属性值
            for (var i=0; i<this.attributes.length; i++) {this.attributes[i].value = "";}
      }
      i_obj.getValue = function(name) {                   // 获取指定属性的字符串值
            var a_obj = this.getAttribute(name);
            if (a_obj) {return a_obj.value;}
            else {return "";}
      }
      i_obj.getBoolean = function(name, defaultBoolean) { // 获取指定属性的逻辑型值。0、no、off、false，则返回假；1、yes、on、true，则返回真；否则，返回 defaultBoolean（缺省为 fasle）。
            var v = this.getValue(name);
            if (v=="") {return (defaultBoolean?true:false);}
            else {v = v.toUpperCase();
                  if (defaultBoolean) {
                        if (v=="0" || v=="FALSE" || v=="OFF" || v=="NO") {return false;}
                        else {return true;}
                  }
                  else {if (v=="1" || v=="TRUE" || v=="ON" || v=="YES") {return true;}
                        else {return false;}
                  }
            }
      }
      i_obj.getInteger = function(name, defaultInt) {     // 获取指定属性的数值型值。不可解，则返回 defaultInt（缺省为 0）。
            defaultInt = (isNaN(defaultInt)?0:defaultInt);
            var v = this.getValue(name);
            if (v=="") {return defaultInt;}
            else {var n = parseInt(v, 10);
                  if (isNaN(n)) {return defaultInt;}
                  else {return n;}
            }
      }
//----------------------------
      i_obj.create = function() {             // 建立参数集。传入参数是一系列形如“name=value”的预设属性。
            var args = this.create.arguments;
            var p_obj = new Object();         // 参数集
            p_obj.appendable = true;          // 除预设的外，是否还可添加属性
            p_obj.attributes = new Array();   // 属性数组
// 载入预建函数
            p_obj.accept = this.accept;
            p_obj.getAttribute = this.getAttribute;
            p_obj.getParameterNames = this.getParameterNames;
            p_obj.getAttributeNames = this.getParameterNames;
            p_obj.setValue = this.setValue;
            p_obj.clear = this.clear;
            p_obj.getValue = this.getValue;
            p_obj.getBoolean = this.getBoolean;
            p_obj.getInteger = this.getInteger;
// 开始分析预设的属性
            var i, k, name, a_obj;
            for (i=0; i<args.length; i++) {
                  if (args[i] != "") {
                        k = args[i].indexOf("=");
                        if (k > 0) {
                              name = args[i].substring(0, k).trim();
                              if (name != "") {
                                    a_obj = new Object();
                                    a_obj.name  = name;                                                    // 属性名
                                    a_obj.value = (k<args[i].length-1?args[i].substring(k+1).trim():"");   // 属性值
                                    p_obj.attributes[p_obj.attributes.length] = a_obj;
                             }
                        }
                  }
            }
            return p_obj;
      }

      if (i_obj.name!="") {eval(i_obj.name + " = i_obj");}
      return i_obj;
}

//-->
