// JavaScript Document

var regExp = /<\/?[^>]+>/gi;

function ReplaceTags(xStr) {
	xStr = xStr.replace(regExp, "");
	return xStr;
}
  
function checkForm(theForm) {

	var labels = theForm.getElementsByTagName("label");
	var error = false;
	var first = null;

	for (var i = 0; i < labels.length; i++) {

		if (labels[i].className.classExists("required")) {

			var input = labels[i].getElementsByTagName("input")[0] || labels[i].getElementsByTagName("textarea")[0] || labels[i].getElementsByTagName("select")[0];
			var spans = labels[i].getElementsByTagName("span");
			var errorText = null;
			var labelText = null;

			for (var j = 0; j < spans.length; j++) {
				if (spans[j].className.classExists("labelText")) {
					var labelText = spans[j];
				}
			}

			if (input != null) {
				if (input.value == "") {
					errorText = "Please fill in your " + labelText.childNodes[0].nodeValue.toLowerCase().replace(/:/, "");
				}
				else if (labels[i].className.classExists("requiredEmail") && !input.value.validEmail())
				{
					errorText = "Please supply a valid e-mail address";
				}

				if (errorText != null)
				{
					if (first == null)
					{
						first = input;
					}

					error = true;
					writeCorrection(labels[i], errorText);

					if ((input.nodeName.toLowerCase() == "input" && input.getAttribute("type") == "text") || (input.nodeName.toLowerCase() == "textarea"))
					{
						input.onkeyup = checkValidity;
					}
					else if (input.nodeName.toLowerCase() == "select")
					{
						input.onchange = checkValidity;
					}
				}
				else
				{
					writeCorrection(labels[i]);
				}
			}
		}
	}

	if (error)
	{
		first.focus();
		return false;
	} else {
		if (theForm.id == "colleagueform") {
			sendColleague();
			return false;
		}

	}

}

function writeCorrection(label, text, correct)
{
	var spans = label.getElementsByTagName("span");
	var input = label.getElementsByTagName("input")[0] || label.getElementsByTagName("textarea")[0] || label.getElementsByTagName("select")[0];
	var image = label.getElementsByTagName("img")[0];

	if (typeof text == "undefined")
	{
		if (image != null)
		{
			label.removeChild(image);
		}

		for (var j = 0; j < spans.length; j++)
		{
			if (spans[j].className.classExists("correctionText"))
			{
				label.removeChild(spans[j]);

				break;
			}
		}
	}
	else
	{
		if (image == null)
		{
			image = document.createElement("img");
			image.className = "correctionIcon";
			//image = label.insertBefore(image, input);

			var newText = document.createElement("span");
			newText.className = "correctionText";
			label.appendChild(newText);
		}

		var spans = label.getElementsByTagName("span");

		for (var j = 0; j < spans.length; j++)
		{
			if (spans[j].className.classExists("correctionText"))
			{
				var correctionText = spans[j];

				break;
			}
		}

		if (correct == true)
		{
			//image.setAttribute("src", "images/yes.gif");
			//image.setAttribute("alt", "Correct");
			correctionText.className = correctionText.className.removeClass("warning");
		}
		else
		{
			//image.setAttribute("src", "images/x.gif");
			//image.setAttribute("alt", "Incorrect");
			correctionText.className = correctionText.className.addClass("warning");
		}

		writeSpan(correctionText, text);
	}

	return true;
}

function writeSpan(span, text)
{
	var children = span.childNodes;

	for (var i = 0; children.length > 0;)
	{
		span.removeChild(children[i]);
	}

	var textNode = document.createTextNode(text);
	span.appendChild(textNode);

	return true;
}

function checkValidity()
{
	var label = this.parentNode;
	var spans = label.getElementsByTagName("span");
	var labelText = null;

	for (var j = 0; j < spans.length; j++)
	{
		if (spans[j].className.classExists("labelText"))
		{
			var labelText = spans[j];
		}
	}

	var strParams = label.className;
	var intMinLen = strParams.substring(strParams.indexOf('minlen', 0) + 6);

	if (this.value == "")
	{
		writeCorrection(label, "Please fill in your " + labelText.childNodes[0].nodeValue.toLowerCase().replace(/:/, ""));
	}
	else if (label.className.classExists("requiredEmail") && !this.value.validEmail())
	{
		writeCorrection(label, "Please supply a valid e-mail address");
	}
	else if (this.value.length < intMinLen) {
		writeCorrection(label, "This field is too short. It must be at least " + intMinLen + " characters");
	}
	else
	{
		writeCorrection(label, "This field is correct", true);
	}

	return true;
}
	
function sendColleague() {
	var title = document.title;
	
	var url = '/_scripts/sendcol.php';
	var params = 'friendEmail=' + $F('friendEmail') +
	'&yourEmail=' + $F('yourEmail') + 
	'&message=' + $F('message') + 
	'&cc=' + $F('cc') + 
	'&referrer=' + $F('referrer') + 
	'&title=' + title;

	var ajax = new Ajax.Updater(
	{success: 'successMessage'},
	url,
	{method: 'get', asynchronous: true, evalScripts: true, insertion: Insertion.Bottom, parameters: params, onComplete: showResponse('successMessage'), onFailure: reportError});
}

function showResponse(div) {
	$(div).innerHTML = '';
	$(div).style.display = 'none';
	new Effect.Appear($(div));
}

function reportError(request) {
	alert ("ERROR");
}