﻿// Убрать пробелы в начале и конце строки
function Trim(str) {
    while (true) { 
        index = str.indexOf(" ");
        if (index != 0)
            break;
        str = str.substr(1, str.length - 1);
    }

    while (true) {
        index = str.lastIndexOf(" ");
        if (str.length == 0 || index != str.length - 1)
            break;
        str = str.substr(0, str.length - 1);
    }
    return str;
}

var vh = {
	msg : {
		required : 'Поле, обязательное для заполнения',
		wrong_format: 'Неверный формат'
	},
	blur: function(params) {
		if (!params['field']) return;

		if (params['defaultValue'] && params['field'].value == '') {
			params['field'].value = params['defaultValue'];
		}

		if (params['defaultValue'] && params['defaultValue'] == params['field'].value) {
			params['field'].style.color = '#999';
		}
		else {
			params['field'].style.color = '#000';
		}

	},
	focus: function(params) {
		if (!params['field']) return;
		if (params['defaultValue'] && params['field'].value == params['defaultValue']) {
			params['field'].value = '';
		}
		params['field'].style.color = '#000';
	},
	setValidationControlStyle: function(params) {
		if (!params['holder']) return;

		var holder = document.getElementById(params['holder']);
		if (!holder) return;

		holder.style.backgroundColor = (params['valid']) ? '#fff' : '#f99';
		holder.className = (params['valid']) ? 'Valid' : 'notValid';
    },
    isArray: function (obj) {
        if (typeof (obj) == 'object')
            if (obj.length) return true;
        return false;
    },
    inArray: function (elm, arr) {
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] == elm) return true;
        }
        return false;
    },
	isValid: {
		email: function(value) {
		    return /^[\w-]+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(Trim(value));
		},
        corporateEmail: function(email, free_domains) {
            if (!vh.isArray(free_domains)) return false;
            if (!vh.isValid.email(email)) return false;
            var domain = email.split('@').pop();
            if (vh.inArray(domain, free_domains)) return false;
            return true;
        },
		url: function(value) {
			//return /[A-Za-z0-9\.-]{3,}\.[A-Za-z]{3}/.test(Trim(value));
			return /^(((ht|f)tp(s?):\/\/)|([^ \[\]\(\)\n\r\t]+)|(([012]?[0-9]{1,2}\.){3}[012]?[0-9]{1,2})\/)([^ \[\]\(\),;"'<>\n\r\t]+)([^\. \[\]\(\),;"'<>\n\r\t])|(([012]?[0-9]{1,2}\.){3}[012]?[0-9]{1,2})$/.test(Trim(value));
		},
		digit: function(value) {
			return /^[\d]+$/.test(Trim(value));
		},
		alpha: function(value) {
			return /^[A-Za-zА-Яа-яіІїЇєЄґҐёЁ \-']+$/.test(Trim(value));
		},
		alpha_numeric: function(value) {
			return /^[A-Za-zА-Яа-я0-9]+$/.test(Trim(value));
		},
		phone: function(value) {
			return /^\+?[0-9\-\(\) ]+$/.test(Trim(value));
		},
		standart_text: function(value) {
			return !/<\w[^>]+>/.test(Trim(value));
		}
	}
};
