acc = function() {
	return {
		
		onDocumentReady: function() {
			$('ul.accordeon').each(function() {
				var a = $(this);
				acc.prepareAccordeon(a);
				// acc.showPanel(acc.getFirstPanel(a));
			});
			
			$("a[rel^='prettyPhoto']").prettyPhoto();
			
			$('a').focus(function() { if (this.blur) this.blur(); });
		},
		
		prepareAccordeon: function(a) {
			// wrap h1 text with panel activation link 
			a.find('> li > h1').wrapInner('<a href="#"></a>');
			a.find('> li > h1 > a').click(acc.onHeaderClick);
			
			// initialize panels
			a.find('> li').each(acc.preparePanel);
			
			// ie7 bug
			a.find('> li > div.panel').css('overflow','hidden');
		},
		
		preparePanel: function() {
			// panel (li)
			var p = $(this);
			
			// panel body (first div)
			var pb = p.find('> div:first');
			
			// add classes
			pb.addClass('panel');
			pb.find('> div:first').addClass('info');
			pb.find('> ul:first').addClass('contents');
			
			// create header
			var hdr = $('<div class="header"><ul class="buttons"><li><a href="#" class="btn_info">Info</a></li><li><a href="#" class="btn_zoom last">Zoom</a></li></ul><ul class="navigation"></ul></div>');
			hdr.find('ul.buttons a.btn_info').click(acc.onInfoClick);
			
			if (pb.find('> div.info').length == 0) {
				hdr.find('a.btn_info').hide();
			}
			
			// create tab navigation
			var nav = hdr.find('ul.navigation');
			pb.find('ul.contents > li').each(function(i) {
				nav.append('<li><a href="#">' + (i + 1) + '</a></li>');
			});
			nav.find('a:last').addClass('last');
			nav.find('a').click(acc.onTabNavClick);
			
			// insert header as first child of panel body
			pb.children().eq(0).before(hdr);
			
			// create footer
			pb.append('<div class="footer"></div>');
			
			// activate first tab
			acc.showTab(pb,0);
		},
		
		onHeaderClick: function() {
			var panel = $(this).parents('li');
			
			if (!panel.hasClass('active')) {
				acc.showPanel(panel);
			}
			
			return false;
		},
		
		onInfoClick: function() {
			var t = $(this);
			var info = t.parents('div.panel').find('div.info');
			
			if (info.is(':visible')) {
				info.slideUp('fast');
			} else {
				info.slideDown('fast');
			}
			
			return false;
		},
		
		showPanel: function(panel) {
			// get accordeon
			var a = panel.parents('ul.accordeon');
			
			// get current panel
			var cp = a.find('> li.active > div.panel');
			
			if (jQuery.browser.msie && jQuery.browser.version.charAt(0) < '7') {
				if (cp.length) {
					cp.hide().parent().removeClass('active');
				}
				
				panel.find('div.panel').show().parent().addClass('active');
			} else {
				// slide up current panel
				if (cp.length) {
					cp.slideUp('fast').parent().removeClass('active');
					a.height(a.height());
					
				}
				
				// slide down new panel
				panel.find('div.panel').slideDown('fast').parent().addClass('active');
			}
		},
		
		getFirstPanel: function(a) {
			return a.find('> li:first');
		},
		
		onTabNavClick: function() {
			var t = $(this);
			var li = t.parent('li');
			var index = li.parent().children().index(li);
			acc.showTab(t.parents('div.panel'),index);
			
			return false;
		},
		
		showTab: function(panel,index) {
			if (panel.find('ul.contents > li').eq(index).is('.active')) {
				return;
			}
			
			// fade zoom button in/out
			var cnts = panel.find('ul.contents > li').eq(index).children();
			if (cnts.length == 1 && cnts.is('a')) {
				var a = cnts.eq(0);
				var btn = panel.find('div.header a.btn_zoom');
				var link = a.clone(true).empty().addClass('btn_zoom last').text('Zoom');
				btn.parent().empty().append(link);
			} else {
				if (panel.find('div.header a.btn_zoom').is(':visible')) {
					panel.find('div.header a.btn_zoom').fadeOut('fast');
				} else {
					panel.find('div.header a.btn_zoom').hide();
				}
			}
			
			// show Tab
			panel.find('ul.contents > li')
				.filter('.active').fadeOut().removeClass('active').end()
				.eq(index).fadeIn().addClass('active');
			
			// highlight tab link
			panel.find('div.header > ul.navigation > li > a').removeClass('active').eq(index).addClass('active');
		}
		
	
		
	};
}();

$(document).ready(function() { acc.onDocumentReady.call(acc); });


