var MonthStr="error;Enero;Febrero;Marzo;Abril;Mayo;Junio;Julio;Agosto;Septiembre;Octubre;Noviembre;Diciembre;error";
var MonthStr="error;Urtarrila;Otsaila;Martzoa;Apirila;Maiatza;Ekaina;Uztaila;Abuztua;Iraila;Urria;Azaroa;Abendua;error";
var actionPage="ServicioDomestico=Agenda_Calendario&lang=5";
var cabthStr="L;M;X;J;V;S;D";
var Hoy= new Date();
var StrDiaHoy=Hoy.getDate();
var StrMesHoy=format00(Hoy.getMonth()+1);
var StrAnoHoy=Hoy.getFullYear();
var StrHoy=StrAnoHoy+'-'+StrMesHoy+'-'+format00(StrDiaHoy);
//alert("fecha hoy hoy "+StrHoy);
function CreateCalendar(donde,de,fechaStr)
{

var EventosArr=eventosStr.split(',');
if(fechaStr==''){fechaStr='0000-00-00';}
var fechaArr=fechaStr.split('-');
aa=eval(fechaArr[0]);
mm=eval(fechaArr[1]);
dd=eval(fechaArr[2]);
var cabthArr=cabthStr.split(';');
var MonthArr=MonthStr.split(";");

obj=document.getElementById(donde);

if(document.getElementById(donde+de+'calendar')){removeElementById(donde);}
tabla=CreateAppend('table',obj);
tabla.id=donde+de+'calendar';
tabla.className='calendar';
tbody=CreateAppend('tbody',tabla);
thead=CreateAppend('thead',tabla);
tfoot=CreateAppend('tfoot',tabla);



mes = new Date();
if(aa=='0000')
{
  with(mes)
  {
    setDate(1);
    aa=getFullYear();
    mm=getMonth()+1;
    dd=getDate();

    var startday=diaSemana(getDay())-2;
  }
}
else
{

  with(mes)
 {
   setDate(1);
   setFullYear(aa);
   setMonth(mm-1);

   var startday=diaSemana(getDay())-2;
 }
}

var Ant=mesAnterior(mes);
var Sig=mesSiguiente(mes);
var diasMesAnterior=diasMes(Ant);



var diasMesSiguiente=diasMes(Sig);
var diasMesActual=diasMes(mes);



var numSemanasMes=NumeroSemanasMes_(mes);



var anterior=formatDate(Ant);
var posterior=formatDate(Sig);
tr_=CreateAppend('tr',thead);

th_=CreateAppend('td',tr_);
th_.colSpan=2;
a=CreateAppend('a',th_);
a.href='#'
a.title='Mes anterior';
a.onclick=function(){CreateCalendar(donde,de,anterior);}
a.title='Mes anterior';
a.innerHTML='&laquo;'

th_=CreateAppend('td',tr_);
th_.colSpan=3;
a=CreateAppend('a',th_);
a.href='#'
a.title=anterior;
a.onclick=function(){CreateCalendar(donde,de,'0000-00-00');}
a.title=Hoy;
a.innerHTML='hoy';

th_=CreateAppend('td',tr_);
th_.colSpan=2;
a=CreateAppend('a',th_);
a.href='#';
a.title='Mes siguiente';
a.onclick=function(){CreateCalendar(donde,de,posterior);}
a.title='Mes siguiente';
a.innerHTML='&raquo;';

tr=CreateAppend('tr',thead);
th=CreateAppend('th',tr);
th.colSpan=7;
th.className='LMXJVSD';
var LinkVerMes=CreateAppend('a',th);

LinkVerMes.href='#'
LinkVerMes.onclick=function(){alert('No hay eventos en el mes');}
LinkVerMes.innerText=MonthArr[mm]+' '+aa;
LinkVerMesclassName='LMXJVSD';
tr=CreateAppend('tr',thead);
for(d=0;d<7;d++)
{
th=CreateAppend('th',tr);
th.className='LMXJVSD';
th.innerText=cabthArr[d];
}


for(i=0;i<numSemanasMes;i++)
{
  tr=CreateAppend('tr',tbody);
  for(d=0;d<7;d++)
  {
    td=CreateAppend('td',tr);
    a=CreateAppend('a',td);


    diaLink= (i*7+d)-startday;//diasMesAnterior;

    if(diaLink<=0)
    {
      diaLink+=diasMesAnterior;
      a.id=Ant.getFullYear()+'-'+format00(Ant.getMonth()+1)+'-'+format00(diaLink);
      a.innerText=diaLink;

    }
    else if(diaLink>diasMesActual)
    {
      diaLink-=diasMesActual;
      a.id=Sig.getFullYear()+'-'+format00(Sig.getMonth()+1)+'-'+format00(diaLink);
      a.id=aa+'-'+format00(mm+1)+'-'+format00(diaLink);
      a.innerText=diaLink;

    }
    else
    {
      a.id=aa+'-'+format00(mm)+'-'+format00(diaLink);
      a.innerText=diaLink;
    }
    
    if(a.id==StrHoy)
    {
     a.ClassName='hoy';
     a.style.color='red';
    }
    else
    {
      //getById("cal").innerHTML= getById("cal").innerHTML+a.id;
    }
    if(EventosArr.inArray(a.id))
    {
      a.className='evento';
      a.href='?'+actionPage+'&limit=all&Fecha=';
      a.href+=a.id;
      a.title='Eventos para el '+a.id;
      //LinkVerMes.href='?'+actionPage+'&filter=Fecha:'+aa+'-'+format00(mm)+'-%&limit=all&Fecha='+aa+'-'+format00(mm)+'-00';
      LinkVerMes.href='?'+actionPage+'&Fecha='+aa+'-'+format00(mm)+'-00&limit=all';
      LinkVerMes.title='Ver los eventos del mes.';
      LinkVerMes.onclick='';
    }
    else{
     a.href='?'+actionPage+'&limit=all&Fecha=';
     a.href+=a.id;
    }


  }
}

}
///////////////
function removeElementById(ide)
{
obj=document.getElementById(ide);
removeallChilds(obj);
}

function CreateAppend(tipo,where)
{
  var obj=document.createElement(tipo);
  where.appendChild(obj);
  return obj;
}

function removeallChilds(Element)
{
if(!Element.firstChild) return 0;// Si no tiene hijos fuera
if (Element.firstChild.fistChild)
   removeallChilds(Element.firstChild)
else
   do
   {
   Element.removeChild(Element.firstChild);
   }while(Element.firstChild)

}
/************/



function diaSemana(num)
{
  if(num==0)
  {
    num=7;
  }
  return num;
}
function mesSiguiente(pmes)
{

  var aa=pmes.getFullYear();
  var mm=pmes.getMonth();
  var dd=pmes.getDate();

  mm+=1;
  dd=1;
  if(mm>11)
  {
    mm=0;
    aa+=1;
  }
  var sig=new Date();

  sig.setDate(dd);
  sig.setFullYear(aa);
  sig.setMonth(mm);


  return sig;
}

function mesAnterior(Act)
{
   with(Act)
   {
    var aa=getFullYear();
    var mm=getMonth();
    var dd=getDate();
   }
  mm-=1;
  dd=1;
  if(mm<0)
  {
    mm=11;
    aa-=1;

  }
  var ant=new Date();

  ant.setFullYear(aa);
  ant.setDate(dd);
  ant.setMonth(mm);


  return ant;
}
function diasMes(mes_)
{

  mes_.setDate(28);
  var dia1=diaSemana(mes_.getDay());
  var sig = new Date();
  sig=mesSiguiente(mes_);
  sig.setDate(1);
  var dia2=diaSemana(sig.getDay());
  var distancia=(dia2-dia1)-1;

  if(distancia<0)
  {
   distancia= 6+(dia2-dia1);
  }
  else
  {
   distancia=(dia2-dia1)-1;
  }

 return 28 +distancia;
}
/**/
function format00(n)
{
  nStr='0'+n;
  var offset=0;
  if(nStr.length==3)
  {
    var offset=1;
  }
  return nStr.slice(0+offset,2+offset);
}
function NumeroSemanasMes_(pMes)
{

  var StartDay=1;
  var DiasMes=30;
  var semanas=6;
  with(pMes)
  {

    setDate(1);
    StartDay=getDay();

    DiasMes=diasMes(pMes);
  }

  semanas= ((diaSemana(StartDay)+DiasMes-1)/7);

  return Math.ceil(semanas);
}
/*
function NumeroSemanasMes(pStartday,pdiasMes)
{

  pStartDay=diaSemana(pStartday+1);

  var semanas=5;
  var semanas= ((pStartday+pdiasMes+1)/7);

  alert('inicio mes '+pStartday+' '+pdiasMes+'     '+semanas );
  //return Math.floor(semanas);
  return Math.ceil(semanas);
} */
function formatDate(fecha)
{
  with(fecha)
  {
  return getFullYear()+'-'+format00(getMonth()+1)+'-'+format00(getDate());
  }
}


