$(document).ready(function()
{
	
	$('.jsUnhide').removeClass('jsUnhide');
	$('.jsHide').css('display', 'none');
	sliderInit();
	jCarouselLiteInit();
	starInit();
	helpTipInit();
	modalInit();
	
});






function jCarouselLiteInit(container)
{
	if (typeof(container) == 'undefined') {
		container = document;
	}
	
	$('.jCarouselLite', container).each(function(){
		var prevId = 'jCarouselLitePrev-'+ new Date().getTime();
		var nextId = 'jCarouselLiteNext-'+ new Date().getTime();

		$(this).prepend('<a href="#" class="jCarouselLitePrev" id="'+prevId+'">Prev</a>');
		$(this).append('<a href="#" class="jCarouselLiteNext" id="'+nextId+'">Next</a>');
		$(this).append('<div class="clear"></div>');
		$('.jCarouselLiteInner', this).jCarouselLite({
			visible: 2,
			btnPrev: '#'+prevId,
			btnNext: '#'+nextId
		});
		$('#'+prevId).height($('.jCarouselLiteInner', this).innerHeight());
		$('#'+nextId).height($('.jCarouselLiteInner', this).innerHeight());
		
	});
}
function modalInit(container)
{
	if (typeof(container) == 'undefined') {
		container = document;
	}
	
	$('a[rel="modal"]', container).each(function(){
			$(this).click(function(){
			var box = $('<div>Loading...</div>').attr({
				'title': $(this).attr('title')
			}).dialog({
				'width': 800,
				'height': 500,
				'modal': true,
				'overlay': {
					'background-color': 'black',
					'opacity': .5
				}
			}).load($(this).attr('href'));
			return false;
		});
	});
}

/** 
 * Star Rating Functions
 */
function starInit(container)
{
	if (typeof(container) == 'undefined') {
		container = document;
	}
	$('ul.star li a', container)
		.each(function(){
			$(this).attr('href', $(this).attr('href') + '?js=1');
		})
		.hover(
			function() {
				$(this).parent().prevAll().find('a').addClass('hover');
			},
			function(){
				$(this).parent().prevAll().find('a').removeClass('hover');
			}
		).click(function(){
			ajaxMessage();
			var thisStar = this;
			$.getJSON($(this).attr('href'), function(data, textStatus){
				ajaxMessage(data.message, data.messageClass);
				if (data.success) {
					var score = data.payload;
					var container = $(thisStar).parents('ul.star');
					var count = 0;
					$('li', container).each(function(){
						$(this).removeClass('full half');
						count++;
						
						if (score >= count) {
							$(this).addClass('full');
						}
						else 
							if (score >= count - .5) {
								$(this).addClass('half');
							}
					});
					$(container).effect('highlight');
				}
			});
			return false;
		});
}





/**
 * Slider Functions
 */
function sliderInit() 
{
	$('.sliderBox').each(function() {
		var container = $(this).parent();
		var sliderFrame = $('.sliderFrame', container);
		//sliderFrame.addClass('current');
		sliderInitPagingLinks(container);
	});
	
}
function sliderInitPagingLinks(container)
{	
	$('.paging a', container).click(function(){
		sliderSlideContent(container, $(this).attr('href'));
		return false;
	});
}

function sliderLoadContent(container, href) {
	$(container).load(href, function() {
		sliderInit();
	});
}

function sliderSlideContent(container, href)
{
	var currentPage = $('.paging .current', container).html();
	var sliderBox = $('.sliderBox', container);
	var sliderFrame = $('.sliderFrame', container);
	$.get(href, function(data){
		var newHtml = $('<div>'+data+'</div>');
		var newSliderFrame = $('.sliderFrame', newHtml);
		var newPaging = $('.paging', newHtml);
		var newPage = $('.current', newPaging).html();
		var boxWidth = sliderBox.innerWidth();
		
		var start = {'sliderFrame': 0, 'newSliderFrame': '100%'};
		var end = {'sliderFrame': '-100%', 'newSliderFrame': '0'};
		if(currentPage > newPage) {
			start = {'sliderFrame': 0, 'newSliderFrame': '-100%'};
			end = {'sliderFrame': '100%', 'newSliderFrame': '0'};	
		}
		
		sliderBox.height(sliderFrame.outerHeight()).css('overflowY', 'hidden');
		sliderFrame.css({'position': 'absolute', 'top': 0, 'left': start['sliderFrame']});
		newSliderFrame.css({'position': 'absolute', 'top': 0, 'left': start['newSliderFrame']});
		$('.paging', container).html(newPaging.html());
		sliderInitPagingLinks(container);
		sliderBox.append(newSliderFrame);
		starInit(container);
		helpTipInit(container);
		
		sliderFrame.animate({'left': end['sliderFrame']}, 500, null, function(){sliderFrame.remove();});
		newSliderFrame.animate({'left': end['newSliderFrame']}, 500, null, function(){
			sliderBox.animate({'height': newSliderFrame.outerHeight()}, 250, null, function(){
				sliderBox.height('');
				newSliderFrame.css({'position': '', 'top': '', 'left': ''});
			});
		});
		
		
	});
}

/**
 * HelpTip functions
 */
function helpTipInit(container)
{
	if (typeof(container) == 'undefined') {
		container = document;
	}
	$('.helpTip', container)
		.hover(
			function(e) {
				var tip = $('.tip', this).html();
				$('body').append('<div id="helpTip">' + tip + '</div>');
				var css = {'position': 'absolute', 'display': 'none', 'maxWidth': '250px'};
				if (e.pageY - $(document).scrollTop() > window.innerHeight / 2) {
					css.bottom = (window.innerHeight - e.pageY + 10) + 'px';
					css.top = '';
				}
				else {
					css.top = (e.pageY + 20) + 'px';
					css.bottom = '';
				}
				
				if (e.pageX - $(document).scrollLeft() > window.innerWidth / 2) {
					css.right = (window.innerWidth - e.pageX + 10) + 'px';
					css.left = '';
				}
				else {
					css.left = (e.pageX + 10) + 'px';
					css.right = ''
				}
				
				
				$('#helpTip')
					.css(css)
					.fadeIn('500');
			},
			function() {
				$('#helpTip').remove();
			}
		)
		.mousemove(function(e){
			var css = {};
			if (e.pageY - $(document).scrollTop() > window.innerHeight / 2) {
				css.bottom = (window.innerHeight - e.pageY + 10) + 'px';
				css.top = '';
			}
			else {
				css.top = (e.pageY + 20) + 'px';
				css.bottom = '';
			}
			
			if (e.pageX - $(document).scrollLeft() > window.innerWidth / 2) {
				css.right = (window.innerWidth - e.pageX + 10) + 'px';
				css.left = '';
			}
			else {
				css.left = (e.pageX + 10) + 'px';
				css.right = ''
			}
			$('#helpTip').css(css);
		});
}

/**
 * Ajax Functions
 */
function ajaxMessage(message, cssClass)
{	if (typeof(message) == 'undefined' || message == '') {
		$('#ajaxMessageContainer').html('');
		return;
	}
	if (typeof(cssClass) == 'undefined') {
		cssClass = '';
	}
	cssClass = 'message message-' + cssClass;
	
	var newMessage = $('<div>'+message+'</div>');
	var closeLink = $('<a href="#" title="close">X</a>').css({'textDecoration': 'none', 'color': 'inherit', 'float': 'right'}).click(function(){
		ajaxMessage();
		return false;
	});
	newMessage.addClass(cssClass).prepend(closeLink);
	$('#ajaxMessageContainer').css('opacity', .01).html(newMessage).fadeTo(500, 1);
	if ( cssClass.indexOf('error') < 0 ) {
		setTimeout(function(){
			$(newMessage).fadeOut(500, function(){
				$(this).remove();
			})
		}, 3000);
	}
	
}
