function ERResponse( data )
{
	if($('erResponse', data).attr('status') == 'E_OK')
	{
		this.isOk = true;
		this.data = ERResponse_parseObject( $($(data).children().get(0)).children() );
		
	}
	else
	{
		this.isOk = false;

		var msg = $('erResponse', data).attr('message');
		if( msg )
		{
			this.errorMessage = msg;
		}
		else
		{
			this.errorMessage = data;
		}
	}
}

function ERResponse_parseNode(n)
{
	switch( n.tagName )
	{
		case 'string':  return $(n).attr('value');
		case 'boolean': return (0 != $(n).attr('value')) ?true :false;
		case 'number':  return parseInt($(n).attr('value')); // ToDo: Add float support too (check for '.')
		case 'object':  return ERResponse_parseObject( $(n).children() );
		case 'array':
		{
			var ar = new Array();
			ERResponse_parseArray(ar, $(n).children());
			return ar;
		}break;

		default:
		{
			alert('ERResponse - Unknown tagName: ' + n.tagName);
		}break;
	}
	return false;
}
function ERResponse_parseObject(nodes)
{
	var obj = new Object();
	nodes.each
	(
		function(i, n)
		{			
			obj[ $(n).attr('name') ] = ERResponse_parseNode( n );
		}
	);

	return obj;
}
function ERResponse_parseArray(ar, nodes)
{
	nodes.each
	(
		function(i, n)
		{
			ar[ar.length] = ERResponse_parseNode(n);
		}
	);
}
