/*
 *  Poll specific AJAX functions
 **/
function AJAXPollRequestVoteResult(url, containerId)
{
	if (container = document.getElementById(containerId))
	{
		AJAXCall(url, container, "GET", null);
		return false;
	}
	return true;
}
function AJAXPollVote(form, containerId)
{
	if (container = document.getElementById(containerId))
	{			
		AJAXCall(form.action, container, "POST", AJAXFormSerialize(form));			
		return false;
	}
	return true;
}

/*
 * General AJAX functions 
 **/
function AJAXHttpClient()
{
	try	{return new XMLHttpRequest();} catch (e) {
	try {return new ActiveXObject("Msxml2.XMLHTTP");} catch (e) {
	try {return new ActiveXObject("Microsoft.XMLHTTP");} catch (e) {
	return null;}}}
}
function AJAXCall(url, container, type, parameters)
{
	var client = AJAXHttpClient();
	client.onreadystatechange = function()
	{
		if (client.readyState == 4 && client.status == 200)
		{
			container.innerHTML = client.responseText;
		}else{
			container.innerHTML = "";
		}
	}
	client.open(type, url, true);
	if (type == "POST")
	{
		client.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
     	client.setRequestHeader("Content-length", (parameters != null)? parameters.length : 0);
     	client.setRequestHeader("Connection", "close");
	}
	client.send(parameters);
}
function AJAXFormSerialize(form)
{ 
	var result = '';
	var ajax_fields = new Array();
	
	var element;
	for (var i = 0; i < form.elements.length; i++)
	{
		element = form.elements[i];
		
		switch (element.type)
		{
			case 'text':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'select-one':
				if (!element.disabled)
				{
					result += element.name + '=' + escape(element.value) + '&';
				}
				else if (element.name.length > 5 && element.name.substr(0,5) == 'AJAX_') 
				{
					ajax_fields.push(element);
				}
				break;

			case 'select-multiple':
				for(var j = 0; j < element.options.length; j++)
				{
					var option = element.options[j];
					if(option.selected) 
					{
						result += element.name + '=' + escape(option.value) + '&';
					}
				}
				break;

			case 'radio':
			case 'checkbox':
				if (element.checked)
				{
					result += element.name + '=' + escape(element.value) + '&';
				}
				break;
		}
	}
	
	var name;
	for (var i = 0; i < ajax_fields.length; i++)
	{
		element = ajax_fields[i];
		name = element.name.substr(5);
		
		eval("result = result.replace(/(^|&)" + name + "=[^&]+/, '$1" 
		 + name + "=" + escape(element.value) + "');");
	}
	
	// remove trailing separator
	return result.substr(0, result.length - 1);
}

function SimpleAJAXCall(url, element)
{
	var client = AJAXHttpClient();
	var responseText;
	client.onreadystatechange = function()
	{
		if (client.readyState == 4)
		{
			try {
				if (client.status == 200) {
					responseText = client.responseText;
					if(responseText != null)
					{
						if (element != null && element != "")
						{
							insertAjaxData(responseText, element);
						}
					}
				} else {
					var errorMsg = client.status + 'Error';
				}
			} catch(e) {
			}
		}
	}
	try {
		client.open("GET", url, true);
	} catch(e) {
		alert(e);
	}
	client.send(null);
}

function insertAjaxData(innerHtml, element)
{
	element.innerHTML = innerHtml;
}