/*
 *
 *  flickr-extension for jquery-based websites...
 *
 *  developed by andreas berghaus
 *  http://www.andreasberghaus.de
 *
 *	last changes: 08.06.2008
 *  version 2.0
 */

var flickr_api_key = 'f28804be7a09c5845676349c7e47d636';


function galerie(setid, target, limit) {
	
	this.apikey  = flickr_api_key;         // your flickr api-key
	this.limit   = limit > 0 ? limit : 5;
	
	this.start   = 0;
	
	this.setid   = setid;
	this.target  = document.getElementById(target);
	
	this.create  = galerieCreate;
	this.load    = galerieLoadSet;
	this.show    = galerieShow;
	
	// copy object tot target
	this.target.galerie = this;
	
	this.load();
}

function galerieLoadSet() {
	// declare image-container
	flickrResponseIndex[this.setid] = this;
	
	// flickr-URL
	var url = 'http://api.flickr.com/services/rest/?format=json&method=flickr.photosets.getPhotos&api_key=' + this.apikey + '&photoset_id=' + this.setid + '&jsoncallback=galerieFlickrDataHandler';
	
	// create flickr-script
	var script  = document.createElement('script');
	script.id   = 'flickr' + this.setid;
	script.type = 'text/javascript';
	script.src  = url;
	
	// append flickr-script
	document.getElementsByTagName('head')[0].appendChild(script);
}

function galerieShow(start) {
	while(this.target.childNodes.length > 0)
		this.target.removeChild(this.target.firstChild);
	
	this.start = start;
	this.create();
}

function galerieCreate() {
	// slice flickr-data
	var images = this.flickr.photo.slice(this.start, (this.start + this.limit));
	
	// if there are too many pictures to fit the screen -> append navigation
	if(0 < this.start) {
		var nextBlock = document.createElement('div');
		nextBlock.className = 'foto';
		nextBlock.onmouseover = new Function('$(this).fadeTo(\'normal\', 1.0);');
		nextBlock.onmouseout  = new Function('$(this).fadeTo(\'fast\', 0.5);');
		
		var tmpImg = document.createElement('img');
		tmpImg.src = './grafiken/linksGross.gif';
		tmpImg.onclick = new Function('this.parentNode.parentNode.galerie.show(' + (this.start - this.limit >= 0 ? this.start - this.limit : 0) + ');');
		
		nextBlock.appendChild(tmpImg);
		this.target.appendChild(nextBlock);
	}
	
	
	for(var x in images) {
		// create image-URL
		var src = 'http://farm' +  images[x].farm + '.static.flickr.com/' + images[x].server + '/' + images[x].id + '_' + images[x].secret;
		
		var tmpContainer = document.createElement('div');
		tmpContainer.className   = 'foto';
		tmpContainer.id          = 'FlickrImage' + images[x].id;
		tmpContainer.onmouseover = new Function('$(this).fadeTo(\'normal\', 1.0);');
		tmpContainer.onmouseout  = new Function('$(this).fadeTo(\'fast\', 0.5);');
		
		var tmpHlink       = document.createElement('a');
		tmpHlink.className = 'Flickr' + this.target.id;
		tmpHlink.rel       = this.flickr.id;
		tmpHlink.href      = src + '.jpg';
		
		var tmpImg = document.createElement('img');
		tmpImg.src = src + '_s.jpg';
		
		tmpHlink.appendChild(tmpImg);
		tmpContainer.appendChild(tmpHlink);
		
		// append image
		this.target.appendChild(tmpContainer);
	}
	
	// if there are too many pictures to fit the screen -> append navigation
	if(this.flickr.photo.length > this.start + this.limit) {
		var nextBlock = document.createElement('div');
		nextBlock.className = 'foto';
		nextBlock.onmouseover = new Function('$(this).fadeTo(\'normal\', 1.0);');
		nextBlock.onmouseout  = new Function('$(this).fadeTo(\'fast\', 0.5);');
		
		var tmpImg = document.createElement('img');
		tmpImg.src = './grafiken/rechtsGross.gif';
		tmpImg.onclick = new Function('this.parentNode.parentNode.galerie.show(' + (this.start + this.limit) + ');');
		
		nextBlock.appendChild(tmpImg);
		this.target.appendChild(nextBlock);
	}
	
	$('#'+this.target.id).fadeIn();
	
	// initialze thickbox
	$('a.Flickr'+this.target.id).click(function() {
		var t = this.title || this.name || null;
		var a = this.href || this.alt;
		var g = this.rel || false;
		tb_show(t,a,g);
		this.blur();
		return false;
	});
}

var flickrResponseIndex = new Array();

function galerieFlickrDataHandler(data) {
	flickrResponseIndex[data.photoset.id].flickr = data.photoset;
	flickrResponseIndex[data.photoset.id].create();
}

