	var formularioConfig = new Array();
	function AF_inicializar(idform){
		elForm = document.getElementById(idform);
		elForm.onsubmit = AF_limpiarValoresDefault;
		var lista_campos = formularioConfig[idform];
		for	(var idcampo in lista_campos) {
			elCampo = document.getElementById(idcampo);
			if(elCampo== null){
				alert("Campo mal configurado: "+idcampo);
			}
			if(elCampo.value == ''){
				//elCampo.className = 'texto_provisional';
				elCampo.value = lista_campos[idcampo];

			}
			elCampo.onfocus = AF_campoBorrarOnFocus;
			elCampo.onblur = AF_campoCargarOnBlur;
		}

	}
	function AF_campoBorrarOnFocus(){
		campo = this;
		idform = this.form.id;
		valor_defecto = formularioConfig[this.form.id][campo.name];
		if (campo.value == valor_defecto) {
			 campo.value = '';
		}
	//	campo.className = '';
	}
	function AF_campoCargarOnBlur(){
		campo = this;
		idform = this.form.id;
		valor_defecto = formularioConfig[this.form.id][campo.name];
		if (campo.value == '') {
		//	campo.className = 'texto_provisional';
			 campo.value = valor_defecto;
		}else{
		campo.className = '';
		}
	}
	function AF_limpiarValoresDefault(){
		var idform = this.id;
		var lista_campos = formularioConfig[idform];
		for	(var idcampo in lista_campos) {
			elCampo = document.getElementById(idcampo);
			valor_defecto = formularioConfig[idform][idcampo];
			if (elCampo.value == valor_defecto) {
			 	elCampo.value = '';
			}
		}
		if(idform.indexOf("searchbox") == 0){
			document.forms[this.id]["q"].value = Utf8.encode(document.forms[this.id]["q"].value);
		}
	}
	function AF_cargarFormularioConfig(xmlRes){

		var lista_formularios = xmlRes.getElementsByTagName('formulario');
		for(var i = 0; i < lista_formularios.length; i++ ){
			id_formulario = lista_formularios[i].getAttribute("id");
			formularioConfig[id_formulario] = new Array();
			var lista_campos = lista_formularios[i].getElementsByTagName('campo');
			for(var j = 0; j < lista_campos.length; j++ ) {
				id_campo = lista_campos[j].getAttribute("id");
				var nodo_accion = lista_campos[j].getElementsByTagName("accion");
				if(nodo_accion.length > 0){
					accion_campo = nodo_accion.item(0).firstChild.data;
					formularioConfig[id_formulario][id_campo] = accion_campo;
				}
			}
		}
	}

	function AF_peticionFormXml(url) {
	    var httpRequest = obtenerObjetoAjax();
	    httpRequest.onreadystatechange = function() {
	    	if (httpRequest.readyState == 4) {
	        	if (httpRequest.status == 200) {
	            	AF_procesarFormXml(httpRequest.responseXML);
	        	} else {
					return false;
	        	}
	    	}
	    };
	    httpRequest.open('GET', url, true);
	    httpRequest.send('');
	}

	function AF_procesarFormXml(xmlRespuesta){
		AF_cargarFormularioConfig(xmlRespuesta);
		for (var UnFormConf in formularioConfig){
			AF_inicializar(UnFormConf);
		}
	}

	function AF_peticionFormXmlEsp(seccion,idioma) {

		AF_peticionFormXml('/xml/' + idioma + '/form-' + seccion +'.xml');
	}
	function AF_ejecutar(pathXml){
		for(var n_form=0; n_form < document.forms.length; n_form++){
			var id_formulario = document.forms[n_form].getAttribute("id");

			var id_formulario_tratado = "";
			if(0 == id_formulario.indexOf('searchbox')){
				id_formulario_tratado = id_formulario.replace(/(:)/i,"");
			}
			if(0 == id_formulario.indexOf('formulario')){
				id_formulario_tratado = id_formulario.replace(/^formulario_(.+)$/i,"form-$1");
			}
			if(id_formulario_tratado != ""){
				AF_peticionFormXml(pathXml+id_formulario_tratado+'.xml');
			}
		}
	}


var Utf8 = {
	// public method for url encoding
	encode : function (string) {
		string = string.replace(/\r\n/g,"\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			}
			else if((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			}
			else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	}
}





