function size_navigation(){
    $start_width = $("div#primary_nav_container").width();
    
    $total_elem = $("ul#primary_nav").width();
    
    $elem_cnt = 0;
    $("ul#primary_nav li").each(
	function(index){
	    $elem_cnt++;
	}
    );
    
    $elem_cnt = $elem_cnt - 1;
    
    $addr = Math.floor($start_width - $total_elem) / $elem_cnt;
    $cnt = 0;
    $("ul#primary_nav li").each(
	function(index){
	    $cnt += 1;
	    if ($cnt <= $elem_cnt){
		$(this).width($(this).width() + $addr);
		
	    }
	}
    );
}

$(document).ready(function() {
    if($("div.product_images ul li img") != null){
        $("div.product_images ul li img").mouseover(function(){
            $(this).parent().parent().parent().children("div").children("img").attr("src", $(this).attr("src"));
        });

        (function($) {

            $.extend({
                    add2cart: function(source_id, target_id, callback) {


          var source = $('#' + source_id );
          var target = $('#' + target_id );

          var shadow = $('#' + source_id + '_shadow');
          if( !shadow.attr('id') ) {
              $('body').prepend('<div id="'+source.attr('id')+'_shadow" style="display: none; background-color: #ddd; border: solid 1px darkgray; position: static; top: 0px; z-index: 100000;">&nbsp;</div>');
              var shadow = $('#'+source.attr('id')+'_shadow');
          }

          if( !shadow ) {
              alert('Cannot create the shadow div');
          }

          shadow.width(source.css('width')).height(source.css('height')).css('top', source.offset().top).css('left', source.offset().left).css('opacity', 0.5).show();
          shadow.css('position', 'absolute');

          shadow.animate( { width: target.innerWidth(), height: target.innerHeight(), top: target.offset().top, left: target.offset().left }, { duration: 500 } )
            .animate( { opacity: 0 }, { duration: 100, complete: callback } );

                    }
            });
        })(jQuery);

        $('a.addtocart_link').click(function(evt){
            evt.preventDefault();
            var to_href = $(this).attr("href");

           $.add2cart($(this).attr("from_id"), 'view_cart_btn', function(){
                window.location=to_href;
            });
        });
    }
    
    //size_navigation();
});



/**
 * jQuery.timers - Timer abstractions for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/08/13
 *
 * @author Blair Mitchelmore
 * @version 1.1.3
 *
 **/

jQuery.fn.extend({
	everyTime: function(interval, label, fn, times, belay) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times, belay);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		global: [],
		guid: 1,
		dataKey: "jQuery.timer",
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times, belay) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}
			
			times = times || 0;
			belay = belay || false;
			
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
			
			if (!timers[label])
				timers[label] = {};
			
			fn.timerID = fn.timerID || this.guid++;
			
			var handler = function() {
				if (belay && this.inProgress) 
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};
			
			handler.timerID = fn.timerID;
			
			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,interval);
			
			this.global.push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.timerID ) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
	jQuery.each(jQuery.timer.global, function(index, item) {
		jQuery.timer.remove(item);
	});
});

$(document).ready(function() {
    //NEWSLETTERS
    $("a#newsletter_expand").click(function(){
        if ($("div#newsletter").css("top") == "-60px"){
            $("div#newsletter").animate({
            top: 0
            }, 500, "easeInOutCirc", function(){
                $('a#newsletter_expand').html("&ndash; Newsletter signup");
            });

        } else {
            $("div#newsletter").animate({
            top: "-60px"
            }, 500, "easeOutBounce");
            $('a#newsletter_expand').html("+ Newsletter signup");
        }
    });

    $("a#newsletter_submit").click(function(){
        var email = $("input#newsletter_email").val();
        //TODO: validate email
        $.getJSON('/subscribe/' + email + "/", function(data) {
            if (data["result"] == "success"){
                $('a#newsletter_expand').html("Your email has been submitted!!");
                $("a#newsletter_expand").unbind('click');
                $("div#newsletter").css({"background-color": "#f05b40"});
                $("div#newsletter").animate({
                top: "-60px"
                }, 500, "easeOutBounce");

            } else {
                if (data["text"].indexOf("already subscribed") != -1){
                    $('a#newsletter_expand').html("You have already subscribed.");
                    $("a#newsletter_expand").unbind('click');
                    $("div#newsletter").animate({
                        top: "-60px"
                        }, 500, "easeOutBounce");
                    $('a#newsletter_expand').html("+ Newsletter signup");
                } else {
                    alert("Invalid email, please try again.")
                }
            }
        });
    });

    function newsletter_email_unfocus(){
        var content = $("input#newsletter_email").val();
        if (content == ""){
            $("input#newsletter_email").val("Enter your email address");
        }
    }

    function newsletter_email_focus(){
        var content = $("input#newsletter_email").val();
        if (content == "Enter your email address"){
            $("input#newsletter_email").val("");
        }
    }

    $("input#newsletter_email").focus(newsletter_email_focus);
    $("input#newsletter_email").focusout(newsletter_email_unfocus);

    newsletter_email_unfocus();
});


