function convertirhoraenvalor(cadenahora, horainiciadia){
// Esta funcion calcula el numero de Horas (valor real) entre el comienzo del dia y
// la hora dada en el parametro cadenahora y si el valor es menor que horainiciadia entonces
// le suma 24 horas para pasarlo al dia siguiente
	var valorhora;
	var arreglohora;
	var lacadenahora = cadenahora;
	
	if (cadenahora <= ''){
		return 0.0;
	} else {
		// Si cadenahora tiene espacios entonces viene con fecha al comienzo
		if (lacadenahora.lastIndexOf(' ') >= 0) {
			// Toma unicamente la parte de hora de cadenahora
			lacadenahora = lacadenahora.substr(lacadenahora.lastIndexOf(' ') + 1);
		}
		arreglohora = lacadenahora.split(':');
		valorhora = parseInt(arreglohora[0], 10) + (parseInt(arreglohora[1], 10) / 60);
		if (valorhora < horainiciadia){
			valorhora+= 24;
		}
		
		return valorhora;
	}
}

function validarcadenanovacia(elcampo, nombrecampo){
	var expresiontriminicial = /^ */g;
	var expresiontrimfinal = / *$/g;
	var expresiontrimintermedia = / +/g;
	
	elcampo.value = elcampo.value.replace(expresiontriminicial, '');
	elcampo.value = elcampo.value.replace(expresiontrimfinal, '');
	elcampo.value = elcampo.value.replace(expresiontrimintermedia, ' ');
	if (elcampo.value <= ''){
		if (nombrecampo > '') {
			window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor.\nPor favor verifique los datos.');
		}
		return false;
	}
	return true;
}

function validarnumeroentero(elcampo, nombrecampo){
	if (!validarcadenanovacia(elcampo, nombrecampo)){
		return false;
	} else {
		if (isNaN(elcampo.value)){
			elcampo.value = parseInt(elcampo.value, 10);
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico.\nPor favor verifique los datos.');
			}
			return false;
		} else {
			elcampo.value = parseInt(elcampo.value, 10);
		}
	}
	return true;
}

function validarnumeroenteromayorquecero(elcampo, nombrecampo){
	if (!validarnumeroentero(elcampo, nombrecampo)){
		return false;
	} else {
		if (parseInt(elcampo.value, 10) <= 0){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico mayor que cero.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarnumeroenteromayoroigualquecero(elcampo, nombrecampo){
	if (!validarnumeroentero(elcampo, nombrecampo)){
		return false;
	} else {
		if (parseInt(elcampo.value, 10) < 0){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico mayor o igual que cero.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarnumeroenteroenelrango(elcampo, nombrecampo, numeromenor, numeromayor){
	if (!validarnumeroentero(elcampo, nombrecampo)){
		return false;
	} else {
		if ((parseInt(elcampo.value, 10) < numeromenor) || (parseInt(elcampo.value, 10) > numeromayor)){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico entre ' + numeromenor + ' y ' + numeromayor + '.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarnumeroreal(elcampo, nombrecampo, decimalescampo){
	if (!validarcadenanovacia(elcampo, nombrecampo)){
		return false;
	} else {
		if (isNaN(elcampo.value)){
			elcampo.value = parseInt(parseFloat(elcampo.value) * Math.pow(10,decimalescampo)) / Math.pow(10,decimalescampo);
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico.\nPor favor verifique los datos.');
			}
			return false;
		} else {
			elcampo.value = parseInt(parseFloat(elcampo.value) * Math.pow(10,decimalescampo)) / Math.pow(10,decimalescampo);
		}
	}
	return true;
}

function validarnumerorealmayorquecero(elcampo, nombrecampo, decimalescampo){
	if (!validarnumeroreal(elcampo, nombrecampo, decimalescampo)){
		return false;
	} else {
		if (parseFloat(elcampo.value) <= 0){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico mayor que cero.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarnumerorealmayoroigualquecero(elcampo, nombrecampo, decimalescampo){
	if (!validarnumeroreal(elcampo, nombrecampo, decimalescampo)){
		return false;
	} else {
		if (parseFloat(elcampo.value) < 0){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico mayor o igual que cero.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarnumerorealenelrango(elcampo, nombrecampo, numeromenor, numeromayor, decimalescampo){
	if (!validarnumeroreal(elcampo, nombrecampo, decimalescampo)){
		return false;
	} else {
		if ((parseFloat(elcampo.value) < numeromenor) || (parseFloat(elcampo.value) > numeromayor)){
			if (nombrecampo > '') {
				window.alert('ERROR: el campo "' + nombrecampo + '" deber tener un valor numérico entre ' + numeromenor + ' y ' + numeromayor + '.\nPor favor verifique los datos.');
			}
			return false;
		}
	}
	return true;
}

function validarhora1menorquehora2(campohora1, campohora2, nombrecampohora1, nombrecampohora2, horainiciadia){
	var valorhora1, valorhora2;
	
	valorhora1 = convertirhoraenvalor(campohora1.value, horainiciadia);
	valorhora2 = convertirhoraenvalor(campohora2.value, horainiciadia);
	
	if (valorhora1 >= valorhora2){
		if ((nombrecampohora1 > '') && (nombrecampohora2 > '')) {
			window.alert('ERROR: la hora del campo "' + nombrecampohora1 + '" debe ser menor que la hora del campo "' + nombrecampohora2 + '".\nPor favor verifique los datos.');
		}
		return false;
	}
	
	return true;
}

function validarhora1menoroigualquehora2(campohora1, campohora2, nombrecampohora1, nombrecampohora2, horainiciadia){
	var valorhora1, valorhora1;

	valorhora1 = convertirhoraenvalor(campohora1.value, horainiciadia);
	valorhora2 = convertirhoraenvalor(campohora2.value, horainiciadia);
	
	if (valorhora1 > valorhora2){
		if ((nombrecampohora1 > '') && (nombrecampohora2 > '')) {
			window.alert('ERROR: la hora del campo "' + nombrecampohora1 + '" debe ser menor o igual que la hora del campo "' + nombrecampohora2 + '".\nPor favor verifique los datos.');
		}
		return false;
	}
	
	return true;
}

function validarselectorconvalor(elcampo, nombrecampo){
	if ((elcampo.options.length <= 0) || (elcampo.selectedIndex < 0)) {
		window.alert('ERROR: debe seleccionar una opción de la lista "' + nombrecampo + '".\nPor favor verifique los datos.');
		return false;
	}
	if (elcampo.options[elcampo.selectedIndex].value <= '') {
		if (nombrecampo > '') {
			window.alert('ERROR: debe seleccionar una opción de la lista "' + nombrecampo + '".\nPor favor verifique los datos.');
		}
		return false;
	}
	return true;
}

function validarselectorconvalormayorquecero(elcampo, nombrecampo){
	if (!validarselectorconvalor(elcampo, nombrecampo)) {
		return false;
	}
	if ((isNaN(elcampo.options[elcampo.selectedIndex].value)) || (elcampo.options[elcampo.selectedIndex].value <= '')) {
		if (nombrecampo > '') {
			window.alert('ERROR: debe seleccionar una opción de la lista "' + nombrecampo + '".\nPor favor verifique los datos.');
		}
		return false;
	}
	
	if (parseFloat(elcampo.options[elcampo.selectedIndex].value) <= 0) {
		if (nombrecampo > '') {
			window.alert('ERROR: debe seleccionar una opción de la lista "' + nombrecampo + '".\nPor favor verifique los datos.');
		}
		return false;
	}
	
	return true;
}

