var Highwire = {
	slides: undefined,
	upsellSlides: undefined,
	slideWidth: undefined,

	init: function() {
		this.carouselInit();
		this.testimonialInit();
		this.themeInit();
		this.tooltipInit();
		this.signupInit();
		this.upsellInit();
	},

	carouselInit: function() {
		var $carousel = $('.screen-carousel');

		if ($carousel.length) {
			this.slides = $carousel.find('ul');

			var $slide = this.slides.find('li');
			var slides = $slide.length;

			$slide.each(function(k, v) {
				$(this).attr('data-id', k + 1);
			});

			this.slideWidth = $slide.outerWidth();
			this.slides.css({
				'width': this.slideWidth * slides,
				'left' : '281px'
			});

			$carousel.find('.page').click(function(e) {
				e.preventDefault();
				Highwire.carouselPage($(this));
			});

			this.changeSlide($carousel.find('li.current').data('id'));
		}
	},

	carouselPage: function($p) {
		var currentSlide = parseInt(this.slides.find('li.current').data('id'));
		var maxSlide     = parseInt(this.slides.find('li').length)
		var nextSlide;

		if ($p.hasClass('next')) {
			nextSlide = (currentSlide == maxSlide ? 1 : currentSlide + 1);
		}
		else {
			nextSlide = (currentSlide == 1 ? maxSlide : currentSlide - 1);
		}

		this.changeSlide(nextSlide);
	},

	changeSlide: function(page) {
		var indent = -(this.slideWidth * (page - 1)) + 281;

		this.slides.animate({'left' : indent}, 500, null);
		this.slides.find('li').removeClass('current');
		this.slides.find('li:nth-child(' + page + ')').addClass('current');
	},

	testimonialInit: function() {
		var $testimonials = $('.testimonial-list');

		if ($testimonials.length) {
			var $list  = $testimonials.find('.list li');
			var $pages = $('<ol class="pages"></ol>');

			$list.each(function(k, v) {
				$(this).attr('id', 'testimonial' + (k + 1));
				$pages.append('<li><a href="#testimonial' + (k + 1) + '"></a></li>');
			});

			$pages.find('li:first-child').addClass('current');

			$pages.find('a').click(function(e) {
				e.preventDefault();

				$list.filter('li.current').removeClass('current');
				$list.filter('li' + $(this).attr('href')).addClass('current');

				$pages.find('li.current').removeClass('current');
				$(this).parent().addClass('current');
			});

			$testimonials.append($pages);
		}
	},

	themeInit: function() {
		var $theme = $('.themes .theme');

		if ($theme.length) {
			var $zoom   = $theme.find('.zoom');
			var $thumbs = $theme.find('.thumbs');

			$zoom.find('a').fancybox({
				overlayColor  : '#000',
				overlayOpacity: 0.8,
				transitionIn  : 'elastic',
				transitionOut : 'elastic',
				padding       : 0
			});

			$thumbs.find('a').click(function(e) {
				e.preventDefault();

				$zoom.find('a').attr('href', $(this).attr('href'));
				$zoom.find('img').attr('src', $(this).data('thumb'));
			});
		}
	},

	tooltipInit: function() {
		$('a.help[title]').qtip({
			style: { classes: 'ui-tooltip-dark ui-tooltip-rounded' }
		}).click(function(e) {
			e.preventDefault();
		});
	},

	signupInit: function() {
		$('a.signup-popup').fancybox({
			overlayColor  : '#000',
			overlayOpacity: 0.8,
			padding       : 0,
			type          : 'iframe',
			width         : 720,
			height        : 870,
			autoScale     : false
		});
	},

	upsellInit: function() {
		var $carousel = $('.upsell #content .screenshots');

		if ($carousel.length) {
			this.upsellSlides = $carousel.find('ul.nav');

			var $slide = this.upsellSlides.find('li');
			var slides = $slide.length;

			$slide.each(function(k, v) {
				$(this).attr('data-id', k + 1);
			});

			$slide.find('a').click(function(e) {
				e.preventDefault();
				Highwire.upsellChangeSlide($(this));
			});

			this.upsellChangeSlide($carousel.find('li.current a'));

			setInterval('Highwire.upsellTimer();', 2000);
		}
	},

	upsellChangeSlide: function(page) {
		this.upsellSlides.find('li').removeClass('current');
		this.upsellSlides.find('li:nth-child(' + page.parent().data('id') + ')').addClass('current');

		var src = this.upsellSlides.find('li:nth-child(' + page.parent().data('id') + ') a').data('img');

		$('.upsell #content .screenshot img').attr('src', src);
	},

	upsellTimer: function() {
		var currentPage = parseInt(this.upsellSlides.find('li.current').data('id'));
		var max = parseInt(this.upsellSlides.find('li').length);
		var nextPage = (currentPage == max ? 1 : currentPage + 1);

		this.upsellChangeSlide(this.upsellSlides.find('li[data-id=' + nextPage + '] a'));
	},

};

$(document).ready(function() {
	Highwire.init();
});

