/* ---------------------------------------------------------------------------------------------------
content_categoriestreebox.js $Revision: 1.4 $
---------------------------------------------------------------------------------------------------
Required JavaScript Packages:
presentation_event.js
presentation_xmlhttprequest.js
---------------------------------------------------------------------------------------------------
Required Global Variables
WebServerScriptUrlSSL  (protocol://webservername/script/locale/);
--------------------------------------------------------------------------------------------------- */

var oBubbelingObject=null;         // element that fired the event (current bubbling position)
var NavBarElementID = new Array;   // array with IDs of category tree navelements


function initNavElementTree(oBaseNode) {
	var aryLiElements;
	var NavElementID=oBaseNode.id.replace(/NavBarElementID/,"");
	NavBarElementID.push(NavElementID);
	var CurrentTreeIndex = NavBarElementID.length-1;
	
	aryLiElements=oBaseNode.getElementsByTagName("img");
	for(var i=0; i<aryLiElements.length; i++) {
		if(aryLiElements[i].className.match(/HasSubCategories/) || aryLiElements[i].className.match(/HasSubCategoriesMinus/)) {
			// add click event
			ep_addEventListener(aryLiElements[i],"click", function(Event) {if(!Event) var Event = window.event; oBubbelingObject=this; toggleNode(Event)})
			// add tree index attribute
			var attrTreeIndex=document.createAttribute("treeindex");        // 1= disabled by default ; 0= not disabled by default
			attrTreeIndex.nodeValue=CurrentTreeIndex;
			aryLiElements[i].setAttributeNode(attrTreeIndex);
		}
	}
}


function insertSubCategories(Doc, TargetId, TreeIndex) {
	Doc=Doc.replace(/\(%NavBarElementID%\)/g,NavBarElementID[TreeIndex])
	oMyDiv=document.createElement("div");
	oMyDiv.innerHTML=Doc;
	var oInsertTarget=document.getElementById(TargetId);
	oInsertTarget.appendChild(oMyDiv);
	var aryUlElements=oInsertTarget.getElementsByTagName("ul");
	if(aryUlElements.length>0) initNavElementTree(aryUlElements[0]);
}


function requestSubCategories(EpagesObjectID, DocTargetId, TreeIndex) {
	//alert(WebServerScriptUrlSSL);
	//makeHttpRequest("GET",WebServerScriptUrlSSL+'?ViewAction=ViewSubCategoriesSnipplet&ObjectID='+EpagesObjectID,'', false, 'insertSubCategories',DocTargetId, TreeIndex);
	makeHttpRequest("GET",'?ViewAction=ViewSubCategoriesSnipplet&ObjectID='+EpagesObjectID,'', false, 'insertSubCategories',DocTargetId, TreeIndex);
}


function toggleNode(Event) {
	var oTarget;
	var TreeIndex=null;
	if(!Event) var Event = window.event;
	if(Event.target) oTarget = Event.target;
	else if (Event.srcElement) oTarget = Event.srcElement;
	if(oBubbelingObject==oTarget) {
		oTarget.className=oTarget.className.replace(/HasSubCategories/,"HasSubCategoriesMinus");
		oTarget.className=oTarget.className.replace(/HasSubCategoriesMinusMinus/,"HasSubCategories");
		oTarget.parentNode.parentNode.className=oTarget.className;
		
		var arySubCategories=oTarget.parentNode.parentNode.getElementsByTagName("ul");
		if(arySubCategories.length==0) {
			try{
				TreeIndex=oTarget.getAttribute("treeindex");
			} catch(ex) {
				TreeIndex=0; //if undefined use first tree -> this should never happen
			}
			
			var EpagesObjectId="";
			EpagesObjectId+=oTarget.id;
			EpagesObjectId=EpagesObjectId.replace(/.+Category/,"");
			
			var InsertTargetObjectId="";
			InsertTargetObjectId+=oTarget.id;
			InsertTargetObjectId=InsertTargetObjectId.replace(/Trigger/,"Target");
			oTarget.parentNode.parentNode.id=InsertTargetObjectId;
			requestSubCategories(EpagesObjectId,InsertTargetObjectId, TreeIndex);
		}
	}
}