/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function nuevoAjax(){ 
	/* Crea el objeto AJAX. */
	var xmlhttp=false; 
	try { 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e){ 
		try{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
} 

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cargaDatos(elemento,sid,campo,anterior,clase,esVarchar){
	var bOk=true;
	
	//Campos obligatorios de tipo input textbox
	var camposObligatorios="titulo_es,med_mancha,med_papel,edicion,referencia,precio"
	
	var valor=document.getElementById("input_"+elemento).value;
	
	anterior=RestituyeComillas(anterior);
	
	//Comprobar si se trata de un campo obligatorio y este viene vacío
	if((camposObligatorios.toLowerCase().indexOf(elemento.toLowerCase())>=0) && (QuitaBlancos(valor)=="")){
		alert('Está intentando eliminar un dato obligatorio que no puede estar vacío.\nLa modificación ha sido cancelada.');
		//Recupero lo anterior
		document.getElementById("fila_"+elemento).innerHTML=anterior;
		document.getElementById("fila_"+elemento).className=clase;
	}
	else{
		//Control de números en campos Precio y Edición
		if((elemento.toLowerCase()=='edicion') || (elemento.toLowerCase()=='precio')){

			//En variables auxiliares se toma el valor sin puntos de millar
			var valorAux2;
			var valorAux=valor.replace('.','');
			while(valorAux.indexOf('.')>=0){
				valorAux2=valorAux.replace('.','');
				valorAux=valorAux2
			}
			//Si se trata de precios, asignar como valor para guardar en la base de datos

			//el que se ha obtenido en la variable auxiliar sin puntuación de millar.
			if(elemento.toLowerCase()=='precio')
				valor=valorAux
			
			//Quitar en la variable auxiliar la coma decimal
			while(valorAux.indexOf(',')>=0){
				valorAux2=valorAux.replace(',','');
				valorAux=valorAux2
			}
			
			//Determinar si el dato sin puntos de millar ni comas decimales 
			//es, efectivamente, un número. Si no es así informar del error
			//y parar el proceso de actualización
			if(!isNum(valorAux)){
				bOk=false;
				alert('Este dato solo puede contener números.');
				document.getElementById("input_"+elemento).focus();
				document.getElementById("input_"+elemento).selected;
			}
		}
		
		if(bOk)	{
			var sURL='';
			// Guardar los datos
					
			ajax=nuevoAjax();
			sURL="update_obra.asp?sfid="+sid+"&dato="+valor+"&campo="+campo+"&esVarchar="+esVarchar
			ajax.open("GET", sURL, true);	
			ajax.onreadystatechange=function(){
			//alert(ajax.readyState);  
				if (ajax.readyState==1){
					document.getElementById("fila_"+elemento).innerHTML="<img src='../admin/images/misc/loader.gif' align='absmiddle'>&nbsp;<b>Cargando...</b>";
				}
				if (ajax.readyState==4){ 
					var strResult=ajax.responseText;
					if (strResult!=''){
						//Recupero lo anterior
						document.getElementById("fila_"+elemento).innerHTML=anterior;
						var mensaje = 'Se ha producido el siguiente error al intentar grabar el campo \"' + campo + '\" del libro \"' + sid + '\"\n\n'
						mensaje = mensaje + '\"'+strResult+'\"';
						mensaje = mensaje + '\n\nContacte con el administrador'
						alert(mensaje);
					}
					else{
						document.getElementById("fila_"+elemento).innerHTML=valor;
					}
					document.getElementById("fila_"+elemento).className=clase;
				}
			}
			ajax.send(null);
		}
	}
}


/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*El ancho de la caja de texto es de 205px*/
function creaInput(elemento,sid,campo,clase,esVarchar,propiedades){
	// Funcion encargada de cambiar el texto comun de la fila por un campo input que conserve
	// el valor que tenia ese campo 
	var fila=document.getElementById("fila_"+elemento);
	var texto = fila.innerHTML;
	sValor=texto;
	texto=SustituyeComillas(texto);
	
	var strCargaDatos="cargaDatos('"+elemento+"','"+sid+"','"+campo+"','"+texto+"','"+clase+"','"+esVarchar+"');";
	
	//Controlar que al pulsar la tecla Enter se realice la misma acción 
	//que pulsando el botón Aceptar, manteniendo además el resto de 
	//eventos y propiedades enviadas en el parámetro 'propiedades'.
	propiedades=ReconstruirOnKeyPress(propiedades, strCargaDatos);
	
	fila.className='';
	if(!document.getElementById("input_"+elemento)){
		// Solo mostramos el input si ya no esta siendo mostrado 
		if(elemento.indexOf('Med_Mancha')>=0 || elemento.indexOf('Med_Papel')>=0){
			fila.innerHTML="<input value='"+fila.innerHTML+"' id='input_"+elemento+"' type='text' class='formtxtlargo' "+propiedades+">&nbsp;<img src='images/misc/ico_aceptar.gif' onClick=\"cargaDatos('"+elemento+"','"+sid+"','"+campo+"','"+texto+"','"+clase+"','"+esVarchar+"')\">&nbsp;<img src='images/misc/ico_cancelar.gif' onClick=\"CancelarCarga('"+elemento+"','"+clase+"','"+texto+"');\">";
		}
		else{
			fila.innerHTML="<input value='"+fila.innerHTML+"' id='input_"+elemento+"' type='text' class='formtxt4' "+propiedades+">&nbsp;<img src='images/misc/ico_aceptar.gif' onClick=\"cargaDatos('"+elemento+"','"+sid+"','"+campo+"','"+texto+"','"+clase+"','"+esVarchar+"')\">&nbsp;<img src='images/misc/ico_cancelar.gif' onClick=\"CancelarCarga('"+elemento+"','"+clase+"','"+texto+"');\">";
		}
		
		document.getElementById("input_"+elemento).value=sValor;
		document.getElementById("input_"+elemento).focus();
	}
}



function CancelarCarga(elemento,clase,texto){
	if(clase!='')
		document.getElementById('fila_'+elemento).className=clase;
	document.getElementById('fila_'+elemento).innerHTML=RestituyeComillas(texto);
}



/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*	FUNCIONES PARA CREAR Y GUARDAR DATOS DE UN CAMPO SELECT (COMBO)		*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function creaSelect(elemento,sfid,campo,consulta,formulario){
	// Funcion encargada de cambiar el texto comun de la fila por un campo select que conserve
	// el valor que tenia ese campo 
	
	var fila=document.getElementById("fila_"+elemento);
	//fila.className='';
	
	if(!document.getElementById("input_"+elemento)){
		var fila=document.getElementById("fila_"+elemento);
		var texto = fila.innerHTML;
		
		texto=CaracteresHTML(texto);
		
		texto=SustituyeComillas(texto);
		
		var codigo='';
		ajaxSelect=nuevoAjax();
		ajaxSelect.open("GET", "ajax/genera_combo.asp?nombreselect=input_"+elemento+"&consulta="+consulta+"&sfid="+sfid, true);
		
		ajaxSelect.onreadystatechange=function(){ 
			if (ajaxSelect.readyState==1){
				// Mientras carga, pongo una opción que diga "Espere..."
				fila.innerHTML="Espere...";
			}
			if (ajaxSelect.readyState==4){ 
				codigo = ajaxSelect.responseText;
				//alert(texto.toUpperCase())
				if(campo.toLowerCase()=="destacado"){
					//alert("\"cargaDatosSelect('"+elemento+"','"+sfid+"','"+campo+"','"+QuitaBlancos(texto)+"','"+formulario+"');\"")
					codigo = codigo + "&nbsp;<img src='images/misc/ico_aceptar.gif' onClick=\"CompruebaDestacadas('"+sfid+"', '"+elemento+"','"+campo+"','"+texto+"','"+formulario+"');\">&nbsp;<img src='images/misc/ico_cancelar.gif' onClick=\"CancelarCarga('"+elemento+"','','"+texto+"');\">";
				}
				else{
					codigo = codigo + "&nbsp;<img src='images/misc/ico_aceptar.gif' onClick=\"cargaDatosSelect('"+elemento+"','"+sfid+"','"+campo+"','"+texto+"','"+formulario+"')\">&nbsp;<img src='images/misc/ico_cancelar.gif' onClick=\"CancelarCarga('"+elemento+"','','"+texto+"');\">";
				}
								
				
				
				fila.innerHTML = codigo;
				if (document.getElementById("input_"+elemento)){
					var sTextoCombo
					texto=RestituyeComillas(texto)
					// como el AJAX cachea, hay que poner el valor seleccionado en el ASP, no en la generación del combo.
					for (x=0;x<document.getElementById("input_"+elemento).length;++x){
						sTextoCombo=CaracteresHTML(document.getElementById("input_"+elemento).options[x].text)
						if (QuitaBlancos(sTextoCombo.toUpperCase())==QuitaBlancos(texto.toUpperCase())){	
							document.getElementById("input_"+elemento).options[x].selected=true;
						}
					}
				}
				document.getElementById("input_"+elemento).focus();
			} 
		}
		ajaxSelect.send(null);

	}
}


function cargaDatosSelect(elemento,sfid,campo,anterior,formulario){
	
	var valor='';
	var texto='';
	var sURL='';
		
		
	valor=document.getElementById("input_"+elemento).value;
	texto=eval("document."+formulario+".input_"+elemento+".options[document."+formulario+".input_"+elemento+".selectedIndex].text");

	if(QuitaBlancos(valor)=='' && elemento!='tipo' && elemento!='fecha'){
		alert('Está intentando eliminar un dato que es obligatorio.');
		document.getElementById("input_"+elemento).focus();
	}
	else{
		ajax=nuevoAjax();
		if(elemento=='tipo' && QuitaBlancos(valor)==''){
			valor='0';
		}
		
		if(elemento=='fecha' && QuitaBlancos(valor)==''){
			texto='';
		}
		sURL="update_obra.asp?sfid="+sfid+"&dato="+valor+"&campo="+campo+'&esVarchar=true';
		//alert(sURL);
		ajax.open("GET", sURL, true);
		ajax.onreadystatechange=function(){ 
		
		if (ajax.readyState==1){
				document.getElementById("fila_"+elemento).innerHTML="<img src='../admin/images/misc/loader.gif' align='absmiddle'>&nbsp;<b>Cargando...</b>";
		}
		if (ajax.readyState==4){ 
				var strResult=ajax.responseText;
				if (strResult!=''){
					//Recupero lo anterior
					document.getElementById("fila_"+elemento).innerHTML=anterior;
					var mensaje = 'Se ha producido el siguiente error al intentar grabar el campo \"' + campo + '\" del libro \"' + sfid + '\"\n\n'
					mensaje = mensaje + '\"'+strResult+'\"';
					mensaje = mensaje + '\n\nContacte con el administrador'
					alert(mensaje);
				}
				else{
					// Guardar los datos
					if (texto!='Seleccione'){
						if(campo.toLowerCase()=='id_artista'){
							document.getElementById("hidArtista").value=valor;	
						}
						document.getElementById("fila_"+elemento).innerHTML=texto;
					}
					else{
						if(elemento!='tipo')
							document.getElementById("fila_"+elemento).innerHTML=anterior;
						else
							document.getElementById("fila_"+elemento).innerHTML='';
					}
				}
	
			}
		}
		ajax.send(null);
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////




/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/*	FUNCION PARA GUARDAR DATOS DE UN AREA DE TEXTO EDITABLE		*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cargaDatosAreaEditable(objeto,elemento,sid,campo,anterior,clase,esVarchar){
	var valor='';
	
	
	var editor = document.getElementById(objeto.EditorID);	
	if(objeto.currentview==1)
		valor=editor.innerText;
	else 
		valor=editor.innerHTML;
	
	//Al ser un campo obligatorio, comprobar que no está vacío.
	//El contenido vacío de este campo de compone de las etiquetas de apertura y 
	//cierre de párrafo y un espacio en blanco en formato html (<p>&nbsp;</p>).
	//alert(elemento.indexOf('Descripcion_'))
	if(!(elemento.indexOf('Descripcion_')>=0) && ((QuitaBlancos(valor).toLowerCase()=="<p>&nbsp;</p>")||(QuitaBlancos(valor)==''))){
		alert(elemento.toUpperCase()+' es un dato obligatorio. No puede estar vacío.');
		//Recupero lo anterior
		document.getElementById("fila_"+elemento).innerHTML=anterior;
		document.getElementById("fila_"+elemento).className=clase;
	}
	else{
//////////////////////////////////////////////////////////////////////////////////
		var sAux2;
		var sAux=valor.replace("&","@amp@");
		sAux2=sAux;
//	SUSTITUIR & POR @amp@
		while (sAux.indexOf("&")>=0){
			sAux2=sAux.replace("&","@amp@");
			sAux=sAux2;
		}
		
		sAux=escape(sAux2);
//////////////////////////////////////////////////////////////////////////////////
		var sURL='';
		var parametros ="sfid="+sid+"&dato="+sAux+"&campo="+campo+"&esVarchar="+esVarchar;
		
		//alert (parametros);
		
		// Guardar los datos
		ajax=nuevoAjax();
		
		sURL="update_obra.asp";
		ajax.open("POST", sURL, true);
		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
      		ajax.setRequestHeader("Content-length", parametros.length);
      		ajax.setRequestHeader("Connection", "close");
      		
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1){
				document.getElementById("fila_"+elemento).innerHTML="<img src='../admin/images/misc/loader.gif' align='absmiddle'>&nbsp;<b>Cargando...</b>";
			}
			if (ajax.readyState==4){ 
				var strResult=ajax.responseText;
				if (strResult!=''){
					//Recupero lo anterior
					document.getElementById("fila_"+elemento).innerHTML=anterior;
					var mensaje = 'Se ha producido el siguiente error al intentar grabar el campo \"' + campo + '\" del libro \"' + sid + '\"\n\n'
					mensaje = mensaje + '\"'+strResult+'\"';
					mensaje = mensaje + '\n\nContacte con el administrador'
					alert(mensaje);
				}
				else{
					document.getElementById("fila_"+elemento).innerHTML=valor;
					document.getElementById("fila_"+elemento).className=clase;
				}
			}
		}
		ajax.send(parametros);
	}
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cargaDatosFecha(elemento,sid,campo,anterior,clase,esVarchar){
	var bOk=true;
	var valor=document.getElementById("input_"+elemento).value;
	
	if(QuitaBlancos(valor)!=""){
		//Antes de guardar la fecha, confirmar que es una fecha válida.
		if(!isDate(document.getElementById("input_fecha").value)){
			alert('La fecha introducida no es válida.');
			document.getElementById("fila_"+elemento).innerHTML=anterior;
			document.getElementById("fila_"+elemento).className=clase;
			bOk=false;
		}
	}
	if(bOk){
		var sURL='';
		// Guardar los datos
		ajax=nuevoAjax();
		sURL="update_obra.asp?sfid="+sid+"&dato="+valor+"&campo="+campo+"&esVarchar="+esVarchar;
		ajax.open("GET", sURL, true);	
		ajax.onreadystatechange=function(){ 
			if (ajax.readyState==1){
				document.getElementById("fila_"+elemento).innerHTML="<img src='../admin/images/misc/loader.gif' align='absmiddle'>&nbsp;<b>Cargando...</b>";
			}
			if (ajax.readyState==4){ 
				var strResult=ajax.responseText;
				if (strResult!=''){
					//Recupero lo anterior
					document.getElementById("fila_"+elemento).innerHTML=anterior;
					var mensaje = 'Se ha producido el siguiente error al intentar grabar el campo \"' + campo + '\" del libro \"' + sid + '\"\n\n'
					mensaje = mensaje + '\"'+strResult+'\"';
					mensaje = mensaje + '\n\nContacte con el administrador'
					alert(mensaje);
				}
				else{
					document.getElementById("fila_"+elemento).innerHTML=valor;
					document.getElementById("fila_"+elemento).className=clase;
				}
			}
		}
		ajax.send(null);
	}
	
}

function CompruebaDestacadas(id_obra, elemento, campo, texto, formulario){
	
	var sURL='';
	var id_artista='';
	// Guardar los datos
	
	for(i=0; i<document.formulario.input_Destacado.length;i++){
		if(document.formulario.input_Destacado[i].selected==true)
			sTexto=document.formulario.input_Destacado[i].text;
	}
				
	ajax=nuevoAjax();
	sURL="destacadas.asp?idObra="+id_obra+"&MaxResults=2"
	ajax.open("GET", sURL, true);	
	ajax.onreadystatechange=function(){
		//alert(ajax.readyState);  
		if (ajax.readyState==1){
		//	document.getElementById("fila_"+elemento).innerHTML="<img src='../admin/images/misc/loader.gif' align='absmiddle'>&nbsp;<b>Cargando...</b>";
		}
		if (ajax.readyState==4){ 
			var strResult=ajax.responseText;
			//alert("strResult:  " + strResult);
			if (strResult!='' && sTexto.toUpperCase()=="SI"){
				for(i=0; i<document.formulario.input_Destacado.length;i++){
					if(document.formulario.input_Destacado[i].value=="0") document.formulario.input_Destacado[i].selected=true;
					else document.formulario.input_Destacado[i].selected=false;
				}
				
				//Informar y pedir confirmación para cambiar a No Destacada alguna de las obras que ya aparecen como destacadas del artista
				var mensaje = 'Actualmente existen ' + strResult + ' obras destacadas para este artista.\n\nSi desea destacar la obra actual debe eliminar una de la lista de Obras Destacadas.'
					
				if(confirm(mensaje)){
					
                      			var iWidth=650;
                      			var iHeight=360;
                      			var iLeft = (screen.width-iWidth)/2;
					var iTop = (screen.height-iHeight)/2;
					var sDimensiones='width='+iWidth+',height='+iHeight+',top='+iTop+',left='+iLeft;
					
					//alert(id_obra);
					
					window.open('EliminaDestacada.asp?Tipo=artista&idObra='+id_obra, 'Destacados', sDimensiones);
				}
			}
			else{
				cargaDatosSelect(elemento,id_obra,campo,texto,formulario);
			}
		}
	}
	ajax.send(null);
}

function ObtenerArtista(id_obra){
	
	var sURL='';
	// Guardar los datos
				
	ajax=nuevoAjax();
	sURL="obtenerArtista.asp?idObra="+id_obra
	ajax.open("GET", sURL, true);	
	ajax.onreadystatechange=function(){
		if (ajax.readyState==4){ 
			var strResult=ajax.responseText;
			alert("idArtista: "+strResult)			
			return(strResult);
		}
	}
	ajax.send(null);
}

function votar(idPerfil,ac) {
  ajax=nuevoAjax();
  ajax.onreadystatechange=function() {
	if (ajax.readyState==4) {
	  // Si el AJAX nos devuelve correcto, actualizamos
	  alert('Gracias por votar.');
	  if(ac=='1') {
	    document.getElementById("votacion").innerHTML = '';
	  } else {
		location.reload();
	  }
	}
  }
  ajax.open('POST','votar.php',true);
  // Muy importante este encabezado ya que hacemos uso de un formulario
  ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  ajax.send("vmpid="+idPerfil);
}
