function addFCKValidator(inputFieldId, errorFieldId, conditions, params, displayType)
{
	var inputField = document.getElementById(inputFieldId);
	var errorField = document.getElementById(errorFieldId);
	
	if (inputField == null || errorField == null)
		return true;
		
	var fckText = FCKeditorAPI.GetInstance(inputFieldId).EditorWindow.parent.FCK.GetHTML();
		
	if (displayType == null || displayType == "")
		displayType = "inline";

	var isValid = true;
	
	var arrConditions = conditions.split(",");
	
	for (var nIndex = 0; nIndex < arrConditions.length; nIndex++)
	{
		var condition = arrConditions[nIndex];
		switch (condition)
		{
			case "required": isValid = (fckText != ""); break;
			case "email" : isValid = isEmail(fckText);	break;
			case "numeric" : isValid = isNumeric(fckText);	break;
			case "integer": isValid = isInteger(fckText); break;
			case "naturalNumber": isValid = isNaturalNumber(fckText); break;
			case "alphaNumeric": isValid = isAlphaNumeric(fckText);	break;
			case "hyperlink": isValid = isHyperlink(fckText); break;
			case "minLength": isValid = (fckText.length >= params); break;
			case "maxLength": isValid = (fckText.length <= params); break;
			case "lengthBetween": arrParams = params.split(","); 
				isValid = (fckText.length >= arrParams[0] && fckText.length <= arrParams[1]); break;
		}
		
		if (!isValid)
			break;
	}
	
	errorField.style.display = (isValid)?"none":displayType;
		
	return isValid;
}

function addValidator(inputFieldId, errorFieldId, conditions, params, displayType)
{
	var inputField = document.getElementById(inputFieldId);
	var errorField = document.getElementById(errorFieldId);
	
	if (inputField == null || errorField == null)
		return true;
		
	if (displayType == null || displayType == "")
		displayType = "inline";

	var isValid = true;
	
	var arrConditions = conditions.split(",");
	
	for (var nIndex = 0; nIndex < arrConditions.length; nIndex++)
	{
		var condition = arrConditions[nIndex];
		switch (condition)
		{
			case "required": isValid = (inputField.value != ""); break;
			case "email" : isValid = isEmail(inputField.value);	break;
			case "numeric" : isValid = isNumeric(inputField.value);	break;
			case "integer": isValid = isInteger(inputField.value); break;
			case "naturalNumber": isValid = isNaturalNumber(inputField.value); break;
			case "alphaNumeric": isValid = isAlphaNumeric(inputField.value);	break;
			case "hyperlink": isValid = isHyperlink(inputField.value); break;
			case "minLength": isValid = (inputField.value.length >= params); break;
			case "maxLength": isValid = (inputField.value.length <= params); break;
			case "lengthBetween": arrParams = params.split(","); 
				isValid = (inputField.value.length >= arrParams[0] && inputField.value.length <= arrParams[1]); break;
		}
		
		if (!isValid)
			break;
	}
	
	errorField.style.display = (isValid)?"none":displayType;
		
	return isValid;
}

function addDoubleFieldsValidator(inputFieldId1, inputFieldId2, errorFieldId, condition, displayType)
{
	var inputField1 = document.getElementById(inputFieldId1);
	var inputField2 = document.getElementById(inputFieldId2);
	var errorField = document.getElementById(errorFieldId);
	
	if (inputField1 == null || inputField2 == null || errorField == null)
		return true;
		
	if (displayType == null || displayType == "")
		displayType = "inline";
		
	var isValid = true;
	
	switch (condition)
	{
		case "match": isValid = (inputField1.value == inputField2.value); break;
		case "notMatch": isValid = (inputField1.value != inputField2.value); break;
	}
		
	errorField.style.display = (isValid)?"none":displayType;
		
	return isValid;
}

function isEmail(str)
{
	var regex = /^[-_.a-z0-9]+@(([-_a-z0-9]+\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i;
	return regex.test(str);
}

function isNaturalNumber(str)
{
	var regex = /^\d+$/;
	return regex.test(str);
}

function isInteger(str)
{
	var regex = /^-?\d+$/;
	return regex.test(str);
}

function isNumeric(str)
{
	var regex = /^-?\d*\.?\d+$/;
	return regex.test(str);
}

function isAlphaNumeric(str)
{
	var regex = /^\w+$/;
	return regex.test(str);
}

function isHyperlink(str)
{
	var regex = /^(https?:\/\/)?(\w+\.\w+)?(\.\w{2,3})?(\.\w{2,3}\.\w{2})?$/;
	return regex.test(str);
}