/****************************************************************************************************/
/*																									*/
/*		Archivo de funciones Genericas usadas en el portal											*/
/*																									*/
/****************************************************************************************************/

/*function NewWindow(myurl,myname, w, h, scroll){
	  var winl = (screen.width)  ? (screen.width - w) / 2 : 0;
	  var wint = (screen.height) ? (screen.height - h) / 2 :0;
	  
	  winprops='height='+h+',width='+w+',top='+wint+',left='+winl+', scrollbars='+scroll+',resizable';	  
	  if (myurl.indexOf('?') == -1){
		myurl += '?Ref=<%=Ref%>';
	  }
	  myurl += '&Tipo=<%=Tipo%>&Item=<%=Item%>';	  
	  win =window.open(myurl,myname,winprops);	  
	  if (parseInt(navigator.appVersion) >= 4){
		win.window.focus();
	  }
}
*/

function NewWindow(myurl,myname, w, h, scroll) {
	var winl = (screen.width)  ? (screen.width - w) / 2 : 0;
	var wint = (screen.height) ? (screen.height - h) / 2 :0 ;
	
	winprops='height='+h+',width='+w+',top='+wint+',left='+winl+', scrollbars='+scroll+',resizable';
	winnewsub =window.open(myurl,myname,winprops);
	if (parseInt(navigator.appVersion) >= 4) {
		winnewsub.window.focus();
	}
}


// Función que manda 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 = "";  
	}
}

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 chquear 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 caracteres 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(campo, nombreCampo, obligatorio) {	
	var campo  = document.getElementById(campo);

	if (!obligatorio && ignoreSpaces(campo.value) == "") {
		return true;
	}
	else if (obligatorio && ignoreSpaces(campo.value) == "") {
		alert("El campo -" + nombreCampo + "- no está completado.");
		campo.focus();
		return false;		
	}
		
	//Comprobamos que se mete una fecha de tipo dd/mm/aaaa	
	var tmp = campo.value.split("/");
	
	if (tmp.length != 3) {
		alert("El campo -" + nombreCampo + "- está mal escrito.\nFormato correcto (dd/mm/aaaa)");
		campo.focus();
		return false;
	}
	
	var dia 	= tmp[0];
	var mes 	= tmp[1];
	var anio 	= tmp[2]; 
		
	if (ignoreSpaces(dia) == "" || ignoreSpaces(mes) == "" || ignoreSpaces(anio) == "") {		
		alert("El campo -" + nombreCampo + "- está incompleto.");
		campo.focus();
		return false;	
	}
	else if (isNaN(dia) || isNaN(mes) || isNaN(anio)) {
		alert("El campo -" + nombreCampo + "- debe cumplir el formato correcto (dd/mm/aaaa).");
		campo.focus();
		return false;	
	}
	else if(anio < 1900)
	{
		alert("El año de -" + nombreCampo + "- debe superior o igual a 1900.");
		campo.focus();
		return false;				
	}	
	else if ( !isDate(dia, mes, anio) ) {
		alert("Introduzca una fecha válida para -" + nombreCampo + "-, esta no es una fecha real (dd/mm/aaaa).");
		campo.focus();
		return false;
	}		
	
	return true;
}

//Función que valida un rango de fechas, comprobando que la primera es anterior a la segunda.
//Se usa por ejemplo para fechas de inicio y fin.	
function validarRangoFechas(CampoIni, CampoFin, nombreCampoIni, nombreCampoFin) {
	
	if (CampoIni == "system"){
		
		var diaHoy = new Date();
		
		var diaIni  = diaHoy.getDate();

		var mesIni  = diaHoy.getMonth();
			mesIni = mesIni + 1;

		var anioIni = diaHoy.getYear();
				
		if (anioIni < 1900) {
			anioIni = anioIni + 1900;
		}

	} 
	else {

		var CampoIni  = document.getElementById(CampoIni);

		//Comprobamos que se mete una fecha de tipo dd/mm/aaaa	
		var tmp = CampoIni.value.split("/");
		
		var diaIni 	= tmp[0];	
		var mesIni 	= tmp[1];
		var anioIni	= tmp[2]; 
	}


	var CampoFin = document.getElementById(CampoFin);	


	// Si no se completó la primera fecha salimos
	if (ignoreSpaces(diaIni) == "" && ignoreSpaces(mesIni) == "" && ignoreSpaces(anioIni) == "") {
		return true;
	}	


	//Comprobamos que se mete una fecha de tipo dd/mm/aaaa	
	var tmp = CampoFin.value.split("/");
	
	var diaFin 	= tmp[0];	
	var mesFin 	= tmp[1];
	var anioFin	= tmp[2]; 


	// Si no se completó la segunda fecha salimos
	if (ignoreSpaces(diaFin) == "" && ignoreSpaces(mesFin) == "" && ignoreSpaces(anioFin) == "") {
			return true;
	}	
	
	var today;
	var dia;
	var mes;
	var anio;

	// Calculamos la primera de inicio
	dia = diaIni;
	mes = mesIni;
	anio = anioIni;

	mes = mes -1
	var fechaIni = new Date(anio, mes, dia);	

	// Calculamos la segunda fecha
	dia = diaFin;
	mes = mesFin;
	anio = anioFin;
	
	mes = mes -1	
	var fechaFin = new Date(anio, mes, dia);	
	
	// Comprobamos si la primera es mayor que la segunda
	if (fechaIni > fechaFin) {
		if (CampoIni == "system"){
			alert("El campo -" + nombreCampoFin + "- debe ser posterior a la fecha de hoy.");
			return false;			
		}
		else {
			alert("El campo -" + nombreCampoIni + "- es posterior a la fecha " + nombreCampoFin + ".");
			return false;
		}
	}
		
	return true;
}

//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;
}
	