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

/* idoo operator extension v0.1 
  by Cedric Nilly http://wwW.idoo.com */

var idoo_add_contact = {
  description: "Add to your iDOO contacts",
  shortDescription: "Add to my iDOO contacts",
  scope: {
    semantic: {
      "hCard" : "hCard",
	  "email" : "email"
    }
  },
  doAction: function(semanticObject, semanticObjectType) {
	var serializer = new XMLSerializer();
	var data = serializer.serializeToString(semanticObject.resolvedNode);
	//for ( keyVar in semanticObject ) {
	//   alert(keyVar+": "+semanticObject[keyVar]);
	//}
	if (semanticObject['fn']) {
		var url = "http://www.idoo.com/addcontact.php?name="+encodeURIComponent(semanticObject['fn']);
		if (semanticObject['url']) 
			url+= "&url="+encodeURIComponent(semanticObject['url']);
		if ( (semanticObject['email']) && (semanticObject['email'][0]) && (semanticObject['email'][0]['value']) )
			url+= "&email0="+encodeURIComponent(semanticObject['email'][0]['value']);
		if (semanticObject['adr'])
			url+= "&adr="+encodeURIComponent(semanticObject['adr']);
		return url;
	}
  }
};

SemanticActions.add("idoo_add_contact", idoo_add_contact);
