/**
 * Copyright (c) 2010 Thai Huynh
 * http://www.functional-interactive.com
 */
;jQuery.noConflict();

(function($, undefined) {

	/**
	 * Create slug from a string
	 */
    $.makeSlug = function(str) {
        str = str.replace(/\./g, ' ');
        str = str.replace(/^\s+|\s+$/g, ''); // trim

        // remove accents, swap Ã± for n, etc
        var from = "Ã€ÃÃ„Ã‚ÃˆÃ‰Ã‹ÃŠÃŒÃÃÃŽÃ’Ã“Ã–Ã”Ã™ÃšÃœÃ›Ã Ã¡Ã¤Ã¢Ã¨Ã©Ã«ÃªÃ¬Ã­Ã¯Ã®Ã²Ã³Ã¶Ã´Ã¹ÃºÃ¼Ã»Ã‘Ã±Ã‡Ã§Â·/_,:;";
        var to   = "aaaaeeeeiiiioooouuuuaaaaeeeeiiiioooouuuunncc------";
        for (var i=0, l=from.length ; i<l ; i++) {
            str = str.replace(from[i], to[i]);
        }

        str = str.replace(/[^a-zA-Z0-9 -]/g, '') // remove invalid chars
            .replace(/\s+/g, '-') // collapse whitespace and replace by -
            .replace(/-+/g, '-') // collapse dashes
            .toLowerCase();
        return str;
    };

	$.hex = function(x) {
		var hexDigits = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
		return isNaN(x) ? "00" : hexDigits[(x - x % 16) / 16] + hexDigits[x % 16];
	};

	$.RGB2Hex = function(rgb) {
		if (rgb.substr(0, 1) == '#') {
			return rgb;
		}

		rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);
	 	return "#" + $.hex(rgb[1]) + $.hex(rgb[2]) + $.hex(rgb[3]);
	};

	/**
	 * Allow an input to have a default value when not focused
	 */
    $.fn.autoInput = function(options) {

        options = $.extend({
            defaultText: 'Default Text'
        }, options || {});

        return this.each(function() {
            var el = $(this);
            el.attr('default', options.defaultText)
              .focus(function() {
                  var el = $(this);
                  if (this.value == el.attr('default')) {
                      this.value = '';
                  }
              })
              .blur(function() {
                  var el = $(this);
                  if (this.value == '' || this.value == el.attr('default')) {
                      this.value = el.attr('default');
                  }
              }).
              trigger('blur');
        });
    };

	/**
	 * Carousel for the home page
	 */
	$.fn.carousel = function(options) {
		var defaults = {
			duration: 5000,
			speed: 1000
		};

		var curIdx = 0, animInterval = null, totalItems = 0;
		options = $.extend(defaults, options);

		var el = $(this);
		totalItems = el.find('.carousel').length;
		el.find('.carousel').hide(0);
		el.find('.carousel:first').show(0);

		var navigation = '<ul class="carousel-nav" id="'+el.attr('id')+'-navigation">';
		for (var i = 0; i < totalItems; i++) {
			navigation += '<li><a rel="'+i+'" class="'+(i == curIdx ? 'selected' : '')+'"></a></li>';
		}

		navigation += '</ul>';
		this.append(navigation);
		navigation = $('#'+el.attr('id')+'-navigation');
		navigation.css('left', Math.floor((el.width() - navigation.width())/2));

		navigation.find('a').click(function() {
			var idx = $(this).attr('rel');
			el.find('.carousel:eq('+curIdx+')').fadeOut(options.speed);
			navigation.find('li:eq('+curIdx+') a').removeClass('selected');
			el.find('.carousel:eq('+idx+')').fadeIn(options.speed);
			navigation.find('li:eq('+idx+') a').addClass('selected');
			curIdx = idx;

			window.clearInterval(animInterval);
			startInterval();
			return false;
		});

		function startInterval() {
			animInterval = window.setInterval(function() {
				el.find('.carousel:eq('+curIdx+')').fadeOut(options.speed);
				navigation.find('li:eq('+curIdx+') a').removeClass('selected');
				curIdx++;
				if (curIdx >= totalItems) {
					curIdx = 0;
				}
				el.find('.carousel:eq('+curIdx+')').fadeIn(options.speed);
				navigation.find('li:eq('+curIdx+') a').addClass('selected');
			},
			options.duration);
		}

		startInterval();
	};

	/**
	 * Gallery for product view
	 */
	$.fn.simpleGallery = function(options) {
		var defaults = {
			speed: 300,
			thumbnailWidth: 75
		};

		options = $.extend(defaults, options);
		var self = this;
		var thumbnails = this.find('.more-views li a');
		var image = this.find('.product-image img');
		var moreView = this.find('.more-views');
		var curIdx = 0;

		var w = options.thumbnailWidth * thumbnails.length;
		var left = Math.floor(self.width() - w)/2 + 5;
		moreView.css('left', left);

		// bind left/right arrow pagination
		$(document).keyup(function(e) {
			if (e.keyCode == 39) { // right arrow
				curIdx++;
				if (curIdx >= thumbnails.length) {
					curIdx = 0;
				}

				self.find('.more-views li a:eq('+curIdx+')').trigger('click');
			}
			else if (e.keyCode == 37) { // left arrow
				curIdx--;
				if (curIdx < 0) {
					curIdx = (thumbnails.length - 1);
				}

				self.find('.more-views li a:eq('+curIdx+')').trigger('click');
			}
		});

		// bind large image click
		image.click(function() {
			curIdx++;
			if (curIdx >= thumbnails.length) {
				curIdx = 0;
			}

			self.find('.more-views li a:eq('+curIdx+')').trigger('click');
		});

		thumbnails.click(function() {
			var src = this.href;
			var el = $(this);
			curIdx = el.attr('rel');
			thumbnails.parent('li').removeClass('selected');
			el.parent('li').addClass('selected');
			image.fadeOut(options.speed, function() {
				image.attr('src', src);
				image.load(function() {
					image.fadeIn(options.speed);
				});
			});
			return false;
		});
	};

	$.fn.pressRelease = function(options) {
		var defaults = {
			speed: 800
		};

		options = $.extend(defaults, options);

		this.find('li').hover(function() {
			var el = $(this);
			var first = el.find('img:first');
			var last = el.find('img:last');

			first.fadeOut(options.speed);
			last.fadeIn(options.speed);
		},
		function() {
			var el = $(this);
			var first = el.find('img:first');
			var last = el.find('img:last');

			first.fadeIn(options.speed);
			last.fadeOut(options.speed);
		});

		this.find('li:last').after('<div class="clear"></div>');
	};

    $.fn.collections = function() {

        this.find('li').each(function(x) {
            var p = 'cover';
            if (x > 0) {
                p = ((x*2));
            }
            $(this).append('<span class="page-left">'+p+'</span><span class="page-right">'+((x*2)+1)+'</div>');
        });

        var btnGoList = [];
        var totalItems = this.find('li').length;
        var pageHtml = '<a href="/collections"><span class="laquo">&laquo;</span> back</a>';
        for (var i = 0; i < totalItems; i++) {
            var p = (i == 0) ? 'cover' : i*2;
            btnGoList.push("."+i)
            pageHtml += '<a class="page page-index '+i+'" rel="'+(i)+'">'+p+'</a>';
        }

        var navBar = '<div class="nav-bar collections">'+
                         '<div class="pages">'+
                             pageHtml+
                         '</div>'+
                         '<ul class="pager">'+
                             '<li class="first"><a class="previous" title="Previous" href="#">Previous</a></li>'+
                             '<li class="last"><a class="next" title="Next" href="#">Next</a></li>'+
                         '</ul>'+
                         '<div class="clear"></div>'+
                     '</div>';

		this.parent().before(navBar);

        $('a.page').click(function() {
            $('a.page').removeClass('current');
            $(this).addClass('current');
            return false;
        });

        $('a.page.0').addClass('current');

        this.jCarouselLite({
            btnNext: '.next',
            btnPrev: '.previous',
            btnGo: btnGoList,
            speed: 600,
            circular: true,
            visible: 1,
            afterEnd: function(carousel, idx) {
                if (idx > totalItems) {
                    idx = idx%totalItems;
                }
                else if (idx == 0) {
                    idx = totalItems;
                }
                $('a.page').removeClass('current');
                $('a.'+(idx-1)).addClass('current');
            }
        });

        $(document).keyup(function(e) {
            if (e.keyCode == 39) {
                $('a.next').click();
            }
            else if (e.keyCode == 37) {
                $('a.previous').click();
            }
        });

        return this;
    };

	$(document).ready(function() {

        if ($('.cms-home').length) {
            $('#featured-items').carousel();
        }
        else {
        	var txt = $('.page-title h1').text();
        	$('.page-title h1').html('<span class="pt-ribbon"></span>'+txt);
        }
        
        $('.page-title').after('<div class="clear"></div>');

		// aligning images inside blog post center
		if ($('.post-entry').length) {
			$('.post-entry img').each(function() {
				$(this).parents('p').addClass('center');
			});

			if (typeof SHORTNAME != "undefined") {
				$('.comment-count').disqusLink(SHORTNAME);
			}
		}

        // global
        $('#newsletter, #email').autoInput({
            defaultText: 'Enter Email Address'
        });

		if ($('.product-image').length) {
			$('.product-media-container').simpleGallery();
		}

		if ($('.cms-press')) {
			$('.press-items li:nth-child(4n)').addClass('last');
			$('.press-items').pressRelease();
		}
		
		if ($('.cms-collections').length) {
			$('.collections-items li').removeClass('last');
			$('.collections-items li:nth-child(4n)').addClass('last');
		}

		$('#pass').autoInput({
			defaultText: 'Enter Password'
		});

		$('.jtipsy').tipsy();

		if ($.browser.msie && $('.checkout-onepage-index').length == 0) {
			DD_roundies.addRule('button', '3px');
            DD_roundies.addRule('.pages a', '3px');
			if ($('#disqus_thread').length) {
				setTimeout(function() {
					DD_roundies.addRule('.toolbar-item', '3px');
				},
				3000);
			}
		}

		$('img.size-full').each(function() {
			if (this.width > 580) {
				this.width = 580;
			}
		});

        if ($('.cms-collections').length) {
            $('.carousel').collections();
        }

        if ($.browser.mozilla) {
            $('body').addClass('firefox');
        }
	});

})(jQuery);

function toggleMenu(el, over)
{
    if (over)
    {
        Element.addClassName(el, 'over');
    }
    else
    {
        Element.removeClassName(el, 'over');
    }
}
