function getById(id)
{
  if (document.getElementById)
    return document.getElementById(id);
  if (document.all)
    return document.all(id);
  return document[id];
}

function changeVisibility(id, isVisible)
{
  var d = getById(id);
  if (d)
    d.style.visibility = isVisible ? 'inherit' : 'hidden';
  return;
}

function formatPriceWithSign(priceCents)
{
  var isNegative = (priceCents < 0);
  if (isNegative)
    priceCents = -priceCents;
  var t = '' + priceCents
  while (t.length < 3)
    t = '0' + t;
  return (isNegative ? '-$' : '$') + t.substring(0, t.length - 2) + '.' + t.substring(t.length - 2);
}

function formatPrice(priceCents)
{
  var isNegative = (priceCents < 0);
  if (isNegative)
    priceCents = -priceCents;
  var t = '' + priceCents
  while (t.length < 3)
    t = '0' + t;
  return (isNegative ? '-' : '') + t.substring(0, t.length - 2) + '.' + t.substring(t.length - 2);
}

function removeBadIdChars(s)
{
  if (s == null)
    return '';
  var len = s.length;
  var t = '';
  for (var i = 0; i < len; i++)
  {
    var c = s.charAt(i);
    if (((c >= 'a') && (c <= 'z')) || ((c >= 'A') && (c <= 'Z')) || ((c >= '0') && (c <= '9')))
      t += c;
  }
  return t;
}

function noNull(s)
{
  if (s == null)
    return '';
  return s;
}

function parseIntWithDefault(s, defaultValue)
{
  if (s == null)
    return defaultValue;
  var n = parseInt(s);
  if (isNaN(n))
    return defaultValue;
  return n;
}

function trimString(s)
{
  if (s == null)
    return '';
  var i;
  for (i = 0; i < s.length; i++)
    if (s.charAt(i) != ' ')
      break;
  if (i > 0)
    s = s.substring(i, s.length);
  if (s.length == 0)
    return s;
  for (i = s.length - 1; i >= 0; i--)
    if (s.charAt(i) != ' ')
      break;
  i++;
  if (i < s.length)
    s = s.substring(0, i);
  return s;
}

function createFlashObjectWithHooks(flashObjectDivName, flashObjectArgs, flashObjName, fsCommandReceiverName)
{
  AC_FL_RunContent_div.apply(null, flashObjectArgs);
  createFlashObjectHooks(flashObjectDivName, flashObjName, fsCommandReceiverName);
  return;
}

function createFlashObjectHooks(flashObjectDivName, flashObjName, fsCommandReceiverName)
{
  var newScript = document.createElement('script');
  newScript.type = 'text/javascript';
  newScript.text = 'function ' + flashObjName + '_DoFSCommand(command, args)\n'
                 + '{\n'
                 + '  ' + fsCommandReceiverName + '.receiveFSCommand(command, args);\n'
                 + '  return;\n'
                 + '}\n';
  document.getElementById(flashObjectDivName).appendChild(newScript);
  writeIEFSCommandHook(flashObjName, flashObjectDivName);
  return;
}

function writeIEFSCommandHook(flashObjName, flashObjectDivName)
{
  if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1)
  {
    if (flashObjectDivName)
    {
      var newScript = document.createElement('script');
      newScript.type = 'text/javascript';
      newScript.event = 'FSCommand(command, args)';
      newScript.htmlFor = flashObjName;
      newScript.text = flashObjName + '_DoFSCommand(command, args);\n'
      document.getElementById(flashObjectDivName).appendChild(newScript);
    }
    else
    {
      document.write('<script language=\"VBScript\"\>\n');
      document.write('On Error Resume Next\n');
      document.write('Sub ' + flashObjName + '_FSCommand(ByVal command, ByVal args)\n');
      document.write('	Call ' + flashObjName + '_DoFSCommand(command, args)\n');
      document.write('End Sub\n');
      document.write('</script\>\n');
    }
  }
  return;
}

function getFirstElementByTagName(curNode, tagName)
{
  var elements = curNode.getElementsByTagName(tagName);
  if (!elements || (elements.length == 0))
    return null;
  return elements.item(0);
}

function getDataFromNode(curNode)
{
  if (curNode == null)
    return '';
  curNode = curNode.firstChild;
  if (!curNode)
    return '';
  var curNodeData = curNode.data;
  if (!curNodeData)
    return '';
  return curNodeData;
}

function getDataByTagName(curNode, tagName)
{
  return getDataFromNode(getFirstElementByTagName(curNode,tagName));
}

function getElementListByTagName(curNode, tagName)
{
  var elements = curNode.getElementsByTagName(tagName);
  if (!elements)
    return new Array();
  var elementsArray = new Array(elements.length);
  for (var i = 0; i < elements.length; i++)
    elementsArray[i] = elements.item(i);
  return elementsArray;
}

function getAttributeValueByTagName(curNode, tagName, attributeName)
{
  return getAttributeValueByName(getFirstElementByTagName(curNode, tagName).firstChild);
}

function getAttributeValueByName(curNode, attributeName)
{
  if (!curNode.attributes)
    return '';
  for (var i = 0; i < curNode.attributes.length; i++)
    if (curNode.attributes[i].name == attributeName)
      return curNode.attributes[i].value;
  return '';
}

function handleEnterKey(e, p)
{
  if (!e.keyCode || ((e.keyCode != 13) && (e.keyCode != 10)))
    return true;
  if ((typeof p) == 'function')
    p();
  else
  {
    if ((typeof p) == 'string')
      e.target.form[p].focus();
    else
    {
      if ((typeof p) == 'object')
        p.focus();
    }
  }
  return false;
}
