(function($) {
  $.fn.moviebox = function(settings) {
  
    settings = jQuery.extend({
        speed: 'normal',
        overlayOpacity: 0.5,
        title: true,
        scale: true,
        border: 10,
        textImage: '',
        textOf: '/',
		callback: function(){}
    }, settings);
    
  
    var window_width;
    var window_height;
    var document_width;
    var document_height;
    var scroll_top;
    var scroll_left;
    var array_position;
    var set_array;
    var set_position;
    var set_count;
    var is_set;
    var scaled;
    var rescaled;
    var container_width;
    var container_height;
    var container_top;
    var container_left;
    var loader_top;
    var loader_left;
    var scaled_top;
    var scaled_left;
    var scaled_loader_top;
    var scaled_loader_left;
    var old_overlay_width;
    var old_overlay_height;

    var moviebox_objects = '<div id="moviebox_overlay"></div><div id="moviebox_loader"></div><div id="moviebox_container"><iframe id="moviebox_image" src="" /></div><div id="moviebox_details"><div id="moviebox_title"></div><a href="#" id="moviebox_close"></a></div></div></div>';
    
    getScroll();
    getSize();
	$(window).scroll(function(){ getScroll(); });
    

    $(this).each(function(){
		//images_array[images_array.length] = this;
        $(this).bind('click', function(){
			openM(this);
			return false;
		});
    });  
      
    function openM(element){
        var element_rel = $(element).attr('rel');
        var element_href = $(element).attr('href');

        //if(element_rel!="filmik") return true;

        $('body').append(moviebox_objects);
        $('#moviebox_overlay, #moviebox_loader, #moviebox_container, #moviebox_details').hide();
        
        scaled_top = 0;
        scaled_left = 0;
        container_width = 100;
        container_height = 100;
        container_top = scroll_top+window_height/2-container_height/2-settings.border;
        container_left = scroll_left+window_width/2-container_width/2-settings.border;
        
        $('#moviebox_overlay').css('opacity', settings.overlayOpacity);
        
        $('#moviebox_overlay').css({'width':document_width,'height':document_height}).hide().bind('click', function() { close(); });
        
        $('#moviebox_container').css({'top':container_top,
            'left':container_left,
            'width':container_width,
            'height':container_height,
            'padding':settings.border}).hide();
        
        $('#moviebox_details').css({'top':container_top,'left':container_left}).hide();
        
        loaderPosition();
        
        $('#moviebox_loader').css({'top':loader_top, 'left':loader_left}).hide();
            
        $('#moviebox_details #moviebox_close').bind('click', function(){
            close();
            return false;
        });
        
        $('#moviebox_nav, #moviebox_title, #moviebox_image').hide();
      
        // show overlay and container
        $('#moviebox_overlay, #moviebox_container, #moviebox_loader').show();
        
        
        showFrame(element);
    }
    
    function showFrame(element){
        var element_rel = $(element).attr('rel');
        var element_href = $(element).attr('href');
        var element_title = $(element).attr('title');
        
        $('#moviebox_details').css('width', 640);
        var details_height = $('#moviebox_details').height();
        container_width = 640;
        container_height = 480 + details_height;
        
        container_top = scroll_top+window_height/2-container_height/2-settings.border;
        container_left = scroll_left+window_width/2-container_width/2-settings.border;
        if(container_top < scroll_top) container_top = scroll_top;
        if(container_left < scroll_left) container_left = scroll_left;
        
        var details_top = container_top + 480 + settings.border;
        var details_left = container_left + settings.border;
        
        //$('#moviebox_details').show();
        //$('#moviebox_details #moviebox_scale').show();
        $('#moviebox_title').text(element_title).show();
        
        $('#moviebox_loader').animate({'top':loader_top, 'left':loader_left});
        $('#moviebox_container').animate({'width':container_width, 'height':container_height, 'left':container_left, 'top':container_top}, settings.speed, function(){
            $('#moviebox_image').width(640).height(480).attr('src', element_href);
            $('#moviebox_loader').hide();
            $('#moviebox_image').fadeIn(settings.speed);
            $('#moviebox_details').css({'top':details_top, 'left':details_left}).fadeIn(settings.speed);            
        });
        
    }
    
    function close(){
        $('#moviebox_details, #moviebox_container').fadeOut(settings.speed);
        $('#moviebox_overlay').fadeOut(settings.speed, function(){
            $('#moviebox_details, #moviebox_container, #moviebox_loader, #moviebox_overlay').remove();
        });
    }
    
    function loaderPosition(){
        loader_top = scroll_top+window_height/2-$('#moviebox_loader').height()/2;
        loader_left = scroll_left+window_width/2-$('#moviebox_loader').width()/2;
    }
      
    function getScroll(){
        scroll_top = $(document).scrollTop();
        scroll_left = $(document).scrollLeft();
	}

    function getSize(){
        window_height = $(window).height();
        window_width = $(window).width();
        document_width = $(document).width();
        document_height = $(document).height();
    }
  
      
  }
})(jQuery);
