/*<![CDATA[*/
/**
 * tellafriend.js
 * @projectDescription Tell A Friend Widget Functions
 * @author Kris Hardy (kris@submergedsolutions.com)
 * @version 1.0
 */

function TellAFriend() {
	if (formLocked == true)
		return;
	
	//URL TO THE TELLAFRIEND PROCESSING PAGE
	var url = "http://www.globalsurgerycenter.com/lib/ss_utils/tellafriend.php";

	$('#tellafriendresult').hide();
	$('#tellafriendstatus').show();
	formObj = $(document.tellafriendform);
	LockForm(formObj);
	var error = '';
	
	//Validate from e-mail
	var fromemail = formObj.find('#fromemail');
	if (!validEmail(fromemail.val())) {
		fromemail.addClass('fielderror');
		error += "Your e-mail address is invalid. ";
	} else {
		fromemail.removeClass('fielderror');
	}

	//Validate from name
	var fromname = formObj.find('#fromname');
	if (!validName(fromname.val())) {
		fromname.addClass('fielderror');
		error += "Your name is invalid. ";
	} else {
		fromname.removeClass('fielderror');
	}

	//Validate to e-mail
	var toemail = formObj.find('#toemail');
	if (!validEmail(toemail.val())) {
		toemail.addClass('fielderror');
		error += "Your friend's e-mail address is invalid. ";
	} else {
		toemail.removeClass('fielderror');
	}

	//Validate to name
	var toname = formObj.find('#toname');
	if (!validName(toname.val())) {
		toname.addClass('fielderror');
		error += "Your friend's name is invalid. ";
	} else {
		toname.removeClass('fielderror');
	}

	//Validate text (remove html, shorten to 100 chars)
	var text = formObj.find('#text');
	if ((text.val().length > 100) || (!validText(text.val()))) {
		text.addClass('fielderror');
		error += "No special characters.  Only 100 characters are allowed.";
	} else {
		text.removeClass('fielderror');
	}

	if (error != '') {
		ShowResult(formObj, error);
		return;
	}

	var params = {
		url: document.location.href,
		toemail: toemail.val(),
		toname: toname.val(),
		fromemail: fromemail.val(),
		fromname: fromname.val(),
		text: text.val()
	};

	$.ajax({
		url: url,
		type: 'POST',
		data: params,
		dataType: 'json',
		cache: 'false',
		success: function(responseJSON) {
			$('#tellafriendstatus').hide();

			if (responseJSON.result == 1) {
				toemail.val("");
				toname.val("");
				text.val("");
				ShowResult(formObj, "Thank you!");
			} else {
				errors = responseJSON.errors;
				errorstring = "An error occurred:<br />";
				for (var i = 0; i < errors.length; i++) {
					errorstring += errors[i].description+" ";
					if ((errors[i].element != "") && ($(formObj.elements[errors[i].element]))) {
						$(formObj.elements[errors[i].element]).addClass("fielderror");
					}
				}
				ShowResult(formObj, errorstring);
			}
		},
		error: function(request, status, error) {
			$('#tellafriendstatus').hide();
			ShowResult(formObj, "An error occurred.  Please try again.");
		}
	});
}

function validEmail(email) {
	return /^[a-zA-Z0-9][a-zA-Z0-9\.-]*[a-zA-Z0-9]@[a-zA-Z0-9\.-]+\.[a-zA-Z]*$/.test(email);
}

function validName(name) {
	return /^[a-zA-Z][a-zA-Z \.\-]*$/.test(name);
}

function validText(text) {
	//Forbid HTML Tags
	return (!(/[<>]/.test(text)));
}

var formLocked = false;
function LockForm(formObj)
{
	formLocked = true;
}

function UnlockForm(formObj)
{
	formLocked = false;
}

function ShowResult(formObj, error) {
	$('#tellafriendresult').innerHTML = error;
	$('#tellafriendresult').show();
	$('#tellafriendstatus').hide();
	UnlockForm(formObj);
}

function showElement(elementId) {
	$(elementId).slideDown();
}

function hideElement(elementId) {
	$(elementId).slideUp();
}

function toggleElement(element) {
	if (typeof(element) == "undefined") return;
	if ($(element).is(':visible')) {
		hideElement(element);
	} else {
		showElement(element);
	}
}

//Set absolute position
$(function() {
	var tafImg = new Image();
	tafImg.src="http://www.globalsurgerycenter.com/images/tellafriendbutton_on.png";
	
	$("#tellafriendheader").bind("click", function(e) {
		toggleElement($("#tellafriendform"));
	});
});
/*]]>*/
