// JavaScript Document

var ie_6=( navigator.appVersion.toLowerCase().indexOf('msie 6')!=-1 );	
var ie_7=( navigator.appVersion.toLowerCase().indexOf('msie 7')!=-1 );
var mozilla=( navigator.appVersion.toLowerCase().indexOf('msie')==-1 );
var ie=!mozilla;

// FUNCIONES DE VENTANA 

var id_ventana_foto;

function ventana(direccion,nombre_ventana,resolucion_ventana,modo){
	if ( direccion!='' ){
		var ancho;
		var alto;
		var resol
		var nombre = ( nombre_ventana!='' )?nombre_ventana:'foto';
		var resolucion = ( resolucion_ventana!='' )?resolucion_ventana.toLowerCase():'min';

		switch (resolucion){
			case 'alta':
				ancho=1024;alto=768;
			break
			case 'media':
				ancho=800;alto=600;
			break
			case 'baja':
				ancho=640;alto=480;
			break
			case 'min':
				ancho=400;alto=300;
			break	
					
		}
		if ( resolucion.indexOf('x')!=-1 ){
			ancho=Number(resolucion.split('x')[0]);
			alto=Number(resolucion.split('x')[1]);
		}
		if ( id_ventana_foto ){
			id_ventana_foto.close();
		}
		if ( modo!=null ){
			id_ventana_foto = window.open(direccion,nombre,'top=0,left=0,width='+ancho+',height='+alto+',location=no,toolbar=no,scrollbars=no,resizable=no,status=no,menubar=no');
		}
		else{
			id_ventana_foto = window.open(direccion,nombre,'top=0,left=0,width='+ancho+',height='+alto+',location=no,toolbar=no,scrollbars=yes,resizable=yes,status=no,menubar=no');
		}
		
		return id_ventana_foto;
		
	} else{
		return false;
	}
}

// VALIDACIÓN DE FORMULARIOS

function valida_radio(formulario,nombre_radio,alerta_js){
	var error_radio = true;
	if ( formulario ){
		if ( formulario.elements[nombre_radio] ){
			var campo = formulario.elements[nombre_radio];
			var nombre_campo;
			var mensaje_error;						
			if ( campo.length ){
				nombre_campo = ( campo[0].title )?campo[0].title:campo[0].name;
				for ( i=0;i<campo.length;i++ ){
					if ( campo[i].checked ){ error_radio=false; };
				}
			}
			else{
				nombre_campo = ( campo.title )?campo.title:campo.name; 
				error_radio = ( campo.type.toLowerCase()=='radio' && !campo.checked );
			}
			mensaje_error = '- El campo '+nombre_campo+' es obligatorio';
			if ( error_radio && alerta_js ){
				alert( mensaje_error+' \n\n' );
			}
		}
	}
	return !error_radio;
}

function valida_numeros(formulario,ar_campos){
	var ar_erroneos = new Array();
	if ( formulario && ar_campos ){
		if ( ar_campos.length >0 ){
			var error_numero=false;
			var campo;
			var nombre_campo;
			for (indice in ar_campos){
				if ( formulario.elements[ ar_campos[indice] ] ){
					campo = formulario.elements[ ar_campos[indice] ];
					nombre_campo = ( campo.title )?campo.title:campo.name;
					if ( campo.value!='' && isNaN(campo.value) ){
						ar_erroneos.push(nombre_campo);
						error_numero = true;
					}
				}
			}
		}		
	}
	return ar_erroneos;
}

function valida_imagenes(formulario,ar_campos){
	var ar_erroneos = new Array();
	if ( formulario && ar_campos ){
		if ( ar_campos.length >0 ){
			var ar_imagenes = new Array('jpeg','jpg','png','gif','bmp');
			var error_imagen;
			var error_temp;
			var campo;
			var nombre_campo;
			var extension;
			for (indice in ar_campos){
				if ( formulario.elements[ ar_campos[indice] ] ){
					campo = formulario.elements[ ar_campos[indice] ];
					nombre_campo = ( campo.title )?campo.title:campo.name;
					if ( campo.value!='' ){
						error_temp = true;
						extension = campo.value.split('.')[ campo.value.split('.').length-1 ];
						for ( j in ar_imagenes ){
							if ( extension.toLowerCase() == ar_imagenes[j] ){
								error_temp = false;
							}
						}
					}
					else{
						error_temp = false;
					}
					if ( error_temp ){
						ar_erroneos.push(nombre_campo);
						error_imagen = true;
					}
				}
			}
		}
	}
	return ar_erroneos;
}

function valida_ficheros(formulario,ar_campos){
	var ar_erroneos = new Array();
	if ( formulario && ar_campos ){
		if ( ar_campos.length >0 ){
			var ar_ficheros = new Array('php','jsp','asp','aspx','asa','asax','js','exe');
			var error_fichero;
			var campo;
			var nombre_campo;
			var extension;
			for (indice in ar_campos){
				if ( formulario.elements[ ar_campos[indice] ] ){
					campo = formulario.elements[ ar_campos[indice] ];
					nombre_campo = ( campo.title )?campo.title:campo.name;
					if ( campo.value!='' ){
						extension = campo.value.split('.')[ campo.value.split('.').length-1 ];
						for ( j in ar_ficheros ){
							if ( extension.toLowerCase() == ar_ficheros[j] ){
								ar_erroneos.push(nombre_campo);
								error_fichero = true;
							}
						}
					}
				}
			}
		}
	}
	return ar_erroneos;
}

function valida_fechas(formulario,ar_campos){
	var ar_erroneos = new Array();
	if ( formulario && ar_campos.length>0 ){
		var separador='-'; 
		var error_fecha=false;
		var patron=/\b\d{2}-\d{2}-\d{4}\b/;
		var fecha;
		var cadena;
		var mes;
		var dia;
		var ano;
		for ( indice in ar_campos ){
			campo = formulario.elements[ ar_campos[indice] ];
			nombre_campo = ( campo.title )?campo.title:campo.name;			
			if ( !patron.test( campo.value ) ){
				ar_erroneos.push(nombre_campo);
				error_fecha=true;
			}
			else{
				fecha = fecha_nueva(campo.value,separador);
				dia=fecha.getDate();
				if (dia<10){ dia='0'+dia; }		
				mes=fecha.getMonth()+1;
				if (mes<10){ mes='0'+mes; }
				ano=fecha.getFullYear();		
				cadena=dia+separador+mes+separador+ano;
				if ( campo.value!=cadena ){
					ar_erroneos.push(nombre_campo);
					error_fecha=true;
				}
			}
		}
	}
	return ar_erroneos;
}

function fecha_nueva(fecha_cadena,separador){
	if ( fecha_cadena!='' ){
		var separa=( separador==null )?'-':separador;
		var dia=fecha_cadena.split(separa)[0];
		var mes=fecha_cadena.split(separa)[1];
		var ano=fecha_cadena.split(separa)[2];
		var fecha=new Date(ano,mes-1,dia);
				
		return fecha;
	}
	else{
		return null;
	}
}

function fecha_numerica(fecha_cadena,separador){
	if ( fecha_cadena!='' ){
		var separa=( separador==null )?'-':separador;
		var dia=fecha_cadena.split(separa)[0];
		var mes=fecha_cadena.split(separa)[1];
		var ano=fecha_cadena.split(separa)[2];
		var fecha_numerica=Number(ano+mes+dia);
				
		return fecha_numerica;
	} else {
		return null;
	}
}

function valida_obligatorios(formulario,ar_campos){
	var ar_erroneos = new Array();
	if ( formulario && ar_campos ){
		if ( ar_campos.length >0 ){
			var error_obligatorios=false;
			var campo;
			var nombre_campo;
			var patron = /\s/g;
			for (indice in ar_campos){
				if ( formulario.elements[ ar_campos[indice] ] ){
					campo = formulario.elements[ ar_campos[indice] ];
					nombre_campo = ( campo.title )?campo.title:campo.name;
					if ( campo.value.replace(patron,'')=='' ){
						ar_erroneos.push(nombre_campo);
						error_obligatorios = true;
					}
				}
			}
		}
	}
	
	return ar_erroneos;
}


	
function valida(formulario,ar_obligatorios,ar_numeros,ar_fechas,ar_imagenes,ar_ficheros){
	var error_validacion = false;
	if ( formulario ){
		var ar_erroneos = new Array();
		var mensaje_error = '';
		var mensaje_error_obligatorios = '';
		var mensaje_error_numeros = '';
		var mensaje_error_fechas = '';
		var mensaje_error_imagenes = '';
		var mensaje_error_ficheros = '';
		var campo;
		var nombre_campo;
		
		// Validación de obligatorios
		if ( ar_obligatorios!=null && ar_obligatorios.length ){
			ar_erroneos = valida_obligatorios(formulario,ar_obligatorios);
			if ( ar_erroneos.length>0 ){
				for (indice in ar_erroneos){
					mensaje_error_obligatorios += '- El campo '+ar_erroneos[indice]+' es obligatorio    \n';	
				}
				mensaje_error += mensaje_error_obligatorios;
				error_validacion = true;
			}
		}
		// Validación de numéricos
		if ( ar_numeros!=null && ar_numeros.length ){
			ar_erroneos = valida_numeros(formulario,ar_numeros);
			if ( ar_erroneos.length>0 ){
				for (indice in ar_erroneos){
					mensaje_error_numeros += '- El campo '+ar_erroneos[indice]+' no es válido    \n';	
				}
				mensaje_error += mensaje_error_numeros;
				error_validacion = true;
			}
		}
		// Validación de fechas
		if ( ar_fechas!=null && ar_fechas.length ){
			ar_erroneos = valida_fechas(formulario,ar_fechas);
			if ( ar_erroneos.length>0 ){
				for (indice in ar_erroneos){
					mensaje_error_fechas += '- El campo '+ar_erroneos[indice]+' no es una fecha válida    \n';	
				}
				mensaje_error += mensaje_error_fechas;
				error_validacion = true;
			}
		}
		// Validación de imágenes
		if ( ar_imagenes!=null && ar_imagenes.length ){
			ar_erroneos = valida_imagenes(formulario,ar_imagenes);
			if ( ar_erroneos.length>0 ){
				for (indice in ar_erroneos){
					mensaje_error_imagenes += '- El campo '+ar_erroneos[indice]+' no es una imagen válida    \n';	
				}
				mensaje_error += mensaje_error_imagenes;
				error_validacion = true;
			}
		}
		// Validación de ficheros
		if ( ar_ficheros!=null && ar_ficheros.length ){
			ar_erroneos = valida_ficheros(formulario,ar_ficheros);
			if ( ar_erroneos.length>0 ){
				for (indice in ar_erroneos){
					mensaje_error_ficheros += '- El campo '+ar_erroneos[indice]+' no es un ficheiro permitido    \n';	
				}
				mensaje_error += mensaje_error_ficheros;
				error_validacion = true;
			}
		}
		
		
		
		// Validación final	
		if ( error_validacion ){
			mensaje_error = 'Se detectaron los siguientes errores:   \n\n'+mensaje_error+'\n ';
			alert( mensaje_error );
		}
	}
	return !error_validacion;
}


function invalida_campos(formulario){
	var formo;
	var elemento;
	if ( formo=document.forms[formulario] ){
		for (i=0;i<formo.elements.length;i++){
			elemento=formo.elements[i];
			switch ( elemento.type.toLowerCase() ){
				default:
					elemento.readOnly=true;
				break;
				case 'radio':
					elemento.disabled=true;
				break;
				case 'checkbox':
					elemento.onclick=function(){ return false; }
				break;
				case 'submit':
				case 'image':
					element.style.display='none';
				break;					
			}
		}

	}
}


function valida_campo(elemento,nombre_campo,tecla){
	if ( elemento.form ){
		if ( nombre_campo!='' && tecla==13 ){
			var formulario=elemento.form;
			var campo;
			if ( formulario.elements[nombre_campo] ){
				campo=formulario.elements[nombre_campo];
				if ( elemento.value!='' && campo.value!='' ){
					formulario.submit();
				}
			}
		}
	}
}


// FUNCIONES VARIAS

function embebe_media(codigo_html,descripcion,cont_destino,cont_texto){
	var objeto;
	var origen;
	var ancho;
	var alto;
	var ancho_texto;
	var indice_campos = 0;
	var capa_texto = ( typeof(cont_texto)=='object' )?cont_texto:document.getElementById(cont_texto);
	var capa_media = ( typeof(cont_destino)=='object' )?cont_destino:document.getElementById(cont_destino);
	if ( codigo_html!='' && capa_media ){
		oculta_capa_alt(capa_media.id);
		capa_media.innerHTML = codigo_html;
		if ( objeto = capa_media.childNodes[0] ){
			ancho = objeto.width;
			alto = objeto.height;
			while ( indice_campos<objeto.childNodes.length && origen==null ){
				if ( objeto.childNodes[indice_campos].name.toLowerCase()=='movie' ){
					origen = objeto.childNodes[indice_campos].value;
				}
				indice_campos+=1;
			}
			swfobject.embedSWF(origen, capa_media.id, ancho, alto, '8');
			oculta_capa_alt(capa_media.id);
			if ( descripcion!='' && capa_texto ){
				ancho_texto = ( ie )?ancho:(ancho+'px');
				capa_texto.style.width = ancho_texto;	
				capa_texto.innerHTML = descripcion;
			}
		}
		
	}
}

function oculta_capa(id_elemento,estado){
	var elemento;
	var cad_estado;
	var estado_visible='';
	if ( elemento=document.getElementById(id_elemento) ){
		if ( !ie ){
			if ( elemento.rows ){
				estado_visible = 'table';
			}
			if ( elemento.cells && !elemento.rows ){	
				estado_visible = 'table-row';
			}
		}
		cad_estado=( estado )?'none':estado_visible;
		elemento.style.display=cad_estado;
	}
}

function oculta_capa_alt(id_elemento){
	var elemento;
	var estado ;
	var cad_estado;
	var estado_visible='';
	if ( elemento=document.getElementById(id_elemento) ){
		estado = elemento.style.display;
		if ( !ie ){
			if ( elemento.rows ){
				estado_visible = 'table';
			}
			if ( elemento.cells && !elemento.rows ){	
				estado_visible = 'table-row';
			}
		}
		cad_estado=( estado=='none' )?estado_visible:'none';
		elemento.style.display=cad_estado;
	}
}