$(document).ready(function() 
{  
	$('input[type="text"]').focus(onInputFocus);
    $('input[type="text"]').blur(onInputBlur);
	$('textarea').focus(onInputFocus);
	$('textarea').blur(onInputBlur);
	if($('textarea')[0]) $('textarea')[0].defaultValue = $('textarea').val();

	$('#sub_form').submit(function() { return false; });
	$('#email_button').click(emailSubmit);
	$('#booking_submit_button').click(bookingSubmit);
	// children("img")
	if($('#carousel a').children("img").length > 0) var s = new SlideShow($('#carousel a'));
});

function onInputFocus() 
{
	if (this.value == this.defaultValue) this.value = '';
}

function onInputBlur()
{
	if ($.trim(this.value) == '') this.value = this.defaultValue;
}


function submitComment()
{
	var element = $('textarea');
	currVal 	= element[0].value;
	defVal 		= element[0].defaultValue;
	if (currVal == defVal || currVal == '') 
	{
		$("#comment_error").slideDown("fast");
		return false;
	}else{
		$('#commentform').submit();
	}
}


function checkEmail(email)
{	
	var pattern = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	var emailVal = $("#" + email).val();
	return pattern.test(emailVal);
}


function emailSubmit()
{
	
	// First, disable the form from submitting
	$('#sub_form').submit(function() { return false; });
	
	// Grab form action
	formAction = $("#sub_form").attr("action");
	
	// Hacking together id for email field
	// Replace the xxxxx below:
	// If your form action were http://mysiteaddress.createsend.com/t/r/s/abcde/, then you'd enter "abcde" below
	emailId = "ukiydd";
	emailId = emailId.replace("/", "");
	emailId = emailId + "-" + emailId;
	
	// Validate email address with regex
	if (!checkEmail(emailId)) 
	{
		$("#email_malformed").fadeIn("slow");
		return;
	}
	
	// Serialize form values to be submitted with POST
	var str = $("#sub_form").serialize();
	
	// Add form action to end of serialized data
	final = str + "&action=" + formAction;
	
	// Submit the form via ajax
	$.ajax({
		url: '/cm_proxy.php', // var set in view file
		type: "POST",
		data: final,
		success: function(html)
		{
			$("#sub_form").fadeOut("fast", function(){
				$("#email_confirmation").fadeIn("fast");
				});
			if($("#email_sub_error").is(":visible")) $("#email_sub_error").fadeOut("fast");
			if($("#email_malformed").is(":visible")) $("#email_malformed").fadeOut("fast");
		},
		error:function (xhr, ajaxOptions, thrownError)
		{
			$("#email_sub_error").fadeIn("fast");  // Error
		} 
	});
}



/*
Booking Form submit
*/

function bookingSubmit()
{
	var nameValue = $('#yourname').val();
	var messageValue = $('textarea').val();
	var send = true;
	
	// First, disable the form from submitting
	// $('#contact-form-7').submit(function () { return false; });
	
	// Grab form action
	formAction = $("#contact-form-7").attr("action");
	$('div.wpcf7-response-output').hide();
	getLabel("email").removeClass("error_bkg");
	getLabel("yourname").removeClass("error_bkg");
	getLabel("booking_message").removeClass("error_bkg");
	$("#booking_form_error").hide();
	
	// Validate name
	if ($.trim(nameValue) == '' || nameValue == $('#yourname')[0].defaultValue)
	{
		getLabel("yourname").addClass("error_bkg");
		send = false;
	}
	
	// Validate email address with regex
	if (!checkEmail('email')) 
	{
		getLabel("email").addClass("error_bkg");
		send = false;
	}
	
	
	// Validate message
	if ($.trim(messageValue) == '' || messageValue == $('textarea')[0].defaultValue)
	{
		getLabel("booking_message").addClass("error_bkg");
		send = false;
	}
	
	if(!send) $("#booking_form_error").fadeIn("fast");
	if(send) 
	{
		$('#contact-form-7').submit(function () {this.submit()});	
	}else{
		$('#contact-form-7').submit(function () { return false; });
	}
}


function getCalendar(type, artist)
{
	if(!type) type = 'booking';
	if(!artist) artist = 'Bruno Pronsato';
	var url = (type == 'booking' || type == 'all') ? '/calendar' : '/calendar?type=artist&artist='+artist;

	var successFunc = (type == 'booking') ? renderBookingCalendar : renderArtistCalendar;
	if(type == 'all') successFunc = renderShowsPage;
	$.ajax({
		url: url,
		type: "GET",
		success: successFunc
	});
}



// Booking Clanedar
function renderBookingCalendar(calData)
{
	var total = calData.length-1;
	var i = 0;
	var html = '';
	var obj;
	var header;
	var delay = 200;
	var element;
	var desc;
	
	html=
	'<div class="row release">'+
	'<ul class="column grid_5">';
	
	for(i; i<=total; i++)
	{
		obj = calData[i];
		header = (obj.link) ? '<a href="'+obj.link+'">'+obj.title+'</a>' : obj.title;
		description = (obj.description)  ? obj.description : '';
		html+=
		'<li id="cal'+i+'">'+
		'<img class="cal_pic" width="60" height="60" src="'+obj.thumb+'" />'+
		'<div class="cal_list_description" id="desc'+i+'">'+
			'<h3 class="font_medium">'+header+'</h3>'+
			'<p class="font_small gray">'+obj.when+'</p>'+
			'<p>'+obj.location+'</p>'+
			'<p class="event_description font_tiny">'+description+'</p>'+
		'</div>';
		if(i<total) html+= '<hr class="dotted_hr grid_5" />';
		html += '</li>';
	}
	html+=
	'</ul>'+
	'</div>';
	
	$(calendar).html(html);

	for(i=0; i<= total; i++)
	{
		element = $("#cal"+String(i));
		desc = $("#desc"+String(i));
		
		element.hide();
		desc.hide();
		
		d = delay*i;
		
		element.delay(d).slideDown('fast');
		desc.delay(d+100).fadeIn('fast');
		
	}
	
}

/*
Artist Only Calendar
*/
function renderArtistCalendar(data)
{
	var total = data.length-1;
	var i = 0;
	var html = '';
	var obj;
	var delay = 300;
	
	if(total < 0)
	{
		element = $("#show_heading");
		element.fadeOut('fast');
		$(calendar).fadeOut('fast');
		$(calendar).html(html);
	}
	
	for(i; i<= total; i++)
	{
		obj = data[i];
		html += '<div class="row release" id="cal'+String(i)+'">'+
			'<div class="column grid_3" style="overflow:visible;">'+
				'<div>'+
					'<p class="font_small gray">'+obj.when+'</p>'+
					'<p>'+obj.location+'<br />'+
					'<span class="event_description font_tiny">'+
						obj.description+
					'</span>'+
					'</p>'+
				'</div>'+
			'</div>'+
		'</div>';
		if(i < total) html+= '<hr class="dotted_hr grid_3" id="hr'+i+'"/>';
	}
	
	$(calendar).html(html);
	
	for(i=0; i<= total; i++)
	{
		element = $("#cal"+String(i));
		hr = $("#hr"+String(i));
		element.hide();
		hr.hide();
		d = delay*i;
		element.delay(d).fadeIn('fast');
		hr.delay(d).fadeIn('fast');
	}
}


// 
// Shows Page

function renderShowsPage(data)
{
	var total = data.length-1;
	var i = 0;
	var html = '';//getArtistNameHTML(data[0].title);
	var obj;
	var delay = 500;
	var artists = new Array();
	var desc;
	var lastThumb = '';
	var image = '';
	var newArtist = false;
	var lastHeader = ''//data[0].title;
	var newHeader = false;
	
	sortByArtist(data);
	 
	for(var j=0; j<=total; ++j)
	{
		//alert(' name: '+data[j].title);
		description	= (data[j].description)  ? data[j].description : '';
		newArtist 	= (lastThumb != data[j].thumb) ? true : false;
		newHeader	= (lastHeader != data[j].title) ? true : false;
		image 		= (newArtist) ? '<img src="'+data[j].thumb+'" />' : '';
		html 		+= (newArtist) ? getArtistNameHTML(data[j].title) : '';
		html 		+= (newArtist) ? '<table style="width:640px;" class="cal_table">' : '';
		html 		+= '<tr id="cal'+j+'">';
		html 		+= '<td width="60" height="60">'+image+'</td>';
		html 		+= '<td width="60" class="cal_table_date">'+
							'<p><span class="top_date">'+data[j].shortMonth+'</span></p>'+
							'<p><span class="big_date">'+data[j].date+'</span></p>'+
							'<p><span class="bottom_date">'+data[j].shortDay+'</span></p>'+
						'</td>';
		html 		+= '<td class="cal_table_description">'+data[j].location+'<br /><span class="font_tiny">'+description+'</span></td>';
		html		+= '</tr>';
		if(data[j+1])
		{
			if(data[j+1].thumb != data[j].thumb) html += '</table>';
		}
		lastHeader = data[j].title;
		lastThumb = data[j].thumb;
	}

	$(calendar).html(html);
}


function sortByArtist(data)
{
	data.sort(function(a, b){
 		var nameA=a.title.toLowerCase();
		var nameB=b.title.toLowerCase();
		//sort string ascending
 		if (nameA < nameB) return -1;
 		if (nameA > nameB) return 1;
 		return 0;//default return value (no sorting)
	});
	return data;
}

function getArtistNameHTML(name)
{
		return '<h1 class="column grid_8 font_large">'+name+'</h1>'+
			'<hr class="column grid_8 section_hr" />';
}

function getLabel(id)
{
	return $('label[for='+id+']');
}
