// Has the calendar been clicked
calClick = false;
document.onmouseup = calOut;
document.onselectstart=function(){ if(calClick) return false; else return true; }
ajax_response	= '';		// Global value to store the respose from Ajax so that it can be used in other functions

// Images to pre-load
var cal6 = new Image(); cal6.src = 'images/calendar/06_white.png';
var cal7 = new Image(); cal7.src = 'images/calendar/07_white.png';
var cal8 = new Image(); cal8.src = 'images/calendar/08_white.png';
var cal9 = new Image(); cal9.src = 'images/calendar/09_white.png';
var cal10 = new Image(); cal10.src = 'images/calendar/10_white.png';
var cal11 = new Image(); cal11.src = 'images/calendar/11_white.png';
var cal12 = new Image(); cal12.src = 'images/calendar/12_white.png';
var cal13 = new Image(); cal13.src = 'images/calendar/13_white.png';
var cal14 = new Image(); cal14.src = 'images/calendar/14_white.png';
var cal15 = new Image(); cal15.src = 'images/calendar/15_white.png';
var cal16 = new Image(); cal16.src = 'images/calendar/16_white.png';

var cal27 = new Image(); cal27.src = 'images/calendar/06_red.png';
var cal17 = new Image(); cal17.src = 'images/calendar/07_red.png';
var cal18 = new Image(); cal18.src = 'images/calendar/08_red.png';
var cal19 = new Image(); cal19.src = 'images/calendar/09_red.png';
var cal20 = new Image(); cal20.src = 'images/calendar/10_red.png';
var cal21 = new Image(); cal21.src = 'images/calendar/11_red.png';
var cal22 = new Image(); cal22.src = 'images/calendar/12_red.png';
var cal23 = new Image(); cal23.src = 'images/calendar/13_red.png';
var cal24 = new Image(); cal24.src = 'images/calendar/14_red.png';
var cal25 = new Image(); cal25.src = 'images/calendar/15_red.png';
var cal26 = new Image(); cal26.src = 'images/calendar/16_red.png';

/**
 * Submits a query via Ajax and runs a success function if required
 *
 * @return					void
 * @author					Nigel Wells
 * @version					1.0.07.11.09
 * @param function_name		The function that will be called in lib_ajaxrequest.php
 * @param criteria			Criteria to be sent to the php function
 * @param success_function	If set then this function will be called after the Ajax request has been successful
							- The response from Ajax will be stored in a global virable "ajax_response" which can then be accessed from function_name()
 * @param boolAlert			If true then it will alert the response returned from Ajax - Can be useful for debuging
 */
function loadAjaxFunction(function_name, criteria, success_function, boolAlert) {
	var strResponse = '';
	var status = false;

	if(criteria != '') criteria = "&" + criteria;
	AjaxRequest.get(
		{
		  'url' : 'includes/template/ajax.php?ajax_function=' + function_name + criteria
		  ,'onSuccess':function(req){ 
			  var status = true;
			  strResponse = req.responseText; 
			  if(boolAlert === true) alert(strResponse);
			  if(success_function != '') {
				  ajax_response = strResponse;
				  success_function += '()';
				  setTimeout(success_function, 1);
			  }
		  }
		  ,'onError':function(req){ alert(req.responseText + function_name); }
		}
	);
}

/**
 * Submits a form via Ajax and runs a success function if required
 *
 * @return					void
 * @author					Nigel Wells
 * @version					1.0.08.07.03
 * @param form				Form object - NOTE: This must be the object and not just the name of the form
 * @param function_name		The function that will be called in lib_ajaxrequest.php
 * @param success_function	If set then this function will be called after the Ajax request has been successful
							- The response from Ajax will be stored in a global virable "ajax_response" which can then be accessed from function_name()
 * @param boolAlert			If true then it will alert the response returned from Ajax - Can be useful for debuging
 */
function submitAjaxForm(form, function_name, success_function, boolAlert) {
	AjaxRequest.submit(
		form
		,{
			'url' : 'includes/template/ajax.php?ajax_function=' + function_name
			,'onSuccess' : function (req) {
				if (boolAlert === true) alert(req.responseText);
				if (success_function != '') {
					ajax_response = req.responseText;
					success_function += '()';
					setTimeout(success_function, 1);
				}
			}
			,'onError' : function (req) {form.submit()}
		}
	);
}

function refreshMyFestival() {
	loadAjaxFunction('loadMyFestival', '', 'loadMyFestival', false);
}

function loadMyFestival() {
	document.getElementById('id_myFestival').innerHTML = ajax_response;
}

/* Events for the large listings of the events page - they have different images to appear */
function addLargeMyFestival() {
	if(parseInt(ajax_response) > 0) {
		document.getElementById('id_event_' + ajax_response).innerHTML = '<img src="images/event-listing_button_remove.png" width="135" height="23" alt="" style="cursor: pointer;" onclick="loadAjaxFunction(\'removeMyFestival\', \'eventid=' + ajax_response + '\', \'removeLargeMyFestival\', false);" />';
	} else alert("You need to login or signup first before you can add to your My Festival account");
}

function removeLargeMyFestival() {
	if(parseInt(ajax_response) > 0) {
		document.getElementById('id_event_' + ajax_response).innerHTML = '<img src="images/event-listing_button_ad.png" width="123" height="23" alt="" style="cursor: pointer;" onclick="loadAjaxFunction(\'addMyFestival\', \'eventid=' + ajax_response + '\', \'addLargeMyFestival\', false);" />';
	} else alert("You need to login or signup first before you can remove from your My Festival account");
}

function displayFestivalEvents() {
	document.getElementById('content_listings').innerHTML = ajax_response;
	startCarousel();
}

function calOver(d) { 
	if(!calClick) document.getElementById("id_from").value = d; 
	document.getElementById("id_to").value = d;
	calHighlight()
}

function calOut() {
	// Only proceed if the calendar has been used
	if(calClick) {
		// Swap f and t around if t is greater then f
		var f = parseInt(document.getElementById("id_from").value);
		var t = parseInt(document.getElementById("id_to").value);
		if(f > t) {
			document.getElementById("id_to").value = f;
			document.getElementById("id_from").value = t;
		}
		document.getElementById("id_from_old").value = f;
		document.getElementById("id_to_old").value = t;
		// Reset category
		document.getElementById("categoryid").value = '0';
		// Submit the form
		calClick = false;
		submitAjaxForm(document.getElementById('form_calendar'), 'getFestivalEvents', 'displayFestivalEvents', false);
	}
}

function calDown(d) { 
	document.getElementById("id_from").value = d;
	document.getElementById('event_search').value = 'S E A R C H';
	document.getElementById('id_search_event').value = '';
	document.getElementById('categoryid').value = '';
	calClick = true;
	document.body.focus();
}

function calHighlight() {
	var f = parseInt(document.getElementById("id_from").value);
	var t = parseInt(document.getElementById("id_to").value);
	var img	= '';
	var day = 0;
	var arrDays = Array();

	// Resets the text selection focus for FF
	document.body.focus();

	// Swap f and t around if t is greater then f
	if(f > t) {
		f = parseInt(document.getElementById("id_to").value);
		t = parseInt(document.getElementById("id_from").value);
	}

	for(var i = 6; i <= 16; i++) {
		day = i;
		if(day < 10) day = '0' + day;
		if(i >= f && i <= t) img = 'white';
		else img = 'red';
		// If the day is an event day then keep it highlighted
		for(var a = 0; a < arrDays.length; a++) if(parseInt(arrDays[a]) == i) img = 'white';
		document.getElementById("id_calendar_" + i).style.backgroundImage = 'url(images/calendar/' + day + '_' + img + '.png)';
	}
}

function calReset() {
	if(!calClick) {
		document.getElementById("id_to").value = document.getElementById("id_to_old").value;
		document.getElementById("id_from").value = document.getElementById("id_from_old").value;
		calHighlight();
	}
}

function eS(categoryid) {
	if(document.getElementById('categoryid')) {
		document.getElementById('categoryid').value = categoryid;
		document.getElementById("id_from_old").value = '6';
		document.getElementById("id_to_old").value = '16';
		document.getElementById('id_search_event').value = '';
		document.getElementById('event_search').value = 'S E A R C H';
		calClick = false;
		calReset();
		submitAjaxForm(document.getElementById('form_calendar'), 'getFestivalEvents', 'displayFestivalEvents', false);
	} else {
		window.location.href = 'index.php?categoryid=' + categoryid;
	}
}

function dC(day) {
	calOver(day)
	calDown(day);
	calOut();
}

function eSearch() {
	var search = document.getElementById('event_search').value;
	if(search != 'S E A R C H') {
		if(document.getElementById('id_search_event')) {
			document.getElementById('categoryid').value = '';
			document.getElementById("id_from_old").value = '6';
			document.getElementById("id_to_old").value = '16';
			document.getElementById('id_search_event').value = search;
			calClick = false;
			calReset();
			submitAjaxForm(document.getElementById('form_calendar'), 'getFestivalEvents', 'displayFestivalEvents', false);
		} else {
			window.location.href = 'index.php?s=' + search;
		}
	}
}

function search_enter(e) {
	if(window.event) { // IE
		keynum = e.keyCode;
	} else if(e.which) { // Netscape/Firefox/Opera
		keynum = e.which;
	}
	if(keynum == 13) eSearch();
}

function showVenue(venueid) {
	if(document.getElementById('event' + venueid).style.display == 'none') {
		document.getElementById('event' + venueid).style.display = 'block';
	} else {
		document.getElementById('event' + venueid).style.display = 'none';
	}
}