
var ActiveElement, fireActive, tweakSettings;
(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(var 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();
        var 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 htmlEmbed;
			           
			  htmlEmbed = '<h2>Drop us a line and we will get back to you...</h2>';
		      htmlEmbed += '<form method="post" id="contact-form">';
		      htmlEmbed += '<div id="formleft">';
		      htmlEmbed += '<p><label for="name">Name*</label> <input type="text" class="input" id="name" name="name" /></p>';
		      htmlEmbed += '<p><label for="number">Number*</label> <input type="text" class="input" id="number" name="number" /></p>';
			  htmlEmbed += '<p><label for="email">Email*</label> <input type="text" class="input" id="email" name="email" /></p>';
			  htmlEmbed += '<p><label for="company">Company</label> <input type="text" class="input" id="company" name="company" /></p>';
			  htmlEmbed += '<p><label for="area">Area</label> <input type="text" class="input" id="area" name="area" /></p>';
			  htmlEmbed += '<p><label for="enquiry">Enquiry</label>';
			  htmlEmbed += '<select name="enquiry" id="enquiry" class="enquiry">';
			  htmlEmbed += '<option value="general">General</option>';
			  htmlEmbed += '<option value="design">Creative Design</option>';
			  htmlEmbed += '<option value="print">Print Services</option>';
			  htmlEmbed += '<option value="web">Web & Online</option>';
			  htmlEmbed += '<option value="digital">Digital Media & Apps</option>';
			  htmlEmbed += '<option value="marketing">Marketing & Advertising</option>';
			  htmlEmbed += '</select></p></div><div id="formright">';
			  htmlEmbed += '<p><label for="message">Message*</label></p><p><textarea id="message" class="input" name="message" /></textarea></p>';                    
			  htmlEmbed += '<p><a onclick="submitform()" id="submit-form">SUBMIT</a></div></p>';
			  htmlEmbed += '</form>';
			  videoContainer.append(htmlEmbed);
			  
			 /* var video;
			  var videoFile = self.activeElem.attr('href');
			  
			  var domOptions = {
				  id: "video_flash_"+self.slideIndex,
				  name: "video_flash_"+self.slideIndex,
				  src: '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=' + 'images/loadimg.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=' + 'images/loadimg.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(var i=0; i<self.slideCount ; i++){
                var leftSpine = $(self.rightSpines[0]);
                var rightSpine1 = $(self.rightSpines[1]);
				var rightSpine2 = $(self.rightSpines[2]);
				var rightSpine3 = $(self.rightSpines[3]);
				var rightSpine4 = $(self.rightSpines[4]);
				var rightSpine5 = $(self.rightSpines[5]);
				var rightSpine6 = $(self.rightSpines[6]);
				
				
                if(leftSpine.length){
                    leftSpine.animate({
                        left:'-'+self.spineHeight+'px'
				
                    },self.options.animateSpeed);
				} 
				if(rightSpine1.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine1.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
               }
			   if(rightSpine2.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine2.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
               }
			   if(rightSpine3.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine3.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
               }
			   if(rightSpine4.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine4.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
               }
			   if(rightSpine5.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine5.animate({
                        left:fullWidth+'px'
                    },self.options.animateSpeed);
               }
			   if(rightSpine6.length)
               {
                    var fullWidth = self.deckWidth + self.spineHeight * i;
                    rightSpine6.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];
    };

    fireActive = {
        init: function(){
            if($('#playVideoText').length){ 
                $('#playVideoText').activeElement();
                $('#playVideoText2').activeElement();
                $('#playVideoText3').activeElement();
                $('#playVideoText4').activeElement();
                $('#playVideoText5').activeElement();
                $('#playVideoText6').activeElement();
                $('#playVideoText7').activeElement();
                $('#playVideoText8').activeElement();
                $('#playVideoText9').activeElement();
                $('#playVideoText10').activeElement();
                $('#playVideoText11').activeElement();
                $('#playVideoText12').activeElement();
                $('#playVideoText13').activeElement();
                $('#playVideoText14').activeElement();
                $('#playVideoText15').activeElement();
                $('#playVideoText16').activeElement();
                $('#playVideoText17').activeElement();
                $('#playVideoText18').activeElement();
                $('#playVideoText19').activeElement();
                $('#playVideoText20').activeElement();
                $('#playVideoText21').activeElement();
                $('#playVideoText22').activeElement();
                $('#playVideoText23').activeElement();
                $('#playVideoText24').activeElement();
            }
            if($('#playVideoIcon').length){
                $('#playVideoIcon').activeElement();
            }
        }
    };
    
    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();
    });
})(jQuery);
