/*************************************
**
** Copyright (c) 2009 - Chris Neal
** For use with permission only.
** Please do not remove this header.
** For support email: 
** chris [a] tophcreative dot com
**
**************************************/
var nav={container_default:false,container_main:false,panel_default:new Element('div').addClassName('panel'),list_default:new Element('ul'),instances:new Array(),tab_class_on:'on',instance_shown:false,init:function(container){if($$('#'+container).length!=1)return;if(this.container_default==false){nav.div_panelinner=new Element('div').addClassName('panelinner');nav.div_panelcontainer=new Element('div').addClassName('panelcontainer').update(nav.div_panelinner);nav.a_close=new Element('a').addClassName('close');nav.div_dropdowninner=new Element('div').addClassName('dropdowninner').update(nav.a_close).insert({bottom:nav.div_panelcontainer});nav.div_dropdownmenu=new Element('div').addClassName('dropdownmenu').setStyle({left:'-9999px'}).update(nav.div_dropdowninner);nav.container_default=nav.div_panelinner;nav.container_main=nav.div_dropdownmenu;}
$(container).select('ul.level1').each(function(el,i){nav.instances[i]={parent_tab:$(el.parentNode),main_container:$(nav.container_main).cloneNode(true),current_level:1,current_height:0,shown:false,panels:new Array(),loaded_panels_count:0,default_levels:$(el),default_levels_split:new Array()}
nav.instances[i].container=nav.instances[i].main_container.select('div.panelinner')[0];nav.instances[i].default_levels.insert({before:nav.instances[i].main_container});nav.instances[i].main_container.select('a.close')[0].observe('click',nav.openCloseNav.bindAsEventListener(this,nav.instances[i])).setStyle({width:nav.instances[i].parent_tab.offsetWidth+'px'});$(el.parentNode).select('a')[0].onclick=function(){return false}
$(el.parentNode).select('a')[0].observe('click',nav.openCloseNav.bindAsEventListener(this,nav.instances[i]));nav.populate(i,1);nav.showNewLevel(i,1,false);nav.updateHeight(nav.instances[i],1,false);});},populate:function(){var args=$A(arguments);var instancenum=args[0];var level=args[1];var instance=nav.instances[instancenum];if(typeof(instance.panels[level])!="undefined")return;instance.loaded_panels_count++;instance.panels[level]=nav.panel_default.cloneNode(true);var working_list=nav.list_default.cloneNode(true);instance.panels[level].update(working_list);if(level==1){var levels_array=instance.default_levels.childElements();instance.default_levels_split[level]=instance.default_levels;}else{var levels_array=args[2].select('ul.level'+level)[0].childElements();instance.default_levels_split[level]=args[2];}
for(var i=0;i<levels_array.length;i++){var el=levels_array[i];var newnode=el.cloneNode(true);newnode.select('ul').each(function(ul){ul.remove()});var is_back=nav.isBack(el,level);var has_sub=nav.hasSubs(el,level);if(has_sub!=false){newnode.addClassName('hassub');newnode.select('a')[0].onclick=function(){return false}
newnode.observe('click',nav.changeLevel.bindAsEventListener(this,el,(parseInt(level)+1),instancenum));}else if(is_back!=false){newnode.select('a')[0].onclick=function(){return false}
newnode.observe('click',nav.changeLevel.bindAsEventListener(this,el,is_back,instancenum));}
working_list.insert({bottom:newnode});}
instance.container.insert({bottom:instance.panels[level]});return instance.panels[level];},changeLevel:function(e){var args=$A(arguments);args.shift();nav.populate(args[2],args[1],args[0]);if(args[1]>nav.instances[args[2]].current_level){nav.showNewLevel(args[2],args[1],true);}else{nav.showOldLevel(args[2],args[1],true);}
return false;},showNewLevel:function(){var args=$A(arguments);var instancenum=args[0];var new_level=args[1];var tween=args[2];var instance=nav.instances[instancenum];if(tween!=true){nav.updateHeight(instance,new_level,false);instance.panels[new_level].setStyle({left:'0px'});instance.current_level=new_level;}else{new Effect.Morph(instance.panels[new_level],{style:'left: 0px',duration:0.5,beforeStart:function(){nav.moving=true;nav.updateHeight(instance,new_level,true);},afterFinish:function(){instance.current_level=new_level;nav.moving=false;nav.updateHeight(instance,new_level,true);},queue:{position:'end',scope:'navscope'}});}},showOldLevel:function(){var args=$A(arguments);var instancenum=args[0];var new_level=args[1];var tween=args[2];var instance=nav.instances[instancenum];if(nav.moving==true)return;nav.removePanel(instance,new_level);nav.populate(instancenum,new_level,instance.default_levels_split[new_level]);new Effect.Morph(instance.panels[new_level],{style:'left: 0px',duration:0.5,beforeStart:function(){nav.moving=true;nav.updateHeight(instance,new_level,true);},afterFinish:function(){nav.cleanUpOldLevels(instance,instance.current_level,new_level);instance.current_level=new_level;nav.moving=false;nav.updateHeight(instance,new_level,true);},queue:{position:'end',scope:'navscope'}});},cleanUpOldLevels:function(instance,current_level,new_level){var i=current_level;while(i>new_level){nav.removePanel(instance,i);i--;}
instance.loaded_panels_count=new_level;},hasSubs:function(li,currentlevel){if($(li).select('ul').length>0){return true;}else{return false;}},isBack:function(li,currentlevel){if($(li).hasClassName('back')){if($(li).hasClassName('back1')){return 1;}else if($(li).hasClassName('back2')){return 2;}else{var new_level=(parseInt(currentlevel)-1);return new_level;}}else{return false}},openCloseNav:function(){var args=$A(arguments);var instance=args[1];if(nav.instance_shown!=false&&instance.shown!=true){nav.instance_shown.parent_tab.removeClassName(nav.tab_class_on);new Effect.BlindUp(nav.instance_shown.main_container,{duration:0.5});nav.instance_shown.shown=false;setTimeout(nav.cleanUp.bind(this,nav.instance_shown),500);nav.instance_shown=false;}
$(instance.container).setStyle({height:instance.current_height+'px'});$(instance.main_container).setStyle({height:'auto'});if(instance.shown==false){$$('embed').each(function(el){el.setStyle({visibility:'hidden'})});instance.parent_tab.addClassName(nav.tab_class_on);instance.main_container.setStyle({left:'0px',display:'none'});new Effect.BlindDown(instance.main_container,{duration:0.5});instance.shown=true;nav.instance_shown=instance;}else{$$('embed').each(function(el){el.setStyle({visibility:'visible'})});instance.parent_tab.removeClassName(nav.tab_class_on);new Effect.BlindUp(instance.main_container,{duration:0.5});instance.shown=false;nav.instance_shown=false;if(nav.closeTimeout!=false){clearTimeout(nav.closeTimeout);nav.closeTimeout=false;}
setTimeout(function(){nav.cleanUp(instance);},500);}
return false;},cleanUp:function(instance){if(instance.shown==true)return;instance.main_container.setStyle({left:'-9999px',display:'block'});var i=instance.loaded_panels_count;while(i>1){if(typeof(instance.panels[i])=="undefined")break;nav.removePanel(instance,i);i--;}
instance.loaded_panels_count=1;instance.current_level=1;nav.updateHeight(instance,1,false);},removePanel:function(instance,i){instance.panels[i].remove();delete instance.panels[i];},updateHeight:function(){var args=$A(arguments);var instance=args[0];var level=args[1];var tween=args[2];var newheight=$(instance.panels[level]).offsetHeight;if(newheight==0)newheight=$(instance.panels[level]).getHeight();if(newheight==0){return;}
if(newheight!=instance.current_height){if(tween!=true){instance.container.setStyle({height:newheight+'px'});}else{new Effect.Morph(instance.container,{style:'height: '+newheight+'px',duration:0.5});}
instance.current_height=newheight;}},goToPath:function(path,instancenum){if(nav.instance_shown==false||nav.instances[instancenum].shown==false){nav.openCloseNav(false,nav.instances[instancenum]);}
var path_array=path.split("_");for(var i=1;i<=path_array.length;i++){if(i==1){nav.instances[instancenum].default_levels_split[(i+1)]=nav.instances[instancenum].default_levels_split[i].childElements()[path_array[(i-1)]];nav.populate(instancenum,(i+1),nav.instances[instancenum].default_levels_split[i].childElements()[path_array[(i-1)]]);}else{nav.instances[instancenum].default_levels_split[(i+1)]=nav.instances[instancenum].default_levels_split[i].select("ul.level"+i)[0].childElements()[path_array[(i-1)]];nav.populate(instancenum,(i+1),nav.instances[instancenum].default_levels_split[i].select("ul.level"+i)[0].childElements()[path_array[(i-1)]]);}}
nav.changeLevel(false,nav.instances[instancenum].default_levels_split[(path_array.length+1)],(path_array.length+1),instancenum);}}
