// .: Version 1.6.7 :. //

function JSA_DHTMLestableceFecha(id, aForm, aVar, dia, mes, anyo, bar) {
	eval('var v=document.all.'+aForm+'.'+aVar);
	if (dia*1<10)
		dia='0'+dia;
	if (mes*1<10)
		mes='0'+mes;
	v.value=dia+bar+mes+bar+anyo;
	JSA_DHTMLcompruebaFechaMinima(v, v.value);
	JSA_DHTMLcompruebaFechaMaxima(v, v.value);
	JSA_ocultarOculto(id);
	v.focus();
	v.blur();
}

function JSA_DHTMLCalendarioSiEsNecesario(id, aForm, aVar, mes, anyo, bar) {
	var d=document.getElementById(id);
	if (d.innerHTML.length<1024)
		d.innerHTML=JSA_DHTMLdibujaCalendario(id, aForm, aVar, mes, anyo, bar);	
}
function JSA_DHTMLCalendario(id, aForm, aVar, mes, anyo, bar) {
	var d=document.getElementById(id);
	d.innerHTML='(Error de JavaScript/JSA_DHTMLdibujaCalendario)';
	d.innerHTML=JSA_DHTMLdibujaCalendario(id, aForm, aVar, mes, anyo, bar);
}

function JSA_DHTMLdibujaCalendario(id, aForm, aVar, mes, anyo, bar) {
	var vmeses=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
	var vdias=[31,0,31,30,31,30,31,31,30,31,30,31];
	var oD=new Date(anyo, mes-1, 1);
	oD.od=oD.getDay()+1;
	var hoyMismo=new Date();
	var esHoy=(anyo==hoyMismo.getFullYear() && mes==hoyMismo.getMonth()+1)? hoyMismo.getDate() : 0;
	vdias[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;
	var mesAnterior=mes-1;
	if (mesAnterior<=0)
		mesAnterior+=12;
	var mesPosterior=mes+1;
	if (mesPosterior>12)
		mesPosterior-=12;
	var anyoAnterior=anyo;
	var anyoPosterior=anyo;
	if (mesAnterior==12)
		anyoAnterior--;
	if (mesPosterior==1)
		anyoPosterior++;
	var diasMesAnterior=vdias[mesAnterior-1];
	var diasMesPosterior=vdias[mesPosterior-1];
	var diasMes=vdias[mes-1];
	var t='<table cols="7" cellpadding="1"  border="0" cellspacing="1" class="bordeCalendarioOculto"><tr algin="center">';
	t+='<td colspan="7" align="center"  background="img/fondoMesCalendarioOculto.jpg">';
	t+='<table cellpadding="2" border="0" cellspacing="0" width="100%"><tr align="center">';
	t+='<td><a class="previoSiguiente" href="javascript:JSA_DHTMLCalendario(\''+id+'\',\''+aForm+'\',\''+aVar+'\','+mesAnterior+','+anyoAnterior+',\''+bar+'\');"><</a></td>';
	t+='<td class="tituloCalendarioOculto">'+vmeses[mes-1]+' - '+anyo+'</td>';
	t+='<td><a class="previoSiguiente" href="javascript:JSA_DHTMLCalendario(\''+id+'\',\''+aForm+'\',\''+aVar+'\','+mesPosterior+','+anyoPosterior+',\''+bar+'\');">></a></td>';
	t+='</tr></table>';
	t+='</td></tr><tr align="center">';
	for(var j=0;j<7;j++)
		t+='<td class="diasCalendarioOculto">'+"LMMJVSD".substr(j,1)+'</td>';
	t+='</tr><tr align="center">';
	for(var i=1;i<=42;i++) {
		var diaSemana=oD.od-1;
		if (diaSemana<=0)
			diaSemana+=7;
		if (i<=7)
			var xAlternativo=diasMesAnterior+i-diaSemana+1;
		else if (i-diaSemana+1> diasMes)
			var xAlternativo=i-diaSemana+1-diasMes;
		var xOrdinario=(i-diaSemana+1);
		var x='<td></td>';
		var DoIt=false;
		var xDia=xOrdinario;
		var xMes=mes;
		var xAnyo=anyo;
		eval('if (window.JSA_DHTMLfechaMinima_'+aVar+'===undefined) DoIt=true;');
		if (!DoIt) {
			eval('var fMin=window.JSA_DHTMLfechaMinima_'+aVar+';');
			var xbDia=xDia;
			if (xbDia*1<10) xbDia='0'+xbDia;
			var xbMes=xMes;
			if (xbMes*1<10) xbMes='0'+xbMes;
			var ftmp=xbDia+'/'+xbMes+'/'+xAnyo;
			if (JSA_DHTMLdiasEntreFechas(ftmp, fMin)<=0)
				DoIt=true;
		}
		if ((i-diaSemana>=0)&&(i-diaSemana<diasMes)) {
			if (DoIt)
				x='<td class="ordinarioCalendarioOculto"><a href="javascript:JSA_DHTMLestableceFecha(\''+id+'\',\''+aForm+'\',\''+aVar+'\','+xDia+','+xMes+','+xAnyo+',\''+bar+'\');" class="ordinarioCalendarioOculto">'+xOrdinario+'</a></td>';
			else
				x='<td class="prohibidoCalendarioOculto">'+xOrdinario+'</td>';
		} else {
			var xDia=xAlternativo;
			if (xDia>15) {
				var xMes=mesAnterior;
				var xAnyo=anyoAnterior;
			} else {
				var xMes=mesPosterior;
				var xAnyo=anyoPosterior;
			}
			if (DoIt)
				x='<td class="fueraDeMesCalendarioOculto"><a href="javascript:JSA_DHTMLestableceFecha(\''+id+'\',\''+aForm+'\',\''+aVar+'\','+xDia+','+xMes+','+xAnyo+',\''+bar+'\');" class="fueraDeMesCalendarioOculto">'+xAlternativo+'</a></td>';
			else
				x='<td class="prohibidoCalendarioOculto">'+xAlternativo+'</td>';
		}
		t+=x;
		if(((i)%7==0)&&(i<36))
			t+='</tr><tr align="center">';
	}
	return t+='</tr></table>';
}

function JSA_DHTMLdibujaCalendarioDesdeValor(id, aForm, aVar, bar) {
	var d=new Date();
	eval('var f=document.all.'+aForm+'.'+aVar+'.value;');
	var anyo=Math.round(f.substring(6,10));
	var mes=Math.round(f.substring(3,5));
	//alert('aForm('+aForm+')');
	
	JSA_DHTMLCalendario(id, aForm, aVar, mes, anyo, bar);
}

function JSA_DHTMLdiasEntreFechas(f0, f1) {
	var d0=new Date();
	var d1=new Date();

	d0.setYear(f0.substring(6,10));
	d0.setMonth(Math.round(f0.substring(3,5))-1);
	d0.setDate(Math.round(f0.substring(0,2)));
	
	d1.setYear(f1.substring(6,10));
	d1.setMonth(Math.round(f1.substring(3,5))-1);
	d1.setDate(Math.round(f1.substring(0,2)));

	
	var delta=(d1.getTime()-d0.getTime())/(1000*60*60*24);
	if (delta<0)
		delta=0;
	return Math.round(delta);
}
function JSA_DHTMLestableceDiasEntreFechasEn(vf0, vf1, v) {
	var delta=JSA_DHTMLdiasEntreFechas(vf0.value, vf1.value);
	v.value=delta;
}
function JSA_DHTMLcompruebaFechaMinima(v, f) {
	var ronr=false;
	eval('if (window.JSA_DHTMLfechaMinima_'+v.name+'===undefined) ronr=true;');
	if (ronr)
		return;
	eval('var fm=JSA_DHTMLfechaMinima_'+v.name);
	if (JSA_DHTMLdiasEntreFechas(fm, f)==0)
		v.value=fm;
}
function JSA_DHTMLcompruebaFechaMaxima(v, f) {
	var ronr=false;
	eval('if (window.JSA_DHTMLfechaMaxima_'+v.name+'===undefined) ronr=true;');
	if (ronr)
		return;
	eval('var fm=JSA_DHTMLfechaMaxima_'+v.name);
	if (JSA_DHTMLdiasEntreFechas(f, fm)==0)
		v.value=fm;
}
function JSA_DHTMLdesplazaFechaInferiormente(v0, v1) {
	if (JSA_DHTMLdiasEntreFechas(v0.value, v1.value)==0) {
		v1.value=v0.value;
		JSA_DHTMLcompruebaFechaMaxima(v1, v1.value);		
	}
}
function JSA_DHTMLdesplazaFechaSuperiormente(v0, v1) {
	if (JSA_DHTMLdiasEntreFechas(v0.value, v1.value)==0) {
		v0.value=v1.value;
		JSA_DHTMLcompruebaFechaMinima(v0, v0.value);
	}
}


