/* Рег. выражение для URLa */
function isValidURL(url){
    var RegExp = /^(([\w]+:)?\/\/)?(([\d\w]|%[a-fA-f\d]{2,2})+(:([\d\w]|%[a-fA-f\d]{2,2})+)?@)?([\d\w][-\d\w]{0,253}[\d\w]\.)+[\w]{2,4}(:[\d]+)?(\/([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)*(\?(&?([-+_~.\d\w]|%[a-fA-f\d]{2,2})=?)*)?(#([-+_~.\d\w]|%[a-fA-f\d]{2,2})*)?$/;
    if(RegExp.test(url)){
    	return true;
    }else{
    	return false;
    }
} 

/* Проверка URLa */
function URLChecker(obj)
{  
        if (isValidURL(obj.value))  
        {
           obj.style.borderColor="#a8d4b0";
           obj.style.backgroundColor="#f8fff9";
           URLCheckerHook(obj);
           return true;
        }
        else 
        {
        	obj.style.borderColor="#fdaaaa";
           	obj.style.backgroundColor="#fff5f5";
           	URLCheckerHook(obj);
        	return false;
        }
        
} 

/* Хук для URLa */
function URLCheckerHook(obj)
{
    obj.onkeyup = function()
    {
        if (isValidURL(obj.value))  
        {
           obj.style.borderColor="#a8d4b0";
           obj.style.backgroundColor="#f8fff9";
           return true;
        }
        else 
        {
        	obj.style.borderColor="#fdaaaa";
           	obj.style.backgroundColor="#fff5f5";
        	return false;
        }
    }
}

/* Рег. выражение для MAILa*/
function isValidEmail (email)
{
   return (/^([a-z0-9_\-]+\.)*[a-z0-9_\-]+@([a-z0-9][a-z0-9\-]*[a-z0-9]\.)+[a-z]{2,4}$/i).test(email);
}

/* Проверка E-mail */
function EmailChecker(obj)
{
        if (isValidEmail(obj.value))  
        {
        	obj.style.borderColor="#a8d4b0";
           	obj.style.backgroundColor="#f8fff9";
           	EmailCheckerHook(obj);
           	return true;
        }
        else 
        {	
        	obj.style.borderColor="#fdaaaa";
           	obj.style.backgroundColor="#fff5f5";
           	EmailCheckerHook(obj);
        	return false;
        }
} 

/* Хук для E-mail */
function EmailCheckerHook(obj)
{
    obj.onkeyup = function()
    {
        if (isValidEmail(obj.value))  
        {
        	obj.style.borderColor="#a8d4b0";
           	obj.style.backgroundColor="#f8fff9";
           	return true;
        }
        else 
        {	
        	obj.style.borderColor="#fdaaaa";
           	obj.style.backgroundColor="#fff5f5";
        	return false;
        }
    }
} 

/* Проверка поля на пустоту, с учетом длины len*/
function FieldNotEmpty(obj, len)
{
	if (obj.value.length >=len)
	{
		obj.style.borderColor="#a8d4b0";
        obj.style.backgroundColor="#f8fff9";
        FieldNotEmptyHook(obj, len);
        return true;
    }
    else 
    {	
      	obj.style.borderColor="#fdaaaa";
       	obj.style.backgroundColor="#fff5f5";
       	FieldNotEmptyHook(obj, len);
      	return false;
    }
}

/* Хук на проверку пустого поля*/
function FieldNotEmptyHook(obj, len)
{
    obj.onkeyup = function()
    {
        if (obj.value.length >=len)
        {
            obj.style.borderColor="#a8d4b0";
           	obj.style.backgroundColor="#f8fff9";
           	return true;
        }
        else 
        {
        	obj.style.borderColor="#fdaaaa";
           	obj.style.backgroundColor="#fff5f5";
        	return false;
        }
    }
}

function PasswordConfirm(pass1id, pass2id, len)
{
	//Главные элементы
    var pass1 = document.getElementById(pass1id);
    var pass2 = document.getElementById(pass2id);
    
	//Если что-нибудь введено
	if ((pass1.value==pass2.value) && (pass1.value.length>=len) && (pass2.value.length>=len))
		{
		pass1.style.borderColor="#a8d4b0";
		pass1.style.backgroundColor="#f8fff9";
		pass2.style.borderColor="#a8d4b0";
		pass2.style.backgroundColor="#f8fff9";
		PasswordConfirmHook(pass1id, pass2id, len);
		return true;
	}
	else
	{
		pass1.style.borderColor="#fdaaaa";
		pass1.style.backgroundColor="#fff5f5";
		pass2.style.borderColor="#fdaaaa";
		pass2.style.backgroundColor="#fff5f5";
		PasswordConfirmHook(pass1id, pass2id, len);
		return false;
	}
}

function PasswordConfirmHook(pass1id, pass2id, len)
{
    var pass1 = document.getElementById(pass1id);
    var pass2 = document.getElementById(pass2id);
    
    //Устанавливаем обработчик
    pass2.onkeyup = function()
    {
		if ((pass1.value==pass2.value) && (pass1.value.length>=len) && (pass2.value.length>=len))
		{
			pass1.style.borderColor="#a8d4b0";
			pass1.style.backgroundColor="#f8fff9";
			pass2.style.borderColor="#a8d4b0";
			pass2.style.backgroundColor="#f8fff9";
			return true;
		}
		else
		{
			pass1.style.borderColor="#fdaaaa";
			pass1.style.backgroundColor="#fff5f5";
			pass2.style.borderColor="#fdaaaa";
			pass2.style.backgroundColor="#fff5f5";
			return false;
		}
	}
}

/*function PasswordComplexity(passwordboxid, containerdivid, minmax, showtext)
{
    //Главные элементы
    var passwordbox = document.getElementById(passwordboxid);
    var container   = document.getElementById(containerdivid);
    
    //Вновь созданные элементы
    var indicator   = document.createElement("div");
    var indicator_i = document.createElement("div");
    var text_ind    = document.createElement("div");
    
    //Устанавливаем параметры индикатора
    container.appendChild(indicator);
    indicator.className = "pc-indicator";
    indicator.style.width = passwordbox.clientWidth - 30;
    
    //Устанавливаем параметры внутреннего индикатора
    indicator.appendChild(indicator_i);
    indicator_i.className = "pc-indicator-inline";
    
    //Устанавливаем параметры текстого индикатора
    if (showtext == null && showtext != false)
    container.appendChild(text_ind);
    text_ind.className = "pc-indicator-text";
    text_ind.innerHTML = "Низкая сложность";
    
    //Устанавливаем параметры контейнера
    container.className = "pc-container";
    
    //Проверяем вводные данные
    if (minmax == null)
    minmax = Array(0, 25);
    
    //Вычисляем данные сложности
    var current_complexity = 0;
    
    //Значения для определения сложности
    var numeric = "0123456789";
    var lower = "abcdefghijklmopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя";
    var upper = "ABCDEFGHIJKLMOPQRSTUVWXYZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
    var signs = "~`!@#$%^&*+-=_|\\/()[]{}<>,.;:?\"\'";
    
    //Факторы сложности
    var has_only_numeric = false;
    var has_numeric = false;
    var has_lower = false;
    var has_upper = false;
    var has_signs = false;
        
    //Устанавливаем обработчик
    passwordbox.onkeyup = function()
    {
        //Если что-нибудь введено
        if (passwordbox.value.length != 0)
        {
            //Показываем индикатор
            container.style.display = "block";
        }
        else
        {
            //В противном случае, скрываем
            container.style.display = "none";
        }
        
        //Вычисляем комплексность
        current_complexity = (passwordbox.value.length / minmax[1]).toString().substr(0,4);
        
        //Проверяем наличие определенной группы символов
        for(i = 0; i < passwordbox.value.length; i++)
        {            
            has_numeric |= numeric.indexOf(passwordbox.value.charAt(i)) >= 0;
            has_lower   |= lower.indexOf(passwordbox.value.charAt(i)) >= 0;
            has_upper   |= upper.indexOf(passwordbox.value.charAt(i)) >= 0;
            has_signs   |= signs.indexOf(passwordbox.value.charAt(i)) >= 0;
            
            if (has_numeric)
            has_only_numeric++;
        }
        
        
        
        //Вычисляем самое частое состояние - пароль состоит из одних лишь цифр
        if (has_only_numeric == passwordbox.value.length && has_lower == false && has_upper == false && has_signs == false)
        {
            current_complexity = 0.40;
            text_ind.innerHTML = "<span style=\"critical\">Лёгкий пароль</span>";
            indicator_i.style.width = "25%";
            indicator_i.className = "pc-indicator-inline pc-i-critical";
            has_only_numeric = 0;
            has_numeric = false;
            has_lower= false;
            has_upper = false;
            has_signs = false;
            return;
        }
        
        //Сбрасываем
        has_only_numeric = 0;
        
        //Изменяем комплексность в соответствии с паролем
        if (has_lower == true || has_upper == true)
        {
            current_complexity = parseFloat(current_complexity) + 0.10;
        }
        
        if (has_lower == true && has_upper == true)
        {
            current_complexity = parseFloat(current_complexity) + 0.15;
        }
        
        if (has_signs == true)
        {
            current_complexity = parseFloat(current_complexity) + 0.15;
        }
        
        //Сбрасываем
        has_numeric = false;
        has_lower= false;
        has_upper = false;
        has_signs = false;
        
        //Если комплексность достаточна, то пароль оптимален
        if (current_complexity >= 1)
        {
            text_ind.innerHTML = "<span class=\"pc-green\">Оптимальный</span>";
            indicator_i.style.width = "97%";
            indicator_i.className = "pc-indicator-inline pc-i-green";
            return;
        }
        
        //Если длина введенного пароля меньше порога
        if (passwordbox.value.length < minmax[0])
        {
            //Выводим критическое сообщение
            text_ind.innerHTML = "<span class=\"pc-critical\">Слишком короткий</span>";
            indicator_i.style.width = "25%";
            indicator_i.className = "pc-indicator-inline pc-i-critical";
            return;
        }
        
        //Если длина пароля больше порога
        if (passwordbox.value.length > minmax[1])
        {
            text_ind.innerHTML = "<span class=\"pc-green\">Оптимальный</span>";
            indicator_i.style.width = "97%";
            indicator_i.className = "pc-indicator-inline pc-i-green";
            return;
        }
        
        
        //Выводим состояние в индикаторе
        indicator_i.style.width = current_complexity * 100;
        indicator_i.className = "pc-indicator-inline pc-i-yellow";
        
        //Выводим состояние в текстовый элемент
        text_ind.innerHTML = "<span style=\"pc-yellow\">Средней сложности</span>";
    }
} */
