// This script is not freeware!


//


// Multi-Level Drop-Down Menu 1.53


// You can find and buy latest version of this script 


// at the http://spicebrains.com/multi-level-drop-down-menu/


//


// Copyright 2007 SpiceBrains.com





var timeout = 1000;


var shift_x = 0;


var shift_y = 0;





////////////////////////////////////////////////////////////////////////////////////////////////////





var MLDDM_ID      = 'Mlddm';      // menu id


var obj_menu      = null;         // menu object


var top_level_items = new Array();  // buttons


var all_layers      = new Array();   // menu layers (all li vs ul)





function initMlddm()


{


   var candidates = document.getElementsByTagName('ul');


   for(var i=0; i < candidates.length; i++) 


   {


      if(candidates[i].id == MLDDM_ID) { obj_menu = candidates[i]; break; }


   }


   


   if(obj_menu.hasChildNodes())


   {


      var current = obj_menu.getElementsByTagName("li")[0];


      var i = 0;


      while(current)


      {


         top_level_items[i] = current;


         current = node_after(current);


         i++;


      }


   }





   var all_li = new Array();


   var all_li_vs_ul = new Array();


   var count = 0;


   all_li = obj_menu.getElementsByTagName("li");


   for(var i=0; i<all_li.length; i++)


   {


      if(all_li[i].getElementsByTagName("ul")[0]) 


      {


         all_li_vs_ul[count] = all_li[i];


         count++;


      }





      all_li[i].onmouseover = eventover;


      all_li[i].onmouseout  = eventout;


   }





   obj_menu.onmouseout  = allout;





   for(var i=0; i<all_li_vs_ul.length; i++)


   {


      all_layers[i] = all_li_vs_ul[i].getElementsByTagName("ul")[0];   


   }


   


    /**************************************************************************/


   var li_blocks = new Array();


   var right_plus_left_padding;





   for(index = 0; index < all_layers.length; index++)


   {


      var current_a;





      li_blocks[index] = new Array();


      var current = all_layers[index].getElementsByTagName("li")[0];


      var j = 0;


      while(current)


      {


         li_blocks[index][j] = current;


         current = node_after(current);


         j++;


      }





      for(i = 0; i < li_blocks[index].length; i++)


      {


         current = li_blocks[index][i].getElementsByTagName("a")[0];


         if (current) 


            current.style.display = 'inline';


      }


      


      var longest;


      var cur;


      var maxwidth = 0;


      for(i = 0; i < li_blocks[index].length; i++)


      {


         cur = li_blocks[index][i].getElementsByTagName("a")[0];


         


         if(cur && cur.offsetWidth >= maxwidth)


         {


            maxwidth = cur.offsetWidth;


            longest = cur;


         }


      }





      for(i = 0; i < li_blocks[index].length; i++)


      {


         cur = li_blocks[index][i].getElementsByTagName("a")[0];


         if (cur) 


         {


            cur.style.display = 'block';


            if(cur.offsetWidth >= maxwidth)


            {


               maxwidth = cur.offsetWidth;


               longest = cur;


            }


         }


      }





      longest.style.width   = maxwidth + 'px';


      right_plus_left_padding = longest.offsetWidth - maxwidth;





      for(var i=0; i < li_blocks[index].length; i++)


      {


         current_a = li_blocks[index][i].getElementsByTagName("a")[0];


         if (current_a) 


         {


            current_a.style.display = 'block';


            current_a.style.width   = maxwidth - right_plus_left_padding + 'px';


         }


      }


   }





   /**************************************************************************/


   for(index = 0; index < all_layers.length; index++)


   {


      var level = 0;


      var currentobj = all_layers[index];


      while(currentobj.id != MLDDM_ID)


      {


         if(currentobj.tagName == 'UL') level++;


         currentobj = currentobj.parentNode;


      }


      


      if(level > 1)


      {


         var parent_ul;


         var parent_a;


         var curr = all_layers[index].parentNode;


         while(curr.tagName != 'UL') 


         {   


            if(curr.parentNode)


               curr = curr.parentNode;


            else


               return 1;


         }


         parent_ul = curr;





         var curr = all_layers[index].parentNode;


         while(curr.tagName != 'LI') 


         {


            if(curr.parentNode)


               curr = curr.parentNode;


            else


               return 1;


         }


         parent_a = curr.getElementsByTagName("a")[0];





         var a_tags = new Array();


         var i = 0;


         curr = parent_ul.getElementsByTagName("li")[0];


         while(curr)


         {


            if(curr.getElementsByTagName("a")[0]) a_tags[i] = curr.getElementsByTagName("a")[0];


            curr = node_after(curr);


            if(curr) if(curr.tagName == 'LI') i++;


         }





         var num = 0;         


         for(var i = 0; i < a_tags.length; i++)


         {


            if(a_tags[i] != parent_a) num++;


            else break;


         }





         var tag_a  = parent_ul.getElementsByTagName("a")[0];


         var width  = tag_a.offsetWidth;


         var height = tag_a.offsetHeight;


      


         all_layers[index].style.position = 'absolute';


         all_layers[index].style.left     = width      + shift_x + 'px';


         all_layers[index].style.top      = height*num + shift_y +'px';


      }


   }


}


   


var timeouts = new Array();


var out = true;


var lastparentlayer = 0;





function eventover() 


{


   if(out)


   {   out = false;


      


      mcancelclosetime();





      for(var i=0; i<timeouts.length; i++) window.clearTimeout(timeouts[i]);





      var currentli = this;


      var open_layers = new Array();


      


      open_layers[0] = currentli.getElementsByTagName("ul")[0];


      if(!open_layers[0]) open_layers[0] = 0;


      


      var currobj = currentli.parentNode;


      var index = 0;


      while(currobj.id != MLDDM_ID)


      {


         if(currobj.tagName == 'UL') 


         {


            index++;


            open_layers[index] = currobj;


         }


         currobj = currobj.parentNode;


      }





      var present = false;


      for(var i=0; i<all_layers.length; i++)


      {


         for(var j=0; j<open_layers.length; j++)


         {


            if(all_layers[i] == open_layers[j]) present = true;


         }





         if(!present)


         {


            if(lastparentlayer == open_layers[0])


               timeouts[i] = window.setTimeout('mclose("' + i + '")', 100);


            else 


               mclose(i);


         }


         else


         {   


            present = false;


         }


      }


      


      if(open_layers[0]) mopen(open_layers[0]);


      else switchtopmenuitem(currentli);





      lastparentlayer = open_layers[1];


   }


}





function gettopmenuitem(obj)


{


   var topmenuitem;


   var currobj = obj;


   var index = 0;


   while(currobj.id != MLDDM_ID)


   {   


      if(currobj.tagName == 'LI') 


      {


         index++;


         topmenuitem = currobj;


      }


      currobj = currobj.parentNode;


   }


   return topmenuitem;


}





function switchtopmenuitem(obj)


{


   var topmenuitem = gettopmenuitem(obj);


   if(topmenuitem) 


   {


      iml = topmenuitem.getElementsByTagName("div")[0];


      imr = topmenuitem.getElementsByTagName("div")[1];


      if (iml) iml.className='cssMlddmTabLeftHover';


      if (imr) imr.className='cssMlddmTabRightHover';


      topmenuitem = topmenuitem.getElementsByTagName("a")[0];


      if (topmenuitem) 


      {


         topmenuitem.id = 'cssMlddmTopHover';


      }


   }





   var anchor;


   for(var i=0; i<top_level_items.length; i++)


   {


      anchor = top_level_items[i].getElementsByTagName("a")[0];


      if(anchor && anchor != topmenuitem) 


      {


         anchor.id = 'oMlddmTopNoHover';


         


         iml = top_level_items[i].getElementsByTagName("div")[0];


         imr = top_level_items[i].getElementsByTagName("div")[1];


         if (iml) iml.className='cssMlddmTabLeft';


         if (imr) imr.className='cssMlddmTabRight';


         


      }


   }


}





////////////////////////////////////////////////////////////////////////////////////////////////////


var closeTimer      = 0;





function allout()


{


   for(var i=0; i<timeouts.length; i++) window.clearTimeout(timeouts[i]);


   mclosetime();


}





function eventout() 


{


   var obj = this;


   var currobj = obj.parentNode;


   var anchor;


   if(currobj.id == MLDDM_ID)


   {


      var haslayer = 0;





      if(obj.hasChildNodes())


      {


         var children = obj.childNodes;


         for (var i = 0; i < children.length; i++) 


         {


            if(children[i].tagName == 'UL') haslayer = 1;


         }


      }





      if(!haslayer)


      {


         anchor = obj.getElementsByTagName("a")[0];


         if (anchor) anchor.id = 'oMlddmTopNoHover';


         iml = obj.getElementsByTagName("div")[0];


         imr = obj.getElementsByTagName("div")[1];


         if (iml) iml.className='cssMlddmTabLeft left';


         if (imr) imr.className='cssMlddmTabRight left';


         


         


      }


   }








   out = true;


}





function mopen(obj)


{


   switchtopmenuitem(obj);


   if(obj) obj.style.visibility='visible';


}





function mclose(index)


{


   if(all_layers[index]) all_layers[index].style.visibility='hidden';


   


}





function closeall()


{


   var anchor;


   for(var i=0; i<top_level_items.length; i++)


   {


      anchor = top_level_items[i].getElementsByTagName("a")[0];


      if (anchor) anchor.id = 'oMlddmTopNoHover';


      iml = top_level_items[i].getElementsByTagName("div")[0];


      imr = top_level_items[i].getElementsByTagName("div")[1];


      if (iml) iml.className='cssMlddmTabLeft left';


      if (imr) imr.className='cssMlddmTabRight left';


      


   }


   


   for(var i=0; i<all_layers.length; i++)


   {


      mclose(i);


   }





}





function mclosetime()


{


   closeTimer = window.setTimeout("closeall()", TimeOut);


}





function mcancelclosetime()


{


   if(closeTimer)


   {


      window.clearTimeout(closeTimer);


      closeTimer = null;


   }


}





////////////////////////////////////////////////////////////////////////////////////////////////////


function is_all_ws( nod )


{


  return !(/[^\t\n\r ]/.test(nod.data)); // Use ECMA-262 Edition 3 String and RegExp features


}





function is_ignorable( nod )


{


  return ( nod.nodeType == 8) || // A comment node


         ((nod.nodeType == 3) && is_all_ws(nod) ); // a text node, all ws


}





function node_after(sib)


{


   while((sib = sib.nextSibling)) 


   {


      if(!is_ignorable(sib)) return sib;


   }


   return null;


}





////////////////////////////////////////////////////////////////////////////////////////////////////


/* Handlers for automated loading */ 


_LOADERS = Array();





function callAllLoaders() 


{


   var i, loaderFunc;





   for(i=0;i<_LOADERS.length;i++) 


   {


      loaderFunc = _LOADERS[i];


   


      if (loaderFunc && (loaderFunc != callAllLoaders))


      {


         try {


            loaderFunc();


         } 


         catch (e) 


         { }


      }


   }


}





function appendLoader(loaderFunc) 


{


   if (("onload" in window) && window.onload != callAllLoaders)


   {


      _LOADERS.push(window.onload);      


//      _LOADERS[_LOADERS.length] = window.onload;


   } 


   


   window.onload = callAllLoaders;


   _LOADERS.push(loaderFunc);


//   _LOADERS[_LOADERS.length] = loaderFunc;


}





appendLoader(initMlddm);


document.onclick = closeall;


