 function roll_block(){
 	this.toggle = function(){
	 	link = $('.map_link');
	 	linkBlock = $('.map_link_layout');
	 	sitemap = $('.sitemap');
		if(sitemap.hasClass('sm_closed') && linkBlock.hasClass('mll_closed') && link.hasClass('ml_closed')){
	 		sitemap.removeClass('sm_closed');
	 		linkBlock.removeClass('mll_closed');
	 		link.removeClass('ml_closed');
	 	}
	 	else{
	 		sitemap.addClass('sm_closed');
	 		linkBlock.addClass('mll_closed');
	 		link.addClass('ml_closed');
	 	}
	 	this.toggleHHideLayout()
	 	return false;
 	}
 	this.toggleHHideLayout = function(){
		selfMM = this;
		smlay = $('div#sitemap_hide_layout');
		if(smlay.hasClass('hide_layout')){
			smlay.removeClass('hide_layout');
			smlay.css('display','none');
			smlay.unbind('click');
		}else{
			smlay.addClass('hide_layout');
			smlay.css('display','block');         
			smlay.css('height',$(document).height());
			smlay.click(function(){
				selfMM.toggle();
			});
		}	
	}
	this.toggle();
 }
 
 function inputHintAdd(text,input){
 	if($(input).val() == ''){
 		$(input).val(text);
 		$(input).addClass('input_hint')
 	}
 }
 function inputHintRemove(text,input){
 	if($(input).val() == text){
 		$(input).val('');
 		$(input).removeClass('input_hint');
 	}
 }
 
$(document).ready(function() {
   topMenu = new topMenuProto('.top_menu');
 });

 function topMenuProto(container_selector){
    this.init = function(container_selector){
        this.container = $(container_selector);

        this.header = this.container.find('div#header');
        this.content = this.container.find('.top_m');

        this.contentHiddenCssClassName = 'tm_closed';

        this.listItems = this.header.find('li:not(.direct)');
        this.listAnchors = this.listItems.find('a');

        this.showHandler = 0; //Хандлер показа меню.

        var selfMenu = this;

        this.currentListItem = false;
		this.currentMenuBlock = false;
        this.appendHandlers();
     }

    this.appendHandlers = function(){
     	 selfM = this;
         this.listItems.find('a').each(function(){
            $(this).click(function(){
            	selfM.currentListItem = $(this).parents('li').get(0);
                selfM.toggleMenu();
                return false;
            })
         });
     }
	this.toggleHideLayout = function(){
		selfM = this;
		lay = $('div#menu_hide_layout');
		if(lay.hasClass('hide_layout')){
			lay.removeClass('hide_layout');
			lay.css('display','none');
			lay.unbind('click');
		}else{
			lay.addClass('hide_layout');
			lay.css('display','block');         
			lay.css('height',$(document).height());
			lay.click(function(){
				selfM.toggleMenu();
			});
		}
	}
    this.toggleMenu = function(){
         if(this.showHandler == 0){
             this.activateMenu();             
             this.showHandler = 1;
         }else{
             this.deactivateMenu();
             this.showHandler = 0;
         }
         this.toggleHideLayout();
     }
    this.deactivateMenu = function(){
    	this.hideHiddenBlock();
    	this.deactivateHighlight();
     }
	
	this.hideHiddenBlock = function(){
		this.content.addClass(this.contentHiddenCssClassName);
	}
	this.deactivateHighlight = function(){
		this.listItems.removeClass('current');
		this.listItems.unbind('mouseenter mouseleave');

	}
    this.activateMenu = function(){
         this.showHiddenBlock();
         this.activateHighlight();
     }

    this.showHiddenBlock = function (){
         this.content.removeClass(this.contentHiddenCssClassName);
     }

    this.activateHighlight = function(){
     	selfM = this;
     	this.highlight();
		this.menuChange();
		
        this.listItems.hover(function(){
			selfM.currentListItem = this;
			selfM.highlight();
			selfM.menuChange();
            },function(){return false});
 	}
	
	this.highlight = function(){
		if($(this.currentListItem).hasClass('current')){
			return false;
		}
		this.listItems.removeClass('current');
		$(this.currentListItem).addClass('current');
	}
	
	this.menuChange = function(){
		currLi = this.currentListItem;
		blockHrefStr = $(currLi).find('a').attr('href')+'';
		
		blockHref = blockHrefStr.replace(/#(.+)/,"$1");
		
		menuBlock = this.content.find('div#'+blockHref+'');
		if(menuBlock.hasClass('tm_block_show')){
			return false;
		}
		if(this.currentMenuBlock){
			this.currentMenuBlock.css('display','none');
		}	
		menuBlock.css('display','block');
		
		this.currentMenuBlock = menuBlock;
		
	}
	
    this.init(container_selector);
 }
