
function checkEmail(email)
{
	var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
	
	if (filter.test(email))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function checkMaxLength()
{
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength)
		this.relatedElement.className = 'counter_toomuch';
	else
		this.relatedElement.className = '';
	this.relatedElement.firstChild.nodeValue = currentLength;
	// not innerHTML
}

function getQuestionCount()
{
	var f = $("#SurveyForm")[0];
	var count = 0;
	var currentQuestionNumber, lastQuestionNumber = 0;

	for (i=0; i < f.length; i++)
	{
		if (f[i].name.substring(0, 6) == "Survey")
		{
			currentQuestionNumber = f[i].name.substring(9);
			if(!isNaN(currentQuestionNumber) && currentQuestionNumber != lastQuestionNumber)
			{
				count++;
			}
			lastQuestionNumber = currentQuestionNumber;
		}
	}

	return count;
}

function getSurveyNumber()
{
	var f = $("#SurveyForm")[0];
	
	var surveyString;
	var surveyNumber = "";

	for (i=0; i < f.length; i++)
	{
		if (f[i].name.substring(0, 6) == "Survey")
		{
			surveyString = f[i].name.substring(6);
			
			for (j=0; j < surveyString.length; j++)
			{
				if(!isNaN(surveyString.substring(j,1)))
				{
					surveyNumber += surveyString.substring(j,1);
				}
			}
			break;
		}
	}
	
	if(isNaN(surveyNumber))
	{
		return undefined;
	}
	else
	{
		return parseInt(surveyNumber).toString();
	}
}

function radioButtonChecker(f, name)
{
	var radio_choice = false;

	if(f[name].type)
	{
		if(f[name].type == "text")
		{
			if (f[name].value.length == 0) return (false);
		}
		else if(f[name].type == "textarea")
		{
			if (f[name].value.length == 0) return (false);
		}
		else
		{
			return (false);
		}
	}
	else
	{
		// radio
		for (counter = 0; counter < f[name].length; counter++)
		{
			if (f[name][counter].checked) radio_choice = true;
		}

		if (!radio_choice)
		{
			return (false);
		}
	}

	return (true);
}

function setMaxLength() {
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++) {
		if (x[i].getAttribute('maxlength')) {
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span> of '+x[i].getAttribute('maxlength') + ' characters maximum';
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function validateSurvey()
{
	var f = $("#SurveyForm")[0];
	var firstname, email;
	
	// checking for first name
	if(f["firstname"])
	{
		firstname = f["firstname"];
	
		if( firstname.type == "text" && firstname.value.length == 0 )
		{
			alert("Please enter your first name.");
			firstname.focus();
			return false;	
		}
	}
	
	// checking for valid email
	if(f["email"])
	{
		email = f["email"];
	
		if( email.type == "text" && !checkEmail(email.value) )
		{
			alert("Please enter a valid email address.");
			email.focus();
			return false;
		}
	}

	var surveyNumber = getSurveyNumber();
	
	if(surveyNumber)
	{
		var questionCount = parseInt(getQuestionCount());

		for (i=1; i <= questionCount; i++)
		{	
			if(f["Survey" + surveyNumber + " Q" + i])
			{
				if(!radioButtonChecker(f,"Survey" + surveyNumber + " Q" + i))
				{
					alert("Please select an answer for question "+i+".");
					return false;
				}
			}
		}

		return true;
	}
	else
	{
		return false;
	}
}