function CheckDate(objValue)
{
	var yr = parseInt(objValue.substr(0,4), 10);
	var mt = parseInt(objValue.substr(5,2), 10);
	var dy = parseInt(objValue.substr(8,2), 10);

	if ((mt < 1) || (mt > 12))
		return false;

	var ileDni = ((mt==1)||(mt==3)||(mt==5)||(mt==7)||(mt==8)||(mt==10)||(mt==12)) ? 31 : ((mt == 2) ? (((yr % 4) == 0) && ((yr % 100) != 0) ? 29 : 28) : 30);
	
	if ((dy < 1) || (dy > ileDni))
		return false;
		
	return true;
}

function CheckIP(objValue)
{
	var s = objValue;
	var t;
	
	t = s.substr(0, s.indexOf('.'));
		if ((parseInt(t, 10) < 1) || (parseInt(t, 10) > 254))
			return false;
	s = s.substr(s.indexOf('.') + 1, 99);
	
	t = s.substr(0, s.indexOf('.'));
		if (parseInt(t, 10) > 254)
			return false;
	s = s.substr(s.indexOf('.') + 1, 99);
	
	t = s.substr(0, s.indexOf('.'));
		if (parseInt(t, 10) > 254)
			return false;
	s = s.substr(s.indexOf('.') + 1, 99);
	
	t = s;
		if ((parseInt(t, 10) < 1) || (parseInt(t, 10) > 254))
			return false;

	return true;
}

function ValidateItem(itemObj)
{
	var isValueValid = false;
	var isLengthOK = (itemObj.REQ == 0) || (itemObj.value.length > 0);

	switch (itemObj.DataType)
	{
		case 'datetime':
			isValueValid = ((itemObj.value.search(/^\d{4}(-\d{2}){2}$/) != -1) || (itemObj.value.length < 1));
			isValueValid = (isValueValid) && (CheckDate(itemObj.value));
			break;

		case 'float':
			isValueValid = ((itemObj.value.search(/^[-]?[0-9]+([.]?[0-9]+)?$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'int':
			isValueValid = ((itemObj.value.search(/^[-]?[0-9]+$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'int0':
			isValueValid = ((itemObj.value.search(/^[0-9]+$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'PESEL':
			isValueValid = ((itemObj.value.search(/^\d{11}$/) != -1) || (itemObj.value.length < 1));
			break;
			
		case 'NIP':
			isValueValid = ((itemObj.value.search(/^[0-9]{3}[-]?[0-9]{3}[-]?[0-9]{2}[-]?[0-9]{2}$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'zip':
			isValueValid = ((itemObj.value.search(/^\d{2}-\d{3}$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'haslo':
			isValueValid = ((itemObj.value.search(/^[!-~]$/) != -1) || (itemObj.value.length < 1));
			break;

		case 'email':
			isValueValid = ((itemObj.value.search(/^[a-z,A-Z,0-9,-,.]+@[a-z,A-Z,0-9,-]+.+[a-z,A-Z,0-9,-]+$/) != -1) || (itemObj.value.length < 1));
			break;
			
		case 'ip':
			isValueValid = ((itemObj.value.search(/^[1-2]*[0-9]*[0-9]+([.]{1}[1-2]*[0-9]*[0-9]+){3}$/) != -1) || (itemObj.value.length < 1));
			isValueValid = (isValueValid) && (CheckIP(itemObj.value));
			break;
			
		case 'godzina':
			isValueValid = ((itemObj.value.search(/^\d{2}:\d{2}$/) != -1) || (itemObj.value.length <1));
			isLengthOK = true;
			break;
			
		default: 
			isValueValid = true;
			break;
	}

	if ((isValueValid) && (isLengthOK))
		return true;
	else
	{
		if (!isValueValid)
			alert('W polu \"'+itemObj.alt+'\" jest wpisana niepoprawna wartość');
		else
			alert('Pole \"'+itemObj.alt+'\" nie może być puste');
		return false;
	}
}

function ValidateForm(formObj)
{
	for (i=0; i<formObj.elements.length; i++)
	{
		if (formObj.elements[i].DataType)
		{
			if (!ValidateItem(formObj.elements[i]))
				return false;
		}
	}
	
	return true;
}


