//CUBE ROOT EXTENDED
//BEGIN**********************************************************************
function CubeRootExtended(iVolume){
if (iVolume <= 0) {
  iVolume = 1;
	}
var iVolume = Math.exp(Math.log(iVolume)/3);
return iVolume;
}
//THE TOAD


//INCHES TO FEET
//BEGIN**********************************************************************
function InchesToFeet(iInches){
if (iInches <= 0) {iInches = 12;}
var sFt = Math.floor(iInches/12);
var sInch = iInches%12;
return sFt+"' "+sInch+"\"";
}
//THE TOAD


//NAME COUNT ENDING
//BEGIN**********************************************************************
//supplies a number with an ending ex: 1st 2nd 3rd 4th.
function func_NameCountEnding(i1){
switch (i1){
	case 1 : return "st"; break;
	case 2 : return "nd"; break;
	case 3 : return "rd"; break;
	default: return "th"; break;
  }
}
//THE TOAD


//ODD
//BEGIN**********************************************************************
function odd(i1){
i1 = i1 % 2;
return i1;
}
//THE TOAD


//PREPARE INTEGER
//BEGIN**********************************************************************
//makes sure we are dealing with a number, defaults to 0 on a NaN
function fun_prepInt(i1){
i1 = parseInt(i1);
if (isNaN(i1)){
  i1 = 0;
	}
return i1;
}
//THE TOAD


//SORT SELECTION COMPONENT
//BEGIN**********************************************************************
// sortSelect(select_object)
//   Pass this function a SELECT object and the options will be sorted
//   by their text (display) values
function sortSelect(obj) {
	var o = new Array();
	if (obj.options==null) { return; }
	for (var i=0; i<obj.options.length; i++) {
		o[o.length] = new Option( obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected) ;
		}
	if (o.length==0) { return; }
	o = o.sort( 
		function(a,b) { 
			if ((a.text+"") < (b.text+"")) { return -1; }
			if ((a.text+"") > (b.text+"")) { return 1; }
			return 0;
			} 
		);

	for (var i=0; i<o.length; i++) {
		obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
		}
	}
//THE TOAD

	
//TEXT LENGTH CHECK
//BEGIN**********************************************************************
function fun_TextLengthCheck(ID,iMax,iDiv,IDTarget) {
//ID = name of the form control in question.
//iMax = maximum number of characters allowed
//iDiv = basically iMax with the decimal moved 2 steps left
//IDTarget = span to send it back to.
  var s1 = window.document.getElementById(ID).value;
	var i1 = s1.length;
  var i2 = iMax;
  i2 = Math.ceil(i1/iDiv);
  var s1 = 'Space Left: '+(100-i2)+'% ('+(iMax-i1)+' Characters).';
	window.document.getElementById(IDTarget).innerHTML = s1;	
  }
//THE TOAD

	
//LEFT TRIM
//BEGIN**********************************************************************
function ltrim(str){
//trim leading blanks from string
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(0)) != -1) {
	var j=0, i = s.length;
	while (j < i && whitespace.indexOf(s.charAt(j)) != -1)
		 j++;
	s = s.substring(j, i);
 }
return s;
}
//THE TOAD


//RIGHT TRIM
//BEGIN**********************************************************************
function rtrim(str){
//remove trailing blanks
var whitespace = new String(" \t\n\r");
var s = new String(str);
if (whitespace.indexOf(s.charAt(s.length-1)) != -1) {
	var i = s.length - 1;
	while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1)
		 i--;
	s = s.substring(0, i+1);
 }
return s;
}
//THE TOAD


//TRIM
//BEGIN**********************************************************************
function trim(str){
//Trim it all
return rtrim(ltrim(str));
}
//THE TOAD


//DOLLAR TRIM
//BEGIN**********************************************************************
//if a decimel point is found in the string it allows two numbers and trims the rest
function funcDollarTrim(i1){
//Trim it all
var s0 = i1.toString(10);
var check = s0.indexOf(".",0);
if (check > 0){
	var s1 = s0.split(".");
	var s2 = s1[0];
	var s3 = s1[1];
	var s4 = s3.substring(0,2);
	return s2+"."+s4;
	}
 else{
  return s0;
  }
}
//THE TOAD



//translatebulk
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//iToNumber == 1 turns it into a number
//iToNumber == 0 turns it back into a term
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
function translateBulk(Bulk, iToNumber){
if (iToNumber == 1){
	var i1 = 0;
	if (Bulk == "Moving") i1 = 1;
	if (Bulk == "Packing") i1 = 2;
	if (Bulk == "Lugging") i1 = 3;
	if (Bulk == "Trudging") i1 = 4;
	if (Bulk == "Straining") i1 = 5;
  }
 else{
	var i1 = "<font color='#ff0000'>Character Cannot Move!</font>";
	if (Bulk == 1) i1 = "Moving";
	if (Bulk == 2) i1 = "Packing";
	if (Bulk == 3) i1 = "Lugging";
	if (Bulk == 4) i1 = "Trudging";
	if (Bulk == 5) i1 = "Straining";
  }
return i1;
}


//VALIDATE INTEGER
//BEGIN**********************************************************************
function validate_integer(i1){
i1 = trim(i1);
for (var loop=0; loop < i1.length; loop++) {
  var digit = i1.charAt(loop);
	if (digit < "0" || digit > "9") {
	  if (digit != "." && digit != "-"){
		  alert ("Sorry but you may only use a number for this value.\n"+
			  i1+" - is not a number!");
		  return false;
		  }
		}
	}
return true;
}
//THE TOAD


//ZERO FLOAT
//BEGIN**********************************************************************
//makes sure we have a number or at least a zero
function ZeroFloat(s1){
var i1 = parseFloat(s1);
if (isNaN(i1) == true){i1 = 0;}
if (trim(i1) == ""){i1 = 0;}
return i1;
}
//THE TOAD


//ZERO OUT
//BEGIN**********************************************************************
//makes sure we have a number or at least a zero
function ZeroOut(s1){
var i1 = parseInt(s1);
if (isNaN(i1) == true){i1 = 0;}
if (trim(i1) == ""){i1 = 0;}
return i1;
}
//THE TOAD
