
var current_number = 3;
var beer_list_reference = 0;

var xmlhttpBeerList;
var xmlhttpBeerRating;
var xmlhttpBeerComments;

var xmlhttpCreateNewBeerList;
var xmlhttpConfirmBeerList;
var xmlhttpAddToBeerList;
var xmlhttpRemoveFromBeerList;
var xmlhttpGetBeerList;
var xmlhttpStylesDropBox;
var xmlhttpBarsDropBox;
var xmlhttpBreweriesDropBox;

var global_beerid;
var global_rating;
var global_beer_list;
var global_beer_list_id;

var global_action1 = 0;
var global_action2 = 0;
var global_action4 = 0;

function showBeerListResults() {
	
	global_action1 = document.getElementById("styles_drop").value;
	global_action2 = document.getElementById("bars_drop").value;
	global_action4 = document.getElementById("breweries_drop").value;
	
	//alert("Bar = " + global_action2 + "\nBrewery = " + global_action4 + "\nStyle = " + global_action1);
	
	if ((global_action1 == 0) && (global_action2 == 0) && (global_action4 == 0)) { 
		document.getElementById("beer_list").innerHTML = "";
			//return;
	}
	
	// show loading logo
	document.getElementById("beer_list").innerHTML = "<div align='center'><p style='margin-top: 30px'><img src='/images/loading.gif' width='32' height='32' alt='Loading beer list' /></p></div>";
	
	xmlhttpBeerList = GetXmlHttpObject();
	
	if (xmlhttpBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/beerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&action1=" + global_action1;
	url = url + "&action2=" + global_action2;
	url = url + "&action4=" + global_action4;
	url = url + "&reference=" + beer_list_reference;
	url = url + "&sid=" + Math.random();
	
	xmlhttpBeerList.onreadystatechange = stateChangedBeerList;
	xmlhttpBeerList.open("GET", url, true);
	xmlhttpBeerList.send(null);
}

function stateChangedBeerList() {
	
	if (xmlhttpBeerList.readyState == 4) {
		
		result_text = xmlhttpBeerList.responseText;
		
		if (result_text.length > 0) {
			document.getElementById("beer_list").innerHTML = result_text;
		}
		
		// reset all the drop boxes
		reset_drop_boxes();
	}
}

function reset_drop_boxes() {
	
	if ((global_action2 > 0)) {
		document.getElementById("bars_drop").disabled = true;
		document.getElementById("choose_bar_criteria").innerHTML = "<p style='margin-bottom: 0px'><a href='javascript:remove_criteria(2);'>Change</a></p>";
	}
		else if (global_action2 == 0) {
			//alert("Resetting bars");
			resetBarsDropBox(o,2);
		}
	
	if (global_action4 > 0) {
		document.getElementById("breweries_drop").disabled = true;
		document.getElementById("choose_brewery_criteria").innerHTML = "<p><a href='javascript:remove_criteria(4);'>Change</a></p>";
	}
		else if (global_action4 == 0) {
			//alert("Resetting breweries");
			resetBreweriesDropBox(o,4);
		}
	
	if (global_action1 > 1) {
		document.getElementById("styles_drop").disabled = true;
		document.getElementById("choose_style_criteria").innerHTML = "<p style='margin-top: 0px'><a href='javascript:remove_criteria(1);'>Change</a></p>";
	}
		else if (global_action1 == 0) {
			//alert("Resetting styles");
			resetStylesDropBox(o,1);
		}
}

function resetStylesDropBox(o,action) {
	
	if ((action == 0)) { 
		document.getElementById("beer_list").innerHTML = "";
			return;
	}
	
	xmlhttpStylesDropBox = GetXmlHttpObject();
	
	if (xmlhttpStylesDropBox == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/beerdropboxes.php";
	
	url = url + "?o=" + o;
	url = url + "&action=" + action;
	url = url + "&action1=" + global_action1;
	url = url + "&action2=" + global_action2;
	url = url + "&action4=" + global_action4;
	url = url + "&sid=" + Math.random();
	
	xmlhttpStylesDropBox.onreadystatechange = stateChangedStylesDropBox;
	xmlhttpStylesDropBox.open("GET", url, true);
	xmlhttpStylesDropBox.send(null);
}

function stateChangedStylesDropBox() {
	
	if (xmlhttpStylesDropBox.readyState == 4) {
		
		result_text = xmlhttpStylesDropBox.responseText;
		
		if (result_text.length > 0) {
			
			document.getElementById("choose_style").innerHTML = "<p style='margin-top: 0px'>" + result_text + "</p>";
		}
	}
}

function resetBarsDropBox(o,action) {
	
	if ((action == 0)) { 
		document.getElementById("beer_list").innerHTML = "";
			return;
	}
	
	xmlhttpBarsDropBox = GetXmlHttpObject();
	
	if (xmlhttpBarsDropBox == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/beerdropboxes.php";
	
	url = url + "?o=" + o;
	url = url + "&action=" + action;
	url = url + "&action1=" + global_action1;
	url = url + "&action2=" + global_action2;
	url = url + "&action4=" + global_action4;
	url = url + "&sid=" + Math.random();
	
	xmlhttpBarsDropBox.onreadystatechange = stateChangedBarsDropBox;
	xmlhttpBarsDropBox.open("GET", url, true);
	xmlhttpBarsDropBox.send(null);
}

function stateChangedBarsDropBox() {
	
	if (xmlhttpBarsDropBox.readyState == 4) {
		
		result_text = xmlhttpBarsDropBox.responseText;
		
		if (result_text.length > 0) {
			
			//alert(result_text);
			
			document.getElementById("choose_bar").innerHTML = "<p style='margin-bottom: 0px'>" + result_text + "</p>";
		}
	}
}

function resetBreweriesDropBox(o,action) {
	
	if ((action == 0)) { 
		document.getElementById("beer_list").innerHTML = "";
			return;
	}
	
	xmlhttpBreweriesDropBox = GetXmlHttpObject();
	
	if (xmlhttpBreweriesDropBox == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/beerdropboxes.php";
	
	url = url + "?o=" + o;
	url = url + "&action=" + action;
	url = url + "&action1=" + global_action1;
	url = url + "&action2=" + global_action2;
	url = url + "&action4=" + global_action4;
	url = url + "&sid=" + Math.random();
	
	xmlhttpBreweriesDropBox.onreadystatechange = stateChangedBreweriesDropBox;
	xmlhttpBreweriesDropBox.open("GET", url, true);
	xmlhttpBreweriesDropBox.send(null);
}

function stateChangedBreweriesDropBox() {
	
	if (xmlhttpBreweriesDropBox.readyState == 4) {
		
		result_text = xmlhttpBreweriesDropBox.responseText;
		
		if (result_text.length > 0) {
			
			//alert(result_text);
			
			document.getElementById("choose_brewery").innerHTML = "<p>" + result_text + "</p>";
		}
	}
}

function remove_criteria(action_number) {

	if (action_number == 1) {
		document.getElementById("styles_drop").disabled = false;
		document.getElementById("styles_drop").options[0].selected = true;
		document.getElementById("choose_style_criteria").innerHTML = "";
	}
	else if (action_number == 2) {
		document.getElementById("bars_drop").disabled = false;
		document.getElementById("bars_drop").options[0].selected = true;
		document.getElementById("choose_bar_criteria").innerHTML = "";
	}
	else if (action_number == 4) {
		document.getElementById("breweries_drop").disabled = false;
		document.getElementById("breweries_drop").options[0].selected = true;
		document.getElementById("choose_brewery_criteria").innerHTML = "";
	}
	
	//global_action1 = document.getElementById("styles_drop").value;
	//global_action2 = document.getElementById("bars_drop").value;
	//global_action4 = document.getElementById("breweries_drop").value;
	
	showBeerListResults();
	
	// reset drop boxes
	reset_drop_boxes();
}

function updateBeerRating(o, beerid, rating) {
	
	// set stars to stick with user input	
	
	xmlhttpBeerRating = GetXmlHttpObject();
	
	if (xmlhttpBeerRating == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/beerrating.php";
	
	url = url + "?o=" + o;
	url = url + "&beerid=" + beerid;
	url = url + "&rating=" + rating;
	url = url + "&sid=" + Math.random();
	
	global_beerid = beerid;
	global_rating = rating;
	
	xmlhttpBeerRating.onreadystatechange = stateChangedBeerRating;
	xmlhttpBeerRating.open("GET", url, true);
	xmlhttpBeerRating.send(null);
}

function stateChangedBeerRating() {
	
	if (xmlhttpBeerRating.readyState == 4) {
		
		result = xmlhttpBeerRating.responseText;
		
		id = global_beerid + "_rating_result";
		
		if (result > 0) {
		
			result_text = "Saving your score of " + global_rating + " out of 5 stars...";
				document.getElementById(id).innerHTML = result_text;
					var timer = window.setTimeout('clear_rating_text(id)', 1500);
		}
		else {
			
			result_text = "You have already scored this beer.";
				document.getElementById(id).innerHTML = result_text;
					var timer = window.setTimeout('clear_rating_text_already_scored(id)', 1500);
		}
	}
}

function clear_rating_text_already_scored(id) {
	document.getElementById(id).innerHTML = "";
}

function clear_rating_text(id) {
	document.getElementById(id).innerHTML = "";	
		showBeerListResults();
}

function getMoreBeerComments(o, beerid) {

	// increment current number counter
	current_number++;
	
	// set new number of comments
	numcomments = current_number;
	
	var url="http://gbbf.camra.org.uk/php/beercomments.php";
	
	url = url + "?o=" + o;
	url = url + "&beerid=" + beerid;
	url = url + "&numcomments=" + numcomments;
	url = url + "&sid=" + Math.random();
	
	global_beerid = beerid;
	
	xmlhttpBeerComments.onreadystatechange = stateChangedBeerComments;
	xmlhttpBeerComments.open("GET", url, true);
	xmlhttpBeerComments.send(null);
}

function updateBeerComments(o, beerid, numcomments) {
	
	current_number = numcomments;
	
	id = beerid + "_comments_link";
		label = document.getElementById(id).innerHTML;
	
	if (label.substring(0,13) == "Hide comments") {
		
		id = beerid + "_beer_comments";
			document.getElementById(id).innerHTML = "";
			document.getElementById(id).style.overflow = "hidden"; 
			document.getElementById(id).style.height = "1px"; 
			document.getElementById(id).style.display = "none";
		
		id = beerid + "_comments_link";
			document.getElementById(id).innerHTML = "Comments" + label.substring(13);
	}
	else {		
		
		global_beerid = beerid;
		
		// show loading div
		id = global_beerid + "_beer_comments";
			document.getElementById(id).innerHTML = "<div class='beer_comment'><p>Loading comments...</p></div>";
			document.getElementById(id).style.overflow = "visible"; 
			document.getElementById(id).style.height = "auto"; 
			document.getElementById(id).style.display = "inline";
		
		// change the label to 'Hide comments'		
		id = global_beerid + "_comments_link";
			document.getElementById(id).innerHTML = "Hide comments" + label.substring(8);
	
		xmlhttpBeerComments = GetXmlHttpObject();
		
		if (xmlhttpBeerComments == null) {
			alert ("Browser does not support HTTP Request");
				return;
		}
		
		var url="http://gbbf.camra.org.uk/php/beercomments.php";
		
		url = url + "?o=" + o;
		url = url + "&beerid=" + beerid;
		url = url + "&numcomments=" + numcomments;
		url = url + "&sid=" + Math.random();
		
		xmlhttpBeerComments.onreadystatechange = stateChangedBeerComments;
		xmlhttpBeerComments.open("GET", url, true);
		xmlhttpBeerComments.send(null);
	}
}

function stateChangedBeerComments() {
	
	if (xmlhttpBeerComments.readyState == 4) {
		
		result_text = xmlhttpBeerComments.responseText;
		
		id = global_beerid + "_beer_comments";
			document.getElementById(id).innerHTML = result_text;
	}
}

function GetXmlHttpObject() {
	
	if (window.XMLHttpRequest) {
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	
	if (window.ActiveXObject) {
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	return null;
}

function star_rollover(beerid, fulls, greys) {
	currentid = beerid + "_star_" + fulls;
	document.getElementById(currentid).style.cursor = "pointer";
	for (i = 1; i <= fulls; i++) {
		starid = beerid + "_star_" + i;
			document.getElementById(starid).src = "/images/stars/star-full.gif";
	}
	for (i = 1; i <= greys; i++) {
		j = fulls + i;
		starid = beerid + "_star_" + j;
			document.getElementById(starid).src = "/images/stars/star-grey.gif";
	}
}

function star_rollout(beerid, fulls, halves, greys) {
	for (i = 1; i <= fulls; i++) {
		starid = beerid + "_star_" + i;
			document.getElementById(starid).src = "/images/stars/star-full.gif";
	}
	for (i = 1; i <= halves; i++) {
		j = fulls + i;
		starid = beerid + "_star_" + j;
			document.getElementById(starid).src = "/images/stars/star-half.gif";
	}
	for (i = 1; i <= greys; i++) {
		j = fulls + halves + i;
		starid = beerid + "_star_" + j;
			document.getElementById(starid).src = "/images/stars/star-grey.gif";
	}
}

function show_leave_comment(beerid) {
	
	// add the beerid value
	id = "comment_form_beerid";
		document.getElementById(id).value = beerid;
		
	// submit the form
	id = "comment_form";
		document.getElementById(id).submit();
}

function confirm_beer_list(o) {
	
	reference = document.getElementById("beer_list_reference_textbox").value;
	
	document.getElementById("get_beer_list_failed").innerHTML = "<p style='color: #666666'>Loading...</p>";
	document.getElementById("get_beer_list").disabled = true;
	
	if (o == 0) { return; }
	
	if ((reference.length == 0) || (isNumeric(reference) == false)) { 
		document.getElementById("get_beer_list_failed").innerHTML = "<p style='color: #CC0000'>Invalid reference number.</p>";
		document.getElementById("get_beer_list").disabled = false;
			document.getElementById("beer_list_reference").select();
				return;
	}
		
	xmlhttpConfirmBeerList = GetXmlHttpObject();
		
	if (xmlhttpConfirmBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/confirmbeerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&reference=" + reference;
	url = url + "&sid=" + Math.random();
	
	xmlhttpConfirmBeerList.onreadystatechange = stateChangedConfirmBeerList;
	xmlhttpConfirmBeerList.open("GET", url, true);
	xmlhttpConfirmBeerList.send(null);
}

function stateChangedConfirmBeerList() {
	
	if (xmlhttpConfirmBeerList.readyState == 4) {
		
		beer_list_reference = xmlhttpConfirmBeerList.responseText;
		
		if (beer_list_reference == 0) {
			document.getElementById("get_beer_list_failed").innerHTML = "<p style='color: #CC0000'>Invalid reference number.</p>";
			document.getElementById("get_beer_list").disabled = false;
		}
		else if (beer_list_reference > 0) {
			
			// get beer list
			get_beer_list(o, beer_list_reference);
			
			//action1 = document.getElementById("styles_drop").value;
			//action2 = document.getElementById("bars_drop").value;
			//action4 = document.getElementById("breweries_drop").value;
			
			showBeerListResults();
		}
	}
}

function create_new_beer_list(o) {
	
	document.getElementById("get_beer_list_failed").innerHTML = "<p style='color: #666666'>Creating a new list...</p>";
	
	if (o == 0) { return; }
	
	xmlhttpCreateNewBeerList = GetXmlHttpObject();
		
	if (xmlhttpCreateNewBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/createnewbeerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&sid=" + Math.random();
	
	xmlhttpCreateNewBeerList.onreadystatechange = stateChangedCreateNewBeerList;
	xmlhttpCreateNewBeerList.open("GET", url, true);
	xmlhttpCreateNewBeerList.send(null);
}

function stateChangedCreateNewBeerList() {
	
	if (xmlhttpCreateNewBeerList.readyState == 4) {
		
		beer_list_reference = xmlhttpCreateNewBeerList.responseText;
		
		if (beer_list_reference > 0) {
		
			// get beer list and show results again
			get_beer_list(o, beer_list_reference);
			showBeerListResults();
		}
		else {
		
			// show error message
			document.getElementById("get_beer_list_failed").innerHTML = "<p style='color: #CC0000'>A new beer list could not be created. Please try again.</p>";
		}		
	}
}

function add_to_beer_list(o, reference, beer_id) {
	
	if ((o == 0) || (reference == 0) || (beer_id == 0)) { return; }
	
	xmlhttpAddToBeerList = GetXmlHttpObject();
		
	if (xmlhttpAddToBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/addtobeerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&reference=" + reference;
	url = url + "&beerid=" + beer_id;
	url = url + "&sid=" + Math.random();
	
	global_beerid = beer_id;
	
	xmlhttpAddToBeerList.onreadystatechange = stateChangedAddToBeerList;
	xmlhttpAddToBeerList.open("GET", url, true);
	xmlhttpAddToBeerList.send(null);
}

function stateChangedAddToBeerList() {
	
	if (xmlhttpAddToBeerList.readyState == 4) {
		
		beer_list_reference = xmlhttpAddToBeerList.responseText;
		
		// get beer list
		get_beer_list(o, beer_list_reference);
		
		//action1 = document.getElementById("styles_drop").value;
		//action2 = document.getElementById("bars_drop").value;
		//action4 = document.getElementById("breweries_drop").value;
		
		showBeerListResults();
	}
}

function remove_from_beer_list(o, reference, beer_id) {
	
	if ((o == 0) || (reference == 0) || (beer_id == 0)) { return; }
	
	xmlhttpRemoveFromBeerList = GetXmlHttpObject();
		
	if (xmlhttpRemoveFromBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/removefrombeerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&reference=" + reference;
	url = url + "&beerid=" + beer_id;
	url = url + "&sid=" + Math.random();
	
	global_beerid = beer_id;
	
	xmlhttpRemoveFromBeerList.onreadystatechange = stateChangedRemoveFromBeerList;
	xmlhttpRemoveFromBeerList.open("GET", url, true);
	xmlhttpRemoveFromBeerList.send(null);
}

function stateChangedRemoveFromBeerList() {
	
	if (xmlhttpRemoveFromBeerList.readyState == 4) {
		
		beer_list_reference = xmlhttpRemoveFromBeerList.responseText;
		
		// get beer list
		get_beer_list(o, beer_list_reference);
		
		//action1 = document.getElementById("styles_drop").value;
		//action2 = document.getElementById("bars_drop").value;
		//action4 = document.getElementById("breweries_drop").value;
		
		showBeerListResults();
	}
}

function get_beer_list(o, reference) {
	
	if ((o == 0) || (reference == 0)) { return; }
	
	xmlhttpGetBeerList = GetXmlHttpObject();
		
	if (xmlhttpGetBeerList == null) {
		alert ("Browser does not support HTTP Request");
			return;
	}
	
	var url="http://gbbf.camra.org.uk/php/getbeerlist.php";
	
	url = url + "?o=" + o;
	url = url + "&reference=" + reference;
	url = url + "&sid=" + Math.random();
	
	xmlhttpGetBeerList.onreadystatechange = stateChangedGetBeerList;
	xmlhttpGetBeerList.open("GET", url, true);
	xmlhttpGetBeerList.send(null);
}

function stateChangedGetBeerList() {
	
	if (xmlhttpGetBeerList.readyState == 4) {
		
		global_beer_list = xmlhttpGetBeerList.responseText;
			document.getElementById("my_beer_list").innerHTML = global_beer_list;
				document.getElementById("beer_list_reference_div").innerHTML = "";
				document.getElementById("beer_list_reference_div").style.display = "none";
		
		showBeerListResults();
	}
}

function isNumeric(str) {
	
	var validChars = "0123456789";
	var numeric = true;
	var char;
	
	for (i = 0; i < str.length && numeric == true; i++) { 
		char = str.charAt(i); 
		if (validChars.indexOf(char) == -1)  {
			numeric = false;
		}
	}
	
	return numeric;
}

function send_beer_list_by_email(alias, reference) {
	
	var beer_list_body = "Your beer list is number " + reference + ". To view and/or print your beer list please go to http://gbbf.camra.org.uk/beers and enter your reference number.";
	
	window.location.href = "mailto:?subject=" + document.title + "&body=" + beer_list_body;
}