var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];

function initSearchDropdowns()
{
	$('#sleeps, #pets').sSelect();
	$('#arrival-dropdown').bind('click.sSelect', dropArrivalDate);
	
	var lastFriday = getMostRecentFriday();
	var lastFridayYear = lastFriday.getFullYear();
	var lastFridayMonth = lastFriday.getMonth();
	addMonthOption("dontmind", "Don't Mind");
	for(var y = lastFridayYear; y < lastFridayYear + 2; y++) {
		for(var m = 0; m < 12; m++) {
			if(y != lastFridayYear || m >= lastFridayMonth)
				addMonthOption("month_"+m+"_"+y, monthNames[m]+" "+y)
		}
	}
	var newRow = document.createElement("li");
	$monthLis = $('#arrival-dropdown-months').find("li a");
	
	setArrivalDate($('#arrival').val());
}

function getMostRecentFriday()
{
	var today = new Date();
	var ret = new Date(today.getFullYear(), today.getMonth(), today.getDate());
	while(ret.getDay() != 5)
		ret.setDate(ret.getDate() - 1);
	return ret;
}

function dropArrivalDate(e)
{
	e.stopPropagation();

	$('.newList').not($(this).next()).hide() // from the jquery.stylish-select.js source (hide the other menus)
		.parent()
		.css('position', 'static')
		.removeClass('newListSelFocus');

	$('#arrival-dropdown-panel').toggle();
}

function addMonthOption(id, label)
{
	var newRow = document.createElement("li");
	newRow.innerHTML = "<a id='"+id+"' href='#'>"+label+"</a>";
	$('#arrival-dropdown-months').append(newRow);
	$('#'+id).bind('click.cottage', arrivalMonthClick);
}

$(document).bind('click.cottage',function(){
    $('#arrival-dropdown-panel').hide();
});

function arrivalMonthClick(e)
{
	$monthLis.removeClass('hiLite');
	var $clickedLi = $(e.target);
	$clickedLi.addClass('hiLite');
	
	var monthId = e.target.id;
	if(monthId == "dontmind") {
		makeArrivalSelection("dontmind", "Don't Mind", true);
		$('#arrival-dropdown-days-panel').hide();
	} else {
		var idParts = monthId.split(/_/g);
		if(idParts[0] == "month") {
			showArrivalMonths(idParts[1]*1, idParts[2]);
		}
	}
	
	return false;
}

function showArrivalMonths(month, year)
{
	$('#arrival-dropdown-days-panel').show();
	$('#arrival-dropdown-days').children().remove();
	addDayOption("dontmind_"+month+"_"+year, "Don't Mind");
	var lastFriday = getMostRecentFriday();
	var dt = new Date(year, month, 1);
	while(dt.getMonth() == month) {
		if(dt.getDay() == 5) {
			var day = dt.getDate();
			if(dt >= lastFriday)
				addDayOption("day_"+day+"_"+month+"_"+year, "Friday "+formatWithOrdinal(day));	
		}
		dt.setDate(dt.getDate() + 1);
	}
	makeArrivalSelection((month+1)+"_"+year, monthNames[month] + " "+year, false);
	$dayLis = $('#arrival-dropdown-days').find("li a");
}

function formatWithOrdinal(num)
{
	if(num == 1 || num == 21 || num == 31)
		return num+"st";
	else if(num == 2 || num == 22)
		return num+"nd";	
	else if(num == 3 || num == 23)
		return num+"rd";	
	else
		return num+"th";		
}

function addDayOption(id, label)
{
	var newRow = document.createElement("li");
	newRow.innerHTML = "<a id='"+id+"' href='#'>"+label+"</a>";
	$('#arrival-dropdown-days').append(newRow);
	$('#'+id).bind('click.cottage', arrivalDayClick);
}

function arrivalDayClick(e)
{
	$dayLis.removeClass('hiLite');
	var $clickedLi = $(e.target);
	$clickedLi.addClass('hiLite');

	var dayId = e.target.id;
	var idParts = dayId.split(/_/g);

	if(idParts[0] == "dontmind") {
		var month = idParts[1] * 1;
		makeArrivalSelection((month+1)+"_"+idParts[2], monthNames[month] + " "+idParts[2], true);
	} else {
		if(idParts[0] == "day") {
			var month = idParts[2] * 1;
			makeArrivalSelection(idParts[1]+"_"+(month+1)+"_"+idParts[3], formatWithOrdinal(idParts[1]) + " " + monthNames[month] + " "+idParts[3], true);	
		}
	}

	return false;
}

function makeArrivalSelection(val, label, hide)
{
	$('#arrival').val(val);
	$('#arrival-dropdown').text(label);
	if(hide)
		$('#arrival-dropdown-panel').hide();
}

function setArrivalDate(dateVal)
{
	var parts = dateVal.split(/_/g);
	if(dateVal == "dontmind") {
		makeArrivalSelection(dateVal, "Don't Mind", true);	
	} else if(parts.length == 2) {
		setArrivalDateMonth(parts[0]*1 - 1, parts[1]);
	} else if(parts.length == 3) {
		var month = parts[1]*1 - 1;
		var year = parts[2];
		setArrivalDateMonth(month, year);
		var dayLink = document.getElementById("day_"+parts[0]+"_"+month+"_"+year);
		if(dayLink != undefined) {
			var e = {target:dayLink};
			arrivalDayClick(e);
		}
	}
}

function setArrivalDateMonth(month, year)
{
	var monthLink = document.getElementById("month_"+month+"_"+year);
	if(monthLink != undefined) {
		var e = {target:monthLink};
		arrivalMonthClick(e);
	}
}

function checkSearchForm()
{
	if($('#arrival').val() == "") {
		window.alert("Please choose an arrival date");
		return false;
	}
	if($('#sleeps').val() == "") {
		window.alert("Please select your preference for the number of rooms");
		return false;
	}
	if($('#pets').val() == "") {
		window.alert("Please select your preference for pets");
		return false;
	}	
	return true;
}
