/*
 * $ Default javascript file
 *
 * Copyright (c) 2007 That's-id Multimedia
 */

/*------------------------------------------------------------------------------
	Methode om CSS background-image cache te forceren voor IE6
------------------------------------------------------------------------------*/

try {
  document.execCommand("BackgroundImageCache", false, true);
} catch(err) {}


/*------------------------------------------------------------------------------
	onLoad handler
------------------------------------------------------------------------------*/

function onLoad()
{

}

/*------------------------------------------------------------------------------*/

var bookingType, bookingDate = new Date();
function setBookingForm()
{

	$(document).ready(function()
	{
		$('#SFRM_att_type1').focus(function(){ bookingType='dinner'; setCalendar(); });
		$('#SFRM_att_type2').focus(function(){ bookingType='hightea'; setCalendar(); });
		$('#SFRM_att_type3').focus(function(){ bookingType='lunch'; setCalendar(); });
		$.validator.addValidator('bookdate', validateBookDate);
		$.validator.addValidator('booktime', validateBookTime);
		$('form#frm_reserveren').validatorEnable();
		setCalendar();
		
		setDefaultCalendar();
	});
		
}
/*
 * Set reservation type by url
 *  */
function setDefaultCalendar()
{
	var uri = new String(window.location);
	if(uri.indexOf('#lunch') > 0) {
			$('#SFRM_att_type3').attr('checked','checked');
			bookingType='lunch';
			setCalendar();
	}
	if(uri.indexOf('#hightea') > 0) {
			$('#SFRM_att_type2').attr('checked','checked');
			bookingType='hightea';
			setCalendar();
	}
	if(uri.indexOf('#dinner') > 0) {
			$('#SFRM_att_type1').attr('checked','checked');
			bookingType='dinner';
			setCalendar();
	}
}

function setCalendar()
{
	$('#date_picker').removeDatepicker().attachDatepicker({
		dateFormat: 'yy-mm-dd',
		firstDay: 1,
		defaultDate: bookingDate,
		minDate: 0,
		maxDate: '+12m',
		showAnim: 'fadeIn',
		speed: 'fast',
		beforeShowDay: isValidDay,
		onSelect: setBookingDate
	});
	setTimeField(true);
}

function setBookingDate(date)
{
	$('#SFRM_att_datum').val(date);
	bookingDate = new Date(date.replace(/^(\d{4})-(\d{2})-(\d{2})$/, '$2/$3/$1'));
	setTimeField(true);
}

function setTimeField(visible)
{
	var day = getTimeRange(bookingDate);
	if (typeof day != 'object') visible = false;

	if (visible)
	{
		var val = $('#SFRM_att_tijd_hour option:selected').val();
		var max = parseInt(day.to.substring(0,2));
		var j, html = '<option value="">Uur</option>';
		for (var i=parseInt(day.from.substring(0,2)); i <= max;i++)
		{
			j = (i<10 ? '0'+(i) : i);
			html += '<option value="'+j+'"'+(val==j ? 'selected="selected"' : '')+'>'+j+'</option>';
		}
		$('#SFRM_att_tijd_hour').html(html);
		$('#SFRM_att_tijd_hour, #SFRM_att_tijd_min').attr('disabled','');
	}
	else
	{
		$('#SFRM_att_tijd_hour, #SFRM_att_tijd_min').attr('disabled','disabled');
	}
}

function isValidDay(pDate)
{
	var status = true;
	var className = null;
	var date = $.datepicker.formatDate('yy-mm-dd', pDate);

	// full?
	$.each(config.full, function()
	{
		if (date >= this.from && date <= this.to)
		{
			status = false;
			className = 'datepicker_full';
			return;
		}
	});

	// holiday?
	$.each(config.closed, function()
	{
		if (date >= this.from && date <= this.to)
		{
			status = false;
			className = 'datepicker_holiday';
			return;
		}
	});

	// open?
	if (status)
	{
		status = (typeof getTimeRange(pDate) == 'object');
		if (!status) className = 'datepicker_closed';
	}

	// future?
	if (status)
	{
		var today =  $.datepicker.formatDate('yy-mm-dd', new Date());
		var end = (parseInt(today.substring(0,4))+1)+today.substring(4);
		status = date >= today && date < end;
		if (!status) className = 'datepicker_off';
	}

	return [status, className];
}

function validateBookDate(name, value, validator, form, attr)
{
	var msg = 'U kunt niet op deze dag reserveren.';
	var ret = isValidDay(bookingDate);
	var result = (ret[0]);
	return {name: name, result: result, msg: msg, validator: validator};
}

function validateBookTime(name, value, validator, form, attr)
{
	//var days = bookingType=='hightea' ? config.hightea : config.dinner;
	var days = getConfigDays();
	var msg, result = true;
	if (bookingDate)
	{
		var day = getTimeRange(bookingDate);
		if (day)
		{
			if (value < day.from || value > day.to)
			{
				result = false;
				msg = 'U kunt niet op dit tijdstip reserveren. Openingstijden op de geselecteerde dag: '+day.from+' t/m '+day.to+' uur';
			}
		}
	}

	return {name: name, result: result, msg: msg, validator: validator};
}

function getTimeRange(date)
{
	if (!date) return false;
	//var days = bookingType=='hightea' ? config.hightea : config.dinner;
	var days = getConfigDays();
	var day = days[date.getDay()]
	return (typeof day == 'object' ? day : false);
}

function getConfigDays()
{
	if(bookingType=='hightea') {
		return config.hightea;
	}
	else if(bookingType=='lunch') {
		return config.lunch;
	}
	else {
		return config.dinner;
	}
}

/*------------------------------------------------------------------------------
	AJAX handlers
------------------------------------------------------------------------------*/

function setIndex(pub_Id, page, archive)
{
	container = 'index_content';
	$.get('/dynamics/getindex.php',{ pub_Id: pub_Id, page: page, archive: archive },
		function(msg) {
			document.getElementById('index_container').innerHTML=msg;
		});
}

function subscribe(validatedOK,form,data)
{
	if (validatedOK)
	{
		$.ajax({
			type: 'POST',
			url: '/dynamics/subscribe.php',
			data: $(':input', form).serialize(),
			success: function(content){
				$('#subscribe').html(content);
			},
			error: function()
			{
				alert('Inschrijven is niet gelukt. Probeert u het aub nogmaals.');
			}
		});
	}
	return false;
}

/*------------------------------------------------------------------------------
	Various
------------------------------------------------------------------------------*/

function checkCookies(redirect)
{
	var cookieName = 'testCookie';
	document.cookie = cookieName + '=cookieValue';
	var cookiesEnabled = document.cookie.indexOf(cookieName) != -1;
	if (!cookiesEnabled)
	{
		location.href=redirect;
	}
}
