$.fn.dynamicMap = function(config){
                
    config = $.extend({
        posMap: {
            FR: '-230px 0',
            GR: '0 0',
            DR: '-460px 0',
            NH: '-690px 0',
            FL: '0 -275px',
            OV: '-230px -275px',
            GD: '-460px -275px',
            UT: '-690px -275px',
            ZH: '0 -550px',
            NB: '-230px -550px',
            LB: '-460px -550px',
            ZL: '-690px -550px'
        },
        click: null
    },config);
    
    this.each(function(){
        var self = $(this)
        , img = self.find('img')
        , lastPos = '0 100%'
        , curPos
        , timeoutID
        , selected = self.attr('data-selected')
        , reset = function(){
    		img.css('background-position', lastPos);
    	};
        
        self.delegate('area','mouseover',function(e){
        	clearTimeout(timeoutID);
            var p = $(this).attr('data-id');
            curPos = config.posMap[p];
            img.css('background-position', curPos);
        }).delegate('area', 'mouseout', function(e){
        	timeoutID = setTimeout(reset, 300);
        }).delegate('area', 'click', function(e){
        	e.preventDefault();
        	lastPos = curPos;
        });
        
        if(selected) {
        	selected = self.find('[title='+selected+']').attr('data-id');
        }
        
        if(selected && config.posMap[selected]) {
        	img.css('background-position', config.posMap[selected]);
        }
        
    });
    
    if(typeof config.click == 'function'){
        this.delegate('area','click', config.click);
    }
    
    
};
