var display_type = 'block';

/**
* Функция валидации и подсчета формул
*/
function validation(id){

    var elems = $(id).select('input');
    var global_state = true
    elems.each(
        function (obj){
            if (!validateOne(obj)){
				alert(obj.name);
                global_state = false;
            }
        }
    )

	if (($('temp1') !== null && $('temp1').innerHTML == '0') ||
		($('cap') !== null && $('cap').value == '')){
		global_state = false;
	}
    return global_state;
}

/**
* Функция проверки одного элемента
*/
function validateOne(obj){
    var state = true;
    var error_text = new String;
    obj = prototyper(obj);
    switch (obj.tagName){
        case 'TEXTAREA':
        case 'INPUT':
            if (obj.type == 'hidden' && !obj.readAttribute('req')){
                break;
            }
            var preg = getPreg(obj);
            var value = obj.getValue();
            if (preg){
                preg = new RegExp(preg);
                if (!preg.test(value)){
                    error_text = 'Введённый текст не соответсвует допустимому значению';
                    state = false;
                }
            }
            if (obj.type && obj.type == 'checkbox' && obj.readAttribute('req')==1 && !obj.checked){
                error_text = 'Этот флаг обязательно должен быть включен';
                state = false;
            }
            if (obj.type && obj.type == 'radio' && obj.readAttribute('req')==1){
                error_text = 'Вы должны выбрать хотя бы один пункт';
                state = ($$('input[name="'+obj.name+'"]:checked').size()?state:false);
            }
            if ((obj.readAttribute('req')==1 && value == '') || (obj.readAttribute('min')!==null && parseInt(value) < obj.readAttribute('min')) || (obj.readAttribute('max')!==null && parseInt(value) > obj.readAttribute('max'))){
                error_text = 'Вы не заполнили поле!';
                state = false;
            }
            if (!obj.readAttribute('req') && value == ''){
                state = true;
            }
            break;
        default:
            break;
    }

	if (state){
		obj.parentNode.parentNode.style.borderColor = '#808080';
		obj.parentNode.parentNode.style.textDecoration = 'none';
	} else {
		obj.parentNode.parentNode.style.borderColor = '#800000';
		obj.parentNode.parentNode.style.textDecoration = 'underline';
	}
    return state;
}

/**
* Функция генерации регулярного выражения
* Генерирует в зависимости от настроек
* типа поля
*/
function getPreg(obj){
    var type = obj.readAttribute('valid_type')?obj.readAttribute('valid_type'):false;
    var length = obj.readAttribute('lenght')?obj.readAttribute('lenght'):false;
    var return_value;

    if (type){
        switch (type){
            case 'text':
                if (length){
                    return '^.{0,'+length+'}$';
                } else {
                    return false;
                }
                break;
            case 'number':
                if (length){
                    return '^[0-9]+{0,'+length+'}$';
                } else {
                    return '^[0-9]+$';
                }
                break;
            case 'pagename':
                if (length){
                    return '^[0-9_a-zA-Z]+{0,'+length+'}$';
                } else {
                    return '^[0-9_a-zA-Z]+$';
                }
                break;
            case 'phone':
                if (length){
                    return '^[-0-9)(]+{0,'+length+'}$';
                } else {
                    return '^[-0-9)(]+$';
                }
                break;
            case 'email':
                return '^^([a-zA-Z0-9\-_]+)@([a-zA-Z0-9\-_\.]{2,})\.[a-zA-Z]{2,6}$';
                break;
            case 'regular':
                return obj.readAttribute('regular')?'^'+obj.readAttribute('regular')+'$':false;
                break;
        }
    } else {
        return false;
    }
    return false;
}

/**
* Функция для проверки правильности введенной каптчи
*/
var captcha = false;
function checkCaptcha(obj){
	JsHttpRequest.query(
		'/ajax/check_captcha.php',
		{
			'captcha' : obj.value
		},
		function(result, errors) {
			if (!result.check){
				obj.parentNode.parentNode.style.borderColor = '#800000';
				$('temp1').innerHTML = '0';
			} else {
				obj.parentNode.parentNode.style.borderColor = '#808080';
				$('temp1').innerHTML = '1';
			}
		},
		true
	);
}


function checkRepass(obj){
	if (obj.value == '') return false;
	if (obj.value != $('pass').value || obj.value.toString().length < 6){
		obj.parentNode.parentNode.style.borderColor = '#800000';
		$('pass').parentNode.parentNode.style.borderColor = '#800000';
		return false;
	} else {
		obj.parentNode.parentNode.style.borderColor = '#808080';
		$('pass').parentNode.parentNode.style.borderColor = '#808080';
		return true;
	}
}

function checkLogin(obj){
	if (obj.value == '') return false;
	JsHttpRequest.query(
        '/ajax/check.php',
        {
			'action' : 'login',
            'login': obj.value
        },
        function(result, errors){
			if(!result.check){
				obj.parentNode.parentNode.style.borderColor = '#800000';
				$('temp2').innerHTML = '0';
				$('login_error').style.display = '';
			} else {
				obj.parentNode.parentNode.style.borderColor = '#808080';
				$('temp2').innerHTML = '1';
				$('login_error').style.display = 'none';
			}
        },
        true
    )
}

/**
* Функция инициализации отправки подтверждения о получении премиум-статуса
*/
function sendConfirm(id,obj){
    var loader = $('loader');
    loader.show();
    JsHttpRequest.query(
        'send.php',
        {
            org_id: id
        },
        function(result, debugMessages) {
            loader.hide();
            if (result.state){
                obj.innerHTML = 'Подтверждено';
                obj.style.color = 'green';
            } else {
                obj.innerHTML = 'Ошибка';
                obj.style.color = 'red';
            }
        },
        function(result, debugMessages) {},
        false
    )
}

/**
* Функция для ручного расширения любой
* ссылки на объект до объекта типа
* Element:extended(Prototype)
*/
function prototyper(obj){
    if (!obj.id){
        obj.id = 'new';
        obj = $(obj.id);
        obj.id = null;
    } else {
        obj = $(obj.id);
    }

    return obj;
}


function setSession(param,val){
	JsHttpRequest.query(
		'/ajax/session.php',
		{
			'parametr'	: param,
			'value'		: val
		},
		function(result, debugMessages) {},
		false
	);
}
