/* 
	CLOXX
	Form validator
*/

function process_form(objForm, objFields)
{
	var aPatterns = new Array();
	aPatterns["i"] = "^[0-9-]*$";
	aPatterns["f"] = "^*$"; // "^[A-z_-.&?%]*$";	
	aPatterns["e"] = "^[-+._A-z0-9]{1,64}@[-.A-z0-9]{1,64}\.[-.A-z]{2,6}$";
	aPatterns["u"] = "^http://([A-z_-.&?%]+)$";
	aPatterns["g"] = "^[A-z_-]*$";
	aPatterns["c"] = "^[0-9]{1,6}([,\.][0-9]{2})?$";
	aPatterns["d"] = "^[0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$";
	aPatterns["t"] = "^[0-9]{1,2}:[0-9]{1,2}$";
	aPatterns["x"] = "^[0-9]{1,2}:[0-9]{1,2} [0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$";
	aPatterns["z"] = "^[0-9]{1,2}:[0-9]{1,2}:[0-9]{1,2} [0-9]{1,2}\.[0-9]{1,2}\.[0-9]{4}$";
	


	// validate function
	var validate = function(elements, aFields)
	{
		for (var i = 0; i < elements.length; i++)
		{
			var elem = elements[i];			
						
			if (!elem.name || elem.type == "submit" || elem.type == "image" || aFields[elem.name] == null)
				continue;
			
			if (elem.name.substring(0, 1) != "_" && elem.value == '')
			{
				alert("Поле \"" + aFields[elem.name] + "\" обязательно для заполнения в этой форме.");
				elem.focus();
				return false;
			}			
			
			if (elem.name.substring(1, 2) != "_" && aPatterns[elem.name.substring(1, 2)] != null && !elem.value.match(aPatterns[elem.name.substring(1, 2)]))
			{
				alert("Значение поля \"" + aFields[elem.name] + "\" не соответствует требуемому формату.");
				elem.focus();
				return false;
			}

			if (elem.name.substring(2, 3) != "_" && (elem.value.length < Math.pow(2, elem.name.substring(2, 3))) && elem.value != '')
			{
				alert("Длина значения поля \"" + aFields[elem.name] + "\" должна быть не короче " + Math.pow(2, elem.name.substring(2, 3)) + " символов.");
				elem.focus();
				return false;
			}

			if (elem.name.substring(3, 4) != "_" && (elem.value.length > Math.pow(2, elem.name.substring(3, 4))) && elem.value != '')
			{
				alert("Длина значения поля \"" + aFields[elem.name] + "\" должна быть не длиннее " + Math.pow(2, elem.name.substring(3, 4)) + " символов.");
				elem.focus();
				return false;
			}
		}
		return true;
	}
	
	
	// validate all controls
	if (!validate(objForm.getElementsByTagName("INPUT"), objFields))    return false;
    if (!validate(objForm.getElementsByTagName("SELECT"), objFields))   return false;
    //if (!validate(objForm.getElementsByTagName("TEXTAREA"), objFields)) return false;

    return true;
}


