// nomoCalendar
// JavaScript Event Calendar
// Fully customizable event calendar.
// Use the power of css to modify the skin to you own taste :)
//
// created by:
//     nomo - advanced websolutions
//
// license:
//     use this code any way you want, as long as you leave this 
//     piece of comment up here.

function nomoCalendar(oContainer,oDate,aEvents){
  
  // aEvents: [{'title':'Első esemény','date':'2008-11-01'},{'title':'Második esemény','date':'2008-11-03'},{'title':'Harmadik esemény','date':'2008-11-12'}]
  
    var inputDateSeparator="-";
     
    var me=this;
    var container;
    
    
    me.date=new Date();
    me.events=new Array();
    
    var dys=["H","K","Sze","Cs","P","Szo","Va"];
    
    //konstruktor    
    container=oContainer;
    container.className='nomoCalendar';
    if (oDate) me.date=oDate;    
    if (aEvents) me.events=aEvents;
    
    me.setMonth=function(mon){
      me.date.setMonth(mon);
      me.show();
    }
    me.setYear=function(yr){
      me.date.setYear(yr);
      me.show();
    }
    me.setYearMonth=function(yr,mon){
      me.date.setYear(yr);
      me.date.setMonth(mon);
      me.show();
    }
    
    me.show=function(){
      //date.setMonth(11);    
      
      var usableevents = new Array();
      for (var i =0 ;i<me.events.length; i++){
      //alert(me.events[i].date+'  ----  '+me.date.getFullYear()+inputDateSeparator+((me.date.getMonth()<9)?"0"+(me.date.getMonth()+1):me.date.getMonth()+1)+'   a.indexOf(b)='+me.events[i].date.indexOf(me.date.getFullYear()+inputDateSeparator+((me.date.getMonth()<9)?"0"+me.date.getMonth()+1:me.date.getMonth()+1)));
      
      var inspectEvent=me.events[i].date;
      var requestedMonth=(me.date.getMonth()<9)?"0"+(me.date.getMonth()+1):me.date.getMonth()+1;

      var requestedDate=me.date.getFullYear()+inputDateSeparator+requestedMonth;
      
        if (inspectEvent.indexOf(requestedDate)==0) usableevents.push(me.events[i])        
      }
      
      
      var htmlStr='<table cellspacing="0" cellpadding="0" width="100%"><tbody>';
      
      //napok fejléc
      htmlStr+='<tr class="daysofweek">';
      for (var i=0; i<7; i++){
        htmlStr+='<td>'+dys[i]+'</td>';
      }      
      htmlStr+='</tr>';
     
      //dátumok lista
      var lastday=(new Date((new Date(me.date.getYear(), me.date.getMonth()+1,1))-1)).getDate();      
      var firstday=me.date;
      firstday.setDate(1);
      firstday=firstday.getDay()-1;
   
      htmlStr+='<tr>';      
      for (var i=0; i<lastday+firstday; i++){
        
        var cellContent=new String();                
        if (i<firstday) cellContent="&nbsp;"
        else cellContent=(i+1-firstday);        
 
        //class calculations
        var specialbehaviour = new String();        
        var specialcontent=new String();
        var classStr = new String();       
        if ((i%7) > 4) classStr="weekend ";
        for (var h=0; h<usableevents.length;h++){                  
          if (parseInt(usableevents[h].date.split(inputDateSeparator)[2],10) == (i+1-firstday)){
            classStr="special";
            specialbehaviour = "onmouseover='this.getElementsByTagName(\"div\")[0].style.display=\"block\";opacityTween = new OpacityTween(this.getElementsByTagName(\"div\")[0],Tween.regularEaseOut, 0, 90, 1);opacityTween.start()' onmouseout='this.getElementsByTagName(\"div\")[0].style.display=\"none\";'";
            specialcontent='<div class="eventcard"><div class="top"></div><em>'+usableevents[h].date+'</em>'+usableevents[h].title+'<div class="bottom"></div></div>';
            break;
          }
        }
        htmlStr+='<td ';
        //attributes go here
        if(classStr!="")htmlStr+='class="'+classStr+'" ';
        if(specialbehaviour!=""){
          htmlStr+=specialbehaviour;
          cellContent+=specialcontent;
          }
        
        htmlStr+='>'+cellContent+'</td>';
        //htmlStr+=(classStr)?'<td class="'+classStr+'">'+cellContent+'</td>' : '<td>'+cellContent+'</td>';
        if ((i%7)==6) htmlStr+= '</tr><tr>';        
      }      
      htmlStr+='</tbody></table>';      
      container.innerHTML=htmlStr;
       
    }
    me.getNextEvent=function(){
    
    if(!me.events.length) return;
    
    var d=new Date();
    var smallestDifference=null;
    var smallestNextEvent=null;
    for (var i =0 ;i<me.events.length; i++){
      var eed=me.events[i].date.split(inputDateSeparator)
      var ed=new Date(eed[0],parseInt(eed[1])-1,eed[2]);
      if((ed-d>0) && ((ed-d)<smallestDifference || smallestDifference == null)){
        smallestDifference=ed;
        smallestNextEvent=me.events[i];
      }
    }
    return smallestNextEvent;
    
    
    
    }
    //események
    me.onMonthChange=function(){}
    
  
  }
