﻿/// <reference path="jquery.intellisense.js"/>  
// Sound Gallery Manager



(function($) {

    $.fn.soundGallery = function ( options )
    {
        var opts = $.extend({}, $.fn.soundGallery.defaults, options );
    }
    
    
    function renderGallery ( pageToDisplay )
    {
        // render the page of the gallery selected
        $ ( "#sound-gallery" ).empty ( );
        
        var rowSize = Math.ceil ( $.fn.soundGallery.defaults.pageSize / $.fn.soundGallery.defaults.rows );   
        
        var startIndex = $.fn.soundGallery.defaults.pageSize * pageToDisplay;
        var endIndex = startIndex + $.fn.soundGallery.defaults.pageSize;
               
        // check that the end index isn't greater than the list of media items
        if(endIndex > $.fn.soundGallery.defaults.jsonFile.length-1)
        {        
            endIndex=$.fn.soundGallery.defaults.jsonFile.length;
        }
        
        for(i=startIndex; i < endIndex; i++)
        {            
            var item = $.fn.soundGallery.defaults.jsonFile[i];
            
            // grab the media details.  There should be only one, else throw exception                           

            // default class name for the row
            var classname = "";
            
            // set the class name for the last element of the row
	        if ( ( i + 1 ) % rowSize == 0 ) 
	        {
		        classname = "row-end";
	        }
		    			    
	        insertItem ( item , item.Title , classname , i );
		    
		    
		    
	       
	        updatePaging ();
	 

          
	    }
	    
    }
    
    
    function applyTooltips ( )
    {
        $("#sound-gallery a").tooltip({
		        track: true,
		        delay: 0,
		        showURL: false,
				extraClass: "tooltip-gallery",
		        opacity: 1,			
				top: -93,
		        left: -30
	        });
    }
    
    function insertItem ( mediaDetails , imageTitle , className , index) 
    {

        $ ( "<li/>")
            .append ( $ ( "<strong/>").html ( stripslashes(imageTitle) ) )
            //.append ( $ ( "<span/>").attr ( "class", "size" ).html ( '' ) )
            .append ( $ ( "<span/>").attr ( "class", "btn btn-playsound")
                .append ( $ ( "<a/>" )
                    .attr ( "title" , "Play" )
                    .attr("id", $.fn.soundGallery.defaults.thumbImagePrefix + index)
                    .attr ( "href", "javascript:;" )
                    .bind("click", thumbImage_click) ) )
            .append ( $ ( "<span/>" ).attr ( "class", "btn btn-downloadsound")
                .append ( $ ( "<a/>" ).attr ( "title" , "Download" ).attr ( "href", $.fn.soundGallery.defaults.downloadPath + mediaDetails.FileLocation ) ) )
                        
            .appendTo ( "#sound-gallery" );
        
    }
    
    
    function pagingControl_click(element)
    {
        selectedIndex = parseInt(element.target.id) * $.fn.soundGallery.defaults.pageSize;
        renderGallery(element.target.id);
    }
    
    function thumbImage_click(element)
    {

        var mediaIndex = element.target.id.substring($.fn.soundGallery.defaults.thumbImagePrefix.length);        
        displayMediaDetails(mediaIndex)
    }      
    
    function displayMediaDetails ( mediaIndex )
    {
        // loads the sound
        if ( mediaIndex < $.fn.soundGallery.defaults.jsonFile.length )
        {

			var mediaItem = $.fn.soundGallery.defaults.jsonFile[mediaIndex]; 
	        showMedia ( mediaItem );

			updatePaging();
		}
    }
    
    function showMedia ( mediaItem )
    {
		$ ( '#sound-title').html ( mediaItem.Title );
		$ ( '#sound-summary').html ( mediaItem.Summary );
        
       
		var so = new SWFObject($.fn.soundGallery.defaults.soundWidget, "bgFlash", "326", "99", "7", "#ffffff");
		so.addVariable("base_url", "/");
		so.addVariable("audio_path", $.fn.soundGallery.defaults.soundPath + mediaItem.FileLocation);	
		so.addParam("wmode","transparent");
		
		so.write($.fn.soundGallery.defaults.soundPane);
            
    }
    
    function updatePaging()    
    {
        $('#' + $.fn.soundGallery.defaults.paging).empty();
        var first = true;         
        var currentPage =  Math.floor(selectedIndex / $.fn.soundGallery.defaults.pageSize);   
        // render the paging
        for ( page=0; page < ($.fn.soundGallery.defaults.jsonFile.length / $.fn.soundGallery.defaults.pageSize); page++)
        {          
            var classname='';
            if(first)
            {
                classname='first';
                first=false;
            }
            // if current page, add strong tags and no click event
            if(currentPage==page)
            {
                $("<li> <strong>" + parseInt(page+1) + "</strong> </li>").addClass(classname).appendTo('#' + $.fn.soundGallery.defaults.paging).attr("id", page); 
            }
            else
            {
                $("<a/>").html(parseInt(page+1)).bind("click", pagingControl_click).appendTo('#' + $.fn.soundGallery.defaults.paging).attr("id", page).wrap("<li class='" + classname + "'></li>");            
            }
        }
    }
    
    function getMediaUrlThumb(imageFileName)
    {
        return $.fn.soundGallery.defaults.imageUrl + imageFileName;
    }
    
    
    // end private methods
    
    var selectedIndex = 0;    
    
    $.fn.soundGallery.createGallery = function(loadFirst)
    { 
        renderGallery(0);
        if ( loadFirst ) displayMediaDetails ( 0 );
    }    
    
    
    $.fn.soundGallery.showMedia = function ( mediaItem )
    {
		showMedia ( mediaItem );
    }
    
    
    $.fn.soundGallery.defaults = {
        // the JSON file containing all the images
        jsonFile: '',    
        // how many to display of a page
        pageSize: 6,
        // number of rows in a page
        rows: 1,
        // page to start on
        page: 1,
        // the id of the element to contain the media count information
        mediaCount: 'mediaCount',
        // the id of the element to contain the paging information
        paging: 'galleryPaging',
        // the url to where images are kept in
        imageUrl: '/apra/downloads/uploaded/awardsgallerysound/',
        //  not used for the actual image only to get the id
        thumbImagePrefix: 'soundThumb',
        soundWidget:'',
        soundPath:'',
        downloadPath:'',
        soundPane:'sound-holder'
    }; 	  
    

})(jQuery);



