function formRadioOption(group, map) {
    var v = getSelectedRadioValue(group);
    for(i in map) {
        if (i == v) {
            setDisable(map[i], false);
        } else {
            setDisable(map[i], true);
        }
    }
}
function setDisable(id_list, value) {
    for(var i=0; i< id_list.length; i++) {
        if(document.getElementById(id_list[i])) {
            document.getElementById(id_list[i]).disabled = value;
        }
    }
}
function hideIdCheckbox(checkbox, id, value) {
    if(checkbox && checkbox.checked == value) {
        hideId(id);
    } else {
        showId(id);
    }
}
function hideId(id) {
    var elem = document.getElementById(id);
    addElementClass(elem, 'invisible');
}
function showId(id) {
    var elem = document.getElementById(id);
    removeElementClass(elem, 'invisible');
}

function highlightField(field) { 
	alert(field);
	field.value = null;
	field.className = 'highlight';
}

function normalField(field) { 
	field.className = 'normal';
}
function selectOne(selector, name) {
    selector.form[name].checked = selector.checked;
}
function selectAll(form, selector, name, ids, sep) {
    for(var i=0; i < ids.length; i++) {
        daname = name + sep + ids[i];
        form[daname].checked = selector.checked;
    }
}

function deselectSelector(form, item, selector_name) {
    if(!item.checked) {
        form[selector_name].checked = false;
    }
}

function getSelectedRadio(buttonGroup) {
   // returns the array number of the selected radio button or -1 if no button is selected
   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
      for (var i=0; i<buttonGroup.length; i++) {
         if (buttonGroup[i].checked) {
            return i
         }
      }
   } else {
      if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
   }
   // if we get to this point, no radio button is selected
   return -1;
} // Ends the "getSelectedRadio" function

function getSelectedRadioValue(buttonGroup) {
   // returns the value of the selected radio button or "" if no button is selected
   var i = getSelectedRadio(buttonGroup);
   if (i == -1) {
      return "";
   } else {
      if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
         return buttonGroup[i].value;
      } else { // The button group is just the one button, and it is checked
         return buttonGroup.value;
      }
   }
} // Ends the "getSelectedRadioValue" function

function setRadioValue(group, value) {
    for (var i = 0; i < group.length; ++i) {
        group[i].checked = group[i].value == value;
    }
}

function submitFormEnter(e, form_elem) {
  var keypress = window.event ? e.keyCode : e.which;
  if (keypress == 13) {
      form_elem.form.submit();
      return false;
  }
  return true;
}
function selectOption(dropdown, value) {
    for(var i=0; i<dropdown.options.length; i++) {
        if(value == dropdown.options[i].value) {
            dropdown.selectedIndex = i;
            return i;
        }
    }
    return false;
}

function didYouMean(id, value) {
    var form_elem = document.getElementById(id);
    if(form_elem && form_elem.form) {
        form_elem.value = value;
        form_elem.form.submit();
    }
    return false;
}

function addWikiFormattingToolbar(textarea) {
  if ((typeof(document["selection"]) == "undefined")
   && (typeof(textarea["setSelectionRange"]) == "undefined")) {
    return;
  }
  
  var toolbar = document.createElement("div");
  toolbar.className = "wikitoolbar";

  function addButton(id, title, fn) {
    var a = document.createElement("a");
    a.href = "#";
    a.id = id;
    a.title = title;
    a.onclick = function() { try { fn() } catch (e) { } return false };
    a.tabIndex = 400;
    toolbar.appendChild(a);
  }

  function encloseSelection(prefix, suffix) {
    textarea.focus();
    var start, end, sel, scrollPos, subst;
    if (typeof(document["selection"]) != "undefined") {
      sel = document.selection.createRange().text;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      start = textarea.selectionStart;
      end = textarea.selectionEnd;
      scrollPos = textarea.scrollTop;
      sel = textarea.value.substring(start, end);
    }
    if (sel.match(/ $/)) { // exclude ending space char, if any
      sel = sel.substring(0, sel.length - 1);
      suffix = suffix + " ";
    }
    subst = prefix + sel + suffix;
    if (typeof(document["selection"]) != "undefined") {
      var range = document.selection.createRange().text = subst;
      textarea.caretPos -= suffix.length;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      textarea.value = textarea.value.substring(0, start) + subst +
                       textarea.value.substring(end);
      if (sel) {
        textarea.setSelectionRange(start + subst.length, start + subst.length);
      } else {
        textarea.setSelectionRange(start + prefix.length, start + prefix.length);
      }
      textarea.scrollTop = scrollPos;
    }
  }

  addButton("strong", "Bold text: '''Example'''", function() {
    encloseSelection("'''", "'''");
  });
  addButton("em", "Italic text: ''Example''", function() {
    encloseSelection("''", "''");
  });
  addButton("underline", "Underline: ==Example==", function() {
    encloseSelection("==", "==", "Heading");
  });
  addButton("center", "Center: ===Example===", function() {
    encloseSelection("===", "===");
  });
  addButton("tab", "Tab: ->>", function() {
    encloseSelection("->>", "");
  });
  addButton("hr", "Horizontal Rule: --hr--", function() {
    encloseSelection("--hr--", "");
  });
  addButton("h2", "Important: **Example**", function() {
    encloseSelection("**", "**");
  });

  textarea.parentNode.insertBefore(toolbar, textarea);
  var br = document.createElement("br");
  br.style.clear = "left";
  textarea.parentNode.insertBefore(br, textarea);
}
