/*
Author: John Botica
Version: 1.0
*/
var ActiveElement;
(function($){
    // ActiveElement Class
    ActiveElement = function(el,o){
        var self = this;
        this.activeElem = $(el);        
        this.deck = this.activeElem.parents('dl.slidedeck');
        this.slide = this.activeElem.parents('dd.slide');
        this.slideIndex = (this.slide.index('dd.slide'));
        this.slideCount = this.deck.children('dd.slide').length;
        this.leftSpines = [];
        this.rightSpines = [];
        
        for(s=0; s<self.slideCount; s++){
            if(s <= self.slideIndex){
                self.leftSpines.push($('dt.spine')[s]);
            }else if(s > self.slideIndex){
                self.rightSpines.push($('dt.spine')[s]);
            }
        }
        
        this.spineHeight = $(this.leftSpines[0]).height();
        this.deckHeight = this.deck.height();
        this.deckWidth = this.deck.width();
        this.slideHeight = this.slide.height();
        this.slideWidth = this.slide.width();
        this.slidePos = this.slide.position();
                
        //default options
        this.options = {
           animateSpeed: 500
        };
        var UA = navigator.userAgent.toLowerCase();
			Browser = {
				chrome: UA.match(/chrome/) ? true : false,
				firefox: UA.match(/firefox/) ? true : false,
				firefox2: UA.match(/firefox\/2/) ? true : false,
				firefox30: UA.match(/firefox\/3\.0/) ? true : false,
				msie: UA.match(/msie/) ? true : false,
				msie6: (UA.match(/msie 6/) && !UA.match(/msie 7|8/)) ? true : false,
				msie7: UA.match(/msie 7/) ? true : false,
				msie8: UA.match(/msie 8/) ? true : false,
				opera: UA.match(/opera/) ? true : false,
				safari: (UA.match(/safari/) && !UA.match(/chrome/)) ? true : false
			};
		for(var b in Browser){
			if(Browser[b] === true){
				Browser._this = b;
			}
		}
		if(Browser.chrome === true) {
			Browser.version = UA.match(/chrome\/([0-9\.]+)/)[1];
		}
		if(Browser.firefox === true) {
			Browser.version = UA.match(/firefox\/([0-9\.]+)/)[1];
		}
		if(Browser.msie === true) {
			Browser.version = UA.match(/msie ([0-9\.]+)/)[1];
		}
		if(Browser.opera === true) {
			Browser.version = UA.match(/version\/([0-9\.]+)/)[1];
		}
		if(Browser.safari === true) {
			Browser.version = UA.match(/version\/([0-9\.]+)/)[1];
		}
        
        this.resetPositions = function(activeContainer){
            self.deck.slidedeck().goTo(self.deck.slidedeck().current);
            self.slide.animate({
                opacity: 1
            },Math.round(self.options.animateSpeed/4), function(){
                activeContainer.remove();
                self.slide.css({zIndex:1});     
                self.deck.slidedeck().setOption('scroll',true);
            });            
        };
        
        this.createActiveContainer = function(){
            var activeContainer = $(document.createElement('div'));
            var resetLink = $(document.createElement('a'));
           
            //Video
            var videoContainer = $(document.createElement('div'));
            videoContainer.addClass('activeVideoContainer').attr('id','video_'+self.slideIndex).appendTo(activeContainer);
            
            var video;
            var videoFile = self.activeElem.attr('href');
            var htmlEmbed;
            var domOptions = {
                id: "video_flash_"+self.slideIndex,
                name: "video_flash_"+self.slideIndex,
                src: _templatePath + '/media/player.swf',
                width: '100%',
                height: '100%',
                AllowScriptAccess:"always",
                wmode: 'transparent',
                flashvars: {
                    src: videoFile,
                    autoplay: true
                }
            };
            if(Browser.chrome || (Browser.safari && !!document.createElement('video').canPlayType)){
                videoContainer.append('<video class="activeElementsVideo" controls="controls" autoplay="autoplay" height="'+self.deckHeight+'"><source src="'+videoFile+'" type="video/mp4" /></video>');               
            }else{
                if(!Browser.msie){
                    videoContainer.append('<embed height="'+domOptions.height+'" width="'+domOptions.width+'" flashvars="file='+domOptions.flashvars.src+'&amp;autostart='+domOptions.flashvars.autoplay+'&image=' + _templatePath + '/images/wordpress/videow_preview.jpg" wmode="'+domOptions.wmode+'" allowscriptaccess="'+domOptions.AllowScriptAccess+'" quality="high" name="video_'+self.slideIndex+'" id="video_'+self.slideIndex+'" style="" src="'+domOptions.src+'" type="application/x-shockwave-flash">');
                }else{                    
                    htmlEmbed = '<object id="'+domOptions.id+'" width="'+domOptions.width+'" height="'+domOptions.height+'" type="application/x-shockwave-flash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">';            
                    htmlEmbed += '<param name="movie" value="'+domOptions.src+'?'+domOptions.flashvars+'"></param>';
                    htmlEmbed += '<param name="AllowScriptAccess" value="'+domOptions.allowscriptaccess+'"></param>';
                    htmlEmbed += '<param name="wmode" value="'+domOptions.wmode+'"></param>';
                    htmlEmbed += '<param name="flashvars" value="file='+domOptions.flashvars.src+'&autostart='+domOptions.flashvars.autoplay+'&image=' + _templatePath + '/images/wordpress/videow_preview.jpg"></param>';
                    htmlEmbed += '</object>';                    
                    videoContainer.append(htmlEmbed);
                }
            }
            
            resetLink.addClass('resetLink').css({                
                zIndex: 20002
            }).attr({
                href: '#',
                title: 'Return To Slide'
            }).click(function(event){
                event.preventDefault();
                activeContainer.animate({
                    top:'-'+self.deckHeight+'px'
                },self.options.animateSpeed,function(event){
                    self.resetPositions(activeContainer);
                });
                return false;
            }).appendTo(activeContainer);
            
            activeContainer.addClass('activeElementContainer').css({
                width: self.deckWidth+'px',
                height: self.deckHeight+'px',
                position: 'absolute',
                top: '-'+self.deckHeight+'px',
                left:0+'px',
                overflow: 'hidden',
                zIndex: 20001,
                backgroundColor: '#000000'
            }).appendTo(self.deck).stop().animate({
                top:0+'px'
            },self.options.animateSpeed);
        };
        
        this.moveSpinesOut = function(){            
            for(i=0; i<self.slideCount ; i++){
                var leftSpine = $(self.leftSpines[i]);
                var rightSpine = $(self.rightSpines[i]);
                if(leftSpine.length){
                    leftSpine.animate({
                        left:'-'+self.spineHeight+'px'
                    },self.options.animateSpeed);
                }
                if(rightSpine.length){
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
                }
            }
            var activeCorner = self.deck.find('.activeCorner');
            activeCorner.animate({
                left:'-'+self.spineHeight+'px'
            },self.options.animateSpeed);
            
            self.slide.css({
                zIndex: 2
            }).animate({
                width: self.deckWidth - (self.slide.innerWidth() - self.slideWidth)+'px',
                height: self.deckHeight - (self.slide.innerHeight() - self.slideHeight)+'px',
                left: 0+'px'
            },self.options.animateSpeed,function(event){
                self.createActiveContainer();
            });               
        };
        
        this.bindActiveClick = function(){
            self.activeElem.click(function(event){
                event.preventDefault();
                self.deck.slidedeck().setOption('scroll',false);                
                self.moveSpinesOut();  
                return false;
            });
        };
        
        this.initialize = function(o){
            if(typeof(o) != "undefined"){
    			for(var key in o){
    				self.options[key] = o[key];
    			}
    		}
            self.bindActiveClick();
        };
        
        this.toAttributeString = function(Obj) {
        	var s = '';
        	for(var key in Obj)
        		if(typeof Obj[key] != 'function')
        			s += key+'="'+Obj[key]+'" ';
        	return s;		
        };
    
        this.toFlashvarsString = function(Obj) {
        	var s = '';
        	for(var key in Obj)
        		if(typeof Obj[key] != 'function')
        			s += key+'='+encodeURIComponent(Obj[key])+'&';
        	return s.replace(/&$/, '');		
        };
        
        
        this.initialize(o);
    };
        
    $.fn.activeElement = function(opts){
		var returnArr = [];
		for(var i=0; i<this.length; i++){
			if(!this[i].activeElement){
				this[i].activeElement = new ActiveElement(this[i],opts);
			}
			returnArr.push(this[i].activeElement);
		}
		return returnArr.length > 1 ? returnArr : returnArr[0];
	};
      
})(jQuery);

var fireActive = {
    init: function(){
        if($('#playVideoText').length){
            $('#playVideoText').activeElement();
        }
        if($('#playVideoIcon').length){
            $('#playVideoIcon').activeElement();
        }
    }
};

var tweakSettings = {
    handler: function(event){
        tweakSettings.hide();
    },
    check: function(current){        
        if(current == 3){
            tweakSettings.hide();
        }
    },
    hide: function(){
        $(document).unbind('click',tweakSettings.handler);
        $('div.tweakTip').fadeOut(200);
    },
    display: function(toolTip){
        if(toolTip.css('display') === 'none'){
            $('div.tweakTip').fadeOut(200);
            toolTip.css({
                zIndex: 2200                
            });
            toolTip.fadeIn(200);
            $(document).bind('click',tweakSettings.handler);
        }else{
            toolTip.fadeOut(200);
            $(document).unbind('click',tweakSettings.handler);
        }
    },
    init: function(){
        if ($('a.play, a.add').length) {
            $('a.play, a.add').click(function(event){
                event.preventDefault();
                var elemID = $(this).attr('id').split('_')[1];
                var tipEl = $('#tweak_tip_' + elemID);
                tweakSettings.display(tipEl);
                return false;
            });
        }
        if ($('a.tweakLinks').length) {
            $('a.tweakLinks').click(function(event){
                event.preventDefault();
                var tweakLinkId = $(this).attr('id');
                var elemID = $('a.play[href="#' + tweakLinkId + '"], a.add[href="#' + tweakLinkId + '"]').attr('id').split('_')[1];
                var tipEl = $('#tweak_tip_' + elemID);
                tweakSettings.display(tipEl);
                return false;
            });
        }
    }
};

$(document).ready(function(){
    if($('ul.slidesVertical').length){
        $('div.nextVertical a.yellow').click(function(event){
            event.preventDefault();
            if(this.href.split("#")[1] == "next_tweak"){
                $('#slidedeck').slidedeck().next();
            } else {
                $('#slidedeck').slidedeck().vertical().next();
            }
        });
        $('a.previousVertical').click(function(event){
            event.preventDefault();
            $('#slidedeck').slidedeck().vertical().prev();
        });
    }

    tweakSettings.init();
    fireActive.init();
});