function isBrowserSupp() {

        // Get the version of the browser

        version =  parseFloat( navigator.appVersion );



        if ( ( version >= 2.0 ) && ( version < 2.1 ) && ( navigator.appName.indexOf( "Netscape" ) != -1 ) ) {

            return false;

        } else {

            return true;

        }



        return true;

    }



    function isLeapYear( yrStr ) {

        var leapYear = false;

        var year = parseInt( yrStr, 10 );

        // every fourth year is a leap year

        if ( year % 4 == 0 ) {

            leapYear = true;

            // unless it's a multiple of 100

            if( year % 100 == 0 ) {

                leapYear = false;

                // unless it's a multiple of 400

                if( year % 400 == 0 ) {

                    leapYear=true;

                }

            }

        }

        return leapYear;

    }



    function getDaysInMonth( mthIdx, YrStr ) {

        // all the rest have 31

        var maxDays = 31

        // expect Feb. (of course)

        if( mthIdx == 1 ) {

            if( isLeapYear( YrStr ) ) {

                maxDays=29;

            } else {

                maxDays=28;

            }

        }



        // thirty days hath...

        if( mthIdx == 3 || mthIdx == 5 || mthIdx == 8 || mthIdx == 10 ) {

            maxDays=30;

        }

        return maxDays;

    }



    //the function which does some magic to the date fields

    // return non-zero if it is the last day of the month

    function adjustDate( mthIdx, Dt ) {

        var value = 0;



        var today = new Date()

        var theYear = parseInt( today.getYear(), 10 )



        if( mthIdx < today.getMonth() ) {

            theYear = ( parseInt( today.getYear(), 10 ) + 1 )

        }

        if( theYear < 100 ) {

            theYear = "19" + theYear

        } else {

            if( ( theYear - 100 ) < 10 ) {

                theYear = "0" + ( theYear - 100 )

            } else {

                theYear = ( theYear - 100 ) + ""

            }

            theYear = "20" + theYear

        }





        var numDays = getDaysInMonth( mthIdx, theYear );



        if( mthIdx == 1 ) {

            if( Dt.options.selectedIndex + 1 < numDays ) {

                return 0;

            } else {

                Dt.options.selectedIndex=numDays - 1;

                //check for leap year

                if( numDays == 29 ) {

                    return 99;

                } else {

                    return 1;

                }

            }

        }



        if( Dt.options.selectedIndex + 1 < numDays ) {

            value = 0;

        } else {

            if ( Dt.options.selectedIndex + 1 > numDays ) {

                Dt.options.selectedIndex--;

                value = 3;

            } else {

                //index is 31 or 30

                value = 2;

            }

        }

        return value;

    }

/* dynamicky generovany kalendar */
function calendar() {
	//// public properties
	this.width = 300;			// sirka noveho okna
	this.height = 300;			// vyska noveho okna
	this.css = "_sources/QS/calendar.css";	// cesta k souboru se styly

	//// private properties
	this.src_day = null;
	this.src_month = null;
	this.cal_window = null;
	this.date = null;
	this.today = new Date();
	this.month_days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	this.month_names = new Array('Leden', 'Únor', 'Bøezen', 'Duben', 'Kvìten', 'Èerven', 'Èervenec', 'Srpen', 'Záøí', 'Øíjen', 'Listopad', 'Prosinec');
	
	//// public methods
	this.show = calendar_show;		// inicializace a zobrazeni okna s kalendarem
	
	//// private methods
	this.generate = calendar_generate;	// vyrenderovani okna kalendare
	this.month_prev = calendar_month_prev;
	this.month_next = calendar_month_next;
	this.year_sel = calendar_year_sel;
	this.day_sel = calendar_day_sel;
}


/*
   zobrazi kalendar
   param src_day - pointer na select se dny, src_month pointer na select s mesici a roky
   nastavi jako aktualni datum udaj z src, pokud neni, tak dnesni den 
*/
function calendar_show(src_day, src_month) {
	this.src_day = src_day;
	this.src_month = src_month;
	var date_defined = false;
	
	var day = src_day.value;
	var month_year = src_month.options[src_month.selectedIndex].text.split('/');
	var month = month_year[0];
	var year = month_year[1];

	if (day > 0 && day < 32 && month > 0 && month < 13 && year >= 1900 && year <= 9999) {
		this.date = new Date(year, month - 1, day);
		date_defined = true;
	}
	if (!date_defined) {
		this.date = new Date();
	}
	this.generate();
}


function calendar_generate() {
	var i, j;
	
	var month = this.date.getMonth();
	var year = this.date.getFullYear();
	var tmp_date = new Date(year, month, 1);
	
	var week_day = tmp_date.getDay();
	if (week_day == 0)
		week_day = 7;
	var dayN = this.date.getDate();
	var days = this.month_days[month];
	if (month == 1 && year%4 == 0) days = 29;

	
	
	var cw = window.open("", "calendar", "width=" + this.width + ",height=" + this.height + ", top=" + this.top + ", left=" + this.left);
	this.cal_window = cw;
	cw.document.open();
	cw.document.write('<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 iTransitional//EN">'
		+ '<LINK REL=StyleSheet HREF="' + this.css + '" TYPE="text/css">'
		+ '<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1250">'
		+ '<title>kalendáø</title><scr' + 'ipt>var cal;</scr' + 'ipt></head><body><div id="calendar"><div id="topline">'
		+ '<div id="month-prev"><a href="javascript:cal.month_prev()" title="Pøedchozí mìsíc">'
		+ '<img src="img/cal-left.gif" alt="" border="0"></a></div>'
		+ '<div id="month-name">' + this.month_names[month] + '</div>'
		+ '<select id="year" onChange="cal.year_sel(this)">');
	for (i = year; i < year + 2; i++) {
		cw.document.write('<option value="' + i + '"' + (i == year ? ' selected' : '') + '>' + i + '</option>');
	}
	cw.document.write('</select><div id="month-next">'
		+ '<a href="javascript:cal.month_next()" title="Následující mìsíc"><img src="img/cal-right.gif" alt="" border="0"></a></div>'
		+ '<div id="close"><a href="javascript:window.close()" title="Zavøít" style="color: white;">x</a></div></div>'
		+ '<table border=0 cellspacing=0 cellpadding=0>'
		+ '<tr><td class="day-name">Po</td><td class="day-name">Út</td><td class="day-name">St</td><td class="day-name">Èt</td>'
		+ '<td class="day-name">Pá</td><td class="day-name">So</td><td class="day-name">Ne</td></tr>');
	
	i = 2 - week_day;
	while (i <= days) {
		cw.document.write('<tr>');
		for (j = 0; j < 7; j++) {
			if (i > 0 && i <= days) {
				cw.document.write('<td class="day"><a href="javascript:cal.day_sel(' + i + ');">' + i + '</a></td>');
			} else {
				cw.document.write('<td class="day-empty"></td>');
			}
			i++;
		}
		cw.document.write('</tr>');
	}
	cw.document.write('</table><body></html>');
	cw.document.close();
	cw.cal = this;
	cw.focus();
}


/*
   prechod na predchozi mesic
*/
function calendar_month_prev() {
	var month = this.date.getMonth();
	if (month == 0) {
		this.date.setMonth(11);
		var year = this.date.getFullYear();
		this.date.setFullYear(year - 1);
	} else {
		this.date.setMonth(month - 1);
	}
	this.generate();
}


/*
   prechod na nasledujici mesic
*/
function calendar_month_next() {
	var month = this.date.getMonth();
	if (month == 11) {
		this.date.setMonth(0);
		var year = this.date.getFullYear ();
		this.date.setFullYear(year + 1);
	} else {
		this.date.setMonth(month + 1);
	}
	this.generate();
}

/*
   vyber roku
*/
function calendar_year_sel(sel_item) {
	var year = sel_item.options[sel_item.selectedIndex].value;
	this.date.setFullYear(year);
	this.generate();
}

/*
   vyber dne, vlozeni datumu do rodic. okna, zavreni kalendare
*/
function calendar_day_sel(day) {
	var month = this.date.getMonth();
	var year = this.date.getFullYear();
	
	month++;
	var month_str = month + ' / ' + year;
	this.src_day.selectedIndex = day - 1;
	for (var i = 0; i < this.src_month.options.length; i++) {
		if (this.src_month.options[i].text == month_str) {
			this.src_month.selectedIndex = i;
			break;
		}
	}
	this.cal_window.close();
}


//changes departure month when arrival month is changed

    function amadChange( inM, inD, outM, outD ) {

        if ( !isBrowserSupp() ) {

            return;

        }



        var res = adjustDate( inM.options.selectedIndex, inD );

        if( res != 0 ) {

               outD.options.selectedIndex = 0;

               if ( outM.options.selectedIndex == 11 ) {

                    outM.options.selectedIndex = 0

               } else {

                    outM.options.selectedIndex=inM.options.selectedIndex + 1;

                    outD.options.selectedIndex = 1;

               }

        } else {

            outM.options.selectedIndex = inM.options.selectedIndex;

            if (outD.options.selectedIndex <= inD.options.selectedIndex) {

                outD.options.selectedIndex = inD.options.selectedIndex + 2;

            }

        }

        return;

    }





    function dmddChange( outM, outD ) {

        if ( !isBrowserSupp() ) {

            return;

        }



        adjustDate( outM.options.selectedIndex, outD );

        return;

    }

