// JavaScript Document
/*
Title:     Beau Bristow general Javascript functions
Author:    Matt McCloskey, Kemso Design
Updated:   Dec 28, 2007
*/

var site_root = '/';
var site_url = 'http://www.beaubristow.com/';

/* Optional Libraries
-----------------------------------------------------------------------------------------------------*/

// Flash Replacement
// (make sure to set h2 { display:block; } if you don't use this
document.write('<script type="text/javascript" src="'+site_root+'music-js/lib/flash_replacement.js"></script>');


/* Required Libraries
-----------------------------------------------------------------------------------------------------*/
// moo tools
/* document.write('<script type="text/javascript" src="'+site_root+'js/lib/mootools.js"></script>'); */

// window.domready
/* document.write('<script type="text/javascript" src="'+site_root+'js/lib/domready.js"></script>'); */


/* On Load Replacements
-----------------------------------------------------------------------------------------------------*/

window.addEvent('domready', init);

function init(){

	// navigation events
	$ES('.header .navigation a').each(function(el){
		var fx = new Fx.Styles(el, {duration:200, wait:false});
		
		el.addEvent('mouseenter', function(){
			/*if(!this.hasClass('selected')){
				fx.start({
					'background-color': '#fff'
				});
			}*/
		});
	 
		el.addEvent('mouseleave', function(){
			/*if(!this.hasClass('selected')){
				fx.start({
					'background-color': '#66767A'
				});
			}*/
		});
				
		el.addEvent('click', function(e){
			if(e != 'false'){
				new Event(e).stop();
			}
			var pagename = this.getText().toLowerCase();
			var pageurl = this.getProperty('href');
			loadPage(pagename, pageurl);
			
			var lastSelected = $E('.selected', '.navigation');
			lastSelected.removeClass('selected');
			//lastSelected.setStyle('background-color', '#66767A');
			//this.setStyle('background-color', '#777054');
			this.addClass('selected');
			
		});
		// select the first page
		if(page == el.getText().toLowerCase()){
			el.addClass('selected');
		}

		// go to first page
		/*if(page){
			if(page == el.getText().toLowerCase()){
				el.fireEvent('click', 'false');
			}
		}else if(el.hasClass('selected')){
			el.fireEvent('click', 'false');
		}*/
	});
	
	// set up input actions
	$ES('input', 'mailinglist').each(function(el){
		el.setProperty('init', el.value);
		el.addEvent('focus', function(){
			if(el.getProperty('init') == el.value){
				el.value = "";
			}
		});
		el.addEvent('blur', function(){
			if(el.value == ""){
				el.value = el.getProperty('init');
			}
		});
	});
	
	// handle sending mailing list submission
	$('mailinglist').addEvent('submit', function(e) {
		/**
		 * Prevent the submit event
		 */
		new Event(e).stop();
		
		var error = false;
		
		$ES('input', 'mailinglist').each(function(el){
			if(el.getProperty('init') == el.value && el.getProperty('name') != 'streetteam'){
				error = true;
			}
		});
		if($('state').value == ''){
			error = true;
		}
		
		if(error){
		
			alertme('Please complete the entire form');
		
		}else{
			
			sending();
			
			this.send({
				update: response,
				onComplete: function(rsp) {
					success();
				}
			});
		}
	});
	
	pageFade = new Fx.Style('pageholder', 'opacity', {duration:300});
	
	// page init
	pageInit();
	
	
}


function loadPage(pagename, pageurl, id){
	//alert('loadPage('+pagename+', '+pageurl+')')
	
	$('rightsideholder').empty();
	
	// show the loading note
	showLoader();
	
	switch(pagename){
		default:
			var pagepath = ''+site_root+'music-pages/'+pageurl+'.php';
			break;
	}
	if(id){
		pagepath += '?id='+id;
	}
	
	pageFade.set(0);
	
	// get Page
	var pageAjax = new Ajax(pagepath, {
		data: {},
		method: 'get',
		update: $('pageholder'),
		onComplete: function(response){
			pageInit();
		}
	}).request();
	
	// rightside
}

function pageInit(){
	//alert('pageInit()');
	// move the rightside
	var rightsidecontent = $('rightsidecontent');
	var rightsideholder = $('rightsideholder');
	rightsideholder.empty();
	if($('rightsidecontent')){
		rightsidecontent.injectInside(rightsideholder);
		rightsideholder.setStyle('height', 'auto');
	}else{
		rightsideholder.setStyle('height', '354px');
	}
	
	// replace headers
	flash_replaceHeaders('pageholder');
	
	// fade the page
	pageFade.start(0,1);
	
	// hide loader
	hideLoader();
	
	// lyteBox
	initLytebox();
	
	
	// if contact page set up contact form
	var contactform = $('contactform');
	if(contactform){
		
		// handle sending contact form submission
		contactform.addEvent('submit', function(e) {
			new Event(e).stop();
			
			var error = false;
			
			$ES('input', 'contactform').each(function(el){
				if(el.value == '' && el.getProperty('id') != 'joinlist'){
					error = true;
				}
			});
			
			if($('joinlist').checked == true){
				if($('contactstate').value == ''){
					error = true;
				}
			}
			
			if(error){
			
				var showResponse = new Fx.Style('contactresponse', 'opacity', {duration:200}).set(0);
				$('contactresponse').setHTML('<span class="alert">Please complete the entire form</span>');
				showResponse.start(0,1);
				setTimeout("slowFade('contactresponse')", 1000);
			
			}else{
				
				var showResponse = new Fx.Style('contactresponse', 'opacity', {duration:200}).set(0);
				$('contactresponse').setHTML('<span class="neutral">Sending...</span>');
				showResponse.start(0,1);
				
				this.send({
					onComplete: function(rsp) {
						var showResponse = new Fx.Style('contactresponse', 'opacity', {duration:200}).set(0);
						$('contactresponse').setHTML('<span class="success">Thanks! Your mail has been sent.</span>');
						showResponse.start(0,1);
						setTimeout("slowFade('contactresponse')", 1000);
						$('contactform').reset();
					}
				});
			}
		});
		
		// set up checkbox click
		$('joinlist').addEvent('click', function(e){
			if(this.checked == true){
				$('contactstateContainer').style['display'] = 'block';
			}else{
				$('contactstateContainer').style['display'] = 'none';
			}
		});
	
	}
	
	// if blog page set up comment form
	
	if($('commentform')){
	var commentform = $('commentform');
		//Recaptcha.create("6Ld6GgMAAAAAAAup99eNUkL7OXsM39obsRTet6ol",
		//		"recaptcha_div", {
		//		   theme: "red",
		//		   callback: Recaptcha.focus_response_field
		//		});
		
		if(Recaptcha){
			Recaptcha.create("6Ld6GgMAAAAAAAup99eNUkL7OXsM39obsRTet6ol",
				"recaptcha_div", {
				   theme: "red"
				});
			}
		// handle sending contact form submission
			commentform.addEvent('submit', function(e) {
				new Event(e).stop();
				
				var error = false;
				
				$ES('input', 'commentform').each(function(el){
					if(el.value == '' && el.getProperty('id') != 'joinlist'){
						error = true;
					}
				});
				
				if(error){
				
					var showResponse = new Fx.Style('commentformresponse', 'opacity', {duration:200}).set(0);
					$('commentformresponse').setHTML('<span class="alert">Please complete the entire form</span>');
					showResponse.start(0,1);
					setTimeout("slowFade('commentformresponse')", 1000);
				
				}else{
					
					var showResponse = new Fx.Style('commentformresponse', 'opacity', {duration:200}).set(0);
					$('commentformresponse').setHTML('<span class="neutral">Posting...</span>');
					showResponse.start(0,1);
					
					this.send({
						onComplete: function(rsp) {
							rsp = rsp.split('^');
						
							if(rsp[0].toLowerCase() != "success"){
								var showResponse = new Fx.Style('commentformresponse', 'opacity', {duration:200}).set(0);
								$('commentformresponse').setHTML('<span class="alert">'+rsp+'</span>');
								showResponse.start(0,1);
								setTimeout("slowFade('commentformresponse')", 1000);
							}else{
								
								var comment = new Element('div', {'class': 'comment'}).setHTML('<span class="author">Posted By: '+rsp[1]+'</span> <span class="date">on '+rsp[2]+'</span><p>'+rsp[3]+'</p>');
								
								comment.injectTop('currcomments');
								
								
								var showResponse = new Fx.Style('commentformresponse', 'opacity', {duration:200}).set(0);
								$('commentformresponse').setHTML('<span class="success">Thanks, your comment has been added!</span>');
								showResponse.start(0,1);
								setTimeout("slowFade('commentformresponse')", 1000);
								$('commentform').reset();
								
							}
						}
					});
				}
			});	
		}

}
function showLoader(){
	$('loader').setStyle('display', 'block');
}
function hideLoader(){
	$('loader').setStyle('display', 'none');
}
function alertme(str){
		setPrompt('<div class="alert">'+str+'</div>');
		setTimeout("fadePrompt()", 1000);
	//	var submitbtn = $('submitbtn');
	//	submitbtn.disabled = false;
	//	submitbtn.value = "Submit";
	}
function setPrompt(str){
	var showResponse = new Fx.Style('response', 'opacity', {duration:200}).set(0);
	$('response').setHTML(str);
	showResponse.start(0,1);
}
function fadePrompt(){
	var showResponse = new Fx.Style('response', 'opacity', {duration:3000});
	showResponse.start(1,0);
}
function slowFade(el){
	var showResponse = new Fx.Style(el, 'opacity', {duration:3000});
	showResponse.start(1,0);
}
function success(){
	setPrompt('<div class="success">Thanks for signing up!</div>');
	setTimeout("fadePrompt()", 1000);
	//var submitbtn = $('submitbtn');
	//submitbtn.disabled = false;
	//submitbtn.value = "Submit";
}
function sending(){
	setPrompt('<div class="neutral">Sending...</div>');
	//var submitbtn = $('submitbtn');
	//submitbtn.disabled = true;
	//submitbtn.value = "Sending...";
}


/* Blog Loading
-----------------------------------------------------------------------------------------------------*/

function loadBlog(id){
	loadPage('blog', 'blog', id);
}

function loadByCategory(flag){	
	loadBlogArchive(flag);
}

function loadBlogArchive(flag){

	$('comments').setStyle('display', 'none');
	
	if(!flag){
		flag = "All Posts";
	}
	
	$('blogentry').empty();
	var rss = new Element('a', {'href': 'rss/'+flag.replace(/ /g, '')+'.xml', 'class':'rss'}).setText('Get the RSS feed for this!').injectTop('blogentry');
	var h1 = new Element('h1', {'class':'flash'}).setHTML(flag.replace('&', '&amp;')).injectTop('blogentry');
	
	showLoader();
	var bloglist = new Element('ul').setProperty('id', 'bloglist');
	bloglist.injectInside('blogentry');
	
	if(flag == "All Posts"){
		flag = '';
	}
	var pageFade = new Fx.Style('blogentry', 'opacity', {duration:300}).set(0);
	var template = '<li><a href="javascript:loadBlog(\'[id]\');"><h1>[title]</h1></a><span class="date">[date]</span><span class="category">Posted In: [flag]</span></li>';
	var pageAjax = new Ajax(''+site_root+'includes/osmek.php', {
		data: {id:'537', format:'custom', flag:flag, template:template, dateformat:'%M %D, %Y'},
		method: 'get',
		update: bloglist,
		onComplete: function(){
			flash_replaceHeaders('blogentry');
			pageFade.start(0, 1);
			hideLoader();
		}
	}).request();
	
	loadShoutbox(flag);
}

function loadShoutbox(flag){
	if(flag){
	// shoutbox
	var shoutbox = '<h1>Ask a question here</h1><br /><!-- Begin ShoutMix - http://www.shoutmix.com --><iframe title="beaubristowqanda" src="http://www.shoutmix.com/?beaubristowqanda" width="139" height="400" frameborder="0" scrolling="auto"><a href="http://www.shoutmix.com/?beaubristowqanda">View shoutbox</a></iframe><br /><!-- End ShoutMix -->';
	
	if(flag == "Q&A"){
		$('blogshoutbox').setHTML(shoutbox);
	}else{
		$('blogshoutbox').empty();
	}
	}
}



/* Downloads
-----------------------------------------------------------------------------------------------------*/
function filterDownloads(flag){
	var items = $ES('.item', 'downloadslist');
	items.each(function(el){
		if(el.hasClass(flag) || flag == "all"){
			el.setStyle('display', 'block');
		}else{
			el.setStyle('display', 'none');
		}	
	});
}

/* Lyrics
-----------------------------------------------------------------------------------------------------*/

function chooseLyric(id){
	showLoader();
	var pageFade = new Fx.Style('lyric', 'opacity', {duration:300}).set(0);
	var template = '<h1>[title]</h1><span class="copyright">&copy; [option1]</span>PermaLink: <a href="'+site_url+'lyrics/[id]">'+site_url+'lyrics/[id]</a><p>[description]</p>';
	var pageAjax = new Ajax(''+site_root+'includes/osmek.php', {
		data: {id:'536', item_id:id, format:'custom', template:template},
		method: 'get',
		update: $('lyric'),
		onComplete: function(){
			flash_replaceHeaders('lyric');
			pageFade.start(0, 1);
			hideLoader();
		}
	}).request();
}

/* Photos
-----------------------------------------------------------------------------------------------------*/
function chooseAlbum(id){
	$('albums').empty();
	showLoader();
	var pageFade = new Fx.Style('albums', 'opacity', {duration:300}).set(0);
	var pageAjax = new Ajax(''+site_root+'includes/osmek.php', {
		data: {id:'533', sheet:'photoalbums', item_id:id, format:'custom', template:$('template1').innerHTML, template2:$('template2').innerHTML},
		method: 'get',
		update: $('albums'),
		onComplete: function(){
			var elements = $ES('h1', 'albums');
			for(var i = 0; i<elements.length; i++){
				replaceFlashText(elements[i]);
			}
			pageFade.start(0, 1);
			hideLoader();
			// lyteBox
			initLytebox();
		}
	}).request();
}