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;
}


/*
	Some Functions for Form's
	Author: Everton Emilio Tavares
	Date: 28-08-2007
	Location: Cascavel - Paran - Brazil
*/
Element.implement({
	/* 
		Property: getFormValues
 
		Return a object
	 */
	getFormValues: function() {
		vals = {};
		$$(this.getElementsByTagName('input'), this.getElementsByTagName('select'), this.getElementsByTagName('textarea')).each(function(el){
		// this.getFormElements().each(function(el){
			var name = el.name;
			var val  = el.get('value');
			if (val === false || !name || el.disabled) return;
			//if exists value for input checkbox, append value in a new array
			if ($chk(vals[name])&&this.type=='checkbox') vals[name] = [vals[name]]; 
			if ($type(vals[name])=='array') vals[name].push(val)
			else vals[name] = val;
		});
		return vals;
	},
	/* 
		Property: getInputByName
	 */
	getInputByName : function(nome) {
		el = this.getFormElements().filterByAttribute('name','=',nome)
		return (el)?(el.length = 1)?el[0]:el:false;
	},
	/*
		Property: emptyValue
 
		Remove Value
	 */	
	emptyValue : function() {
		switch (this.get('tag')){
			case 'select':
				$each(this.options, function(option){option.selected = false;});
				break;
			case 'input': 
				if (this.checked && ['checkbox', 'radio'].contains(this.type)) this.checked = false
				else if (['hidden', 'text', 'password'].contains(this.type)) this.value = '';
				break;
            		case 'textarea': this.value = '';
		}
		return this;
	},

	/* 
		Property: setValue

		Sets element value
	 */
	setValue : function(val) {
		switch (this.get('tag')){
			case 'select':
				sel = function(option) {
					//i think that this isn't the best method...
					if ($type(val)=='array') val.each(function(v,i){val[i]=v.toString()});
					if (($type(val)=='array'&&val.contains(option.value))||(option.value==val))option.selected = true
					else option.selected = false;
				}
				$each($$(this.options),sel);
				break;
			case 'input': 
				if (['checkbox', 'radio'].contains(this.type))this.checked=(($type(val)=='array')?val.contains(this.value):(this.value==val));
				else if (['hidden', 'text', 'password'].contains(this.type.toString()))this.value=val;
				break;
			case 'textarea': this.value = val;
				break;
					//if element isn't a input, set the text
			default: if($type(val)!='array') this.setText(val);
		}
		return this;
	}
});