// There are two ways of to call this function: the arrName argument can be either a string of the name of the array or the array itself.
// So lets say the array is called "images".
// 1. print_r("images")		-> will print the name of the array on top.
// 2. print_r(images)  		-> will only print what is in the array.
function print_r(arrName, forAlertOrDoc, level)
{
	var dumped_text = "";

	if(typeof(arrName) == 'string')
	{
		var arr = eval(arrName);
		dumped_text += arrName+"\n";
	}
	else if(typeof(arrName) == 'object')
	{
		var arr = arrName;
	}
	
	if(!level)
	{
		level = 0;
	}
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	
	for(var j = 0; j < level; j++)
	{
		level_padding += "-       ";
	}
	
	//Array/Hashes/Objects
	if(typeof(arr) == 'object') 
	{
		for(var item in arr) 
		{
			var value = arr[item];
			
			//If it is an array
			if(typeof(value) == 'object')
			{
				dumped_text += level_padding + "'" + item;
				if(forAlertOrDoc == "alert")
				{
					dumped_text += "' ...\n";
				}
				else
				{
					dumped_text += "' ...<br>";
				}
				dumped_text += print_r(value, forAlertOrDoc, level+1);
			}
			else
			{
				dumped_text += level_padding + "'" + item + "' => \"" + value;
				if(forAlertOrDoc == "alert")
				{
					dumped_text += "\"\n";
				}
				else
				{
					dumped_text += "\"<br>";
				}
			}
		}
	}
	else
	{
		//Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 	
