$(document).ready(function() {
	bindLanguageSelectHandler();
	bindAllVoteHandler();
	$('.retweet').live('click', function() {
		var username = $('.tweetlink', $(this).closest('.tweet_stack')).text();
		var text = $('.translation-text', $(this).closest('.translation')).text();

		var retweet_text = "RT @" + trim(username) + " " + text;              
		
		$('#tweetupdate').val(retweet_text);

		return false;
       });
});

function bindLanguageSelectHandler() {
	$('.language-select').change(function() {
		if ($(this).val() == 'none') {
			return;
		}
		var language = $(this).val();
		var status = $(this).closest('.tweet_stack');
		translate(status, language);
	});
}

function translate(status, language) {
	var status_id = status.attr('id').substring(7);
	var text = $('.status-text', status).text();

	$.ajax({
		type: "POST",
		url: "translate.php",
		dataType: "json",
		data: {status_id:status_id, text:text, language:language},
		error: function(msg) {
		  // Hide the fake progress indicator graphic.
		  alert("Ooops, we're sorry. We seem to be having trouble translating your tweet. We've logged this error and we will strive to ensure this doesn't happen again. Thanks for your patience!");
		},
		success: function(msg) {
		  $('.translation-placeholder', status).hide();
		  $('.translation-placeholder', status).html(msg.html);
		  $('.translation-placeholder', status).fadeIn("slow");
		  $('.myisle_rating', status).show();
		  bindVoteHandler($('.myisle_rating', status));
		  bindSingleCommentHandler($('.translation', status));
		}
	  });
}

function bindAllVoteHandler() {
	$('.up-vote').click(function() {
		var translation = $(this).closest('.translation');
		vote(translation, 1);
	});
	$('.down-vote').click(function() {
		var translation = $(this).closest('.translation');
		vote(translation, -1);
	});	
}

function bindVoteHandler(myisle_rating) {
	$('.up-vote', myisle_rating).click(function() {
		var translation = $(this).closest('.translation');
		vote(translation, 1);
	});
	$('.down-vote', myisle_rating).click(function() {
		var translation = $(this).closest('.translation');
		vote(translation, -1);
	});	
}

function vote(translation, score)
{
	var translation_id = translation.attr('id').substring(12);
	
	$.ajax({
		type: "POST",
		url: "vote.php",
		dataType: "json",
		data: {translation_id:translation_id, score:score},
		error: function(msg) {
		  // Hide the fake progress indicator graphic.
		  alert("Ooops, we're sorry. We seem to be having trouble with our voting system at present. Please try again later!");
		},
		success: function(msg) {
		  $('.total-votes', translation).text(msg.score);
		  $('.vote-message', translation).text(msg.message);
		}
	  });
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}