function validateAboForm(form)
{
/*	if (!form) {
		form = document.forms[0];
	}

	var missingfields = new Array();
	var messages = new Array();

	var reEmail = /^[a-zA-Z0-9][\w\.\-_]*[a-zA-Z0-9]*@[a-zA-Z0-9][\w\.\-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	var reZip = /^[0-9]{4}$/;
	var reAge = /^[0-9]{4}$/;
	var rePhone = /(^(0[1-9][0-9]|01)[^a-z0-9]*[0-9]{3}[^a-z0-9]*[0-9]{2}[^a-z0-9]*[0-9]{2}$)|(^(00|[+]?)[1-9][0-9][^a-z0-9]*(0?|[(]0[)])([1-9][0-9]|1)[^a-z0-9]*[0-9]{3}[^a-z0-9]*[0-9]{2}[^a-z0-9]*[0-9]{2}$)/i;

	if (!$('chk_offer_14month').checked && !$('chk_offer_26month').checked && !$('chk_offer_renewal1').checked && !$('chk_offer_renewal2').checked)
	{
		// check phone
		var el = form.elements['billing[phone]'];

		var translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
		translatedName = translatedName[1] +'.'+ translatedName[2];

		eval('var defvalue = language.form.value.'+ translatedName +';');

		if (!rePhone.test(el.value) || el.value == defvalue)
		{
			missingfields.push(el.name);
			eval('messages.push(language.error.dependent2.'+ translatedName +');');
			el.value = '';
			toggleValue(el);
		}
	}

	if (missingfields.length > 0)
	{
		InfoMessage.show(language.error.form, messages.join('<br />'));
		return false;
	}
	else
	{
		if (validateFormDependent())
		{
			return true;
		}
	}*/ 
	return true;
}

function validateForm(form)
{
	if (!form) {
		form = document.forms[0];
	}

	var missingfields = new Array();
	var messages = new Array();

	var radiosChecked = new Array();

	var reEmail = /^[a-zA-Z0-9][\w\.\-_]*[a-zA-Z0-9]*@[a-zA-Z0-9][\w\.\-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	var reZip = /^[0-9]{4}$/;
	var reAge = /^[0-9]{4}$/;
	var rePhone = new RegExp("^0[0-9 ]{3,}[-/ ]{0,}[0-9 /-]{3,}$");

	//var reDate = /^[0-3][0-9]\.[0-1][0-9]\.[1-2][09][0-9][0-9]$/;

	for (i = 0; i < form.elements.length; i++)
	{
		var el = form.elements[i];
		
		var translatedName = el.name;

		if (new String(el.name).indexOf('[') > -1 && new String(el.name).indexOf(']') > -1)
		{
			translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
			translatedName = translatedName[1] +'.'+ translatedName[2];
		}
		
		if (eval('language.error.'+ translatedName))
		{
			//console.log(translatedName);
			if (el.type && el.type == 'text' || el.nodeName == 'TEXTAREA')
			{
				if (el.name.indexOf('email') > -1)
				{
					if (!reEmail.test(el.value))
					{
						missingfields.push(el.name);
						eval('messages.push(language.error.'+ translatedName +');');
						el.value = '';
						toggleValue(el);
					}
				}
				else if (el.name.indexOf('zip') > -1)
				{
					if (!reZip.test(el.value))
					{
						missingfields.push(el.name);
						eval('messages.push(language.error.'+ translatedName +');');
						el.value = '';
						toggleValue(el);
					}
				}
				else if (el.name == 'billing[firstName]' || el.name == 'billing[lastName]')
				{
					if (form.elements['billing[sex]'].selectedIndex != 3)
					{
						eval('var defvalue = language.form.value.'+ translatedName +';');

						if (el.value.length < 1 || el.value == defvalue)
						{
							missingfields.push(el.name);
							eval('messages.push(language.error.'+ translatedName +');');
							el.value = '';
							toggleValue(el);
						}
					}
				}
				else if (el.name == 'billing[phone]')
				{
					if (!rePhone.test(el.value))
					{
						missingfields.push(el.name);
						eval('messages.push(language.error.'+ translatedName +');');
						el.value = '';
						toggleValue(el);
					}
				}
				else {
					eval('var defvalue = language.form.value.' + translatedName + ';');
					
					if (el.value.length < 1 || el.value == defvalue) {
						missingfields.push(el.name);
						eval('messages.push(language.error.' + translatedName + ');');
						el.value = '';
						toggleValue(el);
					}
				}
			}
			else if (el.options)
			{
				if(el.options.length > 1 && el.selectedIndex == 0) {
					missingfields.push(el.name);
					eval('messages.push(language.error.'+ translatedName +');');
				}
			}
			else if (el.type && el.type == 'radio')
			{
				if (!radiosChecked[el.name])
				{
					var anyRadioChecked = false;

					radiosChecked[el.name] = true;

					for (var ri = 0; ri < form.elements[el.name].length; ri++)
					{
						if (form.elements[el.name][ri].checked)
						{
							anyRadioChecked = true;
						}
					}

					if (!anyRadioChecked)
					{
						missingfields.push(el.name);
						eval('messages.push(language.error.'+ translatedName +');');
					}
				}
			}
			else if (el.type && el.type == 'checkbox')
			{
				if (el.name.indexOf('newsletter'))
				{
					if(el.checked == true && form.elements['billing[sex]'].selectedIndex != 3)
					{
						if (form.elements['billing[age]'].value.length < -1 || form.elements['billing[age]'].value == language.form.value.billing.age)
						{
								missingfields.push(form.elements['billing[age]']);
								eval('messages.push(language.error.age);');
								el.value = '';
								toggleValue(el);				
						}			
					}
				}
			}
		}
	}

	if (missingfields.length > 0)
	{
		InfoMessage.show(language.error.form, messages.join('<br />'));
		return false;
	}
	else
	{
		return true;
	}
}

function validateFormDependent(form)
{
	if (!form) {
		form = document.forms[0];
	}

	var missingfields = new Array();
	var messages = new Array();

	var reEmail = /^[a-zA-Z0-9][\w\.\-_]*[a-zA-Z0-9]*@[a-zA-Z0-9][\w\.\-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
	var reZip = /^[0-9]{4}$/;
	var reAge = /^[0-9]{4}$/;
	var rePhone = /(^(0[1-9][0-9]|01)[^a-z0-9]*[0-9]{3}[^a-z0-9]*[0-9]{2}[^a-z0-9]*[0-9]{2}$)|(^(00|[+]?)[1-9][0-9][^a-z0-9]*(0?|[(]0[)])([1-9][0-9]|1)[^a-z0-9]*[0-9]{3}[^a-z0-9]*[0-9]{2}[^a-z0-9]*[0-9]{2}$)/i;

	if (form.elements['billing[sex]'].selectedIndex == 3)
	{
		// check company name
		var el = form.elements['billing[company]'];

		var translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
		translatedName = translatedName[1] +'.'+ translatedName[2];

		if (el.value.length < 2)
		{
			missingfields.push(el.name);
			eval('messages.push(language.error.dependent2.'+ translatedName +');');
			el.value = '';
			toggleValue(el);
		}
	}
	else
	{
		// check firstname
		var el = form.elements['billing[firstName]'];

		var translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
		translatedName = translatedName[1] +'.'+ translatedName[2];

		if (el.value.length < 2)
		{
			missingfields.push(el.name);
			eval('messages.push(language.error.dependent2.'+ translatedName +');');
			el.value = '';
			toggleValue(el);
		}

		// check lastname
		var el = form.elements['billing[lastName]'];

		var translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
		translatedName = translatedName[1] +'.'+ translatedName[2];

		if (el.value.length < 2)
		{
			missingfields.push(el.name);
			eval('messages.push(language.error.dependent2.'+ translatedName +');');
			el.value = '';
			toggleValue(el);
		}

		// check age
		if ($('chk_offer_newsletter') && $('chk_offer_newsletter').checked)
		{
			var el = form.elements['billing[age]'];

			var translatedName = /(\w+)\[(\w+)\]/.exec(el.name);
			translatedName = translatedName[1] +'.'+ translatedName[2];

			if (!reAge.test(el.value) || el.value < (new Date().getFullYear() -100) || el.value > new Date().getFullYear())
			{
				missingfields.push(el.name);
				eval('messages.push(language.error.dependent2.'+ translatedName +');');
				el.value = '';
				toggleValue(el);
			}
		}
	}

	if (missingfields.length > 0)
	{
		InfoMessage.show(language.error.form, messages.join('<br />'));
		return false;
	}
	else
	{
		return true;
	}
}


function toggleValue(field)
{
	var translatedName = field.name;

	if (new String(field.name).indexOf('[') > -1 && new String(field.name).indexOf(']') > -1)
	{
		translatedName = /(\w+)\[(\w+)\]/.exec(field.name);
		translatedName = translatedName[1] +'.'+ translatedName[2];
	}

	eval('var defvalue = language.form.value.'+ translatedName +';');

	if (defvalue)
	{
		if (field.value == defvalue)
		{
			field.value = '';
		}
		else if (field.value == '')
		{
			field.value = defvalue;
		}
	}
}
