
function pascua(year){
  // Constantes mágicas
  var M = 24;
  var N = 5;
  // Cálculo de residuos
  var a = year % 19;
  var b = year % 4;
  var c = year % 7;
  var d = (19*a + M) % 30;
  var e = (2*b+4*c+6*d + N) % 7;
  // Decidir entre los 2 casos:
  if ( d + e < 10 ) {
    var day = d + e + 22;
    var month = 3; // marzo
  }
  else {
    var day = d + e - 9;
    var month = 4; //abril
  }
  // Excepciones especiales (según artículo)
  if ( day == 26 && month == 4 ) { // 4 = abril
    day = 19;
  }
  if ( day == 25 && month == 4 && d==28 && e == 6 && a >10 ) { // 4 = abril
    day = 18;
  }
  
  var pascua = new Array(9);
  for (i = 0; i < pascua.length; ++i)	{
    pascua[i] = new Array(3);
  }
   
  pascua[0][0]='pascua';
  pascua[0][1]='Domingo de Pascua';
  pascua[0][2] = decDaysToDate(day,month,year,0);
  pascua[1][0]='miercoles_ceniza';
  pascua[1][1]='Miércolesde ceniza';
  pascua[1][2] = decDaysToDate(day,month,year,47);  //46
  pascua[2][0]='domingo_ramos';
  pascua[2][1]='Domingo de Ramos';
  pascua[2][2] = decDaysToDate(day,month,year,6);       // 7
  pascua[3][0]='jueves_santo';
  pascua[3][1]='Jueves Santo';
  pascua[3][2] = decDaysToDate(day,month,year,3);
  pascua[4][0]='viernes_santo';
  pascua[4][1]='Viernes Santo';
  pascua[4][2] = decDaysToDate(day,month,year,2);
  pascua[5][0]='ascension';
  pascua[5][1]='Ascensión';
  pascua[5][2] = addDaysToDate(day,month,year,39);
  pascua[6][0]='pentecostes';
  pascua[6][1]='Pentecostés';
  pascua[6][2] = addDaysToDate(day,month,year,49);
  pascua[7][0]='santisima_trinidad';
  pascua[7][1]='Santísima Trinidad';
  pascua[7][2] = addDaysToDate(day,month,year,56);
  pascua[8][0]='corpus_christi';
  pascua[8][1]='Corpus Christi';
  pascua[8][2] = addDaysToDate(day,month,year,60);
  return pascua;
} 

function addDaysToDate(d,m,y,days){
 milisegundos=parseInt(days*24*60*60*1000);
 fecha=new Date(y,m,d);
 tiempo=fecha.getTime();
 total=fecha.setTime(parseInt(tiempo+milisegundos));
 r = new Array(3);
 r[0] = fecha.getDay(); 
 r[1] = fecha.getMonth(); 
 r[2] = fecha.getYear(); 
 return r;
}
function decDaysToDate(d,m,y,days){
 milisegundos=parseInt(days*24*60*60*1000);
 fecha=new Date(y,m,d);
 tiempo=fecha.getTime();
 total=fecha.setTime(parseInt(tiempo-milisegundos));
 r = new Array(3);
 r[0] = fecha.getDate(); 
 r[1] = fecha.getMonth(); 
 r[2] = fecha.getYear(); 
 return r;
}

function padN(n){ 
  if (n<10) return "0"+n;
       else return n;
}


