// This function sorts the entity lists
function sortBy(theForm, target) {
    if (theForm.sortBy.value == target) {
        if (theForm.sortDirection.value == 'ASC') {
            theForm.sortDirection.value = 'DESC';
	} else {
	    theForm.sortDirection.value = 'ASC';
	}
    } else {
        theForm.sortDirection.value = 'ASC';
    }

    theForm.sortBy.value=target;
    theForm.submit();
}

function textCounter( field, countfield, maxlimit ) {
    if ( field.value.length > maxlimit ) {
        field.value = field.value.substring( 0, maxlimit );
        field.blur();
        field.focus();
        return false;
    } else {
        if (countfield != null) {
        countfield.value = maxlimit - field.value.length;
        }
    }
}

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 textCounter(field, countfield, maxlimit) {
  if (field.value.length > maxlimit) {
     field.value = field.value.substring(0, maxlimit);
  } else {
    countfield.value = maxlimit - field.value.length;
  }
}

function getDate(field, format) {
  var newDate = new Date();
  if (format.toLowerCase() == 'yyyy-mm-dd') {
    month = field.value.substring(5,7);
    if (month.charAt(0) == "0") {
      month = month.charAt(1);
    }

    day = field.value.substring(8,10);
    if (day.charAt(0) == "0") {
      day = day.charAt(1);
    }

    newDate.setMonth(parseInt(month)-1);
    newDate.setDate(parseInt(day));
    newDate.setYear(parseInt(field.value.substring(0,4)));
  } else if (format.toLowerCase() == 'mm/dd/yyyy') {
    month = field.value.substring(0,2);
    if (month.charAt(0) == "0") {
      month = month.charAt(1);
    }
    day = field.value.substring(3,5);
    if (day.charAt(0) == "0") {
      day = day.charAt(1);
    }
    newDate.setMonth(parseInt(month)-1);
    newDate.setDate(parseInt(day));
    newDate.setYear(parseInt(field.value.substring(6,10)));
  }
  return newDate;
}

// Determines the number of days between two dates.
function daysBetween(date1, date2) {
  diff = Math.abs(date1.getTime() - date2.getTime());
  days = Math.floor(diff/(1000 * 60 * 60 * 24));
  return days;
}

// Accepts a non-negative currency value
function isCurrency(field) {
  result = false;
  if (field.value == '' || field.value == null) {
    return result;
  }
  //regexp = new RegExp('^[-]?([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$');
  regexp = new RegExp('^([1-9]{1}[0-9]{0,}(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|\.[0-9]{1,2})$');
  result = regexp.test(field.value);
  return result;
}

function datesEqual(date1,date2) {
  return result = date1.getMonth() == date2.getMonth() && date1.getDate() == date2.getDate()
    && date1.getYear() == date2.getYear();
}

function checkAll(field) {
        for(i = 0; i < field.length; i++)
                field[i].checked = true;
}

function uncheckAll(field) {
        for(i = 0; i < field.length; i++)
                field[i].checked = false;
}

function getCalBase() {
        var metaTag = document.getElementsByTagName("meta");
        var calendarBase = "";
        for(var i=0; i<metaTag.length; i++) {
                if(metaTag[i].name == "calbase") {
                        calendarBase = metaTag[i].content;
                }
        }
        return calendarBase;
}

function clearFieldIfChecked(field, checkbox) {
	if (checkbox.checked) field.value = '';
}

<!-- Enable/Disable appropriate elements based on selected country -->
function checkCountry(myform) {
	if (myform.country.value == '') {
        myform.state.disabled = false;
		myform.province.disabled = false;
    } else if (myform.country.value == 'CA') {
    	myform.province.disabled = false;
    	myform.state.disabled = true;
    	myform.state.value = '';
    } else if (myform.country.value == 'US') {
        myform.state.disabled = false;
        myform.province.disabled = true;
		myform.province.value = '';
    } else {
        myform.state.disabled = true;
        myform.state.value = '';
		myform.province.disabled = true;
		myform.province.value = '';
    }
}

function setElementValue(element, value) {
	var e = document.getElementsByName(element)[0];
	e.value = value;
}

function resetFirstItem(formId) {
	var form = document.getElementById(formId);
	setElementValue('firstItem', '0');
}
