$(document).ready(function()
{	

	$('.add_fave').click(function()
	{
		var display_div = $('#favorThis');
		var brand_id = $(this).attr('param');
		var fave_url = $(this).attr('param_url');
		$.getJSON(fave_url + '/brand_id/' + brand_id + '/type/add', function(data)
				{
					if (data.success)
					{
						global.floatMessage(display_div, 'This brand has been added to your favorites.', 'inside');
						$('#add_fave_div').hide();
						$('#remove_fave_div').show();
					}
					else
					{
						switch(data.reason)
						{
							case 1:
								global.floatMessage(display_div, 'Error: Bad request. Please try again.', 'inside');
								break;
							case 2:
								global.showLoginDialog();
								break;
							case 3:
								global.floatMessage(display_div, 'Sorry, we can\'t find that brand.', 'inside');
								break;
							case 4:
								global.floatMessage(display_div, 'This brand is already in your favorites!', 'inside');
								break;
							default:
								global.floatMessage(display_div, 'An unknown error has occured.', 'inside');
						}
					}
				});
	});

	$('.remove_fave').click(function()
	{
		var display_div = $('#favorThis');
		var brand_id = $(this).attr('param');
		var fave_url = $(this).attr('param_url');
		$.getJSON(fave_url + '/brand_id/' + brand_id + '/type/remove', function(data)
				{
					if (data.success)
					{
						global.floatMessage(display_div, 'This brand has been removed from your favorites.', 'inside');
						$('#remove_fave_div').hide();
						$('#add_fave_div').show();									
					}
					else
					{
						switch(data.reason)
						{
							case 1:
								global.floatMessage(display_div, 'Error: Bad request. Please try again.', 'inside');
								break;
							case 2:
								global.ShowLoginDialog();
								break;
							case 3:
								global.floatMessage(display_div, 'Sorry, we can\'t find that brand.', 'inside');
								break;
							case 4:
								global.floatMessage(display_div, 'This brand is already in your favorites!', 'inside');
								break;
							case 5:
								global.floatMessage(display_div, 'This brand isn\'t in your favourites...', 'inside');
								break;
							default:
								global.floatMessage(display_div, 'An unknown error has occured.', 'inside');
						}
					}
				});
	});

	$('.vote_up').livequery('click', function(event)
	{
		var entry_id = $(this).attr('param');
		var vote_url = $(this).attr('param_url');
		var display_div = $('#entry_' + entry_id);
		$.getJSON(vote_url + '/entry_id/' + entry_id + '/vote/1', function(data)
				{
					if (data.success)
					{
						global.floatMessage(display_div, "Your vote has been saved.");
					}
					else
					{
						if (data.reason == 1)
						{
							//global.msgBox("You need to be logged in to vote. (add log in dialog here)")
							global.showLoginDialog();
						}
						else if (data.reason == 2)
						{
							global.floatMessage(display_div, "You have already voted on this entry.", 'inside');
						}
						else if (data.reason == 3)
						{
							global.floatMessage(display_div, "You cannot vote for your own entry.", 'inside');

						} 
						else 
						{
							global.floatMessage(display_div, "An unknown error has occured.", 'inside');
						}
					}

				});
	});

	$('.vote_down').livequery('click', function(event)
	{
		var entry_id = $(this).attr('param');
		var vote_url = $(this).attr('param_url');
		var display_div = $('#entry_' + entry_id);						
		$.getJSON(vote_url + '/entry_id/' + entry_id + '/vote/-1', function(data)
				{
					if (data.success)
					{
						global.floatMessage(display_div, 'Your vote has been saved.', 'inside');
					}
					else
					{
						if (data.reason == 1)
						{
							//global.msgBox('You need to be logged in to vote. *launch login dialog*');
							global.showLoginDialog();
						}
						else if (data.reason == 2)
						{
							global.floatMessage(display_div, 'You have already vote for this entry.', 'inside');
						}
						else if (data.reason == 3)
						{
							global.floatMessage(display_div, 'You cannot vote for your own entries.', 'inside');
						} 
						else 
						{
							global.floatMessage(display_div, 'An unknown error has occured.', 'inside');
						}
					}

				});
	});


	$('#add_opinion').click(function(){
		// First we hide the previous div
		$('.contribute_div').hide('fast',function(){
				$('#answer_area').show('fast');
		});
	});

	$('#yes_button').click(function()
			{
				$('#yes_button').effect('pulsate', { times:1});
				$('#does_matter').attr('value', '1');
				$('#why').attr('style', 'border: 1px solid #b9f1ae; background-color: #eefce4');
				$('#why_area').show('fast');
			});
	$('#no_button').click(function()
			{
				$('#no_button').effect('pulsate', { times:1});		
				$('#does_matter').attr('value', '0');
				$('#why').attr('style', 'border: 1px solid #fed6af; background-color: #ffe9d5');
				$('#why_area').show('fast');
			});

	$('.reply').livequery('click', function(event)
			{
				$('.dialog_box').hide('slow');
				var entry_id = $(this).attr('param');
				var reply_id = "#reply_" + entry_id;
				$(reply_id).show('slow');					
			});
	$('.reply_logged_out').livequery('click', function(event)
			{
				global.showLoginDialog();
			});
	$('.close_dialog').livequery('click', function(event)
			{	
				$('.dialog_box').hide("slow");
			});
	$('.close_dialog_link').livequery('click', function(event)
			{	
				$('.dialog_box').hide("slow");
			});
	
	showReplies = function(entry_id){
					
		var replies_id = '#user_replies_' + entry_id;
		var hide_link_id = '#hide_replies_link_' + entry_id;
		var show_link_id = '#show_replies_link_' + entry_id;				
		$(hide_link_id).show(); $(show_link_id).hide(); $(replies_id).show("slow");	
	}
	
	$('.show_user_replies').livequery('click', function(event)
	{
			var entry_id = $(this).attr('param');
			showReplies(entry_id)			
	});

	$('.reply_counter').livequery('click', function(event)
	{
		
		var entry_id = $(this).attr('param');
		var show_link_status = $('#show_replies_link_' + entry_id).css("display");
		if (show_link_status == 'none'){
			hideReplies(entry_id);
		}else{
			showReplies(entry_id);	
		}							
		
					
	});

	hideReplies = function(entry_id){				
		var replies_id = '#user_replies_' + entry_id;
		var show_link_id = '#show_replies_link_' + entry_id;
		var hide_link_id = '#hide_replies_link_' + entry_id;
		$(hide_link_id).hide(); $(show_link_id).show(); $(replies_id).hide("slow");				
	}
	
	$('.hide_user_replies').livequery('click', function(event)
	{
		var entry_id = $(this).attr('param');
		hideReplies(entry_id)
	});
	
	$('.flag_button').livequery('click', function(event)
	{
		var entry_id = $(this).attr('param');
		var entry_url = $(this).attr('param_url');
		var display_div = $('#entry_' + entry_id);
		
		$.getJSON(entry_url + '/type/entry/id/' + entry_id, function(data)
				{
					if (data.success)
					{
						$('.dialog_box').hide();

						// If entry was flagged, hide it from the user immediately.
						var entry_div = '#entry_' + entry_id;
						$(entry_div).hide();

						// Hide all replies to this entry as wel
						var replies_div = '#user_replies_' + entry_id;
						$(replies_div).hide();
					}
					else
					{
						if (data.reason == 1)
						{
							$('.dialog_box').hide();									
							//global.msgBox('You need to be logged in to flag. *launch login dialog*');
							global.showLoginDialog();
						} 
						else if (data.reason == 2)
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'You have already flagged this entry.', 'inside');
						}
						else if (data.reason == 3)
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'You cannot flag your own matters.', 'inside');
						}
						else
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'An unknown error occured.', 'inside');
						}
					}
		});	
		
	});

	$('.reply_flag_button').livequery('click', function(event)
	{
		var reply_id = $(this).attr('param');
		var entry_url = $(this).attr('param_url');
		var display_div = $('#reply_area_' + reply_id);
		
		$.getJSON(entry_url + '/type/reply/id/' + reply_id, function(data)
				{
					if (data.success)
					{
						//$('.dialog_box').hide("fast", function(){
						//	global.floatMessage($(this),"Thank you, our administrator has been notified.");
						//});
						$('.dialog_box').hide();
						//global.msgBox("Thank you, our administrator has been notified.");
						//$('.dialog_box_inner').html('<div class="reply_header">Thank you, our administrator has been notified.</div>');
						//alert('Entry flagged.');

						// If entry was flagged, hide it from the user immediately.
						var reply_div = '#reply_area_' + reply_id;
						$(reply_div).hide();
					}
					else
					{
						if (data.reason == 1)
						{
							$('.dialog_box').hide();									
							//global.msgBox('You need to be logged in to flag. *launch login dialog*');
							global.showLoginDialog();
						} 
						else if (data.reason == 2)
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'You have already flagged this reply.', 'inside');
						}
						else if (data.reason == 3)
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'You cannot flag your own replies.', 'inside');
						}
						else
						{
							$('.dialog_box').hide();									
							global.floatMessage(display_div, 'An unknown error occured.', 'inside');
						}
					}
		});	
		
	});			
				
	$('.flag_entry').livequery('click', function(event)
	{
		$('.dialog_box').hide('slow');
		var entry_id = $(this).attr('param');
		var flag_id = "#flag_" + entry_id;
		$(flag_id).show('slow');	
	});

	flagReplyFunction = function(reply_id, flag_url){

		$.getJSON(flag_url + '/type/reply/id/' + reply_id, function(data)
				{
					if (data.success)
					{
						alert('Reply flagged');
						var reply_div = '#reply_area_' + reply_id;
						$(reply_div).hide();
					}
					else
					{
						if (data.reason == 1)
						{
							global.msgBox('You need to be logged in to flag.');
						}
						else if (data.reason == 2)
						{
							global.msgBox('You have already flagged this entry.');
						}
						else if (data.reason == 3)
						{
							global.msgBox('You cannot flag your own reply.');
						}
						else
						{
							global.msgBox('An unknown error has occured');
						}
					}
				});
	}
	
	$('.flag_reply').livequery('click', function(event)
			{
				$('.dialog_box').hide('slow');
				var reply_id = $(this).attr('param');
				var flag_id = "#reply_flag_" + reply_id;
				$(flag_id).show('slow');
				//flagReplyFunction(reply_id);
			});
	
	$('.submit_reply').livequery('click', function(event)
			{

				var isValid = true;
		
				var entry_id = $(this).attr('param');
				var reply_url = $(this).attr('param_url_reply');
				var flag_url = $(this).attr('param_url_flag');
				var default_img = $(this).attr('param_default_img');
				var status_bar = '#reply_status_' + entry_id;
				var reply_text_id = '#reply_text_' + entry_id;
				var reply_text = $(reply_text_id).val();
				var reply_box = document.getElementById("reply_" + entry_id);
				var reply_counter = document.getElementById("reply_counter_" + entry_id)
				var reply_button = document.getElementById("submit_reply_" + entry_id)
				var show_reply_button = document.getElementById("show_replies_link_" + entry_id)
				var reply_count = 0;

				if (global.checkIfEmpty(reply_text) == true){
					isValid = false;
				}
				
				if(reply_counter){
					reply_count = parseInt(reply_counter.innerHTML);
				}

				if (isValid == true){

					reply_button.disabled = true;				
					$(status_bar).html('<img src="/images/images/loading_small.gif" />');
					global.postJSON(reply_url + '/entry_id/' + entry_id ,{text:reply_text}, function(data)
							{
								if (data.success)
								{
									var reply_list = document.getElementById("user_replies_" + entry_id);
									if(!reply_list){
										
										reply_count = 0;
										
										var actionArea = document.getElementById("action_links_"+entry_id);
										
										var create_replies = document.createElement("div");
										create_replies.className = "replies";											
										$(actionArea).prepend(create_replies);

										$(create_replies).hide();
										
										var create_replies_counter = document.createElement("a");
										create_replies_counter.className = "reply_counter";
										create_replies_counter.setAttribute("href", "javascript:;")
										create_replies_counter.setAttribute("id", "reply_counter_"+entry_id);
										create_replies_counter.setAttribute("param", entry_id);
										$(create_replies_counter).text("1")
										create_replies.appendChild(create_replies_counter);

										var create_replies_show = document.createElement("a");
										create_replies_show.className = "show_user_replies";
										create_replies_show.setAttribute("id", "show_replies_link_"+entry_id);
										create_replies_show.setAttribute("href", "javascript:;");
										create_replies_show.setAttribute("param", entry_id);
										$(create_replies_show).text("Show Reply");
										create_replies.appendChild(create_replies_show);

										$(create_replies_counter).click(function(){												
											var entry_id = $(this).attr('param');
											var show_link_status = $('#show_replies_link_' + entry_id).css("display");
											if (show_link_status == 'none'){
												hideReplies(entry_id);
											}else{
												showReplies(entry_id);	
											}								
										});
										
										$(create_replies_show).click(function(){												
											showReplies(entry_id)						
										});
										
										var create_replies_hide = document.createElement("a");
										create_replies_hide.className = "hide_user_replies";
										create_replies_hide.setAttribute("id", "hide_replies_link_"+entry_id);
										create_replies_hide.setAttribute("href", "javascript:;");
										create_replies_hide.setAttribute("param", entry_id);
										$(create_replies_hide).text("Hide Reply");
										create_replies.appendChild(create_replies_hide);

										$(create_replies_hide).click(function(){												
											hideReplies(entry_id)
										});
										
										var reply_wrap = document.getElementById("reply_box_wrap_" + entry_id);
										var reply_list = document.createElement("div");
										reply_list.setAttribute("id", "user_replies_"+entry_id);						
										$(reply_list).hide();
										$(reply_wrap).after(reply_list);

										$(create_replies).fadeIn("slow");
										reply_counter = create_replies_counter;

										show_reply_button = create_replies_show;
									}
																				
									reply_counter.innerHTML = reply_count + 1;
									
									$(status_bar).empty().html('<h3>Your reply was saved!</h3>');
									setTimeout( function(){$(reply_box).hide("slow");}, 1500);
									setTimeout( function(){reply_button.disabled = '';}, 3000);
									
									var create_reply_area = document.createElement("div");
									create_reply_area.className = "user_reply_area"
									reply_list.appendChild(create_reply_area)
									$(create_reply_area).hide();	
									
									var create_reply_avatar = document.createElement("div");
									create_reply_avatar.className = "avatar";
									create_reply_area.appendChild(create_reply_avatar);
									
									
									
									var create_reply_avatar_img = document.createElement("img");
									create_reply_avatar_img.setAttribute('src', data.avatar);
									create_reply_avatar_img.setAttribute('class', 'profileImg')
									create_reply_avatar.appendChild(create_reply_avatar_img);

								
									
									var create_reply_txt = document.createElement("div");
									create_reply_txt.className = "linkified text_area";
									$(create_reply_txt).html(global.linkify_plain(data.reply));
									create_reply_area.appendChild(create_reply_txt);

									create_reply_avatar.innerHTML += data.username
									
									var create_reply_txt = document.createElement("div");
									create_reply_txt.className = "linkified text_area";
									$(create_reply_txt).html(global.linkify_plain(data.reply));

									var create_reply_timestap = document.createElement("p");
									create_reply_timestap.className = "time";
									$(create_reply_timestap).html("matterized 1 second ago")
									create_reply_txt.appendChild(create_reply_timestap);
									
									var create_reply_bottum = document.createElement("div");
									create_reply_bottum.className = "bottom_area";
									create_reply_txt.appendChild(create_reply_bottum);

									var create_reply_links = document.createElement("div");
									create_reply_links.className = "action_links";
									create_reply_bottum.appendChild(create_reply_links);

									var create_reply_links_ul = document.createElement("ul");										
									create_reply_links.appendChild(create_reply_links_ul);

									var create_reply_links_li = document.createElement("li");										
									create_reply_links_ul.appendChild(create_reply_links_li);

									var create_reply_links_flagA = document.createElement("a");
									create_reply_links_flagA.className = "flag_reply";
									create_reply_links_flagA.setAttribute('href', 'javascript:;')						
									create_reply_links_li.appendChild(create_reply_links_flagA);

									$(create_reply_links_flagA).click(function(){
										var reply_id = data.param;
										flagReplyFunction(reply_id, flag_url);
									});
																			
									var create_reply_links_flagImg = document.createElement("img");
									create_reply_links_flagImg.setAttribute('src', '/images/buttons/flag.png')						
									create_reply_links_flagA.appendChild(create_reply_links_flagImg);

									$(create_reply_area).fadeIn("slow");
									$(reply_text_id).val("");
									$(show_reply_button).click();
									
								}	
								else
								{
									if (data.reason == 1)
									{
									    $(status_bar).empty();									
										//$(reply_box).hide("slow");
										global.showLoginDialog();
										reply_button.disabled = '';
									}
									else if (data.reason == 2)
									{
										$(status_bar).empty().html('<h3>Slow down! You are replying too fast!!!</h3>');
										reply_button.disabled = false;
									}
									else if (data.reason == 3)
									{
										$(status_bar).empty().html('<h3>Hey this ain\'t a novel! Keep it at 360 max!</h3>');
										reply_button.disabled = false;
									}
									else
									{
										$(status_bar).empty().html('<h3>Sorry, an error occured. Your reply was not saved.</h3>');
										
									}
								}

							});
				}else{
					$(status_bar).empty().html('<h3>You did not enter a message.</h3>');
					
				}
			});
	
	$("#feed_more_button").click(function()
			{
				$(this).parent().css('background-color', '#CFCFCF');
				$(this).hide();
				var cur_param = $(this).attr('param');
				var new_param = parseInt(cur_param) + 1;
				var load_into = '#new_load_' + cur_param;

				var param_per_page = $(this).attr('param_per_page');
				var param_total = $(this).attr('param_total');
				var param_url = $(this).attr('param_url');
				
				$('#feed_loader').show();
				$(load_into).load(param_url+'?call=' + cur_param, function(data)
						{
							var new_div = document.createElement('div');
							new_div.setAttribute('id', 'new_load_' + new_param);
							document.getElementById('all_entries').appendChild(new_div);
							$('#feed_more').css('background-color', '#FFF');
							$('#feed_loader').hide();
							$('#feed_more_button').attr('param', new_param);
							$('#feed_more_button').show();

							if (cur_param*param_per_page >= param_total) {
								$('#feed_more').hide();
							} 
							
						});
				
			});
	

	

	
});