

 function gReset(){
 	$('#gNav a').removeClass('onState');
	$('#gNav li').removeClass('liNavOn');
	 $("#gallery ul li").remove(); 
	 $('#loadingPic').remove();
     $('#loadingMsg').remove();
	 $('#gCounter').remove();
     $('#picHolder').fadeTo('normal', 0, function(){
       	$('#picHolder').remove();
	   });
     $('#picIframe').fadeTo('normal', 0, function(){
       	$('#picIframe').remove();
   		});
	 $('#gallery').append('<div id="loadingMsg"><span>Loading</span> <img id="loadingGallery" /></div>');
	 $('#loadingGallery').attr('src', '/music/images/jFlickr/loadingGallery.gif');
	 $('#picIframe').remove();
	 $('#picHolder').remove();
	 
 }
 
   function liteboxCallback(el){
		 jQuery(el).litebox();
        }
		
(function($) {
$.fn.flickr = function(o){
var s = {
    api_key: myKey,              // [string]    required, see http://www.flickr.com/services/api/misc.api_keys.html
    type: null,                 // [string]    allowed values: 'photoset', 'search', default: 'flickr.photos.getRecent'
    photoset_id: null,          // [string]    required, for type=='photoset'  
    text: null,			            // [string]    for type=='search' free text search
    user_id: null,              // [string]    for type=='search' search by user id
    group_id: null,             // [string]    for type=='search' search by group id
    tags: null,                 // [string]    for type=='search' comma separated list
    tag_mode: null,            // [string]    for type=='search' allowed values: 'any' (OR), 'all' (AND)
    sort: null,    // [string]    for type=='search' allowed values: 'date-posted-asc', 'date-posted-desc', 'date-taken-asc', 'date-taken-desc', 'interestingness-desc', 'interestingness-asc', 'relevance'
    thumb_size: 's',            // [string]    allowed values: 's' (75x75), 't' (100x?), 'm' (240x?)
    size: null,                 // [string]    allowed values: 'm' (240x?), 'b' (1024x?), 'o' (original), default: (500x?)
    per_page: 500,              // [integer]   allowed values: max of 500
    page: null,     	              // [integer]   see paging notes
    attr: '',                   // [string]    optional, attributes applied to thumbnail <a> tag
    api_url: null,              // [string]    optional, custom url that returns flickr JSON or JSON-P 'photos' or 'photoset'
    params: '',                 // [string]    optional, custom arguments, see http://www.flickr.com/services/api/flickr.photos.search.html
    api_callback: '?',          // [string]    optional, custom callback in flickr JSON-P response
    callback: null              // [function]  optional, callback function applied to entire <ul>


    // SIZE NOTES: photos must allow viewing original size for size 'o' to function, if not, default size is shown
  };
  if(o) $.extend(s, o);
  return this.each(function(){
    // create unordered list to contain flickr images
		var list = $('<ul>').appendTo(this);
    var url = $.flickr.format(s);
		$.getJSON(url, function(r){ 
      if (r.stat != "ok"){
	 	for (i in r){
	        $('<li>').text(i+': '+ r[i]).appendTo(list);	
        };
      } else {
        if (s.type == 'photoset') r.photos = r.photoset;
        // add hooks to access paging data
        list.append('<input type="hidden" value="'+r.photos.page+'" />');
        list.append('<input type="hidden" value="'+r.photos.pages+'" />');
        list.append('<input type="hidden" value="'+r.photos.perpage+'" />');
        list.append('<input type="hidden" value="'+r.photos.total+'" />');
		
        for (var i=0; i<r.photos.photo.length; i++){
          var photo = r.photos.photo[i];
          // format thumbnail url
          var t = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_'+photo['secret']+'_'+s.thumb_size+'.jpg';
          //format image url
          var h = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_';
		 
	 switch (s.size){
            case 'm':
              h += photo['secret'] + '_m.jpg';
              break;
            case 'b':
              h += photo['secret'] + '_b.jpg';
              break;
            case 'o':
              if (photo['originalsecret'] && photo['originalformat']) {
                h += photo['originalsecret'] + '_o.' + photo['originalformat'];
              } else {
                h += photo['secret'] + '_b.jpg';
              };
              break;
            default:
              h += photo['secret'] + '.jpg';
          };
          list.append('<li><a href="'+h+'" '+s.attr+' id='+photo['id']+' title="'+photo['title']+'"><img  src="'+t+'" alt="" /></a></li>');
		  $('#loadingMsg').remove();
		 
        };
        if (s.callback) s.callback(list);
			 $('#gallery').append('<div id="gCounter"></div>');
			$("#gallery li").quickpaginate({ perpage: perPage, pager : $("#gCounter") });
			$('#gallery ul').css('opacity', 0);
		 $('#gallery ul').fadeTo('normal', 1);
    	  };
	});		 
  });
};
// static function to format the flickr API url according to the plug-in settings 
$.flickr = {
    format: function(s){
        if (s.url) return s.url;
        var url = 'http://api.flickr.com/services/rest/?format=json&jsoncallback='+s.api_callback+'&api_key='+s.api_key;
        switch (s.type){
            case 'photoset':
                url += '&method=flickr.photosets.getPhotos&photoset_id=' + s.photoset_id;
                break;
            case 'search':
                url += '&method=flickr.photos.search&sort=' + s.sort;
                if (s.user_id) url += '&user_id=' + s.user_id;
                if (s.group_id) url += '&group_id=' + s.group_id;
                if (s.tags) url += '&tags=' + s.tags;
                if (s.tag_mode) url += '&tag_mode=' + s.tag_mode;
                if (s.text) url += '&text=' + s.text;
                break;
            default:
                url += '&method=flickr.photos.getRecent';
        };
        if (s.size == 'o') url += '&extras=original_format';
        url += '&per_page=' + s.per_page + '&page=' + s.page + s.params;
        return url;
	}
};
})(jQuery);

//lightBox callback function

(function($){
$.fn.litebox = function(o){
  
	// Replace the following line
// if (window.XMLHttpRequest && typeof document.doctype ==’object’&& !window.opera){ //ie6+, mozilla1.0+, safari1.2+, konquerer, icab3.0+
//with this Line (Some IE6 will not use XMLHttpRequest):
if (typeof document.doctype =='object'&& !window.opera){ //ie6+, mozilla1.0+, safari1.2+, konquerer, icab3.0+
        var s = {sw:1,sh:1,lh:32,lw:32,ld:10,a:false,loop:false,count:true,ad:3000,auto:'Slideshow', stop:'STOP',restart:'RESTART',of:'/',close:'Return To Thumbnail View',prev:'PREV',next:'NEXT',ap:'Previous',an:'Next', click:''};
	
        if(o){
            $.extend(s, o);
        }
        return this.each(function(){
            var g = $(this).find('a').click(function(){
                var i = $(g).index($(this)[0]);
                $.litebox.init(i, g, s);
                return false;
            });
        });
    }
};
$.litebox = {
    i: 0,
    g: [],
    s: {},
    t: 0,
    a: 0,
	
    init: function(i, g, s){
        this.i = i;
        this.g = g;
        this.s = s;
        $('div#gallery').append('<div id="picIframe"></div><div id="picHolder"><img id="loadingPic" /><img id="bigPic" /><div id="picControls"><a id="thumbsButton" href=""></a></div><div id="imageDetails"><div id="imageCount"><span></span><span></span><span></span></div><div id="imageTitle"></div><a id="details" href="">+ details</a><a id="hide" href="">- hide</a><div class="clear"></div></div><div id="imageDes"></div><a id="prevButton" href=""></a><a id="nextButton" href=""></a></div>');
      
   
        $('#loadingPic').attr('src', '/images/loadinganimation.gif');
		
        $('#bigPic').attr('alt', s.click).css({opacity:0});
        $('#imageCount')
        if(s.count){
          $('#imageCount span:eq(1)').html(s.of);
        }
        $('#slideshow').attr('title', 'slideshow').html(s.auto).bind('click', function(){
            $.litebox.auto();
            return false;
        });
        $('#thumbsButton').attr('title', 'thumbnails').html(s.close).bind('click', function(){
            $.litebox.remove();
            return false;
        });
        $('#prevButton').attr('title', s.ap).html(s.prev).bind('click', function(){
            $.litebox.moveprev();
            return false;
        });
        $('#nextButton').attr('title', s.an).html(s.next).bind('click', function(){
            $.litebox.movenext();
           return false;
        });
        $('#picIframe').fadeTo('normal', 0.7, function(){
            $('#picHolder').fadeTo('normal', 1);
        });
		$('#details').bind('click', function(){
            $.litebox.getDetails();
            return false;
        });
    	$('#hide').bind('click', function(){
            $.litebox.hideDetails();
            return false;
        });
       
   $.litebox.load(i, g);
    },
    load: function(i, g){
        var s = this.s;   
		var thisId=g[i].id;
       $.litebox.t = setTimeout("$('#loadingPic').css('display', 'block')", s.ld);
       $('#bigPic').css({display:'none',opacity:'0'}).attr('src', $(g[i]).attr('href'));
	
		
        $('#bigPic').bind('load', function(){
				
				 clearTimeout($.litebox.t);
				 $('#loadingPic').css('display', 'none');
				$('#imageTitle').html(g[i].title);
				$('#loadingPic').css('display', 'none');
			    $('#bigPic').css('display', 'none');
				var totWidth = parseInt($('#picHolder').width(), 10);
                 var totHeight = parseInt($('#picHolder').height(), 10);
                 var myWidth = parseInt($('#bigPic').width(), 10);
                 var myHeight = parseInt($('#bigPic').height(), 10);
                 var picX=(totWidth-myWidth)/2;
                 var picY=(totHeight-myHeight)/2;
				 var correctionF=25;
                 $('#bigPic').css({
                       top: picY - correctionF,
                       left: picX,
					   display:'block'
                   }).fadeTo(1000, 1);
                $('#imageDetails').css({
                      top: picY+myHeight+5-correctionF,
                   	  left: picX,
                   	  width:myWidth,
					  display:'block'
                    })
              $('#picControls').css({
                     top: picY-25-correctionF,
                     width:myWidth,
                     left: picX,
					 display:'block'
                  })
             $('#imageDes').css({
                      top: picY+myHeight+30-correctionF,
                   	 left: picX,
                   	 width:myWidth,
					 display:'block'
                  })
           
               if(s.count){
                    $('#imageCount span:eq(0)').html(i+1);
                    $('#imageCount span:eq(2)').html(g.length);
                }
                if (i > 0){
                    $('#prevButton').css('display', 'block');
				}else{
                    $('#prevButton').css('display', 'none');
                }
                if (i+1 < g.length){
                    $('#nextButton').css('display', 'block');
               }else{
                    $('#nextButton').css('display', 'none');
                }
				//$.litebox.t = setTimeout("$('#loadingPic').css('display', 'block')", s.ld);
			});
           
 	$.litebox.loadFirst(i, g, thisId);
   },
			//$.getJSON('http://api.flickr.com/services/rest/?format=json&jsoncallback=?&api_key=f28804be7a09c5845676349c7e47d636&method
//&photo_id='+$(g[i].title).attr('id')
 loadFirst: function(i,g, thisId) {
	 thisId=thisId;
			$.getJSON('http://api.flickr.com/services/rest/?format=json&jsoncallback=?&api_key='+myKey+'&method=flickr.photos.getInfo'+ '&photo_id='+thisId, function(info){
					var content = null;
					var content=info.photo.description._content;
						if(content.length > 0) {
						 $('#imageDes').css('visibility','hidden'); 
						$('#imageDes').html(content);
						}
					 });
				},
  moveprev: function(){
	    $('#picControls').css('display','none'); 
		$('#imageDetails').css('display','none'); 
	    $('#bigPic').css('opacity',0);
		$('#details').css('display','block'); 
		$('#hide').css('display','none');
	   $('#imageDes').css('display','none'); 
        $('#imageDes').css('visibility','hidden'); 
        if (this.i > 0){
            this.i -= 1;
            $.litebox.load(this.i, this.g);
        }
    },
    movenext: function(){
		$('#picControls').css('display','none'); 
		$('#imageDetails').css('display','none'); 
		$('#details').css('display','block'); 
		$('#hide').css('display','none');
		 $('#imageDes').css('display','none'); 
		$('#imageDes').css('visibility','hidden'); 
      	$('#bigPic').css('opacity',0);
        if (this.i+1 < this.g.length){
            this.i += 1;
            $.litebox.load(this.i, this.g);    
        }
    },
	getDetails: function(){
			$('#details').css('display','none'); 
			$('#hide').css('display','block');
			$('#imageDes').css('visibility','visible') ;				
		},
	hideDetails: function(){
			$('#hide').css('display','none'); 
			$('#details').css('display','block');
			$('#imageDes').css('visibility','hidden') 			
		},
	remove: function(){
        $.litebox.a = 0;
        $('#loadingPic').remove();
        $('#picHolder').fadeTo('normal', 0, function(){
            $('#picHolder').remove();
            $('#picIframe').fadeTo('normal', 0, function(){
                $('#picIframe').remove();
            });
        });
    }
};
})(jQuery);

//paginate function
			
jQuery.fn.quickpaginate = function( settings ) {

	settings = jQuery.extend({
    pager : null,
	showcounter : true,
	prev : "g_next",
	next : "g_prev",
	pagenumber : "g_pagenumber",
	totalnumber : "g_totalnumber",
	counter : "g_counter"

	}, settings);

	var cm;
	var total;
	var last = false;
	var first = true;
	var items = jQuery(this);
	var nextbut;
	var prevbut;
	
	var init = function()
	{
		items.show();
		total = items.size();
				
		if ( items.size() > settings.perpage )
		{
			items.filter(":gt("+(settings.perpage-1)+")").hide();
			cm = settings.perpage;
			setNav();
		}
	};
	
	var goNext = function()
	{
		 $('#gallery ul').css('opacity', 0);
		 $('#gallery ul').fadeTo('normal', 1);
		
		if ( !last )
		{
			var nm = cm + settings.perpage;
			items.hide();
			items.slice( cm, nm ).show();
			cm = nm;
			
			if ( cm >= total  )
			{
				last = true;
				nextbut.addClass("g_disabled");
			}
			
			if ( settings.showcounter ) settings.pager.find("."+settings.pagenumber).text(cm/settings.perpage);
			prevbut.removeClass("g_disabled");
			first = false;
		}
	};
	
	var goPrev = function()
	{ 
		 $('#gallery ul').css('opacity', 0);
		 $('#gallery ul').fadeTo('normal', 1);
		if ( !first )
		{
			var nm = cm-settings.perpage;
			items.hide();
			items.slice( (nm - settings.perpage), nm ).show();
			cm = nm;
			
			if ( cm == settings.perpage  )
			{
				first = true;
				prevbut.addClass("g_disabled");
			}
			
			if ( settings.showcounter ) settings.pager.find("."+settings.pagenumber).text(cm/settings.perpage);
			
			nextbut.removeClass("g_disabled");
			last = false;
		}
	};
	
	var setNav = function()
	{
		if ( settings.pager === null )
		{	
			settings.pager = jQuery('<div class="qc_pager"></div>');
			items.eq( items.size() -1 ).after(settings.pager);
		}
		
		var pagerNav = $('<a class="'+settings.prev+'" href="#">&laquo; Prev</a><a class="'+settings.next+'" href="#">Next &raquo;</a>');
		
		jQuery(settings.pager).append( pagerNav );
		
		if ( settings.showcounter )
		{
			var counter = '<span class="'+settings.counter+'"><span class="pageText">pg</span><span class="'+settings.pagenumber+'"></span> / <span class="'+settings.totalnumber+'"></span></span>';
			
			settings.pager.find("."+settings.prev).after( counter );
			settings.pager.find("."+settings.pagenumber).text( 1 );
			settings.pager.find("."+settings.totalnumber).text( Math.ceil(total / settings.perpage) );
		}

		nextbut = settings.pager.find("."+settings.next);
		prevbut = settings.pager.find("."+settings.prev);
		prevbut.addClass("g_disabled");
		nextbut.click(function(){
			goNext();
			return false;
		});
		
		prevbut.click(function(){
			goPrev();
			return false;
		});
		
	};
	
	init(); // run the function
};