// Archivo JScript

// <!CDATA[
/********************************************************************************/
/*																				*/
/*		Archivo de funciones Genericas 											*/
/*									            								*/
/********************************************************************************/

// Función que envia a la impresora un documento
function printit() {
	if (window.print) {
		window.print();  
	} 
	else {
		var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0 CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';
		document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
		WebBrowser1.ExecWB(6, 2);  //Use a 1 vs. a 2 for a prompting dialog box    WebBrowser1.outerHTML = "";  
	}
}

// Abre una ventana flotante con los parámetros pasados
function OpenWindow(sUrl, sName, w, h, scroll) {

	var winX = (screen.width)  ? (screen.width - w) / 2 : 0;
	var winY = (screen.height) ? (screen.height - h) / 2 :0 ;
	
	winprops  = 'height=' + h + ',width=' + w + ',top=' + winY + ',left=' + winX + ', scrollbars=' + scroll + ',resizable=' + scroll;
	winnewsub = window.open(sUrl, sName, winprops);
	
	if (parseInt(navigator.appVersion) >= 4) {
		winnewsub.window.focus();
	}
}


function ignoreSpaces(string) {
	var temp = "";
	string = '' + string;
	splitstring = string.split(" ");
	
	for(i = 0; i < splitstring.length; i++) {
		temp += splitstring[i];
	}
	return temp;
}

//Función para chequear una dirección email
function checkEmail(idCampo, nombreCampo, obligatorio) {
		
	var elemento = document.getElementById(idCampo);	
	
	if (!obligatorio && ignoreSpaces(elemento.value) == "") {	
		return true;
	}	
	
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(elemento.value)){
		return true;
	}
	
/*	var mensaje="La direción de correo -" + nombreCampo + "- introducida no es correcta.\n"
		mensaje += "Es posible que haya introducido carácteres no válidos.\n"
		mensaje += "Por favor, escríbala de nuevo."
		
	alert(mensaje);
	elemento.focus();
*/	
	return false;
}

function validaURL(idCampo, nombreCampo, obligatorio) {
	
	var elemento = document.getElementById(idCampo);	
	
	if (!obligatorio && ignoreSpaces(elemento.value) == "") {	
		return true;
	}	
	
	if (/\w+:\/\/\w+/.test(elemento.value)){
		return true;
	}
	
	var mensaje="La URL introducida en el campo -" + nombreCampo + "- no es correcta.\n"
		mensaje += "Es posible que haya introducido caracteres no válidos.\n"
		mensaje += "Por favor, escríbala incluyendo http:// delante."
		
	alert(mensaje);
	elemento.focus();
	
	return false;
}


function y2k(number) {
	return (number < 1000) ? number + 1900 : number;
}

function isDate (day, month, year) {
	// checks if date passed is valid
	// will accept dates in following format:
	// isDate(dd,mm,ccyy), or
	// isDate(dd,mm) - which defaults to the current year, or
	// isDate(dd) - which defaults to the current month and year.
	// Note, if passed the month must be between 1 and 12, and the
	// year in ccyy format.
	var today = new Date();
	year = ((!year) ? y2k(today.getYear()):year);
	month = ((!month) ? today.getMonth():month - 1);
	
	if (!day) return false;
	var test = new Date(year,month,day);
	
	if ( (y2k(test.getYear()) == year) && (month == test.getMonth()) && (day == test.getDate()) ) {
		return true;
	} 
	else {
		return false;
	}
}

//Función que valida una fecha compuesta por 3 campos (dia, mes, año)
function validarFecha(prefijoCampo, nombreCampo, obligatorio) {	
	var dia  = document.getElementById(prefijoCampo + '_dia');
	var mes  = document.getElementById(prefijoCampo + '_mes');
	var anio = document.getElementById(prefijoCampo + '_anio');	

	if (!obligatorio && ignoreSpaces(dia.value) == "" && ignoreSpaces(mes.value) == "" && ignoreSpaces(anio.value) == "") {
			return true;
	}
		
	if (ignoreSpaces(dia.value) == "" || ignoreSpaces(mes.value) == "" || ignoreSpaces(anio.value) == "") {		
		alert("El campo -" + nombreCampo + "- está incompleto.");
		dia.focus();
		return false;	
	}
	else if (isNaN(dia.value) || isNaN(mes.value) || isNaN(anio.value)) {
		alert("El campo -" + nombreCampo + "- debe cumplir el formato correcto (dd/mm/aaaa).");
		dia.focus();
		return false;	
	}
	else if(anio.value < 1900)
	{
		alert("El año de -" + nombreCampo + "- debe superior o igual a 1900.");
		anio.focus();
		return false;				
	}	
	else if ( !isDate(dia.value, mes.value, anio.value) ) {
		alert("Introduzca una fecha válida para -" + nombreCampo + "-, esta no es una fecha real (dd/mm/aaaa).");
		dia.focus();
		return false;
	}		
	
	return true;
}

//Función que valida un rango de fechas, comprobando que la primera no es anterior a la segunda.
//Se usa por ejemplo para fechas de inicio y fin.	
function validarRangoFechas(prefijoCampoIni, prefijoCampoFin, nombreCampoIni, nombreCampoFin) {
	
	if (prefijoCampoIni == "system"){
		
		diaHoy = new Date();
		
		var diaIni  = diaHoy.getDate();
		var mesIni  = diaHoy.getMonth();
		var anioIni = diaHoy.getYear();

	} else {
		
		var diaIni  = document.getElementById(prefijoCampoIni + '_dia');
		var mesIni  = document.getElementById(prefijoCampoIni + '_mes');
		var anioIni = document.getElementById(prefijoCampoIni + '_anio');	
	}

	// Si no se completó la primera fecha salimos
	if (ignoreSpaces(diaIni.value) == "" && ignoreSpaces(mesIni.value) == "" && ignoreSpaces(anioIni.value) == "") {
			return true;
	}	

	var diaFin  = document.getElementById(prefijoCampoFin + '_dia');
	var mesFin  = document.getElementById(prefijoCampoFin + '_mes');
	var anioFin = document.getElementById(prefijoCampoFin + '_anio');	

	// Si no se completó la segunda fecha salimos
	if (ignoreSpaces(diaFin.value) == "" && ignoreSpaces(mesFin.value) == "" && ignoreSpaces(anioFin.value) == "") {
			return true;
	}	
	
	var today;
	var dia;
	var mes;
	var anio;

	// Calculamos la primera de inicio
	dia = diaIni.value;
	mes = mesIni.value;
	anio = anioIni.value;

	mes = mes -1
	var fechaIni = new Date(anio, mes, dia);	

	// Calculamos la segunda fecha
	dia = diaFin.value;
	mes = mesFin.value;
	anio = anioFin.value;
	
	mes = mes -1	
	var fechaFin = new Date(anio, mes, dia);	
	
	// Comprobamos si la primera es mayor que la segunda
	if (fechaIni > fechaFin) {
		alert("El campo " + nombreCampoIni + " es posterior a la fecha " + nombreCampoFin + ".");
		return false;
	}
		
	return true;
}

//Función que devuelve el número de dias entre dos fechas.
//Fechas de inicio y fin deben tener formato dd/mm/aaaaa.	
function numDiasEntreFechas(fechaIni, fechaFin){

    sFechaIni = fechaIni.split("/");
    sFechaFin = fechaFin.split("/");

    var ini = new Date(sFechaIni[2],sFechaIni[1],sFechaIni[0]);
    var fin = new Date(sFechaFin[2],sFechaFin[1],sFechaFin[0]);
    
    return Math.round(Math.round( (((fin - ini) / 1000 / 60) / 60) ) / 24);
}

//Función que valida que una cadena de texto no esté vacía
function validarString(idCampo, nombreCampo) {
	
	var elemento = document.getElementById(idCampo);
	
	if (ignoreSpaces(elemento.value) == "") {
		alert("Debe completar el campo requerido -" + nombreCampo + "-");
		elemento.focus();
		return false;
	}
	
	return true;
}

//Función que valida si un valor es numérico
function validarNumeroEntero(idCampo, nombreCampo, obligatorio) {
	var elemento = document.getElementById(idCampo);
	
	tmp = elemento.value;
	tmp = tmp.replace('.', '*');		
	tmp = tmp.replace(',', '*');
	
	if (!obligatorio && ignoreSpaces(tmp) == "") {	
		return true;
	}

	if (ignoreSpaces(tmp) == "") {
		alert("Debe completar el campo requerido -" + nombreCampo + "-");
		elemento.focus();
		return false;
	}
	else if (isNaN(tmp) ) {
		alert("El campo -" + nombreCampo + "- debe ser numérico, sin decimales ni separador de miles.");
		elemento.focus();
		return false;		
	}

	return true;
}

//Función que valida si un valor es numérico
function validarNumero(idCampo, nombreCampo, obligatorio) {
	var elemento = document.getElementById(idCampo);
	
	tmp = elemento.value;
	tmp = tmp.replace('.', '*');		
	tmp = tmp.replace(',', '.');
	
	if (!obligatorio && ignoreSpaces(tmp) == "") {	
		return true;
	}

	if (ignoreSpaces(tmp) == "") {
		alert("Debe completar el campo requerido -" + nombreCampo + "-");
		elemento.focus();
		return false;
	}
	else if (isNaN(tmp) ) {
		alert("El campo -" + nombreCampo + "- debe ser numérico.\n" + "Use cifras sin separador de miles y use 'coma' para separador decimal.");
		elemento.focus();
		return false;		
	}

	return true;
}

//Función que valida una lista desplegable select
function validarSelect(idCampo, nombreCampo, obligatorio)
{
	var elemento = document.getElementById(idCampo);		
	var valor = elemento.options[elemento.selectedIndex].value;
	valor = valor + '';
	
	if (obligatorio && valor == '-1') {
		alert("El campo -" + nombreCampo + "- es obligatorio.");
		elemento.focus();
		return false;
	}else{
		return true;
	}
		
	if (valor == '0') {
		alert("El campo -" + nombreCampo + "- es obligatorio. Deben existir registros de este tipo.");
		elemento.focus();
		return false;
	}
	
	return true;
}
	
// ]]>