/**
 * FlashSlide Class
 * 
 * @author arjaya
 * 
 */

FlashSlide = function(elementID, options){
    
    this.options = {
            swfPath          : "/content/dam/nissan/docroot/swf/slideloader.swf",
            slideURL         : "", //url to the slide that will be loaded
            autoPlay         : false,
			slideIndex       : 0, //the position of the slide used for tagging
			slideName        : "", //used for tagging
			pageType         : "Flash", //used for tagging
            height           : 770,
            width            : 1200,
            wmode            : "transparent", // window, transparent, opaque
            onEmbedComplete  : function(){ },
            onAnimationStart : function(){ },
            onAnimationEnd   : function(){ },
            onCTAClick       : function(id){ }
    }
    
    jQuery.extend(true, this.options, options);
    

    this.elementID     = elementID;
    this.slideInstance = null; 
    this.instanceID    =  FlashSlideListener.register(this); //returns 0,1,etc
        
    var flashVars = {
            instanceID       : this.instanceID,
            slideURL         : this.options.slideURL,
            autoPlay         : this.options.autoPlay,
			slideIndex       : this.options.slideIndex,
			slideName        : this.options.slideName,
			pageType         : this.options.pageType,
            callbackLocation : "FlashSlideListener.callbacks."
    }
    
    var params = {
            wmode: this.options.wmode, 
            scale:'noscale', 
            salign:'lt', 
            allowscriptaccess: 'always', 
            swLiveConnect: 'true', 
            allowfullscreen: 'true'
    }
    
    swfobject.embedSWF(this.options.swfPath, this.elementID, this.options.width, this.options.height, '9.0.0', false, flashVars, params, false);
}


FlashSlide.prototype.embedComplete = function(){
    
    this.slideInstance = document.getElementById(this.elementID);
    
    this.options.onEmbedComplete();
}


FlashSlide.prototype.playSlide = function(){
    
    if(this.slideInstance){
        this.slideInstance.playSlide();
    }
}


FlashSlide.prototype.stopSlide = function(){
    
    if(this.slideInstance){
        this.slideInstance.stopSlide();
    }
}


/**
 * FlashSlideListener Class
 * 
 * If you need additional callbacks. extend FlashSLideListener.callbacks
 * ie. FlashSlideListener.callbacks.newCallback
 */
FlashSlideListener = {
        
    instances : [],
    
    register : function(instance){
        var id = this.instances.push(instance);
        return id - 1;
    },
    
    unregister : function(instance){
        this.instances[instance] = null;
    },
    
    callbacks : {
        embedComplete : function(instanceID){
            var instance = FlashSlideListener.instances[instanceID] || null;
            if(instance != null) instance.embedComplete();
        },
        animationStart : function(instanceID){
            var instance = FlashSlideListener.instances[instanceID] || null;
            if(instance != null) instance.options.onAnimationStart();
        },
        animationEnd : function(instanceID){
            var instance = FlashSlideListener.instances[instanceID] || null;
            if(instance != null) instance.options.onAnimationEnd();
        },
        ctaClick : function(instanceID, ctaID){
            var instance = FlashSlideListener.instances[instanceID] || null;
            if(instance != null) instance.options.onCTAClick(ctaID);
        }
    }
        
}


FlashSlideListener.callbacks.threeSixtyClick = function(instanceID, tagArgs){
	
	crmEvent34(tagArgs);
}

