function show_desc(id, e)
{
	
	
	html = '<table border="0" cellpadding="4" cellspacing="0" width="100%"><tr>';
	html += '<td style="font-weight: bold;">' + desc[id][0] + '</td>';
	html += '<td align="right" valign="top"><a href="javascript: hide_desc();">Close</a></td>';
	html += '</tr></table>';
	html += '</div>';
	html += '<div style="padding: 0px 4px 4px 4px;">';
	html += desc[id][1];
	html += '</div>';
	
	d = document.getElementById('popup_div');
	d.innerHTML = html;
	
	d.style.display='block';
	
	width = 320;
	height = d.offsetHeight;
	
	if ( e.pageX && e.pageY )
    {
		xpos=e.pageX - width / 6;
		ypos=e.pageY - height / 2;
    }
    else if (e.clientX && e.clientY )
    {
		xpos=e.clientX + document.body.scrollLeft - width / 6;
		ypos=e.clientY + document.body.scrollTop - height / 2;
    }
	
	d.style.left=xpos + 'px';
	d.style.top=ypos + 'px';
}

function hide_desc()
{
	document.getElementById('popup_div').style.display='none';
}

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}