// VARIOUS FORM MANIPULATION AND READING SCRIPTS
// HISTORY
// 22/09/2005 - PSB - Created (mostly for delivery instructions)
// 19/03/2008 - FJT - Added stuff for radio fields.  Borrowed from http://www.somacon.com/p143.php 

function elementexists(elementid) {
  if (document.getElementById) { // DOM3 = IE5, NS6
    if (document.getElementById(elementid)) {
      return true;
    }
  }
  else {
    if (document.layers) { // Netscape 4
      if (document.elementid) {
        return true;
      }
    }
    else { // IE 4
      if (document.all.elementid) {
        return true;
      }
    }
  }
  return false;
}


function getelement(elementid) {

  var element;

  if (document.getElementById) { // DOM3 = IE5, NS6
	element = document.getElementById(elementid);
    if (element) {
      return element;
    }
  }
  else {
    if (document.layers) { // Netscape 4
    element = document.elementid;
      if (element) {
        return element;
      }
    }
    else { // IE 4
		element = document.all.elementid;
      if (element) {
        return element;
      }
    }
  }
}


//safe function to hide an element with a specified id
function hideelement(elementid) {
  if(elementexists(elementid))
  {
    if (document.getElementById) { // DOM3 = IE5, NS6
      dropdownval = document.getElementById(elementid).style.display = 'none';
    }
    else {
      if (document.layers) { // Netscape 4
        dropdownval = document.elementid.style.display = 'none';
      }
      else { // IE 4
        dropdownval = document.all.elementid.style.display = 'none';
      }
    }
  }
}
//safe function to show an element with a specified id
function showelement(elementid) {
  if(elementexists(elementid))
  {
    if (document.getElementById) { // DOM3 = IE5, NS6
      dropdownval = document.getElementById(elementid).style.display = 'block';
    }
    else {
      if (document.layers) { // Netscape 4
        dropdownval = document.elementid.style.display = 'block';
      }
      else { // IE 4
        dropdownval = document.all.elementid.style.display = 'block';
      }
    }
  }
}
//safe function to get the value of an element
function getelementvalue(elementid) {
  if(elementexists(elementid))
  {
    if (document.getElementById) { // DOM3 = IE5, NS6
      return document.getElementById(elementid).value;
    }
    else {
      if (document.layers) { // Netscape 4
        return document.elementid.value;
      }
      else { // IE 4
        return document.all.elementid.value;
      }
    }
  }
  else
  {
    return '';
  }
}

//safe function to set the value of an element
function setelementvalue(elementid,elemval) {
  if(elementexists(elementid))
  {
    if (document.getElementById) { // DOM3 = IE5, NS6
      document.getElementById(elementid).value = elemval;
      return true;
     }
    else {
      if (document.layers) { // Netscape 4
        document.elementid.value = elemval;
        return true;
      }
      else { // IE 4
        document.all.elementid.value = elemval;
        return true;
      }
    }
  }
  else
  {
    return false;
  }
}

//safe function to set the value of an element
function setelementenabled(elementid, enabled) {
  if(elementexists(elementid))
  {
    if (document.getElementById) { // DOM3 = IE5, NS6
      if (enabled == true || enabled == 'true') {
	      document.getElementById(elementid).disabled = false;
	  } else {
	      document.getElementById(elementid).disabled = true;
      }
      return true;
     }
    else {
      if (document.layers) { // Netscape 4
        if (enabled == true || enabled == 'true') {
          document.elementid.disabled = false;
        } else {
          document.elementid.disabled = true;
        }
        return true;
      }
      else { // IE 4
        if (enabled == true || enabled == 'true') {
          document.all.elementid.disabled = false;
        } else {
          document.all.elementid.disabled = true;
        }
        return true;
      }
    }
  }
  else
  {
    return false;
  }
}


//delivery instructions
function toggledeliveryfields(i) {
  //set up variables
  var dropdownval = '';
  if (i == null)
  {
	i='';
  }
  dropdownval = getelementvalue('del_instr_dropdown'+i);

  //trick to test if people have JavaScript enabled
  setelementvalue('supportsjavascript','true');

  //show dropdown list for JavaScript enabled users, always
  showelement('del_instr_dropdown_label'+i);
  showelement('del_instr_dropdown'+i);

  if (dropdownval == '') {
    //We must be on "Other (please specify)...", so show free text delivery instructions and label
    showelement('del_instr'+i);
    showelement('del_instr_label'+i);
  }
  else {
    //hide instructions textbox and label
    hideelement('del_instr'+i);
    hideelement('del_instr_label'+i);
  }
}


// return the value of the radio button that is checked
// return an empty string if none are checked, or
// there are no radio buttons
function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

// set the radio button with the given value as being checked
// do nothing if there are no radio buttons
// if the given value does not exist, all the radio buttons
// are reset to unchecked
function setCheckedValue(radioObj, newValue) {
	if(!radioObj)
		return;
	var radioLength = radioObj.length;
	if(radioLength == undefined) {
		radioObj.checked = (radioObj.value == newValue.toString());
		return;
	}
	for(var i = 0; i < radioLength; i++) {
		radioObj[i].checked = false;
		if(radioObj[i].value == newValue.toString()) {
			radioObj[i].checked = true;
		}
	}
}


