var App =
{
	animationDuration:150
};

App.openWindow = function(url, name, width, height, resizable, scrollbars, statusbar, menubar, toolbar)
{
	var optionString = '';
	if (width) optionString += 'width=' + width + ',';
	if (height) optionString += 'height=' + height + ',';
	if (resizable) optionString += 'resizable=' + resizable + ',';
	if (scrollbars) optionString += 'scrollbars=' + scrollbars + ',';
	if (statusbar) optionString += 'status=' + statusbar + ',';
	if (menubar) optionString += 'menubar=' + menubar + ',';
	if (toolbar) optionString += 'toolbar=' + toolbar + ',';
	win = window.open(url, name, optionString);
	if (win) win.focus();
	return win;
};

App.bindNav = function()
{
	// Product nav
	$('#product-nav li.product-nav-item').hover(function()
	{
		var item = $(this);
		item.find('.flyout').stop(true, true).slideDown(App.animationDuration);
		item.addClass('open');
	}, function()
	{
		var item = $(this);
		item.find('.flyout').slideUp(App.animationDuration);
		item.removeClass('open');
	});

	// Search form/Sign in form close
	var openFlyout = function(parentItem)
	{
		var item = $(parentItem);
		item.find('.search-flyout, .signin-flyout').stop(true, true).slideDown(App.animationDuration);
		item.addClass('open');
	};
	var closeFlyout = function(e, flyout)
	{
		if (!e)
		{
			flyout.slideUp(App.animationDuration);
		}
		else
		{
			var trigger = e.target;
			if (trigger !== flyout[0])
			{
				var hasFlyout = false;
				$(trigger).parents().each(function()
				{
					if (this === flyout[0]) hasFlyout = true;
				});
				if (!hasFlyout) flyout.slideUp(App.animationDuration);
			}
		}
	};
	var closeSearch = function(e) { closeFlyout(e, $('#search-nav-item .search-flyout')); }
	var closeSignin = function(e) { closeFlyout(e, $('#signin-nav-item .signin-flyout')); }
	$('#search-nav-item').hover(function()
	{
		closeSignin();
		openFlyout(this);
	});
	$('#signin-nav-item').hover(function()
	{
		closeSearch();
		openFlyout(this);
	});
	$('body').click(function(e)
	{
		closeSearch(e);
		closeSignin(e);
	});
};

App.bindHomeContent = function()
{
	var content = $('#home-content');
	content.click(function(evt)
	{
		if (evt.target.tagName != 'A')
		{
			if (!content.data('initialPos'))
			{
				content.data('initialPos', content.css('left'));
			}
			if (content.hasClass('open'))
			{
				content.animate({ left:content.data('initialPos') }, App.animationDuration, function() { content.removeClass('open'); } );
			}
			else
			{
				content.animate({ left:0 }, App.animationDuration, function() { content.addClass('open'); } );
			}
		}
	});
};

App.bindProfile = function()
{
	$('#copy-from-billing input').click(function()
	{
		if (this.checked)
		{
			if (App.isWholesaleSite)
			{
				$('#delivery-contact-name').val($.trim($('#billing-last-name').val()));
				$('#delivery-company-name').val($.trim($('#billing-first-name').val()));
			}
			else
			{
				$('#delivery-contact-name').val($.trim($('#billing-first-name').val() + ' ' + $('#billing-last-name').val()));
			}
			$('#delivery-street-address').val($.trim($('#billing-street-address').val()));
			$('#delivery-suburb-city').val($.trim($('#billing-suburb-city').val()));
			$('#delivery-state-province').val($.trim($('#billing-state-province').val()));
			$('#delivery-country').val($.trim($('#billing-country').val()));
			$('#delivery-postcode').val($.trim($('#billing-postcode').val()));
			$('#delivery-phone').val($.trim($('#billing-phone').val()));
			$('#delivery-mobile').val($.trim($('#billing-mobile').val()));
		}
	});
};

App.bindPrintTriggers = function()
{
	$('.print-trigger').click(function()
	{
		window.print();
		return false;
	});
}

App.bindDefaultValues = function()
{
	$('input.default-value').each(function()
	{
		var ipt = $(this);
		var title = ipt.attr('title');
		if (!ipt.val()) ipt.val(title);
		var setClass = function()
		{
			if (ipt.val() == title) ipt.addClass('defaulted');
			else ipt.removeClass('defaulted');
		};
		ipt.focus(function()
		{
			if (ipt.val() == title) ipt.val('');
			setClass();
		});
		ipt.blur(function()
		{
			if (!$.trim(ipt.val())) ipt.val(title);
			setClass();
		});
		setClass();
	});
};

$(document).ready(function()
{
	App.bindNav();
	App.bindHomeContent();
	App.bindProfile();
	App.bindPrintTriggers();
	App.bindDefaultValues();
});



