	function flag_tool(id, type_id, code, div_id) {
		$.post("/flag/"+type_id+"/"+escape(id)+"/"+code+'?div='+div_id, '', function(json) {
			eval("var args = " + json);
			$('#fdrop'+div_id).html(args.html);
			$("#ajaxMessageStack").html(args.msg);
			$("#ajaxMessageStack").fadeIn('slow', function(){
				setTimeout(function(){ $("#ajaxMessageStack").fadeOut('slow'); }, 2000);
			});
		});
		HideFlagBox(div_id);
	}	
	

	function containsDOM (container, containee) {
		var isParent = false;
		do {
			if ((isParent = container == containee))
				break;
			containee = containee.parentNode;
		}
		while (containee != null);
		return isParent;
	}

	function checkMouseLeave(element, evt)
	{
		evt = (evt) ? evt : ((window.event) ? window.event : "");
		window.status = evt;
		if (evt.relatedTarget) {
			return !containsDOM(element, evt.relatedTarget);
		} else {
			if (element.contains(evt.toElement)) {
				return(false);
			} else {
				return(true);
			}
		}
	}
		
	
	function HideFlagBox(id)
	{
		$('#fdrop'+id).unbind("mouseout");
		$('#fdiv'+id).css('display', 'none');
	}
	
	function ShowFlagBox(id)
	{
		$('#fdiv'+id).css({display: 'block', zIndex: 200});
		$('#fdrop'+id).bind("mouseout", function(evt) {
																			if (checkMouseLeave(this, evt))
																			{																		
																				id = parseInt(this.id.substr(5));
																				HideFlagBox(id);
																			}
																		});
	}
