(function($) {
    
    $._cfVimeoOptions = {};
    
    $._cfVimeoLoaded = function(elementID) {
        
        var options = $._cfVimeoOptions[elementID];
        
        clearTimeout(options._loadTimeout);
        
        var moogaloop = document.getElementById(elementID);
        
        var videoDetails = {
            
            duration: parseInt(moogaloop.api_getDuration()),
            element: moogaloop
            
        };
        
        moogaloop.api_addEventListener("onPlay", "$._cfVideoOptions." + elementID + ".onPlay");
        moogaloop.api_addEventListener("onFinish", "$._cfVideoOptions." + elementID + ".onFinish");
        
        $._cfVimeoOptions[elementID].onLoad(videoDetails);
        
    };
    
    $.fn.embedVimeo = function(options) {
        
        options = $.extend({
            
            container: this,
            autoPlay: true,
            clipID: null,
            onLoad: function() { },
            onPlay: function() { },
            onFinish: function() { },
            onError: function() { },
            width: 640,
            height: 480,
            playerColor: 'e67300',
            customVars: {},
            customParams: {},
            customAttrs: {},
            timeout: 10000
            
        }, options);
        
        if(options.clipID) {
            
            $._cfVimeoOptions[options.container.attr('id')] = options;
            
            options.customVars = $.extend(
                {
                
                    "clip_id" : options.clipID,
                    "show_title" : 0,
                    "show_byline" : 0,
                    "show_portrait" : 0,
                    "color" : options.playerColor,
                    "fullscreen" : 1,
                    "autoplay" : options.autoPlay ? 1 : 0,
                    "js_api" : 1,
                    "js_onLoad" : "$._cfVimeoLoaded", 
                    "js_swf_id" : options.container.attr("id")
                
                }, options.customVars
            );
            
            options.customParams = $.extend(
                {
                    
                    "allowscriptaccess"	: "always",
                    "allowfullscreen"	: "true"
                    
                }, options.customParams
            );
            
            options.customAttrs = $.extend (
                {}, options.customAttrs
            );
            
            options.container.embedFlash(
                {
                    
                    source: "http://vimeo.com/moogaloop.swf", 
                    width: options.width, 
                    height: options.height, 
                    version: "9.0.0",
                    flashvars: options.customVars,
                    params: options.customParams,
                    attributes: options.customAttrs,
                    error: options.onError
                    
                }
            );
            
            options._loadTimeout = setTimeout(
                function() {
                    
                    options.onError();
                    
                },
                options.timeout
            );
            
        }
        
        return this;
        
    };
    
})(jQuery);