/* ---------------------------------------------------------------------------------------------------
   content_categoriestreebox.js $Revision: 1.6.22.2 $
   ---------------------------------------------------------------------------------------------------
   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);
               });
               // 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 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);
                  }
                });
           }
       }
   }