var $j = jQuery.noConflict();

var Gallery = function(elemid, options){
	var $ = jQuery;
	
	if(!$(elemid).length) return;
	
	var settings = { spacing:20, start:20, inner:'#GalleryInner' };
	$.extend(settings, options);
	
	var inner = $(settings.inner);
	
	var gallery = $(elemid);

	var maxwi = 0;
	var maxhe = 0;
	var sizes = new Array();
	var self = this;
	var current = 0;
	
	gallery.find('a').each(function(){
		$(this).css({'display': 'block', 'float': 'left' });
		var wi = parseInt($(this).css('width'));
		var he = parseInt($(this).css('height'));
		maxwi = Math.max(wi, maxwi);
		maxhe = Math.max(he, maxhe);
		sizes.push({elem:$(this), width:wi, height:he});
	});
	
	gallery.find('li').each(function(i){
		$(this).css({
			'float': 'left', 
			'width': maxwi + 'px', 
			'height': maxhe + 'px',
			'marginLeft': settings.spacing + 'px',
			'display': 'inline'
		});
		
		$(this).find('a').each(function(){
			$(this).css({
				'marginTop': Math.floor((maxhe - sizes[i].height)/2) + 'px',
				'marginLeft': Math.floor((maxwi - sizes[i].width)/2) + 'px'
			}).click(function(e){
				e.stopPropagation();
				e.preventDefault();
				self.moveTo(i);
			}).find('img').css('opacity', '0.3');
			
			var a = $(this);
			$('<img/>').attr('src', $(this).attr('href')).load(function(){
				a.find('img').replaceWith($(this));
			});
		});
	});
	
	var legend = $('<div class="title"> </div>');
	var next = $('<div class="control next"> </div>').click(function(e){
		if(current < sizes.length - 1)
			self.moveTo(current +1);
	});
	
	var prev = $('<div class="control prev"> </div>').click(function(e){
		if(current > 0)
			self.moveTo(current -1);
	});
	
	$('<div id="GalleryControls"/>').append(prev).append(next).append(legend).insertAfter(gallery);
	
	gallery.css({'position':'relative', 'overflow': 'hidden', 'height': maxhe + 'px' });
	inner.css({'width': (sizes.length * (maxwi + settings.spacing)) + 'px', 'position':'relative', 'left': settings.start + 'px' });
	
	$(window).resize(function(){
		gallery.width($('#Main').width() - 240);
	});
	
	this.moveTo = function(index){
		inner.stop();
		inner.animate({'left': (settings.start - (index * (maxwi + settings.spacing))) + 'px'}, 1000);
		gallery.find('a').css({'opacity': '0.5'});
		sizes[index].elem.animate({'opacity': '0.9999'}, 1000);
		current = index;
		
		legend.html('<span>' + (current+1) + '/' + sizes.length + '</span> ' + sizes[index].elem.attr('title'));
		next.removeClass('disabled');
		prev.removeClass('disabled');
		if(current == 0){ prev.addClass('disabled'); }
		if(current == sizes.length - 1){ next.addClass('disabled'); }
	};
	
	this.moveTo(0);
	$(window).trigger('resize');
};

var fixOuterHeight = function(){
	// fix the outer height
	var he = $j('#SubNav').outerHeight({ margin: true });
	if(he > $j('#Main').height()){
		$j('#Main').height(he + 30);
	}
};

var getTwit = function(){
	
	$j("#twitter").getTwitter({
		userName: "bummzack",
		numTweets: 1,
		slideIn: false,
		showHeading: false,
		showProfileLink: false,
		loaderText: 'Waiting for twit ...',
		callback: fixOuterHeight
	});
};

$j(document).ready(function(){
	// dynamically load script stylesheet
	var headNode = document.getElementsByTagName("head")[0];
	var cssNode = document.createElement('link');
	cssNode.type = 'text/css';
	cssNode.rel = 'stylesheet';
	cssNode.href = 'bummzack/css/scriptstyles.css';
	cssNode.media = 'screen';
	headNode.appendChild(cssNode);
	
	new Gallery('#Gallery');
	
	// fix overflows
	//jQuery('.codeblock').fixOverflow(15);
	$j('p').defuscate();
	
	fixOuterHeight();
	
	var modal = $j('<div id="modalWindow" class="jqmWindow"><div class="jqmTitle"><a href="#" class="jqmClose"><span>x</span>'+
					'</a><h3></h3></div><div class="jqmContent"><iframe id="jqmContent" border="0" frameborder="0" src=""></iframe></div></div>');
	$j('body').append(modal.hide());
	
	$j('a.popup').click(function(e){
		e.preventDefault();
		e.stopPropagation();
	});
	
	// initialise jqModal
	modal.jqm({
		modal: true,
		trigger: 'a.popup',
		target: '#jqmContent',
		onShow:  loadInIframeModal,
		overlay: 70
	});
	
	// fix transparent pngs
	$j('img[@src$=.png], #twitter_decorator, #Stripe').ifixpng();
});

var loadInIframeModal = function(hash){
	var $trigger = $j(hash.t);
	var $modal = $j(hash.w);
	var myUrl = $trigger.attr('href');
	var $modalContent = $j("iframe", $modal);
	//var $content = $j('.jqmContent', $modal);
	
	var parts = myUrl.split('?');
	var len = parts[0].length;
	if(parts.length > 1){
		var vars = parts[1].match(/([^&]+)(?:&#38;|&amp;|&)?/g);
		if(vars){
			for(var i=0; i<vars.length; i++){
				var idx = vars[i].indexOf('=');
				var key = vars[i].substr(0, idx);
				var val = vars[i].substr(idx+1);
				if(key == 'wi'){ 
					var wi = parseInt(val);
					$modalContent.width(wi); 
					$modal.width(wi);
					$modal.css('left', Math.floor(($j('.jqmOverlay').width() - wi) /2) + 'px');
				} else if(key == 'he'){
					var he = parseInt(val);
					$modalContent.height(he);
					$modal.css('top', Math.floor(($j('.jqmOverlay').height() - he) /2) + 'px');
				}
				
				if(key == 'stop'){
					myUrl = $trigger.attr('href').substr(0, len);
				} else {
					len += vars[i].length + 1;
				}
			}
		}
	}
	
	$j('h3', $modal).text($trigger.attr('title'));
	$modalContent.html('').attr('src', myUrl);
	$modal.jqmShow();
	$modal.show();
}


