﻿var regex_emptyString = /\s/g;
var regex_wholeNumber = /^\s*\d+\s*$/;
var regex_wholeNumberWithSign = /^\s*(\+|-)?\d+\s*$/;
var regex_decimalNumber = /^\s*(\+|-)?((\d+(\.\d+)?)|(\.\d+))\s*$/;
var regex_email = /^([a-zA-Z0-9]+[\w\.-]?)*[a-zA-Z0-9]@([a-zA-Z0-9]+[\w\.-]?)*[a-zA-Z0-9]\.[a-zA-Z]{2,9}$/;
var regex_date = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
var regex_phone = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/;

function checkStringEmpty(val) {
	if (val.replace(/\s/g, '') == '') {
		return true;
	}

	return false;
}

function checkStringLength(val, minLength, maxLength) {
	if (val.length < minLength || val.length > maxLength) {
		return false;
	}

	return true;
}

function checkWholeNumber(val) {
	if (checkStringEmpty(val)) {
		return false;
	}

	return String(val).search(regex_wholeNumber) != -1
}

function checkWholeNumberWithSign(val) {
	if (checkStringEmpty(val)) {
		return false;
	}

	return String(val).search(regex_wholeNumberWithSign) != -1
}

function checkDecimalNumber(val) {
	return String(val).search(regex_decimalNumber) != -1
}

function checkEmail(val) {
	var errMsg = '';

	if (checkStringEmpty(val)) {
		errMsg = 'Введите адрес электронной почты!';
	} else {
		if (String(val).search(regex_email) == -1) {
			errMsg = "Некорректный формат email!";
		}
	}

	return errMsg;
}

function checkLogin(login, maxLoginLength) {
	var errMsg = '';
	var minLoginLength = 3;

	if (checkStringEmpty(login)) {
		errMsg = 'Введите имя пользователя!';
	} else if (!checkStringLength(login, minLoginLength, maxLoginLength)) {
		errMsg = 'Длина имени пользователя должна быть от ' + minLoginLength + ' до ' + maxLoginLength + ' символов!';
	} else {
		re = /^\w+$/;
		if (!re.test(login)) {
			errMsg = 'Имя пользователя может состоять только из букв и цифр латинского алфавита!';
		}
	}
	
	return errMsg;
}

function checkPassword(password, login, minPasswordLength, maxPasswordLength) {
	var errMsg = '';

	if (checkStringEmpty(password)) {
		errMsg = 'Введите пароль!';
	} else if (!checkStringLength(password, minPasswordLength, maxPasswordLength)) {
		errMsg = 'Длина пароля должна быть от ' + minPasswordLength + ' до ' + maxPasswordLength + ' символов!';
	} else if (password == login) {
		errMsg = 'Имя пользователя и пароль не должны совпадать!';
	}

	return errMsg;
}

function checkBirthDay(birthDate) {
	var errMsg = '';

	if (checkStringEmpty(birthDate)) {
		errMsg = 'Необходимо ввести дату рождения!';
	} else {
		if (!regex_date.test(birthDate)) {
			errMsg = 'Дата рождения имеет неправильный формат!';
		}
	}

	return errMsg;
}

function checkPhone(phone) {
	var errMsg = '';

	//	if (!phone.match(regex_phone)) {
	//		errMsg = 'Введите корректный формат для номера';
	//	}
	
	return errMsg;
}

function getControlValue(controlId) {
	var ctrl = window.document.getElementById(controlId);

	if (ctrl) {
		return ctrl.value;
	}

	return '';
}
function setControlValue(controlId, val) {
	var ctrl = window.document.getElementById(controlId);

	if (ctrl) {
		ctrl.value = val;
	}
}

function setControlCssClass(controlId, cssClass) {
	$("#" + controlId).addClass(cssClass);
}
function removeControlCssClass(controlId, cssClass) {
	$("#" + controlId).removeClass(cssClass);
}

function setValidationInfo(source, args, controlId, errMsg) {
	$(source).text(errMsg);

	if (checkStringEmpty(errMsg)) {
		setControlCssClass(controlId, 'err');
		args.IsValid = true;
	} else {
		removeControlCssClass(controlId, 'err');
		args.IsValid = false;
	}
}

// Savings
function checkSavingAmount(val) {
	var errMsg = '';

	if (checkStringEmpty(val)) {
		errMsg = 'Введите сумму вклада!';
	} else {
		if (!checkWholeNumber(val)) {
			errMsg = "Некорректный формат суммы!";
		}
	}

	return errMsg;
}

// Credits
function checkCreditAmount(val) {
	var errMsg = '';

	if (checkStringEmpty(val)) {
		errMsg = 'Введите сумму кредита!';
	} else {
		if (!checkWholeNumber(val)) {
			errMsg = "Некорректный формат суммы!";
		}
	}

	return errMsg;
}

function amount_RangeValidate(source, arguments)
{
	arguments.IsValid = false;
	
	var customValidatorValues = source.attributes["title"].value.split(';');
	var isNumber = new RegExp("^[0-9]*$");

	if (customValidatorValues.length == 2)
    {
        var strMinValue = customValidatorValues[0];
        var strMaxValue = customValidatorValues[1];
        var strToValidate = arguments.Value;

        while (strMinValue.indexOf(' ') >= 0) strMinValue = strMinValue.replace(' ', '');
        while (strMaxValue.indexOf(' ') >= 0) strMaxValue = strMaxValue.replace(' ', '');
        while (strToValidate.indexOf(' ') >= 0) strToValidate = strToValidate.replace(' ', '');

        if (strToValidate.search(isNumber) != -1)
        {
        	var minValue = parseFloat(strMinValue),
		    maxValue = parseFloat(strMaxValue),
		    valueToValidate = parseFloat(strToValidate);
        	if (minValue <= valueToValidate && valueToValidate <= maxValue)
		    {
		    	arguments.IsValid = true;
		    }	
        }
    }
}

function amount_LessThan(lesserValueContainerId, greaterValueContainerId) {
	var lesserValue = $("#" + lesserValueContainerId).val();
	var greaterValue = $("#" + greaterValueContainerId).val();
	
	while (lesserValue.indexOf(' ') >= 0) lesserValue = lesserValue.replace(' ', '');
	while (greaterValue.indexOf(' ') >= 0) greaterValue = greaterValue.replace(' ', '');
	
	lesserValue = lesserValue ? lesserValue : 0;
	
	if (parseFloat(lesserValue) < parseFloat(greaterValue))
	{
		return true;
	}

	return false;
}

function amount_CompareValidate(source, arguments) {
    var strToCompare = document.getElementById(source.attributes["title"].value).value;
    var strToValidate = arguments.Value;

    while (strToCompare.indexOf(' ') >= 0) strToCompare = strToCompare.replace(' ', '');
    while (strToValidate.indexOf(' ') >= 0) strToValidate = strToValidate.replace(' ', '');

    var valueToCompare = parseFloat(strToCompare);
    var valueToValidate = parseFloat(strToValidate);
    
    arguments.IsValid = valueToCompare != NaN && valueToValidate != NaN && valueToValidate <= valueToCompare;
}
