//var reviewurl	= 'http://www.dragondoor.com/cgi-bin/instructor_reviews.pl';
var reviewurl	= '/cgi-bin/instructor_reviews.pl';

/*--------------------------------------------------------------------------------------------------------------------------------*/
function previewReview() {

	var error	= '';
	if (document.getElementById('reviewPreview')) {		
		validreview		= validate_review();
	
		// validate_review() alerts the reviewer of any problems with their review
		// and returns true for valid reviews
		if (validreview) {
			var form		= document.reviewform;
			var loadnotice	= 'Generating preview, please wait';

			var status = AjaxRequest.submit(
				form,
				{	'parameters':{ 'previewreview':'1'},
					'onSuccess':function(req){ hideElement('ajaxStatus');showPreview(req.responseText); },
					'onLoading':function(req){ hideElement('reviewUI');writeToElement('ajaxStatus',loadnotice);showElement('ajaxStatus'); }
				}
			);
		}

	} else {
		error	= 'Unexpected error encountered.\nUnable to preview your review.\nYou may need to restart your web browser\n';		
	}
	
	if (error) {
		alert(error);
	}
	
}


/*--------------------------------------------------------------------------------------------------------------------------------*/
function processReviewSubmit() {

	var error	= '';
	var	form	= document.reviewform;
	var validreview		= validate_review();

	if (validreview) {
		var loadnotice		= 'Submitting your review, please wait';
		var status = AjaxRequest.submit(
			form,
			{	'parameters':{ 'submitreview':'1'},
				'onSuccess':function(req){ hideElement('ajaxStatus');writeToElement('submitResult',req.responseText);showElement('submitResult'); },
				'onLoading':function(req){ hideElement('reviewPreview');writeToElement('ajaxStatus',loadnotice);showElement('ajaxStatus'); }
			}
		);
	}
}

/*--------------------------------------------------------------------------------------------------------------------------------*/
function showPreview(preview) {
	
	var error	= false;
	if (document.getElementById('reviewPreview')) {
		if (document.getElementById('reviewUI')) {
			hideElement('reviewUI');
			showElement('reviewPreview');
			document.getElementById('reviewPreview').innerHTML	= preview;
			scrollToElement('reviewPreview');
		} else {
			error = true;
		}
	} else {
		error = true;
	}

	if (error) {
		msg	= 'Unexpected error encountered.\nUnable to preview your review.\nYou may need to restart your web browser\n';		
		alert(msg);		
	}

}

/*--------------------------------------------------------------------------------------------------------------------------------*/
function validate_review() {

	frm	= document.reviewform;
	var error	= '';
	
	cleanFields();
	
	if (!frm) {
		msg	= 'Unexpected validation error.\nYou may need to restart your web browser\n';		
		alert(msg);		
		return false;
	}

	title			= frm.review_title.value;
	reviewtext		= frm.review_txt.value;
	reviewername	= frm.review_name.value;
	reviewerloc		= frm.review_location.value;

	if (title.length < 1)												{ error	 = '- A review headline\n' };
	if (reviewtext.length<1)											{ error	+= '- Your review\n' };
	if ((reviewername.length<1 || reviewername == 'Your name here'))	{ error	+= '- Your name\n' };
	if (reviewerloc.length<1 || reviewerloc == 'Your location here')	{ error	+= '- Your location\n' };

	if (error) {
		msg	= 'Your submission is missing the following:\n' + error + '\n';
		alert(msg);
		return false;
	}

	if (validateTextFields()) {
		return true;
	} else {
		return false;
	}
	
	return true;

}
/*--------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------*/
function validateTextFields() {
	
	// validate the text to ensure no non-ascii chars were entered - see input_validation.js
	// prompt for automatic removal of unreplaceable invalid chars
	var frm						= document.reviewform;
	var error					= '';
	var field					= 'the Review Headline';
	var cleantext				= cleanTextInput(frm.review_title.value, field);
	if (cleantext.length>0) {	frm.review_title.value	= cleantext; } else { error	= field; };

	field						= 'the Review Text';
	cleantext					= cleanTextInput(frm.review_txt.value, field);
	if (cleantext.length>0) {	frm.review_txt.value	= cleantext; } else { error	= field; };

	field						= 'the Reviewer info';
	cleantext					= cleanTextInput(frm.review_name.value, field);
	if (cleantext.length>0) {	frm.review_name.value	= cleantext; } else { error	= field; };

	field						= 'the Reviewer\'s location';
	cleantext					= cleanTextInput(frm.review_location.value, field);
	if (cleantext.length>0) {	frm.review_location.value	= cleantext; } else { error	= field; };

	if (error.length>0) {
		return false;
	} else {
		return true;
	}
}
/*--------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------*/
function cleanFields() {
	
	// translate specified chars to known ascii - see input_validation.js
	frm	= document.reviewform;
	frm.review_title.value		= cleanString(frm.review_title.value);
	frm.review_txt.value		= cleanString(frm.review_txt.value);
	frm.review_name.value		= cleanString(frm.review_name.value);
	frm.review_location.value	= cleanString(frm.review_location.value);
}
/*--------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------*/
function validateReviewerEmail() {

	var email	= document.reviewform.remail.value;
	
	rml	= document.getElementById('revieweremail').value;
	
	if (validEmail(rml)) {
		showElement('reviewUI');
		hideElement('reviewControl');
	} else {
		alert('Invalid Email address\n\nA valid email addres is required to submit a review.');
	}


}
/*--------------------------------------------------------------------------------------------------------------------------------*/
function editReview() {
	showElement('reviewUI');
	hideElement('reviewPreview');
	document.getElementById('reviewPreview').innerHTML	= '';
}
/*--------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------*/
function closeReviewUI() {
		hideElement('reviewUI');
		showElement('reviewControl');
}
/*--------------------------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------------------------------------------------------*/
/*-- Search ----------------------------------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------------------------------------------*/
function processInstructorSearch() {

	var form		= document.instsearch;
	var resultdiv	= document.getElementById('instsearchresults');
	var error;

	if (resultdiv) {
		var loadnotice		= 'Submitting your query, please wait';
		var status = AjaxRequest.submit(
			form,
			{	'parameters':{ 'rm':'mode10'},
				'onSuccess':function(req){ writeToElement('instsearchresults',req.responseText);},
				'onLoading':function(req){ writeToElement('instsearchresults',loadnotice);}
			}
		);
	} else {
		error	= 'Unexpected error encountered.\nUnable to display search results\n';		
	}
	
	if (error) {
		alert(error);
	}

}
/*--------------------------------------------------------------------------------------------------------------------------------*/

/* ------------------------------------------------------------------------------------------------------------------------------ */
// search form submit on enter
/* ------------------------------------------------------------------------------------------------------------------------------ */
function submitOnEnter(field,e) {
	var keycode;
	if (window.event) {	keycode = window.event.keyCode;
	} else if (e) {		keycode = e.which;
	} else {			return true; }

	if (keycode == 13) {
		processInstructorSearch();
	}
	return true;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
// search on cookie
// tracks the last search to provide back button functionality for ajax search
/* ------------------------------------------------------------------------------------------------------------------------------ */
function loadLastSearch() {

	// when a previous instructor search is detected via instructor search cookies
	// reload the previous search and delete the cookie
	var isearch		= readCookie('isearch');
	var hsearch		= readCookie('hsearch');

	if (isearch || hsearch) {
		var searchstr			= isearch ? isearch : hsearch;
		var searchfield			= isearch ? 'isearch' : 'hsearch';
		eval ("eraseCookie('"+searchfield+"')");
		eval ("var searchinput	= document.instsearch."+searchfield);
		searchinput.value		= searchstr;
		processInstructorSearch();
	}
	//return;
}
/* ------------------------------------------------------------------------------------------------------------------------------ */

/* ------------------------------------------------------------------------------------------------------------------------------ */
function saveInstSearch(src,searchstr) {
	// create an instructor search cookie when an instructor search result is clicked on
	createCookie(src,searchstr);
}
/* ------------------------------------------------------------------------------------------------------------------------------ */
