
var SdEcTree = {};		// public  global identifiers
var $_EcTree = {};		// private global identifiers

$_EcTree.flexableTab   =  true;
$_EcTree.ordinal = 0;

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SdEcTree.toggle = function (uid)
{
	var element = document.getElementById("T" + uid);
	var last = element.lastChild;
	last = last.lastChild;
	var type = last.nodeType;
	var sign = last.nodeValue;
	last.nodeValue = (sign.indexOf('+') >= 0 ? ' - ' : ' + ');

	var vNode = document.getElementById("C" + uid);
	vNode.style.border="1px solid black";
	var style = vNode.style;
	style.backgroundColor = "#FFFFCC";
	style.padding="5px";
//	vNode.setAttribute("onclick", "SdEcTree.toggle('" + uid + "');");

	var wNode = document.getElementById("W" + uid);
//	Element.insert(wNode,"&nbsp;");
	wNode.innerHTML = "&nbsp;";
	wNode.style.display="block";

	var content = document.getElementById("C" + uid);
	if (!content) { SdCommon.log("missing C" + uid); return; }

	var dataDivId = "D" + uid;
	if (sign == ' - ')
	{
		var dataDiv = document.getElementById(dataDivId);
		content.removeChild(dataDiv);

		vNode.style.border="none";
		var style = vNode.style;
		style.backgroundColor = "#000000";

		var wNode = document.getElementById("W" + uid);
		wNode.style.display="none";

		var style = vNode.style;
		style.padding="0px";

		return;
	}
	
	var newNode = document.createElement("div");
	newNode.setAttribute("id", dataDivId);

	var articleTitleNode = document.getElementById("A" + uid);
	var articleTitleText = (articleTitleNode ? articleTitleNode.lastChild.nodeValue : "");
	var loadingNode = document.createTextNode("  " + "loading" + (articleTitleText ? ': ' : '') + articleTitleText + " ...");
	newNode.appendChild(loadingNode);

	content.appendChild(newNode);	

	var url = $_EcTree.fullTextUrl;

	// SdEcOnDemand.loadOnDemand(url, uid, dataDivId);

	url = url.replace(/\[ui\]/g, uid);

	url = SdCommon.proxify (url);

	var args = {
		"element-id" : dataDivId,
		"uid"        :       uid
	};

	SdEcAjaxLoader.ajaxRequest(url, SdEcOnDemand.ajaxResponseHandlerForToggledUrl, args, "novelist-article", "html", "user-click");


}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$_EcTree.testOfOnClick = function (arg)
{
	var msg = "in test-of-on-click: " + arg;
	SdCommon.log(msg);
	alert(msg);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$_EcTree.loadXmlAsynchronouslyAndTranslateViaXslt = function (elementId)
{
	var url  = SdEcSpecifics.getSpecific(elementId,  "url");
	var xsl  = SdEcSpecifics.getSpecific(elementId,  "xsl");
	var full = SdEcSpecifics.getSpecific(elementId, "full");

	$_EcTree.fullTextUrl = full;

	if (xsl && xsl.length > 0 && xsl.charAt(0) != '/')
	{
		xsl = "/" + xsl;
	}

	// add a new element now so that they are not reordered
	// into the order that callbacks get http responses ...

	$_EcTree.ordinal = $_EcTree.ordinal + 1;
	var ord = $_EcTree.ordinal;

	var element = document.getElementById(elementId);
	elementId = elementId + "-" + ord;

	var newNode = document.createElement("span");
	newNode.id = elementId;
	element.appendChild(newNode);

	var xslDoc = SdEcXdocLoader.fetchXMLDoc(xsl);

	url = SdCommon.proxify(url);
	var ajaxResponseHandlerArgs = { "xsl-doc" : xslDoc, "element-id" : elementId, "call-back" : $_EcTree.postLoadCallback };

	SdEcAjaxLoader.ajaxRequest(url, SdEcResponseHandler.ajaxResponseHandlerForEnrichedContent, ajaxResponseHandlerArgs, "novelist-search", "xml", "tree");
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$_EcTree.postLoadCallback = function (args)
{
	var elementId = args["element-id"];
	$_EcTree.postLoadFixup(elementId);
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$_EcTree.postLoadFixup = function (elementId)
{
//	SdCommon.log("post load fixup on element with id: " + elementId);
	var element = document.getElementById(elementId);

	//             <xsl:attribute name="namae">special</xsl:attribute>
	//             <xsl:attribute name="klass">sd-tree-node</xsl:attribute>

	var contentRegionElements = document.getElementsByTagName("div");
	contentRegionElements = SdCommon.filterArrayOfNodesByAttribute(contentRegionElements, "klass", "==", "sd-tree-node");
	var count = (contentRegionElements ? contentRegionElements.length : 0);
	for (var k = 0; k < count; k++)
	{
		// get content-region's id and url (points to content defintion ".xml" file)

		var kid = contentRegionElements[k];

		var tag = kid.nodeName ;
		var id  = kid.getAttribute("id");
	}
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

$_EcTree.anElementExistsWithTheAttribute = function (tag, attribute, value)
{
	var elements = document.getElementsByTagName(tag);
	elements = SdCommon.filterArrayOfNodesByAttribute(elements, attribute, "==", value);
	return (elements.length > 0);		
}

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

SdEcEngine.registerTypeHandler("xml-tree", $_EcTree.loadXmlAsynchronouslyAndTranslateViaXslt);





