var debugMode=false;

var ppopts={
	default_width:960,
	default_height:540,
	theme:'facebook',

	animation_speed:0,
	overlay_gallery:false,
	allow_resize:true
};

var jason={
	mp3path:'Streaming/',
	oggpath:'Streaming_ogg/',
	// configuration

	autoplay:true,
	volume:25,
	siteroot:'jason/',

	// internal vars (read: don't screw with these)

	isPlaying:false,
	contentPath:'',
	pages:[
		'home',
		'biography',
		'music',
		'guestbook',
		'events',
		'photos',
		'videos',
		'discography',
		'news',
		'contact'
	]
}

function trackToLabel(i) {
	return label=pad((i+1)+'',2,'0',STR_PAD_LEFT)+'. '+jason.music[i].title;
}

$(document).ready(function() {

    $('.noselect').disableTextSelect();

	if (navigator.platform == 'iPad' || navigator.platform == 'iPhone' || navigator.platform == 'iPod') {
	     $("#footer").css("position", "static");
	};

	jason.content=$('#content');
	jason.player=$("#jquery_jplayer");
	jason.currentTrack=0;

	jason.player.jPlayer({
		swfPath:'/template/',
		ready:function () {
			var $playlist=$('#playlist').empty();
			for (var i=0;i<jason.music.length;i++) {
				$('<a>').html(trackToLabel(i)).appendTo($playlist).data('index',i);
			}

			$('#playlist').delegate('a','click',function() {
				loadTrack($(this).data('index'));
				closePlaylist();
				return false;
			});

			$('#player a[rel=volume] div span').css({width:Math.floor(jason.volume/2)});

			jason.isPlaying=jason.autoplay;
			$('#player .controls').toggleClass('paused',!jason.isPlaying);
			loadTrack(0);
		},
		volume:jason.volume,
		oggSupport: true,
		preload: 'none'
	})
	.jPlayer("onProgressChange",function(loadPercent,playedPercentRelative,playedPercentAbsolute,playedTime,totalTime) {
		$('#player a[rel=time]').text($.jPlayer.convertTime(playedTime));
		$('a[rel=seekbar] div').find('span').width(150/100*playedPercentAbsolute);
	})
	.jPlayer('onSoundComplete',jPlayer_next);


	function loadTrack(index) {
		if (index>=jason.music.length) index=0;
		if (index<0) index=jason.music.length-1;
		jason.currentTrack=index;
		$('#track span').html(trackToLabel(jason.currentTrack));
		jason.player.jPlayer('setFile', jason.contentPath+jason.mp3path+jason.music[jason.currentTrack].file+'.mp3',jason.contentPath+jason.oggpath+jason.music[jason.currentTrack].file+'.ogg');
		if (jason.isPlaying) jason.player.jPlayer('play');
	}

	function jPlayer_again() {jason.player.jPlayer("play");}

	function jPlayer_next() {
		jason.currentTrack++;
		loadTrack(jason.currentTrack);
	}

	function jPlayer_prev() {
		jason.currentTrack--;
		loadTrack(jason.currentTrack);
	}

	$('#track').click(function() {
		$('#playlist').show();
		$(document).click(closePlaylist);
		return false;
	});

	$('#player a[rel=play]').click(function() {
		var state=jason.player.jPlayer('getData','diag.isPlaying');
		switch (state) {
			case true:jason.player.jPlayer('pause');break;
			case false:jason.autoplay=true;jason.player.jPlayer('play');break;
			default:break;
		}

		jason.isPlaying=!state;
		$('#player .controls').toggleClass('paused',state);
	});

	$('#player a[rel=stop]').click(function() {
		jason.isPlaying=false;
		jason.player.jPlayer('stop');
		$('#player .controls').addClass('paused');
	});

	$('#player a[rel=prev]').click(jPlayer_prev);
	$('#player a[rel=next]').click(jPlayer_next);

	$('#player a[rel=repeat]').click(function() {
		var $t=$(this);
		$t.toggleClass('active');
		jason.player.jPlayer('onSoundComplete',$t.hasClass('active')?jPlayer_again:jPlayer_next);
	});


	$('.controls a[rel=volume]>span').click(function() {
		var $t=$(this).parent();
		$t.toggleClass('active');
		jason.player.jPlayer('volume',$t.hasClass('active')?'volumeMin':jason.volume);
		$t.closest('a').find('div span').width($t.hasClass('active')?0:Math.floor(jason.volume/2));
	});


	var $volume=$('.controls a[rel=volume] div');

	$volume.mousedown(function(e) {
		$(this).addClass('setting');
		$(document).mousemove(moveVolume).mouseup(stopVolume);
		setVolume(e.clientX);
		return false;
	});

	function moveVolume(e) {
		setVolume(e.clientX);
	}

	function setVolume(x) {
		var $t=$('a[rel=volume] div.setting');
		var x=x-$t.offset().left;if (x>50) x=50;if (x<0) x=0;
		$t.find('span').width(x);
		jason.volume=x*2;
		jason.player.jPlayer('volume',jason.volume);
	}

	function stopVolume() {
		$('a[rel=volume] div.setting').removeClass('setting');
		$(document).unbind('mousemove',moveVolume).unbind('mouseup',stopVolume);
	}


	var $seek=$('.controls a[rel=seekbar] div');

	$seek.click(function(e) {
		var x=e.clientX-$(this).offset().left;
		if (x>150) x=150;if (x<0) x=0;
		jason.player.jPlayer("playHead",x/1.5);
		return false;
	});



	function closePlaylist() {
		$('#playlist').hide();
		$(document).unbind('click',closePlaylist);
	}


	$('form.ajax').live('submit',$.doajax);

	$('a[rel*=prettyPhoto]').prettyPhoto(ppopts);


	$(window).bind('hashchange',$.loadPage);
	$.loadPage();
});


$.loadPage=function() {

	var page,id;
	var hash=document.location.hash.substring(1);
	hash=hash.split('/');
	var postdata={
		page:hash[0]?hash[0]:jason.pages[0],
		id:hash[1]?hash[1]:0
	};


	if (jason.request) jason.request.abort();
	jason.request=$.ajax({
		url:'page.php',
		type:'POST',
		data:postdata,
		success:function(data) {
			$('#spotlight').toggle(postdata.page=='home');
			$('.page').remove();
			if (typeof(innerShiv)!='undefined') data=innerShiv(data);
			var $c=$(data).insertAfter($('#musicbar'));
			$c.show();
			$.pageInit(postdata.page);
		}
	});
}


$.pageInit=function(page) {

	track(window.location.pathname+window.location.hash);

	$('#nav>ul>li>a').removeClass('active').filter('[href^=#'+page+']').addClass('active');

	if (page=='events') {

		$('#page_events').delegate('article:not(.open)','click',function() {
			var $t=$(this);
			$t.siblings().removeClass('open').end().addClass('open');

			if ($t.find('img').length<1) {
				var src=$t.find('>b').html();
				if (src) $('<img>').attr('src',src).appendTo($t.find('footer'));
			}

		}).delegate('article.open','mouseleave',function() {
			$(this).removeClass('open');
		});
	}

	if (page=='photos') {
		$('#page_photos').masonry({
			singleMode:true,
			itemSelector:'article'
		});
	}

	if (page=='home') {
		$('.mini.photos div').masonry({
			singleMode:true,
			itemSelector:'article'
		});
	}

	$('a[rel*=prettyPhoto]').prettyPhoto(ppopts);

}

debug=function(message) {
	if (typeof(console)!='undefined') console.log(message);
};


$.doajax=function() {
	var $form=$(this);
	$form.find('.status').removeClass('visible');
	var formdata={};

	var $invalid=$([]);
	$form.find('input[name], textarea[name]').each(function() {
		var $t=$(this);
		var v=$t.val();
		formdata[$t.attr('name')]=v;
		if ($t.hasClass('req')) {
			if (!v) {$invalid=$invalid.add($t);return true;}
			if ($t.hasClass('email')) {
				var filter=/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
				if (!filter.test(v)) {
					$invalid=$invalid.add($t);
					return true;
				}
			}
		}
	});


	if ($invalid.length>0) {
		$invalid.addClass('invalid').keyup(function() {
			$(this).removeClass('invalid').unbind(this.callee);
		}).eq(0).focus();
		return false;
	}

//	$form.find('input[type=submit]').attr('disabled',true);

	$.ajax({
		type:'POST',
		url:'/post.php',
		dataType:'json',
		data:formdata,
		success:function(data) {
			$form.find('.errcode'+data.errcode).addClass('visible');
			if (data.errcode==0) $form.trigger('reset');
		}
	});

	return false;

}




var STR_PAD_LEFT=1;
var STR_PAD_RIGHT=2;
var STR_PAD_BOTH=3;
function pad(str,len,pad,dir) {
	if (typeof(len)=="undefined") {var len=0;}
	if (typeof(pad)=="undefined") {var pad=' ';}
	if (typeof(dir)=="undefined") {var dir=STR_PAD_RIGHT;}
	if (len+1>=str.length) {
		switch (dir){
			case STR_PAD_LEFT:
				str=Array(len+1-str.length).join(pad)+str;
			break;
			case STR_PAD_BOTH:
				var right=Math.ceil((padlen=len-str.length)/2);
				var left=padlen-right;
				str=Array(left+1).join(pad)+str+Array(right+1).join(pad);
			break;
			default:
				str=str+Array(len+1-str.length).join(pad);
			break;
		}
	}
	return str;
}

// fix for retarded Internet Exploder
if (!Array.indexOf) {
	Array.prototype.indexOf=function(obj) {
		for (var i=0;i<this.length;i++) {
			if (this[i]==obj) return i;
		}
		return -1;
    }
}

jQuery.fn.disableTextSelect = function() {
  return this.each(function() {
    $(this).css({
      'MozUserSelect' : 'none'
    }).bind('selectstart', function() {
      return false;
    }).mousedown(function() {
      return false;
    });
  });
};

jQuery.fn.enableTextSelect = function() {
  return this.each(function() {
    $(this).css({
      'MozUserSelect':''
    }).unbind('selectstart').mousedown(function() {
      return true;
    });
  });
};

function track(url) {
	if (!url) url='';
	try {
		var pageTracker=_gat._getTracker("UA-4294562-5");
		pageTracker._trackPageview(url);
	} catch(err) {
	}
}



function alert(message) {
	if (debugMode && typeof(console)!='undefined') console.log(message);
}

