
$(document).ready(function() {

	/*$('#content').infinitescroll({
	 
	    navSelector  : "#controls",            
	    nextSelector : "#controls a:first",
	    itemSelector : "#content div.post",
		loadingImg : "/wp/wp-content/themes/naked/images/ajax-loader-1.gif",
  	}, function() { 
  		
  		$("#content .post").each(function() {
  			var imageHeight = $(this).find("img").height();
  			$(this).height(imageHeight);
  		});
  		var newStuff = $(this);
       setTimeout(function() {
           $("#content").masonry({ appendedContent: newStuff });
       }, 1000);
  	});*/

	if ( $("body.single .post .pro-player-container").width() > 0 ) {
		var proW = $("#single .pro-player-container").width();
		$("#wrapper").css("width", proW);
		$("#header, #footer").css("width", proW);
	} else {
		var bigImgW = $("body.single img.size-full").width();
		$("body.single #header, body.single #footer, body.single #single").width(bigImgW);
		$("body.single #wrapper").width(bigImgW);
	}
	
	$('#toggle_menu').click(function() {
		$(this).hide();
		$('#menu').toggle();
		$('#load').toggleClass('cat_on');
		return false;
	});
	
	if ($('.post img').size() < 3 ) {
		$('.backtop').hide();
	}
	
	if ( $('body.page').length ) {
		$('ul#tags').listnav();
	}
	
	/* if ( $("#posts_nav a").length > 0 ) {
		var strollH = $("#stroll").height();
		$("#stroll").css("height", strollH + "20px");
	} */
		
	$('body.single img, body.category img').lazyload();
	
	
	// Check for hash value in URL
    /*var hash = window.location.hash.substr(29);
    var href = $('#controls a').each(function(){
        var href = $(this).attr('href');
        if(hash==href.substr(34,href.length)){
            var toLoad = hash+' #content';
            $('#content').load(toLoad)
        }
    });*/
	
	/*$('#controls a').live('click', function() {
		var toLoad = $(this).attr('href')+' #content';
		$('#stroll').hide(0, loadContent());
		$('#load').show();
		window.location.hash = $(this).attr('href').substr(34,$(this).attr('href').length);
		function loadContent() {
			$('#content').load(toLoad,'',showNewContent);
		}
		function showNewContent() {
			$('#stroll').show(0);
			$('#load').hide();
		}
		function hideLoader() {
			$('#load').hide();
		}
		return false;
	});*/
	
	$('#controls a').live('click', function() {
		/*var toLoad = $(this).attr('href')+' #content';
		var name = $(this).attr('href').substr(34,$(this).attr('href').length);
		$('#stroll').append('<div class="new '+ name +'"><div id="loading"><img src="http://adventuresinspace.com/wp/wp-content/themes/naked/images/ajax-loader-2.gif" /></div></div>');
		$('#controls').remove();
		$('.'+ name).load(toLoad, '', function() {
			$(this).children('#loading').remove();
			$(this).append('<div class="current_page">'+ name +'</div>');
			$.scrollTo('.'+ name, 800);
			$('body.home #content').masonry({ columnWidth: 416, singleMode: true }, function() {
				var cH = $('#content').height();
				$('#controls').css({'top' : cH});
			});
			$('#backtotop').fadeIn(800);
			
		});
		return false;*/
	});
		
	
	//$('body.category .post:nth-child(7)').css('margin-right', '0px');
	
	var nextL = $('#controls a span').parent().attr('href');
	
	/*shortcut.add("Shift+H",function() {
		window.location = "http://adventuresinspace.com/"
	});
	
	shortcut.add('Shift+N',function() {
		var toLoad = $('#controls a span#next').parent().attr('href')+' #content';
		$('#stroll').hide(0, loadContent());
		$('#load').show();
		function loadContent() {
			$('#content').load(toLoad,'',showNewContent);
		}
		function showNewContent() {
			$('#stroll').show(0);
			$('#load').hide();
		}
		function hideLoader() {
			$('#load').hide();
		}
		window.location.hash = $('span#next').parent().attr('href').substr(34,$(this).length);
		return false;
	});
	
	shortcut.add('Shift+P',function() {
		var toLoad = $('#controls a span#prev').parent().attr('href')+' #content';
		$('#stroll').hide(0, loadContent());
		$('#load').show();
		function loadContent() {
			$('#content').load(toLoad,'',showNewContent);
		}
		function showNewContent() {
			$('#stroll').show(0);
			$('#load').hide();
		}
		function hideLoader() {
			$('#load').hide();
		}
		window.location.hash = $('span#prev').parent().attr('href').substr(34,$(this).length);
		return false;
	});
	
	shortcut.add('Shift+I', function() {
		$('#wrapper').toggle();
		$('#info').toggle();
		$('body').toggleClass('popped');
	});*/
	
	$('.backtop').click(function() {
		$.scrollTo('#top', 800);
		return false;
	});
	
	$('#backtotop').click(function() {
		$.scrollTo('#top', 800);
		$(this).hide();
		return false;
	});
	
	$('#togglers a').live('click', function() {
		var id = $(this).attr('id').replace('toggle-', '');
		$.scrollTo('#top', 500);
		if ( $(this).attr('id') == 'twitter-link' ) {
		} else {
			$('#'+id).toggle(0 ,function() {
				if ( id == 'searchbox' ) {
					$('input#s').focus();
				}
			});
			return false;
		}
	});
	
	shortcut.add('Ctrl+Right', function() {
		var nextLink = $('#controls a:last').attr('href');
		window.location.href = nextLink;
	});
	
	shortcut.add('Ctrl+Left', function() {
		var prevLink = $('#controls a:first').attr('href');
		window.location.href = prevLink;
	});
	
	shortcut.add('Ctrl+Up', function() {
		window.location.href = '/';
	});
	
	shortcut.add('Ctrl+S', function() {
		$('#searchbox').toggle(0, function() {
			$('input#s').focus();
		});
	});
	
	shortcut.add('Ctrl+C', function() {
		$('#catlist').toggle(0, function() {
			$('input#s').focus();
		});
	});
	
	shortcut.add('Ctrl+I', function() {
		$('#info').toggle(0, function() {
			$('input#s').focus();
		});
	});
	
	shortcut.add('Ctrl+H', function() {
		window.location.href = '/';
	});
	
	$('#close-info').live('click', function() {
		$('#info').toggle();
		return false;
	});
	
	$('body.single .post p').eq(1).before('<div id="tweet-button"><a href="http://twitter.com/share" class="twitter-share-button" data-count="none" data-via="041261">Tweet</a><script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script></div>');		
	
});

$(window).load(function() {

	if ( navigator.userAgent.match(/iPad/i) != null ) {
		$('#content .post img').attr('width', 290);
		$('body.home #content').masonry({ columnWidth: 300, singleMode: true });
	} else {
		$('body.home #content').masonry({ columnWidth: 391, singleMode: true });
		if ( $('body.category #content').length ) {
			$('body.category #content').masonry({ columnWidth: 158, singleMode: true });
		}
	}
	
	$('#wrap').animate({'opacity': '1'}, 500);
	

$('body.single img').lazyload({threshold : 400});

if ( $('body.category').length ) {

	$('.quicklook').live('click', function() {
		var parent = $(this).parent();
		var biggie = $(this).parent().find('img').attr('title');
		var offset = parent.offset();
		$('body').append('<div id="quicklook-image" style="top:'+offset.top+'px;left:'+offset.left+'px"><img src="'+biggie+'" alt="" /></div>');
		
			var currentTop = $('#quicklook-image').css('top');
			var currentLeft = $('#quicklook-image').css('left');
			$('#quicklook-image img').load(function() {
				if ( $('#wrapper').width() < window.innerWidth ) {
					$('#quicklook-image').css({'left': (currentLeft - 300)});
				}
				console.log('body width: '+$('body').width()+' / window width: '+window.innerWidth);
			});
		return false;
	});

	$('#quicklook-image').live('click', function() {
		$(this).remove();
	});
		
}

});


/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);


(function($){$.fn.lazyload=function(options){var settings={threshold:0,failurelimit:0,event:"scroll",effect:"show",container:window};if(options){$.extend(settings,options);}
var elements=this;if("scroll"==settings.event){$(settings.container).bind("scroll",function(event){var counter=0;elements.each(function(){if($.abovethetop(this,settings)||$.leftofbegin(this,settings)){}else if(!$.belowthefold(this,settings)&&!$.rightoffold(this,settings)){$(this).trigger("appear");}else{if(counter++>settings.failurelimit){return false;}}});var temp=$.grep(elements,function(element){return!element.loaded;});elements=$(temp);});}
this.each(function(){var self=this;if(undefined==$(self).attr("original")){$(self).attr("original",$(self).attr("src"));}
if("scroll"!=settings.event||undefined==$(self).attr("src")||settings.placeholder==$(self).attr("src")||($.abovethetop(self,settings)||$.leftofbegin(self,settings)||$.belowthefold(self,settings)||$.rightoffold(self,settings))){if(settings.placeholder){$(self).attr("src",settings.placeholder);}else{$(self).removeAttr("src");}
self.loaded=false;}else{self.loaded=true;}
$(self).one("appear",function(){if(!this.loaded){$("<img />").bind("load",function(){$(self).hide().attr("src",$(self).attr("original"))
[settings.effect](settings.effectspeed);self.loaded=true;}).attr("src",$(self).attr("original"));};});if("scroll"!=settings.event){$(self).bind(settings.event,function(event){if(!self.loaded){$(self).trigger("appear");}});}});$(settings.container).trigger(settings.event);return this;};$.belowthefold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).height()+$(window).scrollTop();}else{var fold=$(settings.container).offset().top+$(settings.container).height();}
return fold<=$(element).offset().top-settings.threshold;};$.rightoffold=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).width()+$(window).scrollLeft();}else{var fold=$(settings.container).offset().left+$(settings.container).width();}
return fold<=$(element).offset().left-settings.threshold;};$.abovethetop=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).scrollTop();}else{var fold=$(settings.container).offset().top;}
return fold>=$(element).offset().top+settings.threshold+$(element).height();};$.leftofbegin=function(element,settings){if(settings.container===undefined||settings.container===window){var fold=$(window).scrollLeft();}else{var fold=$(settings.container).offset().left;}
return fold>=$(element).offset().left+settings.threshold+$(element).width();};$.extend($.expr[':'],{"below-the-fold":"$.belowthefold(a, {threshold : 0, container: window})","above-the-fold":"!$.belowthefold(a, {threshold : 0, container: window})","right-of-fold":"$.rightoffold(a, {threshold : 0, container: window})","left-of-fold":"!$.rightoffold(a, {threshold : 0, container: window})"});})(jQuery);

/*
*
* jQuery listnav plugin
* Copyright (c) 2009 iHwy, Inc.
* Author: Jack Killpatrick
*
* Version 2.1 (08/09/2009)
* Requires jQuery 1.3.2, jquery 1.2.6 or jquery 1.2.x plus the jquery dimensions plugin
*
* Visit http://www.ihwy.com/labs/jquery-listnav-plugin.aspx for more information.
*
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*
*/

eval(function(p, a, c, k, e, r) { e = function(c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function(e) { return r[e] } ]; e = function() { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } ('(3($){$.15.16=3(f){4 g=$.1O({},$.15.16.1m,f);4 h=[\'T\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'j\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\',\'-\'];4 j=E;g.K=$.1P(g.K,3(n){F n.17()});F 7.1n(3(){4 d,8,$8,$5,$G,U;U=7.U;d=$(\'#\'+U+\'-1Q\');$8=$(7);4 e={},18=0,V=A,1R=0,X=\'\';3 1o(){d.1p(1q());$5=$(\'.6-5\',d).L(0,1);2(g.M)$G=$(\'.6-1r-1s\',d).L(0,1);1t();1u();2(g.1v)1w();1x();2(!g.Y)$8.N();2(!g.Y)$(\'.O\',$5).19();2(!g.1a)$(\'.T\',$5).19();2(!g.1S)$(\'.-\',$5).19();$(\':1y\',$5).P(\'6-1y\');2($.Z&&(g.Q!=H)){4 a=$.Z(g.Q);2(a!=H)g.10=a}2(g.10!=\'\'){j=A;$(\'.\'+g.10.17(),$5).L(0,1).1b()}D{2(g.Y)$(\'.O\',$5).P(\'6-11\');D{1c(4 i=((g.1a)?0:1);i<h.I;i++){2(e[h[i]]>0){j=A;$(\'.\'+h[i],$5).L(0,1).1b();1T}}}}}3 1z(){$G.1A({1d:$(\'.a\',$5).L(0,1).1U({1e:E,1V:A}).1d-$G.1W({1e:A})})}3 1t(){4 a,J,1X,R,$7,1B=(g.K.I>0);$($8).B().1n(3(){$7=$(7),J=\'\',a=$.1Y($7.1C()).17();2(a!=\'\'){2(1B){R=a.1f(\' \');2((R.I>1)&&($.1Z(R[0],g.K)>-1)){J=R[1].1D(0);1g(J,$7,A)}}J=a.1D(0);1g(J,$7)}})}3 1g(a,b,c){2(/\\W/.20(a))a=\'-\';2(!21(a))a=\'T\';b.P(\'6-\'+a);2(e[a]==1h)e[a]=0;e[a]++;2(!c)18++}3 1w(){1c(4 i=0;i<h.I;i++){2(e[h[i]]==1h)$(\'.\'+h[i],$5).P(\'6-22\')}}3 1u(){$8.1p(\'<1E C="6-12-13" 1F="1G:1H">\'+g.1I+\'</1E>\')}3 1i(a){2($(a).23(\'O\'))F 18;D{4 b=e[$(a).1J(\'C\').1f(\' \')[0]];F(b!=1h)?b:0}}3 1x(){2(g.M){d.1K(3(){1z()})}2(g.M){$(\'a\',$5).1K(3(){4 a=$(7).1L().1j;4 b=($(7).24({1e:A})-1)+\'25\';4 c=1i(7);$G.1A({1j:a,1M:b}).1C(c).N()});$(\'a\',$5).26(3(){$G.S()})}$(\'a\',$5).1b(3(){$(\'a.6-11\',$5).27(\'6-11\');4 a=$(7).1J(\'C\').1f(\' \')[0];2(a==\'O\'){$8.B().N();$8.B(\'.6-12-13\').S();V=A}D{2(V){$8.B().S();V=E}D 2(X!=\'\')$8.B(\'.6-\'+X).S();4 b=1i(7);2(b>0){$8.B(\'.6-12-13\').S();$8.B(\'.6-\'+a).N()}D $8.B(\'.6-12-13\').N();X=a}2($.Z&&(g.Q!=H))$.Z(g.Q,a);$(7).P(\'6-11\');$(7).28();2(!j&&(g.1k!=H))g.1k(a);D j=E;F E})}3 1q(){4 a=[];1c(4 i=1;i<h.I;i++){2(a.I==0)a.1N(\'<a C="O" 1l="#">29</a><a C="T" 1l="#">0-9</a>\');a.1N(\'<a C="\'+h[i]+\'" 1l="#">\'+((h[i]==\'-\')?\'...\':h[i].2a())+\'</a>\')}F\'<14 C="6-5">\'+a.2b(\'\')+\'</14>\'+((g.M)?\'<14 C="6-1r-1s" 1F="1G:1H; 1L:2c; 1d:0; 1j:0; 1M:2d;">0</14>\':\'\')}1o()})};$.15.16.1m={10:\'\',Y:A,2e:E,1a:A,1v:A,1I:\'2f 2g 2h\',M:A,Q:H,1k:H,K:[]}})(2i);', 62, 143, '||if|function|var|letters|ln|this|list||||||||||||||||||||||||||||true|children|class|else|false|return|letterCount|null|length|firstChar|prefixes|slice|showCounts|show|all|addClass|cookieName|spl|hide|_|id|isAll||prevLetter|includeAll|cookie|initLetter|selected|no|match|div|fn|listnav|toLowerCase|allCount|remove|includeNums|click|for|top|margin|split|addLetterClass|undefined|getLetterCount|left|onClick|href|defaults|each|init|append|createLettersHtml|letter|count|addClasses|addNoMatchLI|flagDisabled|addDisabledClass|bindHandlers|last|setLetterCountTop|css|hasPrefixes|text|charAt|li|style|display|none|noMatchText|attr|mouseover|position|width|push|extend|map|nav|numCount|includeOther|break|offset|border|outerHeight|firstWord|trim|inArray|test|isNaN|disabled|hasClass|outerWidth|px|mouseout|removeClass|blur|ALL|toUpperCase|join|absolute|20px|incudeOther|No|matching|entries|jQuery'.split('|'), 0, {}))

jQuery.fn.shortkeys = jQuery.fn.keys = function (obj, settings) {		
	var el = this;
	this.settings = jQuery.extend({
			split: "+",
			moreKeys: {}			
		}, settings || {});	
	this.wackyKeys = { '.': 190, ',': 188, ';': 59,	'Space': 32	};	
	this.formElements  = new Array("input", "select", "textarea", "button");
	this.keys = new Array();	
	this.onFormElement = false;
	this.keysDown = new Array();
	this.init = function (obj) {
		for(x in this.wackyKeys) {
			this.wackyKeys[x.toUpperCase()] = this.wackyKeys[x];
		}
		for(x in obj) {
			this.keys.push(x.split(this.settings.split));
		}
		for(i in this.keys) {
			var quickArr = new Array();
			for(j in this.keys[i]) {
				quickArr.push(this.convertToNumbers(this.keys[i][j].toUpperCase()));
			}
			quickArr.sort();
			this.keys[i] = quickArr;
		}
	};	
	this.convertToNumbers = function (inp) {
		if (this.wackyKeys[inp] != undefined) {
			return this.wackyKeys[inp];
		}
		return inp.toUpperCase().charCodeAt(0);
	};	
	this.keyAdd = function(keyCode) {
		this.keysDown.push(keyCode);
		this.keysDown.sort();
	};
	this.keyRemove = function (keyCode) {
		for(i in this.keysDown) {
			if(this.keysDown[i] == keyCode) {
				this.keysDown.splice(i,1);
			}
		};	
		this.keysDown.sort();	
	};		
	this.keyTest = function (i) {
		if (this.keys[i].length != this.keysDown.length) return false;
		for(j in this.keys[i]) {
			if(this.keys[i][j] != this.keysDown[j]) {
				return false;
			}
		}	
		return true;
	};
	this.keyRemoveAll = function () {
		this.keysDown = new Array();	
	};
	this.focused = function (bool) {
		this.onFormElement = bool;
	}	
	$(document).keydown(function(e) {
		el.keyAdd(e.keyCode);
		var i = 0;
		for(x in obj) {
			if(el.keyTest(i) && !el.onFormElement) {
				obj[x]();
				return false;
				break;	
			}			
			i++;
		};	
	});	
	$(document).keyup(function (e) {
		el.keyRemove(e.keyCode);
	});	
	for(x in this.formElements) {
		$(this.formElements[x]).focus( function () {
			el.focused(true);
		});
		$(this.formElements[x]).blur( function () {
			el.focused(false);
		});
	}	
	$(document).focus( function () {
		el.keyRemoveAll();
	});
	
	this.init(obj);
	jQuery.extend(this.wackyKeys, this.settings.moreKeys);

	return this;
}

/*************************************************
**  jQuery Masonry version 1.2.0
**  copyright David DeSandro, licensed GPL & MIT
**  http://desandro.com/resources/jquery-masonry
**************************************************/
;(function($){var n=$.event,resizeTimeout;n.special["smartresize"]={setup:function(){$(this).bind("resize",n.special.smartresize.handler)},teardown:function(){$(this).unbind("resize",n.special.smartresize.handler)},handler:function(a,b){var c=this,args=arguments;a.type="smartresize";if(resizeTimeout)clearTimeout(resizeTimeout);resizeTimeout=setTimeout(function(){jQuery.event.handle.apply(c,args)},b==="execAsap"?0:100)}};$.fn.smartresize=function(a){return a?this.bind("smartresize",a):this.trigger("smartresize",["execAsap"])};$.fn.masonry=function(l,m){function getBricks(a,b){a.$bricks=b.itemSelector==undefined?b.$brickParent.children():b.$brickParent.find(b.itemSelector)}function placeBrick(a,b,c,d,e,f){var g=0;for(i=0;i<b;i++){if(c[i]<c[g])g=i}var h={left:e.colW*g+e.posLeft,top:c[g]};if(e.masoned&&f.animate){a.animate(h,{duration:f.animationOptions.duration,easing:f.animationOptions.easing,complete:f.animationOptions.complete,step:f.animationOptions.step,queue:f.animationOptions.queue,specialEasing:f.animationOptions.specialEasing})}else{a.css(h)}for(i=0;i<d;i++){e.colY[g+i]=c[g]+a.outerHeight(true)}};function masonrySetup(a,b,c){getBricks(c,b);if(b.columnWidth==undefined){c.colW=c.masoned?a.data('masonry').colW:c.$bricks.outerWidth(true)}else{c.colW=b.columnWidth}c.colCount=Math.floor(a.width()/c.colW);c.colCount=Math.max(c.colCount,1)};function masonryArrange(e,f,g){if(!g.masoned)e.css('position','relative');if(!g.masoned||f.appendedContent!=undefined){g.$bricks.css('position','absolute')}var h=$('<div />');e.prepend(h);g.posTop=Math.round(h.position().top);g.posLeft=Math.round(h.position().left);h.remove();if(g.masoned&&f.appendedContent!=undefined){g.colY=e.data('masonry').colY;for(i=e.data('masonry').colCount;i<g.colCount;i++){g.colY[i]=g.posTop}}else{g.colY=[];for(i=0;i<g.colCount;i++){g.colY[i]=g.posTop}}if(f.singleMode){g.$bricks.each(function(){var a=$(this);placeBrick(a,g.colCount,g.colY,1,g,f)})}else{g.$bricks.each(function(){var a=$(this);var b=Math.ceil(a.outerWidth(true)/g.colW);b=Math.min(b,g.colCount);if(b==1){placeBrick(a,g.colCount,g.colY,1,g,f)}else{var c=g.colCount+1-b;var d=[0];for(i=0;i<c;i++){d[i]=0;for(j=0;j<b;j++){d[i]=Math.max(d[i],g.colY[i+j])}}placeBrick(a,c,d,b,g,f)}})}g.wallH=0;for(i=0;i<g.colCount;i++){g.wallH=Math.max(g.wallH,g.colY[i])}var k={height:g.wallH-g.posTop};if(g.masoned&&f.animate){e.animate(k,{duration:f.animationOptions.duration,easing:f.animationOptions.easing,complete:f.animationOptions.complete,step:f.animationOptions.step,queue:f.animationOptions.queue,specialEasing:f.animationOptions.specialEasing})}else{e.css(k)}if(!g.masoned)e.addClass('masoned');m.call(g.$bricks);e.data('masonry',g)};function masonryResize(a,b,c){c.masoned=a.data('masonry')!=undefined;var d=a.data('masonry').colCount;masonrySetup(a,b,c);if(c.colCount!=d)masonryArrange(a,b,c)};return this.each(function(){var a=$(this);var b=$.extend({},$.masonry);b.masoned=a.data('masonry')!=undefined;var c=b.masoned?a.data('masonry').options:{};var d=$.extend({},b.defaults,c,l);b.options=d.saveOptions?d:c;m=m||function(){};if(b.masoned&&d.appendedContent!=undefined){d.$brickParent=d.appendedContent}else{d.$brickParent=a}getBricks(b,d);if(b.$bricks.length){masonrySetup(a,d,b);masonryArrange(a,d,b);var e=c.resizeable;if(!e&&d.resizeable){$(window).bind('smartresize.masonry',function(){masonryResize(a,d,b)})}if(e&&!d.resizeable)$(window).unbind('smartresize.masonry')}else{return this}})};$.masonry={defaults:{singleMode:false,columnWidth:undefined,itemSelector:undefined,appendedContent:undefined,saveOptions:true,resizeable:true,animate:false,animationOptions:{}},colW:undefined,colCount:undefined,colY:undefined,wallH:undefined,masoned:undefined,posTop:0,posLeft:0,options:undefined,$bricks:undefined,$brickParent:undefined}})(jQuery);


/**
 * http://www.openjs.com/scripts/events/keyboard_shortcuts/
 * Version : 2.01.B
 * By Binny V A
 * License : BSD
 */
shortcut = {
	'all_shortcuts':{},//All the shortcuts are stored in this array
	'add': function(shortcut_combination,callback,opt) {
		//Provide a set of default options
		var default_options = {
			'type':'keydown',
			'propagate':false,
			'disable_in_input':false,
			'target':document,
			'keycode':false
		}
		if(!opt) opt = default_options;
		else {
			for(var dfo in default_options) {
				if(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];
			}
		}

		var ele = opt.target;
		if(typeof opt.target == 'string') ele = document.getElementById(opt.target);
		var ths = this;
		shortcut_combination = shortcut_combination.toLowerCase();

		//The function to be called at keypress
		var func = function(e) {
			e = e || window.event;
			
			if(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields
				var element;
				if(e.target) element=e.target;
				else if(e.srcElement) element=e.srcElement;
				if(element.nodeType==3) element=element.parentNode;

				if(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;
			}
	
			//Find Which key is pressed
			if (e.keyCode) code = e.keyCode;
			else if (e.which) code = e.which;
			var character = String.fromCharCode(code).toLowerCase();
			
			if(code == 188) character=","; //If the user presses , when the type is onkeydown
			if(code == 190) character="."; //If the user presses , when the type is onkeydown

			var keys = shortcut_combination.split("+");
			//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked
			var kp = 0;
			
			//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken
			var shift_nums = {
				"`":"~",
				"1":"!",
				"2":"@",
				"3":"#",
				"4":"$",
				"5":"%",
				"6":"^",
				"7":"&",
				"8":"*",
				"9":"(",
				"0":")",
				"-":"_",
				"=":"+",
				";":":",
				"'":"\"",
				",":"<",
				".":">",
				"/":"?",
				"\\":"|"
			}
			//Special Keys - and their codes
			var special_keys = {
				'esc':27,
				'escape':27,
				'tab':9,
				'space':32,
				'return':13,
				'enter':13,
				'backspace':8,
	
				'scrolllock':145,
				'scroll_lock':145,
				'scroll':145,
				'capslock':20,
				'caps_lock':20,
				'caps':20,
				'numlock':144,
				'num_lock':144,
				'num':144,
				
				'pause':19,
				'break':19,
				
				'insert':45,
				'home':36,
				'delete':46,
				'end':35,
				
				'pageup':33,
				'page_up':33,
				'pu':33,
	
				'pagedown':34,
				'page_down':34,
				'pd':34,
	
				'left':37,
				'up':38,
				'right':39,
				'down':40,
	
				'f1':112,
				'f2':113,
				'f3':114,
				'f4':115,
				'f5':116,
				'f6':117,
				'f7':118,
				'f8':119,
				'f9':120,
				'f10':121,
				'f11':122,
				'f12':123
			}
	
			var modifiers = { 
				shift: { wanted:false, pressed:false},
				ctrl : { wanted:false, pressed:false},
				alt  : { wanted:false, pressed:false},
				meta : { wanted:false, pressed:false}	//Meta is Mac specific
			};
                        
			if(e.ctrlKey)	modifiers.ctrl.pressed = true;
			if(e.shiftKey)	modifiers.shift.pressed = true;
			if(e.altKey)	modifiers.alt.pressed = true;
			if(e.metaKey)   modifiers.meta.pressed = true;
                        
			for(var i=0; k=keys[i],i<keys.length; i++) {
				//Modifiers
				if(k == 'ctrl' || k == 'control') {
					kp++;
					modifiers.ctrl.wanted = true;

				} else if(k == 'shift') {
					kp++;
					modifiers.shift.wanted = true;

				} else if(k == 'alt') {
					kp++;
					modifiers.alt.wanted = true;
				} else if(k == 'meta') {
					kp++;
					modifiers.meta.wanted = true;
				} else if(k.length > 1) { //If it is a special key
					if(special_keys[k] == code) kp++;
					
				} else if(opt['keycode']) {
					if(opt['keycode'] == code) kp++;

				} else { //The special keys did not match
					if(character == k) kp++;
					else {
						if(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase
							character = shift_nums[character]; 
							if(character == k) kp++;
						}
					}
				}
			}
			
			if(kp == keys.length && 
						modifiers.ctrl.pressed == modifiers.ctrl.wanted &&
						modifiers.shift.pressed == modifiers.shift.wanted &&
						modifiers.alt.pressed == modifiers.alt.wanted &&
						modifiers.meta.pressed == modifiers.meta.wanted) {
				callback(e);
	
				if(!opt['propagate']) { //Stop the event
					//e.cancelBubble is supported by IE - this will kill the bubbling process.
					e.cancelBubble = true;
					e.returnValue = false;
	
					//e.stopPropagation works in Firefox.
					if (e.stopPropagation) {
						e.stopPropagation();
						e.preventDefault();
					}
					return false;
				}
			}
		}
		this.all_shortcuts[shortcut_combination] = {
			'callback':func, 
			'target':ele, 
			'event': opt['type']
		};
		//Attach the function with the event
		if(ele.addEventListener) ele.addEventListener(opt['type'], func, false);
		else if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);
		else ele['on'+opt['type']] = func;
	},

	//Remove the shortcut - just specify the shortcut and I will remove the binding
	'remove':function(shortcut_combination) {
		shortcut_combination = shortcut_combination.toLowerCase();
		var binding = this.all_shortcuts[shortcut_combination];
		delete(this.all_shortcuts[shortcut_combination])
		if(!binding) return;
		var type = binding['event'];
		var ele = binding['target'];
		var callback = binding['callback'];

		if(ele.detachEvent) ele.detachEvent('on'+type, callback);
		else if(ele.removeEventListener) ele.removeEventListener(type, callback, false);
		else ele['on'+type] = false;
	}
}
