/*
 * flickrAPI 1.0 - jQuery flickr plugin
 *
 * Copyright (c) 2011 Jourdan Laik (http://www.jourdanlaik.com)
 * Licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License
 * http://creativecommons.org/licenses/by-sa/3.0/
 *
 * Revision: $Id: jquery.flickrush.js 2010-02-17 $ 
 *
 */
var _fpi_curPage = 1;
var _fpi_availPages = 0;
var _fpi_totalPhotos = 0;
var defaults;

$(document).ready(function(){
	$('.flickr-next').click(function(){	NextFAPI();	});
	$('.flickr-previous').click(function(){	PrevFAPI();	});
	$('#flickr-set-picker').change(function() { setChange(); });
});

function getCollection(settings) {
	var curSet=0;
	var first_set=0;
	defaults = {
	//	api_key: 'ca5d06222d9dae402e6cf14bdffcef06',  //Test Account
	//	user_id: '45009503@N00',  //Test Account
	//dowcom account
		api_key: 'bb1a7489bb1fed6ca4fce1f999b574d0',
		user_id: '53801678@N02',
	//das Account
	//api_key: '5457ad5c9e85f13e1d08ad926d2d6e45',
	//user_id: '59322667@N05',
		collection_id: '',
		photoset_id: '',
		per_page: 8,
		page: 1
	};
	var settings=$.extend(defaults,settings);
	$.getJSON('http://api.flickr.com/services/rest/?&method=flickr.collections.getTree&api_key=' + defaults.api_key + '&user_id=' + defaults.user_id + '&collection_id=' + defaults.collection_id + '&media=photos&format=json&jsoncallback=?',
	function(data){
		$.each(data.collections.collection[0].set, function(i,item){
			if(curSet==0) {
				first_set = item.id.toString();
			}
			$('#flickr-set-picker').append($("<option></option>").attr("value",item.id).text(item.title));
			curSet+=1;
		});
		$('#flickr-images').flickrapi({photoset_id:first_set});
	});
}

(function($){
	$.fn.flickrapi=function(settings){ 		
		var settings=$.extend(defaults,settings);
		return this.each(function(settings){			
			var act=$(this);
			act.empty();	
			
			if(defaults.photoset_id=='') { defaults.method='flickr.people.getPublicPhotos'; }
			$.getJSON('http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key=' + defaults.api_key + '&user_id=' + defaults.user_id + '&photoset_id=' + defaults.photoset_id + '&media=photos&per_page='+defaults.per_page+'&page='+defaults.page+'&format=json&jsoncallback=?',
			function(data2){
				var curNum = 1;
				_fpi_totalPhotos = data2.photoset.total;
				_fpi_availPages = Math.ceil(_fpi_totalPhotos/defaults.per_page);
				$.each(data2.photoset.photo, function(i,item){
					var extra_info = {
						url_item: 'http://www.flickr.com/photos/' + defaults.user_id + '/' + item.id,
						url_lightbox: 'http://www.flickr.com/photos/' + defaults.user_id + '/' + item.id + '/lightbox/',
						url_s: getURL(item, '_s'),
						url_t: getURL(item, '_t'),
						url_m: getURL(item, ''),
						url_z: getURL(item, '_z'),
						url_b: getURL(item, '_b'),
						url_o: getURL(item, '_o'),
						description: '',
						views: 0,
						tags: {},
						dateuploaded: '',
						dateposted: '',
						datetaken: '',
						lastupdate: ''
					}
					var item=$.extend(extra_info,item);
					$.getJSON('http://api.flickr.com/services/rest/?&method=flickr.photos.getInfo&api_key=' + defaults.api_key + '&user_id=' + defaults.user_id + '&photo_id=' + item.id + '&media=photos&format=json&jsoncallback=?',
					function(data3){
						item.description = data3.photo.description._content;
						item.views = data3.photo.views;
						item.tags = data3.photo.tags;
						item.dateuploaded = data3.photo.dateuploaded;
						item.dateposted = data3.photo.posted;
						item.datetaken = data3.photo.taken;
						item.lastupdate = data3.photo.lastupdate
					});
					
					var newDiv_Style = 'background:url(' + item.url_s + ')';
					var newDiv = $("<div class='flickr-div' style='" + newDiv_Style + "'></div>");
					var selDiv = $("<div class='flickr-sel'></div>");
					newDiv.click(function(){ flickrClick(newDiv, item); });
					$(act).append(newDiv); 
					$(newDiv).append(selDiv);
					if(curNum==1) { flickrClick(newDiv, item); }
					curNum+=1;
				});
			});
		});
	}
})(jQuery);

function getURL(item, size) {
	return 'http://farm'+item.farm+'.static.flickr.com/'+item.server+'/'+item.id+'_'+item.secret+size+'.jpg';
}

function flickrClick(theDiv, item) {
	$('.flickr-sel').hide();
	$(theDiv).find('.flickr-sel').show();
	$('.flickr-img-viewer').fadeOut('fast',function(){
		$('.flickr-img-viewer').css('background','url(' + item.url_m + ')');
		$('.flickr-img-viewer').css('background-position','center center');
		
		$('.flickr-img-viewer').fadeIn('fast',function(){
			if(item.title=='') { item.title="No title"; }
			$('.flickr-title').html(item.title);
			var description = item.description.substring(item.description.indexOf('<\/a><\/p>'));
			description = description.replace(/&(lt|gt);/g, function (strMatch, p1){ return (p1 == "lt")? "<" : ">"});
			description = description.replace(/<\/?[^>]+(>|$)/g, "");
			if(description=='') { description="No description"; }
			$('.flickr-description').html(description);
			$('.flickr-download').click(function(){
				window.open(item.url_b,'flickr-download');
			});
		});
	});
}

function NextFAPI() {
	if(_fpi_curPage<_fpi_availPages) {
		_fpi_curPage+=1;
		$('.flickr-images').empty();
		$('#flickr-images').flickrapi({page:_fpi_curPage});
		$('.flickr-page-count').html(_fpi_curPage);
	}
}
function PrevFAPI() {
	if(_fpi_curPage>1) {
		_fpi_curPage-=1;
		$('.flickr-images').empty();
		$('#flickr-images').flickrapi({page:_fpi_curPage});
		$('.flickr-page-count').html(_fpi_curPage);
	}
}
function setChange() {
	_fpi_curPage = 1;
    _fpi_availPages = 0;
	_fpi_totalPhotos = 0;
	var set = $("select option:selected").val();
	$('.flickr-page-count').html(1);
	$('#flickr-images').flickrapi({photoset_id:set,page:_fpi_curPage});
}
