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


kForm={
  re:{
    mail: new RegExp("^([a-z0-9,!#\\$%&'\\*\\+/=\\?\\^_`\\{\\|}~-]+(\\.[a-z0-9,!#\\$%&'\\*\\+/=\\?\\^_`\\{\\|}~-]+)*)@(([a-z0-9-]+(\\.[a-z0-9-]+)*)\\.([a-z]{2,}))$",""),
    notempty: /[^\s]+/,
    uint: /^\d+$/,
    int: /^-?\d+$/
  },
  forms:{},
  inpErr:function(id){ if(document.getElementById(id).className.search(/ inpLineErr($| )/)==-1) document.getElementById(id).className+=" inpLineErr"; },
  inpOk:function(id){ document.getElementById(id).className=document.getElementById(id).className.replace("inpLineErr",""); },
  v:function(formName,id){
    var h=true;
    var i;
    for(i in kForm.forms[formName]){
      if(id==null || i==id){
        if(kForm.forms[formName][i].pre!=null){
          document.getElementById(formName+"_"+i+"_inp").value=kForm.forms[formName][i].pre(document.getElementById(formName+"_"+i+"_inp").value);            
        }
        if(kForm.forms[formName][i].vre!=null){
          if(!document.getElementById(formName+"_"+i+"_inp").value.match(kForm.forms[formName][i].vre)){ h=false; kForm.inpErr(formName+"_"+i+"_cnt"); }else kForm.inpOk(formName+"_"+i+"_cnt");
        }
      }
    }
    return h;      
  },
  selShow:function(formName,id){
    var cnt=el(formName+"_"+id+"_cnt");
    var box=el(formName+"_"+id+"_selectBox");
    box.style.top=(cnt.offsetHeight+cnt.offsetTop)+'px';
    box.style.left=cnt.offsetLeft+'px';
    box.style.display=box.style.display=='block'?'none':'block';
    return false;
  },
  selSet:function(formName,id,v){
    el(formName+"_"+id+"_disp").innerHTML=el(formName+"_"+id+"_sel_"+v).innerHTML;
    el(formName+"_"+id+"_selectBox").style.display='none';
    el(formName+"_"+id+"_inp").value=v;
    return false;
  }
  
};
