function formSelectAll(field, selector){ 
   if (field.length > 1) {
      for(var i=0;i<field.length;i++) {
         field[i].checked=selector.checked;
      }
   } else {
      field.checked=selector.checked;
   }
}

// enable or disable elements specified in a particular div
function enableElements(shouldEnable, divName) {
	eTheDiv = document.getElementById(divName);
	eTheInputs = eTheDiv.getElementsByTagName("input");
	for (var i = 0; i < eTheInputs.length; i++) {
		eTheInputs[i].disabled=!shouldEnable;
	}
	eTheInputs = eTheDiv.getElementsByTagName("select");
	for (var i = 0; i < eTheInputs.length; i++) {
		eTheInputs[i].disabled=!shouldEnable;
	}
}

function returnFieldWithinDiv(fieldName, divName) {
	eTheDiv = this.document.getElementById(divName);
	eTheInputs = eTheDiv.getElementsByTagName("input");
	for (var i = 0; i < eTheInputs.length; i++) {
		if (eTheInputs[i].name == fieldName) {
			return eTheInputs[i];
		}
	}
}

function formClearForm(what) {
	/*
		radio buttons are not covered as the original state is not known
		Javascript security prevents you from changing the value attribute of a file input
		How to clear a file field:	http://groups.google.com.au/group/comp.lang.javascript/browse_thread/thread/6113d234552d5442/7805d6691e20155d?lnk=st&q=javascript+clear+file+field&rnum=1&hl=en#7805d6691e20155d
	*/
   for (var i=0, j=what.elements.length; i<j; i++) {
    	var element = what.elements[i];
        if (element.type == 'text') {
            what.elements[i].value = '';
        } else if (element.type == 'textarea') {
            what.elements[i].value = '';
        } else if (element.type == 'select-one') {
            element.selectedIndex = 0;
        } else if (element.type == 'checkbox') {
            what.elements[i].checked = false;
        } 
    }
}

function checkboxCount(field)
{ 
  var numChecked = 0;
   if (!field){
       return numChecked;
   }
   if (field.length > 1) {
      for(var i=0;i<field.length;i++) {
      	if (field[i].checked) {
      		numChecked++;
      	}
      }
   } else if (field) {
   	if (field.checked) {
 		numChecked++;  	
   	}
   }
   return numChecked;
}

function selectWidgetCount(field)
{ 
  var numChecked = 0;

   if (field.length > 0) {
      for(var i=0;i<field.length;i++) {
      	if (field.options[i].selected) {
      		numChecked++;
      	}
      }
   } 
   return numChecked;
}


// this function adds a new value to a listbox or combo box
function addopt(nValue, sText, el){
  // this routine adds a new item to our listbox
  if (el == null || el == undefined) {}
  else {
      el.options[el.options.length] = new Option(sText, nValue);
  }
}

// this function clears out a listbox or combo box
function clearcombo(el){
  if (el == null || el == undefined) {}
  else {
      for (var i = el.options.length; i >= 0; i--){
        el.options[i] = null;
      }
      el.selectedIndex = -1;
  }
}

//toggle div fields with parameter (styleName)
//uses checkbox parameter (toggleCheckbox) to determine
//whether to set visibility to hidden or visible
function toggleVisibleStyles(toggleCheckbox, itemSubscript)
{
	var visibility;
	if (toggleCheckbox) {
		visibility = 'hidden'
	} else {
		visibility = 'visible'
	}
    document.getElementById("div_homephone_" + itemSubscript).style.visibility = visibility;
    document.getElementById("lbl_homephone_" + itemSubscript).style.visibility = visibility;
	document.getElementById("phone1_" + itemSubscript).style.visibility = visibility;

	var mobileField = document.getElementById("mobilePhone_" + itemSubscript);
	if (toggleCheckbox) {
        var tempMobile = document.getElementById("tempBusMobile_" + itemSubscript);
        if (tempMobile) { mobileField.value = tempMobile.value; }
    } else {
        var tempMobile = document.getElementById("tempMobile_" + itemSubscript);
        if (tempMobile) { mobileField.value = tempMobile.value; }
    }
}

function officerVisibleStyles(hide, itemSubscript)
{
	var visibility;
	if(hide) {
		visibility = 'hidden'
	}else{
		visibility = 'visible'
	}
	
	if (document.getElementById("officerStyleNarNumberStringHeading_" + itemSubscript)) {
		document.getElementById("officerStyleNarNumberStringHeading_" + itemSubscript).style.visibility = visibility;
	}
	document.getElementById("officerStyleTitleHeading_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleTitle_" + itemSubscript).style.visibility = visibility;

	document.getElementById("officerStyleAddressHeading_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleAddress1_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleAddress2_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleAddress3_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleAddressPostcodeHeading_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStyleAddressPostcode_" + itemSubscript).style.visibility = visibility;

	document.getElementById("officerStylePostalComments_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostalHeading_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostal1_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostal2_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostal3_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostalPostcodeHeading_" + itemSubscript).style.visibility = visibility;
	document.getElementById("officerStylePostalPostcode_" + itemSubscript).style.visibility = visibility;
	
	if (document.getElementById("nameSearch_" + itemSubscript)) {
		document.getElementById("nameSearch_" + itemSubscript).style.visibility = visibility;   // 84086 - Disable search after officer search/My bus. details
	}    
}

function officerHeadingStyles(hide, itemSubscript)
{
	for (i=0; i <= itemSubscript; i++) 
	{
		var roleHeading = document.getElementById("roleDescriptionHeading_" + itemSubscript);
		var departmentHeading = document.getElementById("departmentHeading_" + itemSubscript);
		var availabilityHeading = document.getElementById("availabilityHeading_" + itemSubscript);
		var extensionHeading = document.getElementById("extensionHeading_" + itemSubscript);
				
		var roleDescription = document.getElementById("roleDescription_" + itemSubscript);
		var department = document.getElementById("department_" + itemSubscript);
		var availability = document.getElementById("availability_" + itemSubscript);		
		var extension = document.getElementById("extension_" + itemSubscript);
		
		var visibility;
		if(hide) {
			visibility = 'hidden'
		}else{
			visibility = 'visible'
		}
		
		roleHeading.style.visibility = visibility;
		roleDescription.style.visibility = visibility;

		departmentHeading.style.visibility = visibility;
		department.style.visibility = visibility;

		availabilityHeading.style.visibility = visibility;
		availability.style.visibility = visibility;

		extensionHeading.style.visibility = visibility;
		extension.style.visibility = visibility;
	}
}

// Return a comma separated string containing the 
// selected checkbox values
function selectedCBValues(field)
{ 
  var numChecked = 0;
  var result = '';

   if (field.length > 1) {
      for(var i=0;i<field.length;i++) {
      	if (field[i].checked) {
      		numChecked++;
      		if (numChecked == 1) {
	      		result = field[i].value;
	      	} else {
	      		result = result + "," + field[i].value;
	      	}
      	}
      }
   } 
   return result;
}

function enableFields(theForm) {
	eTheInputs = theForm.getElementsByTagName("input");
	for (var i = 0; i < eTheInputs.length; i++) {
		eTheInputs[i].disabled=false;
	}

	eTheSelects = theForm.getElementsByTagName("select");
	for (var i = 0; i < eTheSelects.length; i++) {
		eTheSelects[i].disabled=false;
	}
}
function getRadioValue (radioButtonOrGroup) {
  var value = null;

  if (radioButtonOrGroup.length) { // group 
    for (var b = 0; b < radioButtonOrGroup.length; b++)
      if (radioButtonOrGroup[b].checked)
        value = radioButtonOrGroup[b].value;
  }
  else if (radioButtonOrGroup.checked)
    value = radioButtonOrGroup.value;
  return value;
}