Date.prototype.addDays = function(count) {
	this.setDate(this.getDate() + parseInt(count));
};

Date.prototype.toTS = function() {
	return Math.round(this.getTime() / 1000);
};

Date.prototype.isBetween = function(start, end) {
	return (this.toTS() >= start.toTS() && this.toTS() <= end.toTS());
};

var DatePair = function(start, end)
{
	this.start = start;
	this.end = end;
}

DatePair.prototype.overlaps = function(pair)
{
	var widest, narrowest;
	
	if ((this.end.toTS() - this.start.toTS()) > (pair.end.toTS() - pair.start.toTS()))
	{
		widest = this;
		narrowest = pair;
	}
	
	else
	{
		widest = pair;
		narrowest = this;
	}
	
	//console.log(widest);
	//console.log(narrowest);
	
	//console.log(narrowest.start.isBetween(widest.start, widest.end));
	//console.log(narrowest.end.isBetween(widest.start, widest.end));
	
	return ((narrowest.start.isBetween(widest.start, widest.end) || narrowest.end.isBetween(widest.start, widest.end)));
}

$(function () {
	$('#opening_hours_link').fancybox({
		"frameWidth"  : 640,
		"frameHeight" : 410
	});
});

// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
// Months are zero indexed! Months are zero indexed! Months are zero indexed! 
var opening_dates = {};

opening_dates.hotelgoldriver = 
[
	new DatePair(new Date(2011,  3, 21), new Date(2011,  3, 24)),
	new DatePair(new Date(2011,  3, 29), new Date(2011,  3, 30)),
	new DatePair(new Date(2011,  4,  6), new Date(2011,  4,  7)),
	new DatePair(new Date(2011,  4, 13), new Date(2011,  4, 14)),
	new DatePair(new Date(2011,  4, 20), new Date(2011,  4, 21)),
	new DatePair(new Date(2011,  4, 27), new Date(2011,  9,  1)),
	new DatePair(new Date(2011,  9,  7), new Date(2011,  9,  8)),
	new DatePair(new Date(2011,  9, 14), new Date(2011,  9, 15)),
	new DatePair(new Date(2011,  9, 21), new Date(2011,  9, 31)),
	new DatePair(new Date(2011, 10,  4), new Date(2011, 10,  5)),
	new DatePair(new Date(2011, 10, 11), new Date(2011, 10, 12)),
	new DatePair(new Date(2011, 11,  2), new Date(2011, 11, 10)),
	new DatePair(new Date(2011, 11, 26), new Date(2012,  0,  7)),
	
	new DatePair(new Date(2012,  3, 4), new Date(2012,  3, 14)),
	new DatePair(new Date(2012,  3, 20), new Date(2012,  3, 21)),
	new DatePair(new Date(2012,  3, 27), new Date(2012,  4, 1)),
	new DatePair(new Date(2012,  4, 4), new Date(2012,  4, 5)),
	new DatePair(new Date(2012,  4, 11), new Date(2012,  4, 12)),
	new DatePair(new Date(2012,  4, 18), new Date(2012,  4, 19)),
	new DatePair(new Date(2012,  4, 25), new Date(2012,  8, 29)),
	new DatePair(new Date(2012,  9, 5), new Date(2012,  9, 6)),
	new DatePair(new Date(2012,  9, 11), new Date(2012,  9, 13)),
	new DatePair(new Date(2012,  9, 19), new Date(2012,  9, 20)),
	new DatePair(new Date(2012,  9, 26), new Date(2012,  9, 27)),
	new DatePair(new Date(2012,  9, 31), new Date(2012,  10, 3)),
	new DatePair(new Date(2012,  10, 9), new Date(2012,  10, 10)),
	new DatePair(new Date(2012,  10, 16), new Date(2012,  10, 17)),
	new DatePair(new Date(2012,  10, 30), new Date(2012,  11, 1)),
	new DatePair(new Date(2012,  11, 5), new Date(2012,  11, 8)),
	new DatePair(new Date(2012,  11, 21), new Date(2012,  11, 31)),
	new DatePair(new Date(2013,  0, 4), new Date(2013,  0, 5))
];

opening_dates.hotelportaventura = 
[
	new DatePair(new Date(2011,  3,  8), new Date(2011,  9, 31)),
	new DatePair(new Date(2011, 10,  4), new Date(2011, 10,  5)),
	new DatePair(new Date(2011, 10, 11), new Date(2011, 10, 12)),
	new DatePair(new Date(2011, 10, 18), new Date(2011, 10, 19)),
	new DatePair(new Date(2011, 10, 25), new Date(2011, 10, 26)),
	new DatePair(new Date(2011, 11,  2), new Date(2011, 11, 10)),
	new DatePair(new Date(2011, 11, 16), new Date(2011, 11, 17)),
	new DatePair(new Date(2011, 11, 23), new Date(2012,  0,  7)),
	
	new DatePair(new Date(2012,  2,  30), new Date(2012,  10, 3)),
	new DatePair(new Date(2012,  10,  9), new Date(2012,  10, 10)),
	new DatePair(new Date(2012,  10,  16), new Date(2012,  10, 17)),
	new DatePair(new Date(2012,  10,  23), new Date(2012,  10, 24)),
	new DatePair(new Date(2012,  10,  30), new Date(2012,  11, 1)),
	new DatePair(new Date(2012,  11,  5), new Date(2012,  11, 8)),
	new DatePair(new Date(2012,  11,  14), new Date(2012,  11, 15)),
	new DatePair(new Date(2012,  11,  21), new Date(2013,  0, 5))
];

opening_dates.hotelcaribe =
[
	new DatePair(new Date(2011,  3, 15), new Date(2011,  9,  1)),
	new DatePair(new Date(2011,  9,  7), new Date(2011,  9,  8)),
	new DatePair(new Date(2011,  9, 14), new Date(2011,  9, 15)),
	new DatePair(new Date(2011,  9, 21), new Date(2011,  9, 22)),
	new DatePair(new Date(2011,  9, 28), new Date(2011,  9, 31)),
	
	new DatePair(new Date(2012,  3, 4), new Date(2012,  8,  29)),
	new DatePair(new Date(2012,  9, 5), new Date(2012,  9,  6)),
	new DatePair(new Date(2012,  9, 11), new Date(2012,  9,  13)),
	new DatePair(new Date(2012,  9, 19), new Date(2012,  9,  20)),
	new DatePair(new Date(2012,  9, 26), new Date(2012,  9,  27)),
	new DatePair(new Date(2012,  9, 31), new Date(2012,  10,  3))
];

opening_dates.hotelelpaso = 
[
	new DatePair(new Date(2011, 04, 20), new Date(2011, 9, 1)),
	
	new DatePair(new Date(2012, 4, 25), new Date(2012, 8, 15))
];

opening_dates.themepark =
[	
	new DatePair(new Date(2011, 3, 8), new Date(2011, 10, 1)),
	new DatePair(new Date(2011, 10, 5), new Date(2011, 10, 6)),
	new DatePair(new Date(2011, 10, 12), new Date(2011, 10, 13)),
	new DatePair(new Date(2011, 10, 19), new Date(2011, 10, 20)),
	new DatePair(new Date(2011, 10, 26), new Date(2011, 10, 27)),
	new DatePair(new Date(2011, 11, 3), new Date(2011, 11, 11)),
	new DatePair(new Date(2011, 11, 17), new Date(2011, 11, 18)),
	new DatePair(new Date(2011, 11, 24), new Date(2012, 10, 4)),
	new DatePair(new Date(2012, 10, 10), new Date(2012, 10, 11)),
	new DatePair(new Date(2012, 10, 17), new Date(2012, 10, 18)),
	new DatePair(new Date(2012, 10, 24), new Date(2012, 10, 25)),
	new DatePair(new Date(2012, 11, 1), new Date(2012, 11, 2)),
	new DatePair(new Date(2012, 11, 6), new Date(2012, 11, 9)),
	new DatePair(new Date(2012, 11, 15), new Date(2012, 11, 16)),
	new DatePair(new Date(2012, 11, 22), new Date(2012, 11, 31))
];

function show_opening_hours()
{
	var date_parts = $('#srhfrm_departure_date').val().split('-');
	
	var departure_date = new Date(date_parts[0], date_parts[1]-1, date_parts[2]);
	var return_date = new Date(date_parts[0], date_parts[1]-1, date_parts[2]);
	
	return_date.addDays($('#srhfrm_duration').val().split('-')[0]);
	
	var holiday = new DatePair(departure_date, return_date);
	
	var closed_dates =
	[
		new DatePair(new Date(2010, 11, 1), new Date(2010, 11, 3)),
		new DatePair(new Date(2010, 11, 9), new Date(2010, 11, 10)),
		new DatePair(new Date(2010, 11, 13), new Date(2010, 11, 17)),
		new DatePair(new Date(2010, 11, 20), new Date(2010, 11, 24)),
		
		new DatePair(new Date(2011, 0, 10), new Date(2011, 2, 26)),
		
		new DatePair(new Date(2011, 10, 2), new Date(2011, 10, 4)),
		new DatePair(new Date(2011, 10, 7), new Date(2011, 10, 11)),
		new DatePair(new Date(2011, 10, 14), new Date(2011, 10, 18)),
		new DatePair(new Date(2011, 10, 21), new Date(2011, 10, 25)),
		new DatePair(new Date(2011, 10, 28), new Date(2011, 10, 30)),
		
		new DatePair(new Date(2011, 11, 1), new Date(2011, 11, 2)),
		new DatePair(new Date(2011, 11, 12), new Date(2011, 11, 16)),
		new DatePair(new Date(2011, 11, 19), new Date(2011, 11, 23)),
		
		new DatePair(new Date(2012, 0, 7), new Date(2012, 2, 29)),
		new DatePair(new Date(2012, 10, 5), new Date(2012, 10, 9)),
		new DatePair(new Date(2012, 10, 12), new Date(2012, 10, 16)),
		new DatePair(new Date(2012, 10, 19), new Date(2012, 10, 23)),
		new DatePair(new Date(2012, 10, 26), new Date(2012, 10, 30)),
		new DatePair(new Date(2012, 11, 3), new Date(2012, 11, 5)),
		new DatePair(new Date(2012, 11, 10), new Date(2012, 11, 14)),
		new DatePair(new Date(2012, 11, 17), new Date(2012, 11, 21))
		
	];
	
	// console.log("Dep TS: " + departure_date.toTS());
	// console.log("End TS: " + return_date.toTS());
	
	var show_popup = false;
	
	for (var a=0; a<closed_dates.length; a++)
	{
		if (closed_dates[a].overlaps(holiday))
		{
			//console.log("The problem was: ");
			//console.log(closed_dates[a]);
			show_popup = true;
			break;
		}
	}
	
	if (show_popup)
	{
		$('#opening_hours_link').click();
	}
	
	return !show_popup;
}
