// 03/09/09	EA	OPEN - submit form if reading_connections and url > 2000 characters
// 12/22/08   	YG      OPEN - noAjax_executed function - so that external javascript knows that non-ajax version ran
// 06/20/08	EA	in submitNoAjax - add parameter &noAjax=1
// 06/06/08	EA	add function ajaxFormSubmit
// 01/30/08	EB	new file

function getElement(e)
{
	var element;
	if (document.all) element = document.all[e];
	else if (document.getElementById) element = document.getElementById(e);
	return element;
}
	 

var ajaxWin, ajaxText, noAjax_response, noAjax_executed, use_ajax;

//function submitAjax(url, query_string, content_id, throbber_id, throbber_image, showReply, noAjaxAction)
function submitAjax(url, query_string, return_div, div_name, return_value, noAjaxAction, throbber_id, throbber_image)
{
	var return_str = "";
	noAjax_executed = 0;
            
	if (use_ajax == "Y")
	{
		var xmlHttp;
		
		div_name = (div_name) ? div_name : "site_content";

		//create ajax object
		try
		{  
			// Firefox, Opera 8.0+, Safari, IE 7  
			xmlHttp=new XMLHttpRequest();  
		}
		catch (e)
		{  
  			// Internet Explorer  
			try
			{    
				for(var i = 5; i; i--)
				{  
					if(i == 2)
					{
						var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");    
					} else {
						var xmlHttp = new ActiveXObject("Msxml2.XMLHTTP." + i + ".0");
					}
					break;
 				} 
 			}
			catch (e)
			{     
				//alert(e.description);
				use_ajax = "N";
			}
		}
	}

	if (use_ajax == "Y")
	{
		if (throbber_id)
		{
			if (getElement(throbber_id))
				getElement(throbber_id).innerHTML = "<img src=" + throbber_image + "  border=0>";
		}
       
		xmlHttp.onreadystatechange=function()
		{
			if(xmlHttp.readyState==4)
			{
				if (xmlHttp.responseText.match("session timeout"))
				{
					self.location = "/index.php";
				}
				else if (xmlHttp.responseText.indexOf("<REDIRECT>") > -1)
				{
					var start = xmlHttp.responseText.indexOf("<REDIRECT>")+10;
					var end = xmlHttp.responseText.indexOf("</REDIRECT>");

					self.location = xmlHttp.responseText.substring(start,end);
				}
				else
				{
					if (return_div == "true")
					{
						getElement(div_name).innerHTML = xmlHttp.responseText;

						runScripts(getElement(div_name));

						//debug code
						//if (getElement("mytext"))
						//getElement("mytext").value = xmlHttp.responseText;
					}

					expire_counter = (60*30);
				}

				if (throbber_id && getElement(throbber_id))
					getElement(throbber_id).innerHTML="<img src='/images/spacer.gif' border=0>";
			}
		}

		var ajax_type = true;

		//sajax - this means that the javascript waits till after function runs
		if (return_value == "true")
		{
			ajax_type = false;
		}
	
		//window.open(url+"?isAjax=Y" + "&" + query_string,'win','location=true,status=1');

		try
		{  
			xmlHttp.open("GET",url+"?isAjax=Y" + "&" + query_string,ajax_type);
			xmlHttp.send(null);
			xmlHttp.close;

			if (return_value == "true")
			{
				return_str = xmlHttp.responseText;
			}
	
			if (return_str)
			{
				return return_str;
			}
			else
			{
				return true;
			}
		}
		catch (e)
		{  
			//alert("an error occurred");

			use_ajax = "N";
		}
	}

	if (use_ajax != "Y")
	{
                noAjax_executed = 1;

		if (!noAjaxAction || noAjaxAction == "")
		{
			submitNoAjax(url + "?" + query_string);
		}
		else
		{
			eval(noAjaxAction);

        		return noAjax_response;
		}
	}
}

//this function is no longer used
function openNoAjax(url,query,redirect)
{
	if (redirect)
	{
        	self.location = url + "?" + query + "&noAjax=1";
		return;
	}
	else
	{
        	ajaxWin = window.open(url + "?" + query + "&noAjax=1",'ajaxWin','width=1,height=1,status=0,location=0,menubar=0,toolbars=0,status=0');

		self.focus();

		noAjax_response = "reload";
	}
}

function submitNoAjax(url)
{
	self.location = url + '&noAjax=1';
}

function runScripts(e) 
{
	if (e.nodeType != 1) return; //if it's not an element node, return
 
	if (e.tagName.toLowerCase() == 'script') {
		eval(e.text); //run the script
	}
	else {
		var n = e.firstChild;
		while ( n ) {
			if ( n.nodeType == 1 ) runScripts( n ); //if it's an element node, recurse
			n = n.nextSibling;
		}
	}
}

function ajaxFormSubmit(url, theForm, query_string, return_div, div_name, return_value, noAjaxAction, throbber_id, throbber_image)
{
	var response;

	if (theForm)
	{
	
		urlStr = "";
		f = theForm;
	
		for(i=0; i<f.elements.length; i++)
		{
			theElement = f.elements[i];
			
			switch (theElement.type)
			{
			
				case "file":
					break;
					
				case "select-multiple":
				
					for (j = 0; j < theElement.length; j++)
					{
						if (theElement[j].selected)
						{
							urlStr += ("&" + theElement.name + "=" + theElement[j].value);
						}
					}
					
					break;
					
				case "radio":
				case "checkbox":
				
					if (theElement.checked)
					{
						urlStr += ("&" + theElement.name + "=" + theElement.value);
					}
				
					break;
					
				default:
					if (theElement.name != "standard_fields")
						urlStr += ("&" + theElement.name + "=" + theElement.value);
					break;
			}
		}
		
		query_string += urlStr;

	}

	if (document.articleForm && query_string.length > 2000)
	{
		document.articleForm.submit();
		return;
	}

	response = submitAjax(url, query_string, return_div, div_name, return_value, noAjaxAction, throbber_id, throbber_image);

	return response;
}

