//utils specific to agit system
//
//$Log: agit_utils.js,v $
//Revision 1.5  2008/07/12 16:23:09  agitpap
//sync for oldtimer
//
//Revision 1.4  2008/07/06 20:58:33  agitpap
//add client-side logging layer
//
//Revision 1.3  2008/06/02 17:24:22  agitpap
//sync point before 1st json stab
//
//Revision 1.2  2008/05/31 09:21:24  agitpap
//implement async object pool
//add more menu functions
//
//Revision 1.1  2008/05/24 21:14:16  agitpap
//initial check-in
//
//

//Maybe try to use this fundtion to
//send httpRequest back for menu options
// ... hmmmmmmmm

var sid;
var menuModule = "__agitMenuProc.php";
var cmdModule = "cmdProc.php";
var modal = false;

function setModal()
{
	modal = true;
}

function unsetModal()
{
	modal = false;
}

var asyncPool = new Array();

function getAsyncObj()
{
	if (asyncPool.length == 0)
	{
		var aso = new _asyncObj();
		aso.init();
		asyncPool.push(aso);
	}

	return asyncPool.pop();
}

//Need to develop a pool-type arrangement
//=======================================
//
// - probably need to pass variable to
//   identify request
//=======================================
var logIdx = 0;

function makeLog()
{
	var bgColour = 'dddddd';

	new layer("log_layer", document.body.id,
			"Message Log",
			500, 400, 400, 100,
			'left', 'top',
			'',
			'',
			bgColour,
			'bbbbbb',
			'222222',
			"images/logos/exogen_g_20.gif",
			  "images/icons/greyscale_minimise.gif",
			  "",
			  "images/icons/greyscale_multiply.gif",
			  null);

	var logg = findObj('log_layer_client');

	if (!logg)
	{
		return;
	}

	var logDivCtl = document.createElement("DIV");
	logDivCtl.id = 'log_div_ctl';
	logDivCtl.width = 480 + "px";
	logDivCtl.height = 20 + "px";

	logg.appendChild(logDivCtl);

	var logClearBtn = document.createElement("button");
	logClearBtn.innerHTML = "clear";
	logClearBtn.id = "log_clear_btn";
	logDivCtl.appendChild(logClearBtn);
	clear_foo = function()
	{
		findObj('log_div').innerHTML = "";
	}

	if (dom_event_handler)
	{
		logClearBtn.addEventListener('click',clear_foo,true);
	}
	else if (ie_event_handler)
	{
		logClearBtn.attachEvent('onclick',clear_foo);
	}

	var logDiv = document.createElement("DIV");
	logDiv.id = 'log_div';
	logDiv.style.overflow = 'auto';
	logDiv.width = 480 + "px";
	logDiv.height = 480 + "px";

	logg.appendChild(logDiv);

}

function writeLog(msg)
{
	if (true) //(gLive)
	{
	  return;
	}
	
	var logDiv = findObj('log_div');
	if (!logDiv)
	{
		makeLog();
		logDiv = findObj('log_div');
		if (!logDiv)
		{
			return;
		}
	}

	var msgDiv  = document.createElement("DIV");
	msgDiv.width = 570 + "px";

	var idxSpan = document.createElement("SPAN");
	idxSpan.width = 40 + "px";
	var spIdxText = document.createTextNode("[" + (++logIdx) + "] ");
	idxSpan.appendChild(spIdxText);

	var msgSpan = document.createElement("SPAN");
	msgSpan.width = 520 + "px";

	spMsgText = document.createTextNode(msg.replace(/\;/g, "; "));

	msgSpan.appendChild(spMsgText);

	msgDiv.appendChild(idxSpan);
	msgDiv.appendChild(msgSpan);
	logDiv.appendChild(msgDiv);
}


function agitProcessCmdOption(opt, parms)
{

	//var url = foo + "?opt=" + opt + "&sid=" + sid;
	//alert("calling " + opt + " with " + parms);
	var asyncPoolObj = getAsyncObj();
	asyncPoolObj.openForPost(opt, true);

	var foo = function()
	{

		if (asyncPoolObj.getReadyState() != 4)
		{
			writeLog('agitProcessCmdOption::readyState = ' + asyncPoolObj.getReadyState());
			return;
		}

		switch (asyncPoolObj.getStatus())
		{

			case 200:
			{
				//alert('agitProcessCmdOption::status = 200\n' +
				//		asyncPoolObj.getResponseText());
				processAsyncReturn(asyncPoolObj.getResponseText().trim());
				break;
			}
			case 500:
                alert("ERROR 500 server returned : " + asyncPoolObj.getResponseText().trim());
                break;
			default:
			{
				writeLog('agitProcessCmdOption::status = ERROR: '  + asyncPoolObj.getStatus());
				alert("Server returned " + asyncPoolObj.getStatus());
				break;
			}

		}

	}

	asyncPoolObj.setOnReadyStateChange(foo);

	var asyncPostVars = parms;
	//alert("asyncPostvars : " + asyncPostVars);
	asyncPoolObj.send(asyncPostVars);

}

function agitProcessMenuOption(opt, parms)
{

	//var url = foo + "?opt=" + opt + "&sid=" + sid;
	var asyncPoolObj = getAsyncObj();
	asyncPoolObj.openForPost(menuModule, true);

	var foo = function()
	{

		if (asyncPoolObj.getReadyState() != 4)
		{
			writeLog('agitProcessMenuOption::readyState = ' + asyncPoolObj.getReadyState());
			return;
		}

		switch (asyncPoolObj.getStatus())
		{

			case 200:
			{
				writeLog('agitProcessMenuOption::status = 200');
				processAsyncReturn(asyncPoolObj.getResponseText().trim());
				break;
			}
			default:
			{
				writeLog('agitProcessMenuOption::status = ERROR: '  + asyncPoolObj.getStatus());
				alert("Server returned " + asyncPoolObj.getStatus());
				break;
			}

		}

	}

	asyncPoolObj.setOnReadyStateChange(foo);

	var asyncPostVars = "opt=" + opt + "&sid=" + sid;
	if (parms)
	{
		asyncPostVars += parms;
	}

	asyncPoolObj.send(asyncPostVars);

}


function processAsyncReturn(response)
{
	//alert('processAsyncReturn : '  + response);

	writeLog("processAsyncReturn : " + response);
	if (response.length < 3)
	{
		return;
	}
	
	eval(response.substr(2));

	return;

}

function submitLoginForm()
{
	var username = getObjValue('agit_login_name');

	if ( !checkEmail('agit_login_name') )
	{
		return false;
	}

	var pw = getObjValue('agit_login_password');
	if (!pw || pw.trim() == "")
	{
		alert("Please enter your password");
		return false;
	}

	var opt = "login";

	var postVars="&agit_login_name=" + username + "&agit_login_password=" + pw;

	agitProcessCmdOption(opt, postVars);
	//agitProcessMenuOption(opt, postVars);

	Layers['login_window'].close_layer_foo();

	return true;
}

function submitContactForm()
{
	var username = getObjValue('agit_contact_email');

	if ( !checkEmail('agit_contact_email') )
	{
		return false;
	}

	Layers['agit_contact_email'].close_layer_foo();

	return true;
}

