/*
	Copyright © 2008 VoteOften Inc.
*/

document.observe('dom:loaded', function(){
	$('search-form').observe('submit', function(e){
		e.stop();
		if(checkSearchForm() == false) return false;
		this.submit();
	});
});

document.observe('dom:loaded', function(){
	$('invite-form').observe('submit', function(e){
		$('invite-form-progress').innerHTML = "<img src='/img/working.gif' alt='working'/>";
		e.stop();
		if(checkInviteForm() == false) return false;
		this.request({onComplete: function(transport){ 
			$('invite-form-progress').innerHTML = transport.responseText; } });
	});
});

function vote(pos, action, type, id, change, post, hash)
{
	if(post=='') $('votes' + pos).innerHTML = "<img id='working' src='/img/working.gif' alt='working' />";
	
	if(post=="tag") $('tag-progress' + pos).innerHTML = "<img src='/img/working.gif' alt='working'/>";
	
	if(post=="comment") $('comment-result' + pos).innerHTML = "<img src='/img/working.gif' alt='working'/>";
	
	pars = new Array("type=", type, "&id=", id, "&c=", change);
	pars = pars.join("");
	
	if(post!="comment" && post!="tag")
	{
		if(action=="up")
			new Ajax.Request('/ajax/voteup/', {method: "post", parameters: pars, onComplete: function (transport){ updateVotes(pos, type, id, 'upvoted','', hash); }} );
		else if(action=="down")
			new Ajax.Request('/ajax/votedown/', {method: "post", parameters: pars, onComplete: function(transport){ updateVotes(pos, type, id, 'downvoted','', hash); }} );
	}
	else if(post!="tag")
	{
		pars = new Array("type=", type, "&id=", id, "&comment=", pos, "&c=", change);
		pars = pars.join("");
		if(action=="up")
			new Ajax.Request('/ajax/voteup/', {method: "post", parameters: pars, onComplete: function(transport){ updateVotes(pos, type, id, 'upvoted', post, hash); }});
		else if(action=="down")
			new Ajax.Request('/ajax/votedown/', {method: "post", parameters: pars, onComplete: function(transport){ updateVotes(pos, type, id, 'downvoted', post, hash); } });
	}
	else
	{
		pars = new Array("type=", type, "&id=", id, "&post=", "tag", "&c=", change);
		pars = pars.join("");
		if(action=="up")
			new Ajax.Request('/ajax/voteup/', {method: "post", parameters: pars, onComplete: function(transport){ updateTagOptions(pos, type, id, action); }});
		else if(action=="down")
			new Ajax.Request('/ajax/votedown/', {method: "post", parameters: pars, onComplete: function(transport){ updateTagOptions(pos, type, id, action); } });
	}
}

function updateVotes(pos, type, id, action, post, hash)
{
	if(post!="comment")
	{
		pars = new Array("type=", type, "&id=", id);
		pars = pars.join("");
		
		if(action=="unvote")
		{
			var un = new Ajax.Updater('votes' + pos, '/ajax/updateVotes/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('votes' + pos, {startcolor: '#737373', duration: 2}); }} );
		}
		
		else if(action=='downvoted')
		{
			var down = new Ajax.Updater('votes' + pos, '/ajax/updateVotes/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('votes' + pos, {startcolor: '#d43333', duration: 2});  }});
			
			$('thumbdown' + pos).src = '/images/thumb-down-hover.gif'; $('thumbup' + pos).src = '/images/thumb-up.gif'; $('up'+pos).href = 'javascript:vote('+pos+', \'up\', \''+type+'\','+id+',\'y\',\'\',\''+hash+'\');'; $('down'+pos).href = 'javascript:unvote('+pos+', \'downvote\', \''+type+'\','+id+',\'false\',\''+hash+'\',0);';
		}
		
		else if(action=='upvoted')
		{
			var up = new Ajax.Updater('votes' + pos, '/ajax/updateVotes/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('votes' + pos, {startcolor: '#50dd2b', duration: 2});  }});
			
			$('thumbup' + pos).src = '/images/thumb-up-hover.gif'; $('thumbdown' + pos).src = '/images/thumb-down.gif'; $('down'+pos).href = 'javascript:vote('+pos+', \'down\', \''+type+'\','+id+',\'y\',\'\',\''+hash+'\');'; $('up'+pos).href = 'javascript:unvote('+pos+', \'upvote\', \''+type+'\','+id+',\'false\',\''+hash+'\',0);';
		}
	}
	else
	{
		pars = new Array("type=", type, "&id=", id, "&cid=", pos);
		pars = pars.join("");
		
		if(action=="upvoted")
		{
			var votes = new Ajax.Updater('comment-result' + pos, '/ajax/updateVotes/', {method: "post", parameters: pars});
			
			$('cthumb-up' + pos).innerHTML = '<img alt=\'\' src=\'/images/thumb-up-green-small.gif\'/>';
			$('cthumb-down' + pos).innerHTML = '<a id=\'cthumb-down-link'+pos+'\' href=\'\'><img alt=\'\' src=\'/images/thumb-down-grey-small.gif\'/></a>';
			$('cthumb-down-link' + pos).href = 'javascript: vote('+pos+', \'down\', \''+type+'\','+id+',\'y\',\'comment\');';
		}
		else if(action=="downvoted")
		{
			var votes = new Ajax.Updater('comment-result' + pos, '/ajax/updateVotes/', {method: "post", parameters: pars});
			
			$('cthumb-down' + pos).innerHTML = '<img alt=\'\' src=\'/images/thumb-down-red-small.gif\'/>';
			$('cthumb-up' + pos).innerHTML = '<a id=\'cthumb-up-link'+pos+'\' href=\'\'><img alt=\'\' src=\'/images/thumb-up-grey-small.gif\'/></a>';
			$('cthumb-up-link' + pos).href = 'javascript: vote('+pos+', \'up\', \''+type+'\','+id+',\'y\',\'comment\');';		
		}
	}
}

function unvote(pos, action, type, id, cid, hash, fade)
{
	if(fade==0) $('votes' + pos).innerHTML = "<img id='working' src='/img/working.gif' alt='working' />";

	if(fade!=0) $('vote-progress' + pos).innerHTML = "<img src='/img/working.gif' alt='working' />";
	
	pars = new Array("pos=", pos, "&action=", action, "&type=", type, "&id=", id, "&cid=", cid, "&hash=", hash);
	pars = pars.join("");
	
	new Ajax.Request('/ajax/unvote/', {method: "post", parameters: pars, onComplete: function(transport){ if(fade==0) updateVotes(pos, type, id, 'unvote', 0, hash); $('vote-progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; if(fade!=0) { new Effect.Fade('voted' + pos); } }} );	
	
	if(fade==0 && action=='downvote')
	{
		$('thumbdown' + pos).src = '/images/thumb-down.gif';
		$('down'+pos).href = 'javascript:vote('+pos+', \'down\', \''+type+'\','+id+',\'n\',\'\',\''+hash+'\');';
		$('up'+pos).href = 'javascript:vote('+pos+', \'up\', \''+type+'\','+id+',\'n\',\'\',\''+hash+'\');';
	}
	
	if(fade==0 && action=='upvote')
	{
		$('thumbup' + pos).src = '/images/thumb-up.gif';
		$('up'+pos).href = 'javascript:vote('+pos+', \'up\', \''+type+'\','+id+',\'n\',\'\',\''+hash+'\');';
		$('down'+pos).href = 'javascript:vote('+pos+', \'down\', \''+type+'\','+id+',\'n\',\'\',\''+hash+'\');';
	}
}

function updateOptions(pos, type, id, action)
{
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");
	
	var options = new Ajax.Updater('left-options' + pos, '/ajax/updateArticleOptions/', {method: "post", parameters: pars});
}

function updateTagOptions(pos, type, id, action)
{
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");
	
	if(action=="up")
	{
		new Ajax.Updater('tag-vote' + pos, '/ajax/updateTagVotes/', {method: "post", parameters: pars, onComplete: function(transport){ if($('tag-vote'+pos).innerHTML == '') { $('tag-vote'+pos).innerHTML = 'added'; $('thumb-down-link'+pos).href = ''; } new Effect.Highlight('tag-vote' + pos, {startcolor: '#50dd2b', duration: 2}); $('tag-progress' + pos).innerHTML = "";}});
		$('thumb-up' + pos).innerHTML = '<img src=\'/images/thumb-up-green-small.gif\' />';
		$('thumb-down' + pos).innerHTML = '<a id=\'thumb-down-link'+pos+'\'><img src=\'/images/thumb-down-grey-small.gif\' /></a>';
		
		$('thumb-down-link'+pos).href = 'javascript:vote('+pos+', \'down\', \''+type+'\','+id+',\'y\',\'tag\');';
	}
	
	else if(action=="down")
	{
		new Ajax.Updater('tag-vote' + pos, '/ajax/updateTagVotes/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('tag-vote' + pos, {startcolor: '#d43333', duration: 2}); $('tag-progress' + pos).innerHTML = ""; }});
		$('thumb-down' + pos).innerHTML = '<img src=\'/images/thumb-down-red-small.gif\' />';
		$('thumb-up' + pos).innerHTML = '<a id=\'thumb-up-link'+pos+'\'><img src=\'/images/thumb-up-grey-small.gif\' /></a>';
		
		$('thumb-up-link'+pos).href = 'javascript:vote('+pos+', \'up\', \''+type+'\','+id+',\'y\',\'tag\');';
	}
}

function friend(pos, friend, hash)
{
	$('frequest').style.color = "#B90000";
	$('frequest').innerHTML = "<img id='friend-image' src='/images/add-small.gif'/><span id='high'>are you sure? <a id='fyes' href=''>yes</a> / <a id='fno' href=''>no</a></span>";
	
	$('fyes').href = "javascript: friendRequest(1,\'" + friend + "\',\'" + hash + "\');";
	$('fno').href = "javascript: fno(1,\'" + friend + "\',\'" + hash + "\');";
	
	new Effect.Highlight('high', {endcolor: '#F8F8F8'});
}

function friendRequest(pos, friend, hash)
{
	$('frequest').innerHTML = "friend request sent";
	
	pars = new Array("pos=", pos, "&friend=", friend, "&hash=", hash);
	pars = pars.join("");
	
	var progress = "<img id='add' src='/img/add.gif'/><img src='/img/working.gif'/> ";
	var complete = "<img id='add' src='/img/add.gif'/><img id= 'add' src='/img/checkmark.gif'/> ";
		
	new Ajax.Request('/ajax/sendFriendRequest/', {method: "post", parameters: pars, onComplete: function(transport){ } });
}

function fno(pos, friend, hash)
{
	$('frequest').innerHTML = "<img id='friend-image' src='/images/add-small.gif'/><a id='f-link' href=''>add to friends</a>";
	
	$('f-link').href = "javascript: friend(1,\'" + friend + "\',\'" + hash + "\');"
	$('friend' + pos).innerHTML = "<img id='add' src='/img/add.gif'/>";
}

function acceptRequest(pos, user, hash)
{
	pars = new Array("pos=", pos, "&user=", user, "&hash=", hash);
	pars = pars.join("");
	
	var progress = "<img src='/img/working.gif'/> ";
	var complete = "<img src='/img/checkmark.gif'/> ";
	
	$('inbox_progress' + pos).innerHTML = progress;
	
	new Ajax.Request('/ajax/acceptFriendRequest/', {method: "post", parameters: pars, onComplete: function(transport){ $('inbox_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; new Effect.Fade('inbox' + pos); }} );
}

function declineRequest(pos, user, hash)
{
	var type = "friend-request";
	
	pars = new Array("pos=", pos, "&user=", user, "&hash=", hash, "&type=", type);
	pars = pars.join("");
	
	var progress = "<img src='/img/working.gif'/> ";
	var complete = "<img src='/img/checkmark.gif'/> ";
	
	$('inbox_progress' + pos).innerHTML = progress;
	
	new Ajax.Request('/ajax/removeFromInbox/', {method: "post", parameters: pars, onComplete: function(transport){ $('inbox_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; new Effect.Fade('inbox' + pos); }} );
}

function unfriend(pos, user, friend, hash)
{
	pars = new Array("pos=", pos, "&user=", user, "&friend=", friend, "&hash=", hash);
	pars = pars.join("");
	
	$('friend-progress' + pos).innerHTML = " <img src='/img/working.gif'/> ";
	
	new Ajax.Request('/ajax/unfriend/', {method: "post", parameters: pars, onComplete: function(transport){ $('friend-progress' + pos).innerHTML = " <img src='/img/checkmark.gif'/>"; new Effect.Fade('friend' + pos);}} );
}

function removeInbox(pos, user, type, hash)
{	
	pars = new Array("pos=", pos, "&user=", user, "&hash=", hash, "&type=", type);
	pars = pars.join("");
	
	var progress = "<img src='/img/working.gif'/> ";
	var complete = "<img src='/img/checkmark.gif'/> ";
	
	$('inbox_progress' + pos).innerHTML = progress;
	
	new Ajax.Request('/ajax/removeFromInbox/', {method: "post", parameters: pars, onComplete: function(transport){ $('inbox_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; new Effect.Fade('inbox' + pos); }} );
}

function removeTracked(pos, user, typeid, hash, fade)
{
	if(fade==0)
	{
		$('track' + pos).innerHTML = "removing...";
		$('track' + pos).href = '';
	}
	
	pars = new Array("pos=", pos, "&user=", user, "&hash=", hash, "&typeid=", typeid);
	pars = pars.join("");
	
	if(typeid.substring(0,1) == 'r') var type = "rss";
	else var type = "user";
	
	var id = typeid.substring(1, typeid.length);
	
	if(fade!=0)
	{
		var progress = "<img src='/img/working.gif'/> ";
		var complete = "<img src='/img/checkmark.gif'/> ";
	
		$('tracked_progress' + pos).innerHTML = progress;
		
		new Ajax.Request('/ajax/untrack/', {method: "post", parameters: pars, onComplete: function(transport){ $('tracked_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; new Effect.Fade('tracked' + pos); }} );
	}
	else
	{
		new Ajax.Request('/ajax/untrack/', {method: "post", parameters: pars, onComplete: function(transport){ $('title-imagetrack'+pos).remove(); $('track'+pos).innerHTML = 'track'; $('track'+pos).href = 'javascript: track('+pos+',\''+type+'\','+id+',\''+user+'\',\''+hash+'\');'; }} );
	}
}

function removeNotify(pos, user, sender, action, typeid, time, hash, refresh, offset, limit)
{
	pars = new Array("pos=", pos, "&user=", user, "&sender=", sender, "&action=", action, "&typeid=", typeid, "&time=", time, "&hash=", hash);
	pars = pars.join("");
	
	var progress = "<img src='/img/working.gif'/> ";
	var complete = "<img src='/img/checkmark.gif'/> ";

	$('notify_progress' + pos).innerHTML = progress;

	new Ajax.Request('/ajax/removeNotification/', {method: "post", parameters: pars, onComplete: function(transport){ $('notify_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; if(refresh==1) { Effect.Fade('notification' + pos, {endcolor: '#F8F8F8', afterFinish: function(){friendactivity('down', offset, limit)} }); } else { Effect.Fade('notification' + pos, {endcolor: '#F8F8F8'}); }} });
}

function clearAndResize(element) 
{
	element.value = "";
	element.rows = 10;
	element.cols = 60;
	element.style.color = "black";
	$('comment-box').focus();
}

function ClearInput(input, def)
{
	if(input.value == def)
	{
		input.value = '';
		input.style.color = 'black';
	}
}

function FillInput(input, def)
{
	if(input.value == '')
	{
		input.value = def;
		input.style.color = '#A1A1A1';
	}
}

function checkCommentForm(e, form, pos)
{
	if(form=="")
		var form = $('comment-form');
	var input = form['comment-add'];
	var comment = Form.Element.getValue(input);
	if(comment=="" || comment =="type your comment here" || comment=="type your reply here")
	{
		alert("You did not enter any text. Please try again.");
		$('comment-box').focus();
		$('comment-box').value = "";
		return false;
	}
	else if(comment.length < 5)
	{
		alert("Sorry, comments must be greater than 5 characters long. This is to prevent against bots and spammers. Please try again.");
		if(pos != -1)
			$('comment-box' + pos).focus();
		else
			$('comment-box').focus();
		return false;
	}
}

function checkSearchForm()
{
	var form = $('search-form');
	var input = form['q'];
	var query = Form.Element.getValue(input);
	
	if(query=="" || query=="search VoteOften")
	{
		alert("You did not enter any text. Please try again.");
		$('search-box').focus();
		$('search-box').value = "";
		
		return false;
	}
	else if(query.length < 3)
	{
		alert("Your search string is too short.");
		$('search-box').focus();
		$('search-box').value = "";
		
		return false;
	}
}

function checkInviteForm()
{
	var form = $('invite-form');

	var input = form['rname'];
	var rname = Form.Element.getValue(input);

	var input = form['remail'];
	var remail = Form.Element.getValue(input);

	var input = form['uname'];
	var uname = Form.Element.getValue(input);
}

function checkPasswordForm()
{
	var form = $('password-form');
	var input = form['new-pass'];
	var newPass = Form.Element.getValue(input);
	input = form['new-repeat-pass'];
	var newRepeatPass = Form.Element.getValue(input);

	if(newPass != newRepeatPass)
	{
		$('password-form-progress').innerHTML = "<img src='/img/x-mark.gif'/> Your new passwords did not match";
		return false;
	}
	
	if(newPass.length < 6)
	{
		$('password-form-progress').innerHTML = "<img src='/img/x-mark.gif'/> Passwords must be at least 6 characters long.";
		return false;
	}
	      	
	return true;
}

function checkEmail(email)
{ 	
  	return (email.indexOf(".") > 2) && (email.indexOf("@") > 0);
}

function updateComments(type, id, cid, redirect, option)
{
	$('comment-box').value = "";
	if(option != false)
		$('comment-form-progress').innerHTML = "<img src='/img/checkmark.gif'/>";
	
	pars = new Array("type=", type, "&id=", id, "&pos=", cid);
	pars = pars.join("");
	
	new Ajax.Updater('comments-content', '/ajax/refreshComments/', {method: "post", parameters: pars, onComplete: function(transport){ if(option != false) { window.location.href = redirect; } new Effect.Highlight(redirect, {duration: 2}); }});
}

function reply(pos, type, id)
{
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");

	new Ajax.Updater('reply' + pos, '/ajax/commentReply/', {method: "post", parameters: pars, onComplete: function(transport){ $('comment-box' + pos).focus(); 
	$('reply-form' + pos).observe('submit', function(e){
    	e.stop();
    	var formComplete = checkCommentForm(e, $('reply-form' + pos), pos);
    	if(formComplete == false)
    		return false;
    	$('submit-reply' + pos).disabled = true;
 	    $('comment-form-progress' + pos).innerHTML = "<img src='/img/working.gif'/>";
    	this.request({onComplete: function(transport){ 
    		$('comment-form-progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>";
    		updateComments(type, id, '0', transport.responseText, false);}
    	});
  	})
}});
}

function track(pos, type, id, user, hash)
{
	$('track' + pos).innerHTML = "adding...";
	$('track' + pos).href = '';
	
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");

	var typeid = type.substring(0,1)+id;
	
	new Ajax.Request('/ajax/track/', {method: "post", parameters: pars, onComplete: function(transport) { var images = $('title-image' + pos).innerHTML; $('track' + pos).innerHTML = "remove track"; images = images + '<a id=\'title-imagetrack'+pos+'\' class=\'title-image\' href=\'/user/'+user+'/track/\'><img src=\'/images/track.gif\'/></a> '; $('title-image' + pos).innerHTML = images; $('track' + pos).href = 'javascript: removeTracked('+pos+',\''+user+'\',\''+typeid+'\',\''+hash+'\',0);'; }});
}

function favorite(pos, type, id, user, num, hash)
{
	if(num > 4)
	{
		alert("Sorry, you can only have 5 favorites. Please remove one and try again.");
	}
	else
	{
		$('favorite' + pos).innerHTML = "adding...";
		$('favorite' + pos).href = '';
		
		pars = new Array("type=", type, "&id=", id, "&pos=", pos);
		pars = pars.join("");
	
		new Ajax.Request('/ajax/favorite/', {method: "post", parameters: pars, onComplete: function(transport) { var images = $('title-image' + pos).innerHTML; $('favorite' + pos).innerHTML = "remove favorite"; images = '<a id=\'title-imagefav'+pos+'\' class=\'title-image\' href=\'/user/'+user+'/\'><img src=\'/images/favorite.gif\'/></a> ' + images; $('title-image' + pos).innerHTML = images; $('favorite' + pos).href = 'javascript: favRemove('+pos+',\''+type+'\','+id+',\''+hash+'\',0,\''+user+'\');'; }});
	}
}

function logout()
{
	new Ajax.Request('/logout', {method: "post", onComplete: function(transport){ window.location.href= unescape(window.location.href); } }); 
}

function friendactivity(action, limit, offset)
{
	pars = new Array("limit=", limit, "&offset=", offset);
	pars = pars.join("");
	
	if(action=="down")
	{
		new Ajax.Updater('friend-activity', '/ajax/updateFriendActivity/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('notification' + (limit + offset), {endcolor: '#F8F8F8'});} });
	}
	else if(action=="up")
	{
		new Ajax.Updater('friend-activity', '/ajax/updateFriendActivity/', {method: "post", parameters: pars, onComplete: function(transport){ new Effect.Highlight('notification' + (offset+1), {endcolor: '#F8F8F8'});} });
	}
}

function editProfile(username, hash, action)
{
	pars = new Array("user=", username, "&hash=", hash, "&action=", action);
	pars = pars.join("");
	
	$('edit-profile-progress').show();
	$('edit-profile-progress').innerHTML = "<img id='title-image' src='/img/working.gif' alt='working' style='margin-left: 5px;' />";
	
	new Ajax.Updater('form', '/ajax/toggleEditProfileForm/', {method: "post", parameters: pars, onComplete: function(transport){ $('edit-profile-progress').innerHTML = "<img id='title-image' src='/img/checkmark.gif' alt='working' style='margin-left: 5px;' />"; if(action=="refresh") new Effect.Fade('edit-profile-progress'); }} );
}

function updateProfile()
{
	var action = "refresh";
	
	pars = new Array("&action=", action);
	pars = pars.join("");
	
	$('edit-profile-progress').innerHTML = "<img id='title-image' src='/img/working.gif' alt='working' style='margin-left: 5px;' />";
	
	new Ajax.Updater('form', '/ajax/toggleEditProfileForm/', {method: "post", parameters: pars, onComplete: function(transport){ $('edit-profile-progress').innerHTML = "<img id='title-image' src='/img/checkmark.gif' alt='working' style='margin-left: 5px;' />"; new Effect.Fade('edit-profile-progress');} });
}

function report(pos, type, id)
{
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");
	
	$('report' + pos).style.color = "#B90000";

	$('report' + pos).innerHTML = 'are you sure? ';
	$('report-links' + pos).innerHTML = "<a id='report-linky"+pos+"' href=''>yes</a> <span class=\'divider\'>/</span> <a id='report-linkn"+pos+"' href=''>no</a></span>";
	
	$('report-linky' + pos).href = 'javascript: reportYes('+pos+',\''+type+'\','+id+');';
	$('report-linkn' + pos).href = 'javascript: reportNo('+pos+',\''+type+'\','+id+');';
}

function reportComment(type, id, c_id)
{
	pars = new Array("type=", type, "&id=", id, "&cid=", c_id);
	pars = pars.join("");

	$('report_' + c_id).innerHTML = 'report? [<a id=\'report-comment'+c_id+'\' href=\'\'>yes</a> / <a id=\'noreport-comment'+c_id+'\' href=\'\'>no</a>]';
	
	$('report-comment' + c_id).href = 'javascript: reportCommentYes(\''+type+'\','+id+','+c_id+');'
	$('noreport-comment' + c_id).href = 'javascript: reportCommentNo('+c_id+');';
}

function reportYes(pos, type, id)
{
	pars = new Array("type=", type, "&id=", id, "&pos=", pos);
	pars = pars.join("");
	
	new Ajax.Request('/ajax/report/', {method: "post", parameters: pars});

	$('report' + pos).innerHTML = "reported";
	$('report-links' + pos).innerHTML = "";

	var images = $('title-image' + pos).innerHTML;
	images = images + '<img class=\'title-image\' src=\'/images/report.gif\'/> ';
	
	$('title-image' + pos).innerHTML = images;
}

function reportCommentYes(type, id, c_id)
{
	pars = new Array("type=", type, "&id=", id, "&cid=", c_id);
	pars = pars.join("");
	
	new Ajax.Request('/ajax/reportComment/', {method: "post", parameters: pars});
	
	$('report_' + c_id).innerHTML = "<span id='reported'>reported</span>";
}

function reportNo(pos, type, id)
{
	$('report' + pos).innerHTML = " <a id=\'report-link" + pos + "\' href=''>report</a>";
	$('report-links' + pos).innerHTML = "";
	
	$('report-link' + pos).href = 'javascript: report('+pos+',\''+type+'\','+id+');';
}

function reportCommentNo(cid)
{
	$('report_' + cid).innerHTML = " report";
}

function biasVote(pos, type, id, value, loggedin)
{
	$('complete'+pos).style.display='block';
	
	if(loggedin==0)
	{
		$('progress' + pos).innerHTML = "";
		$('complete' + pos).innerHTML ='<img src="/img/x-mark.gif"/>';
		alert("Sorry, you need to be logged in to use this feature.");
		window.location.href = "/login?e=5";
		return;
	}
	pars = new Array("type=", type, "&id=", id, "&pos=", pos, "&value=", value);
	pars = pars.join("");

	new Ajax.Request('/ajax/biasVote/', {method: "post", parameters: pars, onComplete: function(transport){ $('progress' + pos).innerHTML = ""; $('complete' + pos).innerHTML ='<img src="/img/checkmark.gif"/>'; new Effect.Fade('complete'+pos, {afterFinish: function(){$('complete'+pos).innerHTML = ''; $('complete'+pos).style.display='block';}})}});

}

function favRemove(pos, type, id, hash, fade, user)
{
	if(fade!=0) $('fav_progress' + pos).innerHTML = "<img src='/img/working.gif'/>";
	else { $('favorite' + pos).innerHTML = "removing..."; $('favorite' + pos).href = ""; }
	
	pars = new Array("type=", type, "&id=", id, "&pos=", pos, "&hash=", hash);
	pars = pars.join("");
	
	if(fade!=0)
		new Ajax.Request('/ajax/unfavorite/', {method: "post", parameters: pars, onComplete: function(transport){ $('fav_progress' + pos).innerHTML = "<img src='/img/checkmark.gif'/>"; new Effect.Fade('pfavorite' + pos); }} );
	
	else 
		new Ajax.Request('/ajax/unfavorite/', {method: "post", parameters: pars, onComplete: function(transport){ $('favorite' + pos).innerHTML = "favorite"; $('favorite' + pos).href = 'javascript: favorite('+pos+',\''+type+'\','+id+',\''+user+'\',0,\''+hash+'\');'; $('title-imagefav'+pos).remove(); }} );
}

function editForm()
{
	$('edit-form').observe('submit', function(e){e.stop(); this.request()});
}

/* Submit functions */

function verifyTitle()
{
	$('title-progress').innerHTML = " <img id='vertical' src='/img/working.gif'/>";
	var form = $('submit-form');
	var input = form['title'];
	var title = Form.Element.getValue(input);
	if(title.length > 75)
	{
		$('title-progress').innerHTML = " <img id='vertical' src='/img/x-mark.gif'/>";
		$('title-error').innerHTML = "Please limit your title to 75 characters.";
		return false;
	}
	else if(title.length < 10)
	{
		$('title-progress').innerHTML = " <img id='vertical' src='/img/x-mark.gif'/>";
		$('title-error').innerHTML = "Sorry, your title is too short.";
		return false;
	}
	
	$('title-progress').innerHTML = " <img id='vertical' src='/img/checkmark.gif'/>";
	$('title-error').innerHTML = "";
}

function verifyURL()
{
	$('url-progress').innerHTML = " <img id='vertical' src='/img/working.gif'/>";
	var form = $('submit-form');
	var input = form['url'];
	var url = Form.Element.getValue(input);
	
	for(i=0; i<url.length; i++)
	{
		if(url.charAt(i)=="?")
		{
			url = url.substring(0, i);
		}
	}
	
	pars = new Array("url=", url);
	pars = pars.join("");
	
	new Ajax.Request('/ajax/verifyURL/', {method: "post", parameters: pars, onComplete: function(transport){ text = transport.responseText; if(text.length > 0) { $('url-progress').innerHTML = " <img id='vertical' src='/img/x-mark.gif'/>"; $('url-error').innerHTML = text ; } else { $('url-progress').innerHTML = " <img id='vertical' src='/img/checkmark.gif'/>"; $('url-error').innerHTML = "";}}} );
}

function remaining(type)
{
	var form = $('submit-form');
	var input = form[type];
	var desc = Form.Element.getValue(input);
	if(type == "description")
		var max = 300;
	else
		var max = 75;
	var limit = max - desc.length;
	
	if(limit == 0)
		new Effect.Highlight('charlimit-' + type);

	if(type=='description' && desc.length >= 300)
	{
		limit = 0;
		$('charlimit-' + type).innerHTML = "[" + limit + " characters remaining]";
		input.value = input.value.substring(0, 300);
	}
	
	$('charlimit-' + type).innerHTML = "[" + limit + " characters remaining]";
}

function verifyDescription()
{
	$('desc-progress').innerHTML = " <img id='vertical' src='/img/working.gif'/>";

	var form = $('submit-form');
	var input = form['description'];
	var desc = Form.Element.getValue(input);
	if(desc.length < 20)
	{
		$('desc-progress').innerHTML = " <img id='vertical' src='/img/x-mark.gif'/>";
		$('desc-error').innerHTML = "Sorry, your description is too short.";
		return false;		
	}
	$('desc-progress').innerHTML = " <img id='vertical' src='/img/checkmark.gif'/>";
	$('desc-error').innerHTML = "";
}

function verifyTags()
{
	$('tags-progress').innerHTML = " <img src='/img/working.gif'/>";
	
	var allTags = new Array();
	var form = $('submit-form');
	var count = 0;
	
	for(i=1; i<44; i++)
	{
		var check = "tag" + i;
		var tag = form[check];
		var value = Form.Element.getValue(tag);
		if(value!=null && value==i)
		{
			allTags[i] = 1;
			count++;
			notag = false;
		}
		else
			allTags[i] = 0;
	}
	if(count==0)
		notag = true;
	
	if(!notag && count>0 && count <7)
	{
		$('tags-progress').innerHTML = " <img id='vertical' src='/img/checkmark.gif'/>";
		$('tags-error').innerHTML = "";
	}
	else
	{
		$('tags-progress').innerHTML = " <img src='/img/x-mark.gif'/>";
		if(count==0 || notag)
			$('tags-error').innerHTML = "Sorry, you haven't selected any tags.";
		else if(count>6)
			$('tags-error').innerHTML = "Sorry, you can only select 6 tags.";
	}
}

function reset()
{
	var form = $('submit-form');
//	var input = form['url'];
//	input.value="http://";
//	var input = form['title'];
//	input.value="";
}

function checkSubmitForm()
{
	var alertText = "";

	if($('title-progress').innerHTML == "" || $('title-error').innerHTML != "")
	{
		if($('title-error').innerHTML == "")
			alertText+="You did not enter a title. \n";
		else
			alertText+=$('title-error').innerHTML + "\n";
	}
	if($('url-progress').innerHTML == "" || $('url-error').innerHTML != "")
	{
		if($('url-error').innerHTML == "")
			alertText+="You did not enter a URL. \n";
		else
			alertText+=$('url-error').innerHTML + "\n";
	}
	if($('desc-progress').innerHTML == "" || $('desc-error').innerHTML != "")
	{
		if($('desc-error').innerHTML == "")
			alertText+="You did not enter a description. \n";
		else
			alertText+=$('desc-error').innerHTML + "\n";
	}
	if($('tags-progress').innerHTML == "" || $('tags-error').innerHTML != "")
	{
		if($('tags-error').innerHTML == "")
			alertText+="You did not select any tags. \n";
		else
			alertText+=$('tags-error').innerHTML + "\n";	
	}
		
	if(alertText=="" && !notag)
		return true;
	else
	{
		alert("Sorry, there are errors with your form: \n \n" + alertText);
		return false;
	}
}

function submitFromURLCheck()
{
	var form = $('submit-form');
	
	var input = form['url'];
	if($F(input) != "http://")
	{
		verifyURL();
	}
	
	var input = form['title'];
	if($F(input) != "")
	{
		remaining('title');
		verifyTitle();
	}
	
	var input = form['description'];
	if($F(input) != "")
	{
		remaining('description');
		verifyDescription();
	}
}

function addTags(type, id, form)
{
	$('request-form-progress').innerHTML = " <img style='padding-left: 5px; vertical-align: -20%;' src='/img/working.gif'/>";
	
	pars = new Array("type=", type, "&id=", id);
	pars = pars.join("");
	
	new Ajax.Updater('add-tag-content', '/ajax/toggleAddTagForm/', {method: "post", parameters: pars, onComplete: function(transport){ $('add-tag-content').innerHTML = transport.responseText; $('submit-request').show(); $('request-form-progress').innerHTML = "";
		$('add-form').observe('submit', function(e){
    	e.stop();
    	var formComplete = checkAddForm();
    	if(formComplete == false)
    	{
    		alert("There was an error with your add tag form.");
    		return false;
    	}
 	    $('add-form-progress').innerHTML = " <img src='/img/working.gif'/>";
    	this.request({onComplete: function(transport){ 
    		$('add-form-progress').innerHTML = " <img src='/img/checkmark.gif'/>";
    		$('submit-request').hide();
    		new Ajax.Updater('add-tag-update-field', '/ajax/showAddTagRequests/', {method: "post", parameters: pars, onComplete: function(transport) { toggleRequests('show'); } });
    		notag = true;
    		}
    	});
  	})
}});
}

function removeAddTagRequest()
{
	$('submit-request').hide();
}

function verifyAddTags()
{
	$('tags-progress').innerHTML = " <img src='/img/working.gif'/>";
	
	var allTags = new Array();
	var form = $('add-form');
	var count = 0;
	
	var input = form['disabled'];
	var disabled = Form.Element.getValue(input);
	
	count -= disabled;
	
	for(i=1; i<44; i++)
	{
		var check = "tag" + i;
		var tag = form[check];
		var value = Form.Element.getValue(tag);
		if(value!=null && value==i)
		{
			allTags[i] = 1;
			count++;
			notag = false;
		}
		else
			allTags[i] = 0;
	}
	var tag = form['other'];
	var value = Form.Element.getValue(tag);
	if(value!="")
	{
		allTags[i] = 1;
		count++;
		notag = false;
	}
	
	if(count==0)
		notag = true;
	
	if(!notag && count>0 && count <4)
	{
		$('tags-progress').innerHTML = "";
		$('tags-error').innerHTML = "";
	}
	else
	{
		$('tags-progress').innerHTML = "";
		if(count==0 || notag)
			$('tags-error').innerHTML = "<span style='color: red; display: block; text-align: center; font-weight: bold;'>Sorry, you haven't selected any tags.</span>";
		else if(count>3)
			$('tags-error').innerHTML = "<span style='color: red; display: block; text-align: center; font-weight: bold;'>Sorry, you can only select 3 tags.</span>";
	}
}

function checkAddForm()
{
	if($('tags-error').innerHTML == "" && !notag && $('tags-progress').innerHTML == "")
		return true;
	return false;
}

function checkRatingForm(pos)
{
	var selectedButton = $('rating-form' + pos).serialize().toQueryParams()['group1'];
	
	if(selectedButton==null)
	{
		alert("Sorry, you didn't select a rating! Please try again.");
		
		return false;
	}
	
	return selectedButton;
}

function updateRatings(pos)
{
	var candidate = $('rating-form' + pos).serialize().toQueryParams()['candidate'];
	var selectedButton = $('rating-form' + pos).serialize().toQueryParams()['group1'];
	
	var connecter = "a"
	if(selectedButton=="unsure")
		var connecter = "an";
	
	var finished = $('finished').innerHTML;
	var update = "<tr><td>You gave <span id='canstrong'>" + candidate + "</span> " + connecter + " " + selectedButton + " rating.";
	
	$('finished').innerHTML = finished + update;
	new Effect.Fade('rating-form' + pos, {afterFinish: function() { $('rating-form'+pos).remove(); }} );
}

function updateChart(type, id)
{	
	var xml = false;
	
	pars = new Array("type=", type, "&id=", id);
	pars = pars.join("");

	new Ajax.Request('/ajax/updateChart/', {method: "post", parameters: pars, onComplete: function (transport){ xml = transport.responseText; if(xml!=false) updateChartXML("electionRatings", xml); }} );
}

function getArticles(type, can, rating)
{
	$('rated-articles').innerHTML = "<img src='/img/working.gif'/>";
	
	pars = new Array("type=", type, "&can=", can, "&rating=", rating);
	pars = pars.join("");

	new Ajax.Updater('rated-articles', '/ajax/showRatedArticles/', {method: "post", parameters: pars});
}

function toggleInvite()
{
	new Effect.toggle('invite', 'slide', {duration:0.5});
}

function toggleRating(display)
{
	if(display=="show")
	{
		$('rating').show();
		$('show-rating').innerHTML = '[hide]';
		$('show-rating').href = 'javascript: toggleRating(\'hide\');';
	}
	else
	{
		$('rating').hide();
		$('show-rating').innerHTML = '[show]';
		$('show-rating').href = 'javascript: toggleRating(\'show\');';
	}
}

function toggleRequests(display)
{
	if(display=="show")
	{
		$('requests').show();
		$('show-requests').innerHTML = '[hide]';
		$('show-requests').href = 'javascript: toggleRequests(\'hide\');';
	}
	else
	{
		$('requests').hide();
		$('show-requests').innerHTML = '[show]';
		$('show-requests').href = 'javascript: toggleRequests(\'show\');';
	}
}

function toggleComments(display)
{
	if(display=="show")
	{
		$('comments').show();
		$('show-comments').innerHTML = '[hide]';
		$('show-comments').href = 'javascript: toggleComments(\'hide\');';
	}
	else
	{
		$('comments').hide();
		$('show-comments').innerHTML = '[show]';
		$('show-comments').href = 'javascript: toggleComments(\'show\');';
	}
}


// captcha functions

function displayCaptcha() 
{
	Recaptcha.create("6Lcq0gAAAAAAANB19B9CMbb3ce0pPVHngyF-jwzy",
		"recaptcha_div",
		{
			theme: "custom",
			callback: Recaptcha.focus_response_field
		});
}

function reloadCaptcha()
{
	Recaptcha.reload();
}
