/***** ROLLOVER SENCILLO QE TE CAGAS *****/
//en la imagen --> onmouseover="this.src=Imagenes[0].src;" onmouseout="this.src=Imagenes[1].src;"
//en onLoad de <body> -->onLoad="Precargar('rutarelativa/imagen-ON', 'rutarelativa/imagen-OFF')"


Imagenes = new Array();
function Precargar() {
	
  for (var i=0; i<Precargar.arguments.length; i++) {    
    Imagenes[i]=new Image; 
    Imagenes[i].src=Precargar.arguments[i];
  }
}


/*******************************************************************************************************/


/***** VALIDADOR DE CONTENIDO DE FORMULARIOS *****/
//en <form>, añadir el siguiente comportamiento:  
//	onSubmit="return formCheck(this, 'mensaje', '\'campo-1\', \'campo-n\'', '\'Nombre-1\', \'Nombre-N\'' );">
//en el JS, 
function formCheck(formobj, mensaje, campos, nombresdecampo){
	// name of mandatory fields
	var fieldRequired = eval("Array("+campos+")");
	// field description to appear in the dialog box
	var fieldDescription = eval("Array("+nombresdecampo+")");
	// dialog message
	var alertMsg = mensaje+"\n";
	
	
	var l_Msg = alertMsg.length;
	
	for (var i = 0; i < fieldRequired.length; i++){
		var obj = formobj.elements[fieldRequired[i]];
		if (obj){
			if (obj.type == null){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				continue;
			}

			switch(obj.type){
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDescription[i] + "\n";
				}
				break;
			default:
			}
		}
	}

	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}


/**** Validación de Formularios Genérica ****/
// Generic Form Validation
// Jacob Hage (jacob@hage.dk)
/*
	Uso de la función con Smarty
	
	La clave está en la llamada a la función 'define' ya que con ella decimos qué campos son
	obligatorios.
	
	Sin embargo, con Smarty, la función define no aparece al principio de la página, sino
	bastante después de la carga de la página, con lo que no funciona por sí sola. Para solucionar este inconveniente
	se debe usar la función iniciarValidación, definida en cada página que contenga
	formularios que validar.
	
	La función iniciarValidación, al llamarse, inicia las distintas definiciones usando la
	función define. Debe llamarse en el evento onLoad del BODY de la página que contiene
	el formulario que se desea validar.
	
	Para distinguir cuándo se debe colocar la función en el evento onLoad, conviene utilizar
	una asignación desde Smarty (p.ej.: $smarty -> assign("es_validacion", 1); )
	
	De esta forma, si estamos en una validación, llamamos a la función iniciarValidacion, ésta
	carga los define necesarios y finalment, al lanzar el formulario, ya se puede llamar a la
	función validate (propia de este programa) para validar todo el formulario.
	
	RESUMEN:
		iniciarValidacion (que contiene los define's)
		asignar en Smarty para distinguir la validación
		incluir en el submit del formulario (o en cualquier función que deba lanzarlo) la función validate
*/
var checkObjects	= new Array();
var errors		= "";
var returnVal		= false;
var language		= new Array();
language["header"]	= "Los siguientes datos son obligatorios:"
language["start"]	= "->";
language["field"]	= " Campo ";
language["require"]	= " requerido";
language["min"]		= " y debe contener al menos ";
language["max"]		= " y no debe contener más de ";
language["minmax"]	= " y no más de ";
language["chars"]	= " caracteres";
language["num"]		= " y debe contener un número";
language["email"]	= " debe contener un correo válido";
// -----------------------------------------------------------------------------
// define - Call this function in the beginning of the page. I.e. onLoad.
// n = name of the input field (Required)
// type= string, num, email (Required)
// min = the value must have at least [min] characters (Optional)
// max = the value must have maximum [max] characters (Optional)
// d = (Optional)
// -----------------------------------------------------------------------------
function define(n, type, HTMLname, min, max, d) {
var p;
var i;
var x;
if (!d) d = document;
if ((p=n.indexOf("?"))>0&&parent.frames.length) {
d = parent.frames[n.substring(p+1)].document;
n = n.substring(0,p);
}
if (!(x = d[n]) && d.all) x = d.all[n];
for (i = 0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}
for (i = 0; !x && d.layers && i < d.layers.length; i++) {
x = define(n, type, HTMLname, min, max, d.layers[i].document);
return x;       
}
eval("V_"+n+" = new formResult(x, type, HTMLname, min, max);");
checkObjects[eval(checkObjects.length)] = eval("V_"+n);
}
function formResult(form, type, HTMLname, min, max) {
this.form = form;
this.type = type;
this.HTMLname = HTMLname;
this.min  = min;
this.max  = max;
}
function validate() {
if (checkObjects.length > 0) {
errorObject = "";
for (i = 0; i < checkObjects.length; i++) {
validateObject = new Object();
validateObject.form = checkObjects[i].form;
validateObject.HTMLname = checkObjects[i].HTMLname;
validateObject.val = checkObjects[i].form.value;
validateObject.len = checkObjects[i].form.value.length;
validateObject.min = checkObjects[i].min;
validateObject.max = checkObjects[i].max;
validateObject.type = checkObjects[i].type;
if (validateObject.type == "num" || validateObject.type == "string") {
if ((validateObject.type == "num" && validateObject.len <= 0) || (validateObject.type == "num" && isNaN(validateObject.val))) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['num'] + "\n";
} else if (validateObject.min && validateObject.max && (validateObject.len < validateObject.min || validateObject.len > validateObject.max)) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['min'] + validateObject.min + language['minmax'] + validateObject.max+language['chars'] + "\n";
} else if (validateObject.min && !validateObject.max && (validateObject.len < validateObject.min)) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['min'] + validateObject.min + language['chars'] + "\n";
} else if (validateObject.max && !validateObject.min &&(validateObject.len > validateObject.max)) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + language['max'] + validateObject.max + language['chars'] + "\n";
} else if (!validateObject.min && !validateObject.max && validateObject.len <= 0) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['require'] + "\n";
   }
} else if(validateObject.type == "email") {
// Checking existense of "@" and ".". 
// Length of must >= 5 and the "." must 
// not directly precede or follow the "@"
if ((validateObject.val.indexOf("@") == -1) || (validateObject.val.charAt(0) == ".") || (validateObject.val.charAt(0) == "@") || (validateObject.len < 6) || (validateObject.val.indexOf(".") == -1) || (validateObject.val.charAt(validateObject.val.indexOf("@")+1) == ".") || (validateObject.val.charAt(validateObject.val.indexOf("@")-1) == ".")) { errors += language['start'] + language['field'] + validateObject.HTMLname + language['email'] + "\n"; }
      }
   }
}
if (errors) {
alert(language["header"].concat("\n" + errors));
errors = "";
returnVal = false;
} else {
returnVal = true;
   }
}

// popups de imágenes de la galería
function popup(ruta_base, ancho, id_imagen)
{
	var features = "width=" + ancho + ", height=600";
	
	nueva = window.open(ruta_base + "admin/galeria/ver_imagen.php?id=" + id_imagen, "imagen", features);
	nueva.focus();
}

// funciones para mostrar/ocultar capas
function mostrar_capa(capa)
{
	document.getElementById(capa).style.visibility = "visible";
	document.getElementById(capa).style.position = "relative";
}
function ocultar_capa(capa)
{
	document.getElementById(capa).style.visibility = "hidden";
	document.getElementById(capa).style.position = "absolute";
}
