function urlencode(text)   
{   
    text = escape(text.toString()).replace(/\+/g, "%2B");    
    var matches = text.match(/(%([0-9A-F]{2}))/gi);   
    if (matches)   
    {   
        for (var matchid = 0; matchid < matches.length; matchid++)   
        {   
            var code = matches[matchid].substring(1,3);   
            if (parseInt(code, 16) >= 128)   
            {   
                text = text.replace(matches[matchid], '%u00' + code);   
            }   
        }   
    }   
    text = text.replace('%25', '%u0025');   
    return text;   
}

function getElementPos(elementId) 
{
	 var ua = navigator.userAgent.toLowerCase();
	 var isOpera = (ua.indexOf('opera') != -1);
	 var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof
	var el = document.getElementById(elementId); 
	 if(el.parentNode === null || el.style.display == 'none') 
	 {
		return false;
	 }      
	 var parent = null;
	 var pos = [];     
	 var box;     
	 if(el.getBoundingClientRect)    //IE
	 {
		  box = el.getBoundingClientRect();
		  var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
		  var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
		  return {x:box.left + scrollLeft, y:box.top + scrollTop};
	 }
	 else if(document.getBoxObjectFor)    // gecko    
	 {
		  box = document.getBoxObjectFor(el); 
		  var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0; 
		  var borderTop = (el.borderTopWidth)?parseInt(el.style.borderTopWidth):0; 
		  pos = [box.x - borderLeft, box.y - borderTop];
	 } 
	 else    // safari & opera    
	 {
		  pos = [el.offsetLeft, el.offsetTop];  
		  parent = el.offsetParent;     
		  if (parent != el) 
		  { 
				while (parent)
				{  
					pos[0] += parent.offsetLeft; 
					pos[1] += parent.offsetTop; 
					parent = parent.offsetParent;
				}  
		  }   
		  if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))
		  { 
			   pos[0] -= document.body.offsetLeft;
			   pos[1] -= document.body.offsetTop;         
		  }    
	 }              
	 if (el.parentNode) 
	 { 
		parent = el.parentNode;
	 } 
	 else 
	 {
		parent = null;
	 }
	 while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
	 { 
		 // account for any scrolled ancestors
		  pos[0] -= parent.scrollLeft;
		  pos[1] -= parent.scrollTop;
		  if (parent.parentNode) 
		  {
			 parent = parent.parentNode;
		  } 
		  else 
		  {
			parent = null;
		  }
	 }
	 return {x:pos[0], y:pos[1]};
}