// JavaScript Document

/********* FUNCIONES COMUNES DE LA APLICACION **********/
function fValidarCampo(pForm,pCampo,pMsg) {
//comprueba si el pCampo está vacio o no
	var oCampo=document.forms[pForm][pCampo]; //document.getElementById(pCampo);
	var lOK=true;
	switch (oCampo.type) {
		case "select-one":
			if (oCampo.value=="#") lOK=false;
			break;
		default:
			if (String(oCampo.value).length==0) {
				lOK=false;
			}
			break;
	} //switch
	if (lOK) return true;
	if (pMsg.length>0) {
		alert(pMsg);
		oCampo.focus();
	}
	return false;
}

function fValidarObligatorios(pForm,pArrCampos,pAviso) {
//se le pasa como parametro un array con los nombre de los campos
//y validad si están vacios o no
	var lMsg="Campo obligatorio, debe introducir un valor";
	if (typeof(pAviso)!='undefined') {lMsg=(pAviso)?lMsg:"";}
	for (var i=0;i<pArrCampos.length;i++) {
		if (!fValidarCampo(pForm,pArrCampos[i],lMsg)) return false;
	}
	return true;
}

  function FechaHoy(){
    var today = new Date();
    var day   = today.getDate();
    var month = today.getMonth();
    var year  = today.getYear();
	return(day + "/" + month + "/" + year);
  }
  
  function ValorPre(obj,tipo) {
  	if (obj.value.length==0) {	
		if (tipo=="Fecha") {obj.value=FechaHoy()}
	}
  }


function Grabar(fnom,acc) {
	//si existe la funcion fValidar en la página, ejectuarla
	if (typeof(fValidar)=='function') {
		if (!fValidar()) return;
	}
	if (typeof(prep_checks)=='function') {
		prep_checks();
	}
	document.forms[fnom].elements["accion"].value = acc;
	document.forms[fnom].submit();
}

function BusqF3F4(fnom,acc,tabla,tipcampocod,pag) {
	//si existe la funcion fValidar en la página, ejectuarla
	if (typeof(fValidar)=='function') {
		if (!fValidar()) return;
	}
	if (typeof(prep_checks)=='function') {
		prep_checks();
	}
	document.forms[fnom].elements["tipo"].value = acc;
	document.forms[fnom].elements["tabla"].value = tabla;
	document.forms[fnom].elements["tipcamp"].value = tipcampocod;
	document.forms[fnom].elements["pag"].value = pag;
	document.forms[fnom].elements["accion"].value = acc;
	document.forms[fnom].submit();
}

function Informe() {
	if (typeof(fValidar)=='function') {
		if (!fValidar()) return;
	}
	if (typeof(prep_checks)=='function') {
		prep_checks();
	}
	document.forms["Ficha"].elements["accion"].value = "informe";
	document.forms["Ficha"].submit();
}

function Nuevo(fnom) {
	document.forms[fnom].reset()
}

function Borrar(fnom,acc) {
	if (confirm('Esta seguro que desea borrar el registro?')) {
		if (typeof(fValidar)=='function') {
			if (!fValidar()) return false;
		}
		if (typeof(prep_checks)=='function') {
			prep_checks();
		}
		document.forms[fnom].elements["accion"].value = acc
		document.forms[fnom].submit()
	}
}

function Historico() {
	if (document.forms["Ficha"].elements["nl"].value) {
		document.forms["Historico"].elements["nl"].value = document.forms["Ficha"].elements["nl"].value;
		document.forms["Historico"].submit();
	}
}

function AbrirInforme() {
//NO FUNCIONA CON OpenWin	
//OpenWin('00informe.php?','INFORME','width=402,height=302,scrollbars=no');

//SI FUNCIONA PERO SOBRE LA MISMA PAGINA
//document.location.href = "00informe.php";

//SOLO FUNCIONA PONIENDO EL METHOD COMO GET
	document.forms["Informe"].submit()
}

function AbrirEmail(datos) {
//OpenWin('00informe.php?','INFORME','width=402,height=302,scrollbars=no');

	//SI FUNCIONA PERO SOBRE LA MISMA PAGINA
	//alert("mailto:"+datos);
	document.location.href = "mailto:"+datos;

}

/*function OpenWin(url,name,attr) {
	var fw;
	if (attr) fw=window.open(url,name,attr);
	else if (name) fw=window.open(url,name);
	else if (url) fw=window.open(url);
	// _LvWinFocus(fw);
}*/

function IrA(url) {
	document.location.href = url;
}

	function fMostrarOcultarCapa(pId,pacc) {
		//alert(pId);
		var obj=document.getElementById(pId);
		var obj2=document.getElementById(pId+"_env");
		if (pacc) {obj.style.display ='block';obj2.value="1";}
		else {obj.style.display='none';obj2.value="0";}
	}

	function fAlternarCapa(pId,pacc) {
		var obj=document.getElementById(pId);
		if (obj.style.display =='none') {
			obj.style.display ='block';
		} else {
			obj.style.display='none';
		}
	}


function fDeseditarImp(pCampo) {  //ejecutar en el onfocus
	var oImp = document.getElementById(pCampo)
	if (String(oImp.value).length!=0) {
		oImp.value = String(oImp.value).replace(".","");
		oImp.value = String(oImp.value).replace(",",".");
		oImp.select();
	}
	return true;
}

function fEditarImp(pCampo) { //ejecutar en el onblur
	var oImp = document.getElementById(pCampo)
	if (String(oImp.value).length!=0) {
		oImp.value = String(oImp.value).replace(".",",");
	}
	return true;
}

function fValImp(pCampo) { //ejecutar en el onchange
	var oImp = document.getElementById(pCampo)
	var lVal=String(oImp.value);
	if (lVal.length==0) return true;
	if (isNaN(lVal)) {
		oImp.select();
		return false;
	}
	return true;
}

function fEditarNum(pCampo) { //ejecutar en el onblur
	var oImp = document.getElementById(pCampo)
	var lVal=String(oImp.value);
	if (lVal.length==0) return;
	lVal=lVal.replace(",",".");
	oImp.value = parseInt(lVal,10);
	return;
}

function fValNum(pCampo) { //ejecutar en el onchange
	var oImp = document.getElementById(pCampo)
	var lVal=String(oImp.value);
	if (lVal.length==0) return true;
	if (!isNaN(lVal)) return true;
	oImp.select();
	return false;
}

/***** FUNCIONES PARA LOS EVENTOS DE LOS CONTROLES *****/

//controles de tipo fecha
function onBFec(oCtrl) {
	oCtrl.value=edtFecha(oCtrl.value, "ddmmaaaa");
}

function onCFec(oCtrl) {
	var numFecha;
	if (! (numFecha = valFecha (oCtrl.value)) && (String(numFecha) != '')) {
		alert('Fecha no válida');
		oCtrl.select();
		return false;
	}
	oCtrl.value=numFecha;
	return true;
}

function onFFec(oCtrl) {
	oCtrl.value=desFecha(oCtrl.value);
	oCtrl.select();
}
//controles tipo DNI
function onBDni(oCtrl) {
	oCtrl.value=edtNumeDni(oCtrl.value);
}
function onFDni(oCtrl) {
	oCtrl.value=desNumeDni(oCtrl.value);
	oCtrl.select();
}

/***** FUNCIONES DE EDICION ******/

var SEPFECHAS   = '/';      // separador en fechas
var SEPDNIA     = '-';      // separador de número y letra en DNI's
      
function edtFecha(varFecha, strFormat)  { //edición de una fecha
	if (typeof varFecha == 'object') 
		varFecha = (varFecha.getDate() < 10 ? '0' : '') + varFecha.getDate() + '' + 
				   ((varFecha.getMonth() + 1) < 10 ? '0' : '') + (varFecha.getMonth() + 1) + 
				   varFecha.getFullYear();

	var regFecha  = /((\d{2})?(\d{2}))?(\d{4})/;
	var regFormat = /(d{1,2})?(m{1,3})?(a{4})/i;

	if (typeof(strFormat) == 'undefined') strFormat = 'ddmmaaaa';
	if (! regFormat.exec (strFormat)) return '';

	var strFecha  = '';
	var arrMeses  = new Array('ene','feb','mar','abr','may','jun','jul','ago','sep','oct','nov','dic');
	var strDay    = RegExp.$1;
	var strMonth  = RegExp.$2;
	var strYear   = RegExp.$3;

	if (! regFecha.exec (varFecha)) return '';
	if ((parseInt(RegExp.$2, 10) == 0) || 
		(parseInt(RegExp.$3, 10) == 0) ||
		(parseInt(RegExp.$4, 10) == 0))
	   return '';

	// día
	switch (strDay.length)
	   { case 1:  strFecha += new String(parseInt(RegExp.$2, 10)) + SEPFECHAS;
				  break;
		 case 2:  strFecha += (RegExp.$2.length < 2 ? '0' : '') + RegExp.$2 + SEPFECHAS;
				  break;
		 default:
				  break;
	   }

	// mes
	switch (strMonth.length)
	   { case 1:  strFecha += new String(parseInt(RegExp.$3, 10)) + SEPFECHAS;
				  break;
		 case 2:  strFecha += (RegExp.$3.length < 2 ? '0' : '') + RegExp.$3 + SEPFECHAS;
				  break;
		 case 3:  strFecha += arrMeses[parseInt(RegExp.$3, 10)-1] + SEPFECHAS;
				  break;
		 default: break;
	   }

	// año
	strFecha += RegExp.$4;

	return  strFecha;
	
 } // edtFecha()
   
function desFecha(kpfecha) { // desedición de una fecha
	var krsepafech = /\//g; // expresión regular para separador en fechas (no admite SEPFECHAS)
	return kpfecha.replace (krsepafech, '');
} // desFecha()

// edición de un DNI
function edtNumeDni(kpnumednia) { 
	var krnumednia = /(\d{8})([A-Z]?)/i;
	if (! krnumednia.test (kpnumednia)) return kpnumednia;
	krnumednia.exec (kpnumednia);
	return RegExp.$1 + (RegExp.$2=='' ? '' : SEPDNIA + RegExp.$2); 
} // edtNumeDnia(

// desedición de un dni
function desNumeDni(kpnumednia) { 
	var krsepadnia = new RegExp (SEPDNIA, 'g');
    return kpnumednia.replace (krsepadnia, '');
} // desNumeDnia()
	  
/***** FUNCIONES DE VALIDACION ******/
function valFecha(strFecha)  { 
	// validación de una fecha
	// entrada: un string/número con formato ddmmaaaa
	// salida : un string/número con formato ddmmaaaa

	// utilizamos Date para convertir la cadena de entrada en una fecha válida. No es 
	// una validación estricta pero sí asegura que devuelve una fecha válida. Por ejemplo,
	// si en kpfecha tenemos el 29022005 la función devolverá 01032005

	if (strFecha.length == 0) return '';
	var kwfecha = new Date (strFecha.substr(4, 4),
							parseFloat(strFecha.substr(2, 2)) - 1,
							strFecha.substr(0, 2)); 
	return isNaN(kwfecha) ? false : (kwfecha.getDate()       < 10 ? '0' : '') + kwfecha.getDate() +                // día: dd
								   ((kwfecha.getMonth() + 1) < 10 ? '0' : '') + (kwfecha.getMonth() + 1) +   // mes: mm
									 kwfecha.getFullYear() + '';                                             // año: aaaa
} // valFecha()


