$jq( document ).ready( function( $ ) {
	var global = ( function() { return this; } ).call();
	
	function createElement( tag ) {
		return $( document.createElement( tag ) );
	}

	function createBox() {
		var box = createElement( "div" );
		box.addClass( "shareBox" );
		return box;
	}
	
	function createClear() {
		var clear = createElement( "div" );
		clear.css( "clear", "both" );
		return clear;
	}
	
	function createFacebookBox( compact ) {
		var box = createBox();
		
		var a = createElement( "a" );
		a.attr( "name", "fb_share" );
		if ( compact )
			a.attr( "type", "button_count" );
		else
			a.attr( "type", "box_count" );
		box.append( a );
		
		var script = createElement( "script" );
		script.attr( "type", "text/javascript" );
		script.attr( "src", "http://static.ak.fbcdn.net/connect.php/js/FB.Share" );		
		box.append( script );
		
		box.append( createClear() );
		
		return box;
	}
		
	function createTwitterBox( compact ) {
		var box = createBox();
			
		var tweetmemeButtonScript = '(function(){var _url=window.location.href;var _url=_url.replace(/((?:\\?|&)?fbc_receiver=.+)?(?:#.*)?$/,"");var url=escape((typeof tweetmeme_url=="string")?tweetmeme_url:((typeof TWEETMEME_URL=="string")?TWEETMEME_URL:_url)).replace(/\\+/g,"%2b");var source=(typeof tweetmeme_source=="string")?escape(tweetmeme_source):((typeof TWEETMEME_SOURCE=="string")?escape(TWEETMEME_SOURCE):false);var style=(typeof tweetmeme_style=="string")?escape(tweetmeme_style):((typeof TWEETMEME_STYLE=="string")?escape(TWEETMEME_STYLE):"normal");var service=(typeof tweetmeme_service=="string")?escape(tweetmeme_service):((typeof TWEETMEME_SERVICE=="string")?escape(TWEETMEME_SERVICE):false);var service_api=(typeof tweetmeme_service_api=="string")?escape(tweetmeme_service_api):((typeof TWEETMEME_SERVICE_API=="string")?escape(TWEETMEME_SERVICE_API):false);var alias=(typeof tweetmeme_alias=="string")?escape(tweetmeme_alias):((typeof TWEETMEME_ALIAS=="string")?escape(TWEETMEME_ALIAS):false);var hashtags=(typeof tweetmeme_hashtags=="string")?escape(tweetmeme_hashtags):((typeof TWEETMEME_HASHTAGS=="string")?escape(TWEETMEME_HASHTAGS):false);var space=(typeof tweetmeme_space=="number")?escape(tweetmeme_space):((typeof TWEETMEME_SPACE=="number")?escape(TWEETMEME_SPACE):false);var src="http://api.tweetmeme.com/button.js";switch(style){case"compact":var h=20;var w=90;break;default:var h=61;var w=50;break}src+="?url="+url;src+="&style="+style;if(source!=false){src+="&source="+source}if(service){src+="&service="+service}if(service_api){src+="&service_api="+service_api}if(alias){src+="&alias="+alias}if(hashtags){src+="&hashtags="+hashtags}if(space){src+="&space="+space}document.write(\'<iframe src="\'+src+\'" height="\'+h+\'" width="\'+w+\'" frameborder="0" scrolling="no"></iframe>\');tweetmeme_url=null;TWEETMEME_URL=null;tweetmeme_source=null;TWEETMEME_SOURCE=null;tweetmeme_service=null;TWEETMEME_SERVICE=null;tweetmeme_service_api=null;TWEETMEME_SERVICE_API=null;tweetmeme_style=null;TWEETMEME_STYLE=null;tweetmeme_alias=null;TWEETMEME_ALIAS=null;tweetmeme_hashtags=null;TWEETMEME_HASHTAGS=null;tweetmeme_space=null;TWEETMEME_SPACE=null})();';
		
		if ( compact )
			global.tweetmeme_style = 'compact';
		var _write = document.write;
		document.write = function( str ) { box.html( str ); }
		eval( tweetmemeButtonScript );
		document.write = _write;
		
		box.append( createClear() );
		
		return box;
	}
	
	function createGoogleBuzzBox( compact ) {
		var box = createBox();
		
		var a = createElement( "a" );
		a.attr( "title", "Post on Google Buzz" );
		a.addClass( "google-buzz-button" );
		a.attr( "href", "http://www.google.com/buzz/post" );
		if ( compact )
			a.attr( "data-button-style", "small-button" );
		else
			a.attr( "data-button-style", "normal-count" );
		a.attr( "data-url", window.location.href );
		box.append( a );
		
		var script = createElement( "script" );
		script.attr( "type", "text/javascript" );
		script.attr( "src", "http://www.google.com/buzz/api/button.js" );
		box.append( script );
		
		box.append( createClear() );
		
		return box;
	}
	
	function createAddThisbox( compact ) {
		var box = createBox();
		
		var container = box;
		
		if ( compact ) {
			container = createElement( "div" );
			container.addClass( "shareBoxSmall" );
			container.addClass( "shareBoxShare" );
			box.append( container );
		}
		
		var div = createElement( "div" );
		div.addClass( "addthis_toolbox" );
		div.addClass( "addthis_default_style" );
		container.append( div );
		
		var a = createElement( "a" );
		a.attr( "href", "http://www.addthis.com/bookmark.php?v=250&amp;username=xa-4bffb9fd664196a2" );
		a.addClass( "addthis_button_compact" );
		a.text( "Share" );
		div.append( a );

		var script = createElement( "script" );
		script.attr( "type", "text/javascript" );
		script.attr( "src", "http://s7.addthis.com/js/250/addthis_widget.js#username=xa-4bffb9fd664196a2" );
		container.append( script );
	
		return box;
	}
	
	function createBigBar() {
		var bar = createElement( "div" );
		bar.addClass( "shareBar" );
		
		var facebookBox = createFacebookBox();		
		bar.append( facebookBox );
		
		var twitterBox = createTwitterBox();
		bar.append( twitterBox );
		
		var googleBuzzBox = createGoogleBuzzBox();
		bar.append( googleBuzzBox );
		
		var addThisBox = createAddThisbox();
		addThisBox.addClass( "shareBoxSmall" );
		addThisBox.addClass( "shareBoxShare" );
		addThisBox.css( "margin-bottom", 0 );
		bar.append( addThisBox );
		
		return bar;
	}
	
	function createSmallBar() {
		var bar = createElement( "div" );
		bar.addClass( "shareBarSmall" );
		
		var facebookBox = createFacebookBox( true );		
		bar.append( facebookBox );
		
		var twitterBox = createTwitterBox( true );
		bar.append( twitterBox );
		
		var googleBuzzBox = createGoogleBuzzBox( true );
		bar.append( googleBuzzBox );
		
		var addThisBox = createAddThisbox( true );
		addThisBox.css( "margin-bottom", 0 );
		bar.append( addThisBox );
		
		return bar;
	}
	
	$( ".hasShareBar" ).each( function( index ) {
		var self = $( this );

		var bigBar = createBigBar();
		var smallBar = createSmallBar();
		
		var topOffset = 0;
		if ( self.hasClass( "zoneLeft" ) ) {
			topOffset = 90;
			bigBar.css( "margin-top", topOffset );
		}
		
		var bottomOffset = 0;
		
		var topWindowOffset = 20;
		
		$( window ).scroll( function() {
			var offset = self.offset().top - $( window ).scrollTop();
			var height = self.outerHeight();
			var barHeight = bigBar.outerHeight();
			
			if ( offset + topOffset < topWindowOffset ) {
				offset = -offset + topWindowOffset;
		
				bigBar.css( "margin-top", height > barHeight + offset + bottomOffset ? offset : height - barHeight - bottomOffset - 2 );
			} else
				bigBar.css( "margin-top", topOffset );
		} );
		
		$( window ).resize( function() {
			var width = $( window ).width();
			
			if ( width > 1100 ) {
				bigBar.show();
				smallBar.hide();
			} else {
				bigBar.hide();
				smallBar.show();
			}
		} );
		
		var header = self.children().first();
		if ( self.hasClass( "zoneLeft" ) && header.length > 0 && header.get(0).tagName == "H1" )
			header.after( smallBar );
		else		
			self.prepend( smallBar );
		self.prepend( bigBar );
		
		$( window ).resize();
	} );	
} );

$jq( window ).load( function () {
	$jq( ".fb_share_count_inner, .buzz-counter" ).each( function( index ) {
		var self = $jq( this );
		var num = parseInt( self.text(), 10 );
		
		if ( isNaN( num ) )
			self.text( "0" );
	} );
});
