//<![CDATA[
var cssError = 'css_input_text_error';
var cssNormal = 'css_input_text_normal';

function setCssError(newCss){
	cssError = newCss;
}
function setCssNormal(newCss){
	cssNormal = newCss;
}

// Function checks if argument is empty.
// @param Object arg.
// @return Boolean Check result.
function isEmpty(arg) {
	if ((arg.obj.value.length == 0) || (arg.obj.value == null))
		return true;
	else
		return false;
}

// Function checks if arguments length's is between parametrs.
// @param Object arg.
// @param Number min Minimum of length.
// @param Number Max Maximum of length.
// @return Boolean Check result.
function isString(arg, min, max) {
	if (arg.obj.value.length >= min && arg.obj.value.length <= max)
		return true;
	else
		return false;
}

// Function checks if arguments is numeric.
// @param Object arg.
// @return Boolean Check result.
function isNumeric(arg) {
	var reg_exp = new RegExp("^[-+,.0-9 ]+$");
	if (reg_exp.test(arg.obj.value))
		return true;
	else
		return false;
}

// Function checks if arguments is number.
// @param Object arg.
// @param Number min Minimum of value.
// @param Number Max Maximum of value.
// @return Boolean Check result.
function isNumber(arg, min, max) {
	var reg_exp = new RegExp("^[-]{0,1}[0-9]+[,.]{0,1}[0-9]*$");
	if (reg_exp.test(arg.obj.value)) {
		if (parseFloat(arg.obj.value) >= parseFloat(min) && parseFloat(arg.obj.value) <= parseFloat(max))
			return true;
		else
			return false;
	}
	else
		return false;
}

// Function checks if arguments is number.
// @param Object arg.
// @param Number min Minimum of value.
// @param Number Max Maximum of value.
// @return Boolean Check result.
function isDate(arg) {
	var reg_exp = new RegExp("^[0-9]{2}-[0-9]{2}-[0-9]{4}$");
	var reg_exp = new RegExp("^[0-9]{1,2}[.-][0-9]{1,2}[.-][0-9]{4}$");
	if (reg_exp.test(arg.obj.value)) {
		return true;
	}
	else
		return false;
}

// Function checks if arguments is email address.
// @param Object arg.
// @return Boolean Check result.
function isEmail(arg) {
	var reg_exp = new RegExp("^([a-zA-Z0-9+._-])+@([a-zA-Z0-9+._-])+[.]{1}[a-zA-Z]{2,4}$");
	if (reg_exp.test(arg.obj.value))
		return true;
	else
		return false;
}

// Function checks if arguments is email address.
// @param Object arg.
// @return Boolean Check result.
function isLogin(arg) {
	var reg_exp = new RegExp("^([a-zA-Z0-9\-_.])+$");
	if (reg_exp.test(arg.obj.value))
		return true;
	else
		return false;
}

// Function checks if arguments is email address.
// @param Object arg.
// @return Boolean Check result.
function isObituaryLogin(arg) {
	var reg_exp = new RegExp("^([a-zA-Z0-9\-.])+$");
	if (reg_exp.test(arg.obj.value))
		return true;
	else
		return false;
}

// Function valid object and set info when there is some problem.
// @param Object arg.
// @param String type Type of validation.
// @param Object messageBox Object to show info.
// @param String type Test or Valid.
// @return Boolean Check result.
function validValue(arg, type, messageBox, typeTest) {
	var ArrayType = type.split(":");
	var typeValid = ArrayType[0];
	var min = 0;
	var max = 0;

	if (ArrayType.length == 3) {
		min = ArrayType[1];
		max = ArrayType[2];
	}

	if(typeof(typeTest) == 'undefined')
		typeTest = "valid";

	// Empty validation.
	if (typeValid.toLowerCase() == "isEmpty".toLowerCase()) {
		if (isEmpty(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wypełnij wszystkie wymagane pola!</font>';
			}
			return false;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
	}

	// String validation.
	if (typeValid.toLowerCase() == "isString".toLowerCase()) {
		if (isString(arg, min, max)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość jest spoza zakresu! min: ' + min + ', max: ' + max + ' znaków!</font>';
			}
			return false;
		}
	}

	// Numeric validation.
	if (typeValid.toLowerCase() == "isNumeric".toLowerCase()) {
		if (isNumeric(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość nie jest numeryczna!</font>';
			}
			return false;
		}
	}

	// Number validation.
	if (typeValid.toLowerCase() == "isNumber".toLowerCase()) {
		if (isNumber(arg, min, max)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość jest spoza zakresu lub nie jest liczbą! min: ' + min + ', max: ' + max + '!</font>';
			}
			return false;
		}
	}

	// Number validation.
	if (typeValid.toLowerCase() == "isDate".toLowerCase()) {
		if (isDate(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość nie jest datą!</font>';
			}
			return false;
		}
	}

	// Email validation.
	if (typeValid.toLowerCase() == "isEmail".toLowerCase()) {
		if (isEmail(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wpisz poprawnie adres e-mail!</font>';
			}
			return false;
		}
	}

	// Login validation.
	if (typeValid.toLowerCase() == "isLogin".toLowerCase()) {
		if (isLogin(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość nie jest poprawnym loginem! Akceptowane znaki to litery alfabetu, cyfry oraz znaki . - _ (kropka, myślnik, podkreślenie).</font>';
			}
			return false;
		}
	}

	// Obituary login validation.
	if (typeValid.toLowerCase() == "isObituaryLogin".toLowerCase()) {
		if (isObituaryLogin(arg)) {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssNormal;
				messageBox.obj.innerHTML = '';
			}
			return true;
		}
		else {
			if (typeTest.toLowerCase() == "valid".toLowerCase()) {
				arg.obj.className = cssError;
				messageBox.obj.innerHTML = '<font color="#CC0000">Wartość nie jest poprawnym loginem! Akceptowane znaki to litery alfabetu, cyfry oraz znaki . - (kropka i/lub myślnik).</font>';
			}
			return false;
		}
	}
}

//]]>
