
var clickHandlers = {};
var cvltvre_rec = function () {
	clickHandlers.like = function(b) {
		var eid = b.parents(".rec_entry").attr("r_id");
		if(!eid) { 
			return; 
		}
		var rid = b.attr("r_id");
		var f_e_id = b.parents(".rec_entry").attr("f_e_id");
		
		if(rid === undefined) {
			rid = "-1";
		}
		$.get(
			base_root + "action/rec/add",
			{type: "like", eid: eid, rid: rid, f_e_id: f_e_id},
			function(data) {
				rec =  eval("(" + data + ")");
				if(rec) {
					b.attr("r_id", rec.id);
					b.text(rec.text);
				}
			}
		);
	};
	
	makeComment = function(comment) {
		// TODO: Handle Current, sync with php
		// Stylize
		var messageValue = comment.comment.replace(/\n/g,'<br />')
		retval = '<div class="comment_element"><div class="comment_image">' + comment.user_icon  + '</div><div class="comment_content">' + messageValue + '</div></div>';
		return retval;
	};
	
	clickHandlers.comment = function(b) {
		var eid = b.parents(".rec_entry").attr("r_id");
		var rec_entry = b.parents(".rec_entry");
		if(rec_entry.children(".comments_collection").length > 0) {
			rec_entry.children(".comments_collection").remove();
			return;
		}
		if(b.attr("c_count") == 0) {
			return;
		}
		$.get(
			base_root + "action/rec/get",
			{type: "comment", eid: eid},
			function(data) {
				comments = eval("(" + data + ")");
				comment_div = "<div class=\"comments_collection\">";
				for(i = 0; i < comments.length; i++) {
					comment_div += makeComment(comments[i]);
				}
				comment_div += "</div>";
				b.parents(".rec_entry").append(comment_div);
			}
		);
	};
	
	clickHandlers.cancelcomment = function(b) {
		b.parents(".commentform").remove();
	};
	
	clickHandlers.addcomment = function(b) {
		var rec_entry =  b.parents(".rec_entry");
		var eid = rec_entry.attr("r_id");
		if($(".commentform").length > 0) {
			$(".commentform").remove();
		}

		var commentForm = $('<div class="commentform"><form method="post"><div class="text"><textarea id="rec_comment" name="body"></textarea></div><div class="buttons"><input type="submit" value="Post"/><a href="#" class="e_cancelcomment">Cancel</a></div></form></div>');
		commentForm.find("form").submit(function() {
			$(this).unbind('submit');
			comments_collection = b.parents(".main_rec_entry").children(".comments_collection");
			$.post(
				base_root + "action/rec/add",
				{type: "comment", eid: eid, comment: $("#rec_comment").val()},
				function(data) {
					comment = eval("(" + data + ")");
					$(".commentform").remove();
					comments_collection.append(makeComment(comment));
				}
			);
			return false;
		});
			
		rec_entry.append(commentForm);
		
		$('#rec_comment').autogrow();
		$("#rec_comment").focus();
	};	
	
	CVLTVRE_LoadFeedRec = function(feed_title, feed_link, eid, baseDiv, feed_entry_id) {
		if($(baseDiv).find(".rec_entry").length > 0) {
			$(baseDiv).find(".rec_entry").empty();
			$(baseDiv).find(".rec_entry").remove();
		}
		$.post(
			base_root + "action/rec/get",
			{type: "feed", eid: eid,  link: feed_link, title: feed_title},
			function(data) {
				feed = eval("(" + data + ")");
				like = "Like";
				if(feed.liked == true) {
					like = "Un-Like";
				}
				liked_users = "";
				if(feed.liked_users && feed.liked_users.length > 0) {
					for(i = 0; i < feed.liked_users.length; i++) {
						liked_users += "<a href=\"userpage\">" + feed.liked_users[i].user_name + "</a>, ";
					}
					liked_users = liked_users.substring(0, liked_users.length-3);
				}
				div_data = "<div f_e_id=\"" + feed_entry_id + "\" r_id=\""+ feed.rec_id + "\" class=\"rec_entry\"> <div class=\"main_rec_entry\">";
				div_data += "<a href=\"javascript:void(0)\" class=\"e_addcomment\">Add Comment</a> ";
				if(feed.num_of_comments > 0) {
					div_data += "| <a href=\"javascript:void(0)\" c_count=\"" + feed.num_of_comments + "\"class=\"e_comment\">" + feed.num_of_comments + " Comments </a>"; 
				}
				div_data += "| <a href=\"javascript:void(0)\" r_id=\"" + feed.l_rid + "\" class=\"e_like\">";
				div_data += like + "</a>";
				if(liked_users !== "") {
					div_data += " | Liked by " + liked_users;
				}
				
				div_data += '<div class="comments_collection">';
				if(feed.num_of_comments > 0) {
						for(i = 0; i < feed.comments.length; i++) {
							div_data += makeComment(feed.comments[i]);
						}
				}
				div_data += '</div>';					
			 	div_data += "</div></div>";
				$(baseDiv).prepend(div_data);
			}
		);
	};
	
	
	CVLTVRE_LoadRec = function(eid, baseDiv, entity_type, e_link, e_title) {
		if($(baseDiv).find(".rec_entry").length > 0) {
			$(baseDiv).find(".rec_entry").empty();
			$(baseDiv).find(".rec_entry").remove();
		}
		$.post(
			base_root + "action/rec/get",
			{type: entity_type, eid: eid,  link: e_link, title: e_title},
			function(data) {
				feed = eval("(" + data + ")");
				like = "Like";
				if(feed.liked == true) {
					like = "Un-Like";
				}
				liked_users = "";
				if(feed.liked_users && feed.liked_users.length > 0) {
					for(i = 0; i < feed.liked_users.length; i++) {
						liked_users += "<a href=\"userpage\">" + feed.liked_users[i].user_name + "</a>, ";
					}
					liked_users = liked_users.substring(0, liked_users.length-3);
				}
				div_data = "<div r_id=\""+ feed.rec_id + "\" class=\"rec_entry\"><div class=\"main_rec_entry\">";
				e_link = escape(e_link);
				
				if(CVLTVRE_loggedin === true) {
					div_data += "<a href=\"javascript:void(0)\" class=\"e_addcomment\">";
				} else {
					div_data += "<a href=\""  + base_root  +  "pg/services/login?url="  + e_link  + "\" class=\"\">";
				}
				div_data += "Add Comment</a> ";
				
				if(feed.num_of_comments > 0) {
					// div_data += "| <a href=\"javascript:void(0)\" c_count=\"" + feed.num_of_comments + "\"class=\"e_comment\">" + feed.num_of_comments + " Comments </a>"; 
				}
				
				if(CVLTVRE_loggedin === true) {
					div_data += "| <a href=\"javascript:void(0)\" r_id=\"" + feed.l_rid + "\" class=\"e_like\">";
				} else {
					div_data += "| <a href=\"" + base_root  +  "pg/services/login?url="  + e_link + "\" class=\"\">";
				}
				
				div_data += like + "</a>";
				if(liked_users !== "") {
					div_data += " | Liked by " + liked_users;
				} 
				div_data += '<div class="comments_collection">';
				if(feed.num_of_comments > 0) {
						for(i = 0; i < feed.comments.length; i++) {
							div_data += makeComment(feed.comments[i]);
						}
				}
				div_data += '</div>';	
				div_data += "</div></div>";
				

				$(baseDiv).prepend(div_data);
			}
		);
	};

	var bindEvents = function() {
		var b = window.clickHandlers;
		$("body").click(function(f){
			// check whether the clicked entity is something which has to be handled
 			for(e = f.target; e; e = e.parentNode){
				if(!e.className) {
					continue;
				}
				var c = e.className.match(/\be_([\w]+)\b/);
            	if (!c) { 
		       		continue;
	            }
	     		var d = b[c[1]];
				if (!d) {
       				continue;
				}
				$(e).blur();
				return d($(e), f) ? undefined: false;
			}
		});
	};

	bindEvents();
	
};

cvltvre_rec();