// JavaScript Document
/**************************************************************
Calendario con efemérides y eventos. Script por Tunait! (21/4/2007)
Script de libre uso con la condición de que permanezcan intactas estas líneas, osea, los créditos.
Distribución no autorizada en sitios de script sin previa autorización
Ver condiciones de uso en http://javascript.tunait.com/
tunait@yahoo.com 
****************************************************************/
/*No tocar nada de aquí. La configuración en el archivo calendarioefemerides_config.js */
var hoy = new Date();
var mes = hoy.getMonth();
var dia = 1;
var anio = hoy.getFullYear();
var diasSemana = new Array ('al','ar','az','og','ol','lr','ig');
var meses = new Array('Urtarrila','Otsaila','Martxoa','Apirila','Maiatza','Ekaina','Uztaila','Abuztua','Iraila','Urria','Azaroa','Abendua');
var tunIex=navigator.appName=="Microsoft Internet Explorer"?true:false;
if(tunIex && navigator.userAgent.indexOf('Opera')>=0){tunIex = false;}
tunOp = navigator.userAgent.indexOf('Opera')>=0 ? true: false;
var tunSel = false;
var gHoy = 0;
var anCelda, alCelda, carga =false;
function tunCalendario(){
	if(!carga) escribeControles();
	dia2 = dia;
	tab = document.createElement('table');
	tab.id = 'calendario';
	document.getElementById(idContenedor).appendChild(tab);
	tcabeza = document.createElement('thead');
	tab.appendChild(tcabeza);
	fCalendario = document.createElement('div');
	fCalendario.style.position= 'relative';
	fCalendario.className = "cuadroTexto";
	fCalendario.id = 'tunCuadroTexto';
	document.getElementById(idContenedor).appendChild(fCalendario);
	fi2 = document.createElement('tr');
	fi2b = document.createElement('th');
	fi2b.colSpan = 7;
	fi2.id = 'mesCalendario';
	fi2b.appendChild(document.createTextNode(meses[mes] + "  -  " + anio));
	fi2.appendChild(fi2b);
	tcabeza.appendChild(fi2);
	fi = document.createElement('tr');
	tcabeza.appendChild(fi);
	for(m=0;m<7;m++){
		ce = document.createElement('th');
		ce.appendChild(document.createTextNode(diasSemana[m]));
		fi.appendChild(ce);
		}
		var escribe = false;
		var escribe2 = true;
	fecha = new Date(anio,mes,dia);
	var d = fecha.getDay()-1 ;
	if(d<0){d = 6;}
	tcuerpo = document.createElement('tbody');
	tab.appendChild(tcuerpo);
	while(escribe2){
	fi = document.createElement('tr');
	co = 0;
		for(t=0;t<7;t++){
			ce = document.createElement('td');
			if(escribe && escribe2){
				fecha2 = new Date(anio,mes,dia);
			
				/*****EVENTOS****/
				var _anio = fecha2.getFullYear().toString();
				var _mes = fecha2.getMonth() + 1;
				_mes = _mes < 10 ? '0' + _mes : _mes.toString();
				var _dia = fecha2.getDate();
				_dia = _dia < 10 ? '0' + _dia : _dia.toString();
				buscaEv = buscaEvento(_anio + _mes + _dia, _mes + _dia);
				if(buscaEv){
					_titl = '';
					for( var x in buscaEv){
						//_titl += buscaEv[x].titulo;
						_titl += buscaEv[x].titulo;
						_titl += x < (buscaEv.length - 1) ? '; ' : '';
					}
				}
				if(_titl != 'horario1' && _titl != 'horario2'){
					ce.className = 'cerrado';
				}else if (_titl != 'cerrado' && _titl != 'horario1'){
					ce.className = 'horario2';
				}else{
					ce.className = 'horario1';
				}
				/****FIN EVENTOS****/
			
				if(fecha2.getMonth() != mes){escribe2 = false;}
				else{
					ce.appendChild(document.createTextNode(dia));
					dia++;
					co++;
					ce.style.cursor = calendarioCursor;
					ce.onclick = marcaCalendario;
				}
			}
			if(d == t && !escribe){
				ce.appendChild(document.createTextNode(dia));
				/*****EVENTOS****/
				var _anio = anio;
				var _mes = mes + 1;
				_mes = _mes < 10 ? '0' + _mes : _mes.toString();
				var _dia = dia;
				_dia = _dia < 10 ? '0' + _dia : _dia.toString();
				buscaEv = buscaEvento(_anio + _mes + _dia, _mes + _dia);
				if(buscaEv){
					_titl = '';
					for( var x in buscaEv){
						_titl += buscaEv[x].titulo;
						_titl += x < (buscaEv.length - 1) ? '; ' : '';
					}
				}
				if(_titl != 'horario1' && _titl != 'horario2'){
					ce.className = 'cerrado';
				}else if (_titl != 'cerrado' && _titl != 'horario1'){
					ce.className = 'horario2';
				}else{
					ce.className = 'horario1';
				}
				/****FIN EVENTOS****/
				dia++;co++;
				escribe = true;
				ce.style.cursor = calendarioCursor;
				ce.onclick = marcaCalendario;
			}
			else{
				ce.appendChild(document.createTextNode(" "));
			}
			fi.appendChild(ce);
			if(hoy.getDate()+1 == dia && mes == hoy.getMonth() && anio == hoy.getFullYear() && !gHoy){
				ce.className = "Hoy";
				gHoy = 1;
				if(buscaEv){ escribeEvento(buscaEv);}
				else{ escribeFecha(_anio + _mes + _dia); enlaceListarMes();}

			}
		}
			
		if(co>0){tcuerpo.appendChild(fi);}
		
		}
	dia = dia2;
}
function marcaCalendario(){
	/*eventos*/
	var _anio = anio.toString();
	var _mes = mes + 1;
	_mes = _mes < 10 ? '0' + _mes  : _mes.toString();
	var _dia = this.firstChild.nodeType == 1 ? this.firstChild.nextSibling.nodeValue : this.firstChild.nodeValue;
	_dia = _dia < 10 ? '0' + _dia  : _dia.toString();
	hayEvento = buscaEvento(_anio + _mes + _dia, _mes + _dia);
	/*fin eventos */
	if(hayEvento){ escribeEvento(hayEvento);}
	else {escribeFecha(_anio + _mes + _dia); enlaceListarMes();}
	ceSe = document.createElement('div');
	ceSe.id = "tunSeleccionado";
	with(ceSe.style){
		borderWidth = "1px";
		borderStyle = "solid";
		borderColor = "#ff0000";
		width = 10  + "px";
		height = 25 + "px";
		position = "absolute";
		zIndex = "1000";
		}
	if(tunSel){
		tunSel.removeChild(tunSel.firstChild);
	}
	tunSel = this;
	this.insertBefore(ceSe,this.firstChild);
	with(ceSe.style){
		width = this.scrollWidth  + "px";
		marginLeft = "-" + (calendarioPaddingCelda + 5) + "px";
		marginTop = "-" + (calendarioPaddingCelda ) + "px";
	}
}

function borra(){
	document.getElementById(idContenedor).removeChild(document.getElementById('calendario'));
	document.getElementById(idContenedor).removeChild(document.getElementById('tunCuadroTexto'));
}
function establecerFecha(){
	tunFe = new Date();
	document.getElementById('tunMes').options[tunFe.getMonth()].selected = true;
	document.getElementById('tunAnio').value = tunFe.getFullYear();
}

function buscaEvento(f, fc){
	try{
		eval(meses[mes].toLowerCase());
	}
	catch(error){
		return false;
	}
	var _array = eval(meses[mes].toLowerCase());
	var _eventos = new Array();
	for(var m in _array){
		if(_array[m].fecha == f || _array[m].fecha == fc){
			_eventos.push(_array[m]);
		}
	}
	return _eventos.length > 0 ? _eventos : false;
}

function escribeEvento(obj){
	escribeFecha(obj[0].fecha);
	escribeEvento2(obj, false);
}
function escribeEvento2(obj, fec){
	var idatzita = false;
	for(var w in obj){
		var ti = document.createElement(tagTitulos);
		if(fec){
			_fec = formatoFecha(obj[w].fecha);
			_d = _fec.substr(0,2);
			ti.appendChild(document.createTextNode(_d + " - "));
		}
		var o = ti;
		if(idatzita == false){
			o.appendChild(document.createTextNode(obj[w].titulo));
		}
		document.getElementById('tunCuadroTexto').appendChild(ti);
		var te = document.createElement('p');
		te.appendChild(document.createTextNode(obj[w].texto));
		document.getElementById('tunCuadroTexto').appendChild(te);
	}
	enlaceListarMes();
}
function enlaceListarMes(){
	try{
		eval(meses[mes].toLowerCase());
	}
	catch(error){
		return false;
	}
	var verTodos = document.createElement('strong');
	verTodos.style.cursor = 'pointer';
	verTodos.style.display = 'block';
	//verTodos.appendChild(document.createTextNode(textoVerTodos));
	verTodos.onclick = escribirEventosMes;
	document.getElementById('tunCuadroTexto').appendChild(verTodos);
	
}
function escribeFecha(fecha){
	lNodos = document.getElementById('tunCuadroTexto').childNodes.length;
	if(lNodos){
		for(var m = 0; m < lNodos; m++){
			document.getElementById('tunCuadroTexto').removeChild(document.getElementById('tunCuadroTexto').childNodes[0]);
		}
	}
	var fe = document.createElement('strong');
	fe.appendChild(document.createTextNode(formatoFecha(fecha)));
	document.getElementById('tunCuadroTexto').appendChild(fe);
	document.getElementById('fecha').value= anio.toString() + '-' + fecha.substring(0,2) + '-' + fecha.substring(2,4);
}
function formatoDiaMes(v){
	v = v < 10 ? '0' + v : v ;
	return v;
}
function formatoFecha(fecha){ 
	if(fecha.toString().length == 8){
		var an = fecha.toString().substring(0,4);
		var me = fecha.toString().substring(4,6);
		var di = fecha.toString().substring(6,8);
	}
	else{
		if(fecha.toString().length == 6){
			var an = fecha.toString().substring(0,4);
			var me = fecha.toString().substring(4,6);
			var di = '';
		}
		else{
			var an = '';
			var me = fecha.toString().substring(0,2);
			var di = fecha.toString().substring(2,4);
		}
	}
	me = eval(me);
	me = meses[me-1];
	return di + " " + me + " " + an;
}

function cambiarMes(val){
	var _anio = document.getElementById('tunAnio').value;
	var _mes = document.getElementById('tunMes').options[document.getElementById('tunMes').selectedIndex].value;
	var _dia = 1;
	eval('_mes' + val + val);
	_mes = _mes < 0 && val == '-' ? 11 : _mes;
	_mes = _mes > 11 && val == '+' ? 0 : _mes;
	if(eval(_mes) == 0 && val == '+') _anio++;
	if(eval(_mes) == 11 && val == '-') _anio--;
	document.getElementById('tunMes').options[_mes].selected = true;
	document.getElementById('tunAnio').value = _anio;
	mes = _mes;
	anio = _anio;
	borra();
	gHoy = 0;
	tunCalendario();
	escribeFecha(_anio.toString() + formatoDiaMes(_mes + 1)); enlaceListarMes();
}
function escribirEventosMes(){
	escribeFecha(anio.toString() + formatoDiaMes((mes + 1).toString()));
	escribeEvento2(eval(meses[mes].toLowerCase()), true);
}

function escribeControles(){
	var obj = document.getElementById(idContenedor);
	var sp = document.createElement('span');
	sp.className = "cambiaMes" ;
	sp.onclick = function() {cambiarMes('-');}
	sp.appendChild(document.createTextNode('<<'));
	obj.appendChild(sp);
	var sel = document.createElement('select');
	sel.className = 'selectores';
	sel.id = 'tunMes';
	sel.onchange = function(){
		mes = this.selectedIndex; borra(); tunCalendario();
	}
	for(var p in meses){
		opt = document.createElement('option');
		opt.value = p;
		opt.appendChild(document.createTextNode(meses[p]));
		sel.appendChild(opt);
	}
	obj.appendChild(sel);
	var campo = document.createElement('input');
	campo.type = 'text';
	campo.id = 'tunAnio';
	campo.className = "selectores";
	campo.maxlength = "4" ;
	campo.size = 4;
	campo.onblur = function(){
		if(!isNaN(this.value)){anio=this.value;borra();tunCalendario();}
	}
	obj.appendChild(campo);
	var sp = document.createElement('span');
	sp.className = "cambiaMes" ;
	sp.onclick = function() {cambiarMes('+');}
	sp.appendChild(document.createTextNode('>>'));
	obj.appendChild(sp);
	carga = true;
}