// kalendarz

function poprzedniMies(){
}

function nastepnyMies(){
}

function poprzedniDzien(){
}

function nastepnyDzien(){
}

var months= new Array( 'Styczeń',
                   'Luty',
                   'Marzec',
                   'Kwiecień',
                   'Maj',
                   'Czerwiec',
                   'Lipiec',
                   'Sierpień',
                   'Wrzesień',
                   'Październik',
                   'Listopad',
                   'Grudzień'          
);

var events= new Array('','','','','','','','','','','');

function searchEvent(dateEv)
{
  result= new Array('','','','','','','','','','');
  for(var si=0; si<events.length; si+=11)
  {
    
    if (dateEv<events[si]) break;
    if(dateEv==events[si]) 
    {
      for (var iter= 0; iter< result.length; iter++)      
        result[iter]= events[si+1+iter];      
      break;
    }
  }
  return result;
}


function daysInMonth(iYear, iMonth) 
{       
  return 32 - new Date(iYear, iMonth, 32).getDate(); 
}

function clearCalendar()
{
    table= document.getElementById('calendar_div'); 
    table.innerHTML= '';        
}

function calcNoPositionCalendar(descInfo)
{
  count= 0;
  for(i_ev= 0; i_ev< descInfo.length; i_ev+=2)
  {
    if (descInfo[i_ev]!='') count++; 
  }
  switch(count){
    case 1: return new Array('gradc3');
    case 2: return new Array('gradc1','gradc3');
    case 3: return new Array('gradc1','gradc3','gradc5');
    case 4: return new Array('gradc1','gradc3','gradc4','gradc5');
    case 5: return new Array('gradc1','gradc2','gradc3','gradc4','gradc5');
  }
  return new Array('gradc3');
}

function composeCalendar(descInfo,className,newday)
{
    
    styles= calcNoPositionCalendar(descInfo);
    stylesCount= 0;
    ordStyle= 'gradc2';    
    Output= '';
    isFirst= true;
    for(i_ev= 0; i_ev< descInfo.length; i_ev+=2)
    {
      var divContent= descInfo[i_ev];
      if (divContent!='')
      {
        if (descInfo[i_ev+1]!='') divContent= '<a href="'+descInfo[i_ev+1]+'">'+divContent+'</a>';
                 
        Output+= '<tr>'
                    +'<td class="'+className+'">'+(isFirst?newday:'')+'</td>'
                    +'<td class="descr_link '+styles[stylesCount]+'">'+divContent+'</td>'
                +'</tr>';
        isFirst= false;
        stylesCount++;
      }
    }
    if (isFirst)
    {
        Output+= '<tr>'
                    +'<td class="'+className+'">'+newday+'</td>'
                    +'<td class="descr_link"></td>'
                +'</tr>';    
    }
    return Output;       
}


function drawCalendar(year, month, day)
{
  var x=document.getElementById('calendarMY');
  x.innerHTML= months[month]+' '+year;
  // wypełnienie kalendarza liczbami
  newmonth= month+1;
  newyear= year;
  clearCalendar();
  table= document.getElementById('calendar_div');
  
  for(i=1; i<19; i++ )
  {
    newday= day-1+i;
    if (newday > daysInMonth(year, month)) 
    {
      newday= day-1+i - daysInMonth(year, month);
      newmonth=month+2;
      if (newmonth>12) 
      {
        newmonth=1;
        newyear= year+1;
      }
    }
    
    descInfo= searchEvent(newyear+'-'+(newmonth>9?newmonth:'0'+newmonth)+'-'+(newday>9?newday:'0'+newday));      
      
    d= new Date(year, month, day-1+i);
    var className= 'day';
    if (d.getDay() ==0 ) className= 'hollyday'; 
          
    temptable= table.innerHTML; 
       
    OutputString = '<div class="calendar_line">'
            +'<table cellpadding="0" cellspacing="0">';        
    OutputString+= composeCalendar(descInfo,className,newday);    
    OutputString+= '</table><img height="2px" src="/img/yellow/kalendarz_pasek.jpg"/></div>';        

    table.innerHTML += OutputString;
    // czy konczyc wyswietlanie?
    
    table_h= table.offsetHeight;
    if (table_h > 510)            
    {
        table.innerHTML= temptable; 
        break;     
    }         
    
  }

}



function maincolumnFix(){
        var x=document.getElementById('maincolumn');
        
        h= x.offsetHeight;
        var newh= 500;        
        if (h>500) newh= h;         
        x.height= x.style.height= newh;
    }

var curDay;
var curMonth;
var curYear;

function nextMonth()
{
  curMonth++;
  if(curMonth>11)
  {
    curMonth=0;
    curYear++;
  }
  curDay=1;
  drawCalendar(curYear,  curMonth, curDay);  
};

function prevMonth()
{
  curMonth--;
  if(curMonth<0)
  {
    curMonth=11;
    curYear--;
  }
  curDay=1;
  drawCalendar(curYear,  curMonth, curDay);
};

function nextDay()
{
    curDay++;
    if (curDay > daysInMonth(curYear, curMonth)) 
    {      
      curDay=1;
      curMonth++;
      if (curMonth>11) 
      {
        curMonth=0;
        curYear++;
      }
    }

  drawCalendar(curYear,  curMonth, curDay);  
};

function prevDay()
{
    curDay--;
    if (curDay < 1 ) 
    {      
    
      curMonth--;            
      if (curMonth<0) 
      {
        curMonth=11;
        curYear--;
      }
      curDay= daysInMonth(curYear, curMonth);
    }

  drawCalendar(curYear,  curMonth, curDay);  

};

var scrollTimer;

function scroll_clear()
{
	clearTimeout(scrollTimer);
};

function scroll_up()
{
  prevDay();
  scrollTimer= setTimeout("scroll_up()",100);	  
};

function scroll_down()
{
  nextDay();
  scrollTimer= setTimeout("scroll_down()",100);	  
};


function installCalendarButtons()
{
   var buttonPrevDay=document.getElementById('buttonPrevDay');
   var buttonNextDay=document.getElementById('buttonNextDay');
   buttonPrevDay.onmousedown= scroll_up;
   buttonPrevDay.onmouseup=  scroll_clear;
   buttonPrevDay.onmouseout= scroll_clear;
   buttonNextDay.onmousedown= scroll_down;
   buttonNextDay.onmouseup=  scroll_clear;
   buttonNextDay.onmouseout= scroll_clear;   
};    


// mini ajax

var http_request = false;

function makeRequest(url) 
{

    http_request = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/html; charset=utf-8');
            // Przeczytaj o tym wierszu poniżej
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
			 http_request.setRequestHeader("Content-Type", "text/html; charset=utf-8")
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
                http_request.overrideMimeType('text/html; charset=utf-8');
            } catch (e) { }
        }
    }

    if (!http_request) {
        alert('Przeglądarka internetowa nie jest zgodna z Ajax. Strona nie posiada swojej pełnej funkcjonalności.');
        return false;
    }
    http_request.onreadystatechange = function() { alertContents(http_request); };
    http_request.open('GET', url, true);
    http_request.send(null);

}

function alertContents(http_request)
{

    try {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {                                                
                eval(http_request.responseText);
                events= eventsDownloaded;                 
                drawCalendar(curYear,  curMonth, curDay);
            } else {
                alert('Wystąpił problem z kalendarzem.');
            }
        }
    }
    catch( e ) {
        drawCalendar(curYear,  curMonth, curDay);
        //alert('Złapany wyjątek: ' + e.description);
    }

}

// licznik
var http_hitrequest = false;

function makeHit(url) 
{

    http_hitrequest = false;

    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_hitrequest = new XMLHttpRequest();
        if (http_hitrequest.overrideMimeType) {
            http_hitrequest.overrideMimeType('text/html; charset=utf-8');
            // Przeczytaj o tym wierszu poniżej
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_hitrequest = new ActiveXObject("Msxml2.XMLHTTP");
			 http_hitrequest.setRequestHeader("Content-Type", "text/html; charset=utf-8")
        } catch (e) {
            try {
                http_hitrequest = new ActiveXObject("Microsoft.XMLHTTP");
                http_hitrequest.overrideMimeType('text/html; charset=utf-8');
            } catch (e) { }
        }
    }

    if (!http_hitrequest) {
        alert('Przeglądarka internetowa nie jest zgodna z Ajax. Strona nie posiada swojej pełnej funkcjonalności.');
        return false;
    }
    http_hitrequest.onreadystatechange = function() { alertContentsHit(http_hitrequest); };
    http_hitrequest.open('GET', url, true);
    http_hitrequest.send(null);

}

function alertContentsHit(http_hitrequest)
{

    try {
        if (http_hitrequest.readyState == 4) {
            if (http_hitrequest.status == 200) {                                                
                //eval(http_hitrequest.responseText);                                                 
            } else {
                //alert('Wystąpił problem z licznikiem odwiedzin.');
            }
        }
    }
    catch( e ) {
        
        //alert('Złapany wyjątek: ' + e.description);
    }

}


    
window.onload=function()
{
      maincolumnFix();
      
      var d = new Date();      
      curMonth= d.getMonth();
      curYear= d.getFullYear();
      curDay= d.getDate();
      
      makeHit('/hit_counter?ss='+Math.random(100000));
      makeRequest('/calendar?ss='+Math.random(100000)); 
      installCalendarButtons();      
      
      
}
