/********************
** Required jQuery **
*********************/


/* окно ввода логина и пароля */
function switchLogin() {
    var form = document.getElementById('login-form');
    form.style.display = (form.style.display == 'block') ? 'none' : 'block';
}

function loginSubmit() {
    var login = $('#login-form #login').attr('value');
    var password = $('#login-form #password').attr('value');

    $.getJSON('ajax.php', {'login':login,'password':password},
        function(json) {
            if (json.success == 'true') {
                $('#login-form').parent().html('<div class="profile"><a href="profile.htm">'+login+'</a> (<a href="logout.htm">выйти</a>)</div>');
                history.go(0);
            } else {
                $('#login-form #auth-error').html(json.error);
            }
        }
    );
}

/* календарь замеров в форме оформления заявки на замер */
function getCalendar() {
    $('#calendar').load('ajax.php?calendar=1');
}

/* расчет цены в форме оформления заявки на замер */
function getPrice() {
    var steel = $('#steel').attr('checked') ? 1 : 0;
    var interroom = $('#interroom').attr('value');
    var distance = 0;
    var moscow = $('#moscow').attr('checked') ? 1 : 0;
    
    if (!moscow) {
        distance = $('#distance').val();
    }

    $.getJSON('ajax.php', {'steel':steel,'interroom':interroom,'distance':distance},
        function(json) {
            if (json.success == 'true') {
                $('#price').html(json.price+' руб.');
                $('#error').html('');
            } else {
                $('#price').html('0 руб.');
                $('#error').html('<br/>'+json.error);
            }
        }
    );
}

/* форма профиля пользователя */
function showMsgForElement(elementId, message) {
    if (document.getElementById('error_'+elementId)) return;
    var elm = document.getElementById(elementId);
    var msg = document.createElement('div');

    msg.className = "error";
    msg.id = "error_"+elementId;
    msg.style.left = getPosition(elm).x+'px';
    msg.style.top = getPosition(elm).y+'px';
    msg.style.display = 'block';
    msg.innerHTML = message;

    elm.parentNode.appendChild(msg);
}

function hideMsgForElement(elementId) {
    var elm = document.getElementById("error_"+elementId);
    if (elm) { elm.parentNode.removeChild(elm); }
}

function Validate(oForm){
    var result = true;

    var reIsNumber = /^[0-9]*$/;
    var reIsNotEmpty = /\S+/;
    var reIsEmail = /^([^@]+@.+\.[^.]+)$/;
    var isMoscow = $('#moscow').attr("checked") ? 1 : 0;
    var submit = $(oForm).find("input[type='submit']");

    $(oForm).find("input[type='text']").each( function(){
        var oElem = $(this);
        var sName = oElem.attr("name");
        var sValue = oElem.val();
        var sId = oElem.attr('id');
        var oLabel = oForm.find("label[for='"+sId+"']");

        var _result = true;
/*
        if (sName == 'profile[login]') {
            _result = reIsNotEmpty.test(sValue);
            if (_result) {
                $.getJSON('ajax.php', {'vlogin':sValue},
                    function(json) {
                        hideMsgForElement('flogin');
                        if (json.success == 'false') {
                            showMsgForElement('flogin', json.error);
                        }
                    }
                );
            }
        }
*/
        if (sId == 'when') _result = reIsNotEmpty.test(sValue);
        if (sName == 'request[interroom]') _result = ( reIsNotEmpty.test(sValue) && reIsNumber(sValue) && sValue<7 );
        if (sName == 'request[last_name]') _result = reIsNotEmpty.test(sValue);
        if (sName == 'request[first_name]') _result = reIsNotEmpty.test(sValue);
        if (sName == 'request[phone]') _result = reIsNotEmpty.test(sValue);
        if (sName == 'request[email]') {
            _result = reIsEmail.test(sValue);
            if (_result) {
                $.getJSON('ajax.php', {'vemail':sValue},
                    function(json) {
                        hideMsgForElement('email');
                        if (json.success == 'false') {
                            showMsgForElement('email', json.error);
                        }
                    }
                );
            }
        }
        if (sName == 'request[street]') _result = reIsNotEmpty.test(sValue);
        if (sName == 'request[house]') _result = reIsNotEmpty.test(sValue);

        if (isMoscow && sName == 'request[subway]') _result = reIsNotEmpty.test(sValue);
        if (!isMoscow && sName == 'request[city]') _result = reIsNotEmpty.test(sValue);

        if (!_result) oLabel.addClass('invalid');
        else oLabel.removeClass('invalid');

        result = result && _result;
    });

    if (result) {
        submit.attr('disabled', false)
        submit.removeClass('disabled');
    } else {
        submit.attr('disabled', true)
        submit.addClass('disabled');
    }

    return result;
}
