
19/04/2010, 03:21
|
 | | | Fecha de Ingreso: abril-2010 Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 10 meses Puntos: 1 | |
Respuesta: Problema con Calendario Lo he separado porque no entraba todo en el mensaje.
calendarioefemerides.js
Código:
var hoy = new Date()
var mes = hoy.getMonth()
var dia = 1
var anio = hoy.getFullYear()
var diasSemana = new Array ('L','M','M','J','V','S','D')
var meses = new Array('Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre')
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 += x < (buscaEv.length - 1) ? '; ' : '';
}
}
ce.title = buscaEv ? _titl : formatoFecha(_anio + _mes + _dia)
ce.className = buscaEv ? 'hayEvento' : ''
/****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) ? '; ' : '';
}
}
ce.title = buscaEv ? _titl : formatoFecha(_anio + _mes + _dia)
ce.className = buscaEv ? 'hayEvento' : ''
/****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 = this.scrollWidth + "px"
height = this.scrollHeight + "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 + 1) + "px"
marginTop = "-" + (calendarioPaddingCelda + 1) + "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){
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(obj[w].enlace){
var en = document.createElement('a')
en.href =obj[w].enlace
o.appendChild(en)
o = en
}
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)
}
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
}
|