var ajaxComm, ajaxIsWorking = 0;

function testAjax()
{
	try {  ajaxComm=new XMLHttpRequest(); } // Firefox, Opera 8.0+, Safari
	catch (e)
	{		// Internet Explorer
		try { ajaxComm=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {
		try { ajaxComm=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {	
				document.location = "noajax_support.php";
				return false;
		}}
	}

	ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;

	if (!document.createElement || !document.getElementById ||
		!document.body || !document.body.innerHTML)
	{
		document.location = "noDOM_support.php";
		return false;
	}
}

// normal AJAX send data
var ajax1curMessages = "",
	ajax1SendInterval = 0,
	ajax1SendTimeout  = 0;
function sendMessage(str, important)
{
	if (!editor_allowSendMessages) return;

	ajax1SendTimeout  = (typeof important != undefined) ? 1:6;
	ajax1curMessages += str + ";-/-;\n";
	sayDebugMessage(str);



	var messWnd = document.getElementById('query');		//response
	if (messWnd)
	{
		messWnd.innerHTML += str + ";<br/>";
		messWnd.scrollTop  = messWnd.scrollHeight;
	}

	if (ajax1SendInterval == 0)
	{
		var obj = document.getElementById("query"   ); if (obj) obj.style.display = "block";
		var obj = document.getElementById("send_btn"); if (obj) obj.style.display = "inline";

		ajax1SendInterval = setInterval(ajax1SendDataTimer, 500);
	}

	return true;
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function startSendajax1()
{
	if (ajax1SendInterval)
	{
		clearInterval(ajax1SendInterval);
		ajax1SendInterval = 0;
	}

	ajaxIsWorking = 1;

	if (typeof editor_pageId == 'undefined')
		editor_pageId = 0;

	ajaxComm.open("POST", local_server_URL+"customers/update.php?pageid="+editor_pageId+"&force="+Math.ceil(Math.random()*9999), true);
	ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;
	ajaxComm.send(ajax1curMessages);


	ajax1curMessages = "";
	var obj = document.getElementById('query'); if (obj) obj.innerHTML = "";
}



function ajax1SendDataTimer()
{
	if (--ajax1SendTimeout <= 0 && !ajaxIsWorking)
	{
		clearInterval(ajax1SendInterval);	ajax1SendInterval = 0;
		startSendajax1();
	} else {
		var btn = document.getElementById("send_btn_inner");
		if (btn) btn.innerHTML = "Send data >>> ("+ajax1SendTimeout+")";
	}
}


// editor_themeRead
var ajax2TimerID = 0, ajax2_themeStr = "";
function ajaxComm_readTheme(str)
{
	if (str != ajax2_themeStr && ajax2TimerID)
	{
		clearTimeout(ajax2TimerID);
		ajax2TimerID   = 0;
		ajax2_themeStr = "";
	}


	if (!ajaxIsWorking)
	{
		ajax2_themeStr = str;
		ajaxIsWorking  = 2;

		ajaxComm.open("GET", local_server_URL+"themes/"+str+"/html.code?force="+Math.ceil(Math.random()*9999), true);
		ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;
		ajaxComm.send(null);
	} else {
		ajax2_themeStr = str;
		ajax2TimerID   = setTimeout("ajaxComm_readTheme('"+str+"')", 1000);
	}
}

// -----------------------------------------------------------------------
var ajax3TimerID = 0, ajax3_pageStr = "";
function ajaxComm_readPage(str)
{
	if (str != ajax3_pageStr && ajax3TimerID)
	{
		clearTimeout(ajax3TimerID);
		ajax3TimerID  = 0;
		ajax3_pageStr = "";
	}


	if (!ajaxIsWorking)
	{
		ajax3_pageStr = str;
		ajaxIsWorking = 3;

		ajaxComm.open("GET", local_server_URL+"customers/load_page.php?id="+str+"&force="+Math.ceil(Math.random()*9999), true);
		ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;
		ajaxComm.send(null);
	} else {
		ajax3_pageStr = str;
		ajax3TimerID  = setTimeout("ajaxComm_readPage('"+str+"')", 1000);
	}
}

// -----------------------------------------------------------------------
var ajax4TimerID = 0, ajax4_themeID = "";
function ajaxComm_readThemeDir(str)
{
	if (str != ajax4_themeID && ajax4TimerID)
	{
		clearTimeout(ajax4TimerID);
		ajax4TimerID   = 0;
		ajax4_themeID  = "";
	}


	if (!ajaxIsWorking)
	{
		ajax4_themeID  = str;
		ajaxIsWorking  = 4;

		ajaxComm.open("GET", local_server_URL+"customers/load_themes.php?parent="+str+"&force="+Math.ceil(Math.random()*9999), true);
		ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;
		ajaxComm.send(null);
	} else {
		ajax4_themeID = str;
		ajax4TimerID  = setTimeout("ajaxComm_readThemeDir('"+str+"')", 1000);
	}
}

// -----------------------------------------------------------------------
var ajax5TimerID = 0, ajax5_massmailID = "";
function ajaxComm_readAddressBook(username, password)
{
	var str = username+"', '"+password;
	if (str != ajax5_massmailID && ajax5TimerID)
	{
		clearTimeout(ajax4TimerID);
		ajax5TimerID   = 0;
		ajax5_massmailID  = "";
	}


	if (!ajaxIsWorking)
	{
		ajax5_massmailID  = str;
		ajaxIsWorking  = 5;

		ajaxComm.open("GET", local_server_URL+"customers/address_book_retreave.php?username="+escape(username)+"&password="+escape(password)+"&force="+Math.ceil(Math.random()*9999), true);
		ajaxComm.onreadystatechange = ajaxComm_onreadystatechange;
		ajaxComm.send(null);
	} else {
		ajax5_massmailID = str;
		ajax5TimerID  = setTimeout("ajaxComm_readAddressBook('"+str+"')", 1000);
	}
}

// -----------------------------------------------------------------------
function ajaxComm_onreadystatechange()
{
	if (ajaxComm && ajaxComm.readyState==4)
	{

		if (ajaxIsWorking == 1 || ajaxIsWorking == 5)
		{
			var i, j, str = ajaxComm.responseText;

			while ((i = str.indexOf("%%%")) != -1 && (j = str.indexOf("%%%", i+3)) != -1)
			{
				try { eval(str.substr(i+3, j-i-3)); } catch (e) { sayDebugMessage(e); }
				str = str.substr(j+3);
			}

			sayDebugMessage( str );
		}
		if (ajaxIsWorking == 2) { editor_setTheme ( ajaxComm.responseText, ajax2_themeStr ); ajax2_themeStr = ""; }
		if (ajaxIsWorking == 3) { editor_setPage  ( ajaxComm.responseText, ajax3_pageStr  ); ajax3_pageStr  = ""; ajax3_pageParams = ""; }
		if (ajaxIsWorking == 4) { editor_setThemes( ajaxComm.responseText, ajax4_themeID  ); ajax4_themeID  = ""; }

		ajaxIsWorking = 0;

		var obj = document.getElementById("query"   ); if (obj) obj.style.display = "none";
		var obj = document.getElementById("send_btn"); if (obj) obj.style.display = "none";
	}
}