var Order = function() {
    this.fullpath = '/order/';
    
    this.submit = function(form) {
        this.resetErrors(form);
        
        this.checkForm(form);
        return false;
    }
    
    this.checkForm = function(form) {
        var param = new Object();
        var isOk = true;
        
        /**
         * Проверим день игры
         */
        var div = form.date_day.parentNode;
        var date_day = form.date_day.value;
        param['date_day'] = date_day;
        if (date_day.match(/[^0-9]+/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if ((date_day < 1) || (date_day > 31)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим месяц игры
         */
        var date_month = form.date_month.value;
        param['date_month'] = date_month;
        if (date_month.match(/[^0-9]+/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if ((date_month < 1) || (date_month > 12)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим год игры
         */
        var today = new Date();
        var year = today.getFullYear();
        var date_year = form.date_year.value;
        param['date_year'] = date_year;
        if (date_year.match(/[^0-9]+/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if ((date_year < year) || (date_year > (year + 5))) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим час игры
         */
        var div = form.date_hour.parentNode;
        var date_hour = form.date_hour.value;
        param['date_hour'] = date_hour;
        if (!date_hour.match(/^[0-9]+$/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if ((date_hour < 0) || (date_hour > 23)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим минуты игры
         */
        var div = form.date_min.parentNode;
        var date_min = form.date_min.value;
        param['date_min'] = date_min;
        if (!date_min.match(/^[0-9]+$/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if ((date_min < 0) || (date_min > 59)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим имя
         */
        var div = form.fio.parentNode;
        var fio = form.fio.value;
        param['fio'] = fio;
        if (fio == '') {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим телефон
         */
        var div = form.tel.parentNode;
        var tel = form.tel.value;
        param['tel'] = tel;
        if (tel == '') {
            isOk = false;
            Utils.addClassName(div, 'error');
        } else if (!tel.match(/[0-9]+/)) {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        /**
         * Проверим капчу
         */
        var div = form.code.parentNode;
        var code = form.code.value;
        param['code'] = code;
        if (code == '') {
            isOk = false;
            Utils.addClassName(div, 'error');
        }
        
        if (isOk) {
            param['email'] = form.email.value;
            param['corporate'] = (form.corporate.checked) ? 1 : 0;
            
            this.showBlank();
            JsHttpRequest.query(
                this.fullpath+'?action=ajaxSend&cache='+Utils.getCacheValue(),
                param,
                function(result, error) {
                    if (error) alert(error);
                    
                    if (result.send == true) {
                        Order.showSuccess();
                    } else {
                        Order.showErrors(result.error);
                    }
                }
            );
        }
        
        return false;
    }
    
    this.resetErrors = function(form) {
        var div = form.date_day.parentNode;
        Utils.removeClassName(div, 'error');
        
        div = form.date_min.parentNode;
        Utils.removeClassName(div, 'error');
        
        div = form.fio.parentNode;
        Utils.removeClassName(div, 'error');
        
        div = form.tel.parentNode;
        Utils.removeClassName(div, 'error');
        
        div = form.code.parentNode;
        Utils.removeClassName(div, 'error');
    }
    
    this.showBlank = function() {
        var blank = document.getElementById('order_blank');
        blank.style.width  = blank.parentNode.offsetWidth  + 'px';
        blank.style.height = blank.parentNode.offsetHeight + 'px';
        blank.style.display = 'block';
    }
    
    this.hideBlank = function() {
        var blank = document.getElementById('order_blank');
        blank.style.display = 'none';
        
        var error = document.getElementById('order_error');
        error.style.display = 'none';
    }
    
    this.showSuccess = function() {
        this.showBlank();
        var info = document.getElementById('order_info');
        info.style.width  = info.parentNode.offsetWidth  + 'px';
        info.style.height = info.parentNode.offsetHeight + 'px';
        info.style.display = 'block';
    }
    
    this.showErrors = function(errors) {
        this.showBlank();
        this.resetCaptcha();
        var error = document.getElementById('order_error');
        error.style.width  = error.parentNode.offsetWidth  + 'px';
        error.style.height = error.parentNode.offsetHeight + 'px';
        
        var span = error.childNodes[0];
        Utils.delChildNodes( span );
        var first = true;
        for (var i in errors) {
            var node = document.createTextNode(errors[i]);
            if (!first) {
                span.appendChild(document.createElement('BR'));
            }
            span.appendChild(node);
            first = false;
        }
        
        error.style.display = 'block';
    }
    
    this.resetCaptcha = function() {
        document.getElementById('captcha_img').src = '/captcha/?'+Utils.getCacheValue();
    }
    
    return this;
}();
addLoadEvent(
    function() {
        var all_input = document.getElementsByTagName( 'input' );
        var text = '';
        for(var i in all_input) {
            if (typeof(all_input[i].title)=='string' && (all_input[i].title)) {
                all_input[i].alt = all_input[i].title;
                all_input[i].title = '';
                all_input[i].onmousemove = function() {
                    $('PopupTip').className  = 'show';
                    $('PopupTip').innerHTML  = this.alt;
                    var doc_width = parseInt( document.documentElement.clientWidth );
                    var tip_width = parseInt( $('PopupTip').clientWidth );
                    $('PopupTip').style.top  = mouseY + 10 + 'px';
                    if ((mouseX + tip_width + 20) > doc_width) {
                        $('PopupTip').style.left = doc_width - tip_width - 20 + 'px';
                    } else {
                        $('PopupTip').style.left = mouseX + 10 + 'px';
                    }
                }
                all_input[i].onmouseout  = function() {
                    $('PopupTip').innerHtml = '';
                    $('PopupTip').className = 'hide';
                }
            }
        }
    }
);