﻿//*****************************************************************************************
//								FUNCIONES DE CADENAS
//*****************************************************************************************
// esSubset(cadena, lcaracteres) -> comprueba si "cadena" es subcadena de "lcaracteres"
// tiene_blancos(cadena) -> comprueba si "cadena" tiene espacios en blanco entremedias
// tiene_especiales(cadena)	-> comprueba si "cadena" tiene caracteres especiales
// tiene_acentos(cadena) -> comprueba si "cadena" tiene acentos
// parsea(variable,car,cambio) -> sustituye "car"  por "cambio" en "variable"

//TRIM DE UNA CADENA
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

var esEspecial = "'`´./ºª#|,;-()_:@ñ"; //conjunto de caracteres especiales
var esAlfa = "aáàäâbcçdeéèëêfghiíìïîjklmnñoóòöôpqrstuúùüûvwxyzAÁÀÄÂBCÇDEÉÈËÊFGHIÍÌÏÎJKLMNÑOÓÒÖÔPQRSTUÚÙÜÛVWXYZ'`´./ºª # |,;-()_:"; //conjunto de caracteres alfanumericos
var esAcentos = "áàäâéèëêíìïîóòöôúùüûÁÀÄÂÉÈËÊÍÌÏÎÓÒÖÔÚÙÜÛ"; //conjunto de vocales con acento

function esSubSet(cadena, lcaracteres)
{
	  var caracter;
	  var lo_es=false;
	  
	  for (var i=0; i < cadena.length; i++) 
	  { 
			caracter=cadena.substring(i,i+1);
			if (lcaracteres.indexOf(caracter,0)!=-1) {      
			  lo_es=true;	
		  	break;
			}  
	  }
	  return lo_es;
}   

function tiene_blancos(cadena){
	var lo_hay=false;
	//cadena=trim(cadena);
	//alert("longitud"+cadena.length)
	for (var i=0; i < cadena.length; i++) 
	{ 
		//alert(i+"-caracter:"+cadena.substring(i,i+1));
		if (cadena.substring(i,i+1) == " ")
		{
			lo_hay=true;
			break;
		} 
	}
  return lo_hay;
}

function tiene_especiales(cadena){
	return(esSubSet(cadena, esEspecial))
}

function tiene_acentos(cadena){
	return(esSubSet(cadena, esAcentos))
}

function tiene_x_numeros(cadena,x){
	var ok=true;
	//alert(cadena);
	//var  reXdigit = new RegExp("\d{"+x+",}");
	if(cadena.search(/\d{1,}/)==-1){
		ok=false;
	}
	//alert(cadena.search(/\d{1,}/));
	//alert(ok);
	return ok;
}

//PARSEO DE CADENAS
//parseo de las cajas de texto y de los textareas
function parsea(variable,car,cambio) 
{
	 //Sustituye el caracter "car"  por "cambio" en "variable"
	 
	 var salida = new Array();
	 salida = variable.value;
		
	longitud=salida.length;
	while(longitud>0)
	{
		salida = salida.replace(car,cambio);
		longitud--;
	}
	variable.value = salida;
}

//*******************************************************//
//**********  FUNCIONES PARA EL FCK EDITOR  ************//
var mensaje_error_alert = "";

function valor_limpio_editor(nombre_campo_editor) {
	var tagsHTML = /<[^>]*>/g;
	var espacio = /&nbsp;/g;
	var oEditor = FCKeditorAPI.GetInstance(nombre_campo_editor);
	var valor = oEditor.GetXHTML( false ).replace(tagsHTML, "");
	valor = valor.replace(espacio, "");
	
	return valor;
}

function valor_editor(nombre_campo_editor) {
	var oEditor = FCKeditorAPI.GetInstance(nombre_campo_editor);
	var valor = oEditor.GetXHTML( false );
	
	return valor;
}

function largo_valor_limpio_editor(nombre_campo_editor) {
	var tmp = String(valor_limpio_editor(nombre_campo_editor));
	valor = tmp.length;
	
	return valor;
}

function largo_valor_editor(nombre_campo_editor) {	
	var tmp = String(valor_editor(nombre_campo_editor));
	valor = tmp.length;
	
	return valor;
}

function es_valido_campo_editor(campo_formulario,alerta_vacio,alerta_maximo,cantidad_caracteres_maximo)
{
	var salida = 0;
	mensaje_error_alert = "";
	
	var largo_total = largo_valor_editor(campo_formulario);
	var largo_limpio = largo_valor_limpio_editor(campo_formulario);
	
	
	if((largo_limpio == 0) && (alerta_vacio != "")) {
		if ((mensaje_error_alert == "") && alerta_vacio)
		{
			mensaje_error_alert = alerta_vacio;
		}
	}
	else if ((largo_total > cantidad_caracteres_maximo) && (alerta_maximo != "")) 
	{
		if ((mensaje_error_alert == "") && alerta_maximo)
		{
			mensaje_error_alert = alerta_maximo+" posee "+largo_total+" caracteres, y solo puede insertar un maximo de "+cantidad_caracteres_maximo+".";
		}
	}
	else
	{
		salida = 1;
	}
	
	return salida;
}

//*****************************************************************************************
//								FUNCIONES CON VENTANAS
//*****************************************************************************************
// abrir(fichero,altura,anchura) -> abrir una ventana 
// afoto(cual,titulo) -> abrir una ventana con la imagen
// redimensionar(ancho,alto) -> redimensionar la ventana y la posibilidad de centrarla


//ABRIR VENTANA
function abrir(fichero,altura,anchura)
{
	var propiedades="resizable=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0, height="+altura+",width="+anchura+",screenX=0,screenY=0,left=0,top=0";
	//alert(propiedades);		
   	we=window.open(fichero,'wenvio',propiedades);		
}

//Funciones para el pop up de las imagenes
var ventana; 
var cont=0 ;
var titulopordefecto = "Visualizar"; //texto por defecto a mostrar en la barra de titulo en caso de omitir el argumento titulo 

function afoto(cual,titulo) 
{ 
	if(cont==1){ventana.close();ventana=null} 
	if(titulo==null){titulo=titulopordefecto} 
	ventana=window.open('','ventana','resizable=yes,scrollbars=no') 
	ventana.document.write('<html><head><title>' + titulo + '</title></head><body style="overflow:hidden" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0" scroll="no" onUnload="opener.cont=0"><img src="' + cual + '" onLoad="opener.redimensionar(this.width, this.height)">') 
	ventana.document.close(); 
	cont++; 
} 

function redimensionar(ancho,alto) 
{ 
	ventana.resizeTo(ancho+12,alto+28) 
	ventana.moveTo((screen.width-ancho)/2,(screen.height-alto)/2) //centra la ventana. Eliminar si no se quiere centrar el popup 
}

//*****************************************************************************************
//								FUNCIONES AUXILIARES
//*****************************************************************************************
// checkEmail(cadena_mail) -> comprueba que el email es correcto
// plegar_desplegar(capa)  -> pliega/despleiga una capa
// Comprobarradio(radio) ->comprueba quese ha seleccionado un radiobutton

//Comprobar Email
function checkMail(cadena_mail)
{
	ext=cadena_mail.substring(cadena_mail.lastIndexOf("."),cadena_mail.length);
	if(ext.length<5 && ext.length>1)
	{	
		var Template = /^[a-z][a-z-_0-9.]+@[a-z-_=>0-9.]+.[a-z]{2,3}$/i //Formato de direccion de correo electronico
		//return (Template.test(cadena_mail)) ? 1 : 0 //Compara "cadena_mail" con el formato "Template" y si coincidevuelve verdadero si no devuelve falso
		if (Template.test(cadena_mail) == 0)
		{
			return false;
			//errStr = "El campo Email es incorrecto.\r ";
		}
		else{
			return true;
		}
	}
	else
	{
		//errStr = "El campo Email es incorrecto.\r ";
		return false;
	}
}

//PLEGADO Y DESPLEGADO DE UNA CAPA 
function plegar_desplegar(capa)
{
	var id=document.getElementById(capa);
	if(id.style.display=='none'){
		id.style.display='block';
	}
	else{
		id.style.display='none';
	}
}


//VALIDACION DE ELECCION DE UN RADIOBUTTON
function Comprobarradio(radio) //version nueva
{ 
	var seleccionados=-1;
 	longitud=eval(radio+'.length');
 	//alert(longitud);
 	lon=parseInt(longitud); 
 	for(i=0;i<lon;i++)
 	{  
  		if(eval(radio+'['+i+'].checked')){seleccionados=eval(radio+'['+i+'].value');} 	 
 	}
 	return seleccionados;   
}

//VALIDACION DE ELECCION DE AL MENOS 1 CHECKBOX
//nombre_check es el nombre del checkbox (deben llamarse todos igual)
//formulario: es el nombre del formulario 
function Comprobarcheck(ini,fin,formulario,nombre_check)
{ 
	var seleccionados=0;
 	for(i=ini;i<=fin;i++)
 	{  		
  		if(eval("document."+formulario+".elements['"+nombre_check+"_"+i+"'].checked==true")){
  			seleccionados++;
  		}  
 	}
 	return seleccionados;
}

//CALCULA EXTENSION DE UN FICHERO
function calculaExtension(obj){
	//alert("")
	var extension="NO";
	if(obj!=""){	
			longitud1=obj.length;
			parte1=obj.substr(longitud1-6,6);  	
			donde1=parte1.indexOf('.',0)+1;
			ext1=parte1.substr(donde1,longitud1-donde1);
			extension=ext1.toLowerCase();
	}
	return extension;
}

//dni
//**********  COMPROVACION DEL DNI  **********//
function es_nif_correcto(nif)
{
	lon = nif.length;
	
	if (lon<6) return false
	
	letraDNI = nif.charAt(lon-1)
	letraDNI = letraDNI.toUpperCase()
	dni = nif.substring(0,lon-1)
	//alert(dni)	
	if(isNaN(dni))
		return(false)
	else
	{
		letraCorrecta = letraNif(dni)
		//alert(letraCorrecta)
		if (letraDNI != letraCorrecta)
			return(false)
		else
			return(true)
	}
}

function letraNif(dni) //calculo letra del nif
{
	var asc
	asc= dni % 23;
	
	if ( asc == 0) { letra="T"; };
	if ( asc == 1) { letra="R"; };
	if ( asc == 2) { letra="W"; };
	if ( asc == 3) { letra="A"; };
	if ( asc == 4) { letra="G"; };
	if ( asc == 5) { letra="M"; };
	if ( asc == 6) { letra="Y"; };
	if ( asc == 7) { letra="F"; };
	if ( asc == 8) { letra="P"; };
	if ( asc == 9) { letra="D"; };
	if ( asc == 10) { letra="X"; };
	if ( asc == 11) { letra="B"; };
	if ( asc == 12) { letra="N"; };
	if ( asc == 13) { letra="J"; };
	if ( asc == 14) { letra="Z"; };
	if ( asc == 15) { letra="S"; };
	if ( asc == 16) { letra="Q"; };
	if ( asc == 17) { letra="V"; };
	if ( asc == 18) { letra="H"; };
	if ( asc == 19) { letra="L"; };
	if ( asc == 20) { letra="C"; };
	if ( asc == 21) { letra="K"; };
	if ( asc == 22) { letra="E"; };
	if ( asc == 23) { letra="T"; };

	return letra;
}
