var ts_loading_screen = {
overlay: null
,images: []
,image_counter: 0
,loaded_image_counter: 0
,destroyed: false
,create: function(){
this.overlay = jQuery('
').css({
width: '100%'
,height: '100%'
,backgroundColor: '#ffffff'
,position: 'fixed'
,zIndex: 9999999
,top: 0
,left: 0
}).appendTo('html');
var image_wrapper = jQuery('');
var image = jQuery('
');
image_wrapper.append(image).appendTo( this.overlay );
}
,get_images: function(){
this.images = jQuery('body').find('img');
if( this.images.length ){
this.load_image_event();
}
}
,load_image_event: function(){
var win_height = jQuery(window).height();
for( var i = 0, l = this.images.length; i < l; i++ ){
if( !this.image_loaded(this.images[i]) ){
var img = jQuery(this.images[i]);
if( img.offset().top < win_height ){
this.image_counter++;
img.on('load', function(){
ts_loading_screen.complete_loading_images();
});
}
}
}
}
,image_loaded: function( img ){
return img.complete && img.naturalHeight !== 0;
}
,complete_loading_images: function(){
this.loaded_image_counter++;
if( this.image_counter <= this.loaded_image_counter ){
this.destroy();
}
}
,destroy: function(){
if( !this.destroyed ){
this.overlay.fadeOut(200, function(){
ts_loading_screen.overlay.remove();
});
this.destroyed = true;
}
}
};
ts_loading_screen.create();
jQuery(function(){
ts_loading_screen.get_images();
});
jQuery(window).on('load', function(){
ts_loading_screen.destroy();
});