/* ---------------------------------------------------------------------------------------------------
   content_categoriestreebox.js $Revision: 1.7 $
   ---------------------------------------------------------------------------------------------------
   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(/NotAllowed/) 
		&& (aryLiElements[i].className.match(/HasSubCategories/)
		|| aryLiElements[i].className.match(/HasSubCategoriesMinus/)) ) {
               // add click event
               dojo.connect(aryLiElements[i],"click", function(Event) {
                 if(!Event) {
                   var Event = window.event;
                 }
                 oBubbelingObject=this;
                 toggleNode(Event);
               });
		//console.log("event");
		//var evObj = document.createEvent('MouseEvents');
		//evObj.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null );
                //aryLiElements[i].dispatchEvent(evObj);
		//console.log(evObj);
               // 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);
        /*	
		 var EpagesObjectId="";
                EpagesObjectId+=aryLiElements[i].id;
                EpagesObjectId=EpagesObjectId.replace(/.+Category/,"");

                var InsertTargetObjectId="";
                InsertTargetObjectId+=aryLiElements[i].id;
                InsertTargetObjectId=InsertTargetObjectId.replace(/Trigger/,"Target");
		aryLiElements[i].parentNode.parentNode.id=InsertTargetObjectId;


//                console.log( CurrentTreeIndex );
                 dojo.xhrGet({
                  url:  WebServerScriptUrlSSL+'?ViewAction=ViewSubCategoriesSnipplet&ObjectID='+EpagesObjectId,
                  load: function (data) {

                    insertSubCategories(data, InsertTargetObjectId, CurrentTreeIndex);
                  }
                });
   */
	}
	if(aryLiElements[i].className.match(/HasSubCategories/) && !aryLiElements[i].className.match(/HasSubCategoriesMinus/)) {
	if (document.createEvent) { 
		var evObj = document.createEvent('MouseEvents');
        	evObj.initMouseEvent( 'click', true, true, window, 0, 0, 0, 0, 0, false, false, true, false, 0, null );
	        aryLiElements[i].dispatchEvent(evObj);
	}else{
		 aryLiElements[i].click();
	}
	}

       }
   }



   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 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;
                dojo.xhrGet({
                  url:  WebServerScriptUrlSSL+'?ViewAction=ViewSubCategoriesSnipplet&ObjectID='+EpagesObjectId,
                  load: function (data) {
                    insertSubCategories(data, InsertTargetObjectId, TreeIndex);
                  }
                });
           }
       }
   }

