calendarAjax = {
   initialize:   function(el){
     this.request = new Request.HTML();
     this.request.addEvent('success',this.updateCalendar.bind(this));
     this.request.addEvent('failure',function(code){
         console.log('Request Error: ',code,this)
     }.bind(this.request));
     this.initializeElements(el);
     this.spinner = new Element('span',{'styles':{
              background:'#fff',
              padding:'10px',position:'absolute',margin:'-80px 55px 0px 55px',display:'none'}
     });
     img = new Image();
     img.src = 'm/lib/squeeze/spinner.gif';
     $(img).inject(this.spinner);


     this.spinner.inject(el,'after');
   },

   initializeElements: function(el){
     //console.log("Initializing element",el);
     if(el != null){
       this.element = el;
       this.buttons = el.getElements('.prev, .next');
       //console.log("Adding Events",this.buttons);
       this.buttons.addEvent('click',this.onClick);
       this.buttons.setStyle('display','inline');
     }
   },

   loadCalendar: function(href){
     this.spinner.setStyle('display','block');
     //console.log("Trying to load calendar from: " + this.urlPrefix + href);
     this.request.get(this.urlPrefix +href + this.urlPostfix);

   },
   onClick: function(){
     calendarAjax.loadCalendar(this.getAttribute("rev"));
   },
   updateCalendar: function(responseTree, responseElements, responseHTML, responseJavaScript){
     //console.log("ResponseTree: ",responseTree);
     //console.log('HTML loaded, trying to get #minical');
     newCal = null;
     i = 0;
     while ((newCal == null) && (i < responseTree.length)){
       cur = responseTree[i];
       ftype = (typeof cur.getElements);
       if ( ftype == 'function') {
         newCal = cur.getElements('.calendar.ajax');
         if(newCal != null) newCal= newCal[0];
       }
       i++;
     }

     //console.log('newCal return value: ',newCal);
     if(newCal != null) {
       //console.log("New calendar HTML found",newCal);
       
       this.element.destroy();
       newCal.inject(this.spinner,'before');
       this.spinner.setStyle('display','none');
       //console.log("ResponseTree: ",responseTree);
       this.initializeElements(newCal);
     }
   }
}


window.addEvent('domready',function(){
 cals = $$('.calendar.ajax');
 if(cals.length > 0) {
 cals = cals[0];
   calendarAjax.initialize( cals);
   calendarAjax.urlPrefix  = '';
 }

});
