

function ajax(params){
var xmlHttp;
  try{xmlHttp=new XMLHttpRequest();}catch (e){
    try{xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){
      try{xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){
        alert("Your browser does not support AJAX!");
        return false;
        }
      }
    }
    xmlHttp.onreadystatechange=function()
    {
       if(xmlHttp.readyState==4)
       {
        if(params.obj)
          params.ready.call(params.obj,xmlHttp.responseText,xmlHttp.responseXML,params.data)	 ;
        else	 
          params.ready(xmlHttp.responseText,xmlHttp.responseXML,params.data);
       }
     };
	if(params.method.toLowerCase()=="get"){xmlHttp.open(params.method,params.url,true);xmlHttp.send(null);}
	if(params.method.toLowerCase()=="post"){
	var par=(params.params?params.params:{});
	var i,p=[];
	for(i in par)
	p.push(i+'='+escape(par[i]));
	p=p.join('&');
	xmlHttp.open(params.method,params.url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.setRequestHeader("Content-length", p.length);
	xmlHttp.setRequestHeader("Connection", "close");
	xmlHttp.send(p);
	}
	return xmlHttp;
}




















var rezerwacje = [];
var gotmonths=[];


DAY=1000*60*60*24;;
WEEK=DAY*7;

Date.prototype.getDayStamp=function(){
return Math.floor(this.getTime()/DAY);
}
Date.prototype.setDayStamp=function(s){
this.setTime(s*DAY);
}

function setMidday(d){
d.setHours(12);
d.setMinutes(0);
}



mydate={
  wrap:'calend_wrap',
  start:null,
  cur_stamp:null,
  end:null,
  inc:0, 
  fin:0,
  handlers:[],
  months : ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec','Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
  gen:function(stamp){
    var days = "PWŚCPSN";
    mydate.cur_stamp=stamp;
    var iter=new Date();
    var cur_stamp=iter.getDayStamp()+1;
    
    iter.setDayStamp(stamp);
    setMidday(iter)
    var next_stamp=(stamp+7)-(iter.getDay()-1)*1;
    var prev_stamp=(stamp-7)+(iter.getDay()-1)*1;
    prev_stamp=(prev_stamp<cur_stamp?cur_stamp:prev_stamp);
    var str='';
    var cm=iter.getMonth();
     mydate.load(iter.getMonth(),iter.getFullYear());
    var pm=0;
    str='<a class="prewek a" href="#" onClick="mydate.gen('+(prev_stamp)+');return false;" >&#9650;</a><table  id="calend"><tr>'
    str+='<td colspan="7"><!--<a href="#" onClick="mydate.gen('+mydate.mstamp(iter.getFullYear(),iter.getMonth()-1)+');return false">-</a>--><a class="cmonth">'+mydate.months[iter.getMonth()]+' '+iter.getFullYear()+'</a><!--<a href="#" onClick="mydate.gen('+mydate.mstamp(iter.getFullYear(),iter.getMonth()+1)+');return false">+</a>--></td></tr><tr>'
    for(var i=0;i<7;i++)
    str+='<td class="wd">'+days.charAt(i)+'</td>'
    str+='</tr><tr>'
    for(var i=0;i<(iter.getDay()+6)%7;i++)
    str+='<td>&nbsp;</td>';

    var rows=5
    for(var i=0;i<rows;){
      //if(confirm(iter.getDate()))return;
        if(cm!=iter.getMonth()){
          mydate.load(iter.getMonth(),iter.getFullYear())
          if(iter.getDay()!=1)
          for(var j=(iter.getDay()+6)%7;j<=6;j++)
          str+='<td>&nbsp;</td>';
         str+='</tr><tr><td colspan="7"><a class="cmonth">'+mydate.months[iter.getMonth()]+' '+iter.getFullYear()+'</a></td></tr><tr>'
         
         for(var j=(iter.getDay()+6)%7;j>0;j--)
          str+='<td>&nbsp;</td>';
         
        cm=iter.getMonth();
       }
       
         
          
        
        var free=mydate.free(iter.getDayStamp());
       str+='<td class="'+(free?'free':'occu')+' mon'+( iter.getMonth()%2)+' day" rel="'+free+'"  onMouseover="mydate.over(this)" id="'+iter.getDayStamp()+'"><a href="#" onClick="'+(free?'':'return false;')+'mydate.pic('+iter.getDayStamp()+');return false;">'+ iter.getDate() +'</a></td>'
       if(iter.getDay()==0){
        i++;
        str+='</tr><tr>'
       } 
       iter.setTime(iter.getTime()+DAY);
       iter.setHours(12); // chyba chodzi o zmiane czasu i czasami moglby nam uciec jeden dzien
    }
    //for(var i=iter.getDay();iter.getDay()!=1;iter.addDays(1))
    //str+='<td>&nbsp;</td>'
    str+='</tr></table>'
    str+='<a class="nexwek a" href="#" onClick="mydate.gen('+next_stamp+');return false;" >&#9660;</a>'
   
    o(mydate.wrap).innerHTML=str;
    mydate.select();
  },
  mstamp:function (y,m){
    var d=new Date();
    d.setFullYear(y);
    d.setMonth(m);
    d.setDate(1);
    setMidday(d)
    return d.getDayStamp()+(8-d.getDay())*1;
  },
  free:function(stamp){
    
    for(var i=0;i<rezerwacje.length;i++){
      if(stamp>=rezerwacje[i][0]&&stamp<=rezerwacje[i][1])return 0;
    }
    return 1;
  },
  pic:function(s){
   // if( mydate.fin)return;
    if(!mydate.start||mydate.inc ||  mydate.fin){
    mydate.start=s;
     mydate.end=s;
     if( mydate.fin) mydate.fin=0
     
    }else if(mydate.start && s!=mydate.start){
     mydate.end=s;
     mydate.select();
     mydate.fin=1;
    }
    
    
    mydate.inc=0;
    mydate.fire();
     mydate.select();
  },
  reset:function(){
    mydate.start=null
    mydate.end=null
    mydate.inc=0
    mydate.fin=0
    mydate.select();
    mydate.fire()
  },
  select:function(){
        var max=Math.max( mydate.end, mydate.start)
         var min=Math.min( mydate.end, mydate.start)
         var tds=o('calend').getElementsByTagName('td');
         var l=tds.length
         mydate.inc=0;
         for(var i=0;i<l;i++){
          if(!tds[i].id)continue;
          
          var rel= tds[i].getAttribute('rel');
        
          if(rel==0&&( tds[i].id  >=min&&tds[i].id<=max)){mydate.inc=1;}
          
          if( rel=='1' && min<=tds[i].id&&tds[i].id<=max  )
          addClass(tds[i],'sel');
          else if(rel=='1')
          remClass(tds[i],'sel');
        }
        if(mydate.inc)mydate.clear();
        
  },
  clear:function(){
    var tds=o('calend').getElementsByTagName('td');
    var l=tds.length
    for(var i=0;i<l;i++){
      if(!tds[i].id)continue;
      var rel= tds[i].getAttribute('rel');
      if(rel=='1')
          remClass( tds[i],'sel')
    }
  },
  over:function(td){
    if(mydate.start && !mydate.fin ){
        mydate.end=td.id;
        mydate.select();
    }
    mydate.fire();
  },
  change:function(func){
    mydate.handlers.push(func);
  },
  fire:function(){
    for(var i=0;i<mydate.handlers.length;i++)mydate.handlers[i](Math.min( mydate.end, mydate.start),Math.max( mydate.end, mydate.start))
  },
  load:function(m,y){
  
    if(!gotmonths[m+"."+y]){
      ajax({'data':{'m':m,'y':y},'url':'/'+base+'/occu/'+aid+'/'+(m+1)+'/'+y,'method':'POST','ready':mydate.loaded});
    }
  },
  loaded:function(txt,xml,data){
   gotmonths[data.m+"."+data.y]=1;
   var arr=eval(txt);
   for(var i=0;i<arr.length;i++){
   arr[i][0]=parseInt( arr[i][0]);
   arr[i][1]=parseInt( arr[i][1]);
   }
   
   rezerwacje=rezerwacje.concat(arr);
   
   mydate.gen(mydate.cur_stamp);
   
  }
  
  
}


function select_value(s){return s.options[s.selectedIndex].value}



function manual_change(){
var s=new Date();
var e=new Date();
var t=new Date();
setMidday(t)
t=t.getDayStamp()
s.setDate(select_value(o('arrival_day')))
var my=select_value(o('arrival_month_year')).split('.')
s.setMonth(my[0]-1)
s.setFullYear(my[1])
setMidday(s)
e.setDate(select_value(o('dep_day')))
var my=select_value(o('dep_month_year')).split('.')
e.setMonth(my[0]-1)
e.setFullYear(my[1]);
setMidday(e)
if(s>e||s<t||e<t)return;

mydate.start=s.getDayStamp();
mydate.end=e.getDayStamp();
s.setDate(1);
if(s.getDayStamp()<t)s.setDayStamp(t)
mydate.gen(s.getDayStamp())
mydate.select();
if(mydate.inc){
  mydate.reset();
}else mydate.fin=1;


calc_cost();
}

function calc_cost(){
var d=Math.abs(mydate.end-mydate.start);
var p;

if(d<7)
p=price[0];
if(d==7){
d=6;
p=price[0];
}
if(d>7)
p=price[1]



if(mydate.start&&mydate.end&&!mydate.inc){
o('full_price')[(o('full_price').type?'value':'innerHTML')]=p*(d)+(o('full_price').type?'':' zł');
o('pay_price')[(o('pay_price').type?'value':'innerHTML')]=Math.round(0.3*p*(d))+(o('pay_price').type?'':' zł');
}else{ 
o('full_price')[(o('full_price').type?'value':'innerHTML')]='-/-'
o('pay_price')[(o('pay_price').type?'value':'innerHTML')]='-/-'
}

}

onloac.push(function(){
var d=new Date()

mydate.gen(d.getDayStamp()+1)
mydate.change(function(s,e){
  var d=new Date();
  var t=new Date();
  if(s){
    d.setDayStamp(s);
    o('arrival_day').selectedIndex=d.getDate()-1;
    o('arrival_month_year').selectedIndex=d.getMonth()-t.getMonth()+(d.getFullYear()-t.getFullYear())*12
  }
  if(e){
    d.setDayStamp(e);
    o('dep_day').selectedIndex=d.getDate()-1;
    o('dep_month_year').selectedIndex=d.getMonth()-t.getMonth()+(d.getFullYear()-t.getFullYear())*12
  }
  calc_cost();

});

  o('dep_day').onchange=o('arrival_day').onchange = o('arrival_month_year').onchange = o('dep_month_year').onchange =manual_change



});
