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," ");
wNode.innerHTML = " ";
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.prefixup (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.prefixup(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);
// special
// sd-tree-node
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);