if (navigator.userAgent.toLowerCase().indexOf("msie") != -1) { isIE = true; } else { isIE = false; }

mopFieldsetShown = true;

document.createNamedElement = function(type, name) {
  if (isIE) {
    newElement = document.createElement('<' + type + ' name="' + name + ' id="' + name + '">');
    //alert(newElement.elementName);
  } else {
    newElement = document.createElement("input");
    newElement.setAttribute("name", name);
    newElement.setAttribute("id", name);
  }
  
  return newElement;
}

document.fireFormSubmitHandler = function() {
}

function submitSave(returnToList) {
  var form = getEditingForm();
  if (form) {                  
    form.return_to_list.value = returnToList;
    form.submit();
  }
  return false;
}

function submitCancel(actionUrl, fromLink) {
  var form = getEditingForm();
  if (form || fromLink) {
    if (!confirm("Are you sure you wish to cancel the Approval process and return this back to the Draft state?")) {
      return false;
    }
    if (!fromLink) {
      form.action = actionUrl;
      form.submit();
    }
  }
  return true;
}

function submitLogin() {
  var form = getLoginForm();
  if (form) {
    form.submit();
  }
  return false;
}

function submitEdit() {
  var form = getViewingForm();
  if (form) {
    form.submit();
  }
  return false;
}

function submitForApproval(actionUrl, fromLink) {
  var form = getEditingForm();
  if (form || fromLink) {
    if (!confirm("Are you sure you wish to submit this for Approval?\nPlease note that if you have made any changes in this form they will not be saved.")) {
      return false;
    }
    if (!fromLink) {
      form.action = actionUrl;
      form.submit();
    }
  }
  return true;
}

function submitApprove(actionUrl, fromLink) {
  var form = getEditingForm();
  if (form || fromLink) {
    if (!confirm("Are you sure you wish to Approve these pending changes?\nPlease note that if you have made any changes in this form they will not be saved.")) {
      return false;
    }
    if (!fromLink) {
      form.action = actionUrl;
      form.submit();
    }
  }
  return true;
}

function submitDeleteDraft(actionUrl, fromLink) {
  var form = getEditingForm();
  if (form || fromLink) {
    if (!confirm("Are you sure you wish to Delete this Draft?\nAll un-Approved changes will be lost.")) {
      return false;
    }
    if (!fromLink) {
      form.action = actionUrl;
      form.submit();
    }
  }
  return true;
}

function addDatarow(afterId, fieldName, rowNum, columns) {
  if (isIE) {
    addDatarowIE(afterId, fieldName, rowNum, columns);
  } else {
    addDatarowStandardCompliant(afterId, fieldName, rowNum, columns);
  }
  
  progressBoardUpdated = document.getElementById("PROGRESS_BOARD_UPDATED");
  if (progressBoardUpdated) {
      progressBoardUpdated.checked = false;
  }
}

function addDatarowIE(afterId, fieldName, rowNum, columns) {
  currentElement = document.getElementById(afterId);
  
  if (!currentElement) {
    return;
  }
  currentElementSpan = document.getElementById(afterId + "_SPAN");
  currentElementSpan.style.visibility = "hidden";
  
  rowNum++;  
  newRowHtml = '';
  
  for (column = 1; column <= (columns - 1); column++) {
    newId = fieldName + '_' + ( (rowNum < 10) ? '0' + rowNum : rowNum) + '_' + ( (column < 10) ? '0' + column : column);
    newRowHtml += '<input name="' + newId + '" id="' + newId + '" class="datagridY" type="text" />&nbsp;';
  }
  
  newId = fieldName + '_' + ( (rowNum < 10) ? '0' + rowNum : rowNum) + '_00';
  newRowHtml += '&nbsp;x:&nbsp;<input name="' + newId + '" id="' + newId + '" class="datagridX type="text" />&nbsp;';
  
  newRowHtml += '<span id="' + newId + '_SPAN">' +
               '<a href="javascript:addDatarow(\'' + newId + '\', \'' + fieldName + '\', ' + rowNum + ', ' + columns + ')">' +
               '<img src="' + website_baseUrl +'images/button_add_row.gif" alt="Add new row" title="Add new row" class="addrow" /></a></span><br />\n';
               
  dd = currentElement.parentNode;
  dd.innerHTML = dd.innerHTML + newRowHtml;
}

function addDatarowStandardCompliant(afterId, fieldName, rowNum, columns) {
  currentElement = document.getElementById(afterId);
  
  if (!currentElement) {
    return;
  }
  dd = currentElement.parentNode;
  
  currentElementSpan = document.getElementById(afterId + "_SPAN");
  currentElementSpan.style.visibility = "hidden";
  
  rowNum++;  
  newRowHtml = '';
  
  for (column = 1; column <= (columns - 1); column++) {
    newId = fieldName + '_' + ( (rowNum < 10) ? '0' + rowNum : rowNum) + '_' + ( (column < 10) ? '0' + column : column);
    
    newField = document.createNamedElement("input", newId);
    newField.setAttribute("class", "datagridY");
    newField.setAttribute("type", "text");
    dd.appendChild(newField);
    dd.appendChild(document.createTextNode("\u00a0"));
  }
  
  dd.appendChild(document.createTextNode("\u00a0x:\u00a0"));
  
  newId = fieldName + '_' + ( (rowNum < 10) ? '0' + rowNum : rowNum) + '_00';
  newField = document.createNamedElement("input", newId);
  newField.setAttribute("class", "datagridX");
  newField.setAttribute("type", "text");  
  dd.appendChild(newField);
  
  buttonSpan = document.createElement("span");
  buttonSpan.setAttribute("id", newId + '_SPAN');
  
  createRowLink = document.createElement("a");
  createRowLink.setAttribute("href", 'javascript:addDatarow(\'' + newId + '\', \'' + fieldName + '\', ' + rowNum + ', ' + columns + ')');
  
  createRowImage = document.createElement("img");
  createRowImage.setAttribute("src", website_baseUrl +'images/button_add_row.gif');
  createRowImage.setAttribute("alt", "Add new row");
  createRowImage.setAttribute("title", "Add new row");
  createRowImage.setAttribute("class", "addrow");
  
  createRowLink.appendChild(createRowImage);
  buttonSpan.appendChild(createRowLink);
  
  dd.appendChild(buttonSpan);
  dd.appendChild(document.createElement("br"));
}

function getEditingForm() {
  return document.getElementById("edit-form");
}
function getViewingForm() {
  return document.getElementById("view-form");
}
function getLoginForm() {
  return document.getElementById("login-form");
}
function getReportForm() {
  return document.getElementById("bis-report-form");
}
function getMopFieldset() {
  return document.getElementById("measure_of_progress");
}
function getMopToggleElement() {
  return document.getElementById("MULTIPLE_MOP");
}

function toggleChildren(goalId) {
  var goalCheckbox = document.getElementById('GOAL_' + goalId);
  if (!goalCheckbox) {
    return;
  }
  
  var nextState = goalCheckbox.checked; // Checked state changes after this run, so don't invert
  
  reportForm = getReportForm();
  for (i = 0; i < reportForm.elements.length; i++) {
    var element = reportForm.elements[i];
    if (element.type == 'checkbox') {
      if (element.id.indexOf('INDICATOR_' + goalId + '_') == 0) {
        element.checked = nextState;
      }
    }
  }
}

function toggleTree(itemId) {	
  var item = document.getElementById(itemId);
	
  if (item.className == 'closed') {
	item.className = 'current';
  } else {
	item.className = 'closed';
  }
}

function toggleInlineMop() {
  if (mopFieldsetShown) {
    getMopFieldset().style.visibility = 'hidden';
    getMopFieldset().style.display = 'none';
  } else {
    getMopFieldset().style.visibility = 'visible';
    getMopFieldset().style.display = 'block';
  }
  mopFieldsetShown = !mopFieldsetShown;
}

function toggleInlineMopInitialState() {
  var mopToggle = getMopToggleElement();
  if (mopToggle) {
    mopFieldsetShown = (mopToggle.checked == true) ? true : false;
    toggleInlineMop();
  } else {
    var mopFieldSet = getMopFieldset();
    if (mopFieldSet) {
      mopFieldsetShown = true;
      toggleInlineMop();
    }
  }
}