jQuery(window).load( function() {
	
	jQuery('.boxInnerWrapperThumb > .thumbwrapper').center();
	
	if(location.hash != "" && location.hash != "#" && jQuery('.box.'+location.hash.substring(1)).length > 0) {
		
		jQuery('.box.'+location.hash.substring(1)).click();
	
	}
	
});

jQuery(document).ready(function($) {
	
	jQuery('.boxInnerWrapperThumb > .thumbwrapper').center();
	
	//Function to block UI or unblock it.
	function blockui(block) {
	
		if($(window).height() > $('html').height()) {
			height = $(window).height();
		} else {
			height = $('html').height();
		}
	
		if(block === true) {
			$('body').append('<div id="uiblock"></div>');
			$('#uiblock').css('opacity' , 0);
			$('#uiblock').css('height' , height + 'px');
		} else {
		
			$('#uiblock').fadeTo("fast" , 0 , function() {
				$(this).remove();
			});
		}
	
	}
	
	//Function to open box
	function openBox(settings) {
	
		location.hash = settings['title'];
		settings['thisen'].css('z-index',900);
		blockui(true);
		$("#" + settings['ide'] + " .boxInnerWrapperThumb").fadeOut("fast", function() {
			var curpos = settings['thisen'].position();
			jQuery(settings['thisen']).css({
				left: curpos.left,
				top: curpos.top
			});
			//Control top
			if((curpos.top < 300) && (curpos.top > 100)) {
				curpos.top = parseFloat(curpos.top) + ( ( settings['goalHeight'] - settings['thisen'].height() ) / 2 );
			}
			if (curpos.top < 100) {
				curpos.top += ( settings['goalHeight'] - settings['thisen'].height() );
			}
			settings['position'].top = ( parseFloat(curpos.top) - ( settings['goalHeight'] - settings['thisen'].height() ) ) + "px";
			//Control left
			if( ((curpos.left - settings['position'].left) > 100) && ((curpos.left - settings['position'].left) < 400)) {
				curpos.left = parseFloat(curpos.left) + ( ( settings['goalWidth'] - settings['thisen'].width() ) / 2 );
			}
			if( (curpos.left - settings['position'].left) < 100) {
				curpos.left += ( settings['goalWidth'] - settings['thisen'].width() );
			}
			settings['position'].left = ( parseFloat(curpos.left) - ( settings['goalWidth'] - settings['thisen'].width() ) ) + "px";
			
			settings['thisen'].animate({ 
				width: settings['goalWidth'] + 'px',
				height: settings['goalHeight'] + "px",
				left: settings['position'].left,
				top: settings['position'].top
			}, 450, "easeinout", function(){
				jQuery("#" + settings['ide'] + " .boxInnerWrapper").fadeIn("fast"); 
				jQuery("#" + settings['ide'] + " .boxInnerWrapperThumb").hide(0);
			});
		});
	
	}
	
	//Function to close box
	function closeBox(settings) {
	
		location.hash = "";
		blockui(false);
		var position = settings['thisen'].parent().position();
		$("#" + settings['ide'] + " .boxInnerWrapper").fadeOut("fast", function() {
			settings['thisen'].animate({ 
				width: settings['thisen'].parent().css('width'),
				height: (settings['thisen'].parent().height()),
				left: position.left,
				top: position.top
			}, 450, "easeinout", function(){
				settings['thisen'].css('z-index',settings['thisen'].parent().css('z-index'));
				jQuery("#" + settings['ide'] + " .boxInnerWrapperThumb").fadeIn("fast");
				jQuery("#" + settings['ide'] + " .boxInnerWrapper").hide(0);
			});
		});
	
	}
	
	$('.box').click(function() {
		//Variables
		var settings = new Array();
		settings['position'] = $("#content").position();
		settings['ide'] = $(this).parent().attr('id');
		settings['title'] = $(this).parent().attr('title');
		settings['thisen'] = $(this);
		settings['goalHeight'] = 500;
		
		if( ( $(this).children('.boxInnerWrapperImage').length > 0 ) && ( $(this).children('.boxInnerWrapper').outerWidth() < $("#content").width() ) ) {
			var totalWidth = 0;
			jQuery(this).children('.boxInnerWrapper').children('img').each(function() {
				totalWidth = totalWidth + parseFloat( $(this).css('width') );
			})
			
			settings['goalWidth'] = ( totalWidth );
		} else {
			settings['goalWidth'] = ( $("#content").width() );
		}
		
		settings['animTime'] = 450;
		
		//Close box
		if(jQuery(this).width() > 300) {
			closeBox(settings);
		//Open box
		} else {
			openBox(settings);
			$('#uiblock').fadeTo("fast",0.5).click( function() { closeBox(settings); } );
		}
	});
	
});