function replaceAll(str, from, to ) {
	var idx = str.indexOf(from);

	while (idx > -1) {
        str = str.replace(from, to);
        idx = str.indexOf(from);
    }
    return str;
}




function valVacio(texto){
   if (texto.value.length == 0){
		texto.focus();
		return true;		
   }			
   return false;	
}



letras = new Array();
letras[0] = "T";
letras[1] = "R";
letras[2] = "W";
letras[3] = "A";
letras[4] = "G";
letras[5] = "M";
letras[6] = "Y";
letras[7] = "F";
letras[8] = "P";
letras[9] = "D";
letras[10] = "X";
letras[11] = "B";
letras[12] = "N";
letras[13] = "J";
letras[14] = "Z";
letras[15] = "S";
letras[16] = "Q";
letras[17] = "V";
letras[18] = "H";
letras[19] = "L";
letras[20] = "C";
letras[21] = "K";
letras[22] = "E";



function validarNIF(NIF){
	var i = 0;
	
	if (NIF.value.substring(0, 1) == "0") {
		i++;	
	}

	if (parseInt(NIF.value.substring(i, NIF.value.length - 1)) < 99999999) {
		if (NIF.value.charAt(NIF.value.length - 1).toUpperCase() == letras[parseInt(NIF.value.substring(i, NIF.value.length - 1)) % 23]) {
			return 2;		
		} else { 
			NIF.focus();
			return 1;	
		}
	} else {
		NIF.focus();
		return 0;		
	}
}




function validarNIE(NIE){
	var bOk = true;
	
	for (var i = 1; i < NIE.value.length-1; i++) 
   		bOk = bOk && esDigito(NIE.value.charAt(i));
		
	if ((NIE.value.charAt(0) != "X") && (NIE.value.charAt(0) != "x") && (NIE.value.charAt(0) != "Y") && (NIE.value.charAt(0) != "y")){
		bOk = false;
	}
	else
		if ((NIE.value.charCodeAt(NIE.value.length-1) < 65) || ((NIE.value.charCodeAt(NIE.value.length-1) > 90) && (NIE.value.charCodeAt(NIE.value.length-1) < 97)) || (NIE.value.charCodeAt(NIE.value.length-1) > 122))
			bOk = false;

	NIE.focus();
	return bOk;		
}




function validarCIF(CIF){
	if (/^[ABCDEFGHKLMNPQS][0-9]{7}[0-9A-Za-z]$/.test(CIF.value.toUpperCase())) 	
		return true;
	
	CIF.focus();
	return false;
}   
   
	 
function validarForeignCompanies(Valor){
	var bOk = true;
	if (Valor.value.length == 9) 
		return true;
	Valor.focus();
	return false;	
}
	 
	 
function valDireccion(direccion){
	if (/^[\wÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÜÏüïÇçÑñ\ \-\_\º\ª\/\,\:\;\(\)\.\n]+$/.test(direccion.value)) 	
		return true;
	direccion.focus();
	return false;
}
   
	 
	 
function valAlfa(valor){
	if (/^[A-Za-zÁÉÍÓÚáéíóúÀÈÌÒÙàèìòùÑñ\º\ª\ \-/]+$/.test(valor.value)) 	
		return true;
	valor.focus();
	return false;
}



function valCodigoPostal(CodPostal){
	if (CodPostal.value.length == 5) 
		return true;
	CodPostal.focus();
	return false;		
}



function valTelefono(telefono){
	if (telefono.value.length == 9) 
		return true;
	telefono.focus();
	return false;	
}



function valMail(email){
    if (/^([\w-\.])+@([\w-]+\.)+(\w){2,4}$/.test(email.value))
		return true;
		
	email.focus();
	return false;
}   




function valWeb(web){
    if (/^http:\/\/([\w-\.\d\/])+$/.test(web.value))
		return true;
		
	web.focus();
	return false;
}   




function valNumero(valor) {
    if (!isNaN(valor.value))
		return true;
	
	valor.focus();		
	return false;			  
}
   
	 
	 
	 
function valFecha(fecha){ 
	if ((valAno(fecha)) && (valMes(fecha)) && (valDia(fecha)) && (valSep(fecha))) 
		return true;

	fecha.focus();
	return false;	
}




function valAno(ano){
	var bOk = true;
	
    if (ano.value.substr(6).length == 4) {
     	for (var i = 0; i < ano.value.substr(6).length; i++)
      		bOk = bOk && esDigito(ano.value.substr(6).charAt(i));
	} else 
		bOk = false;
	return bOk;
}




function valEdad(edad){
	var bOk = true;
	
    if (edad.value.length == 4) {
     	for (var i = 0; i < edad.value.length; i++)
      		bOk = bOk && esDigito(edad.value.charAt(i));
	} else
		bOk = false;

	return bOk;
}




function valMes(mes){ 

	if ((parseInt(mes.value.substr(3, 2), 10) >= 1) && (parseInt(mes.value.substr(3, 2), 10) <= 12))  
    	return true;

	return false;
} 




function finMes(finmes){ 
    var n = 0; 
    switch (parseInt(finmes.value.substr(3, 2), 10)) { 
     case 1: n = 31; break; 
     case 2: n = 29; break; 
     case 3: n = 31; break; 
     case 4: n = 30; break; 
     case 5: n = 31; break; 
     case 6: n = 30; break; 
     case 7: n = 31; break; 
     case 8: n = 31; break; 
     case 9: n = 30; break; 
     case 10: n = 31; break; 
     case 11: n = 30; break; 
     case 12: n = 31; break; 
    } 
    return n + ((n == 2) && (((parseInt(finmes.value.substr(6), 10) % 4) == 0)? 1: 0)); 
} 




function valDia(dia) { 

	if ((parseInt(dia.value.substr(0, 2), 10) >= 1) && (parseInt(dia.value.substr(0, 2), 10) <= finMes(dia)))  
		return true;
	
	return false;	
} 




function valSep(cadena) { 
	return ((cadena.value.charAt(2) == "/") && (cadena.value.charAt(5) == "/")); 
} 





// Devuelve TRUE cuando fecha1 >= fecha2 
// Devuelve FALSE cuando fecha1 < fecha2
function compararFechas(fecha1) {
	
	var day = new Date();
	mes = day.getMonth() + 1;

	// He sustituido day.getYear() por 2012

	if ((day.getDate() < 10) && (mes < 10)) 
		var today = "0" + day.getDate() + "/0" + mes + "/2012";
	else {
		if (day.getDate() < 10) 
			var today = "0" + day.getDate() + "/" + mes + "/2012";
		else {
			if (mes < 10) 
				var today = day.getDate() + "/0" + mes + "/2012";
			else 
				var today = day.getDate() + "/" + mes + "/2012";
		}
	}
	
	if (parseInt(fecha1.value.substr(6), 10) < parseInt(today.substr(6), 10))
		return false;

	if ((parseInt(fecha1.value.substr(3, 2), 10) < parseInt(today.substr(3, 2), 10)) && (parseInt(fecha1.value.substr(6), 10) == parseInt(today.substr(6), 10))) 
		return false;
	
	if ((parseInt(fecha1.value.substr(0, 2), 10) < parseInt(today.substr(0, 2), 10)) && (parseInt(fecha1.value.substr(3, 2), 10) == parseInt(today.substr(3, 2), 10)) && (parseInt(fecha1.value.substr(6), 10) == parseInt(today.substr(6), 10))) {
		return false;
	}

	return true;	
}




// Devuelve TRUE cuando fecha1 > fecha2
// Devuelve FALSE cuando fecha1 <= fecha2
function compararFechasSesion(fecha1) {
	
	var day = new Date();
	mes = day.getMonth() + 1;
	
	// He sustituido day.getYear() por 2012

	if ((day.getDate() < 10) && (mes < 10)) 
		var today = "0" + day.getDate() + "/0" + mes + "/2012";
	else {
		if (day.getDate() < 10) 
			var today = "0" + day.getDate() + "/" + mes + "/2012";
		else {
			if (mes < 10) 
				var today = day.getDate() + "/0" + mes + "/2012";
			else 
				var today = day.getDate() + "/" + mes + "/2012";
		}
	}
	
	if (parseInt(fecha1.value.substr(6), 10) < parseInt(today.substr(6), 10))
		return false;
		
	if ((parseInt(fecha1.value.substr(3, 2), 10) < parseInt(today.substr(3, 2), 10)) && (parseInt(fecha1.value.substr(6), 10) == parseInt(today.substr(6), 10))) 
		return false;
	
	if ((parseInt(fecha1.value.substr(0, 2), 10) <= parseInt(today.substr(0, 2), 10)) && (parseInt(fecha1.value.substr(3, 2), 10) == parseInt(today.substr(3, 2), 10)) && (parseInt(fecha1.value.substr(6), 10) == parseInt(today.substr(6), 10))) {
		return false;
	}
	
	return true;	
}




// Devuelve TRUE cuando ano1 > ano2
function compararAnos(ano1) {
	
	var day = new Date();

	// He sustituido day.getYear() por 2012

	ano_actual = 2012;
	ano_actual = ano_actual + " ";
	
	if (parseInt(ano1.value, 10) < parseInt(ano_actual.substr(0, 4), 10))
		return false;
	else 
		return true;	
}




// Comprobar Fecha de Nacimiento del Usuario (> 17 años)
function compararEdad(fecha1) {
	
	var day = new Date();

	// He sustituido day.getYear() por 2012

	ano_actual = 2012;
	ano_actual = ano_actual + " ";
	ano_actual_17 = parseInt(ano_actual.substr(0, 4), 10) - 17;
	ano_actual_65 = parseInt(ano_actual.substr(0, 4), 10) - 65;

	if ((ano_actual_17 - (parseInt(fecha1.value.substr(6), 10)) < 0) || (ano_actual_65 - (parseInt(fecha1.value.substr(6), 10)) > 0))
		return false;
	else 
		return true;		
}




function esDigito(digito){ 
    return ((digito.charCodeAt(0) > 47) && (digito.charCodeAt(0) < 58)); 
} 




function fechaMayorOIgualQue(fec0, fec1){  
    var bRes = false;  
    var sDia0 = fec0.value.substr(0, 2);  
    var sMes0 = fec0.value.substr(3, 2);  
    var sAno0 = fec0.value.substr(6, 4);  
    var sDia1 = fec1.value.substr(0, 2);  
    var sMes1 = fec1.value.substr(3, 2);  
    var sAno1 = fec1.value.substr(6, 4);  
    if (sAno0 > sAno1) bRes = true;  
    else {  
     if (sAno0 == sAno1){  
      if (sMes0 > sMes1) bRes = true;  
      else {  
       if (sMes0 == sMes1)  
        if (sDia0 >= sDia1) bRes = true;  
      }  
     }  
    }  
    return bRes;  
   }  






function ObtenerRadioButonSeleccionado(RadioButon){
	for(i=0;i<RadioButon.length;i++)
	  if(RadioButon[i].checked) 
			return RadioButon[i].value;
}



function Subcadena(URL, idioma) {
	cadena = new String (URL);
	cadena = cadena.replace(/\?idioma=c/gi, "");
	cadena = cadena.replace(/\?idioma=v/gi, "");
	cadena = cadena.replace(/\?idioma=e/gi, "");
	cadena = cadena.replace(/\&idioma=v/gi, "");
	cadena = cadena.replace(/\&idioma=c/gi, "");
	cadena = cadena.replace(/\&idioma=e/gi, "");
	
// Con esto elimino los errores de concatenar el tema del destino dentro de una misma pagina y ademas el cambio del Idioma
	if(cadena.indexOf("#")!=-1){
		cadena = cadena.substr(0,cadena.indexOf("#"));
	} 

	if (cadena.substring(cadena.length-4) == ".asp") {
		cadena = cadena + "?";
	} else {
		cadena = cadena + "&";
	}
	return cadena;
}


