// script.name=calendar_rev_1.0
//===============================
//===   ODEIS [media_group]   ===
//===============================
// email:        m.cabaj@odeis.pl
//           t.gostanski@odeis.pl
//===============================
// Copyright by ODEIS !
// All Right Reserved !
// This software is a freeware !
// This script doesn't support browsers: Opera<7, Ie<4, NN<4.  
// If You don't see anything probably Your browser don't support DOM or DHTML technology.

/* STYLE
calendar1 -> styl dni tygodnia - powszednich
calendar2 -> styl dni tygodnia - weekend
calendar3 -> styl nazwy dni tygodnia
calendar4 -> styl zaznaczonego dnia tygodnia
calendar5 -> styl dopełnienia dni tygodnia - powszednie 
calendar6 -> styl dopelnienia kalendarza dniami tygodnia - weekend
calendarscr -> styl rozwijanych menu kalendarza
*/
var DayName = new Array("ma","ti","on","to","fr","lö","sö");	//Skróty dni
var MonthName = new Array("Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December");	//Nazwy miesięcy
var DaysOfMonths = new Array(31,28,31,30,31,30,31,31,30,31,30,31); //Liczba dni poszczególnych miesięcy
var DayOfWeekHlp = new Array(5,6,0,1,2,3,4);
var Day;	  //Dzien danego miesica
var Month;	  //Numer danego miesica (0-11)
var Year;	  //Rok
var DayOfWeek;	  //Dzień tygodnia np. 22 luty 2003 sobota -> 6 dzien tygodnia
var browser;	  //Rodzaj przegladarki: ie -> Internet Explorer, nn4 -> Netscape Navigator >= 4, nn -> kolejne wyższe "modele" Netscape'a
var CalendarHTML; // Kod kalendarza włczany do warstwy
var LayerName='OdeisCalendar';	//Nazwa warstwy
var LayerId=''; //Pomocniczy numer warstwy
//Zmienne styli
var calendar1='class="calendar1"';
var calendar2='class="calendar2"';
var calendar3='class="calendar3"';
var calendar4='class="calendar4"';
var calendar5='class="calendar5"';
var calendar6='class="calendar6"';
var calendarsrc='class="calendarscr"';
//Koniec styli
var YearsScroll = new Array();
var YCount=5;
var now = new Date();
Year = now.getFullYear(); 
Month = now.getMonth();
Day = now.getDate();
DayOfWeek = now.getDay();
for (i=0;i<YCount;i++) {YearsScroll[i]=Year+i;} 
var YearPointer=0;
//Detekcja przegladarek:
if (document.layers) {browser='nn4';}
if (document.all) {browser='ie4';}
if (document.getElementById) {browser='dom';}
//Koniec detekcji przegldarek

function GenerateCalendar(layerid)
{
LayerId=layerid;
LayerName='OdeisCalendar'+layerid;
switch (browser) 
	{
		case 'ie4': layerid>1?document.all['OdeisCalendar1'].style.visibility='hidden':document.all['OdeisCalendar2'].style.visibility='hidden'; //only ie4 support
					var str=document.all['date'+LayerId].value.split('-');  // only ie4 support
					break;
		case 'nn4': layerid>1?document.layers['OdeisCalendar1'].visibility='hidden':document.layers['OdeisCalendar2'].visibility='hidden'; //only nn4 support
					var str=document.forms['f'].elements['date'+LayerId].value.split('-');
					break;
		case 'dom': layerid>1?document.getElementById('OdeisCalendar1').style.visibility='hidden':document.getElementById('OdeisCalendar2').style.visibility='hidden'; //only dom support
					var str=document.getElementById('date'+LayerId).value.split('-');  // only dom support
					break;
	}
if ((str.length==3) && !isNaN(str[0]) && !isNaN(str[1]) && !isNaN(str[2]) && (str[0]<32) && (str[1]<13))
	{
		Day=str[0]*1;
		Month=(str[1]-1)*1;
			for (i=0;i<YCount;i++) 
				{
					if (YearsScroll[i]==str[2])
						{
							YearPointer=i;
							Year=YearsScroll[i];
							break;
						}
				}
			now.setYear(Year);
			now.setMonth(Month);
	}
	CheckLeapYear(Year) ? DaysOfMonths[1]=29 : DaysOfMonths[1]=28; 
	GenerateCalendarHTML();
	AddCalendarHTML();
}

function GenerateCalendarHTML()
{
var DaysOfPrevMonth;	//Ile dni w poprzednim miesicu ?
var DayOfWeekFirst; 	//Np 1stycznia, 1luty itp. Ktory to dzien tygodnia !! Niedziela to pierwszy dzien tygodnia -> 0
var StartDayOfPrevMonth;	//Od tego dnia zliczamy
var DayCounter = 1; //Licznik dni
var DayCounterNext = 1;	//
CalendarHTML='<form name="calendar'+LayerId+'" id="calendar'+LayerId+'"><table border="0" cellspacing="1" width="150" height="150"><tr><td colspan="7">';
CalendarHTML+='<table border="0" cellpadding="0" cellspacing="0"><tr>';
CalendarHTML+='<td class="calendarscr"><select name="Months'+LayerId+'" id="Months'+LayerId+'" onChange="UserMove(\''+Day+'\')" class="calendarscr">';
GenerateMonthsScroll();
CalendarHTML+='</select></td><td class="calendarscr"><select style="width: 70px;" name="Years'+LayerId+'" id="Years'+LayerId+'" onChange="UserMove(\''+Day+'\')" class="calendarscr">';
GenerateYearsScroll();
CalendarHTML+='</select></td></tr></table></td></tr>';
CalendarHTML+='<tr>';
//Nagłówek nazw dni
for (i=0;i<7;i++)
	{
		CalendarHTML+='<td width="20" '+calendar3+'>'+DayName[i]+'</td>';
	}
//Koniec nagłówka nazw dni

//tutaj zaczynamy generowac date
CalendarHTML+='</tr>';
Month==0 ? DaysOfPrevMonth=DaysOfMonths[11] : DaysOfPrevMonth=DaysOfMonths[Month-1];
now.setDate(1);
DayOfWeekFirst=now.getDay();
now.setDate(Day);
StartDayOfPrevMonth=DaysOfPrevMonth-DayOfWeekHlp[DayOfWeekFirst];
for (var x=0;x<6;x++)
	{
		CalendarHTML+='<tr>';
			for (var i=1;i<8;i++)
				{
					if ((StartDayOfPrevMonth<=DaysOfPrevMonth)&&(DayOfWeekHlp[DayOfWeekFirst]!=6))
						{
							i>5 ? CalendarHTML+='<td width="20" '+calendar6+'>'+StartDayOfPrevMonth+'</td>' : CalendarHTML+='<td width="20" '+calendar5+'>'+StartDayOfPrevMonth+'</td>';
							StartDayOfPrevMonth++;
						}
					else if (DayCounter>DaysOfMonths[Month]) 
						{
							i>5 ? CalendarHTML+='<td width="20" '+calendar6+'>'+DayCounterNext+'</td>' : CalendarHTML+='<td width="20" '+calendar5+'>'+DayCounterNext+'</td>';
							DayCounterNext++;
						}
					else if (DayCounter==Day)
						{
							CalendarHTML+='<td width="20" '+calendar4+'><a '+calendar4+' href="javascript:UserClick(\''+DayCounter+'\')" class="x"><span style=\"font-size:10px\">'+DayCounter+'</span></a></td>'
							DayCounter++;
						}
					else
						{		
							i>5 ? CalendarHTML+='<td width="20" '+calendar2+'><a '+calendar2+' href="javascript:UserClick(\''+DayCounter+'\')" class="x"><span style=\"font-size:10px\">'+DayCounter+'</span></a></td>' : CalendarHTML+='<td width="20" '+calendar1+'><a '+calendar1+' href="javascript:UserClick(\''+DayCounter+'\')" class="x"><span style=\"font-size:10px\">'+DayCounter+'</span></a></td>';
							DayCounter++;
						}
				}
		CalendarHTML+='</tr>';
		if (DayCounter>DaysOfMonths[Month]) x++;
	}
		CalendarHTML+='<tr><td colspan="7" align="center"><a href="javascript:CloseLay()" class="x"><span style=\"font-size:10px\">stäng</span></a></td></tr></form></table>';
}

function AddCalendarHTML()
{
switch (browser) 
	{
		case 'ie4': document.all[LayerName].innerHTML=CalendarHTML;
					document.all[LayerName].style.visibility='visible';		
					break;
		case 'nn4': document.layers[LayerName].visibility='show';
		
					document.layers[LayerName].document.open();
					document.layers[LayerName].document.write(CalendarHTML);
					document.layers[LayerName].document.close();
					
					break;
		case 'dom': document.getElementById(LayerName).innerHTML=CalendarHTML;
					document.getElementById(LayerName).style.visibility='visible';
					
					break;
	}
	SetReservationForm();//new
} 

function GenerateMonthsScroll()
	{
		for (i=0; i<12; i++)
			{
				var selectedM=(i==Month?selectedM='selected':selectedM='');
				CalendarHTML+='<option '+selectedM+'>'+MonthName[i]+'</option>';
			}
	}
	
function GenerateYearsScroll()
	{
		for (i=0; i<YearsScroll.length; i++)  // i=5 -> Pokazuje 5 lat
			{
				var selectedY=(i==YearPointer?selectedY='selected':selectedY='');
				CalendarHTML+='<option '+selectedY+'>'+(YearsScroll[i])+'</option>';
			}
	}

function CheckLeapYear(year)
	{
		if (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0)) 
			{
				return (true);
			}
		else
			{
				return (false);
			}
	}

function UserClick(number)
	{
switch (browser) 
	{
		case 'ie4': document.all[LayerName].style.visibility='hidden';	
					Month=document.forms['calendar'+LayerId].elements['Months'+LayerId].selectedIndex;
					YearPointer=document.forms['calendar'+LayerId].elements['Years'+LayerId].selectedIndex;
					break;
		case 'nn4': document.layers[LayerName].visibility='hidden';
					Month=document.layers[LayerName].document.forms['calendar'+LayerId].elements['Months'+LayerId].selectedIndex;
					YearPointer=document.layers[LayerName].document.forms['calendar'+LayerId].elements['Years'+LayerId].selectedIndex;
					break;
		case 'dom': document.getElementById(LayerName).style.visibility='hidden';
					Month=document.getElementById('Months'+LayerId).selectedIndex;
					YearPointer=document.getElementById('Years'+LayerId).selectedIndex;
					break;
	}
		SetNewDY(number);
	}

function UserMove(number)
	{
	switch (browser) 
		{
			case 'ie4': Month=document.forms['calendar'+LayerId].elements['Months'+LayerId].selectedIndex;
						YearPointer=document.forms['calendar'+LayerId].elements['Years'+LayerId].selectedIndex;
						break;
			case 'nn4': Month=document.layers[LayerName].document.forms['calendar'+LayerId].elements['Months'+LayerId].selectedIndex;
						YearPointer=document.layers[LayerName].document.forms['calendar'+LayerId].elements['Years'+LayerId].selectedIndex;
						break;
			case 'dom': Month=document.getElementById('Months'+LayerId).selectedIndex;
						YearPointer=document.getElementById('Years'+LayerId).selectedIndex;
						break;
		}
			SetNewDY(number);
			GenerateCalendar(LayerId);
	}

function SetNewDY(number)
	{
			Year=YearsScroll[YearPointer];
			Day=number;
			now.setYear(Year);
			now.setMonth(Month);
			SetReservationForm(); ///new
	}
function SetReservationForm()
	{
			var D0,M0;
			var DMY=Day+'-'+(Month+1)+'-'+Year;
			Day<10?D0='0':D0='';
			Month<9?M0='0':M0='';
			var DMY=D0+Day+'-'+M0+(Month+1)+'-'+Year;
			document.forms['f'].elements['date'+LayerId].value=DMY;
	}	

function CloseLay()
{	
	switch (browser) 
	{
		case 'ie4': document.all['OdeisCalendar1'].style.visibility='hidden';
					document.all['OdeisCalendar2'].style.visibility='hidden';	
					break;
		case 'nn4': document.layers['OdeisCalendar1'].visibility='hidden';
					document.layers['OdeisCalendar2'].visibility='hidden';
					break;
		case 'dom': document.getElementById('OdeisCalendar1').style.visibility='hidden';
					document.getElementById('OdeisCalendar2').style.visibility='hidden';
					break;
	}
}


