/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
	var dumped_text = "";
	var depth = 0;
	if(!level) level = 0;
	if(!arr) return ''+arr;
	//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
		var theItem = null;
		var value = null;
		try {
			for(theItem in arr) {
				value = arr[theItem];
				/// testcoment
				if(typeof(value) == 'object' && (depth++)<1) { //If it is an array,
					dumped_text += level_padding + "" + theItem + " ...\n";
					dumped_text += dump(value,level+1);
				} else {
					dumped_text += level_padding + "" + theItem + " => \"" + value + "\"\n";
				}
			}
		} catch(e) {
			alert('not working: \n'+e.text);
			if(typeof(window.onerror) == 'function')
				window.onerror();
			return false;
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = ""+typeof(arr)+" "+arr.length+"("+arr+")";
	}
	return dumped_text;
}

function tryForLoop(arr){
	arr = arr || document;
	var str='';
	try {
		for(var theItem in arr){
			str += theItem+'\t'+arr[theItem]+'\n';
		}
	} catch(e) {
		error(); alert ('not working: \n'+e); return false;
	}
	alert(str);
}
