var land_map_controller;


function landMapController()
{
    var _this= this;

    this.selected_land= false;

    this.highlightLand= function( land_name )
    {
        document.getElementById( 'region'+land_name ).style.display= "block";
        
        document.getElementById( 'regionMenu'+land_name ).className= "mapLinkHover";  
        
        document.getElementById( 'regionDesc0' ).style.display= "none";
        document.getElementById( 'regionDesc'+land_name ).style.display= "block";      
    }

    
    this.fadeLand= function( land_name )
    {
        if( land_name == this.selected_land )
            return;

        document.getElementById( 'region'+land_name ).style.display= "none";

        document.getElementById( 'regionMenu'+land_name ).className= "mapLink";
        
        document.getElementById( 'regionDesc0' ).style.display= "block";
        document.getElementById( 'regionDesc'+land_name ).style.display= "none";
    }
    
    this.landHover= function( event )
    {
        var sender= getEventTarget( event );
        this.highlightLand( sender.alt );
    }


    this.landBlur= function( event )
    {
        var sender= getEventTarget( event );
        this.fadeLand( sender.alt );
    }


    this.landClick= function( event )
    {
        var sender= getEventTarget( event );

        if( this.selected_land )
            this.unselectLand();

        
        var land= ( sender.alt )?sender.alt:sender.rel;
        
        this.selectLand( land );
    }


    this.landLinkHover= function( event )
    {
        var sender= getEventTarget( event );        
        document.getElementById( 'region'+sender.rel ).style.display= "block";
        document.getElementById( 'regionDesc'+sender.rel ).style.display= "block";
        document.getElementById( 'regionDesc0' ).style.display= "none";
    }


    this.landLinkBlur= function( event )
    {
        var sender= getEventTarget( event );

        if( sender.rel == this.selected_land )
            return;
            
        document.getElementById( 'region'+sender.rel ).style.display= "none";
        document.getElementById( 'regionDesc'+sender.rel ).style.display= "none";
        document.getElementById( 'regionDesc0' ).style.display= "block";
    }


    this.selectAllLands= function()
    {
        this.unselectLand();
        search_controller.selectLand( 'all' );
    }


    this.bindLandFunctions= function()
    {
        var lands= document.getElementsByClassName( 'cracovMapArea' );

        for( var itr= 0; itr < lands.length; itr++ )
        {
            addPortableEventListener(
                lands[ itr ],
                'mouseover',
                function( event ){ _this.landHover( event ); }
                );

            addPortableEventListener(
                lands[ itr ],
                'mouseout',
                function( event ){ _this.landBlur( event ); }
                );

            addPortableEventListener(
                lands[ itr ],
                'click',
                function( event ){ _this.landClick( event ); }
                );
        }
    }


    this.selectLand= function( land_name )
    {
        this.selected_land= land_name;
        document.getElementById( 'land'+land_name ).style.display= "block";
        document.getElementById( 'landMenu'+land_name ).className= "mapLinkHover";
       
    }
    

    this.unselectLand= function()
    {
        document.getElementById( 'land'+this.selected_land ).style.display= "none";
        document.getElementById( 'landMenu'+this.selected_land ).className= "mapLink";
        this.selected_land= false;
    }
    


    this.bindLandMenuFunctions= function()
    {
        var lands= document.getElementsByClassName( 'mapLink' );

        for( var itr= 0; itr < lands.length; itr++ )
            if( lands[ itr ].rel )
            {
                addPortableEventListener(
                    lands[ itr ],
                    'mouseover',
                    function( event ){ _this.landLinkHover( event ); }
                    );

                addPortableEventListener(
                    lands[ itr ],
                    'mouseout',
                    function( event ){ _this.landLinkBlur( event ); }
                    );

                addPortableEventListener(
                    lands[ itr ],
                    'click',
                    function( event ){ _this.landClick( event ); }
                    );
            }
       
        
    }

    this.bindLandMenuFunctions();
    this.bindLandFunctions();

}


function initLandMapController()
{
    land_map_controller= new landMapController();
    
}


runOnLoad( initLandMapController );
