if(!console)
        var console = {
                log: function(){
        
                }
        }

function toggleNavigation (evt)
{
        if (Environment && Environment.navMenu && Environment.navMenu.getExpandedMenu()) 
        {
                Environment.navMenu.collapse(Environment.navMenu.getExpandedMenu());
                Environment.navMenu.lastClickedItem = false;
        }
        var iframemap = document.getElementById('schema_iframe');
        if (iframemap && !Common.Class.match(iframemap, 'non-visible'))
        {
                createMapIframe();
        }
        return switchMenu(evt);
}
        
/**
 * @author Sergey Chikuyonok (gonarch@design.ru)
 * @copyright Art.Lebedev Studio (http://www.artlebedev.ru)
*/

function menu(oc, fFunction)
{
        if(oc)
        {
                for(var i = 0; i < oc.length; i++)
                {
                        fFunction(oc[i]);
                }
        }
}

var elemLastMenu=null;

/**
 * Прячем флешплеер, когда появляется региональное меню
 */
function SetFlashPlayer(enable){
        var player = _$('video_player');
        if(player){
                player.style.visibility = (enable ? 'visible' : 'hidden');
        }
}

var IE = document.all?true:false;
var defaul_menu_height=(navigator.userAgent.search(/MSIE\s+(5|6)\./) != -1) ? '1px' : 'auto';

function switchMenu(evt){
	
	/* 
	Нужно для того, что-б скрывались схемы проезда на страницах банкоматов 
	selected_iframe, selected_span, selected_breakline -- глобальные переменные, определены в /js/eatlas/atms-eatlas.js
	*/
	
	if ( typeof(selected_iframe) != 'undefined' ) { 
		if ( selected_iframe ) Common.Class.add(selected_iframe, 'non-visible'); 
	}
	
	if ( typeof(selected_span) != 'undefined' ) { 
		if ( selected_span ) Common.Class.remove(selected_span, 'spantab'); 
	}
	
	if ( typeof(selected_breakline) != 'undefined' ) { 
		if ( selected_breakline ) Common.Class.add(selected_breakline, 'non-visible'); 
	}
    
    
	
	Common.Class.remove(_$('Content'), 'content-inc-zindex');
	Common.Class.remove(_$('layout-right'), 'layout-right-dec-zindex');
	
        if((evt=Common.Event.check(evt))){

                var elem=evt.target;
                do{
                        if(elem.nodeType == 1 && Common.Class.match(elem, 'menu'))
                                break;
                }while(elem=elem.parentNode);

                if(elem){

                        if(elemLastMenu && elemLastMenu != elem)
                                hideMenu(elemLastMenu);

                        if(Common.Class.match(elem, 'menu-expanded'))
                        {
                                /* IE bug */
                                if(IE) menu(document.getElementsByTagName('select'), function(select){ select.style.display = 'block'; });
                                hideMenu(elem);
                                SetFlashPlayer(true);
                        }
                        else
                        {
                                if(IE) menu(document.getElementsByTagName('select'), function(select){ select.style.display = 'none'; });
                                SetFlashPlayer(false);
                                showMenu(elem);
                        }

                        elemLastMenu=elem;
                }
                Common.Event.cancel(evt);
        }
}

function showSelectTag(){
        if(IE) menu(document.getElementsByTagName('select'), function(select){ if(!Common.Class.match(select, 'combo-list')) select.style.visibility = 'visible'; });
}

function showMenu(elem){
        elem.style.height=elem.offsetHeight+'px';
        Common.Class.add(elem, 'menu-expanded');
}

function hideMenu(elem){
        Common.Class.remove(elem, 'menu-expanded');
        elem.style.height=defaul_menu_height;
}

function hideLastMenu(){
        if(elemLastMenu){
                hideMenu(elemLastMenu);
                elemLastMenu=null;
        }
        showSelectTag();
}

function attachMenuEvents(){
        var divs=document.getElementsByTagName('div');
        var il=divs.length;
        for(var i=0; i<il; i++){
                if(Common.Class.match(divs[i], 'arrow')){
                        Common.Event.add(divs[i], 'click', switchMenu);
                }
        }

        var cities=document.getElementById('CityList');
        
        if(!cities) return; // Прервем если нет городов
        
        var items=cities.getElementsByTagName('span');
        il=items.length;
        for(var i=0; i<il; i++){
                Common.Event.add(items[i], 'click', vtb24.expandRegion);
        }

        var regions=document.getElementById('Regions');
        var fn_close = function(evt) {
            if ((evt = Common.Event.normalize(evt))) {
                var elem = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
                if (elem.nodeName == 'A' || (elem.parentNode && elem.parentNode.nodeName == 'A') || (elem.parentNode.parentNode && elem.parentNode.parentNode.nodeName == 'A')) {
                    //clicked on city. find city id and follow the href
                    var list_item = elem.parentNode;
                    do {
                        if (list_item.nodeName == 'LI') {
                            var expire = new Date();
                            expire.setFullYear(expire.getFullYear() + 1);
                            Common.Cookie.set('town', list_item.id, expire, '/');
                            return true;
                            break;
                        }
                    } while ((list_item = list_item.parentNode));
                }
                else {
                    return Common.Event.cancel(evt);
                }
            }
        }
        if(regions)
                Common.Event.add(regions, 'click', fn_close);
}

function attachFootnoteEvents(){
        var items=document.getElementsByTagName('span');
        var il=items.length;
        for(var i=0; i<il; i++){
                if(Common.Class.match(items[i], 'pseudo-href') && Common.Class.match(items[i], 'for-footnote')){
                        Common.Event.add(items[i], 'click', switchFootnote);
                }
        }
}

function pageLoaded(){
        attachMenuEvents();
        attachFootnoteEvents();
        Common.Event.add(document, 'click', function(){
                SetFlashPlayer(true);
                hideLastMenu(); // покажем флеш плеер
        });
}

function switchFootnote(evt){
        if((evt=Common.Event.check(evt)) && evt.target.id){
                var id='ftn_'+evt.target.id;
                var footnote=document.getElementById(id);
                if(footnote){
                        if(Common.Class.match(footnote, 'hidden'))
                                Common.Class.remove(footnote, 'hidden');
                        else
                                Common.Class.add(footnote, 'hidden');
                }
        }
}

var vtb24={
        /**
         * Parse params from element's className
         * @param {Element} elem Element to read params
         * @param {Object} params Parameters object pointer
         */
        readParams: function(elem, params){
                var paramSrc=elem.className;
                var re=/\bp-(\w+)-([\-\w\.]+)/g;
                var reNum=/^-?\d+(\.\d+)?$/;
                var _m, name, val;

                while((_m=re.exec(paramSrc))){
                        name=_m[1];
                        val=_m[2];
                        if(reNum.test(val))
                                val=parseFloat(val);

                        params[name]=val;
                }

                if(elem.value)
                        params['value']=elem.value;

                return params;
        },

        /**
         * Expands region branch
         * @param {Event} evt
         */
        expandRegion: function(evt){
                if((evt=Common.Event.check(evt))){
                        var elem=evt.target;
                        do{
                                if(elem.nodeType == 1 && elem.nodeName == 'LI')
                                break;
                        }while(elem=elem.parentNode);

                        if(elem && !Common.Class.match(elem, 'selected')){
                                //find selected sibling and remove selection
                                var parent=elem.parentNode;
                                var ch=parent.childNodes;
                                var il=ch.length;
                                for(var i=0; i<il; i++){
                                        if(ch[i].nodeType == 1 && Common.Class.match(ch[i], 'selected')){
                                                Common.Class.remove(ch[i], 'selected');
                                                var subitems=ch[i].getElementsByTagName('ul');
                                                if(subitems.length > 1){
                                                        //this is not a container of cities, remove descendant selection too
                                                        subitems=subitems[0].childNodes;
                                                        var jl=subitems.length;
                                                        for(var j=0; j<jl; j++){
                                                                if(subitems[j].nodeType == 1 && Common.Class.match(subitems[j], 'selected')){
                                                                        Common.Class.remove(subitems[j], 'selected');
                                                                        break;
                                                                }
                                                        }
                                                }
                                                break;
                                        }
                                }

                                Common.Class.add(elem, 'selected');
                        }
                        return Common.Event.cancel(evt);
                }
        }
}

/**
 * Переключалка табов. Достает все 'ul' элементы с классом 'tab-switcher' и вешает на них события.
 * У 'li' элементов должен быть класс for-(some-element-id), где (some-element-id) — ID элемента, который нужно показать (у него убирается класс hidden)
 */
vtb24.tabs={
        /**
         * Инициализация всех переключалок
         */
        init: function(){
                var items=document.getElementsByTagName('ul');
                var il=items.length;
                for(var i=0; i<il; i++){
                        if(Common.Class.match(items[i], 'tab-switcher')){
                                this.initList(items[i]);
                        }
                }
        },

        /**
         * Инициализация конкретной переключалки. Вешает нужные события и скрывает ненужные блоки данных,
         * к которым привязаны элементы переключалки.
         * @param {Element} list_elem Указатель на список
         */
        initList: function(list_elem){
                var items=list_elem.getElementsByTagName('li');
                var il=items.length;
                var _show=[], _hide=[], _id;

                var f=function(evt){vtb24.tabs.dispatchEvent(evt);};
                for(var i=0; i<il; i++){
                        if((_id=this._getBlockID(items[i].className))){
                                Common.Event.add(items[i], 'click', f);
                                if(this._isSelected(items[i]))
                                        _show.push(_id);
                                else
                                        _hide.push(_id);
                        }
                }

                for(var i=0; i<_show.length; i++)
                        this.showTab(_show[i]);

                for(var i=0; i<_hide.length; i++)
                        this.hideTab(_hide[i]);
        },

        /**
         * Показывает элемент, в котором находится контент нужного таба
         * @param {String} id ID элемента
         */
        showTab: function(id){
                if(id){
                        var elem=document.getElementById(id);
                        if(elem)
                                Common.Class.remove(elem, 'hidden');
                }
        },

        /**
         * Скрывает элемент, в котором находится контент нужного таба
         * @param {String} id ID элемента
         */
        hideTab: function(id){
                if(id){
                        var elem=document.getElementById(id);
                        if(elem)
                                Common.Class.add(elem, 'hidden');
                }
        },

        /**
         * Диспетчер входящих событий
         * @param {Event} evt
         */
        dispatchEvent: function(evt){
                if((evt=Common.Event.normalize(evt))){
                        switch(evt.type){
                                case 'click':
                                        this.switchTabItem(evt.target);
                                        Common.Event.cancel(evt);
                                        break;
                        }
                }
        },

        /**
         * @param {Element} current_item
         */
        switchTabItem: function(current_item){
                if(current_item){
                        do{
                                if(current_item.nodeName == 'LI')
                                        break;
                        }while((current_item=current_item.parentNode));

                        if(current_item){
                                //find last selected item
                                var items=current_item.parentNode.getElementsByTagName('li'), last_selected;
                                var il=items.length;
                                for(var i=0; i<il; i++){
                                        if(this._isSelected(items[i])){
                                                last_selected=items[i];
                                                break;
                                        }
                                }
                                if(last_selected && last_selected != current_item){
                                        Common.Class.remove(last_selected, 'selected');
                                        this.hideTab(this._getBlockID(last_selected.className));
                                }

                                Common.Class.add(current_item, 'selected');
                                this.showTab(this._getBlockID(current_item.className));
                        }
                }
        },

        /**
         * @param {Element} elem
         * @return {Boolean}
         */
        _isSelected: function(elem){
                return Common.Class.match(elem, 'selected');
        },

        /**
         * Достает из строки id требуемого элемента
         * @param {String} str Строка, содержащая id
         * @return {String}
         */
        _getBlockID: function(str){
                var m;
                if((m=str.match(/\bfor-([\w\-]+)/)))
                        return m[1];
                else
                        return null;
        }
};


var cmd = {
        Class:
        {
                /**
               * Переключает класс
               */
                toggle: function(oElement, sClass)
                {
                        Common.Class.match(oElement, sClass) ? Common.Class.remove(oElement, sClass) : Common.Class.add(oElement, sClass);
                }
        }
}

/**
* Сокращение для консоли.
*/
function C(mixed){
        if(!IE)
                console.log(mixed);
        else
                document.title = mixed;

}


function ifme(){
        var ips = ['1.1.1.1']; // сюда можно дописать свой адрес
        var me = false;
        menu(ips, function(ip){
                if(Environment['remote_addr'] == ip) me = true;
        })
        return me;
}

/**
 * Returns Array with elements matching class
 * @param {NodeCollection} nodeCollection
 * @param {String} nameClass
 * @return {Array}
 */
function getElementsByClassName(nodeCollection, nameClass){
        var newNodeCollection = [];
        menu(nodeCollection, function(node){
                if(Common.Class.match(node, nameClass)) newNodeCollection.push(node);
        });
        return newNodeCollection;
}

/**
 * В безымянную функцию fnc передать node, сделать проверку ее свойств,
 * и вернуть true или false, в зависимости подходит - неподходит. 
 * @param {NodeCollection} nodeCollection
 * @param {Function} fnc
 */
function getElementsByFilter(nodeCollection, fnc){
        var newNodeCollection = [];
        menu(nodeCollection, function(node){
                if(fnc(node)) newNodeCollection.push(node);
        });
        return newNodeCollection;       
}

/**
 * Shows or hides 'cut' tag body
 * @param {Element} 'Cut' tag teaser
 */
 
 var currElementBody = null;
 
function cutClick( currElement ) {
	currElementBody = currElement.nextSibling;
	if(currElementBody.style.display == "none"){
		//								 elemTarget, sStyleProperty, oEaseType, iStartValue, iEndValue, iDuration
		var opacity = new Tween(currElementBody, 'opacity', Math.linearTween, 0, 1, 15, '')
		jQuery(currElementBody).slideDown("normal");
	} else {
		var opacity = new Tween(currElementBody, 'opacity', Math.linearTween, 1, 0, 15, '')
		jQuery(currElementBody).slideUp("normal", function(){
			currElementBody.style.display = "none";
			//currElementBody.style.height = offHeight+"px";
		});
	} 
	
}


