// White Space!!!
function trim(s){
	return s.replace(/^\s*(.*?)\s*$/,"$1");
}

// User login form
function loginForm(form) {
	var username = form.username;
	var password = form.password;
	var redirect = form.redirect;
	
	// Username field empty
	if(trim(username.value) == "") {
		$(username).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your username.').addClass('error').fadeIn('slow');
		});
		return false;
	
	// Password field empty
	} else if(trim(password.value) == "") {
		$(password).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter your password.').addClass('error').fadeIn('slow');
		});
		return false;
	
	// Success!
	} else {
		$.post('/account/loginPost',
			{username: username.value, password: password.value},
			function(data) {
				if (data == '') {
					document.location = redirect.value;
					
				} else {
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html(data).addClass('error').fadeIn('slow');
					});	
				}
			});
	}
	
	return false;
}

//function drawPieChart(columns, values, params) {
//	var data = new google.visualization.DataTable();
//	
//	for(i = 0; i < columns.length; i++) {
//		data.addColumn(columns[i][0], columns[i][1]);
//	}
//	
//	data.addRows(values.length);
//	
//	for(i = 0; i < values.length; i++) {
//		for(j = 0; j < values[i].length; j++) {
//			data.setValue(i, j, values[i][j]);
//		}
//	}
//
//	var chart = new google.visualization.PieChart(document.getElementById(params['element']));
//	chart.draw(data, {
//			width: params['width'],
//			height: params['height'],
//			colors: params['colors'],
//			legend: params['legend'],
//			legendFontSize: params['legendFontSize'],
//			legendTextColor: params['legendTextColor'],
//			legendBackgroundColor: params['legendBackgroundColor'],
//			title: params['title'],
//			enableTooltip: params['enableTooltip'],
//			is3D: params['is3D']
//		});
//}

//function drawBarChart(columns, values, params) {
//	var data = new google.visualization.DataTable();
//	
//	for(i = 0; i < columns.length; i++) {
//		data.addColumn(columns[i][0], columns[i][1]);
//	}
//	
//	data.addRows(values.length);
//	
//	for(i = 0; i < values.length; i++) {
//		for(j = 0; j < values[i].length; j++) {
//			data.setValue(i, j, values[i][j]);
//		}
//	}
//
//	var chart = new google.visualization.ImageBarChart(document.getElementById(params['element']));
//	chart.draw(data, {
//			width: params['width'],
//			height: params['height'],
//			colors: params['colors'],
//			legend: params['legend'],
//			title: params['title']
//		});
//}

function drawLineChart(columns, values, params) {
	var data = new google.visualization.DataTable();
	
	for(i = 0; i < columns.length; i++) {
		data.addColumn(columns[i][0], columns[i][1]);
	}
	
	data.addRows(values.length);
	
	for(i = 0; i < values.length; i++) {
		for(j = 0; j < values[i].length; j++) {
			data.setValue(i, j, values[i][j]);
		}
	}

	var chart = new google.visualization.ImageLineChart(document.getElementById(params['element']));
	chart.draw(data, {
			width: params['width'],
			height: params['height'],
			colors: params['colors'],
			legend: params['legend'],
			title: params['title']
		});
}

function searchArtistForm(form) {
	var artist = form.artist.value;
	
	if (trim(artist) != "") {
		$.post('/content/artistSelect',
			{artist: artist},
			function(data) {
				document.location = data;
			});
	}
	
	return false;
}

function searchAlbumForm(form) {
	var album = form.album.value;
	
	if (trim(album) != "") {
		$.post('/content/albumSelect',
			{album: album},
			function(data) {
				document.location = data;
			});
	}
	
	return false;
}

/* Add a rhyme to a user's favorites collection */
function addToFavorites(rid) {
	$('.loading-fav-' + rid).fadeIn('slow', function() {
		$.post('/content/updateFavoriteRhyme/',
			{status: 1, rid: rid},
			function(data) {
				$('.loading-fav-' + rid).fadeOut('fast', function() {
					$('.favorited-' + rid).show();
					$('.favorite-' + rid).html('<a href="javascript:void(0)" title="Remove from favorites" onclick="removeFromFavorites(' + rid + ')">Remove from Favorites</a>');
				});
			});
	});
}

/* Remove a rhyme from a user's favorites collection */
function removeFromFavorites(rid) {
	$('.loading-fav-' + rid).fadeIn('slow', function() {
		$.post('/content/updateFavoriteRhyme/',
			{status: 0, rid: rid},
			function(data) {
				$('.loading-fav-' + rid).fadeOut('fast', function() {
					$('.favorited-' + rid).hide();
					$('.favorite-' + rid).html('<a href="javascript:void(0)" title="Add to favorites" onclick="addToFavorites(' + rid + ')">Add to Favorites</a>');
				});
			});
	});
}

// For Album and Song optional fields
function clearText(thisfield, defaulttext) {
	if (thisfield.value == defaulttext) {
		thisfield.value = "";
	}
}

// For Album and Song optional fields
function reEnterText(thisfield, defaulttext) {
	if (thisfield.value == "") {
		thisfield.value = defaulttext;
	}
}

// Add A Rhyme Form
function addRhymeForm(form, keep) {
	var artist = form.artist;
	var album = form.album;
	var song = form.song;
	var rhyme = form.rhyme;
	
	// Artist field empty
	if(trim(artist.value) == "") {
		$(artist).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter an artist.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Rhyme field empty
	} else if(trim(rhyme.value) == "") {
		$(rhyme).css('background', '#FBE3E4').bind('keydown', function(){
			$(this).css('background', '#FFFFFF');
		});
		$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
			$(this).html('Please enter a rhyme.').removeClass('success').addClass('error').fadeIn('slow');
		});
		return false;
		
	// Success!
	} else {
		$('#' + form.id).find('button').hide();
		$.post('/content/addRhymePost',
			{artist: artist.value, album: album.value, song: song.value, rhyme: rhyme.value},
			function(data) {
				if (data == '') {
					
					// Clear fields
					if (keep != 'artist') $('#' + form.id + ' :input[name=artist]').val('');
					$('#' + form.id + ' :input[name=rhyme]').val('');
					$('#' + form.id + ' :input[name=song]').val('song (optional)');
					if (keep != 'album') $('#' + form.id + ' :input[name=album]').val('album (optional)');
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html('Rhyme added!').removeClass('error').addClass('success').fadeIn('slow',
						function() {
							setTimeout('5000');
							$(this).fadeOut('slow');
							$('#' + form.id).find('button').show();
						});
					});
				} else {
					$('#' + form.id).find('.form_msg').fadeOut('slow', function() {
						$(this).html(data).removeClass('success').addClass('error').fadeIn('slow');
					});
				}
			});
	}

	return false;
}

// Make sure new spit is under maximum character limit
function checkCharLimit(snd) {
	var char_remaining = 80 - snd.value.length;
	
	if (char_remaining > 25) {
		$('.form_msg').removeClass('success').html(char_remaining + ' characters remaining');
	} else if (char_remaining > 10) {
		$('.form_msg').removeClass('success').html('<span style="color: orange;">' + char_remaining + ' characters remaining</span>');
	} else if (char_remaining > 0) {
		$('.form_msg').removeClass('success').html('<span style="color: #DE6E0F;">' + char_remaining + ' character' + ((char_remaining == 1) ? '' : 's') + ' remaining</span>');
	} else {
		$('.form_msg').removeClass('success').html('<span style="color: #B70500;">' + char_remaining + ' characters remaining</span>');
	}
}

$(document).ready( function() {
	
	/* Random rhyme slideshow */
	$('#random_rhymes').cycle({ 
	    fx:     	'scrollVert',
		speed:  	'fast',
	    timeout: 	0,
		next:    	'.random_rhyme_next',
		prev:    	'.random_rhyme_prev'
	});
	
	/* Artist search field Autocomplete */
	$('#artist_search').autocomplete('/content/artistSearch', {
		delay: 10,
		autoFill: true,
		selectFirst: true,
		loadingClass: 'ac_loading',
		maxItemsToShow: 10
	});
	
	/* Album search field Autocomplete */
	$('#album_search').autocomplete('/content/albumSearch', {
		delay: 10,
		autoFill: true,
		selectFirst: true,
		loadingClass: 'ac_loading',
		maxItemsToShow: 10
	});
});

