var flickrKey = 'bb15f0686a6ee0f73865e854366a92c0';
var flickrSecret = 'bd369c18494f3980';

var brainbitsFlickrGallery = {
	/* save the last photo displayed */
	lastphoto: "",

	/* save the last photoset displayed */
	lastphotoset: "",

	/* photosets cache */
	photosets: [],

	/* photos cache */
	photos: [],

	/* load photo stream into photos list and populate photostream thumbnail */
	photosLoadFromPublicPhotos: function(userID){
		jQuery('#brainbits-flickrgallery-photoset-'+brainbitsFlickrGallery.lastphotoset).removeClass('selected');
		jQuery('#brainbits-flickrgallery-publicphotos img').addClass('selected');

		var req = "http://api.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&format=json&api_key="+flickrKey+"&user_id="+userID+"&extras=description&jsoncallback=?";
		var photoDisplayFired = 0;
		jQuery.getJSON(req, function(data){
			if (data.stat == "ok"){
				jQuery('#brainbits-flickrgallery-photos ul').html("");
				jQuery('#brainbits-flickrgallery-photos h3').html("Photo Stream");
				jQuery.each(data.photos.photo, function(i, photo){
				
					if (i == 0){
						jQuery('#brainbits-flickrgallery-publicphotos img').attr('src', 'http://farm'+photo.farm+'.static.flickr.com/'+photo.server+'/'+photo.id+'_'+photo.secret+'_s.jpg');
					}
				
					brainbitsFlickrGallery.photos[i] = photo;
					var img = new Image();
					jQuery('#brainbits-flickrgallery-photos ul').append(img);
					jQuery(img).wrap('<li />');
					jQuery(img).attr('src', 'http://farm'+photo.farm+'.static.flickr.com/'+photo.server+'/'+photo.id+'_'+photo.secret+'_s.jpg');
					jQuery(img).attr('id', 'brainbits-flickrgallery-photo-'+i);
					jQuery(img).attr('title', photo.title._content);
					jQuery(img).attr('alt', photo.title._content);
	/* doesn't work in ie7
					jQuery(img).hide();
					jQuery(img).load(function(){
						jQuery(img).fadeIn();
					});
	*/
					if (!photoDisplayFired){
						brainbitsFlickrGallery.photoDisplay(i);
						photoDisplayFired = 1;
					}
				});
			}
		});
	},

	/* load photo sets into photosets list */
	photoSetsLoad: function(userID){
		var req = "http://api.flickr.com/services/rest/?method=flickr.photosets.getList&format=json&api_key="+flickrKey+"&user_id="+userID+"&jsoncallback=?";
		var photosLoadFired = 0;
		jQuery.getJSON(req, function(data){
			if (data.stat == "ok"){
				//jQuery('#brainbits-flickrgallery-photosets ul').html('');
				jQuery.each(data.photosets.photoset, function(i, photoset){
					brainbitsFlickrGallery.photosets[i] = photoset;

					var img = new Image();
					jQuery('#brainbits-flickrgallery-photosets ul').append(jQuery(img));
					jQuery(img).wrap('<li />');
					jQuery(img).attr('src', 'http://farm'+photoset.farm+'.static.flickr.com/'+photoset.server+'/'+photoset.primary+'_'+photoset.secret+'_s.jpg');
					jQuery(img).attr('id', 'brainbits-flickrgallery-photoset-'+i);
					jQuery(img).addClass('brainbits-flickrgallery-photoset');
					jQuery(img).attr('title', photoset.title._content);
					jQuery(img).attr('alt', photoset.title._content);
	/* doesn't work in ie7
					jQuery(img).hide();
					jQuery(img).load(function(){
						jQuery(img).fadeIn();
					});
	*/	
	/*				if (!photosLoadFired){
						brainbitsFlickrGallery.photosLoadFromPhotoSet(i);
						photosLoadFired = 1;
					}
	*/			});
				jQuery('#brainbits-flickrgallery-photosets ul').fadeIn('fast');
			}
		});
	},

	/* load photos into photos list */
	photosLoadFromPhotoSet: function(photoSetID){
		/* present selected photo with 1 opacity */
		jQuery('#brainbits-flickrgallery-publicphotos img').removeClass('selected');
		jQuery('#brainbits-flickrgallery-photoset-'+brainbitsFlickrGallery.lastphotoset).removeClass('selected');
		jQuery('#brainbits-flickrgallery-photoset-'+photoSetID).addClass('selected');
		brainbitsFlickrGallery.lastphotoset = photoSetID;

		photoset = brainbitsFlickrGallery.photosets[photoSetID];
		var req = "http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&format=json&api_key="+flickrKey+"&photoset_id="+photoset.id+"&extras=description&jsoncallback=?";
		var photoDisplayFired = 0;
		jQuery.getJSON(req, function(data){
			if (data.stat == "ok"){
				jQuery('#brainbits-flickrgallery-photos ul').html("");
				jQuery('#brainbits-flickrgallery-photos h3').html(brainbitsFlickrGallery.photosets[photoSetID].title._content);
				brainbitsFlickrGallery.photos = [];
				jQuery.each(data.photoset.photo, function(i, photo){
					brainbitsFlickrGallery.photos[i] = photo;
					var img = new Image();
					jQuery('#brainbits-flickrgallery-photos ul').append(img);
					jQuery(img).wrap('<li />');
					jQuery(img).attr('src', 'http://farm'+photo.farm+'.static.flickr.com/'+photo.server+'/'+photo.id+'_'+photo.secret+'_s.jpg');
					jQuery(img).attr('id', 'brainbits-flickrgallery-photo-'+i);
					jQuery(img).attr('title', photoset.title._content);
					jQuery(img).attr('alt', photoset.title._content);
	/* doesn't work in ie7
					jQuery(img).hide();
					jQuery(img).load(function(){
						jQuery(img).fadeIn();
					});
	*/
					if (!photoDisplayFired){
						brainbitsFlickrGallery.photoDisplay(i);
						photoDisplayFired = 1;
					}
				});
			}
		});
	},

	/* display photo in main photo display */
	photoDisplay: function(photoID){
		var photo = brainbitsFlickrGallery.photos[photoID];
		jQuery('#brainbits-flickrgallery-description p').hide().html(photo.description._content).fadeIn('fast');
		jQuery('#brainbits-flickrgallery-display img').css('opacity', 0);
		jQuery('#brainbits-flickrgallery-display img').attr('src', 'http://farm'+photo.farm+'.static.flickr.com/'+photo.server+'/'+photo.id+'_'+photo.secret+'.jpg');
		jQuery('#brainbits-flickrgallery-display img').attr('id', 'display-'+photoID);
		jQuery('#brainbits-flickrgallery-display img').attr('title', photo.title._content);
		jQuery('#brainbits-flickrgallery-display img').attr('alt', photo.title._content);
		/* present selected photo with 1 opacity */
		jQuery('#brainbits-flickrgallery-photo-'+brainbitsFlickrGallery.lastphoto).removeClass('selected');
		jQuery('#brainbits-flickrgallery-photo-'+photoID).addClass('selected');
		brainbitsFlickrGallery.lastphoto = photoID;

		/* animated slider */
		var imagesize = jQuery('#brainbits-flickrgallery-photos img').outerWidth(true);
		var contentwidth = jQuery('#brainbits-flickrgallery-photos').find('img').length * imagesize;
		var viewportwidth = jQuery('#brainbits-flickrgallery-photos').width();
		var scroll = parseInt(jQuery('#brainbits-flickrgallery-photos ul').css('left'));
		var clickedpos = jQuery('#brainbits-flickrgallery-photo-'+photoID).position().left;
		var scrollto = Math.round(-(clickedpos - (viewportwidth / 2)));
		if (contentwidth > viewportwidth){
			jQuery('#brainbits-flickrgallery-photos ul').css('width', contentwidth);
		}
		if (contentwidth + scrollto < viewportwidth){
			scrollto = viewportwidth - contentwidth;
		}
		if (scrollto > 0){
			scrollto = 0;
		}
		jQuery('#brainbits-flickrgallery-photos ul').animate({'left': scrollto}, 500);


	}
}

jQuery(document).ready(function(){

	/* get the flickrid from the magic userid html attribute of the master ul */
	var flickrUserId = jQuery('#brainbits-flickrgallery').attr('userid');

	/* load photos from the user's public photoset */
	brainbitsFlickrGallery.photosLoadFromPublicPhotos(flickrUserId);

	/* load the user's photosets into the photoset thumbnails */
	brainbitsFlickrGallery.photoSetsLoad(flickrUserId);

	/* display the next photo in the set if the big display photo is clicked */
	jQuery('#brainbits-flickrgallery-display img').live('click', function(e){
		current = parseInt(e.target.id.slice(8));
		if (typeof(brainbitsFlickrGallery.photos[current+1]) != "undefined")
			brainbitsFlickrGallery.photoDisplay(current+1);
		else
			brainbitsFlickrGallery.photoDisplay(0);
	});
	jQuery('#brainbits-flickrgallery-display img').load(function(e){
		jQuery('#brainbits-flickrgallery-display img').animate({'opacity': 1}, 250);
	});
	
	/* load photos from a photoset if its thumbnail is clicked */
	jQuery('.brainbits-flickrgallery-photoset').live('click',function(e){
		/* animated slider */
		var imagesize = jQuery('#brainbits-flickrgallery-photosets img').outerWidth(true);
		var contentwidth = jQuery('#brainbits-flickrgallery-photosets').find('img').length * imagesize;
		var viewportwidth = jQuery('#brainbits-flickrgallery-photosets').width();
		var scroll = parseFloat(jQuery('#brainbits-flickrgallery-photosets ul').css('left'));
		var clickedpos = jQuery(e.target).position().left;
		var scrollto = Math.round(-(clickedpos - (viewportwidth / 2)));

		if (contentwidth > viewportwidth){
			jQuery('#brainbits-flickrgallery-photosets ul').css('width', contentwidth);
		}
		if (contentwidth + scrollto < viewportwidth){
			scrollto = viewportwidth - contentwidth;
		}
		if (scrollto > 0){
			scrollto = 0;
		}
		jQuery('#brainbits-flickrgallery-photosets ul').animate({'left': scrollto}, 500);

		/* reset the photos slider */
		jQuery('#brainbits-flickrgallery-photos ul').css('left', 0);

		brainbitsFlickrGallery.photosLoadFromPhotoSet(e.target.id.slice(33));
	});

	/* display the users public photostream if the photostream thumbnail is clicked */
	jQuery('#brainbits-flickrgallery-publicphotos img').live('click', function(e){
		brainbitsFlickrGallery.photosLoadFromPublicPhotos(flickrUserId);
	});

	/* display the photo in the loaded set that is clicked */
	jQuery('#brainbits-flickrgallery-photos img').live('click',function(e){
		brainbitsFlickrGallery.photoDisplay(e.target.id.slice(30));
	});
});
