/**
 * @id $Id: jquery.ppGallery.js 296 2010-10-08 13:07:18Z stefan.schult $
 */

(function($) {
	$.fn.ppGallery = function(options) {
		var defaults = {
			items: '>div.iContMod div.contMod',
			prefix: 'ppGallery-',
			select: $.noop,
			show: $.noop
			
		};
		if(typeof options == 'object'){
			$.extend(defaults,options);
		} else if(typeof options == 'string') {
			if(options == "reloadCss") {
				return this.each(function(i){
					var gb = $('div.pp-gallery-bar', this).clone();
					$('body').append(gb);
					var inner = $('div.pp-gallery-bar-inner', gb);
					inner.outerWidth();
					$('div.pp-gallery-bar-inner', this).css('marginLeft', '-' + (inner.outerWidth()/2) + 'px');
					gb.remove();
					var height = 0;
					$('.ui-tabs-panel', this).each(function(){
						if($(this).outerHeight() > height) {
							height = $(this).outerHeight();
						}
					});
					$('>.iContMod', this).css('height', (height + 4)+'px');
				});
			}
		}
		function clickButton($tabs, button, step){
			var next   = $tabs.tabs("option", "selected") + step;
			var length = $tabs.tabs("length")-1;
			if(next < 0){
				next = 0;
			}
			if(next > length){
				next = length;
			}
			$tabs.tabs("select", next);
		}

		function initTabList(container, items){
			var $tabs = $(container);
			var ul = $('<ul />');
			items.each(function(i){
				ul.append($('<li><a href="#' + this.id +'"><span>' + (i+1) + '/' + items.length + '</span></a></li>'));
			});
			var buttonBack = $('<a href="javascript:void(0);">zurück</a>').button({ text: false ,  icons: {primary:'pp-gallery-back'}}).click(function(){
				clickButton($tabs, this, -1);
				return false;
			});
			var buttonForward = $('<a href="javascript:void(0);">vor</a>').button({ text: false ,  icons: {primary:'pp-gallery-forward'}}).click(function(){
				clickButton($tabs, this, 1);
				return false;
			});
			var div = $('<div class="pp-gallery-bar" />');
			div.append(buttonBack).append(ul).append(buttonForward).wrapInner($('<div class="pp-gallery-bar-inner" />'));

			var lastItem = $('>div:last', container).after(div);
			$($tabs).tabs({
				fx: {opacity:'toggle', duration:100},
				idPrefix: 'ui-tabs-primary',
				show: function(event, ui){
					if(ui.index <= 0){
						$(buttonBack).button( "disable" );
					} else {
						$(buttonBack).button( "enable" );
					}
					if(ui.index >= $tabs.tabs("length")-1){
						$(buttonForward).button( "disable" );
					} else {
						$(buttonForward).button( "enable" );
					}
					defaults.show(event, ui);
				},
				select: function(event, ui) {
					defaults.select(event, ui);
				}

			});
			return $($tabs);
		}
		var $allLength = this.length;
		return this.each(function(i){
			var idPrefix = defaults.prefix + ((this.length == 1) ? '' : (i+1) + '-');
			var $this = initTabList($(this), $(defaults.items, this).ppUnifiedId(idPrefix));
//			reloadCss($this);
		});
	};

})(jQuery);

