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

// activa un div de las pantallas de edición
function activa_div(id) {
	
	// recorro los divs
	for(i in divs) {
		boton = divs[i]+'_btn';
		if(id==divs[i]) {
			muestraDiv(divs[i]);
			document.getElementById(boton).className = "activo";
		} else {
			ocultaDiv(divs[i]);
			document.getElementById(boton).className = "";
		}
	}
}


// script para el menú jerárquico
function cambio(nivel, orden){
	var nodo = 'nodo_'+nivel+orden;
	if(document.getElementById(nodo).style.visibility == 'visible') {
		ocultaDiv(nodo);
	} else {
		muestraDiv(nodo);
	}
}

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

}		

// COMPROBAR ARCHIVO EN USO
// devuelve true si el archivo está en uso por otro registro
// tabla: donde va a buscar el campo (* depende del tipo)
// campo: donde se buscara el valor
// valor: nombre del archivo
// id: si es uno modificado tomo su id
function verificar_archivo_en_uso(tabla, campo, valor, id, elegido) {
	
	var cadena = ADM_MASTER + "inc/verificar_archivo_en_uso.php?tabla=" + tabla + "&campo=" + campo + "&valor=" + valor + "&id=" + id + "&elegido=" + elegido + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO;
	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
//// tabla: tabla donde ubicar el archivo en cuestión
//// id: si se edita o es uno nuevo
function borrarArchivo(campo, path, tabla, id, elegido){
	
	// 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 {

		// verifico que no esté en uso
		if(verificar_archivo_en_uso(tabla, campo, archivo, id, elegido)) {
			
			alert("este archivo lo utiliza otro registro!");
			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 + "&tabla=" + tabla + "&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 verificación en uso
			
	} // 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
//// tablas: nombre de la o las tablas si se trata de tablas con traducciones (sintaxis: tabla1, tabla2, conector)
//// nombre_campo: nombre del campo
//// query: cadena a agregar al query sql
//// 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
//// arbol: si el select es jerárquico
//// on_change: si se envía alguna cadena de onchange para el nuevo select
function select_dependiente(nombre_select, tablas, nombre_campo, query, nombre_nuevo_select, orden, elegido, dato_inicial, arbol, on_change) {
	
	arbol = arbol==undefined || arbol==0 ? 0 : 1;
	//alert(on_change);
	// preparo las tablas
	if(tablas.indexOf(",")!=-1) {
		tablas = tablas.split(",");
		tabla1 = tablas[0];
		tabla2 = tablas[1];
		conector = tablas[2];
	} else {		
		tabla1 = tablas;
		tabla2 = "";
		conector = "";
	}
	
	// hack para el los rubros de la guía y para tomar el valor del rubro
	if(query == " AND id_rubro =" && document.getElementById("id_rubro").options[document.getElementById("id_rubro").selectedIndex].value==-1) {
			alert("debe seleccionar antes un rubro!");
			document.getElementById("id_rubro").focus();
			document.getElementById("id_modulo").selectedIndex = 0;
			return false;
	}
	query = query == " AND id_rubro =" ?  escape(" AND id_rubro = " + document.getElementById("id_rubro").options[document.getElementById("id_rubro").selectedIndex].value) : escape(query);
	
	// 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 + "&conector="+conector+"&nombre_campo="+nombre_campo+"&query="+query+"&nombre_nuevo_select="+nombre_nuevo_select;
	cadena = cadena + "&orden="+orden+"&elegido="+elegido+"&dato_inicial="+dato_inicial+"&arbol="+arbol + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO;
	cadena = on_change!=undefined ? cadena + "&on_change="+on_change : cadena;

	// 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, indice, navegable, ruta_galeria) {

	// fijo el ancho y el alto de la ventana
	ancho = screen.availWidth*eval("popup_" + formato + "_ancho");
	alto = screen.availHeight*eval("popup_" + formato + "_alto");
	ventana = window.open(ruta_script + "inc/navegador_multimedia.php?formato=" + formato + "&id=" + idimagen + "&tipo=" + tipo + "&idrelacional=" + idrelacional + "&indice=" + indice + "&navegable=" + navegable + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO + "&ancho_ventana=" + ancho + "&alto_ventana=" + alto + "&ruta_galeria=" + ruta_galeria, "_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));

}

function navegador_video(formato, idimagen, tipo, idrelacional, ancho, alto) {

	// fijo el ancho y el alto de la ventana
	ventana = window.open(ruta_script + "inc/navegador_multimedia.php?formato=" + formato + "&id=" + idimagen + "&tipo=" + tipo + "&idrelacional=" + idrelacional + "&NOMBRE_PROYECTO=" + NOMBRE_PROYECTO + "&ancho_ventana=" + ancho + "&alto_ventana=" + alto, "_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();
}

