var Sibnet = {
    Utils: {
        getBrowserName: function() {
            var ua = navigator.userAgent.toLowerCase();
            var match = ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/);
            return match[1] || 'unknown';
        },
        
        isChildOf: function(child, parent) {
            if (child == null) {
                return false;
            }
            
            var tmp = child.parentNode;            
            while (tmp != undefined) {
                if (tmp == document.body) {
                    break;
                }
                
                if (tmp == parent) {
                    return true;
                }
                
                tmp = tmp.parentNode;
            }
            
            return false;
        },
        
        decodeEmail: function(email) {
            return email.split('').reverse().join('');
        },
        
        printEmail: function(email, className) {
            email = this.decodeEmail(email);
            document.write('<a href="mailto:' + email + '" class="' + className + '">' + email + '</a>');
        },
        
        popup: function(url, w, h) {
            w += 18; 
            h += 26;
            var t = new Date().getTime();
            var popupWindow = window.open(url, t, "width=" + w + ",height=" + h + ",location=yes,status=yes,menubar=yes,toolbar=no,resizable=yes");
            return (popupWindow !== null) ? false : true;
        }
    },
    
    Sitemap: {
        setHomePage: function(element) {
            switch (Sibnet.Utils.getBrowserName()) {
            case 'ie':
                element.style.behavior = 'url(#default#homepage)';
                element.setHomePage(element.href);
                return false;
                break;
                
            default:
                alert('Перетащите эту ссылку на иконку «Дом» в панели инструментов браузера, затем нажмите «Да» во всплывающем окне.');
                return false;
                break;
            }
        },
    
        addToBookmarks: function(element) {
            var title = element.title;
            var url   = element.href;
            var browserName = Sibnet.Utils.getBrowserName();
            
            if (browserName == 'firefox') {
                window.sidebar.addPanel(title, url, '');
                return false;
                
            } else if (browserName == 'ie') {
                window.external.AddFavorite(url, title);
                return false;
                
            } else if (browserName == 'opera') {
                return true;
                
            } else {
                alert('Нажмите Ctrl-D чтобы добавить страницу в закладки.');
                return false;
            } 
        },
        
        toggleBlock: function(element) {
            var container = document.getElementById('b-sibnet-head__sitemap__service-column-wrapper');
            var elements = container.getElementsByTagName('a');
            
            for (var i = 0; i < elements.length; i++) {
                if (elements[i] == element) {
                    element.className = 'b-sibnet-head__sitemap__service-link b-sibnet-head__sitemap__service-link_hl';
                    document.getElementById('b-sibnet-head__sitemap__service-content_' + element.getAttribute('data-id')).style.display = 'block';
                } else if (elements[i].className.indexOf('b-sibnet-head__sitemap__service-link_hl') != -1) {
                    elements[i].className = 'b-sibnet-head__sitemap__service-link';
                    document.getElementById('b-sibnet-head__sitemap__service-content_' + elements[i].getAttribute('data-id')).style.display = 'none';
                }
            }
        }
    },
    
    Region: {
        toggleList: function(element) {
            element.blur();

            var select = document.getElementById('b-sibnet-head__region__select-wrapper');
            var text = element.getElementsByTagName('span')[0];

            if (select.style.display == 'none') {
                select.style.display = 'block';
                text.className += ' b-sibnet-head__region__text_hl';
                element.className += ' b-sibnet-head__region__select-link_hl';
            } else {
                select.style.display = 'none';
                text.className = text.className.replace(' b-sibnet-head__region__text_hl', '');
                element.className = 'b-sibnet-head__region__select-link';
            }
        }
    },
    
    Menu: {
        
        init: function() {
            var container = document.getElementById('b-sibnet-head');
            var elements = container.getElementsByTagName('div');
            var enterDelay = 250;
            var leaveDelay = 500;
            
            for (var i = 0; i < elements.length; i++) {
                if (elements[i].className.indexOf('b-sibnet-head__item') != -1) {
                    var wrapper = elements[i].getElementsByTagName('div')[0];
                    (function(wrapper) {
                        var timerEnter, timerLeave;
                        
                        var itemEnter = function(e) {
                            if (false == (e != undefined && Sibnet.Utils.isChildOf(e.relatedTarget, this))) {
                                var self = this;
                                clearTimeout(timerLeave);
                                timerEnter = setTimeout(function() {
                                    self.className = 'b-sibnet-head__item b-sibnet-head__item_hl';
                                    wrapper.style.display = 'block';
                                }, enterDelay);
                            }
                        }
                        
                        var itemLeave = function(e) {
                            if (false == (e != undefined && Sibnet.Utils.isChildOf(e.relatedTarget, this))) {
                                var self = this;
                                clearTimeout(timerEnter);
                                timerLeave = setTimeout(function() {
                                    self.className = 'b-sibnet-head__item';
                                    wrapper.style.display = 'none';
                                }, leaveDelay);
                            }
                        }
                        
                        if (elements[i].addEventListener) {
                            elements[i].addEventListener('mouseover', itemEnter, false);
                            elements[i].addEventListener('mouseout', itemLeave, false);
                        } else {
                            elements[i].onmouseenter = itemEnter;
                            elements[i].onmouseleave = itemLeave;
                        }

                    })(wrapper);
                }
                
            }
        }
    }
};

