TRU = {
    protect: false,
    changed: false
};

;(function($) {

    $.fn.equalHeights = function() {
		 
        var maxH = 0;
        $(this).each(function () {
            if ($(this).height() > maxH) maxH = $(this).height();
        });
        // for ie6, set height since min-height isn't supported
        if ($.browser.msie && $.browser.version == 6.0)
            $(this).css({ 'height': maxH });
        else
            $(this).css({ 'min-height': maxH }); 
        return this;
    };

    $.fn.tru_gallery = function() {
        return this.each(function () {
											  
            var gallery_id = $(this).attr('id'),
                strip = $('<div class="strip">').appendTo(this);

            var place_arrow = function (icon) {
                $('#'+gallery_id+' .arrow')
                    .css('left', icon.position().left + icon.width() / 2 - 6);
            };

            $('li', this)
                .wrapAll('<div class="full">')
                .slice(1).hide().end()
                .each(function () {
                    var img = $('img', this),
                        a = $('a', this);
								
                    $('<img width="110" height="110">').attr({
                            src: img.attr('src'),
                            alt: img.attr('alt'),
                            rel: img.attr('rel')
                        })
                        .appendTo(strip)
                        .click(function () {
                            var icon = $(this);
									 
                            $('#'+gallery_id+' .full li:visible img:first').fadeOut('fast', function() {
															
										 var src = icon.attr('src');
										 var rel = icon.attr('rel');
										 
										 $(this).attr('src', src);
										 $(this).parent('a').attr('href', rel);
										 
										 $(this).fadeIn('normal');
															
									 });

                            icon.addClass('current').siblings().removeClass('current');
                            place_arrow(icon);
                        });
                });
            $('<img class="arrow" src="/static/images/image.gif" />')
                .appendTo('#' + gallery_id + ' ul:first');
            place_arrow($('img:first', strip));
        });
    };

    $.show_dialog = function(title, html) {
        $('#dialog')
            .empty()
            .append(html);
        tb_show(title, '#TB_inline?width=460&height=300&inlineId=dialog', false);
    };

    $.add_to_cart = function() {return true;
        return this.each(function () {
            var form = $(this);
            
            form.submit(function () {
                $.getJSON('/add-to-cart-check/', function (data) {
                    $.show_dialog('Enter Your Postcode', $(data.html).find('.content'));
                });
                return false;
            });
        });
    };

    TRU.do_postcode_check = function() {
        var form = $(this),
            postcode = $('#id_postcode', form).val(),
            url = form.attr('action');

        form.removeClass('error');
        $.post(url, {'postcode': postcode}, function (data) {
            if (data.result == 'ok') {
                $.show_dialog('Postcode Check', $(data.html).find('.content'));
            } else {
                form
                    .addClass('error')
                    .find('#id_postcode')
                        .select();
            }
        }, 'json');
        return false;
    };

    TRU.init_overlay = function() {
        $('<div id="dialog" class="dialog">').appendTo('body');
        //overlay = $("#overlay").overlay({
        //    api: true,
        //    speed: 0,
        //    fadeInSpeed: 0
        //});
    };

    TRU.do_cart_change = function(evt) {
        var form = $(this),
            cell = form.parent(),
            button = $('input[name=change]', form);

        var _enable = function (c, val) {
            var el = $('.' + c + ' input[type=submit]', cell);
            if (val)
                el.removeAttr('disabled');
            else
                el.attr('disabled', 'disabled');
        };
		  
        evt.preventDefault();
        $.post(form.attr('action') + 'ajax/', {
            'cartitem': $('input[name=cartitem]', form).val(),
            'change': button.val()
        }, function (data) {
			  
            // Error
            if (data.result != 'ok') {
                alert(data.text);
            // Cart should be completely refreshed (probably emptied)
            } else if (data.reload) {
                $('#content .content')
                    .load(document.location.href + ' #cart', function () {
                        TRU.init_cart();
                    });
                if (data.cart_count)
                    $('span.cart-count').html('(' + data.cart_count + ')');
                else
                    $('span.cart-count').empty();
            // Item changed or removed
            } else { 
                if (data.qty == 0)
                    form.parents('tr').remove();
                else { 
                    $('span', form.parent()).text(data.qty);
                    _enable('qty-up', data.up_ok);
					//$('span.item-ttl').text("$" + (data.qty * data.unit_price));					
                }
                $('span.cart-total').html(data.cart_total);
                $('span.shipping').html(data.shipping);
                $('span.order-total').html(data.order_total);
                $('span.cart-count').html('(' + data.cart_count + ')');
					 
					  // ds mod to update item total and grand total
					  var parent = form.parents('tr');
					  var list_price = parseFloat(parent.find('.list-price').text().replace('$', '').replace(',', ''));
					  var quantity = parseInt(parent.find('.qty').text());
					  var change_by = parseInt(form.find('input[name=change]').val());
					  var item_total = parseFloat(parent.find('.item-ttl').text().replace('$', '').replace(',', ''));
					  
					  // calculate new item total based on change
					  item_total += list_price * change_by;
					  
					  // write new item total to screen
					  parent.find('.item-ttl').text('$' + item_total.toFixed(2));							 
					 
					 var cart_total = parseFloat(data.cart_total.replace('$', '').replace(',', ''));
					 var shipping = parseFloat(data.shipping.replace('$', '').replace(',', ''));
					 
					 $('span.order-total').html('$' + (cart_total + shipping).toFixed(2));
            }
        }, 'json');
    };

    TRU.do_cart_remove = function(evt) {
        var form = $(this);

        evt.preventDefault();
        $.post(form.attr('action') + 'ajax/', {
            'cartitem': $('input[name=cartitem]', form).val()
        }, function (data) {
            // Error
            if (data.result != 'ok') {
                alert(data.msg);
            // Cart should be completely refreshed (probably emptied)
            } else if (data.reload) {
                $('#content .content')
                    .load(document.location.href + ' #cart', function () {
                        TRU.init_cart();
                    });
            // Item removed
            } else {
                form.parents('tr').remove();
                $('span.cart-total').html(data.cart_total);
                $('span.shipping').html(data.shipping);
                $('span.order-total').html(data.order_total);
                $('span.cart-count').html('(' + data.cart_count + ')');
            }
        }, 'json');
    };

    TRU.init_cart = function() {
        $('#cart .qty-form').submit(TRU.do_cart_change);
        $('#cart .remove-form').submit(TRU.do_cart_remove);
    };

    TRU.protect = function() {
        TRU.protect = true;
        window.onbeforeunload = function() {
            if (TRU.changed && TRU.protect)
                return 'You have unsaved changed.';
        }
        $('input, select').change(function() {
            TRU.changed = true;
        });
        $('form').submit(function() {
            TRU.protect = false;
        });
    };

})(jQuery);

shopNavController = function (id, imgPath) {
	
	var nav = $(id); // tree nav
	
	if (nav.length <= 0) { return false; } // nav doesn't exist
	
	var self;
	
	var test = $('#css-bru').attr('href');
	var bru = (test)?'bru/':'';
	
	// add class to all top level list elements in nav
	nav.find('ul:first > li').addClass('top');
	
	// loop through all top level list elements
	nav.find('li.top').each(function() {
		self = $(this);
		self.find('a:first').addClass('nav-link');	// place marker on all top level links

		// if top level nav item has sub elements
		if ($(this).find('li').length > 0) {
			var tree = 'plus';
			
			// if top level nav item is currently selected
			if (self.find('a.current').length > 0) { 
				tree = 'minus';
			} 
			// add expander icon plus or minus 
			self.prepend('<a href="#" class="nav-trigger"><img src="' + imgPath + bru + 'bn-tree-' + tree + '.gif" width="9" height="9"></a>');				
		}
	});
	
	// open current by default
	if (nav.find('a.current').length > 0) {
		
		if (nav.find('a.current').siblings('ul').length > 0)
		{
			nav.find('a.current').siblings('ul').slideDown('normal');
		} else {
			nav.find('a.current').parents('ul').slideDown('normal');			
		}
	}
	
	// event handler for nav hide/show
	nav.find('.nav-trigger').click(function(e) {
		e.preventDefault();	
		var self = $(this).find('img');	// place marker on clicked image
		
		// animate open/close based on visibility
		$(this).siblings('li ul').slideToggle('normal', function() {

			// switch expander graphic plus/minus
			src = self.attr('src')
			if ($(this).is(':visible')) {
				src = src.replace('plus', 'minus');
			} else {
				src = src.replace('minus', 'plus');				
			}
			self.attr('src', src);
		});
	});
	
	return true;
}

	// Function to add leading 0's
	function pad(number, length) {	   
		var str = '' + number;
		while (str.length < length) {
			str = '0' + str;
		}	   
		return str;	
	}


$(function() {
    $('<div id="dialog" class="dialog" style="display: none">').appendTo('body');
    $('#postcode-check').submit(TRU.do_postcode_check);
//	$('#category-tree a:contains(Nursery Furniture)').append('<img src="/static/images/bru/icon-new.png" class="png2" width="47" height="22" style="position:absolute; top:0.5em; right:0px;" />')
	
	// load IE6 png fix
	correctPNG();
	
	// CCV display
	$('a.ccv').click(function(e) {
		e.preventDefault();									  
		$('div.ccv').slideToggle('normal');									  
	});
	
	shopNavController('#category-tree', '/static/images/');
	shopNavController('#xmas-category-tree', '/static/images/campaigns/2009/christmas/');
	shopNavController('#r-picks-category-tree', '/static/images/campaigns/2009/r-picks/');
	
	// Sub Navigation animation
/*	$('#category-tree').accordion({ 
		autoheight: false,
		active: '.selected', 
		selectedClass: 'active', 
		header: "ul li a" 			
	});*/

	$('.content a h1').parent('a').addClass('no-underline'); // Remove Underline from ie CMS h1's
	
	// Countdown Function
	window.setInterval(function() {
		$('.clock').each(function(i, clock) {
			var seconds = Number($(clock).find('.seconds').text());
			if (seconds <= 0) {
				$(clock).find('.message-block').show('slow');
				$(clock).find('.countdown-block').hide('slow');
			} else {
				// Calculate variables									
				var days = pad(Math.floor(seconds / 86400),2);
				var hours = pad(Math.floor((seconds - (days * 86400 ))/3600),2);
				var mins = pad(Math.floor((seconds - (days * 86400 ) - (hours *3600 ))/60),2);
				var secs = pad(Math.floor((seconds - (days * 86400 ) - (hours *3600 ) - (mins*60))),2);
				//display variables
				$('li.secs').text(secs);
				$('li.mins').text(mins);
				$('li.hours').text(hours);
				$('li.days').text(days);
			}
			seconds -= 1;
			$(clock).find('.seconds').text(seconds)
		});
	}, 1000);
	
	$('#submit-order').submit(function(e) {
		$(this).find('.cart-buttons input[type=image]').attr('disabled', 'disabled');
		$(this).find('.cart-buttons input[type=image]').addClass('disabled');
	});
	
});
