//------------------------------------------------------[  ]
// Public: JS
//------------------------------------------------------[  ]

// Event Delegation ------------------------------------[TN]
jQuery.delegate = function(Rules) {
	return function(e) {
		var Target = $(e.target);
		for (var Selector in Rules)
			if (Target.is(Selector)) return Rules[Selector].apply(this, $.makeArray(arguments));
	}
}
//------------------------------------------------------[TN]

// Public Functions Object -----------------------------[TN]
var PublicFunctions = function() {
	This = {
		AffiliateSubmit : function() {
			$('.AFL_Message').html('');
			if ( jQuery.trim( $('.HDR_Affiliate').find(':input[name=Zip]').val() ) == '' ) {
				$('.AFL_Message').html('Please enter your zip code.');
			} else {
				$.post( '/ajax/affiliate.process/', { Zip : jQuery.trim( $('.HDR_Affiliate').find(':input[name=Zip]').val() ) }, function(data) {
					if ( data.Status == 'SUCCESS' ) {
						$('.HDR_Affiliate').html( data.Embed_HTML );
					} else {
						$('.AFL_Message').html( data.Msg );
					}
				},'json' );
			}

			return (false);
		},
		PrintContent : function( Content ) {
			$( $( '#PrintFrame' ).get(0).contentWindow.document.body ).html( Content );
			$( '#PrintFrame' ).get( 0 ).contentWindow.focus(); 
			$( '#PrintFrame' ).get( 0 ).contentWindow.print();
		},
		EmailContent : function() {
			$('.SCL_EmailPanel').find('.SCL_AjaxMessage').html('');
			var PostVars = { 
				'PrimaryKey': $(':input[name=SCL_PrimaryKey]').val(),
				'PrimaryID'	: $(':input[name=SCL_PrimaryID]').val(),
				'Name'		: $(':input[name=SCL_Name]').val(),
				'Email'		: $(':input[name=SCL_Email]').val(),
				'Message'	: $('.SCL_EmailPanel').find(':input[name=SCL_Message]').val(),
				'URL'		: $(':input[name=SCL_URL]').val()
			};
			$.post( '/ajax/send_to_friend.process/', PostVars, function(data) {
				$('.SCL_EmailPanel').find('.SCL_AjaxMessage').html(data.Msg);
			}, 'json');
		},
		PostComment : function() {
			$('.SCL_CommentPanel').find('.SCL_AjaxMessage').html('');			
			var PostVars = { 
				'PrimaryKey': $(':input[name=SCL_PrimaryKey]').val(),
				'PrimaryID'	: $(':input[name=SCL_PrimaryID]').val(),
				'Message'	: $('.SCL_CommentPanel').find(':input[name=SCL_Message]').val() 
			};
			$.post( '/ajax/post_comment.process/', PostVars, function(data) {
				$('.SCL_CommentPanel').find('.SCL_AjaxMessage').html(data.Msg);
				$('.SCL_CommentPanel').find(':input[name=SCL_Message]').val('') 
			}, 'json');
		},
		LoadComments : function( Page ) {
			if ( arguments[1] != null )
				$(':input[name=SCL_PrimaryID]').val( arguments[1] );

			if ( arguments[2] != null )
				$(':input[name=SCL_URL]').val( arguments[2] );

			$('.AJX_CommentWrapper').load( '/ajax/load_comments/?ItemID=' + $(':input[name=SCL_PrimaryID]').val() + '&PrimaryKey=' + $(':input[name=SCL_PrimaryKey]').val() + '&Page=' + Page +'&DisablePrint=' + ( ( arguments[1] != null ) ? 1 : 0 ), function() {
				$('.PAG_Paging').find('a').attr( 'onclick', 'return(false);' );
			});
		},
		PollResults : function( Answers ) {
			$('.POL_VoteButton').remove();
			var Data = '';
			for (var i = 0; i < Answers.length; i++) {
				Data += '<tr><td class="POL_Percent">' + Answers[i].Percent + '%</td><td>' + Answers[i].Answer + '</td></tr>';
				$('.POL_Answers').html(Data);
			}
		}
	};
	return This;
}
var MSJ = new PublicFunctions();
//------------------------------------------------------[TN]

// Listen Slider ---------------------------------------[TG]
var VPI_Slider = function( Config ) {
	var This = function() {

		// Private Vars ----------------------------------------[TG]
		var Offset			= 0;
		var MaxWidth		= 0;
		var GalleryImages	= [];
		var GalleryPointer	= 0;
		var GalleryAnimated	= false;
		var GalleryTimeout	= false;
		//------------------------------------------------------[TG]
		
		// Public Vars -----------------------------------------[TG]
		This._Config = { 
			SlideVal	: 1,
			Speed		: 1,
			ItemWidth	: 36,
			GalleryTimer: 1000
		};
		//------------------------------------------------------[TG]

		// Constructor -----------------------------------------[TG]
		(function() {
			This._Config = $.extend(This._Config, Config);

			$(document).ready(function() { 
				MaxWidth = $('.' + This._Config.Container + ' .Slider .SlideArea ul li').length * This._Config.ItemWidth;

				$('.' + This._Config.Container + ' .BackButton img').click(This.Reset);
				$('.' + This._Config.Container + ' .LeftArrow img').click(This.Left);
				$('.' + This._Config.Container + ' .RightArrow img').click(This.Right);

				$('.' + This._Config.Container + ' .Slider .SlideArea li').live('click', This.SelectDay);
				$('.' + This._Config.Container + ' .Slider .SlideArea li:first').click();
			});
		})();
		//------------------------------------------------------[TG]
		
		// Public Functions ------------------------------------[TG]
		This.Left = function() {
			if (IsAnimating() || Offset <= 0)
				return false;

			$('.' + This._Config.Container + ' .Slider .SlideArea ul').animate({
				'left': '-' + (Offset - 180) + 'px'
			}, 1000);

			Offset = Offset - 180;

			return true;
		}
		This.Right = function() {
			if (IsAnimating() || (Offset + 180) >= MaxWidth)
				return false;

			$('.' + This._Config.Container + ' .Slider .SlideArea ul').animate({
				'left': '-' + (Offset + 180) + 'px'
			}, 1000);

			Offset = Offset + 180;

			return true;
		}
		This.SelectDay = function() {
			var Day = $(this).attr('rel');

			$('.' + This._Config.Container + ' .Slider .SlideArea li').removeClass('Selected');
			$(this).addClass('Selected');

			StopGallery();

			$.getJSON('/ajax/listen.get/', { Day: Day }, BuildShow);
		}
		This.Reset = function() {
			if (This.Left()) {
				setTimeout(This.Reset, 1050);
			} else {
				$('.' + This._Config.Container + ' .Slider .SlideArea li:first').click();
			}
			return false;
		}
		//------------------------------------------------------[TG]

		// Private Functions -----------------------------------[TG]
		function IsAnimating() {
			return ($('.' + This._Config.Container + ' .Slider .SlideArea ul:animated').get(0)) ? true : false;
		}
		function BuildShow(Data) {
			$('.' + This._Config.Container + ' .Shows ul').html('');

			for (var i = 0; i < Data['Audio'].length; i++) {
				$('.' + This._Config.Container + ' .Shows ul').append('<li><a href="/listen/' + Data['Audio'][i].URL + '/">' + Data['Audio'][i].Title + '</a></li>'); 

				if (Data['Audio'][i]['Image'])
					GalleryImages.push(Data['Audio'][i]['Image']);
			}
			
//			if (!GalleryImages.length)
//				$('.' + This._Config.Container + ' .Image').hide();

			$('.' + This._Config.Container + ' .Shows h3').html(Data['ShowTitle']);
			if (Data['Audio'][0]) {
				$('.' + This._Config.Container + ' .MoreButton a').show();
				$('.' + This._Config.Container + ' .MoreButton a').attr('href', '/listen/' + Data['Audio'][0].URL + '/');
			} else
				$('.' + This._Config.Container + ' .MoreButton a').hide();

			StartGallery();
		}
		function StartGallery() {
			if (GalleryImages.length) {
				GalleryAnimated = true;
				$('.' + This._Config.Container + ' .Image').show();
				AnimateGallery();
			}
		}
		function StopGallery() {
			GalleryAnimated = false;
			GalleryImages	= [];
			clearTimeout(GalleryTimeout);
			$('.' + This._Config.Container + ' .Image img').attr('src', '/img/v1/audio_default.jpg');
		}
		function AnimateGallery() {
			if (!GalleryAnimated) 
				return false;

			GalleryPointer = (GalleryPointer + 1 >= GalleryImages.length) ? 0 : GalleryPointer + 1;

			if ($('.' + This._Config.Container + ' .Image img').attr('src') != GalleryImages[GalleryPointer]) {
				$('.' + This._Config.Container + ' .Image img').fadeOut(function() {
					$(this).attr('src', GalleryImages[GalleryPointer]);
					$(this).fadeIn(function() {
						clearTimeout(GalleryTimeout);
						GalleryTimeout = setTimeout(AnimateGallery, This._Config.GalleryTimer);
					});				
				});
			}
		}
		//------------------------------------------------------[TG]

		// Send Back Reference ---------------------------------[TG]
		return This;
		//------------------------------------------------------[TG]

	};
	return This();
};
var Slider = new VPI_Slider({ 
	Name		: 'Slider',
	Container	: 'MAIN_Listen',
	SlideVal	: 5,
	Speed		: 1,
	ItemWidth	: 36,
	GalleryTimer: 4000
});
//------------------------------------------------------[TG]

// Document Ready --------------------------------------[TN]
$(document).ready( function() {
	$('.NAV_Button').hover( 
		function() {
			if ( $(this).hasClass('NAV_Current') )
				$(this).unbind();
			else
				$(this).css('opacity', 'none').addClass('NAV_Hover').animate({'opacity' : '1'}, 'fast');
		},
		function() {
			$(this).animate({'opacity' : '0'}, 'fast', function() { $(this).removeClass('NAV_Hover') });
		}
	);

	$('.MSG_Message').parent().click( function() {
		$(this).remove();
	});
});
//------------------------------------------------------[TN]