/* functions for tracing */

// alerts all properties of object
function alertObj(obj, incs, not_null)
{
	var i, st = eval('obj') + "\n";
	
	if (incs)
	{
		for (i in obj)
		{
			if (incs.indexOf(typeof(obj[i])) == -1) continue;
			if (not_null && (obj[i] == null)) continue;
			st += i + " (type: " + typeof(obj[i]) + ")  ::  " + obj[i] + "\n";
		}
	}
	else
	{
		for (i in obj)
		{
			st += i + " (type: " + typeof(obj[i]) + ")  ::  " + obj[i] + "\n";
		}
	}
	alert(st);
}

// writes all properties of object 
function writeObj(obj, element)
{
	var i, st = eval('obj') + "\r\n";
	if (typeof(obj) != 'string')
	{
		for (i in obj)
			st += i + " (type: " + typeof(obj[i]) + ")  ::  " + obj[i] + "\r\n";
	}
	
	var pre;
	if (typeof(element) == 'undefined')
	{
		pre = document.body.appendChild(document.createElement('pre'));
	}
	else
	{
		pre = element.appendChild(document.createElement('pre'));
	}
	
	pre.style.border = '1px solid blue';
	pre.style.background = '#EEEEEE';
	pre.style.textAlign = 'left';
	pre.style.margin = '2px';
	pre.style.padding = '2px';
	pre.style.fontFamily = 'Tahoma';
	pre.style.fontSize = '11px';
	pre.style.fontWeight = 'normal';
	pre.style.color = 'black';
	pre.appendChild(document.createTextNode(st));
}

// serialize xml document
function serializeXML(xml)
{
	// browser sensitive
	var ua = navigator.userAgent.toLowerCase();
	
	var isIE = (navigator.appName == "Microsoft Internet Explorer") && (ua.indexOf("opera") == -1);
	var isGecko = ua.indexOf('gecko') != -1;
	var isOpera = ua.indexOf('opera') != -1;
	
	if (isGecko || isOpera) // FF & Opera
	{
		var serializer = new XMLSerializer();
		return serializer.serializeToString(xml);
	}
	else if (iBrowser.isIE) // IE
	{
		return xml.xml;
	}
}

