function showButton (aId, aClass)
{
   var myButton = document.getElementById (aId);

   if (myButton)
   {
      myButton.className = aClass;
   }
}

function menuGo (aUrl)
{
   location.href = aUrl;
}

function insertMtLink (aBox)
{
   return ("<a href='mailto:" + aBox + "@doubledbus.us'>" + aBox + "@doubledbus.us</a>");
}

function resizeDivs()
{
   adjustHeight ("maincontent", "sidebar");
}

function adjustHeight (aDiv, aTargetDiv)
{
   var myDiv = $(aDiv);
   var myTargetDiv = $(aTargetDiv);

   var myHeight = myDiv.clientHeight;
   var myTargetHeight = myTargetDiv.clientHeight;

   if (myHeight < myTargetHeight)
   {
      myDiv.style.height = (myTargetHeight - 16) + "px";
   }
}

function focusField()
{
   if ($("fieldToFocus") != null)
   {
      myField = $("fieldToFocus").value;

      if ($(myField) != null)
      {
         $(myField).focus();
      }
   }
}

function getKeyCode (aEvent)
{
   return (aEvent.keyCode || aEvent.charCode);
}

function autoTab (aEvent, aElement, aNextId)
{
   var myKey = getKeyCode (aEvent);

   if ((aElement.value.length == aElement.maxLength) && (isPrintableCharacterKey (myKey)))
   {
      if ($(aNextId) != null)
      {
         $(aNextId).focus();
      }
   }

   return false;
}

function isPrintableCharacterKey (aKeyCode)
{
   //           <SPACE>                 [ 0      -         z ]              [ Numpad0      -     Numpad/ ]                  ; (all punctuation keys)
   return ((aKeyCode == 32) || ((aKeyCode >= 48) && (aKeyCode <= 90)) || ((aKeyCode >= 96) && (aKeyCode <= 111)) || (aKeyCode >= 186));
}

function getRadioValue (aRadioGroup)
{
   if (aRadioGroup == null)
   {
      return;
   }

   // If it isn't really a radio button group
   if ((aRadioGroup.type == "hidden") || (aRadioGroup.type == "text"))
   {
      return (aRadioGroup.value);
   }

   for (var i = 0; i < aRadioGroup.length; i++)
   {
      if (aRadioGroup[i].checked)
      {
         return (aRadioGroup[i].value);
      }
   }
}

function fromFloatToPennies (aValue)
{
   return (fromFloatToInt (aValue, 2));
}

function fromFloatToInt (aValue, aPrecision)
{
   var myString   = new String (aValue);
   var myDotIndex = myString.indexOf (".");
   var myLength   = myString.length;
   var myZerosToAdd = 0;

   if (myDotIndex < 0)
   {
      myString += ".";
      myZerosToAdd = aPrecision;
   }
   else if (myDotIndex < (myLength - (aPrecision + 1)))
   {
      var myEndIndex = myDotIndex + (aPrecision + 1);
      myString = myString.substring (0, myEndIndex);
   }
   else if (myDotIndex > (myLength - (aPrecision + 1)))
   {
      var myZerosToAdd = ((myDotIndex + (aPrecision + 1)) - myLength);
   }

   for (var i = 0; i < myZerosToAdd; i++)
   {
      myString += "0";
   }

   var myNewDotIndex = myString.indexOf (".");

   return (myString.substring (0, myNewDotIndex) + myString.substring (myNewDotIndex + 1));
}

function fromPenniesToFloat (aValue)
{
   return (fromIntToFloat (aValue, 2));
}

function fromIntToFloat (aValue, aPrecision)
{
   var myIsNegative = false;

   if (aValue < 0)
   {
      myIsNegative = true;
      aValue *= -1;
   }

   var myString   = new String (aValue);
   var myLength   = myString.length;

   if (myLength < (aPrecision + 1))
   {
      var myZerosToAdd = (aPrecision + 1) - myLength;

      for (var i = 0; i < myZerosToAdd; i++)
      {
         myString = "0" + myString;
      }

      myLength = myString.length;
   }

   var myReturnString = "";

   if (myIsNegative == true)
   {
      myReturnString += "-";
   }

   myReturnString += myString.substring (0, myLength - aPrecision) + "." + myString.substring (myLength - aPrecision);

   return (myReturnString);
}

function fromFieldFloatToInt (aValue, aPrecision)
{
   var myDollarIndex = aValue.indexOf ("$");

   if (myDollarIndex >= 0)
   {
      aValue = aValue.substring (myDollarIndex + 1);
   }

   if (aPrecision == null)
   {
      aPrecision = 2;
   }

   var myIntValue = parseInt (fromFloatToInt (aValue, aPrecision), 10);

   if (isNaN (myIntValue))
   {
      myIntValue = 0;
   }

   return (myIntValue);
}

function formatDollarValue (aValue)
{
   return (formatFloat (fromPenniesToFloat (aValue), 2));
}

function formatFloat (aValue, aPrecision)
{
   var myString  = new String (aValue);

   var myFloat = parseFloat(myString,10);

   //round and fix decimals to the specified precision
   myString = '' + myFloat.toFixed(aPrecision);

   return (myString);
}

