/*
	csc.js	-	Client Server Communication
*/
var debugstr = '';
function CSC_Request(action, request, params)
{
	url = 'main.php' + "?ts=" + (new Date()).getTime() + "&req[requestFile]=" + action + "&req[request]=" + request + "&req[charEncode]=UTF8";
	
	var list = new Object();
	for (i in params)
	{
		list = concat(list, toPHP(params[i], i));
	}
	
	for (i in list)
	{
		var name_len = i.indexOf('[');
		if (name_len < 0) name_len = i.length;
		
		var name = 'req[' + i.substr(0, name_len) + ']' + i.substr(name_len);
		url += "&" + name + "=" + encodeURIComponent(list[i]);
	}

	var o = document.getElementById("CSC_42");
	var head = document.getElementsByTagName("head").item(0);
	
	// Destory object
	if (o) head.removeChild(o);

	// Create object
	o = document.createElement("script");
	o.setAttribute("src", url);
	o.setAttribute("id", "CSC_42");
	
	// Add object to head of page
	head.appendChild(o);
	
	displayLoadDlg();
}

function CSC_RequestPOST(action, request, params)
{
	var p = { "req[requestFile]": action, "req[request]": request };
	
	var list = new Object();
	for (i in params)
	{
		list = concat(list, toPHP(params[i], i));
	}
	
	for (i in list)
	{
		var name_len = i.indexOf('[');
		if (name_len < 0) name_len = i.length;
		
		var name = 'req[' + i.substr(0, name_len) + ']' + i.substr(name_len);
		p[name] = list[i];
	}
	
	AjaxRequest.post(
	{
		'url': 'main.php',
		'parameters': p,
		'onSuccess' : CSC_OnSuccessPOST
	});
	
	displayLoadDlg();
}

function toPHP(o, name)
{
	var l = new Object();
	if (typeof(o) == 'object' || typeof(o) == 'array')
	{
		for (i in o)
		{
			l = concat(l, toPHP(o[i], name + '[' + i + ']'));
		}
	}
	else
	{
		l[name] = o;
	}
	return l;
}

function CSC_OnSuccessPOST(req)
{
	eval(req.responseText);
}

function getPackedForm(form)
{
	var els = form.elements;
	var len = els.length;
	
	var str = '';
	var list = new Object();
	
	addField = function(name, value)
	{
		str += name + ": " + value + "\n";
		list[name] = value;
	};
	
	for (var i = 0; i < len; i++)
	{
		var el = els[i];
		if (!el.disabled && el.name != "undefined")
		{
			switch(el.type)
			{
				case 'text':
				case 'password':
				case 'hidden':
				case 'textarea': 
					addField(el.name, el.value);
					break;
				case 'select-one':
					if (el.selectedIndex >= 0)
					{
						addField(el.name, el.options[el.selectedIndex].value);
					}
					break;
				case 'select-multiple':
					for (var j = 0; j < el.options.length; j++)
					{
						if (el.options[j].selected)
						{
							addField(el.name, el.options[j].value);
						}
					}
					break;
				case 'checkbox':
				case 'radio':
					if (el.checked)
					{
						addField(el.name, el.value);
					}
					break;
			}
		}
	}
	
	return list;
};

function displayLoadDlg()
{
	var e = document.getElementById('cscLoadDlg');
	if (e)
	{
		dlgActivate(e);
		dlgRelativePosition(e, 0, 0);
		dlgDisplay(e);
	}
}

function hideLoadDlg()
{
	var e = document.getElementById('cscLoadDlg');
	if (e)
	{
		setTimeout("dlgHide(document.getElementById('cscLoadDlg'));", 150);
	}
}