/* Flipbook Plugin for jQuery
 * Author  :   Jon Raasch
 * Website :   http://jonraasch.com/blog/jquery-flipbook-movies
 * Contact :   jr@jonraasch.com
 * Version :   0.1
 *
 * Copyright (c)2008 Jon Raasch. All rights reserved.
 * Released under FreeBSD License, see readme.txt
 * Do not remove the above copyright notice or text
 */
 $(function() {
    Flipbook.init( [
					'flowers/002.jpg', 
					'flowers/003.jpg', 
					'flowers/004.jpg', 
					'flowers/005.jpg', 
					'flowers/007.jpg', 
					'flowers/008.jpg', 
					'flowers/008.jpg', 
					'flowers/010.jpg', 
					'flowers/011.jpg',
					'flowers/012.jpg', 
					'flowers/013.jpg', 
					'flowers/014.jpg',
					'flowers/015.jpg', 
					'flowers/016.jpg', 
					'flowers/017.jpg',
					'flowers/018.jpg', 
					'flowers/019.jpg', 
					'flowers/020.jpg',
					'flowers/021.jpg', 
					'flowers/022.jpg', 
					'flowers/023.jpg',
					'flowers/024.jpg', 
					'flowers/025.jpg', 
					'flowers/026.jpg',
					'flowers/027.jpg', 
					'flowers/028.jpg', 
					'flowers/029.jpg',
					'flowers/030.jpg', 
					'flowers/031.jpg', 
					'flowers/032.jpg',
					'flowers/033.jpg', 
					'flowers/034.jpg', 
					'flowers/035.jpg',
					'flowers/036.jpg',
					'flowers/037.jpg',
					'flowers/038.jpg',
					'flowers/039.jpg',
					'flowers/040.jpg',
					'flowers/041.jpg',
					'flowers/042.jpg',
					'flowers/043.jpg',
					'flowers/044.jpg',
					'flowers/045.jpg',
					'flowers/046.jpg',
					'flowers/047.jpg',
					'flowers/048.jpg',
					'flowers/049.jpg',
					'flowers/050.jpg',
					'flowers/051.jpg',
					'flowers/052.jpg',
					'flowers/053.jpg',
					'flowers/054.jpg'
					] );
	Flipbook.frameRate = 6;
});

	
var Flipbook = {
    obj          : {},
    frameRate    : 8,
    fadeSpeed    : 0,
    frames       : $('<div></div>'),
    imageCount   : 0,
    loadedImages : 0,
    isBuilt      : 0,
    
    init : function( source ) {
        Flipbook.obj.wrapper  = $('#flipbook');
        
        if ( typeof( source ) == 'undefined' ) Flipbook.startFlipping();
        else {
            Flipbook.processSource( source );
            
            Flipbook.isBuilt = 1;
            
            // if the images loaded faster than we were able to set the isBuilt variable, we make sure to start the flipbook here...just a failsafe
            if ( Flipbook.imageCount == Flipbook.loadedImages ) Flipbook.startFlipping();
        }
    },
    
    processSource : function( source ) {
        if ( typeof( source ) == 'string' ) source = [ source ];
        for ( var i = 0; i < source.length; i++ ) {
            if ( !Flipbook.isImage( source[i] ) ) Flipbook.addDirectory( source[i] );
        }
    },
    
    isImage : function( source ) {
        var theExt = source.substr( source.length - 4 );
        if ( theExt == '.jpg' ) {
            Flipbook.imageCount++;
            // append an image with this source, adding to the loaded images variable once the image is loaded in the browser
            var img = new Image();
            $img = $(img);
            if ( Flipbook.imageCount == 1 ) $img.addClass('active bananas');
            if ( Flipbook.imageCount == 35) $img.addClass('loop');
            $img.load( function() {
                Flipbook.loadedImages++;
                // if all images are processed and imageCount == loadedImages and not currently loading any AJAX, start Flipping 
                if ( Flipbook.isBuilt && Flipbook.imageCount == Flipbook.loadedImages ) Flipbook.startFlipping();
                
            }) .attr('src', source ) . appendTo( Flipbook.frames );
            
            return 1;
        }
        else return 0;
    },
	
    startFlipping : function() {        
        // if the flipbook built dynamically, set the flipbook html here, otherwise leave what was on page
        var framesHTML = Flipbook.frames.html();
        if ( framesHTML.length ) Flipbook.obj.wrapper.html( framesHTML );
        
        Flipbook.obj.theFirst = $('.loop', Flipbook.obj.wrapper);
        
        $active = $('.active', Flipbook.obj.wrapper);
        if ( !$active.length ) $active = $(':last', Flipbook.obj.wrapper);
        Flipbook.obj.active = $active;
        Flipbook.play = setInterval( "Flipbook.slideSwitch()", Math.floor( 1000 / Flipbook.frameRate ) );
    },
    
    slideSwitch : function() {
	
        var $active = Flipbook.obj.active;
    
        var $next =  $active.next().length ? $active.next()
            : Flipbook.obj.theFirst;
    
        if ( Flipbook.fadeSpeed ) {
            $active.addClass('last-active');
            
            $next.css({opacity: 0.0})
                .addClass('active')
                .animate({opacity: 1.0}, Flipbook.fadeSpeed, function() {
                    $active.removeClass('active last-active');
                });
        }
        else {
            $next.addClass('active');
            $active.removeClass('active');
        }  
        Flipbook.obj.active = $next;
    }

}
