
var feedback_XMLHttpRequest = null;

var feedback_ratings = {};

function feedback_print(query_id, result_num, book_num, chapter_num, verse_num)
{
	if (!document.getElementById) {
		// We don't stand a chance.
		return;
	}
	
	if (feedback_XMLHttpRequest == null)
	{
		try {
			feedback_XMLHttpRequest = new XMLHttpRequest();
		} catch (trymicrosoft) {
			try {
				feedback_XMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (othermicrosoft) {
				try {
					feedback_XMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (failed) {
					feedback_XMLHttpRequest = null;
					// The user's browser doesn't support AJAX. So, don't even
					// bother printing anything to the user.
					return;
				}
			}
		}
	}
	
	feedback_ratings[query_id+"-"+result_num] = 0;
	
	var html = '<div class="search-result-feedback">How relevant is this verse to your query? ';
	for (var rating = 0; rating <= 5; rating++)
	{
		html += '<img class="search-result-feedback-stars" id="search-result-image-'+query_id+'-'+result_num+'-'+rating+'" '
		      + (rating == 0 ? 'style="visibility:hidden" ' : '')
		      + 'src="images/rating/'+(rating == 0 ? 'norating_off' : 'star_off')+'.gif" width="14" height="14" alt="X" '
		      + 'onmouseover="feedback_show_explanation('+query_id+','+result_num+','+rating+')" '
			  + 'onmouseout="feedback_hide_explanation('+query_id+','+result_num+')" '
			  + 'onclick="feedback_log('+query_id+','+result_num+','+book_num+','+chapter_num+','+verse_num+','+rating+')" />';
	}
	html += '<span class="search-result-feedback-explanation" id="feedback_explanation_'+query_id+'_'+result_num+'"></span>';
	html += '<span class="search-result-feedback-status" id="feedback_status_'+query_id+'_'+result_num+'"></span>';
	html += '</div>';
	document.write(html);
}

function feedback_show_explanation(query_id, result_num, rating)
{
	var html = '';
	switch(rating)
	{
		case 0: html = 'Remove rating.';       break;
		case 1: html = 'Not at all relevant.'; break;
		case 2: html = 'A little relevant.';   break;
		case 3: html = 'Somewhat relevant.';   break;
		case 4: html = 'Quite relevant.';      break;
		case 5: html = 'Extremely relevant.';  break;
		default: return; // Invalid value
	}
	if (feedback_ratings[query_id+"-"+result_num] > 0) {
		var norating = document.getElementById('search-result-image-'+query_id+'-'+result_num+'-0');
		norating.src = 'images/rating/norating_' + (rating == 0 ? 'on' : 'off') + '.gif';
		norating.style.visibility = 'visible';
	}
	for (var i = 1; i <= 5; i++)
	{
		var img = document.getElementById('search-result-image-'+query_id+'-'+result_num+'-'+i);
		if (img) {
			img.src = 'images/rating/star_' + (i > rating ? 'off' : 'on') + '.gif';
		}
	}
	var explanation = document.getElementById('feedback_explanation_'+query_id+'_'+result_num);
	if (explanation) {
		explanation.innerHTML = html;
	}
	var status = document.getElementById('feedback_status_'+query_id+'_'+result_num);
	if (status) {
		status.innerHTML = '';
	}
}

function feedback_hide_explanation(query_id, result_num, rating)
{
	var norating = document.getElementById('search-result-image-'+query_id+'-'+result_num+'-0');
	norating.style.visibility = 'hidden';
	
	var rating = feedback_ratings[query_id+"-"+result_num];

	for (var i = 1; i <= 5; i++)
	{
		var img = document.getElementById('search-result-image-'+query_id+'-'+result_num+'-'+i);
		if (img) {
			img.src = 'images/rating/star_' + (i > rating ? 'off' : 'on') + '.gif';
		}
	}
	var explanation = document.getElementById('feedback_explanation_'+query_id+'_'+result_num);
	if (explanation) {
		explanation.innerHTML = '';
	}
	var status = document.getElementById('feedback_status_'+query_id+'_'+result_num);
	if (status) {
//		status.innerHTML = '';
	}
}

function feedback_log(query_id, result_num, book_num, chapter_num, verse_num, rating)
{
	if (feedback_XMLHttpRequest == null) {
		return;
	}
	
	var explanation = document.getElementById('feedback_explanation_'+query_id+'_'+result_num);
	var status = document.getElementById('feedback_status_'+query_id+'_'+result_num);
	if (!explanation || !status) {
		return;
	}
	
	var url = location.href;
	if (url.indexOf('/', 8) > -1) {
		url = url.substr(url.indexOf('/', 8));
		if (url.indexOf('?') > -1) {
			url = url.substr(0, url.indexOf('?'));
		}
		if (url.lastIndexOf('/') > -1) {
			url = url = url.substr(0, url.lastIndexOf('/'));
		}
		else {
			url = '';
		}
	}
	else {
		url = '';
	}
	
	url += '/feedback.php?action=save&data=bible_passage_search&query_id='
	     + query_id+'&result_num='+result_num+'&book_num='+book_num
	     + '&chapter_num='+chapter_num+'&verse_num='+verse_num+'&rating='+rating;
	
	feedback_XMLHttpRequest.onreadystatechange = function() {feedback_receipt(query_id, result_num)};
	feedback_XMLHttpRequest.open("GET", url);
	feedback_XMLHttpRequest.send(null);
	
	feedback_ratings[query_id+"-"+result_num] = rating;
}

function feedback_receipt(query_id, result_num)
{
	if (feedback_XMLHttpRequest.readyState != 4) {
		return;
	}
	if (feedback_XMLHttpRequest.status != 200) {
		alert("Unexpected HTTP response status: " + feedback_XMLHttpRequest.status);
		return;
	}
	
	var status = document.getElementById('feedback_status_'+query_id+'_'+result_num);
	if (status) {
		var html = 'Saved';
		if (feedback_XMLHttpRequest.responseText != '1')
		{
			html = 'An error occurred while saving your rating. Sorry.';
			
			// TODO This is temporary
			html = feedback_XMLHttpRequest.responseText;
		}
		status.innerHTML = html;
	}
}
