function min(a,b) {
	if (a<b) return (a); else return(b);
}

function replace(texto,s1,s2){
	if (texto.length>0)
		return texto.split(s1).join(s2);
	else
		return "";
}

function Left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function Right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}
function toDate(str) {
	var tmpT, tmpD, tmp;
	var fecha;
	
	if (str.length>0) {
		tmp = str.split(" ");
		tmpD = tmp[0].split("/");
		if (tmp.length>1) tmpT = tmp[1].split(":");
		
		fecha = new Date();
		fecha.setFullYear(tmpD[2], tmpD[1]-1, tmpD[0]);
		if (tmp.length>1) fecha.setHours(tmpT[0], tmpT[1], 0, 0);
	}
	return (fecha);
}

function DiaMesAnnoCorrectos(dia, mes, anno) {
	/* Para comprobar la validez de una fecha introducida (debidamente parseada), 
	tan solo hay que construir con un objeto Date introduciendo dichos valores, y 
	comprobando por último si el mes de la fecha resultante coincide con el de la
	fecha introducida. Por ejemplo: introducir 31 de Abril equivale a 1 de Mayo */		
	var d = new Date();
	d.setDate(dia);
	d.setMonth(mes-1);
	d.setYear(anno);
	if (d.getMonth()!= mes-1 ) {
		return (false);
	} else {
		return (true);
	}
}

 function wordCount(textoArea) {
  // Función que nos va a contar el número de caracteres 
  // y de palabras del area de texto de un formulario

  // El numero de caracteres es su longitud
  numeroCaracteres = textoArea.length;

  // Eliminamos los caracteres en blanco del inicio y del final.
  // Como no tenemos funciones del tipo trim, rtrim y ltrim usamos
  // expresiones regulares
  // El ^ indica principio de cadena
  inicioBlanco = /^ / 
  // El $ indica final de cadena
  finBlanco = / $/
  // El global (g) es para obtener todas las posibles combinaciones
  variosBlancos = /[ ]+/g 

  textoArea = textoArea.replace(inicioBlanco,"");
  textoArea = textoArea.replace(finBlanco,"");
  textoArea = textoArea.replace(variosBlancos," ");

  // Creamos un array con las diferentes palabras. Teniendo en 
  // cuenta que la separación entre palabras es el espacio en blanco.
  textoAreaDividido = textoArea.split(" ");
  numeroPalabras = textoAreaDividido.length;

  // Mostramos los datos.
  // Tendremos en cuenta si hay que escribir en plural o en singular.
  tC = (numeroCaracteres==1)?" carácter":" caracteres";
  tP = (numeroPalabras==1)?" palabra":" palabras";
  
  return (numeroPalabras);
     
  //alert (numeroCaracteres + tC +"\n" + numeroPalabras + tP);
 }

 function quitarExcesoPalabras(textoArea, maxPalabras) {
  // Creamos un array con las diferentes palabras. Teniendo en 
  // cuenta que la separación entre palabras es el espacio en blanco.
	var textoAreaDividido = textoArea.split(" ");
	if (textoAreaDividido.length>1) {
		//alert(textoAreaDividido.length);

		textoAreaDividido.length = min(maxPalabras, textoAreaDividido.length);
		for (var i=0; i < textoAreaDividido.length; i++) {
	  		textoAreaDividido[i] = Left (textoAreaDividido[i], min(textoAreaDividido[i].length, 20));
		}
		return (textoAreaDividido.join(" "));
	} else {
		return (textoAreaDividido);
	}
}

function ControlCaracteres(campo, maxcar, capa) {
	if (campo.value.length > maxcar)  campo.value = campo.value.substring(0, maxcar);

	document.getElementById(capa).innerHTML = "Quedan <b>" + (maxcar-campo.value.length) + "</b> caractéres ";
}


function fechaValida(str) {
	var ok = true;
	if (str.length>0) {
		var tmp = str.split("/");
		var d = new Date();
		d.setFullYear(parseInt(tmp[2]), parseInt(tmp[1]*1)-1, parseInt(tmp[0]*1));
		if (!(d.getFullYear() == (tmp[2]*1) && (d.getMonth()+1) == (tmp[1]*1) && d.getDate() == (tmp[0]*1))) ok = false;
		//alert(d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate() + " - " + (tmp[2]*1) + "/" + (tmp[1]*1) + "/" + (tmp[0]*1));
	} else {
		ok = false;
	}

	return ok;
}

function mailValido(str) {
	var tmp = str.split(" ");
	if (tmp.length==1) {
		var w = new Array(3)
		w[0] = "";
		w[1] = "";
		w[2] = "";
		encArroba=false;
		encPunto=false;
		for (i=0; i < str.length && !encArroba; i++) {
			if (str.charAt(i) == '@')
				encArroba=true;
			else
				w[0]+=str.charAt(i)
		}
		if (encArroba) {
			for (; i < str.length && !encPunto; i++) {
				if (str.charAt(i) == '.')
					encPunto=true;
				else
					w[1]+=str.charAt(i)
			}
			for (j=0; j < w[1].length; j++) {
				if (w[1].charAt(j) == '@')
					w[1]="";
			}
		}
		if (encPunto) {
			for (; i < str.length; i++) {
				w[2]+=str.charAt(i)
			}
			for (j=0; j < w[2].length; j++) {
				if (w[2].charAt(j) == '@')
					w[2]="";
			}
		}

		return (encArroba && encPunto && w[0].length>0 && w[1].length>0 && w[2].length>0);
	} else {
		return false;
	}
}	

function CIFValido(str){
	par = 0;
	non = 0;
	letras = "ABCDEFGHKLMNPQS";
	let = str.charAt(0);
	if (str.length!=9) {
		//alert('El Cif debe tener 9 dígitos');
		return false;
	}
	if (letras.indexOf(let.toUpperCase())==-1) {
		//alert("El comienzo del Cif no es válido");
		return false;
	}

	for (zz=2;zz<8;zz+=2) {
		par = par+parseInt(str.charAt(zz));
	}

	for (zz=1;zz<9;zz+=2) {
		nn = 2*parseInt(str.charAt(zz));
		if (nn > 9) nn = 1+(nn-10);
		non = non+nn;
	}

	parcial = par + non;
	control = (10 - ( parcial % 10));
	if (control==10) control=0;
	if (control!=str.charAt(8)) {
		//alert("El Cif no es válido");
		return false;
	}

	//alert("El Cif es válido");
	return true;
}

function NIFValido(str){
	dni=str.substring(0,str.length-1);
	let=str.charAt(str.length-1);
	if (!isNaN(let)) {
		//alert('Falta la letra');
		return false;
	}else{
		cadena = "TRWAGMYFPDXBNJZSQVHLCKET";
		posicion = dni % 23;
		letra = cadena.substring(posicion,posicion+1);
		if (letra!=let.toUpperCase()){
			//alert("Nif no válido");
			return false;
		}
	}

	//alert("Nif válido")
	return true;
}

function esNumerico(s) {
	var objRegExp  = /^[0-9]{1,}$/;
	return objRegExp.test(s);
}

function esNumLet(s) {
	var objRegExp  = /^[0-9a-zA-Z]{1,}$/;
	return objRegExp.test(s);
}
function esNumLetMail(s) {
	var objRegExp  = /^[0-9a-zA-Z ]{1,}$/;
	if (objRegExp.test(s))
		return true;
	else
		return mailValido(s);
}
function tieneAlMenosUnaLetra(v) {
	var RegExp =/[a-z]/i;

	if(RegExp.test(v))
	{
		return true;
	}else{
		return false;
	}
}

function quitarArticulosPreposiciones(t) {
	return t
}

function HacerEscapeEspecial(s) {
	return escape(replace(s, "+", "&#43;"));
}

function php_post(s) {
	return s;// replace(s, "’", "x");
}

function formatoMoneda(num) {
	var tmp = num.toString().split(".");
	if (tmp.length==1) 
		tmp[1] = "00";
	else
		tmp[1] = Left(tmp[1] + "00", 2);
	return tmp.join(".") + " &euro;";
}

function marcarCamposObligatorios() {
	$("input[id!=''][obligatorio!='']").each(function() {
		var id = $(this).attr("id");
		var c = $("label[for='"+id+"']");
		if (c.length) {
			//alert(c.html());
			$("label[for='"+id+"']").html(replace(c.html(), " *", ""));
		}
	});
	$("input[obligatorio='1']").each(function() {
		var id = $(this).attr("id");
		var c = $("label[for='"+id+"']").html()+" *";
		$("label[for='"+id+"']").html(c);
	});
}

function ControlFormulario(f) {
	//Solo se procesarán con esta función aquellos INPUT que contengan el atributo TIPO
	//Devuelve una lista de mensajes de errores encontrados, separados por <br/>
	var msg = "";
	var v;
	
	$("#"+f+" input[obligatorio=1]:text").each(function() {
		v = $(this).val();
		if(v.length==0) 
			msg += "<br/>" + $(this).attr("errorobligatorio");
	});
	$("#"+f+" input[obligatorio=1]:checkbox").each(function() {
		if(!$(this).attr("checked")) msg += "<br/>" + $(this).attr("errorobligatorio");
	});

	$("#"+f+" input[tipo!='']:text").each(function() {
		v = $(this).val();
		if(v.length>0) {
			tmp = "<br/>" + $(this).attr("errortipo");
			switch($(this).attr("tipo")) {
				case "numlet": if (!esNumLet(v)) msg += tmp; break;
				case "correo": if (!mailValido(v)) msg += tmp; break;
				case "numerico": if (!esNumerico(v)) msg += tmp; break;
				case "1letmin": if (!tieneAlMenosUnaLetra(v)) msg += tmp; break;
				case "nif": if (!NIFValido(v)) msg += tmp; break;
				case "cifnif": if (!CIFValido(v) && !NIFValido(v)) msg += tmp; break;
				case "cif": if (!CIFValido(v)) msg += tmp; break;
				case "fecha": if (!fechaValida(v)) msg += tmp; break;
				case "tpvfeccad": if (!fechaValida("01/"+v)) msg += tmp; break;
				case "usuario": if (!oUsu.UsuarioValido(v)) msg += tmp; break;
				case "contrasenna": if (!oUsu.ContrasennaValida(v)) msg += tmp; break;
			}
		}
	});

	return msg;
}

function ponerValor(c, m, v) {
	switch(m) {
		case "checked": $(c).attr("checked", v); break;
		case "hide": $(c).hide(); break;
		case "show": $(c).show(); break;
		case "remove": $(c).remove(); break;
		default: $(c).val(v); break;
	}
}

function VaciarLista(id) {
	$("#"+id).html("");
}

function InsertarEnLista(id, v) {
	$("#"+id).append(v);
	$("#"+id+" tr:odd").css("background-color","#e1e1e1");
	$("#"+id+" tr:even").css("background-color","#f2f2f2");
}

/********************************* QUITAR ACENTOS *********************************************************************************************************/
///////  ////////////
String.prototype.accnt = function(){
	var cnt = 0;
	var acnt = this;
	acnt = acnt.split('');
	acntlen = acnt.length;
	var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
	var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
	for (var y = 0; y < acntlen; y++){
	if (sec.indexOf(acnt[y]) != -1)  cnt++;}
	return cnt;}
String.prototype.renlacc = function(){
	var torem = this;
	torem = torem.split('');
	toremout = new Array();
	toremlen = torem.length;
	var sec = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
	var rep = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
	for (var y = 0; y < toremlen; y++){
	if (sec.indexOf(torem[y]) != -1) {toremout[y] = rep[sec.indexOf(torem[y])];} else toremout[y] = torem[y];}
	toascout = toremout.join('');
	return toascout;}

function QuitarAcentos(str){
	var countarr = new Array();
	var c = '';
	var text=str;
	var textout = new Array();
	text = text.replace(/\r/g,'');
	text = text.split('\n');
	var linecnt = text.length;
	for (var x = 0; x < linecnt; x++){
	countarr[x] = Math.abs(text[x].accnt());
	textout[x] = text[x].renlacc();}
	textout = textout.join('\n');
	return textout
} 		
/********************************* FIN: QUITAR ACENTOS *********************************************************************************************************/


