var letr = /[^\D'\-\.]/gi;
var letrNoAcen = /[^a-z]/gi;
var letryEsp = /[^\D\s'\-\.]/gi;
var numLetEsp = /[\w]/gi;
var fech = /[^\d\-\\\/]/gi;
var fechRem = /[\\\/]/gi;
var hor = /[^\d:]/gi;
var num = /[^\d]/g;
var let = /[^\D]/g;
var deci = /[^\d\.,]/
var numyLetr = /[^\d\D]/gi
var DNInumoLetr = /[0-9a-z]/gi
var esDNI = /^[a-z]?[\-]?[0-9]{1,8}[\-]?[a-z]?$/gi


//Recibe una cadena
//Devuelve la cadena sin los espacios de los extremos
function trim(cadena){
	var espaciosIni = /^\s/;
	var espaciosFin = /.*\s$/;
	while (cadena.search(espaciosIni)==0 || cadena.search(espaciosFin)==0){
		if (cadena.search(espaciosIni)==0) cadena = cadena.substring(1);
		if (cadena.search(espaciosFin)==0) cadena = cadena.substring(0,cadena.length-1);
	}
	return cadena;
}

//Recibe una cadena
//Devuelve la cadena con sólo letras y en mayúsculas
function cadenaM(cadena){
	cadena = cadena.replace(letr,"");
	cadena = cadena.toUpperCase();
	return cadena;
}

//Recibe una cadena
//Devuelve la cadena con sólo letras y en mayúsculas
function cadenaMNoAcen(cadena){
	cadena = cadena.replace(letrNoAcen,"");
	cadena = cadena.toUpperCase();
	return cadena;
}


//Recibe una cadena
//Devuelve la cadena con sólo letras y espacios
function soloLetyEsp(cadena){
	return cadena.replace(letryEsp,"");
}


//Recibe una cadena
//Devuelve la cadena con sólo letras numeros espacios
function soloNumLetyEsp(cadena){
	return cadena.replace(numLetEsp,"");
}	


//Recibe una cadena
//Devuelve la cadena con sólo numeros
function soloNum(cadena){
	return cadena.replace(num,"");
}


//Recibe una cadena
//Devuelve la cadena con sólo numeros
function soloLetNoAcen(cadena){
	return cadena.replace(letrNoAcen,"");
}


//Recibe un objeto, y el tamaño maximo
//Devuelve la cadena con sólo numeros
function aceptaNum(obj,tamano){
	cadena = obj.value;
	cadena = soloNum(cadena);
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}


//Recibe una cadena
//Devuelve la cadena con sólo numeros o con la palabra ILIMITADAS
function aceptaPlazas(obj,tamano){
	cadena = obj.value;
	if (cadena == "i" || cadena == "I" || cadena == "ILIMITADAS") cadena = "ILIMITADAS"
	else{
		cadena = soloNum(cadena);
		if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	}
	obj.value=cadena;
}


//Recibe una cadena
//Devuelve la cadena con sólo numeros y puntos
function decimales(cadena){
	cadena = cadena.replace(deci,"");
	return cadena.replace(",",".");
	}
	
	
//Recibe una cadena
//Devuelve la cadena en mayuscula
function siglas(obj,tamano){
	cadena = obj.value;
	cadena = cadena.replace(let,"");
	cadena = cadena.toUpperCase();
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}

	
//Recibe un objeto el tamaño maximo y el numero de decimales
//Devuelve la cadena con sólo numeros y decimales
function acepdeci(obj,tamano,deci){
	cadena = obj.value;
	var neg = "";
	if (cadena.substring(0,1) =="-") neg = "-";
	cadena = decimales(cadena);
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	if (cadena.indexOf(".") == 0) cadena = "";
	if (cadena.indexOf(".") != -1){ 
	cadena = cadena.substring(0,cadena.indexOf(".")+1) + soloNum (cadena.substring(cadena.indexOf(".")+1));
	if (cadena.substring(cadena.indexOf(".")).length > deci) cadena = cadena.substring(0,cadena.indexOf(".")+1) + cadena.substring(cadena.indexOf(".")+1,cadena.indexOf(".")+1+deci);
	}
	cadena = neg + decimales(cadena);
	obj.value=cadena;
}


//Recibe una cadena
//Devuelve la cadena con la primera palabra en mayúscula y con sólo letras y espacios
function primeraMayu(cadena){
	cadena = soloLetyEsp(cadena);
	//cadena = cadena.toLowerCase();
	prim = cadena.substring(0, 1);
	resto = cadena.substring(1);
	cadena = prim.toUpperCase() + resto;
	return cadena;
}


//Recibe una cadena
//Devuelve la cadena con la primera palabra en mayúscula y con sólo letras numeros espacios
function primeraMayuNum(cadena){
	cadena = soloNumLetyEsp(cadena);
	//cadena = cadena.toLowerCase();
	prim = cadena.substring(0, 1);
	resto = cadena.substring(1);
	cadena = prim.toUpperCase() + resto;
	return cadena;
}


//Recibe una cadena
//Devuelve la cadena con la primera palabra en mayúscula y con sólo letras numeros espacios
function primeraMayuNoAncen(cadena){
	cadena = soloLetNoAcen(cadena);
	//cadena = cadena.toLowerCase();
	prim = cadena.substring(0, 1);
	resto = cadena.substring(1);
	cadena = prim.toUpperCase() + resto;
	return cadena;
}


//Recibe un objeto y su tamaño maximo
//Devuelve la cadena con las primeras letras de cada palabra en mayúscula y con solo letras y espacios
function todPrimMay(obj,tamano){
	cadena = obj.value;
	cadena = cadena.replace("'","´");
	cadena = cadena.replace(/[^a-zñÑçÇ´áéíóúÁÉÍÓÚ\s-]/i,"");
	var tiespacio = cadena;
	var espaFin = /.*[ ]$/i;
	var espacio = "";
	if (cadena.search(espaFin)==0)
	{
		espacio = " ";
	}
	var cadenas = cadena.split(" ");
	cadena = "";
	for (var i = 0; i < cadenas.length; i++)
	{
		if (cadenas[i].length>2 || i==0)
		{
			cadenas[i] = (cadenas[i].substring(0, 1)).toUpperCase() + (cadenas[i].substring(1)).toLowerCase();
		}
		cadena = cadena + " " + cadenas[i];
    }
	cadena = trim(cadena);
    cadena=cadena+espacio;
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}
function todPrimMay2(obj,tamano){
	cadena = obj.value;
	cadena = cadena.replace("'","´");
	cadena = cadena.replace(/[^a-zñÑçÇ´áéíóúÁÉÍÓÚ\s-]/i,"");
	var tiespacio = cadena;
	var espaFin = /.*[ ]$/i;
	var espacio = "";
	if (cadena.search(espaFin)==0)
	{
		espacio = " ";
	}
	var cadenas = cadena.split(" ");
	cadena = "";
	for (var i = 0; i < cadenas.length; i++)
	{
		if (cadenas[i].length>2 || i==0)
		{
			cadenas[i] = (cadenas[i].substring(0, 1)).toUpperCase() + (cadenas[i].substring(1));
		}
		cadena = cadena + " " + cadenas[i];
    }
	cadena = trim(cadena);
    cadena=cadena+espacio;
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}


//Recibe un objeto y su tamaño maximo
//Devuelve la cadena con las primeras letras de cada palabra en mayúscula y con solo letras numeros y espacios
function todPrimMayyNum(obj,tamano){
	cadena = obj.value;
	cadena = cadena.replace("'","´");
	cadena = cadena.replace(/[^\w-/ºªñÑçÇ´áéíóúÁÉÍÓÚ\s]/,"");
	cadena = cadena.replace(/_/,"");
	var tiespacio = cadena;
	var espaFin = /.*[ ]$/i;
	var espacio = "";
	if (cadena.search(espaFin)==0)
	{
		espacio = " ";
	}
	var cadenas = cadena.split(" ");
	cadena = "";
	for (var i = 0; i < cadenas.length; i++) {
		if (cadenas[i].length>2 || i==0)
		{
			cadenas[i] = (cadenas[i].substring(0, 1)).toUpperCase() + (cadenas[i].substring(1)).toLowerCase();
		}
		cadena = cadena + " " + cadenas[i];
    }
	cadena = trim(cadena);
    cadena=cadena+espacio;
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}


//Recibe un objeto y su tamaño maximo
//Devuelve la cadena con las primeras letras de cada palabra en mayúscula y sin acentos
function todPrimMayNoAcen(obj,tamano){
	cadena = obj.value;
	//cadena = cadena.replace(/\\/,"/");
	var tiespacio = cadena;
	var espaFin = /.*[ ]$/i;
	cadena = cadena.toLowerCase();
	var cadenas = cadena.split(" ");
	cadena = "";
	for (var i = 0; i < cadenas.length; i++) {
		cadenas[i] = primeraMayuNoAncen(cadenas[i]);
		if (cadenas[i].length > 0) cadena = cadena + " " + cadenas[i];
    }
	cadena = trim(cadena);
    if (tiespacio.search(espaFin)==0) cadena=cadena+" ";
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	obj.value=cadena;
}


//Recibe un objeto y su tamaño maximo
//Devuelve la cadena en formato telefónico: XXX XXX	.... eliminando caracteres no válidos
function formatoTelef(obj,tamano){
	cadena = obj.value;
	var prefijo="";
	if (cadena.length>0) if (cadena.substring(0,1) == "+") cadena = "00" + cadena
	cadena = soloNum(cadena);
	if (cadena.length>4 && cadena.substring(0,2) == "00"){
	prefijo = cadena.substring(0,4) + " ";
	cadena = cadena.substring(4);
	//tamano = tamano + 7
	}
	var acumulador ="";
	while (cadena.length>3){
	acumulador = acumulador + " " + cadena.substring(0,3)
	cadena = cadena.substring(3);
	}
	acumulador = acumulador + " " + cadena.substring(3);
	cadena =trim(acumulador + cadena);
	if (cadena.length > tamano) cadena = cadena.substring(0,tamano);
	cadena = prefijo + cadena;
	obj.value=cadena;
}


//Recibe un objeto
//Devuelve un formato de DNI. Si ya se ha metido la letra al final, añade los ceros correspondientes
function dniVal(obj){
 var doslet = /[A-Z]{2}/;
 var letrIni = /^[a-z]/i;
 var letrFin = /.*[a-z]$/i;
 cadena = obj.value;
 cadena = cadena.toUpperCase();
 if (cadena.length==1) if (cadena.search(DNInumoLetr)==-1) cadena="";
 if (cadena.length>2) if (cadena.search(esDNI)!=0) cadena = cadena.substring(0,cadena.length-1)
 if (cadena.substring(0,2).search(doslet)==0) cadena = cadena.substring(0,1) + cadena.substring(2)
 if (cadena.search(letrIni)==0 && cadena.length>2 && cadena.substring(1,2)!="-") cadena = cadena.substring(0,1) + "-" + cadena.substring(1)
 if (cadena.search(letrFin)==0 && cadena.length>2 && cadena.substring(cadena.length-2,cadena.length-1)!="-") cadena = cadena.substring(0,cadena.length-1) + "-" + cadena.substring(cadena.length-1) 
 obj.value=cadena;
}


//Recibe un objeto
//Devuelve un formato de fecha
function fechVal(obj){
	cadena = obj.value;
	if (cadena == "a" || cadena == "A" || cadena == "Adulto" || cadena == "ADULTO") 
	{
		cadena = "Adulto"
	}
	else 
	{
		if (cadena =="00-00-0000") 
		{
			cadena =="00-00-0000"
		}
		else
		{
			cadena = cadena.replace(fech,"");
			cadena = cadena.replace(fechRem,"-");
			if (cadena.length>0) if (cadena.substring(0,1)=="-") cadena = cadena.substring(1);
			var cadenas = cadena.split("-");
			cadena="";
			if (cadenas[0].length > 2){
				cadenas[1]=cadenas[0].substring(2);
				cadenas[0]=cadenas[0].substring(0,2);
			}
			if (cadenas.length>1){
				if (cadenas[0].length < 2) cadenas[0] = "0" + cadenas[0];
				if (cadenas[1].length > 2){
				cadenas[2]=cadenas[1].substring(2)
				cadenas[1]=cadenas[1].substring(0,2);
				}
			}
			if (cadenas.length>2){
				if (cadenas[1].length < 2) cadenas[1] = "0" + cadenas[1];
				if (cadenas[2].length > 4) cadenas[2]=cadenas[2].substring(0,4);
			}
			if (parseInt(cadenas[0])>31 || cadenas[0]=="00") cadenas[0] = cadenas[0].substring(0,1)
		    if (parseInt(cadenas[1])>12 || cadenas[0]=="00") cadenas[1] = cadenas[1].substring(0,1)
			if (cadenas.length>0) cadena = cadenas[0];
			if (cadenas.length>1) cadena = cadena + "-" + cadenas[1];
			if (cadenas.length>2) cadena = cadena + "-" + cadenas[2];
			if (cadenas[0].length = 0) cadena="";
		}
	}
 obj.value=cadena;
}


//Recibe un objeto
//Devuelve un formato de hora
function horaVal(obj){
	cadena = obj.value;
	cadena = cadena.replace(hor,"");
	if (cadena.length>0) if (cadena.substring(0,1)==":") cadena = cadena.substring(1);
	var cadenas = cadena.split(":");
	cadena="";
	if (cadenas[0].length > 2){
	cadenas[1]=cadenas[0].substring(2);
	cadenas[0]=cadenas[0].substring(0,2);
	}
	if (cadenas.length>1){
		if (cadenas[0].length < 2) cadenas[0] = "0" + cadenas[0];
		if (cadenas[1].length > 2) cadenas[1]=cadenas[1].substring(0,2);
	}
    if (parseInt(cadenas[0])>24) cadenas[0] = cadenas[0].substring(0,1)
	if (parseInt(cadenas[1])>59) cadenas[1] = cadenas[1].substring(0,1)
	if (cadenas.length>0) cadena = cadenas[0];
	if (cadenas.length>1) cadena = cadena + ":" + cadenas[1];
	if (cadenas[0].length = 0) cadena="";
 obj.value=cadena;
}

/*funcion indentica a number_format de php
 * a es el número que le pasas
 * b es el número de decimales que permites
 * c es el símbolo de separación entre demicamles
 * d es el símbolo de separación entre miles
 */
function number_format(a, b, c, d) {
 a = Math.round(a * Math.pow(10, b)) / Math.pow(10, b);
 e = a + '';
 f = e.split('.');
 if (!f[0]) {
  f[0] = '0';
 }
 if (!f[1]) {
  f[1] = '';
 }
 if (f[1].length < b) {
  g = f[1];
  for (i=f[1].length + 1; i <= b; i++) {
   g += '0';
  }
  f[1] = g;
 }
 if(d != '' && f[0].length > 3) {
  h = f[0];
  f[0] = '';
  for(j = 3; j < h.length; j+=3) {
   i = h.slice(h.length - j, h.length - j + 3);
   f[0] = d + i +  f[0] + '';
  }
  j = h.substr(0, (h.length % 3 == 0) ? 3 : (h.length % 3));
  f[0] = j + f[0];
 }
 c = (b <= 0) ? '' : c;
 return f[0] + c + f[1];
}