/****************************************
* fecha.js       	 		            *
****************************************/

/*
Retorna un object de tipo Date, usando formato 'D/M/Y'
Valores de retorno
==================
Null si la fecha no es válida
Object de tipo "Date"
*/


function getDate(strFecha){
	var cx = strFecha.split('/');
	if ( cx.length != 3 ) return null;
	var f = new Date( cx[2], cx[1]-1, cx[0] ); 
	if ( 
		((f.getYear()!= cx[2])&((f.getYear()<1900?f.getYear()+1900:f.getYear())!= cx[2])) | 
		(f.getMonth() != cx[1]-1) |
		(f.getDate() != cx[0]) ) {
		return null;
	}
	return f;
}


/*
Comparar fechas, strFecha1 y strFecha2 deben ser cadenas
Valores de retorno
==================
-1 si strFecha1 es menor que strFecha2
 0 si strFecha1 es igual strFecha2
 1 si strFecha1 es mayor strFecha2
*/


function comparaDate(strFecha1, strFecha2){
	var f1 = getDate(strFecha1);
	var f2 = getDate(strFecha2);
	if ( f1==null | f2 == null) return "fecha incorrecta";
	if ( f1.getYear() < f2.getYear() ) return -1;
	else if ( f1.getYear() > f2.getYear() ) return 1;
	if ( f1.getMonth() < f2.getMonth() ) return -1;
	else if ( f1.getMonth() > f2.getMonth() ) return 1;
	if ( f1.getDate() < f2.getDate() ) return -1;
	else if ( f1.getDate() > f2.getDate() ) return 1;
	else return 0;
}


/*
Fecha actual como cadena
*/
function getCurrentDateToString(){
	var f = new Date();
	var mes = f.getMonth()+1;
	return (f.getDate() + '/' + mes + '/' + f.getYear());
}


function draw(){

	var month = document.getElementById("month");
	var year = document.getElementById("year");
	var days = document.getElementById("days");
	var hoy=new Date();

	while (days.rows.length>2) days.rows.item(2).parentNode.removeChild(days.rows.item(2),true);
	
	var intYear = parseInt(year.value);
	if ((intYear<1980) || (intYear>2999) || isNaN(intYear)) return;

	var fechaStr = "1/"+(parseInt(month.value)+1)+"/"+year.value;
	var fecha = getDate(fechaStr);
	
	if (fecha!=null){
		var i=null;
		var j=null;
		var d=1;
		var dayOfWeek=fecha.getDay();
		for (i=1;i<=6;i++){
			var row=days.insertRow(-1);
			for (j=0;j<=6;j++){
				var cell=row.insertCell(-1);
				d++;
				var strDay=new String(""+d-(dayOfWeek));
				var strMonth=new String(""+(fecha.getMonth()+1));
				if (strDay.length<2) strDay="0"+strDay; 
				if (strMonth.length<2) strMonth="0"+strMonth;
				var strYear=""+(fecha.getYear()<1900?fecha.getYear()+1900:fecha.getYear());
				var strDate=strDay+"/"+strMonth+"/"+strYear;
				var temp = getDate(strDate);
				if (temp!=null) {
					cell.align="right";
					cell.className="SF02";
					cell.setAttribute("rja-fecha",strDate);
					cell.onclick=ocultar;
					cell.innerHTML=d-dayOfWeek;
					if ( (temp.getDate()==hoy.getDate()) && (temp.getMonth()==hoy.getMonth()) && (temp.getYear()==hoy.getYear()) ) cell.className="SF03";
				}
			}
		}
	}

}

function ocultar(){
	if (this.tagName=="TD") document.getElementById("rja_fecha_div").rja_control.value=this.getAttribute("rja-fecha");
	document.getElementById("rja_fecha_div").parentNode.removeChild(document.getElementById("rja_fecha_div"));
}

function GETFECHA(control,event){
	obj = document.getElementById(control);
	
	if (document.getElementById("rja_fecha_div")!=null) document.getElementById("rja_fecha_div").parentNode.removeChild(document.getElementById("rja_fecha_div"));

	var oBody = document.body;
	var oDiv = document.createElement("DIV");
	oDiv.className="SF04";
	oDiv.id="rja_fecha_div";
	oDiv.rja_control=obj;
	oDiv.style.position="absolute";
	
	function mouseX(evt) {
	if (evt.pageX) return evt.pageX;
	else if (evt.clientX)
		 return evt.clientX + (document.documentElement.scrollLeft ?
		 document.documentElement.scrollLeft :
		 document.body.scrollLeft);
	else return null;
	}
	
	function mouseY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
		 return evt.clientY + (document.documentElement.scrollTop ?
		 document.documentElement.scrollTop :
		 document.body.scrollTop);
	else return null;
	}
	
	var X = mouseX(event)-100;
	var Y = mouseY(event)+10;
	
	oDiv.style.left = X+"px";
	oDiv.style.top = Y+"px";
	
	oBody.appendChild(oDiv);
	var t = document.createElement("TABLE");
	t.id="days";
	t.className="SF00"
	oDiv.appendChild(t);
	
	/*
		meses
	*/
	var r = t.insertRow(-1);
	var c = r.insertCell(-1);
	c.colSpan=7;

	var temp = document.createElement("TABLE");
	c.appendChild(temp);
	var r = temp.insertRow(-1);
	var c = r.insertCell(-1);

	var m = document.createElement("SELECT");	
	m.id="month";	
	m.className="SF06";
	m.onchange=draw;
	c.appendChild(m);

	createMonth(m,"Janeiro",0);
	createMonth(m,"Fevereiro",1);
	createMonth(m,"Março",2);
	createMonth(m,"Abril",3);
	createMonth(m,"Maio",4);
	createMonth(m,"Junho",5);
	createMonth(m,"Julho",6);
	createMonth(m,"Agosto",7);
	createMonth(m,"Setembro",8);
	createMonth(m,"Outubro",9);
	createMonth(m,"Novembro",10);
	createMonth(m,"Dezembro",11);

	var c = r.insertCell(-1);
	var i = document.createElement("IMG");
	i.src="/css/fecha/yearback.gif";
	i.style.border=0;
	i.className="SF05";
	i.onclick=backyear;
	c.appendChild(i);

	c = r.insertCell(-1);
	var y = document.createElement("INPUT");
	y.id="year";		
	y.className="SF06";
	y.type="text";
	y.maxlength=4;
	y.size=4;
	y.disabled = true;
	c.appendChild(y);

	var c = r.insertCell(-1);
	var i = document.createElement("IMG");
	i.src="/css/fecha/yearforw.gif";
	i.style.border=0;
	i.className="SF05";
	i.onclick=forwyear;
	c.appendChild(i);

	/*
		icon cerrar
	*/
	var c = r.insertCell(-1);
	var i = document.createElement("IMG");
	i.src="/css/fecha/close.gif";
	i.style.border=0;
	i.className="SF05";
	i.onclick=ocultar;
	c.appendChild(i);
	
	/*
		dias
	*/
	var r = t.insertRow(-1);
	r.className="SF01";
	createDay(r,"L");
	createDay(r,"M");
	createDay(r,"M");
	createDay(r,"J");
	createDay(r,"V");
	createDay(r,"S");
	createDay(r,"D");
	
	/*
		proponer valores
	*/
	var temp = getDate(obj.value)
	if (temp==null) temp = new Date();
	y.value=temp.getYear()<1900?temp.getYear()+1900:temp.getYear();
	m.value=temp.getMonth();
	
	/*
		mostrar calendario
	*/
	draw();

}

function createMonth(obj,mes,index){
	var o = document.createElement("OPTION");		
	o.value=index;
	o.className="SF00";
	o.appendChild(document.createTextNode(mes)); 
	obj.appendChild(o);
}

function createDay(obj,day){
	var c = obj.insertCell(-1);
	c.align="center";
	c.appendChild(document.createTextNode(day));
}

function backyear(){
	var year = document.getElementById("year");
	year.value = parseInt(year.value)-1;
	draw();
}

function forwyear(){
	var year = document.getElementById("year");
	year.value = parseInt(year.value)+1;
	draw();
}

