	var URL = "tagit.php";
	
	var XMLHttpRequestObject = new Array();
	
	function OnUnTag(id, tags)
	{
		if (id <= 0)
		{
			alert("Error!")
		}
		else if (tags == '')
		{
			alert("Error!")
		}
		else
		{
			if (XMLHttpRequestObject == null)
			{
				XMLHttpRequestObject = new Array();
			}

			var requestObject = GetXMLHttpRequest();
			if (requestObject)
			{
				XMLHttpRequestObject[id] = new Object();
				XMLHttpRequestObject[id].requestObject = requestObject;
				XMLHttpRequestObject[id].tags = tags;
				
				requestObject.onreadystatechange = new Function ("OnTagProcess('" + id + "')");
				var params = "action=untag&id=" + id + 
					'&' + "tags=" + tags; // + (document.cookie.length > 0 ? 'true' : 'false');

				var url = URL + "?" + params;
				requestObject.open("POST", url, true);
				requestObject.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=UTF-8" );
				requestObject.send("tags=" + tags);
			}
		}
	}

	function OnTag(id)
	{
		var tags = document.getElementById("tags").value;
		if (id <= 0)
		{
			alert("Error!");
		}
		if (tags == '')
		{
			alert('請輸入標籤');
		}
		else
		{
			if (XMLHttpRequestObject == null)
			{
				XMLHttpRequestObject = new Array();
			}

			var requestObject = GetXMLHttpRequest();
			if (requestObject)
			{
				XMLHttpRequestObject[id] = new Object();
				XMLHttpRequestObject[id].requestObject = requestObject;
				XMLHttpRequestObject[id].tags = tags;
				
				requestObject.onreadystatechange = new Function ("OnTagProcess('" + id + "')");
				
				var params = "action=tag&id=" + id + 
					'&' + "tags=" + tags; // + (document.cookie.length > 0 ? 'true' : 'false');

				var url = URL + "?" + params;
				requestObject.open("POST", url, true);
				requestObject.setRequestHeader( "Content-Type" , "application/x-www-form-urlencoded; charset=UTF-8" );
				requestObject.send("tags=" + tags);
				
				var name = "tagbutton." + id;
				var button = document.getElementById(name);
				if (button)
				{
					button.value = "Saving..."; 
					button.disabled = true;
				}
				var tags = document.getElementById("tags");
				tags.disabled = true;
			}
		}
	}
	
	function OnTagProcess(id)
	{
		if (XMLHttpRequestObject[id] != null &&
			XMLHttpRequestObject[id].requestObject &&
			XMLHttpRequestObject[id].requestObject.readyState == 4) 
		{
			if (XMLHttpRequestObject[id].requestObject.status == 200) 
			{
				var result = XMLHttpRequestObject[id].requestObject.responseText;
				if (result == "busy")
				{
					alert("The server is busy. Please try again later..");
					XMLHttpRequestObject[id] = null;
				}
				else
				{
					var text;
					if (result == '')
					{
						alert("No return");
					}
					else
					{
						text = result
						window.setTimeout("showResult('" + text + "', '" + id +"')", 500);
						XMLHttpRequestObject[id] = null;
					}
				}
			}
			else
			{
				var name = "votebutton" + id;
				var button = document.getElementById(name);
				if (button)
				{
					button.value = "Vote"; 
					button.disabled = false;
					alert("Request failed: " + XMLHttpRequestObject[id].requestObject.status + " status returned");
				}
			}
		}
	}
	
	function GetXMLHttpRequest() 
	{
		var object = null;
		
		if (window.ActiveXObject) 
		{
			try
			{
				object = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch(e)
			{
			}
			
			if (object == null)
			{
				try
				{
					object = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
				}
			}
		}
		else if (window.XMLHttpRequest) 
		{
			object = new XMLHttpRequest();
		} 
		
		if (object == null)
		{
			alert("Your browser does not support AJAX");
		}
		
		return object;
	}
	
	function showResult(input, id)
	{
		document.getElementById("tagblock").style.display = 'block';
		var divContainer = document.getElementById("taglist");
		divContainer.innerHTML = input;
		var name = "tagbutton." + id;
		var button = document.getElementById(name);
		if (button)
		{
			button.value = "確定"; 
			button.disabled = false;
		}
		var tags = document.getElementById("tags");
		tags.value = '';
		tags.disabled = false;
	}

	function SetCookie(cookieName,cookieValue,nDays) 
	{
		var today = new Date();
		var expire = new Date();
		expire.setTime(today.getTime() + 1000 + 3600000*24*nDays);
		document.cookie = cookieName+"="+escape(cookieValue)
		+ ";expires="+expire.toGMTString();
	}

	function ReadCookie(cookieName) {
	 var theCookie=""+document.cookie;
	 var ind=theCookie.indexOf(cookieName);
	 if (ind==-1 || cookieName=="") return ""; 
	 var ind1=theCookie.indexOf(';',ind);
	 if (ind1==-1) ind1=theCookie.length; 
	 return unescape(theCookie.substring(ind+cookieName.length+1,ind1));
	}