var today = new Date();
var curr_month = today.getMonth();
var curr_day = today.getDate();
var curr_year = today.getFullYear();
var curr_date = getDateObject(curr_month + "/01/" + curr_year, "/");
var month2 = "";
var year2 = "";
var prev_month = "";
var prev_year = "";
var next_month = "";
var next_year = "";
var prev_date = ""; 
var next_date = "";
var position_id = "";
var max_year = curr_year*1+1;
var max_month = curr_month*1;
var max_date = getDateObject(max_month + "/01/" + max_year, "/");
var form_id = "";
var cal_header = "";

if (language == "fr") {
    var month_array = new Array("Janvier", "F&eacute;vrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Ao&ucirc;t", "Septembre", "Octobre", "Novembre", "D&eacute;cembre");
    var next = "&gt;";
    var next_string = "Pr&eacute;c&eacute;dente";
    var prev = "&lt;";
    var prev_string = "Suivante";
    var close_string = "fermer cette fen&ecirc;tre";
} else if (language == "it") {
    var month_array = new Array("Gen", "Feb", "Mar", "Apr", "Mag", "Giu", "Lug", "Ago", "Set", "Ott", "Nov", "Dic");
    var next = "&gt;";
    var next_string = "successiva";
    var prev = "&lt;";
    var prev_string = "precedente";
    var close_string = "chiudere la finestra";
} else if (language == "es") {
    var month_array = new Array("Ene", "Feb", "Mar", "Abr", "Mar", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic");
    var next = "&gt;";
    var next_string = "siguiente";
    var prev = "&lt;";
    var prev_string = "anterior";
    var close_string = "cerrar la ventana";
} else if (language == "pl") {
    var month_array = new Array("stycze&#324;", "luty", "marzec", "kwiecie&#324;", "maj", "czerwiec", "lipiec", "sierpie&#324;", "wrzesie&#324;", "pa&#378;dziernik", "listopad", "grudzie&#324;");
    var next = "&gt;";
    var next_string = "Nast&#281;pny";
    var prev = "&lt;";
    var prev_string = "Poka&#380; wszystko";
    var close_string = "zamknij";
} else if (language == "de") {
    var month_array = new Array("Jan", "Feb", "M&auml;r", "Apr", "Mai", "Jun", "Jul", "Aug", "Set", "Okt", "Nov", "Dez");
    var next = "&gt;";
    var next_string = "Weiter";
    var prev = "&lt;";
    var prev_string = "Zur&uuml;ck";
    var close_string = "Schlie&szlig;en";
} else if (language == "jp") {
    var month_array = new Array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月");
    var next = "&gt;";
    var next_string = "次の月";
    var prev = "&lt;";
    var prev_string = "前の月";
    var close_string = "閉じる";
} else {
    var month_array = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
    var next = "next";
    var next_string = "next";
    var prev = "prev";
    var prev_string = "prev";
    var close_string = "close";
}
var month_string = "";
var month_string2 = "";
var year_string2 = "";

function generate_calendar(year, month, id, form_id, cal_header) {
    month = month*1;
    year = year*1;

    var first_of_month = new Date();
    first_of_month.setFullYear(year, month, 1);
    
    SetDisplayedMonth(year, month);


    var calendar = '<div>';
    
    /* calendar header */
    calendar += '<div class="cal_top clearfix">';
    calendar += '<div class="cal_title">' + cal_header + '</div>';
    calendar += '<div class="cal_close"><a href="javascript:popup_exit();" class="no_hover" title="' + close_string + '">X</a></div>';
    calendar += '</div>';

    calendar += '<div class="clearfix contents" style="border-bottom: 1px solid #666; background-color:#DDD;">';
    
    calendar += '<div style="float:left; width:195px; border-right:1px solid #666; border-right: 1px solid #666;">';
    /* prev month */
    if (prev_date <= curr_date) {
	calendar += '<div class="calendar_prev">' + prev + '</div>';
    } else {
	calendar += '<div class="calendar_prev"><a href="javascript: open_cal(' + prev_year + ', ' + prev_month + ', \'' + id + '\', \'' + form_id + '\',\'' + cal_header + '\');" class="no_hover" alt="' + prev_string +'">' + prev + '</a></div>';
    }

    /* display month - year */
    calendar += '<div style="float:right; padding: 2px 50px 2px 0;">' + month_string + ' - ' + year + '</div>';
    calendar += '</div>';
    
    calendar += '<div style="float:right; width:195px;">';
    calendar += '<div style="float:left; padding:2px 0 2px 50px;">' + month_string2 + ' - ' + year_string2 + '</div>';
    /* next month */
    if (next_date < max_date) {
	calendar += '<div class="calendar_next"><a href="javascript: open_cal(' + next_year + ', ' + next_month + ', \'' + id + '\', \'' + form_id + '\', \'' + cal_header + '\');" class="no_hover" alt="'+ next_string +'">' + next + '</a></div>'; 
    } else { 
	calendar += '<div class="calendar_next">' + next + '</div>';
    }
    calendar += '</div></div>';   


    /* start calendar contents */
    calendar += '<div style="padding: 1px 0;" class="clearfix">';
    calendar += generate_calendar_contents(month, year, "border");
    calendar += generate_calendar_contents(month2, year2, "none");
    calendar += '</div>';
    
    /* close */
    /*
    calendar += '<div style="text-align:center; width:100%; margin: 0 auto; border-top: 1px solid #666;">';
    calendar += '<div style="padding:3px 0;"><a href="javascript:popup_exit();" class="no_hover" >' + close_string +'</a></div>';
    calendar += '</div>';
    */


    calendar += '</div>';

    return calendar;
}

function generate_calendar_contents(month, year, border) {
    if (language == "fr") {
	var day_headings = ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'];
    } else if (language == "it") {
	var day_headings = ['D', 'L', 'M', 'M', 'G', 'V', 'S'];
    } else if (language == "es") {
	var day_headings = ['D', 'L', 'M', 'M', 'J', 'V', 'S'];
    } else if (language == "pl") {
	var day_headings = ['nie', 'pn', 'wt', '&#347;r', 'cz', 'pt', 'so'];
    } else {
	var day_headings = ['S', 'M', 'T', 'W', 'T', 'F', 'S'];
    }

    var day_field = position_id + 'Day';
    var month_field = position_id + 'Month';
    
    var max_days = 1000;
    var prev_month_days = new Date(year, month - 1, 1);
    var start_day = prev_month_days.getDay(); 
    var num_days = days_in_month(month, year);
    var prev_num_days = days_in_month(month - 1, year);
    var prev_start_day = prev_num_days - start_day + 1;

    var calendar = '<div style="float:left; width:196px; height: 100%;';
    if (border == "border") {   
        calendar += ' border-right: 1px #666 solid" id="left-calendar">';
    } else {
        calendar += '" id="right-calendar">';
    }

    /* display headings */
    calendar += '<div class="clearfix">';
    for (s = 0; s < 7; s++) {
	if (s==0 || s == 6) {
	    calendar += '<div class="weekend line_under">';
	} else {
	    calendar += '<div class="weekdays line_under">';
	}
	calendar += day_headings[s] + '</div>';
    }
    calendar += '</div>';

    /* display days */
    calendar += '<div class="clearfix" style="text-align:center">';
    var j = 1;
    var k = prev_start_day;
    var input_month;
    var input_year;
    var x;
    for (var i = 0; i < 42; i++) {
	/* days in the month */
	if ((i - start_day >= 0) && (i - start_day < num_days)) {
	    x = i - start_day + 1;
	    input_month = month;
	    input_year = year;
	} else if (i - start_day + 1 < num_days) { // next month
	    x = k;
            k++;
	    if (month == 1) { 
		input_month = 12;
		input_year = year - 1; 
	    } else { 
		input_month = month - 1;
		input_year = year; 
	    }
	} else { // prev month
	    x = j;
	    j++;
	    if (month == 12){ 
		input_month = 1;
		input_year = year + 1; 
	    } else { 
		input_month = month + 1;
		input_year = year; 
	    }
	}

	var day = new Date();
	day.setFullYear(input_year);
        day.setMonth(input_month - 1);
	day.setDate(x);

	if ((i % 7) == 0 || (i % 7) == 6) {
	    calendar += '<div class="weekend" ';
	    hover_off_class = "hover_off_weekend";
	} else {
	    calendar += '<div class="weekdays" ';
	    hover_off_class = "hover_off_weekdays";
	}

	if (day >= today) {
	    /*
	    if (input_month > month) {
		calendar += 'style="color:#000;">' + x + '</div>';
	    } else if (input_month < month) {
		calendar += 'style="color:#999;">' + x + '</div>';
	    */
	    if (input_month != month) {
		calendar += 'style="color:#999;">' + x + '</div>';
	    } else {
		calendar += 'onmouseover="this.className=\'hover_on\'" onmouseout="this.className=\'' + hover_off_class + '\'" class="hover_off"><a href="javascript:selectDate(' + x + ', ' +  input_month + ', ' +  input_year + ', \'' + form_id + '\', \'' + day_field + '\', \'' + month_field + '\')" >' + x + '</a></div>';
	    }
	} else {
	    calendar += 'style="color:#999;">' + x + '</div>';
	}

	if(((i)%7 == 6) && (i < 36)) {
	    if (i - start_day + 1 > num_days) {
                break;
	    }
	    calendar += '</div><div class="clearfix">';
	}
    }
    calendar += '</div>';
    calendar += '</div>';
    

    return calendar;
}

/* count how many days in month */
function days_in_month(m, y) {
    if (m == 0) {
	m = 1; y += 1;
    }
    var md = new Date(); 
    md.setDate(1);
    md.setFullYear(y);
    md.setMonth(m);
    
    md.setDate(md.getDate() - 1);
    
    return md.getDate();
}


function selectDate (selected_day, selected_month, selected_year, form_id, day_field, month_field) {

    if (form_id == "air") {
	if ((day_field == "depDay") || (month_field == "depMonth")) {
	    var mon_element = document.getElementById("depMonth");
	    document.getElementById("depDay").options[selected_day-1].selected=true;
	    mon_element.options[selected_month-1].selected=true;
	    if (typeof(mon_element.onchange) == "function") {
		mon_element.onchange();
	    }
	} else if ((day_field == "retDay") ||  (month_field == "retMonth")) { 
	    document.getElementById("retDay").options[selected_day-1].selected=true;
	    document.getElementById("retMonth").options[selected_month-1].selected=true;
	} else {
	    document.getElementById(day_field).options[selected_day-1].selected=true;
	    document.getElementById(month_field).options[selected_month-1].selected=true;

	}
	getObj('popup').style.display = "none";

    } else if (form_id == "hotel") {
	if ((day_field == "arrDay") || (month_field == "arrMonth")){
	    var mon_element = document.getElementById("arrMonth");
	    document.getElementById("arrDay").options[selected_day-1].selected=true;
	    mon_element.options[selected_month-1].selected=true;
	    if (typeof(mon_element.onchange) == "function") {
		mon_element.onchange();
	    }
	} else if ((day_field == "depDay") ||  (month_field == "depMonth")) { 
	    document.getElementById("depDay").options[selected_day-1].selected=true;
	    document.getElementById("depMonth").options[selected_month-1].selected=true;
	}
	getObj('popup').style.display = "none";

	if ((day_field == "arrDay") || (month_field == "arrMonth")) {
	    document.getElementById("arrDate").value = selected_month + "/" + selected_day + "/" + selected_year;
	} else { 
	    document.getElementById("depDate").value = selected_month + "/" + selected_day + "/" + selected_year;
	}

    } else if (form_id == "car") {
	if ((day_field == "pickupDay") || (month_field == "pickupMonth")) {
	    var mon_element = document.getElementById("pickupMonth");
	    document.getElementById("pickupDay").options[selected_day-1].selected=true;
	    mon_element.options[selected_month-1].selected=true;
	    if (typeof(mon_element.onchange) == "function") {
		mon_element.onchange();
	    }
	} else if ((day_field == "dropoffDay") ||  (month_field == "dropoffMonth")) { 
	    document.getElementById("dropoffDay").options[selected_day-1].selected=true;
	    document.getElementById("dropoffMonth").options[selected_month-1].selected=true;
	}
	getObj('popup').style.display = "none";

/*
	if((day_field == "pickupDay") || (month_field == "pickupMonth")){
	    document.getElementById("pickupDate").value = selected_month + "/" + selected_day + "/" + selected_year;
	} else { 
	    document.getElementById("dropoffDate").value = selected_month + "/" + selected_day + "/" + selected_year;
	}
*/    
    }
}



function open_cal(year, month, id, formId, cal_header) {
    if(month.length == 0)
	month = curr_month;
    if(year.length == 0)
	year = curr_year;
    position_id = id;
    form_id = formId;

    document.getElementById('calendar_field').innerHTML = generate_calendar(year, month, id, form_id, cal_header);
    setBorder(); 
}


function setBorder() {
    h1 = document.getElementById("left-calendar");
    h2 = document.getElementById("right-calendar");
    boxh1 = h1.clientHeight;
    boxh2 = h2.clientHeight;
    if (boxh1 >= boxh2) {
	document.getElementById("right-calendar").style.height = boxh1 + "px";
    } else {
	document.getElementById("left-calendar").style.height = boxh2 + "px";
    }
}

// Sets the currently-displayed month object
function SetDisplayedMonth(year, month) {
    month_string = month_array[month-1];
    if (month == 1) {
	prev_month = 12; 
	prev_year = year - 1;
	next_month = month + 1;
	next_year = year;
	month_string2 = month_array[month];
	year_string2 = year;
    } else if (month == 12) {
	prev_month = month - 1; 
	prev_year = year;
	next_month = 1;
	next_year = year + 1;
	month_string2 = month_array[0];
	year_string2 = year+1;
    } else {
	prev_month = month - 1; 
	prev_year = year;
	next_month = month + 1;
	next_year = year;
	month_string2 = month_array[month];
	year_string2 = year;
    }

    month2 = next_month;
    year2 = next_year;

    // Creates the previous and next month objects
    prev_date = getDateObject(prev_month + "/01/" + prev_year, "/");
    next_date = getDateObject(next_month + "/01/" + next_year, "/");
}



function getDateObject(dateString,dateSeperator) {
    //This function return a date object after accepting 
    //a date string ans dateseparator as arguments
    var curValue=dateString;
    var sepChar=dateSeperator;
    var curPos=0;
    var cDate,cMonth,cYear;

    //extract day portion
    curPos=dateString.indexOf(sepChar);
    cDate=dateString.substring(0,curPos);

    //extract month portion				
    endPos=dateString.indexOf(sepChar,curPos+1);			
    cMonth=dateString.substring(curPos+1,endPos);

    //extract year portion				
    curPos=endPos;
    endPos=curPos+5;			
    cYear=curValue.substring(curPos+1,endPos);

    //Create Date Object
    dtObject=new Date(cYear,cMonth,cDate);	
    return dtObject;
}


var BrowserDetect = {
    init: function () {
	this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
	this.version = this.searchVersion(navigator.userAgent)
		|| this.searchVersion(navigator.appVersion)
		|| "an unknown version";
	this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
	for (var i=0;i<data.length;i++) {
	    var dataString = data[i].string;
	    var dataProp = data[i].prop;
	    this.versionSearchString = data[i].versionSearch || data[i].identity;
	    if (dataString) {
		if (dataString.indexOf(data[i].subString) != -1)
		    return data[i].identity;
	    }
	    else if (dataProp)
		return data[i].identity;
	}
    },
    searchVersion: function (dataString) {
	var index = dataString.indexOf(this.versionSearchString);
	if (index == -1) return;
	return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
	{       string: navigator.userAgent,
		subString: "OmniWeb",
		versionSearch: "OmniWeb/",
		identity: "OmniWeb"
	},
	{
		string: navigator.vendor,
		subString: "Apple",
		identity: "Safari"
	},
	{
		prop: window.opera,
		identity: "Opera"
	},
	{
		string: navigator.vendor,
		subString: "iCab",
		identity: "iCab"
	},
	{
		string: navigator.vendor,
		subString: "KDE",
		identity: "Konqueror"
	},
	{
		string: navigator.userAgent,
		subString: "Firefox",
		identity: "Firefox"
	},
	{
		string: navigator.vendor,
		subString: "Camino",
		identity: "Camino"
	},
	{       // for newer Netscapes (6+)
		string: navigator.userAgent,
		subString: "Netscape",
		identity: "Netscape"
	},
	{
		string: navigator.userAgent,
		subString: "MSIE",
		identity: "Explorer",
		versionSearch: "MSIE"
	},
	{
		string: navigator.userAgent,
		subString: "Gecko",
		identity: "Mozilla",
		versionSearch: "rv"
	},
	{               // for older Netscapes (4-)
		string: navigator.userAgent,
		subString: "Mozilla",
		identity: "Netscape",
		versionSearch: "Mozilla"
	}
    ],
    dataOS : [
	{
	    string: navigator.platform,
	    subString: "Win",
	    identity: "Windows"
	},
	{
	    string: navigator.platform,
	    subString: "Mac",
	    identity: "Mac"
	},
	{
	    string: navigator.platform,
	    subString: "Linux",
	    identity: "Linux"
	}
    ]
};

BrowserDetect.init();



