/* THFH Carousel
 * Author: Joseph Zachary
 * */

var Carousel = Class.extend({
	init: function(){
		jQuery('#mycarousel').jcarousel({
			visible: 6,
			itemLoadCallback: this.carousel_item_callback
		});
	},
	carousel_item_callback: function(carousel, state){
		if (carousel.prevFirst != null) {
			for (var i = carousel.prevFirst; i <= carousel.prevLast; i++) {
				carousel.remove(i);
			}
		}

		var per_page = carousel.last - carousel.first + 1;
		var currPage = 0;
		var f,l;
		var cr = carousel;

		for (var i = carousel.first; i <= carousel.last; i++) {
			var page = Math.ceil(i / per_page);

			if (currPage != page) {
				currPage = page;

				f = ((page - 1) * per_page) + 1;
				l = f + per_page - 1;

				f = f < carousel.first ? carousel.first : f;
				l = l > carousel.last ? carousel.last : l;

				if (carousel.has(f, l)) {
					continue;
				}
				Carousel.prototype.image_request(carousel, f, l, per_page, page);
			}
		}
	}
});

Carousel.prototype.image_request = function(carousel, first, last, per_page, page)
{
    carousel.lock();

    jQuery.get('index.cfm', {
			'event': 'flickrAPI',
			'format': 'json',
			'method': 'flickr.people.getPublicPhotos',
			'user_id': '36651168@N07',
            'per_page': per_page,
            'page': page,
			'nojsoncallback': '1'
        },
        function(data) {
			Carousel.prototype.image_request_callback(carousel, first, last, data, page);
        }
    );
};

Carousel.prototype.build_image_html = function(photo)
{
    var jq_photo = jQuery(photo);
	var url = 'http://farm'+jq_photo.attr('farm')+'.static.flickr.com/'+jq_photo.attr('server')+'/'+jq_photo.attr('id')+'_'+jq_photo.attr('secret')+'_s.jpg';
    return '<a href="http://farm'+jq_photo.attr('farm')+'.static.flickr.com/'+jq_photo.attr('server')+'/'+jq_photo.attr('id')+'_'+jq_photo.attr('secret')+'.jpg" title="'+jq_photo.attr('title')+'" target="_blank"><img src="' + url + '" border="0" width="75" height="75" alt="'+jq_photo.attr('title')+'" /></a>';
};

Carousel.prototype.image_request_callback = function(carousel, first, last, data, page)
{
	var data = JSON.parse(data);

	carousel.unlock();
    
	carousel.size(data.photos.total);
    
	var photos = data.photos.photo;

    var per_page = carousel.last - carousel.first + 1;
	
	for (var i = first; i <= last; i++) {
        var pos = i - 1;
        var idx = Math.round(((pos / per_page) - Math.floor(pos / per_page)) * per_page);
	    
		var item = jQuery(Carousel.prototype.build_image_html(photos[idx])).get(0);
		
		tb_init(item);

        carousel.add(i, item);
    }
};

jQuery(document).ready(function() {
	tb_pathToImage = "lib/functions/images/loading-thickbox.gif";
	var THFH_carousel = new Carousel();
});

