function getElementsByClassName(class_name)
{
  var all_elements = document.getElementsByTagName('*');
  var els = new Array();

  for(var i=0; i<all_elements.length; i++)
  {
    el = all_elements[i];
    if(el.className==class_name)
    {
      els.push(el);
    }
  }

  return els;
}

function getRealChildren(element)
{
  var children = new Array();
  var count = 0;

//commented section doesn't work in Safari
/*  for(var child in element.childNodes)
  {
    if(typeof(element.childNodes[child].tagName)!='undefined')
    {
      children[count] = element.childNodes[child];
      count++;
    }
  }*/

  var clength = element.childNodes.length;

  for(var i=0;i<clength;i++)
  {
    if(typeof(element.childNodes[i].tagName)!='undefined')
    {
      children[count] = element.childNodes[i];
      count++;
    }
  }      

  return children;
}

function getUrlVars()
{
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
 
	for(var i = 0; i < hashes.length; i++)
	{
	hash = hashes[i].split('=');
	vars.push(hash[0]);
	vars[hash[0]] = hash[1];
	}
 
	return vars;
}

function getParams(strng)
{
	var vars = [], hash;
	var hashes = strng.slice(strng.indexOf('?') + 1).split('&');
 
	for(var i = 0; i < hashes.length; i++)
	{
	hash = hashes[i].split('=');
	vars.push(hash[0]);
	vars[hash[0]] = hash[1];
	}
 
	return vars;
}

function getPosition(e)
{
	var posx=0,posy=0;

	if(e.pageX || e.pageY)
	{
	  posx=e.pageX; posy=e.pageY;
	}
	else if(e.clientX || e.clientY)
	{
	  if(document.documentElement.scrollTop)
	  {
	    posx=e.clientX+document.documentElement.scrollLeft;
	    posy=e.clientY+document.documentElement.scrollTop;
	  }
	  else
	  {
	    posx=e.clientX+document.body.scrollLeft;
	    posy=e.clientY+document.body.scrollTop;
	  }
	}
	return [posx,posy];
}

