$(document).ready( function ()
{
	updatePageElements();
	
	// Bind events
	$('#search a').click( function (e) { openBubble( e, 'searchbubble' ); } );
	$('#friends a').click( function (e) { openBubble( e, 'friendsbubble' ); } );
	
	$('#floatingsearch a').click( function (e) { openBubble( e, 'searchbubble' ); } );
	$('#floatingfriends a').click( function (e) { openBubble( e, 'friendsbubble' ); } );
		
	$('.bubble').click( function (e) { e.stopPropagation(); } );
	$('body').click( hideBubbles );
	$(window).scroll( scrollHandler );
	
	// Set header image
	if( malmer_pageHeaderStatic == '' )
	{
		setTimeout( setNextImage, malmer_pageHeaderTimeout );
		preLoad( getNextImage() );
	}
		
	// Preload images
	preLoad( '/wp-content/themes/malmer2/images/background_comments.png', '/wp-content/themes/malmer2/images/commentbubble.png' );
	preLoad( '/wp-content/themes/malmer2/images/bubblearrow.png' );
} );

$(window).load( updatePageElements );


var __malmerPreloadImageCache = new Array();

function preLoad( src )
{
	var len = arguments.length;
	for (var i = len; i--;) 
	{
		var cacheImage = document.createElement('img');
		cacheImage.src = arguments[i];
		__malmerPreloadImageCache.push(cacheImage);
	}
}

function scrollHandler(event)
{
	var scrollTop = $(window).scrollTop();
	var floatingMenu = $('#floatingmenu');
	
	if( scrollTop > 350 )
	{
		if( floatingMenu.is(':hidden') && floatingMenu.queue().length == 0 )
		{
			floatingMenu.show();
			floatingMenu.animate( {'top': 0}, 400, 'linear' );
		}		
	}
	else if( scrollTop < 350 )
	{
		if( !floatingMenu.is(':hidden') && floatingMenu.queue().length == 0 )
		{
			floatingMenu.animate( {'top': -32}, 400, 'linear', function () { floatingMenu.hide() } );
			hideBubbles();
		}
	}
}


function updatePageElements()
{
	$('#content img:first-child').not('.wp-smiley').parent('p').addClass('postImage');
	
	$('.commentsbubble').unbind( 'click', toggleComments );
	$('.commentsbubble').bind( 'click', toggleComments );
	
	$('#commentform input').unbind( 'focus', focusInput );
	$('#commentform input').unbind( 'blur', blurInput );
	$('#commentform input').unbind( 'change', blurInput );
	$('#commentform input').bind( 'focus', focusInput );
	$('#commentform input').bind( 'blur', blurInput );
	$('#commentform input').bind( 'change', blurInput );
	
	$('#commentform input').each( blurInput );
}

function focusInput( event )
{
	$(this).parent().find('label').hide();
}

function blurInput( event )
{
	var label = $(this).parent().find('label[for='+$(this).attr('id')+']');
	if( $(this).val() == '' )
		label.show();
	else
		label.hide();
}

function toggleComments( event )
{
	event.preventDefault(); 
	var post = $(this).closest('.post, .page');
	
	var commentsBlock = $(post).find('.commentsarea');
	var postFooter = $(post).find('.postFooter');
	
	if( $(this).hasClass('uppercommentsbubble') )
	{
		$.scrollTo( postFooter, 'slow',
			{
				axis: 'y',
				offset: { top: -30 },
				onAfter: function () 
				{ 
					if( commentsBlock.is(':hidden') )
						commentsBlock.slideDown('slow');
				}
			} );
	}
	else if( !commentsBlock.hasClass('nonclosable') )
		commentsBlock.slideToggle('slow');
}


function hideBubbles(e)
{
	if( e && e.isPropagationStopped() )
		return;
	var openBubbles = $('.bubble:visible');
	openBubbles.fadeOut();
}


function openBubble( event, bubbleName )
{
	event.preventDefault(); 
	event.stopPropagation();
	
	hideBubbles();
	
	var offset = $(event.currentTarget).offset();
	offset.left += $(event.currentTarget).width() / 2;
	offset.top += $(event.currentTarget).height() + 10;
	
	var bubble = $('#'+bubbleName);
	offset.left -= bubble.innerWidth() / 2;
	offset.top -= $(window).scrollTop();
	
	bubble.css( { 'left' : offset.left, 'top' : offset.top } );
	bubble.fadeIn();
}

function getNextImage()
{
	var i = ((malmer_pageHeaderCurrentImage+1) % malmer_pageHeaderCount)+1;
	if( i < 10 )
		i = "0"+i;	
	return '/wp-content/themes/malmer2/images/header/gfx'+i+'.png';
}

function setNextImage()
{
	var image = getNextImage();
	malmer_pageHeaderCurrentImage++;
	
	var gfx = $('#header #gfx');
	gfx.fadeOut( 'slow', function () 
		{
			gfx.css( 'background-image', 'url('+image+')' );
			setTimeout( function () {
				gfx.fadeIn( 'slow', function ()
					{
						// Preload next
						preLoad( getNextImage() );
						// Wait for next
						setTimeout( setNextImage, malmer_pageHeaderTimeout );
					} );
			}, 100 );
		} );
}


