function clearField(elem)
{
    if (elem.value == elem.defaultValue) {
        elem.value = '';
    }
}

function blurField(elem)
{
    if (elem.value == '') {
        elem.value = elem.defaultValue;
    }
}

function httpRequest(url, oncomplete, post)
{
    post = post || null;
    req = null;

    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }

    if (post) {
        var method = 'POST';
    } else {
        var method = 'GET';
    }

    if (req)
    {
        req.open(method, url, true);
        var headers = {
            'X-Requested-With' : 'XMLHttpRequest',
            'Content-type' : 'application/x-www-form-urlencoded',
            'Connection' : 'close',
            'If-Modified-Since' : new Date(0)
        }

        for (var key in headers) {
            req.setRequestHeader(key, headers[key]);
        }

        req.onreadystatechange = function() {
            if (req.readyState == 4 && req.status == 200) {
                oncomplete(req.responseText);
            }
        }
        req.send(post);
    }
}

function showRequest() {
    var vinNode = document.getElementById('vinNumber');
    var gosNode = document.getElementById('gosNumber');
    var winNode = document.getElementById('window');
    var gosUaRe = /([а-я]{2}[\s]*[0-9]{4}[\s]*[а-я]{2}|[0-9]{2}[\s]*[0-9]{3}[\s]*[\-]{0,1}[\s]*[0-9]{2}[\s]*[а-я]{2}|[а-я]{1}[\s]*[0-9]{4}[\s]*[а-я]{2})/i;
    var gosRuRe = /[а-я]{1}[0-9]{3}[а-я]{2}[\s]*[0-9]{0,3}/i;
    var vinRe = /[a-z0-9]{17}/i;
    var success = true;

    if (
        vinNode.value != "" && vinNode.value != vinNode.defaultValue ||
        gosNode.value != "" && gosNode.value != gosNode.defaultValue
    ) {
        if (vinNode.value != "" && vinNode.value != vinNode.defaultValue && !vinRe.test(vinNode.value)) {
            setTimeout(function() {
                alert('Информация об автомобиле с VIN номером "'+ vinNode.value +'" отсуствует в базе данных\nПроверте правильно ли вы ввели номер и повторите попытку');
            }, 1000);
            success = false;
        }

        if (
            gosNode.value != "" &&
            gosNode.value != gosNode.defaultValue &&
            (currentCountry == 'ru' && !gosRuRe.test(gosNode.value)) ||
            (currentCountry == 'ua' && !gosUaRe.test(gosNode.value))
        ) {
            setTimeout(function() {
                alert('Информация о владельце автомобиля с гос. номером "'+ gosNode.value +'" отсуствует в базе данных\nПроверте правильно ли вы ввели номер и повторите попытку');
            }, 1000);
            success = false;
        }

        if (success) {
            httpRequest('/ajax/step1.php', function(html) {
                winNode.innerHTML = html;
                winNode.style.display = 'block';
                var resultNodes = [
                    document.getElementById('result1'),
                    document.getElementById('result2'),
                    document.getElementById('result3'),
                    document.getElementById('result4')
                ];

                var count = 0;

                for (var i = 0; i < 4; i++) {
                    setTimeout(function(key) {
                        return function() {
                            count++;
                            resultNodes[key].innerHTML = 'Информация получена!';
                            if (count == resultNodes.length) {
                                var disablerNode = document.getElementById('disabler');
                                disablerNode.parentNode.removeChild(disablerNode);
                            }
                        }
                    }(i) ,Math.random() * 7000);
                }
            });
        }
    } else {
        alert('Введите номер');
    }
}

function enterCode() {
    var code = parseInt(document.getElementById('codeInput').value);
    httpRequest('/ajax/step2.php?code=' + code, function(html) {
        if (html == 'denied') {
            alert('Неверный код');
        } else {
            document.getElementById('window').innerHTML = html;
        }
    });
}

function emailConfirm() {
    var emailRe = /[a-z0-9\._-]@[a-z0-9\.\-]+\.[a-z0-9\-]{2,5}/i;
    var email = document.getElementById('email').value;
    if (emailRe.test(email)) {
        httpRequest('/ajax/step3.php?email=' + email, function(html) {
            document.getElementById('window').innerHTML = html;
        });
    } else {
        alert('Неверный формат email');
    }
}

function messageForm() {
    httpRequest('/ajax/help.php', function(html) {
        var winNode = document.getElementById('window');
        winNode.innerHTML = html;
        winNode.style.display = 'block';
    });
}

function sendMessage() {
    var post = {
        name: document.getElementById('messageName').value,
        mail: document.getElementById('messageMail').value,
        message: document.getElementById('messageText').value
    }

    var emailRe = /[a-z0-9\._-]@[a-z0-9\.\-]+\.[a-z0-9\-]{2,5}/i;

    if (!post.name || !post.mail || !post.message) {
        alert('Все поля обязательны для заполнения');
    } else if (!emailRe.test(post.mail)) {
        alert('Неверный формат E-mail');
    } else {
        httpRequest('/ajax/help.php', function(html) {
            document.getElementById('window').innerHTML = html;
        }, 'name=' + post.name + '&mail=' + post.mail + '&message=' + post.message);
    }
}

function changeCountry(el) {
    var uaNode = document.getElementById('uaFlag');
    var ruNode = document.getElementById('ruFlag');
    var loaderNode = document.getElementById('countryChangeLoader');

    if (el.id == 'uaFlag') {
        uaNode.className = 'flag current';
        ruNode.className = 'flag';
        currentCountry = 'ua';
    } else {
        uaNode.className = 'flag';
        ruNode.className = 'flag current';
        currentCountry = 'ru';
    }

    loaderNode.style.display = 'block';
    httpRequest('/ajax/set_country.php?c=' + currentCountry, function() {
        setTimeout(function() {
        loaderNode.style.display = 'none'}, 100);
    });
}

function closeWin() {
    var winNode = document.getElementById('window');
    winNode.style.display = 'none';
    winNode.innerHTML = '';
}