document.createElement("abbr");

$(document).ready(function()
{
    $('div.product-list dl.product, #featured .product').bigLink();

    $('#search .txt').labelToValue();

    $('body').externalLinks();

    $('#featured').contentSlider();

    //$('#navSecondary').navSlider();

    $('.delivery-returns').tabbed();



    // bug fixes
    $('br[clear=all]').remove();

    $('span.btn, #navSecondary').each(function(i)
    {
        if ($(this).children().length == '0')
        {
            $(this).remove();
        }
    });

    $('#CheckoutForm .my-account table tr').each(function(i)
    {
        if ($(this).children().length == '1')
        {
            $(this).remove();
        }
    });
});

$.fn.tabbed = function()
{
    var self = this;

    if (!self.length) return self;

    self.find('h4').click(function(e)
    {
        $(this).parents('.delivery, .returns, .privacy').addClass('current').siblings('.current').removeClass('current');
    });
};

$.fn.contentSlider = function()
{
    var self = this;

    if (!self.length) return self;

    var products = self.find('.products');
    var slide = $('<div class="slide-container"></div>');
    var width = 0;
    var count = 0;

    self.find('.product').each(function(i)
    {
        width += $(this).width() + parseInt($(this).css("padding-left"), 10);
        count++;
    });

    products.width(width).wrap(slide);

    slide = self.find('.slide-container').css({ 'overflow': 'hidden', 'position': 'relative', 'width': (width / count) + 'px' });

    self.find('#navFeatured a').each(function(i)
    {
        $(this).data('pos', i);
    })
    .click(function(e)
    {
        e.preventDefault();

        $(this).parents('dt').addClass('current').siblings('.current').removeClass('current');

        var scroll = (width / count) * $(this).data('pos');

        slide.animate({ scrollLeft: scroll }, 300);
    });

    return self;
};

$.fn.navSlider = function()
{
    var self = this;

    if (!self.length) return self;

    self.find('> li').find('> a').click(function(e)
    {
        e.preventDefault();

        $(this).parents('li').addClass('current').siblings('.current').removeClass('current');
    });

    return self;
};

$.fn.externalLinks = function()
{
    return this.find('a[href^=http]:not([href*=' + location.hostname + '])').attr('target', '_blank');
};

$.fn.labelToValue = function()
{
    var self = this;

    self.focus(function()
    {
        var field = $(this);

        if (this.id)
        {
            var label = $.trim($('label[for="' + this.id + '"]').hide().text());
        }
        else
        {
            return;
        }

        if (field.val() == label)
        {
            field
			.val('')
			.removeClass('label');
        }
        else
        {
            field
			.removeClass('label');
        }
    })
	.blur(function()
	{
	    var field = $(this);

	    if (this.id)
	    {
	        var label = $.trim($('label[for="' + this.id + '"]').hide().text());
	    }
	    else
	    {
	        return;
	    }

	    if (field.val() == label || field.val() == '')
	    {
	        field
			.val(label)
			.addClass('label');
	    }
	})
	.blur()
	.parents('form').submit(function(e)
	{
	    // trigger the focus event to remove label text from field
	    self.focus();
	    // remove all bound events
	    self.unbind();
	});

    return self;
}

$.fn.bigLink = function(selector)
{
    var self = this;
    var selector = selector || 'a[@href]:eq(0)';

    this.click(function(e)
    {
        var link = $(this).find(selector);

        // the first link within the supplied element
        var prevent_default = false;

        //
        var target_is_link = (e.target.nodeName == 'A');

        // check through all click events for preventDefault command (so we know whether to redirect or not)
        var all_events = link.data('events');
        var click_events;

        if (all_events && all_events.click)
        {
            click_events = all_events.click;

            for (var k in click_events)
            {
                if (/\.preventDefault\(\)/.test(click_events[k].toString()))
                {
                    prevent_default = true;
                }
            }
        }

        // trigger all jquery assigned events
        link.triggerHandler('click');

        // if preventDefault has never been assigned to this link then it is safe to do a standard redirect
        if (!prevent_default)
        {
            //document.location = link.attr('href');
            return !window.open(link.attr('href'), link.attr('target') || '_self');
        }
    })
	.hover(function()
	{
	    $(this).addClass('hover');
	},
	function()
	{
	    $(this).removeClass('hover');
	})
	.css('cursor', 'pointer');

    return self;
}