uploadCount = 0;
validator = new Validator('xas');
combos = new Combos();
menus = new Menus(new Menu('qxmlOptionsMenu'),
                  new Menu('qxmlTypeMenu'),
                  new Menu('qCOPMenu'),
                  new Menu('memoMenu'));

function setTimerPopup(t) {
   if (!t) {
      t = 1;
   }
   t = t*1000*60;
   setTimeout(timerPopup, t);
}

function timerPopup() {
   popup('timeout.html', 450, 450, 'OneReportLogin');
}

function applyRONumber(form, qidField, flag) {
   if (!qidField.checked) {
      return;
   }

   // get indid
   var indidField = form.indid;
   var indid = '';
   if (indidField.length) {
      for (var i=0;i < indidField.length;i++) {
         if (indidField[i].checked) {
            indid = indidField[i].value;
         }
      }
   }
   else {
      if (indidField.checked) {
         indid = indidField.value;
      }
   }
   if (indid == '') {
      alert('You must choose an Industry!');
      qidField.checked = false;
      return;
   }
   var elements = form.elements;
   var qid = qidField.value;
   var ron = eval('form.ron_'+qid+'_'+indid+'.value');
   var ros = eval('form.ros_'+qid+'_'+indid+'.value');
   for (var i=0;i < elements.length;i++) {
      var a = elements[i].name.split('_');
      if (a[1] == qid) {
         if (a[0] == 'ron') {
            elements[i].value = ron;
         }
         else if (a[0] == 'ros') {
            elements[i].value = ros;
         }
      }
   }
   qidField.checked = false;
}

function toggleQMatrix(form, flag, prefix, industryid, roid) {
   var elements = form.elements;
   for (var i=0;i < elements.length;i++) {
      var a = elements[i].name.split('_');
      if (a[0] == prefix) {
         var check = true;
         if (industryid > 0) {
            check = check && (a[1] == industryid);
         }
         if (roid > 0) {
            check = check && (a[2] == roid);
         }
         if (check) {
            elements[i].checked = flag;
         }
      }
   }
}

function toggleReleaseMatrix(form, flag, prefix, qid, roid) {
   var elements = form.elements;
   for (var i=0;i < elements.length;i++) {
      var a = elements[i].name.split('_');
      if (a[0] == prefix) {
         var check = true;
         if (qid > 0) {
            check = check && (a[1] == qid);
         }
         if (roid > 0) {
            check = check && (a[2] == roid);
         }
         if (check) {
            elements[i].checked = flag;
         }
      }
   }
}

function toggleQMatrixRON(c, prefix, roid) {
   var form = c.form;
   var ron = eval('form.ron_0_'+roid);
   var elements = form.elements;
   for (var i=0;i < elements.length;i++) {
      var a = elements[i].name.split('_');
      if (a[0] == prefix) {
         var check = true;
         if (roid > 0) {
            check = check && (a[2] == roid);
         }
         if (check) {
            elements[i].value = ron.value;
         }
      }
   }
   c.checked = false;
}

function checkStatus(status, change, nodata, i) {
   if (status) {
      var checked = false;
      for (var j=1;j < status.length;j++) { 
         if (status[j].checked) {
            checked = true;
         }
      }
      if (!checked) {
         status[i].checked = true;
      }
   }
   if (change) {
      change.value = 1;
   }
   if (nodata) {
      for (var i=0;i < nodata.length;i++) {
         if (nodata[i].checked) {
            //alert("You have answered the question. " +
                  //"The No Data Provided option has been cleared.");
            nodata[i].checked = false;
         }
      }
   }
}

function initCheckChange() {
   window.onbeforeunload = checkChange;
}

function checkChange() {
   var f = document.forms['QForm'];
//   alert("got here: needToConfirm = " + needToConfirm + " f = " + f);
   if (f && needToConfirm) {
      var change = f.change;
      var save = f.save;
      if (change.value == '1' && save.value == '0') {       
        // m = "You have made some changes to this data request that are\n"+
        //     "currently not saved.";
         m =  "You have made some changes to this data request that are\n"+
              "currently not saved.\n\nIf you press OK, your changes will be NOT be saved.";
        return(m);
      }
   }
}

function showRowMenu(type, id) {
   var f = document.forms['QForm'];
   if (f) {
      var pid = f.rowid.value;
      if (pid != '') {
         hideRowMenu('qc', pid);
         hideRowMenu('qa', pid);
      }
      f.rowid.value = id;
   }
   var obj = document.getElementById(type+'_'+id);
   var x = 0, y = 0, xMax = 0, yMax = 0, dx = 20, dy = -75;
   if (document.all) {
      dy += 5;
   }
   x = getXPos('row_'+id);
   y = getYPos('row_'+id);
   obj.style.left = (x + dx) + 'px';
   obj.style.top = (y + dy) + 'px';
   obj.style.visibility = 'visible';
   restoreNeedToConfirm();
}

function hideRowMenu(type, id) {
   var obj = document.getElementById(type+'_'+id);
   obj.style.visibility = 'hidden';
   restoreNeedToConfirm();
}

function clearAnswer(f) {
   for (i = 0;i < f.elements.length;i++) {
      var e = f.elements[i];
      var name = e.name;
      var qprefix = name.substr(0, 2);
      var qsprefix = name.substr(0, 3);
      if (qprefix == 'q_') {
         if (e.length) {
            for (var j=0;j < j.length;j++) {
               clearAnswerField(f, e[j]);
            }
         }
         else {
            clearAnswerField(f, e);
         }
      }
      else if (qsprefix == 'qs_') {
         clearAnswerField(f, e);
      }
   }
}

function clearAnswerField(f, e) {
   var value = clearField(e);
   if (value != '') {
      f.change.value = 1;
   }
}

function clearField(e) {
   var type = e.type;
   var value = '';
   if (type == 'file' || type == 'text' || type == 'textarea') {
      value = e.value;
      e.value = '';
   }
   else if (type == 'select-one') {
      value = e.options[e.selectedIndex].value;
      e.options[e.selectedIndex].selected = false;
   }
   else if (type == 'select-multiple') {
      for (var j = 0;j < e.options.length;j++) {
         if (e.options[j].selected) {
            value += e.options[j].value;
            e.options[j].selected = false;
         }
      }
   }
   else if (type == 'checkbox') {
      if (e.checked) {
         value = e.value;
         e.checked = false;
      }
   }
   else if (type == 'radio') {
       if (e.checked) {
         value = e.value;
         e.checked = false;
      }
   }
   else {
      value = e.value;
      e.value = '';
   }
   return(value);
}

function checkNoData(nodata) {
   var message = "Please clear all answers before choosing a "+
                 "No Data Provided option.";
   var field;
   if (nodata.length) {
      for (var i=0;i < nodata.length;i++) {
         if (nodata[i].checked) {
            field = nodata[i];
         }
      }
   }
   else {
      field = nodata;
   }
   if (!field) {
      return(true);
   }
   var f = field.form;
   if (field.checked) {
      for (i = 0;i < f.elements.length;i++) {
         var e = f.elements[i];
         var name = e.name;
         var prefix = name.substr(0, 2);
         var value = '';
         if (prefix != 'q_') {
            continue;
         }
         if (e.length) {
            for (var j=0;j < e.length;j++) {
               value += validator.__value(e);
            }
         }
         else {
            value = validator.__value(e);
         }
         if (value != '') {
            alert(message);
            field.checked = false;
            return(false);
         }
      }
   }
   return(true);
}

function addUploadField(obj, name) {
   var obj = document.getElementById(obj);
   if (!obj) {
      return;
   }
   uploadCount++;
   name += uploadCount;
   obj.innerHTML +=
      '<div style="padding-top: 5px">'+"\n"+
      'Upload File: <input type="file" name="'+name+'" size="30">'+"\n"+
      '</div>'+"\n";
}

function addURLField(obj, name) {
   var obj = document.getElementById(obj);
   if (!obj) {
      return;
   }
   obj.innerHTML +=
      '<div style="padding-top: 5px">'+"\n"+
      'Enter URL: <input type="text" name="'+name+'" size="60">'+"\n"+
      '</div>'+"\n";
}

function saveSelectedDocs(tfield, sfield) {
   var tfieldArray = new Array();

   // get checked docids
   if (sfield.length) {
      for (var i=0;i < sfield.length;i++) {
         if (sfield[i].checked) {
            tfieldArray.push(sfield[i].value);
         }
      }
   }
   else {
      if (sfield.checked) {
         tfieldArray.push(sfield.value);
      }
   }

   // save checked docids
   tfield.value = tfieldArray.join(',');
   return(true);
}

function saveQDocs(sf, type) {
   var tf = window.opener.document.forms['QForm'];
   var sfield = sf.docid;
   var tfield = eval('tf.'+type);
   var tfieldArray = new Array();
   var tfieldDone;
   if (tfield.value != '') {
      tfieldDone = tfield.value.split(',');
   }
   else {
      tfieldDone = new Array();
   }
   var done = new Array();
   for (var i=0;i < tfieldDone.length;i++) {
      done[tfieldDone[i]] = true;
   }

   // get checked docids
   if (sfield.length) {
      for (var i=0;i < sfield.length;i++) {
         if (sfield[i].checked) {
            if (!done[sfield[i].value]) {
               tfieldArray.push(sfield[i].value);
               tfieldDone.push(sfield[i].value);
            }
         }
      }
   }
   else {
      if (sfield.checked) {
         if (!done[sfield.value]) {
            tfieldArray.push(sfield.value);
            tfieldDone.push(sfield.value);
         }
      }
   }

   // save checked docids
   tfield.value = tfieldDone.join(',');

   // update table
   var tableObj = window.opener.document.getElementById(type+'Table');
   for (var i=0;i < tfieldArray.length;i++) {
      var docid = tfieldArray[i];
      var row = tableObj.insertRow(tableObj.rows.length);
      row.id = '' + docid;
      var titleObj = document.getElementById('docTitle'+docid);
      var imgObj = document.getElementById('docImg'+docid);
      var c;
      c = row.insertCell(0);
      c.innerHTML = imgObj.innerHTML;
      c = row.insertCell(1);
      c.innerHTML = titleObj.innerHTML;
      c = row.insertCell(2);
      c.innerHTML = 'Reference Page #:';
      c = row.insertCell(3);
      c.innerHTML = '<input type="text" name="'+type+'Page'+tfieldArray[i]+'" size="5" maxlength="100" value="">';
      c = row.insertCell(4);
      c.innerHTML = '<a href="'+titleObj.href+'" target="'+titleObj.target+'" onclick="saveNeedToConfirm()">View</a> | <a href="javascript:delQDoc('+"'"+type+"'"+', '+docid+')" onclick="saveNeedToConfirm()">Delete</a>';
   }

   // update change
   checkStatus(tf.status, tf.change, false, 0)

   // close window
   window.close();
}

function delQDoc(type, docid) {
   restoreNeedToConfirm();
   var tf = document.forms['QForm'];
   var tfield = eval('tf.'+type);
   var tfieldArray = tfield.value.split(',');
   var newArray = new Array();
   for (var i=0;i < tfieldArray.length;i++) {
      if (tfieldArray[i] != docid) {
         newArray.push(tfieldArray[i]);
      }
   }
   tfield.value = newArray.join(',');
   var tableObj = document.getElementById(type+'Table');
   var row = document.getElementById('' + docid);
   tableObj.deleteRow(row.rowIndex);
}


function Delegation(form, form2) {
   this.form = form;
   this.form2 = form2;
   this.delegated = new Array();
   this.redelegated = new Array();
   this.validateCheckCategory = DelegationValidateCheckCategory;
   this.checkCategory = DelegationCheckCategory;
   this.checkQuestion = DelegationCheckQuestion;
   this.submit = DelegationSubmit;
   this.toggle = DelegationToggle;
   this.showHide = DelegationShowHide;
   this.addTeam = DelegationAddTeam;
   this.addUser = DelegationAddUser;
   this.delegatedLength = DelegationDelegatedLength;
}

function DelegationValidateCheckCategory(catid, user_type) {
    var f = document.forms[this.form2];
    var cat = eval('f.cat'+catid);
    var message = "You are assigning an entire section (the section heading and its contents) to a new Section Administrator. If you proceed, you will no longer \"own\" this section. When the new Section Administrator delegates requests, the requests will be removed from your Delegation Page and any affected functions. To retain the ability to delegate, view, edit or approve these data requests, individually delegate each request to a user (or team) instead of changing section head delegations."



    if (user_type == 'Section' && cat.checked) {
        if (confirm(message)) {
            this.checkCategory(catid);
        } else {
            cat.checked = false;
        }
    } else {
        this.checkCategory(catid);
    }

}

function DelegationCheckCategory(catid, checked) {
   var f = document.forms[this.form2];
   var cat = eval('f.cat'+catid);
   var level = parseInt(cat.value) || 0;
   var qlevel = 0;
   //alert("level is "+level+" and cat is "+catid);
   //alert("DelegationCheckCategory.arguments.length is: " + DelegationCheckCategory.arguments.length);
   // check sub category
   if (DelegationCheckCategory.arguments.length == 2) {
      if (cat.disabled) {
         return;
      }
      if (level < 2) {
         cat.checked = checked;
         this.delegated[catid+'_0'] = (checked) ? 1 : 0;
      }
      else {
         this.redelegated[catid+'_0'] = (checked) ? 1 : 0;
      }
   }
   else {
      checked = cat.checked;
      this.delegated[catid+'_0'] = (checked) ? 2 : 0;
   }

   // check current category
   if (checked) {
      qlevel = 1;
   }

   // check other qids in same category
   var qfields = eval('f.catq'+catid);
   if (qfields) {
      if (qfields.length) {
         for (var i=0;i < qfields.length;i++) {
            var q = eval('f.q'+qfields[i].value);
            var level = parseInt(q.value) || 0;
            if (level < 2) {
               q.checked = checked;
               this.delegated[catid+'_'+qfields[i].value] =
                  (checked) ? qlevel : 0;
           //    this.redelegated[catid+'_'+qfields[i].value] = 
           //        (checked) ? 1 : 0;
            }
            else {
               this.redelegated[catid+'_'+qfields[i].value] =
                  (checked) ? 1 : 0;
            }
         }
      }
      else {
         var q = eval('f.q'+qfields.value);
         var level = parseInt(q.value) || 0;
         if (level < 2) {
            q.checked = checked;
            this.delegated[catid+'_'+qfields.value] =
               (checked) ? qlevel : 0;
         }
         else {
            this.redelegated[catid+'_'+qfields.value] =
               (checked) ? 1 : 0;
         }
      }
   }

   // check sub categories
   var cfields = eval('f.catp'+catid);
   if (cfields) {
      if (cfields.length) {
         for (var i=0;i < cfields.length;i++) {
            this.checkCategory(cfields[i].value, checked);
         }
      }
      else {
         this.checkCategory(cfields.value, checked);
      }
   }
}

function DelegationCheckQuestion(catid, qid) {
   var f = document.forms[this.form2];
   var checked = true;

   // current qid
   var q = eval('f.q'+qid);
   var qlevel = 0;
   if (q.checked) {
      qlevel = 2;
   }
   //alert("checkQuestion: cat is "+catid+" q is "+qid+" and level is "+qlevel);

   this.delegated[catid+'_'+qid] = qlevel;
}

function DelegationSubmit() {
   // get forms
   var f = document.forms[this.form];
   var f2 = document.forms[this.form2];
   var errors = '';
   
   // get delegated
   var delegated = new Array();
   for (var k in this.delegated) {
      //alert("what is index 1 at split k? " + (k.split("_"))[1]);
      if (f.teamid.selectedIndex > 0 && (k.split("_"))[1] == 0) {
          errors += "You have assigned a team to be responsible for a section. You cannot assign a team to a section. However, you may delegate any (or all) individual data requests within a section to a team. Please change your section delegation(s) as needed. [Each section is highlighted in gray, although some sections may contain only one data request.]";
      }
      
      var l = parseInt(this.delegated[k]);
      if (l > 0) {
         delegated.push(k+'_'+l);
      }
   }

   // get redelegated
   var redelegated = new Array();
   for (var k in this.redelegated) {
      var l = parseInt(this.redelegated[k]);
      if (l > 0) {
         redelegated.push(k+'_'+l);
      }
   }

   // update form
   f.delegated.value = delegated.join(',');
   f.redelegated.value = redelegated.join(',');
   
   // validate form
   var r = validator.process(f, errors);
   if (!r) {
      f.userid.selectedIndex = 0;
      f.teamid.selectedIndex = 0;
      this.delegated = new Array();
      f.reset();
      f2.reset();
      return;
   }
   
   f.submit();
}

function DelegationToggle(categoryid) {
   var f = document.forms[this.form2];
   var qfields = eval('f.catq'+categoryid);
   if (qfields.length) {
      for (var i=0;i < qfields.length;i++) {
         toggleObject('catq'+qfields[i].value, 'table-row');
      }
   }
   else {
      toggleObject('catq'+qfields.value, 'table-row');
   }
   var obj = document.getElementById('anchor'+categoryid);
   if (obj) {
      var a = obj.innerHTML;
      if (a == 'Close') {
         obj.innerHTML = 'View';
      }
      else {
         obj.innerHTML = 'Close';
      }
   }
}

function DelegationShowHide(categoryid, showhide) {
   var f = document.forms[this.form2];
   var qfields = eval('f.catq'+categoryid);
   if (qfields.length) {
      for (var i=0;i < qfields.length;i++) {
	 if (showhide == 'show') {
	    showObject('catq'+qfields[i].value, 'table-row');
         } else if (showhide == 'hide') {
	    hideObject('catq'+qfields[i].value);
         }
      }
   }
   else {
      if (showhide == 'show') {
	 showObject('catq'+qfields.value, 'table-row');
      } else if (showhide == 'hide') {
	 hideObject('catq'+qfields.value);
      }
   }
   var obj = document.getElementById('anchor'+categoryid);
   if (obj) {
      if (showhide == 'hide') {
         obj.innerHTML = 'View';
      } else if (showhide == 'show') {
         obj.innerHTML = 'Close';
      }
   }
}

function DelegationAddTeam(teamid, name, message) {
   var f = document.forms[this.form];
   var options = f.teamid.options;
   var l = options.length;
   options[l] = new Option(name, teamid);
   f.teamid.selectedIndex = l;
}

function DelegationAddUser(userid, name, message) {
   var f = document.forms[this.form];
   var options = f.userid.options;
   var l = options.length;
   options[l] = new Option(name, userid);
   f.userid.selectedIndex = l;
}

function DelegationDelegatedLength() {
   var i = 0;
   for (var k in this.delegated) {
     i++;
   }
   return i;
}

delegation = new Delegation('DelegationForm', 'DelegationForm2');

function QSelection(form, form2, form3) {
   this.form = form;
   this.form2 = form2 || form;
   this.form3 = form3 || form;
   this.doc = document;
   if (form2 && window.parent) {
      this.doc = window.parent.document;
   }
   this.selected = new Array();
   this.checkCategory = QSelectionCheckCategory;
   this.checkQuestion = QSelectionCheckQuestion;
   this.checkParent = QSelectionCheckParent;
   this.update = QSelectionUpdate;
   this.updateRO_GRI = QSelectionUpdateRO_GRI;
}

function QSelectionUpdateRO_GRI() {
  //alert(window.document.frames['pdftool_frame'].document.PDFToolFrameForm.ros.value);
  var filterForm = document.forms["PDFToolFilterForm"];
  var processForm = document.forms["PDFToolProcessForm"];

  var selectedROs = new Array();
  for (var i=0; i < filterForm.ros.length; i++) {
    if (filterForm.ros[i].checked) {
      selectedROs.push(filterForm.ros[i].value);
    }
  }
  processForm.ros.value = selectedROs.join(",");
 
  for (var i=0; i < filterForm.gri.length; i++) {
    if (filterForm.gri[i].checked) {
      processForm.gri.value = filterForm.gri[i].value
    }
  }
  
  //alert("got here processForm.gri.value is [" + processForm.gri.value  + "]");
}

function QSelectionCheckCategory(catid, checked) {
   var f = document.forms[this.form];
   var cat = eval('f.cat'+catid);
   if (QSelectionCheckCategory.arguments.length < 2) {
      checked = cat.checked;
   }
   else {
      if (cat) {
         cat.checked = checked;
      }
   }

   // check other qids in same category
   var qfields = eval('f.catq'+catid);
   if (qfields) {
      if (qfields.length) {
         for (var i=0;i < qfields.length;i++) {
            var q = eval('f.q'+qfields[i].value);
            q.checked = checked;
            this.selected[qfields[i].value] = checked;
         }
      }
      else {
         var q = eval('f.q'+qfields.value);
         q.checked = checked;
         this.selected[qfields.value] = checked;
      }
   }

   // check sub categories
   var cfields = eval('f.catp'+catid);
   if (cfields) {
      if (cfields.length) {
         for (var i=0;i < cfields.length;i++) {
            this.checkCategory(cfields[i].value, checked);
         }
      }
      else {
         this.checkCategory(cfields.value, checked);
      }
   }
   this.checkParent(catid, checked);
   this.update();
}

function QSelectionCheckQuestion(catid, qid) {
   var f = document.forms[this.form];

   // current qid
   var q = eval('f.q'+qid);
   var checked = q.checked;
   this.selected[qid] = checked;

   // check other qids in same category
   var qfields = eval('f.catq'+catid);
   if (qfields) {
      if (qfields.length) {
         for (var i=0;i < qfields.length;i++) {
            var q = eval('f.q'+qfields[i].value);
            checked = checked && q.checked;
         }
      }
      else {
         var q = eval('f.q'+qfields.value);
         checked = checked && q.checked;
      }
   }
   this.checkParent(catid, checked);
   this.update();
}

function QSelectionCheckParent(catid, checked) {
   var f = document.forms[this.form];
   var cat = eval('f.cat'+catid);
   if (!cat) {
      return;
   }
   cat.checked = checked;
   var pcatid = cat.value;
   var cfields = eval('f.catp'+pcatid);
   if (cfields) {
      if (cfields.length) {
         for (var i=0;i < cfields.length;i++) {
            var c = eval('f.cat'+cfields[i].value);
            checked = checked && c.checked;
         }
      }
      else {
            var c = eval('f.cat'+cfields.value);
            checked = checked && c.checked;
      }
   }
   this.checkParent(pcatid, checked);
}

function QSelectionUpdate() {
   // get forms
   var f2 = this.doc.forms[this.form2];
   var f3 = this.doc.forms[this.form3];

   // get delegated
   var selected = new Array();
   for (var k in this.selected) {
      if (this.selected[k]) {
         selected.push(k);
      }
   }

   // update form
   f3.cids.value = selected.join(',');
   if (f2.audit) {
      if (f2.audit[0].checked) {
         f3.audit.value = f2.audit[0].value;
      }
      else if (f2.audit[1].checked) {
         f3.audit.value = f2.audit[1].value;
      }
   }
}

function setQAttached(field, index, value) {
   if (field.length) {
      field[index].value = value;
   }
   else {
      field.value = value;
   }
}

function showMemo(sname, tname, aname, mname) {
   var snode = document.getElementById(sname);
   var tnode = document.getElementById(tname);
   tnode.innerHTML = snode.innerHTML;
   menus.show(mname, aname, 10, 10);
}

function showCOPSections(field, menu, prefix, qid, principleid, dx, dy) {
   var menuForm = document.forms['COPMenuForm'];
   var id = prefix+'_'+qid+'_'+principleid;
   field.checked = false;
   var value = field.value;
   var sections = menuForm.sections;
   var copid = menuForm.copid;
   copid.value = id;
   if (sections.length) {
      for (var i=0;i < sections.length;i++) {
         sections[i].checked = false;
      }
   }
   else {
      sections.checked = false;
   }
   if (value != '') {
      var a = value.split(',');
      var h = new Array();
      for (var i=0;i < a.length;i++) {
         h[a[i]] = true;
      }
      if (sections.length) {
         for (var i=0;i < sections.length;i++) {
            if (h[sections[i].value]) {
               sections[i].checked = true;
            }
         }
      }
      else {
         if (h[sections.value]) {
            sections.checked = true;
         }
      }
      field.checked = true;
   }
   menus.show(menu, id, dx, dy);
}

function setCOPSections() {
   var copForm = document.forms['COPForm'];
   var menuForm = document.forms['COPMenuForm'];
   var id = menuForm.copid.value;
   var sections = menuForm.sections;
   var selected = eval('copForm.'+id);
   var a = new Array();
   if (sections.length) {
      for (var i=0;i < sections.length;i++) {
         if (sections[i].checked) {
            a.push(sections[i].value);
         }
      }
   }
   else {
      if (sections.checked) {
         a.push(sections.value);
      }
   }
   var s = a.join(',');
   selected.value = s;
   if (a.length > 0) {
      selected.checked = true;
   }
   else {
      selected.checked = false;
   }
}

function griSelect(f, flag, qfield, cfield) {
   // the 'f' arg is the form.
   var q = eval('f.'+qfield);
   var c = eval('f.'+cfield);
   var a = new Array();
   if (cfield == 'all') {
      if (q.length) {
         for (var i=0;i < q.length;i++) {
            q[i].checked = flag;
         }
      }
      else {
         q.checked = flag;
      }
      var statuses = ['all','completed','approved','released','not_started','in_progress'];
      for (var i=0;i < statuses.length;i++) {
	  eval('f.select_'+statuses[i]).checked = flag;
      }
   }
   else if (c) {
      if (c.length) {
         for (var i=0;i < c.length;i++) {
            a[c[i].value] = true;
         }
      }
      else {
         a[c.value] = true;
      }
      if (q.length) {
         for (var i=0;i < q.length;i++) {
            if (a[q[i].value]) {
               q[i].checked = flag;
            }
         }
      }
      else {
         if (a[q.value]) {
            q.checked = flag;
         }
      }

      f.select_all.checked = false;
   }
}

function toggleYNValue(fe, e)
{
   var element = document.getElementById(e);

   if (fe.checked)
   {
      element.value = 'Y';
   } else {
      element.value = 'N';
   }
}

function showAndSetExternal(form, type) {
   var div = document.getElementById(type+'ExternalOptionsDiv');
   div.style.visibility = "visible";
   div.style.display = "block";
   form.dist_research.checked = true;
   form.dist_web.checked = true;
   alert("PLEASE NOTE: Changing the distribution status of a document affects whether the\ndocument can be published online, released to research firms, or output in a PDF.\nA single document should not be designated for both internal and external distribution,\nor it will be available in all scenarios.");
}

function hideAndUnsetExternal(form, type) {
   var div = document.getElementById(type+'ExternalOptionsDiv');
   div.style.visibility = "hidden";
   div.style.display = "none";
   form.dist_research.checked = false;
   form.dist_web.checked = false;
   alert("PLEASE NOTE: Changing the distribution status of a document affects whether the\ndocument can be published online, released to research firms, or output in a PDF.\nA single document should not be designated for both internal and external distribution,\nor it will be available in all scenarios.");
}


pdftool = new QSelection('PDFToolFrameForm', 'PDFToolFilterForm', 'PDFToolProcessForm');
release = new QSelection('releaseFrameForm');
unrelease = new QSelection('unreleaseFrameForm');


function checkAltCategories(f, qid) {
   if (f.selected.value != '') {
      f.selected.value += ',';
   }
   f.selected.value += qid;
}

function updateAltCategories(f, field, category, categoryid) {
   if (f.selected.value == '') {
      alert('You must select one or more data requests!');
      field.checked = false;
      return;
   }
   var qids = f.selected.value.split(',');
   for (var i=0;i < qids.length;i++) {
      qid = qids[i];
      var cfield = eval('f.GRI3_'+qid);
      cfield.value = categoryid;
      var obj = document.getElementById('GRI3_'+qid);
      if (obj) {
         obj.innerHTML = category;
      }
   }
   f.selected.value = '';
   var qfield = f.qid;
   if (qfield.length) {
      for (var i=0;i < qfield.length;i++) {
         qfield[i].checked = false;
      }
   }
   else {
      qfield.checked = false;
   }
}
