/*

	jQuery.bva_photohandler
	
	Boy van Amstel - Copyright 2009
	http://www.boyvanamstel.nl

*/

jQuery.bva_photohandler = 
{
	handler : null
	,
	handler_url : null
	,
	title : null
	,	
	highlighted : null
	,
	previews : null
	,
	next : null
	,
	previous : null
	,
	next_highlighted : null
	,
	previous_highlighted : null
	,
	Photo : function()
	{
		this.id = 0;
		this.thumbnail = null;
		this.medium = null;
		this.large = null;
		this.title = null;
	}
	,
	build : function(args)
	{			
		var obj = this;			

		var plugin = jQuery.bva_photohandler;

		var settings = {
			handler: null,
			current_page: 1,
			per_page: 10,
			title: ".title",
			highlighted: ".highlighted",
			previews: ".previews",
			next: ".next",
			previous: ".previous",
			next_highlighted: ".next_highlighted",
			previous_highlighted: ".previous_highlighted"
		};
		if(args) {
			jQuery.extend(settings, args);
		}
		
		plugin.handler = settings.handler;
		plugin.title = settings.title;
		plugin.highlighted = settings.highlighted;
		plugin.previews = settings.previews;
		plugin.next = settings.next;
		plugin.previous = settings.previous;
		plugin.next_highlighted = settings.next_highlighted;
		plugin.previous_highlighted = settings.previous_highlighted;
		
		
		obj.attr("api_url", plugin.handler.getUrl());
		obj.attr("image_size", plugin.handler.getImageSize());
		obj.attr("current_page", settings.current_page);
		obj.attr("current_image", 0);
		obj.attr("per_page", settings.per_page);
		obj.attr("total", 0);
						 
		if(plugin.handler != null)
		{
			plugin.handler.getPreviews(obj, obj.attr("api_url"), obj.attr("current_page"), obj.attr("per_page"));
		}	
		
		return this;
	}
	,
	onGetPreviews : function(obj, args)
	{			
		if(args.photos != null)
		{
			jQuery(obj).attr("total_pages", args.total_pages);
			
			// Viewer instellen
			jQuery(jQuery.bva_photohandler.highlighted, obj).html("").append('<img src="' + args.photos[0][obj.attr("image_size")] + '" alt="" title="" />');
			jQuery(jQuery.bva_photohandler.title, obj).html("").append('<h1>' + args.photos[0].title + '</h1>');
			obj.attr("current_image", 0);
			
			// Volgendeknop instellen
			jQuery(jQuery.bva_photohandler.next_highlighted, obj).unbind("click").click(function()
			{
				if(parseInt(obj.attr("current_image")) < args.photos.length -1)
				{
					var current_page = parseInt(obj.attr("current_image"));
					obj.attr("current_image", current_page+1);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("src", jQuery(jQuery.bva_photohandler.previews, obj).find("a")[current_page+1]['href']);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("alt", jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page+1]['alt']);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("title", jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page+1]['title']);
					jQuery(jQuery.bva_photohandler.title, obj).html("").append('<h1>' + jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page+1]['title'] + '</h1>');
				}
				return false;
			});
			
			// Vorigeknop instellen
			jQuery(jQuery.bva_photohandler.previous_highlighted, obj).unbind("click").click(function()
			{
				if(obj.attr("current_image") > 0)
				{
					var current_page = parseInt(obj.attr("current_image"));
					obj.attr("current_image", current_page-1);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("src", jQuery(jQuery.bva_photohandler.previews, obj).find("a")[current_page-1]['href']);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("alt", jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page-1]['alt']);
					jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("title", jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page-1]['title']);
					jQuery(jQuery.bva_photohandler.title, obj).html("").append('<h1>' + jQuery(jQuery.bva_photohandler.previews, obj).find("img")[current_page-1]['title'] + '</h1>');
				}
				return false;
			});	

			
			// Previews instellen				
			jQuery(jQuery.bva_photohandler.previews, obj).html("");
			for(var i = 0; i < args.photos.length; i++)
			{
				jQuery(jQuery.bva_photohandler.previews, obj).append(
					'<a href="' + args.photos[i][obj.attr("image_size")] + '" target="_blank">' +
					'<img src="' + args.photos[i].thumbnail + '" alt="' + args.photos[i].title + '" title="' + args.photos[i].title + '" />' +
					'</a>'
				);				
			}
			jQuery(jQuery.bva_photohandler.previews, obj).find("a").unbind("click").click(function()
			{
				var index = jQuery(jQuery.bva_photohandler.previews, obj).find("a").index(this);
				obj.attr("current_image", index);
				jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("src", jQuery(this).attr("href"));
				jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("alt", jQuery(this).find("img").attr("alt"));
				jQuery(jQuery.bva_photohandler.highlighted, obj).find("img").attr("title", jQuery(this).find("img").attr("title"));				
				jQuery(jQuery.bva_photohandler.title, obj).html("").append('<h1>' + jQuery(this).find("img").attr("title") + '</h1>');
				return false;
			});
			
			// Volgendeknop instellen
			jQuery(jQuery.bva_photohandler.next, obj).unbind("click").click(function()
			{
				if(parseInt(obj.attr("current_page")) < parseInt(obj.attr("total_pages")))
				{
					var current_page = parseInt(obj.attr("current_page"));
					obj.attr("current_page", current_page+1);
					jQuery.bva_photohandler.handler.getPreviews(obj, obj.attr("api_url"), obj.attr("current_page"), obj.attr("per_page"));
				}
				return false;
			});
			
			// Vorigeknop instellen
			jQuery(jQuery.bva_photohandler.previous, obj).unbind("click").click(function()
			{
				if(obj.attr("current_page") > 1)
				{
					var current_page = parseInt(obj.attr("current_page"));
					obj.attr("current_page", current_page-1);
					jQuery.bva_photohandler.handler.getPreviews(obj, obj.attr("api_url"), obj.attr("current_page"), obj.attr("per_page"));
				}
				return false;
			});			
		}		
	}
};

jQuery.fn.extend
({
	bva_photohandler : jQuery.bva_photohandler.build
});
