
function buildCalendar(el,mdate){
  this.mdate= mdate || new Date();
  this.date=Math.floor(this.mdate.getTime()/1000);
  this.dom;
  this.url='/calendar.xml?date=';
  this.month;
  this.offset;this.tds;
  this.prevel;this.nextel;
  
  this.nextMonth=function(){
    this.mdate.setMonth(this.mdate.getMonth()+1);
    this.date=Math.floor(this.mdate.getTime()/1000);
    
    this._fillTable();
  }
  this.prevMonth=function(){
    this.mdate.setMonth(this.mdate.getMonth()-1);
    this.date=Math.floor(this.mdate.getTime()/1000);
    
    this._fillTable();
  }
  this._getXML=function(mdate){
    xhrc=init_XMLhttpRequest();
    var url=this.url+mdate;
    xhrc.open('GET',url,true);
    
    var mthis=this;
    xhrc.onreadystatechange = function(){
      var rt='';
    	if(xhrc.readyState == 4 && (xhrc.status==200)) {
    		toogleDisplay('my_calendarLoading','hide');
        mthis.dom=xhrc.responseXML;
    		var els=mthis.dom.getElementsByTagName('element');
        var list=new Array();
        for(var i=0;i<els.length;i++){
          list[list.length]=els[i].getAttribute('affect_day');
        }
        for(i=0;i<mthis.tds.length;i++){
          if(mthis.tds[i].className!='empty'){
            var mmthis=mthis
            var d1=new Date(mthis.mdate.getFullYear(),mthis.mdate.getMonth(),parseInt(mthis.tds[i].innerHTML));
            var d2=new Date();
            if(d1<d2){
              mthis.tds[i].onclick=function(){alert('Désolé mais le Tropikowsono ne peut pas remonter le temps. ;-)');};
            }else{
              mthis.tds[i].onclick=function(){showRes(this,mthis.mdate);};
            }
          }
        }
        for(i=0;i<list.length;i++){
          d=list[i].split('.');
          c=parseInt(d[0],10);
          mthis.tds[mthis.offset+c-1].className='days affect_day';
         // mthis.tds[mthis.offset+c-1].onclick=function(){alert('Désolé mais Pascal n\'est pas disponible à cette date');};
        }
        
        }else{
          
          switch(xhrc.readyState){
            case 1:
              rt="Début du transfert";
              break;
            case 2:
              rt="Requète transférée";
              break;
            case 3:
              rt="Données en partie accessible";
              break;
            case 4:
              rt="Impossible de charger les données : code de retour "+xhrc.status;
              break; 
          }
        }
        window.status=rt;
    };
    toogleDisplay('my_calendarLoading','show');
    xhrc.send(null);
  };
  
  this.build=function(el){
    var days=new Array('L','M','M','J','V','S','D');
    months=new Array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
    var table=document.createElement('table');
    table.id='calendar';
    var tbody=document.createElement('tbody');
    var tr=document.createElement('tr');tr.id='menu'
      var td=document.createElement('th');
        this.prevel=td
        var a = document.createElement('a')
        mthis=this;
        a.onclick=function(){mthis.prevMonth()};
        var img=document.createElement('img');
        img.src='img_title/7_056__3C_3C.png';
        a.className='jslink';
        a.appendChild(img);
        
        td.appendChild(a);
        tr.appendChild(td);
       this.month=td=document.createElement('th');
        td.setAttribute('colSpan','5');
        tr.appendChild(td);
        this.nextel=td=document.createElement('th');
        var a = document.createElement('a')
        mthis=this;
        a.onclick=function(){mthis.nextMonth()};
        var img=document.createElement('img');
        img.src='img_title/7_056__3E_3E.png';
         a.className='jslink';
        a.appendChild(img);
        td.appendChild(a);
        tr.appendChild(td);
        tbody.appendChild(tr);
        
    var tr=document.createElement('tr');
    for(var i=0;i<days.length;i++){
      td=document.createElement('th');
      td.innerHTML=days[i];
      tr.appendChild(td);
    }
    tbody.appendChild(tr);
    for(i=0;i<6;i++){
      tr=document.createElement('tr');
      for(j=0;j<7;j++){
        td=document.createElement('td');
         tr.appendChild(td);
      }
      tbody.appendChild(tr);
    }
    table.appendChild(tbody);
    el.appendChild(table);
    this.tds=el.getElementsByTagName('td');
    this._fillTable();
  }
  
  this._fillTable=function(){
    mthis=this
    var fDate=new Date(this.mdate.getFullYear(),this.mdate.getMonth(),1)
    var lDate=new Date(this.mdate.getFullYear(),this.mdate.getMonth()+1,1)
    this.month.innerHTML=(months[this.mdate.getMonth()])+" "+this.mdate.getFullYear();
      var fd=fDate.getDay()
      this.offset=fd=(fd==0?7:fd)-1;
      for(var i=0;i<fd;i++){
        this.tds[i].className='empty';
        this.tds[i].innerHTML="";
        this.tds[i].onclick=function(){};
      }
      var d=1;
      
      for(var j=i;j<(i+((lDate-fDate)/(1000*3600*24)));j++){
        this.tds[j].innerHTML=d;
        this.tds[j].onclick=function(){};
        d++;
        this.tds[j].className='days';
      }
      for(i=j;i<this.tds.length;i++){
        this.tds[i].className='empty';
        this.tds[i].innerHTML="";
        this.tds[i].onclick=function(){};
      }
      this._getXML(this.date);
  } 
  this.build(el);
  
}

function showRes(el,dat){
    if(el){
     var rdate=("0".repeat(2-el.innerHTML.length)+el.innerHTML+'.'+"0".repeat(2-(dat.getMonth()+1).toString().length)+(dat.getMonth()+1)+'.'+dat.getFullYear());
    }else{
      var rdate="jj.mm.aaaa";
    }
    var ville=document.getElementById('reservationVille')
    for(var i=(ville.length-1);i>=0;i--){
      ville.options[i]=null;
    }
      document.getElementById('reservationStart').value=rdate;
     document.getElementById('reservationEnd').value=rdate;
     document.getElementById('under_reservation').style.display='';
     document.getElementById('reservationCaptchaImg').src="img/captcha.jpg?"+Math.random();
     new Effect.Appear('reservation',{duration:0.5});
  }

