/***************************************************************
 *
 *  javascript functions for the 3pc_mediadb 
 *  relies on the javascript library "jquery" and jwplayer <http://www.longtailvideo.com/players>
 *
 *
 *  Copyright notice
 *
 *  (c) 2012	3pc 
 *  All rights reserved
 *
 *
 ***************************************************************/

/**
 * @author	Robert Jung <rjung@3pc.de>
 * @author	Falk Gebauer <fgebauer@3pc.de>
 *
 */

var currentset;
var singlescrollwidth;
var visiblescrollparts=3;
var isscrolling=false;
var playerDir = 'typo3conf/ext/3pc_mediadb/res/mediaplayer-5.7/';
var flashplayerFile = playerDir + "player.swf";
var playerSkin = playerDir + "glow.zip";

//create video
function loadvideo(source,img,htext,stext,ptext,autost){
    if(autost==true){
    	jwplayer("htmlvideo").remove();
    	
    }
    jQuery('.nested > div').empty().prepend('<h3>' + htext + '</h3><p class="media_short">' + stext + '</p><p class="media_text">' + ptext + '</p><span><span class="videoarrow"/><img src="' + img + '" alt="'+ htext +'" /></span> <video src="' + source + '" width="444" height="250" id="htmlvideo" preload="none"></video>');           
    jQuery('.nested > div > span').css('cursor','pointer');
    jQuery('.nested > div > span').click(function(event){
    	jQuery('.nested > div > div').show();
   	 //jwplayer("htmlvideo").play();
   	 //complete reload for ie8 bugged display:none/jwplayer problem
   	 jwplayer("htmlvideo").setup({
	        flashplayer: flashplayerFile,
        	skin: playerSkin, 
	        image: img, 
        	autostart: true
	}).onComplete(function(event){
	    	jQuery('.nested > div > div').hide();
    		jQuery('.nested > div > span').show();
    		jQuery('.nested > div > .media_short').show();
  	});   
  	jQuery('.nested > div > .media_short').hide();
    	jQuery(this).hide();
    });
    jwplayer("htmlvideo").setup({
        flashplayer: flashplayerFile,
        skin: playerSkin, 
        image: img, 
        autostart: autost
    }).onComplete(function(event){
    	jQuery('.nested > div > div').hide();
    	jQuery('.nested > div > span').show();
    	jQuery('.nested > div > .media_short').show();
    });             
    
    if(autost==true){
    	jQuery('.nested > div > span').hide();
    	jQuery('.nested > div > .media_short').hide();
    }else{
    	jQuery('.nested > div > div').hide();
    }                       
} 

//set scrollarrows
function setscrollarrows(){
    if(jQuery(currentset).css('left').replace(/[^-\d\.]/g, '')>(jQuery('li',currentset).size()-visiblescrollparts)*singlescrollwidth*-1){
        jQuery('.nested > span .next').removeClass('next_off').addClass('next_on');
    }else{
        jQuery('.nested > span .next').removeClass('next_on').addClass('next_off');  
    }           
    if(jQuery(currentset).css('left').replace(/[^-\d\.]/g, '')<0){
        jQuery('.nested > span .previous').removeClass('previous_off').addClass('previous_on');
    }else{
        jQuery('.nested > span .previous').removeClass('previous_on').addClass('previous_off');  
    }    
    
      
}


//browser check
function checkBrowserName(name){  
    var agent = navigator.userAgent.toLowerCase();  
    if (agent.indexOf(name.toLowerCase())>-1) { 
        return true;  
    }  
    return false;  
} 



var lastvideo;
var videoactive;
var modalactive;
jQuery(document).ready(function(){  
    if (jQuery('base').length) {
        bHref = jQuery('base').attr('href');
    }
    else {
        bHref = '';
    }
    //video single
    if(jQuery('div').hasClass('single')){ 
        jQuery('.single img').each(function(i) {
            var videolink=bHref+jQuery(this).siblings('a').attr('href');
            jQuery(this).siblings('a').remove();
            jQuery(this).wrap('<a class="imgwrap" href="' + videolink + '"/>');
            jQuery('.imgwrap').append('<span class="videoarrow"/>');
            jQuery('.imgwrap').click(function(event){	
                //removes the player from dom, removing the containers alone won't do te job
                if(videoactive==true){
                    jwplayer("htmlvideo").remove();					
                }
                jQuery('.imgwrap', lastvideo).show();
                jQuery('.videowrap', lastvideo).remove();	
                
                lastvideo=jQuery(event.target).parent().parent();
                
                jQuery(this).after('<div class="videowrap"/>');
				jQuery(this).siblings('.videowrap:first').empty().prepend('<video src="' + jQuery(this).attr('href') + '" id="htmlvideo" preload="none"></video>');
				
				if(jQuery(event.target).parent().parent().hasClass('video-modal')){						
					jQuery(this).siblings('.videowrap').find('video').attr('width',jQuery('.video-modal video').width());
					jQuery(this).siblings('.videowrap').find('video').attr('height',jQuery('.video-modal video').height());
				}else{
					jQuery(this).siblings('.videowrap').find('video').attr('width',jQuery('img', this).attr('width'));
					jQuery(this).siblings('.videowrap').find('video').attr('height',jQuery('img', this).attr('height'));
				}
                
                jwplayer("htmlvideo").setup({
                    flashplayer: flashplayerFile,
                    skin: playerSkin, 
                    autostart: true
                }).onComplete(function(){
                	finishvideo();                	
                });
                
                //popup video
            	if(jQuery(event.target).parent().parent().hasClass('video-modal')){
            		modalactive=true;
            		jQuery(this).siblings('.videowrap').modal({onClose: function (dialog) {finishvideo();}});
            	}else{
	            	modalactive=false;
            		jQuery(this).hide();	
            	}
            	
                videoactive=true;
                return false;
            });
        });
    }       
    
    //video flat list
    if(jQuery('div').hasClass('flat')){ 
        jQuery('.flat img').each(function(i) {        	
            var videolink=bHref+jQuery(this).siblings('a').attr('href');
            jQuery(this).siblings('a').remove();
            jQuery(this).wrap('<a class="imgwrap" href="' + videolink + '"/>');
            jQuery(this).parent().append('<span class="videoarrow"/>');
            jQuery('.imgwrap',jQuery(this).parent().parent()).click(function(event){	
            	//removes the player from dom, removing the containers alone won't do te job
                if(videoactive==true){
                    jwplayer("htmlvideo").remove();					
                }
               	jQuery('.imgwrap', lastvideo).show();
                jQuery('.videowrap', lastvideo).remove();	
                
                lastvideo=jQuery(event.target).parent().parent();
				jQuery(this).after('<div class="videowrap"/>');							
				jQuery(this).siblings('.videowrap').empty().prepend('<video src="' + jQuery(this).attr('href') + '" id="htmlvideo" preload="none"></video>');
				
				if(jQuery(event.target).parent().parent().hasClass('video-modal')){						
					jQuery(this).siblings('.videowrap').find('video').attr('width',jQuery('.video-modal video').width());
					jQuery(this).siblings('.videowrap').find('video').attr('height',jQuery('.video-modal video').height());
				}else{
					jQuery(this).siblings('.videowrap').find('video').attr('width',jQuery('img', this).attr('width'));
					jQuery(this).siblings('.videowrap').find('video').attr('height',jQuery('img', this).attr('height'));
				}
				
                jwplayer("htmlvideo").setup({
                    flashplayer: flashplayerFile,
                    skin: playerSkin, 
                    autostart: true
                }).onComplete(function(){
                	finishvideo();                	
                });
                
                //popup video
            	if(jQuery(event.target).parent().parent().hasClass('video-modal')){
            		modalactive=true;
            		jQuery(this).siblings('.videowrap').modal({onClose: function (dialog) {
						finishvideo();            			
            		}});
            	}else{
	            	modalactive=false;
            		jQuery(this).hide();	
            	}
               
                
                videoactive=true;
                return false;
            });
        });                
    }
    
    function finishvideo(){
		if(modalactive==true){
			jQuery.modal.close();
		}
		jwplayer("htmlvideo").remove();
		jQuery('.imgwrap', lastvideo).show();
		jQuery('.videowrap', lastvideo).remove();
		videoactive=false;
	}
	
    if(jQuery('div').hasClass('nested')){ 
   
        //add video wrapper
        jQuery('.nested').prepend('<div></div>');
        //set headline navigation         
        jQuery('.nested ul').each(function(index){      
            jQuery('h3', this).css('cursor','pointer');      
            jQuery('h3', this).click(function (event) {
                jQuery('.nested ul ul').hide(); 
                jQuery('.nested ul h3').removeClass('on');
                jQuery('ul', jQuery(event.target).parent()).fadeIn();
                currentset=jQuery('ul', jQuery(event.target).parent());        
                jQuery(event.target).addClass('on');
                setscrollarrows();      
            }); 
       
        });
        //set width of single scrollpart      
        jQuery('.nested ul ul').wrap('<div />');
        jQuery('.nested ul ul').each(function(index){
            jQuery(this).css('width',jQuery('li', this).width()*jQuery('li', this).size());
            singlescrollwidth=jQuery('li', this).width();
        });
    
        //transform and set link                                                                       
        jQuery('.nested ul ul li').each(function(index){
            jQuery(this).prepend(jQuery('img', this));
            jQuery('a', this).text('');
            jQuery(this).wrapInner(jQuery('a', this));
            jQuery('a', this).append('<span></span>');
            jQuery('a', this).click(function (event) {
                jQuery('.nested ul ul li a').removeClass('on');        
                jQuery(this).addClass('on');
                jQuery('.nested ul ul li a span').show();
                jQuery('span',this).hide();    
                loadvideo(bHref+jQuery(this).attr('href'),jQuery('img',this).attr('src'),jQuery('.media_title',this).text(),jQuery('.media_short',this).text(),jQuery('.media_text',this).text(),true);
                return false;        
            });      
                        
        });
        //remove unused link           
        jQuery('.nested ul ul li a').each(function(index){
            jQuery('a', this).remove();    
        });    
        
        //add clearing element
        jQuery('.nested').append('<p class="clear">&nbsp;</p>');
    
        jQuery('.nested').append('<span><a class="previous"></a><a class="next"></a></span>')
        jQuery('.nested .next').click(function (event){
            if(jQuery(currentset).css('left').replace(/[^-\d\.]/g, '')>(jQuery('li',currentset).size()-visiblescrollparts)*singlescrollwidth*-1 && isscrolling==false){
                isscrolling=true;      
                jQuery(currentset).animate({
                    left:'-='+singlescrollwidth
                }, 500, function() {
                    isscrolling=false;
                    setscrollarrows()
                });        
            }
        });
        jQuery('.nested .previous').click(function (event){
            if(jQuery(currentset).css('left').replace(/[^-\d\.]/g, '')<0  && isscrolling==false){
                isscrolling=true;      
                jQuery(currentset).animate({
                    left:'+='+singlescrollwidth
                }, 500, function() {
                    isscrolling=false;
                    setscrollarrows()
                });
           
            }           
        });
    
    
                  
                
                
        //show first set
        jQuery('.nested ul ul').hide();
        jQuery('.nested ul ul:first').show();  
        currentset=jQuery('.nested ul ul').first();
        jQuery('.nested ul h3:first').addClass('on');     
        setscrollarrows();
                
        //load initial video        
        loadvideo(bHref+jQuery('.nested ul ul li a').first().attr('href'), jQuery('.nested ul ul li a img').first().attr('src'), jQuery('.nested ul ul li .media_title').first().text(), jQuery('.nested ul ul li .media_short').first().text(), jQuery('.nested ul ul li .media_text').first().text() ,false);
        jQuery('.nested ul ul li a').first().addClass('on');
        jQuery('.nested ul ul li a span').first().hide();
        
        //search events
        jQuery("select.tx_3pcmediad_pi1_scat").change(function() { 
            jQuery(this).closest('form').submit();
        });
        jQuery("#tx_3pcmediadb_pi1_swords").keyup(function(event){
            if(event.keyCode == 13){
                jQuery(this).closest('form').submit();
            }
        });
        jQuery("#tx_3pcmediadb_pi1_swords").change(function() { 
            jQuery(this).closest('form').submit();
        });
         
    }     
})

