/*
Script: VIcord.js
	Contains <VIcord>

Author:
	Alan Roemen

Class: VIcord
	A mulitple tier accordion class

Options:
	parent - Parent Element Container. Default 'UL'
	child - Child Element Listing. Default 'LI'
	toggler - Array of class names of Toggle Elements. Default '[toggler]'
	duration - Duration of Transitions. Default '350'
	transition - Transition Effect. Default 'Fx.Transitions.sineInOut'
	urltoggle - Open navigation if ID element found in URL. Default 'true'
*/
var VI=new Array();var VIcord=new Class({options:{parent:"UL",child:"LI",toggler:["toggler"],duration:350,transition:Fx.Transitions.sineInOut,urltoggle:true},initialize:function(E,C){if(!$(E)){return }var B,D,A="";this.setOptions(C);this.vi=E;VI[this.vi]=new Array(new Array());E=$(E);this.filter(E.childNodes);if($("breadcrumb")){this.path=$("breadcrumb").getElements("li").pop().getElement("a").getProperty("href")}else{this.path=location.pathname}this.path=this.path.toLowerCase();this.path=this.path.split("/");this.collapse()},filter:function(B,D){var D=D||VI[this.vi].length-1;var A="";for(var C=0;C<B.length;C++){for(i=0;i<this.options.toggler.length;i++){if(B[C].className==this.options.toggler[i]){this.addParent(B[C],D);break}}if(B[C].nodeName==this.options.child){this.addChild(B[C],D)}if(!B[C].nodeName){break}}},addChild:function(C,D){var B;var A=C.innerHTML.replace(/(<([^>]+)>)/ig,"");if(A.indexOf("\n")!=-1){A=A.substring(0,A.indexOf("\n")-(window.gecko?0:1))}if(D==0){B=false}else{B=VI[this.vi][D-1].length-1}$(C).addEvent("click",function(F){F=new Event(F);var E=F.target.toString().indexOf("http");if(E<0){F.stop()}}.bindWithEvent(this));VI[this.vi][D].push({name:A,parent:B,element:false,height:false,expanded:false,collapsible:true,id:false})},addParent:function(E,G){var D,B;var A=E.innerHTML.replace(/(<([^>]+)>)/ig,"");if(A.indexOf("\n")!=-1){A=A.substring(0,A.indexOf("\n")-(window.gecko||window.webkit?0:1))}if(G==0){D=false}else{D=VI[this.vi][G-1].length-1}for(var C=0;C<E.childNodes.length;C++){if(E.childNodes[C].nodeName==this.options.parent){B=E.childNodes[C];break}}VI[this.vi][G].push({name:A,parent:D,element:B,height:false,expanded:true,collapsible:true,id:(E.id==""?false:E.id.toLowerCase())});var F=VI[this.vi][G].length-1;$(E).addEvent("click",function(H){if(H.target.toString().indexOf("http")!=-1){return }H=new Event(H);if(VI[this.vi][G-1][F].expanded==false){this.show(G-1,F)}else{this.hide(G-1)}H.stop()}.bindWithEvent(this));$(E).setStyles({"cursor":"pointer"});G+=1;if(!VI[this.vi][G]){VI[this.vi][G]=new Array()}this.filter(B.childNodes,G)},getParents:function(B,C){var A=new Array();var D=0;do{A[D]={"i":B,"ii":C};C=VI[this.vi][B][C].parent;B--;D++}while(B>=0);return A},show:function(C,D){var B=this.getParents(C,D);for(A=VI[this.vi].length-1;A>=0;A--){for(jj=VI[this.vi][A].length-1;jj>=0;jj--){VI[this.vi][A][jj].expanded=false}}for(var A=0;A<B.length;A++){VI[this.vi][B[A].i][B[A].ii].expanded=true}this.build()},hide:function(C){for(var A=VI[this.vi].length-1;A>=C;A--){for(var B=VI[this.vi][A].length-1;B>=0;B--){VI[this.vi][A][B].expanded=false}}this.build()},build:function(){var E,A,C,F=0;for(var B=VI[this.vi].length-1;B>=0;B--){for(var D=VI[this.vi][B].length-1;D>=0;D--){if(VI[this.vi][B][D].element===false){continue}A=VI[this.vi][B][D].element.getSize();C=VI[this.vi][B][D].height;if(VI[this.vi][B][D].expanded==true){VI[this.vi][B][D].element.effects({duration:this.options.duration,transition:this.options.transition}).start({"height":C+F,"opacity":[0,1]});F+=C}else{VI[this.vi][B][D].element.effects({duration:this.options.duration,transition:this.options.transition}).start({"height":0,"opacity":0})}}}},getParentId:function(A,C){var B=VI[this.vi][A][C];while(B.parent!==false){A--;B=VI[this.vi][A][B.parent]}return B.id.toString().toLowerCase()},collapsible:function(C,E){var G,B;var D=VI[this.vi][C][E];if(D.id!==false){if(D.parent!==false){G=this.getParentId(C,E);B=D.id.toString().replace(G+"_","");if(this.path.indexOf(G)!=-1&&this.path.indexOf(B)!=-1){return false}for(var A=0;A<D.element.childNodes.length;A++){var F=D.element.childNodes[A];if($type(F)!="element"){continue}B=F.id.toString().replace(G+"_","");if(this.path.indexOf(G)!=-1&&this.path.indexOf(B)!=-1){return false}}}else{if(this.path.indexOf(D.id)!=-1){return false}}}return true},collapse:function(){var F,G,H,E,B="",C=0,A=0,D;for(F=VI[this.vi].length-1;F>=0;F--){for(G=VI[this.vi][F].length-1;G>=0;G--){B=VI[this.vi][F][G];if(B.element!==false){if(this.options.urltoggle&&!this.collapsible(F,G)){A=$(B.element).getSize().scrollSize.y;$(B.element).setStyles({"margin":0,"height":A,"overflow":"hidden"});D=VI[this.vi][F][G].element.getSize().scrollSize.y.toInt();if(F>0){C+=D}else{VI[this.vi][F][G].height=D-C}}else{$(B.element).setStyles({"margin":0,"height":0,"overflow":"hidden"});VI[this.vi][F][G].expanded=false}if(VI[this.vi][F][G].height===false){VI[this.vi][F][G].height=VI[this.vi][F][G].element.getSize().scrollSize.y}}}}}});VIcord.implement(new Events,new Options)