﻿//global variables
var photoDescriptions= {}
var flickrPhotos = false;
var flickrPages = 0;
var photoCount = 0;
var photoTotal = 0;

$(document).ready(
	function() {//top level function
		
		//triggers the initial flickr call
		getGroupInfo('1');
		
	}//close top level function
);


var settings = {
	api_key: 'faa10d794c1e268ded0a298951230e77',
	thumb_size: 'm',
	callback: '?',
	group_id: '674942@N25', // 727479@N23
	per_page: '12'
}

var page = '1';
var type = 'groupCall'; // can be groupCall or getInfo
var id = '';// individual photo ID

function printFlickrPhotos() {
	$('#gallery').removeClass("loading");
	var theText = "\n<ul>\n";
	for (var i=0; i<flickrPhotos.length; i++){//open for loop
		var photo = flickrPhotos[i];
		var description = (photoDescriptions[photo.id]).replace(/"/g, "'");
		
		var t = "http://farm"+photo['farm']+".static.flickr.com/"+photo['server']+"/"+photo['id']+"_"+photo['secret']+"_t.jpg";
		var h = "http://farm"+photo['farm']+".static.flickr.com/"+photo['server']+"/"+photo['id']+"_" +photo['secret']+".jpg";
		//console.log(description);
		theText += '<li><a href="' + h + '" title="' + description + '" class="lightbox"><img src="' + t + '"/></a></li>';

		theText += "\n";
		//html = ['<a href="',href,'" title="',title,'">',caption,'</a>'].join('');

	}// close for loop
	
	theText += "</ul>\n";
	
	$('#gallery').html(theText);
	
	//testImage();

}

	
function testImage() {
	$('#gallery img').each(
		function(x) {
			var i_width = $(this).width();
			var i_height = $(this).height();
			if (i_width > i_height) {
				var i_margin = Math.floor((100 - i_height)/2);
				$(this).css("marginTop",i_margin);
				//$(this).addClass("horizontal");
			}
		}// close function x
	);//close each
} //close testImage

function formatTheCall(settings, type, page, id) {
		//if (s.url) return s.url;
		//if (!s.callback) s.callback = '?';
		var url = 'http://api.flickr.com/services/rest/?format=json&jsoncallback='+settings.callback+'&api_key='+settings.api_key;
		switch (type){
			case 'groupCall':
				url += '&method=flickr.groups.pools.getPhotos&group_id=' + settings.group_id;
				break;
			
			case 'descriptionCall':
				url += '&method=flickr.photos.getInfo&photo_id='+id;
				break;
				
			default:
				url += '&method=flickr.photos.getRecent';
		}
		
		if (settings.per_page) url += '&per_page=' + settings.per_page;
		if (page) url += '&page=' + page;

		return url;
		
}//close formatTheCall

function getGroupInfo(page) {

	var url = formatTheCall(settings, 'groupCall', page);

	$.getJSON(url, function(r){// this line makes the request
		if (r.stat != "ok"){//bad response
			for (i in r){
				$('<li>').text(i+': '+i[r]).appendTo(list);
				list.append('<li>'+i+': '+i[r]+'</li>');
			}
		} else {//good response
				photoTotal = r.photos.photo.length;
				flickrPhotos = r.photos.photo;
				flickrPages = r.photos.pages;
				for (var i=0; i<r.photos.photo.length; i++){//open for loop
					var photo = r.photos.photo[i];
					getDescription(photo['id']); 
				}
		writePageNumbers(page);
		}// close good response else

	}); //close the request
}// close getGroupInfo

function getDescription(id) {
	var url = formatTheCall(settings, 'descriptionCall', page, id);
	$.getJSON(url, function(j){
			photoCount +=1;
			if (j.stat != "ok") {
				alert (j.stat);
			} else {
				d = j.photo.description["_content"];
				photoDescriptions[j.photo.id] = d;
				//alert(photoCount);
			}
			if (photoCount == photoTotal) {
				printFlickrPhotos();
				photoCount = 0;
			}
				$('a.lightbox').lightBox(); // Select all links with lightbox class
				return d;
		});//end second request
	}//close getDesc

function writePageNumbers(page){
	/*alert(flickrPages);*/
	var pageCount = '';
	var theClass = 'normal';
	
	for (var c=1; c<=flickrPages; c++) {
		if (c == page) {
			theClass = "active";
		} else {
			theClass="normal";
		}
		
		pageCount += '<a class="'+ theClass +'" href="#" id="'+c+'">'+ c +'</a>';
	}
	$('#counter').html(pageCount);
	
	$('#counter a').click(
	function(){
		$('#gallery').html("<p>loading</p>");
		$('#gallery').addClass("loading");
		var page = $(this).attr('id');
		getGroupInfo(page);
		return false;
	}
);

}

