function SubmitPoll()
{
	var rawlist = new String(document.getElementById('QList').value);
	var list = rawlist.split(/,/);

	for(var i=0; i<list.length; i++)
	{
		var vstr = new String(document.getElementById('V'+list[i]).value);
		var vdata = vstr.split(/[,=]{1}/);
		var vtable = new Array();
		var vtype = vdata[0];
		var qt = document.getElementById('QT' + list[i]).innerHTML;

		for(var j=1; (j + 1) < vdata.length; j+=2)
		{
			vtable[vdata[j]] = vdata[j+1];
		}

		switch(vtype)
		{
		case '1':
			var max = new Number(vtable['count']);
			var ok = false;
			for(var k=1; k<=max; k++)
			{
				if(document.getElementById('Q'+list[i]+'A'+k).checked)
				{
					ok = true;
					break;
				}
			}
			if( !ok )
			{
				alert('You must select an answer for question:\n\t' + qt);
				return false;
			}
			break;
		case '2':
			var count = new Number(vtable['count']);
			var max = new Number(( vtable['max'] == undefined ?
					vtable['count'] : vtable['max'] ));
			var min = new Number(( vtable['min'] == undefined ?
					0 : vtable['min'] ));
			var checked = 0;
			for(var k=1; k<=count; k++)
			{
				var ctrl = document.getElementById('Q'+list[i]+'A'+k);

				if(ctrl.checked)
					checked++;
			}
			if(checked > max)
			{
				alert('You cannot pick more than ' + max + ' answers for question:\n\t'+qt);
				return false;
			}
			else if(checked < min)
			{
				alert('You cannot pick less than ' + min + ' answers for question:\n\t'+qt);
				return false;
			}
			break;
		case '3':
			var count = new Number(vtable['count']);
			var max = new Number(( vtable['max'] == undefined ?
					vtable['count'] : vtable['max'] ));
			var mapping = new Array();
			for(var k=0; k<max+1; k++)
			{
				mapping[k] = 0;
			}
			for(var k=1; k<=count; k++)
			{
				var ctrl = document.getElementById('Q'+list[i]+'R'+k);

				if(ctrl.selectedIndex > 0)
				{
					if(mapping[ctrl.selectedIndex] > 0)
					{
						alert('Please review your rankings for the following question:\n\n\t' + qt + '\n\n' +
								'You cannot rank two responses with the same score.');
						ctrl.focus();
						return false;
					}
					mapping[ctrl.selectedIndex] = k;
				}
			}
			for(var k=1; k<=max; k++)
			{
				if(mapping[k] == 0)
				{
					alert('Please review your rankings for the following question:\n\n\t' + qt + '\n\n' +
							'You must rank one of the responses with a ' + k + '.');
					return false;
				}
			}
			break;
		case '4':
			// True or False
			var ctrlTrue = document.getElementById('Q'+list[i]+'T');
			var ctrlFalse = document.getElementById('Q'+list[i]+'F');

			if(ctrlTrue.checked == false && ctrlFalse.checked == false)
			{
				alert('You must select true or false for the following question:\n\n\t'+qt);
				ctrlTrue.focus();
				return false;
			}
			break;
		case '5':
			// Yes or no
			var ctrlYes = document.getElementById('Q'+list[i]+'Y');
			var ctrlNo = document.getElementById('Q'+list[i]+'N');

			if(ctrlYes.checked == false && ctrlNo.checked == false)
			{
				alert('You must select yes or no for the following question:\n\n\t'+qt);
				ctrlYes.focus();
				return false;
			}
			break;
		case '6':
			var ctrl = document.getElementById('Q'+list[i]);
			var max = new Number(( vtable['maxlength'] == undefined ? -1 : vtable['maxlength'] ));
			if(max > -1)
			{
				if(ctrl.value.length > max)
				{
					alert('Please review your response to the following:\n\n\t'+qt+'\n\n'
							+ 'Response must be less than ' + max + ' characters');
					ctrl.focus();
					return false;
				}
			}
			// User response
			break;
		}
	}
	return true;
}
