var delayVote = false;

function createCookie(name,value) {
	var date = new Date();
	date.setTime(date.getTime()+(365*24*60*60*1000));
	var expires = "; expires="+date.toGMTString();
	document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function vote(id,dir){
	//don't allow a revote untill ajax request replies
	if(delayVote){
		//do nothing
	} else {
		//prevent voting boolean
		delayVote = true;
		
		//cur = current
		var curVote = 'none';
		//get current vote
		if($("#upvote" + id).attr("src").indexOf('upvote_active')  > -1){curVote = 'up'}
		if($("#downvote" + id).attr("src").indexOf('downvote_active')  > -1){curVote = 'down'}
		
		//check if item is not already up or downvoted (prevent useless ajax calls)
		if(
			($("#upvote" + id).attr("src").indexOf('upvote_active') > -1 && dir == "up")
			||
			($("#downvote" + id).attr("src").indexOf('downvote_active') > -1 && dir == "down")
		){
			//allow voting again
			delayVote = false;
			//do nothing
		} else {
			//construct url for ajax request
			var voteUrl = "ajax_vote.php?vote=" + dir + "&id=" + id + "&nocache=" + Math.floor(Math.random()*9999);
			$.get(voteUrl, {}, function(data) {
			
				//if user is not logged on, then remember choice in cookie
				if(!userLoggedIn){createCookie('vote' + id,dir);}
			
				//allow voting again
				delayVote = false;
				//if no return data is passed, update was successful
				if(data.length < 4){
					//update buttons
					if(dir == 'up'){
						$("#upvote" + id).attr("src",$("#upvote" + id).attr("src").replace(/upvote\./,"upvote_active."));
						$("#downvote" + id).attr("src",$("#downvote" + id).attr("src").replace(/downvote_active/,'downvote'));
					}
					if(dir == 'down'){
						$("#upvote" + id).attr("src",$("#upvote" + id).attr("src").replace(/upvote_active/,'upvote'));
						$("#downvote" + id).attr("src",$("#downvote" + id).attr("src").replace(/downvote\./,'downvote_active.'));
					}
					//update score
					//get current scores
					var curUp = parseInt($('#showUp' + id).html());
					var curDown = parseInt($('#showDown' + id).html());
					//update vote count
					if(curVote == 'none'){if(dir == 'up'){curUp ++;}if(dir == 'down'){curDown ++;}}//new vote
					if(curVote == 'down'){curDown --;curUp ++;}//change vote to up			
					if(curVote == 'up'){curUp --;curDown ++;}//change vote to down
					$('#showUp' + id).html(curUp);
					$('#showDown' + id).html(curDown);	
				} else {
					
					if(data == 'ip_vote_fail'){
						//update buttons
						if(dir == 'up'){
							$("#upvote" + id).attr("src",$("#upvote" + id).attr("src").replace(/upvote\./,"upvote_active."));
							$("#downvote" + id).attr("src",$("#downvote" + id).attr("src").replace(/downvote_active/,'downvote'));
						}
						if(dir == 'down'){
							$("#upvote" + id).attr("src",$("#upvote" + id).attr("src").replace(/upvote_active/,'upvote'));
							$("#downvote" + id).attr("src",$("#downvote" + id).attr("src").replace(/downvote\./,'downvote_active.'));
						}						
					} else {
						//alert error message
						alert(data);
					}
				}
		   });
		}
	}
}
//pass delete id to form and submit
function deleteComment(commentId){
	document['submit'].delete_id.value = commentId;
	document['submit'].submit();
}
//count chars in textarea, display and crop
function charCount(txtArea,displayDiv,maxChars,minChars) {
	if (txtArea.value.length > maxChars){
		txtArea.value = txtArea.value.substring(0, maxChars);
	} else {
		//color according to minChars
		if(txtArea.value.length < minChars){
			displayDiv.style.color = '#ff0000';
		} else {
			displayDiv.style.color = '#252525';		
		}
		displayDiv.innerHTML = maxChars - txtArea.value.length;
	}
}

$(document).ready(function(){
	if(window.location.href.indexOf('?disco') > 0){
		$.getScript("http://dev.jquery.com/view/trunk/plugins/color/jquery.color.js", function(){
			 $("body").css('background','none');
			launchDisco();
		});
	}
	//populate votes
	if(!userLoggedIn){
		$('.vote').each(function(){
			var voteId = $(this).attr('id').substr(4);
			var voteDir = readCookie('vote' + voteId);
			if(voteDir == 'up'){
				$("#upvote" + voteId).attr("src",$("#upvote" + voteId).attr("src").replace(/upvote/,'upvote_active'));
			}
			if(voteDir == 'down'){
				$("#downvote" + voteId).attr("src",$("#downvote" + voteId).attr("src").replace(/downvote\./,'downvote_active.'));
			}
		})
	}
});
function launchDisco(){
	var randomColor = 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
	 $("body").animate({'backgroundColor':randomColor},2000,function(){
	 	launchDisco();
	 });
}
