/* ---------------------------------------------------------
	more accessible "hover" function
	<http://groups.google.com/group/jquery-en/browse_thread/thread/3042924a08d3fa53>
--------------------------------------------------------- */

jQuery.fn.extend({ 
	hover: function(fnOver, fnOut) { 
		return this.bind('mouseover focus', fnOver).bind('mouseout blur', fnOut); 
	}
});



/* ---------------------------------------------------------
	document load
--------------------------------------------------------- */

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

function init(){
	add_video_players();
};






/* ---------------------------------------------------------
	navigation slider
--------------------------------------------------------- */

$(document).ready(function(){

	$('#nav-main li a').hover(function() {
		$el = $(this);
		leftPos = ($el.parent().position().left + 10);
		newWidth = ($el.parent().width() - 20);
		$slider.stop().show().animate({
			left: leftPos,
			width: newWidth
		});
	}, function() {
		if ($section != 'home') {
			$slider.stop().animate({
				left: $slider.data('origLeft'),
				width: $slider.data('origWidth')
			});
		};
	});

	var $el, leftPos, newWidth,
		$section = $('body').attr('id'),
		$mainNav = $('#nav-main');
	
	$mainNav.append('<div id="slider"></div>');
	var $slider = $('#slider');
	
	if ($('#nav-main li.current').length){
		$slider
		.width(($('#nav-main li.current').width() - 20))
		.css('left', ($('#nav-main li.current').position().left + 10))
		.data('origLeft', $slider.position().left)
		.data('origWidth', $slider.width());
	} else {
		$slider
		.width(($('#nav-main li:first-child').width() - 20))
		.css('left', ($('#nav-main li:first-child').position().left + 10))
		.data('origLeft', $slider.position().left)
		.data('origWidth', $slider.width());
	}
	
	$('#nav-main li a').hover(function() {
		$el = $(this);
		leftPos = ($el.parent().position().left + 10);
		newWidth = ($el.parent().width() - 20);
		$slider.stop().show().animate({
			left: leftPos,
			width: newWidth
		});
	}, function() {
		if ($section != 'home') {
			$slider.stop().animate({
				left: $slider.data('origLeft'),
				width: $slider.data('origWidth')
			});
		};
	});
});





/* ---------------------------------------------------------
	pagination
--------------------------------------------------------- */

$(document).ready(function(){

	// preload ajax-loader.gif
	var loading = $('<img />').attr({
		className: 'loading',
		src: '/themes/site_themes/default_site/images/ajax-loader.gif',
		width: '16',
		height: '16',
		alt: 'please wait…'
	});
	
	// remove prev entries link
	$('#pagination .prev').remove();
	
	$('#pagination a').click(load_new_entries);
	
	function load_new_entries() {
		
		// get new url
		var href = $(this).attr('href');
		
		// remove pagination link
		$(this).parent().html(loading);

		// get new content
		$.get(href, function(data){
			
			// remove old pagination container
			$('#pagination').remove();
			
			var new_content = $(data).find('#main-content').html();
			
			$('#main-content').append(new_content).find('h1.tagged:gt(0), #pagination .prev').remove();
			
			$('#pagination a').unbind().click(load_new_entries);
			
			// reload onload functions
			init();
			Cufon.refresh();
        });

		return false;
	}
});






/* ---------------------------------------------------------
	video players
--------------------------------------------------------- */

function add_video_players() {

	$('.video-player > a').parent().each(function(i){
		var file = $(this).find('a').attr('href');
		var image = $(this).find('img').attr('src');
		
		var flashvars = {
			file: file,
			skin: '/media_player/skins/glow.zip',
			image: image,
			id: 'flv-player_' + i,
			controlbar: 'over'
		};
		var params = {
			src: '/media_player/player.swf',
			allowscriptaccess: 'always',
			wmode: 'transparent',
			id: 'flv-player_' + i
		};

		$(this).flashembed(params, flashvars);
	});
}





/* ---------------------------------------------------------
	music player
--------------------------------------------------------- */

$(document).ready(function(){
	if ($('#music-player').length){
		var $this = $('#music-player');
		var file = $this.find('a').attr('href');
		var title = $this.text();
		
		var flashvars = {
			file: file,
			skin: '/media_player/skins/glow.zip',
			id: 'mp3-player',
			icons: 'false',
			controlbar: 'top',
			type: 'sound'
		};
		var params = {
			src: '/media_player/player.swf',
			allowscriptaccess: 'always',
			wmode: 'transparent',
			id: 'mp3-player'
		};

		$('#music-player').flashembed(params, flashvars);
	}
});



/* ---------------------------------------------------------
	mp3 playlist
--------------------------------------------------------- */

$(document).ready(function(){

	// hide purchase links
	$('#playlist td.mp3-options').hide();
	$('#playlist .mp3-info').hide();

	// show info
	$('#playlist .mp3-extras a.toggle').click(function(){
		$(this).parent().parent().find('.mp3-info').toggle();
		return false;
	});
	
	$('#playlist td a.mp3-title, #playlist td a.mp3').click(function(){
		
		// get new mp3 info
		var new_src = $(this).attr('href');
		if ($(this).attr('class') == "mp3") {
			var new_title = $(this).attr('title');
		} else {
			var new_title = $(this).text();
		}

		var new_links = $(this).parent().parent().find('.mp3-options').html();
		var player = document.getElementById('mp3-player');

		// load and play new mp3
		player.sendEvent('LOAD', { file: new_src, type: 'sound' } );
		player.sendEvent('PLAY');
		
		// swap title and load new purchase buttons
		$('#current-mp3 h1').text(new_title);
		$('#current-mp3 .mp3-options').empty();
		$('#current-mp3 .mp3-options').append(new_links);
		$('#current-mp3 .mp3-options a').addClass('button');
		Cufon.refresh();

		return false;
	});
});



/* ---------------------------------------------------------
	mailing list
--------------------------------------------------------- */

$(document).ready(function(){
	
	// preload wait.gif
	var wait_img = $('<img />').attr({
		className: 'wait',
		src: '/themes/site_themes/default_site/images/ajax-loader.gif',
		width: '16',
		height: '16',
		alt: 'submitting form…'
	});

	// hide submit button
	$('#mailing-list input[type=submit]').hide();
	
	// hell, hide the Search submit button too while we're at it
	$('#search button').hide();
	
	// bind ajaxForm to mailing list
	$('#mailinglist_form').ajaxForm( {
		target: '.form-response',
		beforeSubmit: function() {
			
			// simple form validatation
			var e = $('#mailinglist_form input[type="text"]');
			
			// if email is submitted empty
			if (e.val() == '' || e.val() == e.attr('title')) {
				e.focus();
				e.parent().next('.form-status').html('<p class="required">Please enter a valid email address.</p>');
				return false;
			}
		
			// check email address
			str = e.val();
			var s = $.trim(str);
			var at = "@";
			var dot = ".";
			var lat = s.indexOf(at);
			var lstr = s.length;
			var ldot = s.indexOf(dot);

			if (s.indexOf(at)==-1 ||
				(s.indexOf(at)==-1 || s.indexOf(at)==0 || s.indexOf(at)==lstr) ||
				(s.indexOf(dot)==-1 || s.indexOf(dot)==0 || s.indexOf(dot)==lstr) ||
				(s.indexOf(at,(lat+1))!=-1) ||
				(s.substring(lat-1,lat)==dot || s.substring(lat+1,lat+2)==dot) ||
				(s.indexOf(dot,(lat+2))==-1) ||
				(s.indexOf(" ")!=-1)) {

				e.focus();
				e.parent().next('.form-status').html('<p class="required">Please enter a valid email address.</p>');
				return false;
			}
			
			// send form
			$('#mailinglist_form input').hide();
			$('#mailinglist_form .form-status').html(wait_img);
		},
		success:function() {
			var $this = $('#mailinglist_form .form-status');
			$this.hide();
			$this.html('<p>Thank you! You’ll receive a confirmation email shortly.</p>');
			$this.fadeIn(500).delay(5000,function(){
				$('#mailing-list').fadeOut(500);
			});
		}
	});
});



/* ---------------------------------------------------------
	form input default text
--------------------------------------------------------- */

$(document).ready(function() {

	$('input[type=text],textarea').each(function(){
		var input = $(this);
		var title = input.attr('title');
		input.addClass('blur').attr('value',title);
		input.focus(function() {
			if (input.attr('value') == title) {
				$(this).attr('value','');
			}
			$(this).removeClass('blur');
		});
		input.blur(function() {
			if (input.attr('value') == '') {
				$(this).attr('value',title)
					.addClass('blur')
					
					// reset any form warnings
					.parent().next('.form-status').html('');
			}
		});
	});
})



/* ---------------------------------------------------------
	tour date info
--------------------------------------------------------- */

$(document).ready(function() {
	
	$('td.date-info:parent').each(function(){
		var info = $(this).html();
		$(this).html('<a href="#">info</a>');
		$(this).parent().after('<tr class="date-info"><td></td><td colspan="2"><div>' + info + '</div></td><td></td></tr>');
		$('tr.date-info').hide().find('div').hide();
	});
	
	$('td.date-info:parent a').click(function(){
		if($(this).parent().hasClass('no-border')) {
			$(this).parent().parent().next('tr.date-info').find('div').slideUp(100,function(){
					$(this).parent().parent().hide().parent().find('td').removeClass('no-border');
				});
			return false;
		} else {
			$(this).parent().parent().find('td').addClass('no-border').end()
				.next('tr.date-info').show().find('div').slideDown(100);
			return false;
		}
	});

})



/* ---------------------------------------------------------
	comment form
--------------------------------------------------------- */

$(document).ready(function(){

	// preload wait.gif
	var wait_img = $('<img />').attr({
		className: 'wait',
		src: '/themes/site_themes/default_site/images/wait.gif',
		width: '16',
		height: '16',
		alt: 'submitting form…'
	});
	
	// set up comment form
	$('#comment-form').hide();
	$('#comment-form').before( '<p id="comment-toggle"><span><a class="button" href="#">Leave a Comment</a></span></p>' );
	Cufon.refresh();
	
	// toggle comment form
	$('#comment-toggle a').click(function(){
		if($(this).parent().attr('class') == 'toggled') {
			$('#comment-form').slideUp(500);
			$(this).html( 'Leave a Comment' );
			Cufon.refresh();
			$(this).parent().removeClass('toggled');
			return false;
		} else {
			$('#comment-form').slideDown(500);
			$(this).html( 'Hide comment form' );
			Cufon.refresh();
			$(this).parent().addClass('toggled');
			return false;
		}
	});
	
	// check URL
	var url = jQuery.url.attr('anchor');
	if (url == 'comment-toggle') {
		$('#comment-form').show();
		$('#comment-toggle a').html( 'Hide comment form' );
		Cufon.refresh();
		$('#comment-toggle a').parent().addClass('toggled');
	}
	
	// comment administration
	$('.comment-admin a').click(function(){
		if (!confirm('Are you sure you want to delete this comment?')) return false;
	
		var href = $(this).attr('href');
		$(this).parent().load(href);
		return false;
	});

	// show hidden preview div
	$('#comment-preview').show();

	// preview text
	$('#comment-message').keyup(function(){
		var message_text = $('#comment-message').val();

		message_text = message_text.replace(/\n/g, '<br />'); 
		$('#comment-preview div').html( message_text );
	});

	// reply button	
	$('.comment-reply').click(function() {
		var author = $(this).parents('div.comment div').find('.comment-name span').text();
		var authlink = $(this).parents('div.comment div').find('.comment-options time a').attr('href');
		var text = $('textarea#comment-message').attr('value');
		if ($('#comment-form:hidden').length == 1) {
			$('#comment-toggle a').trigger('click');
		}
		$('textarea#comment-message').focus().attr('value',text+'<a href="'+authlink+'">@'+author+'</a>: ');
	});
	
	// validate comment form
	$('#comment-form').submit(function() {
	
		// clear warnings
		$(this).find('input,textarea').next('.required').remove();
	
		// if fields are empty
		$(this).find('#comment-name, #comment-email, #comment-message').each(function(){
			if ($(this).val() == '' || $(this).val() == $(this).attr('title')) {
				if ($(this).attr('id') == 'comment-name') {
					$(this).after('<p class="required">Please enter your name.</p>');
				}
				if ($(this).attr('id') == 'comment-email') {
					$(this).after('<p class="required">Please enter an email address.</p>');
				}
				if ($(this).attr('id') == 'comment-message') {
					$(this).after('<p class="required">Please enter your comment.</p>');
				}
				
			}
		});
		
		// check email address
		e = $(this).find('#comment-email');
		str = e.val();
		if (str != '') {
			var s = $.trim(str);
			var at = "@";
			var dot = ".";
			var lat = s.indexOf(at);
			var lstr = s.length;
			var ldot = s.indexOf(dot);
	
			if (s.indexOf(at)==-1 ||
				(s.indexOf(at)==-1 || s.indexOf(at)==0 || s.indexOf(at)==lstr) ||
				(s.indexOf(dot)==-1 || s.indexOf(dot)==0 || s.indexOf(dot)==lstr) ||
				(s.indexOf(at,(lat+1))!=-1) ||
				(s.substring(lat-1,lat)==dot || s.substring(lat+1,lat+2)==dot) ||
				(s.indexOf(dot,(lat+2))==-1) ||
				(s.indexOf(" ")!=-1)) {
	
				e.after('<p class="required">Please enter a valid email address.</p>');
			}
		}
		
		// check for warnings
		if ($(this).find('input,textarea').next('.required').length > 0) {
			return false;
		} else {
			$(this).find('input[type=image]').replaceWith(wait_img);
		}
    });	
});



/* ---------------------------------------------------------
	video/photo gallery scrolling
--------------------------------------------------------- */

$(document).ready(function(){

	// remove empty containers
	$('#album-index .thumbnails').each(function() { 
		if($(this).children().length < 1) $(this).remove() 
	});

	// count videos
	var album_pos = 1;
	var album_count = $('#album-index .thumbnails').size();
	
	if (album_count > 1) {

		// html/css
		$('#album-index')
			.wrapInner('<div id="album-container"></div>')
			.wrapInner('<div id="album-wrapper"></div>');

		$('#album-index .thumbnails').css({ 'width':'580px', 'float':'left', 'margin-right':'1.8em' });
		
		// show navigation
		$('#album-index').append('<p id="pagination"><span class="page-count">' + album_pos + ' of ' + album_count + '</span><a class="prev" href="#">« newer</a> <a class="next" href="#">older »</a></p>');

		// serialScroll plugin
		$('#album-wrapper').serialScroll({
			items:'div.thumbnails',
			prev:'#album-index #pagination .prev',
			next:'#album-index #pagination .next',
			offset:0,
			step:1,
			start:0,
			duration:700,
			force:false,
			stop:true,
			lock:true,
			cycle:true,
			constant: false,
			
			// adjust nav
			onAfter:function(){
				$('.page-count').html(album_pos + ' of ' + album_count);
			}
		});
		
		$('#album-index #pagination .next').click(function(){
			album_pos = album_pos + 1;
			if (album_pos > album_count) { album_pos = 1; }
		});
		$('#album-index #pagination .prev').click(function(){
			album_pos = album_pos - 1;
			if (album_pos < 1) { album_pos = album_count; }
		});
	}
});



/* ---------------------------------------------------------
	google analytics
--------------------------------------------------------- */

$.gaTracker(
	'UA-1815104-3',
	{
		external:	'/external/',
		mailto:		'/mailto/',
		download:	'/downloads/',
		extensions:
		[
			'pdf','doc','xls','csv','jpg','gif', 'mp3',
			'swf','txt','ppt','zip','gz','dmg','xml'		
		]
	}
);
