jQuery.fn.extend({

	/* -------------------------------------------------------------------------
	 * FLICKR API
	 */
	flickrFeed: function( options ) {
		// --------
		// settings
		//
		this.settings = {
			apikey: 'c788d41b14a9d7a8928968bed84bde78',
			userid: '30416689@N06',
			tags: '',
			viewportHeight: null,
			complete: null
		}
		if(options) {
			jQuery.extend(this.settings, options);
		}

		// set viewer height
		if( this.settings.scrollable ) {
			var darkboxHeight = jQuery("#darkbox .scrollpane").height();
			this.settings.viewportHeight = darkboxHeight - 95;
			jQuery(".flickr-viewer").css("height", this.settings.viewportHeight + 'px');
			jQuery(".flickr-description").css("top", (this.settings.viewportHeight + 77) + 'px');
		}
		
		var elmt = this;
		var settings = this.settings;
		
		var apiEndPoint = 'http://api.flickr.com/services/rest/';
		var query = 'method=flickr.photos.search&api_key='+this.settings.apikey+
			'&user_id='+this.settings.userid+
			'&extras=description,icon_server,tags,url_sq,url_t,url_s,url_m,url_z'+
			'&tags='+this.settings.tags+
			'&format=json&jsoncallback=flickrfeedjsonp';
			
		// ajax
		jQuery.ajax({
			url: apiEndPoint,
			data: query,
			dataType: 'jsonp',
			type: 'GET',
			jsonpCallback: 'flickrfeedjsonp',
			success: function( data, textStatus, jqXHR ) {
				var icnt = 0;
				var buf = '';
				
				for( var i = 0; i < data.photos.photo.length; i++ ) {
					var photo = data.photos.photo[i];
					
					if( settings.scrollable ) {
						if( i == 0 ) {
							// auto display first
							jQuery(".flickr-viewer").html(
								'<img src="'+photo.url_m+'" height="'+settings.viewportHeight+'" alt=""/>'
							);
							var descr = photo.description._content.replace( /\r?\n/, ' ' ).replace( /<a href="[^"]+"[^>]*>.*<[\/]a>/, '' );
							if( descr != null && descr != '' ) {
								jQuery(".flickr-description").html(descr).css("visibility", "visible");
							}
						}
						
						var descr = photo.description._content.replace( /\r?\n/, ' ' ).replace( /<a href="[^"]+"[^>]*>.*<[\/]a>/, '' );
						var t = '<a href="#" class="flickr-photo-view" title="'+descr+'"><img src="'+photo.url_sq+'" alt="" width="75" height="75"/></a>';
						buf = buf + t;
						icnt++;
						if( icnt == 7 ) {
							elmt.append( '<div>' + buf + '</div>' );
							buf = '';
							icnt = 0;
						}		
					}
					else {
						var dl = photo.description._content.replace( /\r?\n/, ' ' ).replace( /^.*<a href="([^"]+)" [^>]*>.*$/i, '$1' );
						var t = '<div style="float:left"><a href="'+dl+'"><img src="'+photo.url_sq+'" alt="" width="75" height="75"/></a></div>';
						elmt.append(t);
						elmt.append(photo.description._content.replace(/\n/, '<br/>'));
						elmt.append('<div class="clearleft"></div><br/>');
					}
				}
				
				if( buf != '' ) {
					elmt.append( '<div>' + buf + '</div>' );
				}
			},
			complete: function( jqXHR, textStatus ) {
				jQuery("a.flickr-photo-view").each(function() {
					jQuery(this).click(function() {
						var src = jQuery(this).find('img').attr("src");
						src = src.replace( /_s\.jpg$/, '_z.jpg' );
						jQuery(".flickr-viewer").html(
							'<img src="'+src+'" height="'+settings.viewportHeight+'" alt=""/>' );
						var title = jQuery(this).attr("title");
						if( title != null && title != '' ) {
							jQuery(".flickr-description").html(title).css("visibility", "visible");
						}
						else {
							jQuery(".flickr-description").css("visibility", "hidden");
						}
					});
				});
				if( settings.scrollable ) {
					elmt.parent().scrollable();
				}
				if( settings.complete != null ) {
					settings.complete();
				}
			}
		});
	}
	 
});

