/*
vote_story.js: ajax for voting on a story or stories

Require: jquery.js

*/

var requestFile = '/score/vote';
var object_type = 'story';

var story_voted_image = IMG_DOMAIN + '/forums/voted.gif';

/* story vote handler -- Ajax Class */
function StoryVote(story_id, score) {
	var voteObj = this;

	this.story_id = story_id;
	this.add_score = score;
	this.score_text = document.getElementById('score_text_' + story_id);
	this.vote_op = document.getElementById('vote_op_' + story_id);
	this.hint_area = document.getElementById('story_hint_' + story_id);
	this.story_bad = document.getElementById('story_bad_' + story_id);
	
	this.whenVoting = function() {
		$(this.score_text).animate({opacity:0.4},{duration: 'slow'});
		$(this.vote_op).animate({opacity:0.4},{duration: 'slow'});
	};
	
	this.runAJAX = function(){
		$.ajax({
		   type: "GET",
		   url: requestFile,
		   data: 'object_type=story&object_id='+story_id+'&score='+score,
		   error: function(){
				var hint_area = voteObj.hint_area;
				var errmsg = ZORPIA_JS_LANG.ENCOUTER_SOME_ERROR;
				hint_area.innerHTML = errmsg;
				hint_area.style.display = 'block';
		   },
		   success: function(res){
			 		var msg = '';

					if(res == 'NOT_LOGINED') {
						msg = ZORPIA_JS_LANG.NOT_LOGINED;
						voteObj.hint_area.innerHTML = msg;
						document.location.href = '/login'
						return;
					}
					
					if(res == 'SUCCESS') {
						var old_score = parseInt(voteObj.score_text.innerHTML);
						voteObj.score_text.innerHTML = old_score + voteObj.add_score;
					}
					else if(res == 'VOTED_BEFORE') {
						msg = ZORPIA_JS_LANG.VOTED_BEFORE;
					}
					else if(res == 'ERROR_SERVER' || res == 'ERROR_SCORE' 
						|| res == 'ERROR_OBJECT') {
						msg = ZORPIA_JS_LANG.ENCOUTER_SOME_ERROR;
					}

					if(msg) {
						voteObj.hint_area.innerHTML = msg;
						voteObj.hint_area.style.display = 'block';
						setTimeout('hide_hint('+story_id+')', 4000);
					}
					voteObj.vote_op.innerHTML = '<img src="' + story_voted_image + '">';
					if(voteObj.story_bad) voteObj.story_bad.style.display = 'none';
					
					$(voteObj.score_text).animate({opacity:1},{duration: 'fast'});
					$(voteObj.vote_op).animate({opacity:1},{duration: 'fast'});
				}
			 });
	}

}

/* main function */
function vote(clickedObj, story_id, score) {
	if(!(story_id && score)) return;

	/* avoid reduplicate voting action */
	clickedObj.onclick = function() {};

	var myVote = new StoryVote(story_id, score);
	myVote.whenVoting();
	myVote.runAJAX();;
}

function hide_hint(story_id) {
	var hint_area = document.getElementById('story_hint_' + story_id);
	hint_area.style.display='none';
}
