// Selector Fechas
// by William E. López L. (wellop83@gmail.com)

var nombre_meses 		= ["Enero", "Febrero", "Marzo", "Abril ", "Mayo", "Junio","Julio","Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
var nombre_dias  		= ["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sabado"];	
var verCaracteres 	= 2
var mes_seleccionado 	= 0;
var ano_seleccionado 	= 0;
var dia_seleccionado 	= 0;
var codigo_dias 		= "" ;
var curdate 			= new Date();
var id_texto 			= ""; // cuadro de tecto donde deja el value  si esta disable necesitas un hidden
var id_div_content 		= ""; // objeto el cual lleva la tabla dibujada
var id_div 				= ""; // objeto el cual lleva la tabla dibujada
//var Imagen_Fondo 		= "images/fondo_cielo.jpg" ; // imagen de fondo
var Color_De_Fondo		= "#FFCC33" ;// Color de fondo
var diahabil			= -1; // si solo se quiere habilitar un dia , en ese caso lunes o viernas nada mas
							  // lunes 1 , viernes 6
function inputFecha(id_text,id_td,div)
{
	var i;
	var j;
	//var disable_text;
		
	id_div			= div;
	id_div_content		= id_td;
	id_texto 		= id_text;
	disable_text 		= document.getElementById(id_text);	
	id_text_obj 		= document.getElementById(id_text);
	id_div_content_obj	= document.getElementById(id_div_content);
	id_div_obj			= document.getElementById(id_div);
	
	if (disable_text.value=="")
	{
		dia_seleccionado = curdate.getDate();
		mes_seleccionado = curdate.getMonth();
		ano_seleccionado = curdate.getFullYear();
	}
	else
	{
		dia_seleccionado = parseInt(disable_text.value.substr(0,2),10); 
		mes_seleccionado = parseInt(disable_text.value.substr(3,2),10)-1;
		ano_seleccionado = parseInt(disable_text.value.substr(6,4),10);
	}

	
	var por_pantalla ='';
	por_pantalla +=   '<table  bgcolor="#FFFFFF" width="195" height="225" border="0" cellspacing="0" cellpadding="0">';
	por_pantalla += '<tr><td colspan="7" align="center"><a  onClick="limpiar()"> [X] Cerrar </a></td></tr>';
	por_pantalla += '<tr><td height="10"></td></tr>';
	por_pantalla +=   '<tr >' ;
	por_pantalla +=		'<td colspan="4">' ;
	por_pantalla +=  			'<select  name="selector_mes" onChange="cambiaMes(this.selectedIndex)" style="width:100">' ;
							for (i=0;i<12;i++)
							{
									if (i==mes_seleccionado)
										SelectStr='Selected';
									else 
										SelectStr='';						
									por_pantalla +='<option '+SelectStr+' value >'+nombre_meses[i]+'</option>';
							}					
	por_pantalla += 			'</select>';
	por_pantalla +=   	'</td>';
	por_pantalla +=	'<td colspan="3">';
    	por_pantalla += '<select  name="selector_ano" onChange="cambia_ano(curdate.getFullYear()-this.selectedIndex+5)" style="width:100">';
				for (i=curdate.getFullYear()+5;i>1930;i--)
				{
						if (i==ano_seleccionado)
							SelectStr='Selected';
						else
							SelectStr='';						
						por_pantalla +='<option '+SelectStr+' value>'+i+'\ </option>';
				}					
	por_pantalla += '</select>';
	por_pantalla += '</td></tr>';
	por_pantalla += '<tr><td colspan="7"> <div id="medio">' + generaDias() + '\n</div>\n</td></tr>';	
	//por_pantalla += '<tr><td colspan="7" align="center"><a  onClick="limpiar()"> [X] Cerrar </a></td></tr>';
	por_pantalla += '</table>';
	
	//alert(id_text);
	id_div_content_obj.innerHTML 	= por_pantalla;
	id_div_obj.style.top		= findPosY(id_text_obj)+25;
	id_div_obj.style.left 		= findPosX(id_text_obj)-100;
	
	dia_str=(((dia_seleccionado)+100)+"").substr(1);
	mes_str=(((mes_seleccionado+1)+100)+"").substr(1);
	ano_str=(((ano_seleccionado)+10000)+"").substr(1);
	id_text_obj.value = dia_str+"/"+mes_str+"/"+ ano_str ;
	divVisibilityChangeAbs(id_div);
	
	//alert(id_div_obj.style.left+" , "+id_div_obj.style.top);
	//alert(document.getElementById(id_texto).style.top+" , "+document.getElementById(id_texto).style.left);
}
	
function generaDias(){ 
	var i;
	var j;
	var cont_str;
	var date = new Date();	
	date.setMonth(mes_seleccionado);
	date.setFullYear(ano_seleccionado);
	date.setDate(1);	
	dia_inicial 	= date.getDay();	
	en_blanco 		= dia_inicial - 0 ;
	dias_enmes 		= dias_en_mes(mes_seleccionado,ano_seleccionado);	
	cont 			= 1;	
	//bgcolor=\""+Color_De_Fondo+"\"
	//background='"+Imagen_Fondo+"'
	
	codigo_dias ='<table  align="center" border="1" width="90%" height="150" cellspacing="0" cellpadding="0">';
	codigo_dias += 	'<tr class="nombresdias">';
	for (i=0;i<7;i++)
	{
		codigo_dias  +='<td align="center" height="25"><font face="Verdana" size="1" color="#333333"><b>'+nombre_dias[i].substr(0,verCaracteres)+'</b></font></td>';
	} 
	codigo_dias += '</tr>';	
	for (i=0;i<6;i++)
	{		
		codigo_dias+='<tr>';		
		for(j=0;j<en_blanco;j++)
		{ 
			codigo_dias +='<td>&nbsp;</td>';
		}		
		for(j=en_blanco;j<7;j++)
		{
			if (cont <= dias_enmes)
			{
				if(dia_seleccionado==cont)				
					codigo_dias += '<td align="center"><a onClick="cambiaDia('+cont+')"><font color="#003568">'+ cont +'</font></a></td>';		
				else 
					codigo_dias += '<td align="center"><a onClick="cambiaDia('+cont+')"> '+ cont +'</a></td>';
				cont++;
			}
			else
			{
				codigo_dias += '<td>&nbsp;</td>';
			}
		}
		codigo_dias +='</tr>\n';
		en_blanco = 0;
	}
	codigo_dias +='</table>';
	return codigo_dias;
}

function cambiaDia(d){
	var mes_str, dia_str;
	dia_seleccionado = d;
	dia_str=(((dia_seleccionado)+100)+"").substr(1);
	mes_str=(((mes_seleccionado+1)+100)+"").substr(1);
	ano_str=(((ano_seleccionado)+10000)+"").substr(1);
	document.getElementById("medio").innerHTML = generaDias();	
	document.getElementById(id_texto).value = dia_str+"/"+mes_str+"/"+ ano_str ;
}

function cambiaMes (mes)
{
	var mes_str, dia_str;
	mes_seleccionado = mes;
	dia_str=(((dia_seleccionado)+100)+"").substr(1);
	mes_str=(((mes_seleccionado+1)+100)+"").substr(1);
	ano_str=(((ano_seleccionado)+10000)+"").substr(1);
	document.getElementById("medio").innerHTML = generaDias();		
	document.getElementById(id_texto).value = dia_str+"/"+mes_str+"/"+ ano_str ;
}
	
function cambia_ano(ano){
	var mes_str, dia_str;
	ano_seleccionado = ano;
	dia_str=(((dia_seleccionado)+100)+"").substr(1);	
	mes_str=(((mes_seleccionado+1)+100)+"").substr(1);
	ano_str=(((ano_seleccionado)+10000)+"").substr(1);
	document.getElementById("medio").innerHTML = generaDias();
	document.getElementById(id_texto).value = dia_str+"/"+mes_str+"/"+ ano_str ;
}

function dias_en_mes(m,a){
	var dias_normales=[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];	
	if (bisiesto(a)){ 
		dias_normales[1]=29 ;
	}	
	return dias_normales[m];	
}


function bisiesto(a){	
	// Un año es bisiesto si es divisible por 4, excepto aquellos divisibles por 100 pero no por 400.
		return ( ((a%4)==0) && (! ( ((a%100)==0) && ((a%400)!=0) ) ) ) 	;
}//*/


function limpiar(){
	divVisibilityChangeAbs(id_div);			
}

function no_valido(dia){
	 alert("Para esta selección solo están permitidos los días:  " + nombre_dias[diahabil]);
}

function fecha( cadena )
{
	var separador = "/";
		if ( cadena.indexOf( separador ) != -1 ) {
				 var posi1 = 0;
				 var posi2 = cadena.indexOf( separador, posi1 + 1 );
				 var posi3 = cadena.indexOf( separador, posi2 + 1 );
				 this.dia = cadena.substring( posi1, posi2 );
				 this.mes = cadena.substring( posi2 + 1, posi3 );
				 this.anio = cadena.substring( posi3 + 1, cadena.length );
		} else {
				 this.dia = 0
				 this.mes = 0
				 this.anio = 0   
		}
}


function resta_fechas(a,b,tipo) {  
			
	var fecha1 = new fecha(a); 
	var fecha2 = new fecha(b);	
	
	var miFecha1 = new Date(fecha1.anio, fecha1.mes, fecha1.dia );
	var miFecha2 = new Date(fecha2.anio, fecha2.mes, fecha2.dia );		
	
	var diferencia = miFecha1.getTime() - miFecha2.getTime() ;
	var dias 	 = Math.floor(diferencia / (1000 * 60 * 60 * 24));
	var semanas  = Math.floor(diferencia / (1000 * 60 * 60 * 24 * 7));
	
	if (tipo == "dia") return dias  ;
	if (tipo == "sem") return semanas ;
}
