function isNotEmpty(elem)
{
	var str = elem.value;
	if(str == null || str.length == 0) return false;else return true;
}

function validate(form)
{
	var attrVal, attrReg, attrEq, attrFail, strTemp,maxLength;
	for (var i = 0; i < form.length; i++)
	{
		attrVal = form[i].validate;
		switch (attrVal)
		{
			case 'required' :
				attrFail = form[i].failure;
				if (!isNotEmpty(form[i]))
				{
					if (attrFail) alert(attrFail);else alert('You must complete all required form fields.');
					form[i].focus();
					return false;
				}
				break;
			case 'requiredInt' :
				attrFail = form[i].failure;
				if (!checkinteger(form[i].value,true))
				{
					if (attrFail) alert(attrFail);else alert('You must complete all required form fields.');
					if(form[i].type != "hidden") form[i].focus();
					return false;
				}
				else
				{
					maxLength= form[i].reqlength;
					if(maxLength)
					{
						if (maxLength != form[i].value.length)
						{
							if (attrFail) alert(attrFail);else alert('You must complete all required form fields.');
							form[i].focus();
							return false;
						}
					}
				}
				break;
			case 'requiredEmail' :
				attrFail = form[i].failure;
				if (!checkEmail(form[i].value,true))
				{
					if (attrFail) alert(attrFail);else alert('You must complete all required form fields.');
					form[i].focus();
					return false;
				}
				break;
		}
	}
	return true;
}


function checkinteger(object_value, required)
{
	//trim whitespace before we validate
	object_value=object_value+"";
	object_value = object_value.replace(/^\s+/,'').replace(/\s+$/,'');
	//remove numeric noise
	object_value = object_value.replace(/[$ŁĄ€,~+]?/g, '');

	if( required )
	{
		if( object_value.length == 0 )
		{
			return false;
		}
	}
	else
	{
		if( object_value.length == 0 )
		{
			return true;
		}
	}

	var decimal_format = ".";
	var check_char = object_value.indexOf(decimal_format);

   	if (check_char == -1) return checknumber(object_value);
		else return false;
}

function checknumber(object_value, required)
{
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;

	//trim whitespace before we validate
	object_value=object_value+"";
	object_value = object_value.replace(/^\s+/,'').replace(/\s+$/,'');
	//remove numeric noise
	object_value = object_value.replace(/[$ŁĄ€,~+]?/g, '');

    if( required )
	{
		if( object_value.length == 0 )
		{
			return false;
		}
	}
	else
	{
		if( object_value.length == 0 )
		{
			return true;
		}
	}

	check_char = start_format.indexOf(object_value.charAt(0));
    if (check_char == 1) decimal = true;
		else if (check_char < 1) return false;

	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char < 0) return false;
		else if (check_char == 1)
		{
			if (decimal) return false;
			else decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits) trailing_blank = true;
		}
		else if (trailing_blank) return false;
		else digits = true;
	}

	return true
}

function checkEmail(object_value, required)
{
	//trim whitespace before we validate
	object_value=object_value+"";
	object_value = object_value.replace(/^\s+/,'').replace(/\s+$/,'');

	if( required )
	{
		if( object_value.length == 0 ) return false;
	}
	else if( object_value.length == 0 ) return true;

	//return checkregex(object_value, /^[\w-]+(?:\.[\w-]+)*@(?:[\w-]+\.)+[a-zA-Z]{2,7}$/);
	//return checkregex(object_value, /^[a-zA-Z_0-9-]+(?:\.[a-zA-Z_0-9-]+)*@(?:[a-zA-Z_0-9-]+\.)+[a-zA-Z]{2,7}$/);
	return checkregex(object_value, /^[a-zA-Z_0-9-'\+~]+(\.[a-zA-Z_0-9-'\+~]+)*@([a-zA-Z_0-9-]+\.)+[a-zA-Z]{2,7}$/, required);
}

function checkregex(object_value, regexPattern, required)
{
	if( required )
	{
		if( object_value.length == 0 ) return false;
	}
	else if( object_value.length == 0 ) return true;
    return regexPattern.test(object_value);
}

