function centerElement(name)
{
  element = document.getElementById(name);
  screenHeight = window.innerHeight > 0 ? window.innerHeight : document.documentElement.clientHeight;
  screenWidth = window.innerWidth > 0 ? window.innerWidth : document.documentElement.clientWidth;
  element.style.top = (screenHeight - element.offsetHeight) / 2 + 'px';
  element.style.left = (screenWidth - element.offsetWidth) / 2 + 'px';
}

function getEventElement(event)
{
  if (!event)
    event = window.event;
    
  if (event.target)
    result = event.target;
  else
    if (event.srcElement)
      result = event.srcElement;
  if (result.nodeType == 3) // defeat Safari bug
    result = result.parentNode;
  return result;
}

function getFirstEventParent(event, tag)
{
  result = getEventElement(event);
  while (result.tagName != tag)
  {
    result = result.parentNode;
    if (result == null) return null;
  }
  return result;
}

function getEventAnchor(event)
{
  result = getEventElement(event);
  while (result.tagName != "A")
    result = result.parentNode;
  return result;
}

function getElementsByClassName(className, node)
{
  if (!node) 
    node = document.getElementsByTagName("body")[0];
  var result = [];
  var regExpression = new RegExp('\\b' + className + '\\b');
  var elements = node.getElementsByTagName("*");
  for (var i = 0; i < elements.length; i++)
    if (regExpression.test(elements[i].className))
      result.push(elements[i]);
  return result;
}

function getFrame(name)
{
  return window.parent.document.getElementById(name);
}

function getElement(name)
{
  return document.getElementById(name);
}

function getFrameElement(frameName, elementName)
{
  frame = getFrame(frameName);
  if (frame != null)
    return frame.document.getElementById(name);
  else
    return null;
}

function extractParam(source, name)
{
  startIndex = -1;
  do
  {
    startIndex++;
    startIndex = source.indexOf(name + "=", startIndex);
  }
  while ((startIndex > 0) && (source.substring(startIndex - 1, startIndex) != ","));
  
  if (startIndex != -1)
  {
    finishIndex = source.indexOf(",", startIndex);
    if (finishIndex == -1)
      finishIndex = source.length;
    return source.substring(startIndex, finishIndex);
  }
  return null;
}

function deleteParam(source, name)
{
  param = extractParam(source, name);
  if (param != null)
  {
    source = source.replace(param + ",", "");
    source = source.replace(param, "");
  }
  return source;
}

function getParamValue(source, name)
{
  param = extractParam(source, name);

  if (param != null)
  {
    startIndex = param.indexOf("=");
    if (startIndex != -1)
    {
      return param.substring(startIndex + 1, param.length);
    }
  }
  return null;
}

function setParamValue(source, name, value)
{
  if (source != "")
  {
    param = extractParam(source, name);
    if (param == null)
      source += "," + name + "=" + value;
    else
      source = source.replace(param, name + "=" + value);
    return source;
  }
  else
    return name + "=" + value;
}

function getCookie(name)
{
  if (document.cookie.length > 0)
  {
    startIndex = document.cookie.indexOf(name + "=");
    if (startIndex != -1)
    {
      startIndex = startIndex + name.length + 1; 
      finishIndex = document.cookie.indexOf(";", startIndex);
      if (finishIndex == -1)
        finishIndex = document.cookie.length;
      return unescape(document.cookie.substring(startIndex, finishIndex));
    } 
  }
  return "";
}

function setCookie(name, value, endurance)
{
  var expireDate = new Date();
  expireDate.setDate(expireDate.getDate() + endurance);
//  document.cookie = name + "=" + escape(value) + ";expires=" + expireDate.toGMTString();
  document.cookie = name + "=" + escape(value) + ";";
}

function deleteCookie(name)
{
  setCookie(name, "", -1);
}

function clearCookies()
{
  document.cookie = "";
}