function url(url)
{
	if ( ! url) url = '';
	return $('base').attr('href')+url;
}

function trim(str, length)
{
	if (str.length > length)
	{
		str = str.substr(0, length)+'...';
	}

	return str;
}

function hash_query()
{
	return location.href.replace(/.*?#/, '');
}

/**
 * Takes a hash string, parses it for vars, and updates form fields
 *
 * @param string form id
 */
function hash_to_form(form)
{
	query = $.parseQuery(hash_query());

	for (key in query)
	{
		$('#'+form+' [name='+key+']').val(query[key]);
	}
}

function tooltip_confirm(msg, obj, func)
{
	$('#tooltip-confirm span').text(msg);
	
	var offset = $(obj).offset();

	offset.left += $(obj).outerWidth() / 2 + 5;
	offset.left -= $('#tooltip-confirm').outerWidth();
	offset.top += $(obj).outerHeight() - 4;

	$('#tooltip-confirm').css({ top: offset.top, left: offset.left});
	$('#tooltip-confirm').show();
	$('#tooltip-confirm').attr('tabindex', 0);
	$('#tooltip-confirm').focus();

	$('#tooltip-confirm .yes').unbind();
	$('#tooltip-confirm .yes').click(function()
	{
		$('#tooltip-confirm').hide();
		func(obj);
	});

}

$(document).ready(function()
{
	$('input, select').each(function(){
		var title = $(this).attr('title');	
		
		if (title)
		{
			$(this).attr('title', '');
			$(this).attr('tooltip', title);
		}
	});

	$('input, select').focus(function(){
		var tooltip = $(this).attr('tooltip');

		if (tooltip)
		{
			var offset = $(this).offset();
			offset.left += $(this).outerWidth();

			$('#tooltip').hide();
			$('#tooltip').css({ top: offset.top, left: offset.left});
			$('#tooltip .content').text(tooltip);
			$('#tooltip').fadeIn();
		}
	});

	$('input, select').blur(function(){
		$('#tooltip').hide();
	});
	
	if ($.modal)
	{
		$.modal.defaults.overlayClose = true;
		$.modal.defaults.opacity = 20;
		$.modal.defaults.autoResize = true;
		$.modal.defaults.onClose = function(dialog){
			$('#tooltip').hide();
			$.modal.close();
		};
		$.modal.defaults.onOpen = function(dialog){
			dialog.container.show();
			dialog.data.fadeIn('fast');	
		};
		$.modal.defaults.onShow = function(dialog){
			dialog.container.css('height', 'auto');
		};
	}

	$('#tooltip-confirm .no').click(function()
	{
		$('#tooltip-confirm').hide();
	});

	$('#tooltip-confirm').blur(function()
	{
		$(this).hide();
	});


	$('a.submit').click(function(){
		$(this).closest('form').submit();
	});

	$('a.button-disabled').click(function(){
		return false;
	});

	$('a.field').click(function(){
		input = $('#'+$(this).attr('input'));
		input.val($(this).attr('val'));
		input.closest('form').change();
		return false;
	});
	
	$('ul.dropdown li').hover(function()
	{
		if ( ! $(this).hasClass('disabled'))
		{
			$(this).addClass('hover');
			$(this).find('ul').show();
		}
	}, 
	function()
	{
		$(this).find('ul').hide();
		$(this).removeClass('hover');
	});
	
	$('#login-link').click(function()
	{
		$('#login').modal();
		$('#login-username').focus();
		return false;
	})
});

