      function open_calendar_multi(o_img, s_format) {
        var i_row = get_row(o_img);
        if (i_row==-1) {
          var s_fld = 'document.f1.wpVisit';
        } else {
          var s_fld = 'document.f1.wpVisit[' + i_row + ']';
        } // if single row
        //alert(s_fld);
        //alert(eval(s_fld).value);
        //open_calendar(s_fld,'dd-mmm-yyyy');
        show_calendar(s_fld,eval(s_fld).value, s_format);
      }
    
    function get_row(o_element) {
        var cur_row = o_element.parentNode.parentNode;
        var tb_parent = cur_row.parentNode; //table including tfooter row
        var ary_rows = tb_parent.getElementsByTagName('tr');
        //alert(ary_rows.length);
        if (ary_rows.length==1) {
          return -1;
        } else {
          //alert('not a single row!');
          for (var i=0;i<ary_rows.length;i++) {
            if (ary_rows[i]==cur_row) {
              return i;
            } // if matching row
          } // for each row
        } // if single row
      return -1;
    }

  function add_item(img, s_fld) {
    var t_body = img.parentNode.parentNode.parentNode;
    var tb_rows = t_body.getElementsByTagName("tr");
    //alert(tb_rows.length);
    var cur_row = img.parentNode.parentNode;
    var i_index = get_row(img);
    //alert(i_index);
    var f_action = (i_index==-1) ? eval("document.f1." + s_fld + "_action") : eval("document.f1." + s_fld + "_action[" + i_index + "]");
    if (img.src.indexOf("_close")>=1) {
      // we want to delete the row
      if (f_action.value=="edit") {
        img.parentNode.parentNode.className = "delete";
        f_action.value="delete";
        img.src = img.src.replace("_close", "_open");
      } else {
        t_body.removeChild(cur_row);
      }
    } else {
      var new_row = img.parentNode.parentNode.cloneNode(true);
      if (i_index == -1) {
        var o_fld = eval("document.f1." + s_fld)
      } else {
        var o_fld = eval("document.f1." + s_fld + "[" + i_index + "]")
      } // getIndex
      var is_list = (o_fld.type.indexOf("select") > 0);
      //alert("Is Lilst? "+is_list);
      // we want to add a new item
      if (is_list) {
        if (o_fld.options[o_fld.selectedIndex].value!="@select@") {
          if (!check_dupe(o_fld)) {
            img.src = "/common/i/tree_close_lrg.gif";
            t_body.appendChild(new_row);
          } else {
            return false;
          } // check_dupe
        } else {
          alert("Please select a valid item.");
          return false;
        } // selectedIndex != 0
      } else {
        //alert("Test!");
        //alert("f_action.value = " + f_action.value);
        if (f_action.value=="delete") {
          img.src = "/common/i/tree_close_lrg.gif";
          f_action.value="edit";
          img.parentNode.parentNode.className="edit";
        } else {
          if ((!check_dupe(o_fld))&&(o_fld.value+""!="")) {
            img.src = "/common/i/tree_close_lrg.gif";
            //alert("document.f1." + s_fld + "[" + tb_rows.length + "]");
            t_body.appendChild(new_row);
            //alert("document.f1." + s_fld + "[" + tb_rows.length + "]");
            if (i_index>=0) {
               //alert("document.f1." + s_fld + "[" + (eval("document.f1." + s_fld).length - 1) + "]");
               eval("document.f1." + s_fld + "[" + (eval("document.f1." + s_fld).length - 1) + "]").value = "";
            } else {
               eval("document.f1." + s_fld + "[1]").value = "";
            }
          } else {
            if (o_fld.value+""=="") { alert("You must enter a value before adding a new row!") }
          }
        }
      } // is _list
    } // if tree_close
    return true;
  } // function add item
  
  function list_renumber() {
    var t_body = document.getElementById("tbQR");
    var tb_rows = t_body.getElementsByTagName("tr");
    var ix=0;
    if (tb_rows == 1) {
      document.f1.qr3.value=1;
    } else {
      for (var i=0;i<tb_rows.length;i++) {
        //alert('Row '+i);
        if (document.f1.qr2_action[i].value!='delete') {
          document.f1.qr3[i].value=ix+1;
          tb_rows[i].getElementsByTagName("td")[1].innerHTML=ix+1;
          ix++;
        } else {
          document.f1.qr3[i].value='D';
          tb_rows[i].getElementsByTagName("td")[1].innerHTML='*DEL*';
        } // if delete
      }
    }
  }
  
  function check_dupe(o_fld) {
    // used to make sure we don't select multople identical values
    // alert(o_list.type);  Should use this to differentiate instead of is_list
    //if (!is_list) return false; // temporary fix for non-list entries
    var is_list = (o_fld.type.indexOf("select") > 0);
    var i_index = get_row(o_fld);
    if ((i_index >= 0)&&(is_duplicate(o_fld, i_index))) {
       alert("That item is already selected, please make a different selection.");
       if (is_list) { o_fld.selectedIndex = 0 } else { o_fld.value="" }
       return true;
    }    
    return false;
  }
  
  function is_duplicate(o_fld, i_index) {
    // check to see whether an item is already selected
    if (i_index < 0) return false;
    var s_val_new, i_ix;
    var s_fld = o_fld.name;
    var s_form = o_fld.form.name;
    var is_list = (o_fld.type.indexOf("select") > 0);
    var s_val = (is_list) ? o_fld.options[o_fld.selectedIndex].value: o_fld.value;
    for (var i=0;i<i_index;i++) { // check each list box
      s_val_new = (is_list) ? 
        eval("document." + s_form + "." + s_fld + "[" + i + "]").options[eval("document." + s_form + "." + s_fld + "[" + i + "]").selectedIndex].value : 
        eval("document." + s_form + "." + s_fld + "[" + i + "]").value;
      if (s_val == s_val_new) return true;
    } // for
    return false;
  }

      function row_promote(o_img, to_top) {
      /* Quick hacks just for the poll */
      var o_row = o_img.parentNode.parentNode;
      var o_body = o_row.parentNode;
      var o_rows = o_body.getElementsByTagName('tr');
      var i = row_index(o_rows, o_row); 
      if (o_rows.length > 1) {
        if (to_top == true) {
          if (i > 0) {
            var o_row_old = o_body.removeChild(o_row);
            o_body.insertBefore(o_row_old,o_body.rows[0]);
          }
        } else {
          var o_row_old = o_body.removeChild(o_row);
          if (i==0) {
            o_body.appendChild(o_row_old);
          } else {
            o_body.insertBefore(o_row_old,o_body.rows[i-1]);
         } // i == first row
       } // if to top
     } // > 1
     list_renumber();
    }
    
    function row_demote(o_img, to_bottom) {
      var o_row = o_img.parentNode.parentNode;
      var o_body = o_row.parentNode;
      var o_rows = o_body.getElementsByTagName('tr');
      var i = row_index(o_rows, o_row); 
      //alert(i);
      if (o_rows.length > 1) {
        if (to_bottom==true) {
          if (i<(o_rows.length)) {
            var o_row_old = o_body.removeChild(o_row);
            o_body.appendChild(o_row_old);
          }
        } else {
          var o_row_old = o_body.removeChild(o_row);
          if (i==(o_rows.length)) {
            o_body.insertBefore(o_row_old,o_body.rows[0]);
          } else {
            if (i==(o_rows.length-1)) {
              o_body.appendChild(o_row_old);
            } else {
              o_body.insertBefore(o_row_old,o_body.rows[i+1]);
            }
         } // i = last row
       } // if to bottom
     } // > 1
     list_renumber();
    }
    function row_index(o_rows, o_row) {
      for (var i=0;i<o_rows.length;i++) {
        if (o_row == o_rows[i]) { return i}
      }
      return -1;
    }
   /*
    function list_renumber(o_rows) {
      for (var i=0;i<o_rows.length;i++) {
        o_rows[i].cells[1].innerHTML = i+1+".";
      }
    }
   */
    
    function is_valid() {
      var i_rows = document.getElementById("tbQR").getElementsByTagName("tr").length;
      var s_temp = "", is_err, s_err="The following errors occurred:\n";
      var is_lower = false, is_upper = false;
      // Check data set
      if (i_rows==1) {
        s_temp = trim(document.f1.qr3.value);
      } else {
        for (var i=0;i<i_rows;i++) {
          s_temp += trim(document.f1.qr3[i].value);
          //alert(is_lower+'-'+is_upper);
        }   //for    
      } // i_rows==1
      if (s_temp+""=="") {
        is_err = true;
        s_err += "\n-- Please enter some Question options before creating your Question.";
      }
      /*
      if (trim(document.f1.f3.value)=="") {
        is_err = true;
        s_err += "\n-- Please enter an Indicator name";
      }
      if (isNaN(parseFloat(document.f1.ds10.value))) {
        is_err = true;
        s_err += "\n-- Please enter a valid Target value";
      }
      */
      if (is_err==true) alert(s_err);
      return !is_err;    }
    
    function trim(value) {
       var temp = value;
       var obj = /^(\s*)([\W\w]*)(\b\s*$)/;
       if (obj.test(temp)) { temp = temp.replace(obj, '$2'); }
       var obj = / +/g;
       temp = temp.replace(obj, " ");
       if (temp == " ") { temp = ""; }
       return temp;
    }
    
    function submit_valid(o_submit) {
      if (is_valid()==true) { 
        submit_it(o_submit);
      } 
      return false;
    }