// +-----------------------------------------------------------------------+
// | Form functions                                                        |
// | Copyright (C) 2004 Craig Manley                                       |
// +-----------------------------------------------------------------------+
// | You may not redistribute, sell, modify, copy, claim ownership of, nor |
// | incorporate this software into any other software or website without  |
// | the prior written permission of the author. This software may only be |
// | used in applications and web pages developed by the author.           |
// +-----------------------------------------------------------------------+
// | Author: Craig Manley                                                  |
// +-----------------------------------------------------------------------+
//
// $Id: form.js,v 1.3 2008/03/14 20:48:51 cmanley Exp $
//



/**
 * Returns the value of the checked radio button with the given name
 */
function getRadioCheckedValue(f, radioname) {
 for (var i=0; i < f.elements.length; i++) {
  if ((f.elements[i].name == radioname) && (f.elements[i].type == 'radio') && f.elements[i].checked) {
   return f.elements[i].value;
  }
 }
 return null;
}



/**
 * Determines if the given form field is filled.
 */
function isFormFieldFilled(field) {
 if (field == null) {
  return false;
 }
 if ((field.value == null) || (field.value.length == 0)) {
  return false;
 }
 return true;
}



/**
 * Determines if any checkbox with the given name has been checked.
 */
function isAnyCheckboxChecked(f, checkboxname) {
 for (var i=0; i < f.elements.length; i++) {
  if ((f.elements[i].name == checkboxname) && (f.elements[i].type == 'checkbox') && f.elements[i].checked) {
   return true;
  }
 }
 return false;
}



/**
 * Determines if any radio button with the given name has been checked.
 */
function isAnyRadioChecked(f, radioname) {
 for (var i=0; i < f.elements.length; i++) {
  if ((f.elements[i].name == radioname) && (f.elements[i].type == 'radio') && f.elements[i].checked) {
   return true;
  }
 }
 return false;
}




/**
 * Limits input to characters of the given string.
 */
function filterInputKeyPress(e,chars) {
 var key;
 if (window.event) {
  key = window.event.keyCode;
 }
 else if (e) {
  key = e.which;
 }
 else {
  return true;
 }

 // control keys
 if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==16)  || (key==27)) {
  return true;
 }

 var keychar = String.fromCharCode(key);
 //document.title = "key: " + key + "\tchar: " + keychar;

 // limit input
 if (chars.indexOf(keychar) > -1) {
  return true;
 }

 return false;
}




/**
 * Limits input to whole numbers.
 */
function wholeNumberInputKeyPress(e) {
 return filterInputKeyPress(e,"0123456789");
}




/**
 * Filters a currency input field with a "." decimal seperator.
 */
function wholeCurrencyFieldKeyPress(obj,e) {
 if (filterInputKeyPress(e,".0123456789")) {
  // allow only 1 decimal seperator to be entered.
  var key;
  var keychar;
  if (window.event) {
   key = window.event.keyCode;
  }
  else if (e) {
   key = e.which;
  }
  else {
   return true;
  }
  keychar = String.fromCharCode(key);
  if (keychar == '.') {
   if (obj.value.indexOf('.') > -1) {
    return false;
   }
   else if (obj.value.length == 0) {
    obj.value = '0';
   }
  }
  return true;
 }
 return false;
}
