// comprueba si un campo está vacío
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")){return false;}
	}
	return true;
}

function ValidaCampo(campo, caract_extra) {  

	var ubicacion;
	var caracteres = "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ_" + caract_extra;
	
	var contador = 0
	for (var i=0; i < campo.length; i++) {  
		ubicacion = campo.substring(i, i + 1)  
		if (caracteres.indexOf(ubicacion) != -1) {  
			contador++;
		} else {  
			alert("ERROR: No se acepta el caracter '" + ubicacion + "'.");
			return true;
		}  
	}  
	
}  

// comprueba si un e-mail está es válido
function validar_email(valor, aviso) {
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(valor)){
		return (true)
	} else {
		alert(aviso);
		return (false);
	 }
}

// función para chequear valores del botón de radio
function getRadioButtonSelectedValue(ctrl)
{
	for(i=0;i<ctrl.length;i++)
		if(ctrl[i].checked) return ctrl[i].value;
}

// oculta un div
function ocultaDiv(val){
	document.getElementById(val).style.visibility = 'hidden';
	document.getElementById(val).style.display = 'none';
}

// muestra un div
function muestraDiv(val){
	document.getElementById(val).style.visibility = 'visible';
	document.getElementById(val).style.display = 'block';
}

// CAMBIA IDIOMA
// cambia el valor de la variable del idioma en el administrador
// parametros:
//// valor: la nueva iso
//// query: el query de página
//// ADM_MASTER: ruta del master de los sitios
function cambia_idioma(valor, query) {
    self.location = ADM_MASTER + "inc/cambia_idioma.php?lang=" + valor + "&" + query + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO;
}

// COMPROBAR REPETIDO
// devuelve true si el valor ya existe en la tabla sino false
// tabla donde va a buscar el campo (* depende del tipo)
// campo donde se buscara el valor
// idelemento: id del elemento que tiene el valor a comprobar si esta repetido
// ruta: define desde donde se ejecuta la función - adm o sitio público
// tipo: utilizada para definir el tipo de búsqueda: 1: campo - 2 tabla - campo y tabla (debe especificar en el parametro tabla las dos tablas donde se buscara separadas por coma)
function verificar_repetido(tabla, campo, idelemento, ruta, tipo, query) {
	
	// defino la ruta a utilizar
	if(ruta == ADM_MASTER) {
		ruta_final = ADM_MASTER;
	} else {
		ruta_final = SITIO_MASTER + "adm/";
	}
	
	// defino el tipo de búsqueda
	if(tipo == undefined) {	tipo = 1; }

	if(query == undefined) {
		query = "";
	}

	if(tabla.indexOf(",")!=-1) {
		tablas = tabla.split(",");
		tabla = tablas[0].replace(/^\s+|\s+$/g,"");
		tabla_campos = tablas[1].replace(/^\s+|\s+$/g,"");
	} else {		
		tabla_campos = "";
	}

	var valor = document.getElementById(idelemento).value;
	var cadena = ruta_final + "inc/verificar_repetido.php?tabla=" + tabla + "&campo=" + campo + "&valor=" + valor + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO + "&tipo=" + tipo + "&query=" + query + "&tabla_campos=" + tabla_campos;
	var ajax = nuevoAjax();			
		
	ajax.open("GET", cadena, false);						
	ajax.send(null);	
	
	//alert(ajax.responseText);
	
	if(ajax.responseText==1) {
		return true;
	} else {
		return false;
	}

}		

// CAMBIA LA IMAGEN DEL PREVIO
// actualiza la imagen del previo en el upload
// parámetros:
//// campo: el nombre del campo para identificarlo
//// valor: el valor de la imagen a previsualizar
//// ADM_MASTER: ruta del master de los sitios
function cambia_imagen(campo, valor) {
	
	// la transformo a variable del tipo string
	valor = valor.toString();	
	
	// actualizo la ruta de la imagen a previsualizar
	if(valor.lastIndexOf("/")!=-1) {
		idimagen = valor.substring(valor.lastIndexOf("/") + 1) ;	
	} else {
		idimagen = valor;	
	}
	
	// GENERO EL PREVIO si existe el archivo
	if(idimagen!="") {
		
		var elemento = document.getElementById(idimagen);
		
		tipo = elemento.getAttribute("tipo"); //tipo 4 = es SWF
		alto = elemento.getAttribute("alto");
		ancho = elemento.getAttribute("ancho");
		
		// determino si es flash o jpg, gif, png
		if(tipo==4 || tipo ==13) { //flash
			
			createFlash('as', valor, ancho , alto , '', '', 'preview_' + campo);
		
		} else { // otro que no sea flash

			document.getElementById("preview_" + campo).innerHTML = "<img src='" + valor + "' width='" + ancho + "'  heigth='" +  alto + "'>";

		}

	// si la nueva imagen es vacío, no imprimo el previo
	} else {

		document.getElementById("preview_" + campo).innerHTML = "";	
	
	}
	
}

// BORRAR ARCHIVO
// borra del disco el archivo seleccionado en el menú despegable
// parámetros:
//// campo: nombre del select
//// path: ruta del archivo
//// ADM_MASTER: ruta del master de los sitios
function borrarArchivo(campo, path){
	
	// romo el valor del campo
	var archivo=document.getElementById(campo).options[document.getElementById(campo).selectedIndex].value;
	
	// proceso dependiendo de si está vacío o tiene valor
	if(archivo=="")	{
		
		// si está vacío no hago nada y aviso
		alert("Seleccione una imagen");
		document.getElementById(campo).focus();
		return false;
	
	} else {

		// si no lo está le doy opción a confirmar o cancelar
		elimino = confirm("¿Desea eliminar el registro: " + archivo + "?");
	
		// si aceptó, proceso
		if (elimino) {
			
			// proceso por ajax el borrado
			var cadena = ADM_MASTER + "inc/borrar_archivo.php?path=" + path + "&archivo=" + archivo + "&campo=" + campo + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO;
			
			// limpio el previo
			document.getElementById("preview_" + campo).innerHTML = "";
			
			// proceso ajax
			ajax=nuevoAjax();
			ajax.open("GET", cadena, true);
			ajax.onreadystatechange=function() { 

				if (ajax.readyState==1) {
					
					// Mientras carga elimino las opciones y pongo una que dice "Cargando"
					combo = document.getElementById(campo);
					combo.length=0;
					var nuevaOpcion = document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML = "Cargando...";
					combo.appendChild(nuevaOpcion); combo.disabled=true;	
				
				}
				
				if (ajax.readyState==4) { 
					
					document.getElementById(campo + "_select").innerHTML = ajax.responseText;
				
				} 
			} // termino la función de ajax
			
			ajax.send(null);
			
		} // fin del proceso si aceptó
		
	} // fin de contar con datos

}

// SELECTS DEPENDIENTES
// cambia los valores del segundo select dependiendo del valor del primero
// parámetros:
//// nombre_select: nombre del select original
//// tabla1: nombre de la tabla nº 1
//// tabla2: nombre de la tabla nº 2
//// nombre_campo: nombre del campo
//// conector: nombre del campo para conectar las 2 tablas
//// id_pagina: si es necesario enviar el valor de la página
//// nuevo_nombre_select: nombre del segundo select
//// orden: string del campo para ordenar los registros
//// elegido: valor del item elegido en el segundo select
//// dato_inicial: valor del dato elegido del primer select
//// ADM_MASTER: ruta del master de los sitios
function select_dependiente(nombre_select, tabla1, tabla2, nombre_campo, conector, id_pagina, nombre_nuevo_select, orden, elegido, dato_inicial) {
	
	// tomo el valor seleccionado del select nº 1
	var valor=document.getElementById(nombre_select).options[document.getElementById(nombre_select).selectedIndex].value;
	// guardo en una cadena el nombre del archivo php de proceso
	var cadena = ADM_MASTER + "inc/select_dependiente.php?id="+valor+"&campo="+nombre_select+"&tabla1="+tabla1+"&tabla2="+tabla2;
	cadena = cadena + "&nombre_campo="+nombre_campo+"&conector="+conector+"&id_pagina="+id_pagina;
	cadena = cadena + "&nombre_nuevo_select="+nombre_nuevo_select+"&orden="+orden+"&elegido="+elegido+"&dato_inicial="+dato_inicial + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO;
		
	// proceso ajax
	ajax=nuevoAjax();
	ajax.open("GET", cadena, true);
	ajax.onreadystatechange=function() {
		
		if (ajax.readyState==1) {
			
			// Mientras carga elimino las opciones y pongo una que dice "Cargando"
			combo=document.getElementById(nombre_nuevo_select);
			combo.length=0;
			var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
			combo.appendChild(nuevaOpcion); combo.disabled=true;
			
		}
		
		if (ajax.readyState==4) { 
			
			document.getElementById(nombre_nuevo_select+"_select").innerHTML=ajax.responseText;
			
		}
		
	} // termino la función de ajax
	
	ajax.send(null);
	
}

// FUNCION AJAX
function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	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 imprime(funcion, tipo, op, id, ancho, alto){
	
	URL = ruta_script + "inc/impresion.php?f="+funcion+"&id="+id+"&op="+op+"&NOMBRE_PROYECTO="+NOMBRE_PROYECTO+"&tipo="+tipo;
	imprimir = window.open(URL, "_blank", "toolbar=no ,location=no, status=no, menubar=no, resizable=no, scrollbars=yes, width="+ancho+", height="+alto+"");
	imprimir.moveTo((screen.availWidth/2)-(ancho/2),(screen.availHeight/2)-(alto/2));
}

function popup(url, ancho, alto, scrollbar) {

	if(scrollbar=="undefined") { scrollbar = "no"; };
	
	ventana = window.open(url, "_blank", "toolbar=no ,location=no, status=yes, menubar=no, resizable=no, scrollbars=" + scrollbar + ", width="+ancho+", height="+alto+"");
	ventana.moveTo((screen.availWidth/2)-(ancho/2),(screen.availHeight/2)-(alto/2));

}

function navegador_multimedia(formato, idimagen, tipo, idrelacional, ancho, alto, navegable) {

	if(navegable) {
		alto = alto + 82;
	}
		
	ventana = window.open(ruta_script + "inc/navegador_multimedia.php?formato=" + formato + "&id=" + idimagen + "&tipo=" + tipo + "&idrelacional=" + idrelacional + "&navegable=" + navegable + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO, "_blank", "toolbar=no ,location=no, status=yes, menubar=no, resizable=no, scrollbars=no, width=" + ancho + ", height=" + alto + "");
	ventana.moveTo((screen.availWidth / 2) - (ancho / 2),(screen.availHeight/2)-(alto/2));

}

// para poder editar en el fckeditor
function foco_fckeditor(instancia){
	var oEditor = FCKeditorAPI.GetInstance(instancia) ;
	try 
	{
		oEditor.MakeEditable();
	}
	catch (e) {}
	oEditor.Focus();
}
