
function toggleFormDisplay(currvalue, affectedname, onvalue, isRadioGrp, grpName, doGroupLoop) {
  if (typeof isRadioGrp == 'undefined' ) isRadioGrp = false;
  if (typeof grpName == 'undefined' ) grpName = '';
  if (typeof doGroupLoop == 'undefined' ) doGroupLoop = true;
  
  var div_id = affectedname+"_row";
  var div_effected = document.getElementById(div_id);
  var input_element;

  if(isRadioGrp && doGroupLoop) {
    var radioGrp = document['forms']['user_details_form'][grpName];
    var itemsToAction = new Array();
    var currArrayIndex = 0;

    for(i=0; i < radioGrp.length; i++){
      if (radioGrp[i].checked == false) {
        if(radioGrp[i].id) {
          var boxObject = document.getElementById(radioGrp[i].id);
          var runBoxCmd = false;

          if(boxObject.attributes.getNamedItem("onClick")) {
            runBoxCmd = boxObject.attributes.getNamedItem("onClick").value;
          }

          if (boxObject.attributes.getNamedItem("onChange")) {
            runBoxCmd = boxObject.attributes.getNamedItem("onChange").value;
          }

          if(runBoxCmd) {
            runBoxCmd = runBoxCmd.replace(/this\./g, "document.getElementById('"+(radioGrp[i].id)+"').");
            runBoxCmd = runBoxCmd.replace(/\)/g, ", 0)");
            itemsToAction[currArrayIndex] = runBoxCmd;
            currArrayIndex++;
          }
        }
      }
    }

    for (j=0; j < itemsToAction.length; j++) {
      eval(itemsToAction[j]);
    }
  }

  if(document.getElementById(affectedname)) {
    input_element = document.getElementById(affectedname);
  } else {
    input_element = document.getElementById(affectedname+"_row");
  }

  if(currvalue != onvalue) {
    var runCmd;
    var shallRunCmd = false;

    if (div_effected.hasChildNodes()) {
      div_effected.style.display = "none";
 
      // Get all child nodes
      var children = div_effected.childNodes;

      // Loop through the children
      for(var c=0; c < children.length; c++) {
        var childType = children[c].nodeName;
        
        if(children[c].id) {
          var childId = children[c].id;
          if(childType == 'DIV') {
            document.getElementById(childId).style.display = "none";
          }
        }
      }
    } else {
      div_effected.style.display = "none";
    }

    if(input_element.attributes.getNamedItem("onClick")) {
      shallRunCmd = true;
      runCmd = input_element.attributes.getNamedItem("onClick").value;
    }

    if (input_element.attributes.getNamedItem("onChange")) {
      shallRunCmd = true;
      runCmd = input_element.attributes.getNamedItem("onChange").value;
    }
      
    if(input_element.nodeName == "INPUT" || input_element.nodeName == "input") {
      var input_type = input_element.attributes.getNamedItem("type").value;

      if(input_type == "checkbox" || input_type == "radio") {
        if(input_element.checked == true) {
          input_element.checked = false;
        } else {
          input_element.checked = true;
        }
      } else {
        input_element.value = "";
      }
    } else if(input_element.nodeName == "SELECT" || input_element.nodeName == "select") {
      input_element.selectedIndex = 0;
    } else if(input_element.nodeName == "TEXTAREA" || input_element.nodeName == "textarea") {
      input_element.value = "";
    }

    if(shallRunCmd) {
      runCmd = runCmd.replace(/this\./g, "document.getElementById('"+affectedname+"').");

      eval(runCmd);
    }
  } else {
    if (div_effected.hasChildNodes()) {
      div_effected.style.display = "block";
 
      // Get all child nodes
      var children = div_effected.childNodes;

      // Loop through the children
      for(var c=0; c < children.length; c++) {
        var childType = children[c].nodeName;
        
        if(children[c].id) {
          var childId = children[c].id;
          if(childType == 'DIV') {
            document.getElementById(childId).style.display = "block";
          }
        }
      }
    } else {
      div_effected.style.display = "block";
    }
  }

  return true;
}

function init_form(linkedfields) {

  for (var i in linkedfields) {
    var linkedinfo = new Object;

    for (var j in linkedfields[i]) {
      linkedinfo[j] = linkedfields[i][j];
    }   

    var input_field_row = i+"_row";
    var input_field_row_div = document.getElementById(input_field_row);
    var input_field = document.getElementById(i);
    var linked_field = document.getElementById(linkedinfo.linked_to_id);
    var display_field = false;

    var required_value = linkedinfo.required_val;

    if(linked_field.nodeName == "INPUT" || linked_field.nodeName == "input") {
      var linked_field_type = linked_field.attributes.getNamedItem("type").value;

      if(linked_field_type == "checkbox" || linked_field_type == "radio") {
        if(linked_field.checked === true) {
          display_field = true;
        }
      } else if(linked_field_type == "text") {
        if(linked_field.value == required_value) {
          display_field = true;
        }
      } 
    } else if(linked_field.nodeName == "SELECT" || linked_field.nodeName == "select") {
      var selected_value = linked_field.options[linked_field.selectedIndex].value;

      if(selected_value == required_value) {
        display_field = true;
      }
    }
            
    if(display_field) {
      input_field_row_div.style.display = "block";
      
      var children = input_field_row_div.childNodes;

      // Loop through the children
      for(var c=0; c < children.length; c++) {
        var childType = children[c].nodeName;
        
        if(children[c].id) {
          var childId = children[c].id;
          if(childType == 'DIV') {
            document.getElementById(childId).style.display = "block";
          }
        }
      }
    } else {
      input_field_row_div.style.display = "none";

      var children = input_field_row_div.childNodes;

      // Loop through the children
      for(var c=0; c < children.length; c++) {
        var childType = children[c].nodeName;
        
        if(children[c].id) {
          var childId = children[c].id;
          if(childType == 'DIV') {
            document.getElementById(childId).style.display = "none";
          }
        }
      }
    }
  }
}