      
// MooTools: the javascript framework.
// Load this file's selection again by visiting: http://mootools.net/more/40455b351c5d654c97c86fe5210a4bab 
// Or build this file again with packager using: packager build More/Fx.Move More/Fx.Scroll More/Drag.Move
/*
---
copyrights:
  - [MooTools](http://mootools.net)
licenses:
  - [MIT License](http://mootools.net/license.txt)
...
*/
MooTools.More={version:"1.3.2.1",build:"e586bcd2496e9b22acfde32e12f84d49ce09e59d"};(function(){var b=function(e,d){var f=[];Object.each(d,function(g){Object.each(g,function(h){e.each(function(i){f.push(i+"-"+h+(i=="border"?"-width":""));
});});});return f;};var c=function(f,e){var d=0;Object.each(e,function(h,g){if(g.test(f)){d=d+h.toInt();}});return d;};var a=function(d){return !!(!d||d.offsetHeight||d.offsetWidth);
};Element.implement({measure:function(h){if(a(this)){return h.call(this);}var g=this.getParent(),e=[];while(!a(g)&&g!=document.body){e.push(g.expose());
g=g.getParent();}var f=this.expose(),d=h.call(this);f();e.each(function(i){i();});return d;},expose:function(){if(this.getStyle("display")!="none"){return function(){};
}var d=this.style.cssText;this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=d;}.bind(this);
},getDimensions:function(d){d=Object.merge({computeSize:false},d);var i={x:0,y:0};var h=function(j,e){return(e.computeSize)?j.getComputedSize(e):j.getSize();
};var f=this.getParent("body");if(f&&this.getStyle("display")=="none"){i=this.measure(function(){return h(this,d);});}else{if(f){try{i=h(this,d);}catch(g){}}}return Object.append(i,(i.x||i.x===0)?{width:i.x,height:i.y}:{x:i.width,y:i.height});
},getComputedSize:function(d){if(d&&d.plains){d.planes=d.plains;}d=Object.merge({styles:["padding","border"],planes:{height:["top","bottom"],width:["left","right"]},mode:"both"},d);
var g={},e={width:0,height:0},f;if(d.mode=="vertical"){delete e.width;delete d.planes.width;}else{if(d.mode=="horizontal"){delete e.height;delete d.planes.height;
}}b(d.styles,d.planes).each(function(h){g[h]=this.getStyle(h).toInt();},this);Object.each(d.planes,function(i,h){var k=h.capitalize(),j=this.getStyle(h);
if(j=="auto"&&!f){f=this.getDimensions();}j=g[h]=(j=="auto")?f[h]:j.toInt();e["total"+k]=j;i.each(function(m){var l=c(m,g);e["computed"+m.capitalize()]=l;
e["total"+k]+=l;});},this);return Object.append(e,g);}});})();(function(b){var a=Element.Position={options:{relativeTo:document.body,position:{x:"center",y:"center"},offset:{x:0,y:0}},getOptions:function(d,c){c=Object.merge({},a.options,c);
a.setPositionOption(c);a.setEdgeOption(c);a.setOffsetOption(d,c);a.setDimensionsOption(d,c);return c;},setPositionOption:function(c){c.position=a.getCoordinateFromValue(c.position);
},setEdgeOption:function(d){var c=a.getCoordinateFromValue(d.edge);d.edge=c?c:(d.position.x=="center"&&d.position.y=="center")?{x:"center",y:"center"}:{x:"left",y:"top"};
},setOffsetOption:function(f,d){var c={x:0,y:0},g=f.measure(function(){return document.id(this.getOffsetParent());}),e=g.getScroll();if(!g||g==f.getDocument().body){return;
}c=g.measure(function(){var i=this.getPosition();if(this.getStyle("position")=="fixed"){var h=window.getScroll();i.x+=h.x;i.y+=h.y;}return i;});d.offset={parentPositioned:g!=document.id(d.relativeTo),x:d.offset.x-c.x+e.x,y:d.offset.y-c.y+e.y};
},setDimensionsOption:function(d,c){c.dimensions=d.getDimensions({computeSize:true,styles:["padding","border","margin"]});},getPosition:function(e,d){var c={};
d=a.getOptions(e,d);var f=document.id(d.relativeTo)||document.body;a.setPositionCoordinates(d,c,f);if(d.edge){a.toEdge(c,d);}var g=d.offset;c.left=((c.x>=0||g.parentPositioned||d.allowNegative)?c.x:0).toInt();
c.top=((c.y>=0||g.parentPositioned||d.allowNegative)?c.y:0).toInt();a.toMinMax(c,d);if(d.relFixedPosition||f.getStyle("position")=="fixed"){a.toRelFixedPosition(f,c);
}if(d.ignoreScroll){a.toIgnoreScroll(f,c);}if(d.ignoreMargins){a.toIgnoreMargins(c,d);}c.left=Math.ceil(c.left);c.top=Math.ceil(c.top);delete c.x;delete c.y;
return c;},setPositionCoordinates:function(k,g,d){var f=k.offset.y,h=k.offset.x,e=(d==document.body)?window.getScroll():d.getPosition(),j=e.y,c=e.x,i=window.getSize();
switch(k.position.x){case"left":g.x=c+h;break;case"right":g.x=c+h+d.offsetWidth;break;default:g.x=c+((d==document.body?i.x:d.offsetWidth)/2)+h;break;}switch(k.position.y){case"top":g.y=j+f;
break;case"bottom":g.y=j+f+d.offsetHeight;break;default:g.y=j+((d==document.body?i.y:d.offsetHeight)/2)+f;break;}},toMinMax:function(c,d){var f={left:"x",top:"y"},e;
["minimum","maximum"].each(function(g){["left","top"].each(function(h){e=d[g]?d[g][f[h]]:null;if(e!=null&&((g=="minimum")?c[h]<e:c[h]>e)){c[h]=e;}});});
},toRelFixedPosition:function(e,c){var d=window.getScroll();c.top+=d.y;c.left+=d.x;},toIgnoreScroll:function(e,d){var c=e.getScroll();d.top-=c.y;d.left-=c.x;
},toIgnoreMargins:function(c,d){c.left+=d.edge.x=="right"?d.dimensions["margin-right"]:(d.edge.x!="center"?-d.dimensions["margin-left"]:-d.dimensions["margin-left"]+((d.dimensions["margin-right"]+d.dimensions["margin-left"])/2));
c.top+=d.edge.y=="bottom"?d.dimensions["margin-bottom"]:(d.edge.y!="center"?-d.dimensions["margin-top"]:-d.dimensions["margin-top"]+((d.dimensions["margin-bottom"]+d.dimensions["margin-top"])/2));
},toEdge:function(c,d){var e={},g=d.dimensions,f=d.edge;switch(f.x){case"left":e.x=0;break;case"right":e.x=-g.x-g.computedRight-g.computedLeft;break;default:e.x=-(Math.round(g.totalWidth/2));
break;}switch(f.y){case"top":e.y=0;break;case"bottom":e.y=-g.y-g.computedTop-g.computedBottom;break;default:e.y=-(Math.round(g.totalHeight/2));break;}c.x+=e.x;
c.y+=e.y;},getCoordinateFromValue:function(c){if(typeOf(c)!="string"){return c;}c=c.toLowerCase();return{x:c.test("left")?"left":(c.test("right")?"right":"center"),y:c.test(/upper|top/)?"top":(c.test("bottom")?"bottom":"center")};
}};Element.implement({position:function(d){if(d&&(d.x!=null||d.y!=null)){return(b?b.apply(this,arguments):this);}var c=this.setStyle("position","absolute").calculatePosition(d);
return(d&&d.returnPos)?c:this.setStyles(c);},calculatePosition:function(c){return a.getPosition(this,c);}});})(Element.prototype.position);Fx.Move=new Class({Extends:Fx.Morph,options:{relativeTo:document.body,position:"center",edge:false,offset:{x:0,y:0}},start:function(a){var b=this.element,c=b.getStyles("top","left");
if(c.top=="auto"||c.left=="auto"){b.setPosition(b.getPosition(b.getOffsetParent()));}return this.parent(b.position(Object.merge({},this.options,a,{returnPos:true})));
}});Element.Properties.move={set:function(a){this.get("move").cancel().setOptions(a);return this;},get:function(){var a=this.retrieve("move");if(!a){a=new Fx.Move(this,{link:"cancel"});
this.store("move",a);}return a;}};Element.implement({move:function(a){this.get("move").start(a);return this;}});(function(){Fx.Scroll=new Class({Extends:Fx,options:{offset:{x:0,y:0},wheelStops:true},initialize:function(c,b){this.element=this.subject=document.id(c);
this.parent(b);if(typeOf(this.element)!="element"){this.element=document.id(this.element.getDocument().body);}if(this.options.wheelStops){var d=this.element,e=this.cancel.pass(false,this);
this.addEvent("start",function(){d.addEvent("mousewheel",e);},true);this.addEvent("complete",function(){d.removeEvent("mousewheel",e);},true);}},set:function(){var b=Array.flatten(arguments);
if(Browser.firefox){b=[Math.round(b[0]),Math.round(b[1])];}this.element.scrollTo(b[0],b[1]);return this;},compute:function(d,c,b){return[0,1].map(function(e){return Fx.compute(d[e],c[e],b);
});},start:function(c,d){if(!this.check(c,d)){return this;}var b=this.element.getScroll();return this.parent([b.x,b.y],[c,d]);},calculateScroll:function(g,f){var d=this.element,b=d.getScrollSize(),h=d.getScroll(),j=d.getSize(),c=this.options.offset,i={x:g,y:f};
for(var e in i){if(!i[e]&&i[e]!==0){i[e]=h[e];}if(typeOf(i[e])!="number"){i[e]=b[e]-j[e];}i[e]+=c[e];}return[i.x,i.y];},toTop:function(){return this.start.apply(this,this.calculateScroll(false,0));
},toLeft:function(){return this.start.apply(this,this.calculateScroll(0,false));},toRight:function(){return this.start.apply(this,this.calculateScroll("right",false));
},toBottom:function(){return this.start.apply(this,this.calculateScroll(false,"bottom"));},toElement:function(d,e){e=e?Array.from(e):["x","y"];var c=a(this.element)?{x:0,y:0}:this.element.getScroll();
var b=Object.map(document.id(d).getPosition(this.element),function(g,f){return e.contains(f)?g+c[f]:false;});return this.start.apply(this,this.calculateScroll(b.x,b.y));
},toElementEdge:function(d,g,e){g=g?Array.from(g):["x","y"];d=document.id(d);var i={},f=d.getPosition(this.element),j=d.getSize(),h=this.element.getScroll(),b=this.element.getSize(),c={x:f.x+j.x,y:f.y+j.y};
["x","y"].each(function(k){if(g.contains(k)){if(c[k]>h[k]+b[k]){i[k]=c[k]-b[k];}if(f[k]<h[k]){i[k]=f[k];}}if(i[k]==null){i[k]=h[k];}if(e&&e[k]){i[k]=i[k]+e[k];
}},this);if(i.x!=h.x||i.y!=h.y){this.start(i.x,i.y);}return this;},toElementCenter:function(e,f,h){f=f?Array.from(f):["x","y"];e=document.id(e);var i={},c=e.getPosition(this.element),d=e.getSize(),b=this.element.getScroll(),g=this.element.getSize();
["x","y"].each(function(j){if(f.contains(j)){i[j]=c[j]-(g[j]-d[j])/2;}if(i[j]==null){i[j]=b[j];}if(h&&h[j]){i[j]=i[j]+h[j];}},this);if(i.x!=b.x||i.y!=b.y){this.start(i.x,i.y);
}return this;}});Fx.Scroll.implement({scrollToCenter:function(){return this.toElementCenter.apply(this,arguments);},scrollIntoView:function(){return this.toElementEdge.apply(this,arguments);
}});function a(b){return(/^(?:body|html)$/i).test(b.tagName);}})();var Drag=new Class({Implements:[Events,Options],options:{snap:6,unit:"px",grid:false,style:true,limit:false,handle:false,invert:false,preventDefault:false,stopPropagation:false,modifiers:{x:"left",y:"top"}},initialize:function(){var b=Array.link(arguments,{options:Type.isObject,element:function(c){return c!=null;
}});this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=typeOf(this.options.handle);this.handles=((a=="array"||a=="collection")?$$(this.options.handle):document.id(this.options.handle))||this.element;
this.mouse={now:{},pos:{}};this.value={start:{},now:{}};this.selection=(Browser.ie)?"selectstart":"mousedown";if(Browser.ie&&!Drag.ondragstartFixed){document.ondragstart=Function.from(false);
Drag.ondragstartFixed=true;}this.bound={start:this.start.bind(this),check:this.check.bind(this),drag:this.drag.bind(this),stop:this.stop.bind(this),cancel:this.cancel.bind(this),eventStop:Function.from(false)};
this.attach();},attach:function(){this.handles.addEvent("mousedown",this.bound.start);return this;},detach:function(){this.handles.removeEvent("mousedown",this.bound.start);
return this;},start:function(a){var j=this.options;if(a.rightClick){return;}if(j.preventDefault){a.preventDefault();}if(j.stopPropagation){a.stopPropagation();
}this.mouse.start=a.page;this.fireEvent("beforeStart",this.element);var c=j.limit;this.limit={x:[],y:[]};var e,g;for(e in j.modifiers){if(!j.modifiers[e]){continue;
}var b=this.element.getStyle(j.modifiers[e]);if(b&&!b.match(/px$/)){if(!g){g=this.element.getCoordinates(this.element.getOffsetParent());}b=g[j.modifiers[e]];
}if(j.style){this.value.now[e]=(b||0).toInt();}else{this.value.now[e]=this.element[j.modifiers[e]];}if(j.invert){this.value.now[e]*=-1;}this.mouse.pos[e]=a.page[e]-this.value.now[e];
if(c&&c[e]){var d=2;while(d--){var f=c[e][d];if(f||f===0){this.limit[e][d]=(typeof f=="function")?f():f;}}}}if(typeOf(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};
}var h={mousemove:this.bound.check,mouseup:this.bound.cancel};h[this.selection]=this.bound.eventStop;this.document.addEvents(h);},check:function(a){if(this.options.preventDefault){a.preventDefault();
}var b=Math.round(Math.sqrt(Math.pow(a.page.x-this.mouse.start.x,2)+Math.pow(a.page.y-this.mouse.start.y,2)));if(b>this.options.snap){this.cancel();this.document.addEvents({mousemove:this.bound.drag,mouseup:this.bound.stop});
this.fireEvent("start",[this.element,a]).fireEvent("snap",this.element);}},drag:function(b){var a=this.options;if(a.preventDefault){b.preventDefault();
}this.mouse.now=b.page;for(var c in a.modifiers){if(!a.modifiers[c]){continue;}this.value.now[c]=this.mouse.now[c]-this.mouse.pos[c];if(a.invert){this.value.now[c]*=-1;
}if(a.limit&&this.limit[c]){if((this.limit[c][1]||this.limit[c][1]===0)&&(this.value.now[c]>this.limit[c][1])){this.value.now[c]=this.limit[c][1];}else{if((this.limit[c][0]||this.limit[c][0]===0)&&(this.value.now[c]<this.limit[c][0])){this.value.now[c]=this.limit[c][0];
}}}if(a.grid[c]){this.value.now[c]-=((this.value.now[c]-(this.limit[c][0]||0))%a.grid[c]);}if(a.style){this.element.setStyle(a.modifiers[c],this.value.now[c]+a.unit);
}else{this.element[a.modifiers[c]]=this.value.now[c];}}this.fireEvent("drag",[this.element,b]);},cancel:function(a){this.document.removeEvents({mousemove:this.bound.check,mouseup:this.bound.cancel});
if(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(b){var a={mousemove:this.bound.drag,mouseup:this.bound.stop};
a[this.selection]=this.bound.eventStop;this.document.removeEvents(a);if(b){this.fireEvent("complete",[this.element,b]);}}});Element.implement({makeResizable:function(a){var b=new Drag(this,Object.merge({modifiers:{x:"width",y:"height"}},a));
this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b);}.bind(this));}});Drag.Move=new Class({Extends:Drag,options:{droppables:[],container:false,precalculate:false,includeMargins:true,checkDroppables:true},initialize:function(b,a){this.parent(b,a);
b=this.element;this.droppables=$$(this.options.droppables);this.container=document.id(this.options.container);if(this.container&&typeOf(this.container)!="element"){this.container=document.id(this.container.getDocument().body);
}if(this.options.style){if(this.options.modifiers.x=="left"&&this.options.modifiers.y=="top"){var c=b.getOffsetParent(),d=b.getStyles("left","top");if(c&&(d.left=="auto"||d.top=="auto")){b.setPosition(b.getPosition(c));
}}if(b.getStyle("position")=="static"){b.setStyle("position","absolute");}}this.addEvent("start",this.checkDroppables,true);this.overed=null;},start:function(a){if(this.container){this.options.limit=this.calculateLimit();
}if(this.options.precalculate){this.positions=this.droppables.map(function(b){return b.getCoordinates();});}this.parent(a);},calculateLimit:function(){var j=this.element,e=this.container,d=document.id(j.getOffsetParent())||document.body,h=e.getCoordinates(d),c={},b={},k={},g={},m={};
["top","right","bottom","left"].each(function(q){c[q]=j.getStyle("margin-"+q).toInt();b[q]=j.getStyle("border-"+q).toInt();k[q]=e.getStyle("margin-"+q).toInt();
g[q]=e.getStyle("border-"+q).toInt();m[q]=d.getStyle("padding-"+q).toInt();},this);var f=j.offsetWidth+c.left+c.right,p=j.offsetHeight+c.top+c.bottom,i=0,l=0,o=h.right-g.right-f,a=h.bottom-g.bottom-p;
if(this.options.includeMargins){i+=c.left;l+=c.top;}else{o+=c.right;a+=c.bottom;}if(j.getStyle("position")=="relative"){var n=j.getCoordinates(d);n.left-=j.getStyle("left").toInt();
n.top-=j.getStyle("top").toInt();i-=n.left;l-=n.top;if(e.getStyle("position")!="relative"){i+=g.left;l+=g.top;}o+=c.left-n.left;a+=c.top-n.top;if(e!=d){i+=k.left+m.left;
l+=((Browser.ie6||Browser.ie7)?0:k.top)+m.top;}}else{i-=c.left;l-=c.top;if(e!=d){i+=h.left+g.left;l+=h.top+g.top;}}return{x:[i,o],y:[l,a]};},getDroppableCoordinates:function(c){var b=c.getCoordinates();
if(c.getStyle("position")=="fixed"){var a=window.getScroll();b.left+=a.x;b.right+=a.x;b.top+=a.y;b.bottom+=a.y;}return b;},checkDroppables:function(){var a=this.droppables.filter(function(d,c){d=this.positions?this.positions[c]:this.getDroppableCoordinates(d);
var b=this.mouse.now;return(b.x>d.left&&b.x<d.right&&b.y<d.bottom&&b.y>d.top);},this).getLast();if(this.overed!=a){if(this.overed){this.fireEvent("leave",[this.element,this.overed]);
}if(a){this.fireEvent("enter",[this.element,a]);}this.overed=a;}},drag:function(a){this.parent(a);if(this.options.checkDroppables&&this.droppables.length){this.checkDroppables();
}},stop:function(a){this.checkDroppables();this.fireEvent("drop",[this.element,this.overed,a]);this.overed=null;return this.parent(a);}});Element.implement({makeDraggable:function(a){var b=new Drag.Move(this,a);
this.store("dragger",b);return b;}});
window.addEvent('domready', function(ev){
    $$('.bubbles').each(function(con){
        if(!con.getChildren().length){return}
        var csf = new CSFlow({container:con, useClick:true, useWheel:false});
    });
    $$('.content-col ul.carousel').each(function(con){
        if(!con.getChildren().length){return}
        var dim = 170;
        var els = con.getElements('a.carousel');
        var csf = new CSFlow({container:con, elements:els, maxVisible:3, verticalCenter:true, activeElement:0});
        els.addEvent('flow', function(d){
            var amount = dim - ((10 - d['z-index']) * 70);
            this.getElement('img').morph({width: amount+'px', 'margin-left': -1*amount/2, opacity: d.opacity}); // % funktioniert hier nicht!! [MSE]
            if(amount == dim){
                this.getParent('ul').getChildren().removeClass('active');
                this.getParent().addClass('active');
            }
        });
        csf.renderElements();
        var controls = con.getNext().getElements('img');
        controls[0].addEvent('click', csf.next.bind(csf));
        controls[1].addEvent('click', csf.prev.bind(csf));
        
    });
    $$('.context-col ul.carousel').each(function(con){
        if(!con.getChildren().length){return}
        var dim = 89;
        var els = con.getElements('a.carousel');
        var csf = new CSFlow({container:con, elements:els, maxVisible:3, verticalCenter:true, activeElement:0});
        els.addEvent('flow', function(d){
            var amount = dim - ((10 - d['z-index']) * 70);
            this.getElement('img').morph({width: amount+'px', 'margin-left': -1*amount/2, opacity: d.opacity}); // % funktioniert hier nicht!! [MSE]
            if(amount == dim){
                this.getParent('ul').getChildren().removeClass('active');
                this.getParent().addClass('active');
            }
        });
        csf.renderElements();
        var controls = con.getNext().getElements('img');
        controls[0].addEvent('click', csf.next.bind(csf));
        controls[1].addEvent('click', csf.prev.bind(csf));
        
    });
    
    /*accordions*/
    //right
    $$('ul.themen, ul.expanding-teaser').each(function(acc){
        var to = acc.getElements('.has-subcategories h2 a');
        var els = acc.getElements('div.teaser, div.indent-teaser');
        
        if(to.length && to.length == els.length){
        
            to.addEvent('click', function(ev){ev.stop();});
            var a = new Fx.Accordion(to, els).addEvents({
                active:function(tog, el){tog.getParent('li').addClass('active');},
                background:function(tog, el){tog.getParent('li').removeClass('active');}
            }).fireEvent('active', [to[0], els[0]]);
        }else {
        
            throw new Error('ungleiche anzahl v. teasern und togglern - akkordeon');
        }
    });
    
    //search
    $$('div.additional-results').each(function(acc){
        var to = acc.getElements('.expandable-box .expandable-header');
        var els = acc.getElements('.expandable-box .expandable-content');
        
        if(to.length && to.length == els.length){
            to.addEvent('click', function(ev){ev.stop();});
            var a = new Fx.Accordion(to, els).addEvents({
                active:function(tog, el){tog.getParent('.expandable-box').addClass('open')},
                background:function(tog, el){tog.getParent('.expandable-box').removeClass('open')}
            }).fireEvent('active', [to[0], els[0]]);
        }else {
            throw new Error('ungleiche anzahl v. teasern und togglern - suche akkordeon');
        }
    });
    
    //form
    $$('form div.checkbox-expander').each(function(el){
        var toggle = el.getElement('input');
        var cnt = el.getElement('div.hidden');
        
        var toggleshim = new Element('a');
        if(!toggle || !cnt){
            return;
        }
        
        toggle.addEvent('change', function(ev){
            if(this.checked){
                el.addClass('open');
                cnt.reveal();
            }else {
                el.removeClass('open');
                cnt.dissolve();
            }
        }).fireEvent('change');
    });
    
    
    //create description from alt-attribut
    var imgmodifier = function(el){
        var s = el.getSize();
        el.setStyles({width: 'auto', height:'auto'});
        var c = new Element('div', {'class':'image-zoom lt', 'html':'<div class="image"></div><div class="additional"></div>'}).setStyle('width', 2 + s.x);
        if(el.get('alt')){
            c.getElement('.additional').adopt(new Element('div', {'class':'title', text:el.get('alt')}))
        }
        c.getElement('.image').adopt(el.clone());
        c.replaces(el);
    };
    $$('img.create-descr-from-alt').each(function(el){
        if(el.complete){
            imgmodifier.delay(15, this, el);
        } else {
            el.addEvent('load', function(){
                imgmodifier.delay(15,this,el);
            });
        }
    });
    });
/* fontsize */
window.addEvent('domready', function(ev) {
    var fontw = 13;
    var fonth1 = 24;
    var fonth2 = 16;
    var fontnav = 14;
    if(Cookie.read('font-w') != null)
      fontw = Cookie.read('font-w');
    if(Cookie.read('font-h1') != null)
      fonth1 = Cookie.read('font-h1');
    if(Cookie.read('font-h2') != null)
      fonth2 = Cookie.read('font-h2');
    if(Cookie.read('font-nav') != null)
      fontnav = Cookie.read('font-nav');
    $('wrapper').setStyle('font-size', parseInt(fontw));
    $$('h1').setStyle('font-size', parseInt(fonth1));
    $$('h2').setStyle('font-size', parseInt(fonth2));
    $('nav').getElements('span').setStyle('font-size', parseInt(fontnav));
    $$('.change-font-size').each(function(con) {
        var lt = con.getElement('.smaller').addEvent('click', function(ev){
          ev.stop();
          setFontSize(11, 22, 14, 12); 
        });
        var gt = con.getElement('.normal').addEvent('click', function(ev){ev.stop();
        setFontSize(13, 24, 16, 14); });
        var rst = con.getElement('.bigger').addEvent('click', function(ev){ev.stop();
        setFontSize(15, 26, 18, 16); });
    });
});
function setFontSize(w, h1, h2, nav){
    $('wrapper').setStyle('font-size', w);
    $$('h1').setStyle('font-size', h1);
    $$('h2').setStyle('font-size', h2);
    $('nav').getElements('span').setStyle('font-size', nav);
    Cookie.write('font-w', w, { duration: 0 } );
    Cookie.write('font-h1', h1, { duration: 0 } );
    Cookie.write('font-h2', h2, { duration: 0 } );
    Cookie.write('font-nav', nav, { duration: 0 } );
}

var MaterialKompass = new Class({
    Implements:[Options, Events], 
    options:{
        container:'compass'
    },
    initialize:function(options){
        this.setOptions(options);
        this.con = $(this.options.container);
        if(!this.con){return;}
        this.setElementCategoryData();
        this.setTabs();
        this.setDraggables();
        this.setClickables();
        this.setArrowClick();
        this.cleanPrefilled();
        this.updateDropTarget();
        this.setEvents();
    },
    setEvents:function(){
        this.con.getElement('#compass-show-material').addEvent('click', function(ev){
            ev.stop().preventDefault();
            this.send();
        }.bind(this));
        
    },
    cleanPrefilled:function(){//remove 'empty' uls already in dropzone & get sum for articles
        $$('#compass-dropzone ul, #compass-dropzone .level-two > li[data-firstlevel]').each(function(el){
            //ie
            if(!el || !el.getElement){return;}
            if(!el.getElement('.remove')){
                el.destroy();
            }
        });  
        
        $$('#compass ul.level-three').each(function(el){
            var count = 0;
            el.getElements('.count').each(function(cel){
                count += parseInt(cel.get('text').replace('(', '').replace(')', ''));
            });
            el.getParent().getElement('.count').set('text', ' ('+count+')');
        });
    },
    setTabs:function(){
        var accEls = [//toggler, content
            this.con.getElements('.compass-nav-item'), 
            this.con.getElements('#compass-content .compass-list')
        ];
            
        this.accordion = new Fx.Accordion(
            accEls[0], accEls[1], 
            {
                height: false,
                initialDisplayFx: false,
                onActive:function(t, e){
                    accEls[0].removeClass('active'); t.addClass('active').blur();
                    e.setStyle('display','block');
                },
                onBackground: function(t, e){
                    e.setStyle('display','none');
                }
            });
        accEls[0].addEvent('click', function(ev){var myFx = new Fx.Scroll('compass-content');myFx.toTop();ev.stop();});
        
        //categories-accordion in #compass-content
        this.con.getElements('#compass-content ul.compass-list').each(function(el, i){//for each category
            var accEls = [el.getElements('.level-two>li.has-subcategories>h2'), el.getElements('.has-subcategories .level-three')];
            el.store('accordion', new Fx.Accordion(accEls[0], accEls[1], {
                initialDisplayFx: false,
                display: -1,
                onActive:function(t, e){
                    $$(accEls[0]).getElements('span.status').each(function(el_span){
                        el_span.removeClass('open'); 
                    });
                    t.getElements('span.status').addClass('open');
                }
            }))
        });
        
        
    },
    setArrowClick:function(){
        var arrow = $('compass-push-content');
        arrow.addEvent('click', function(ev){
            if(ev)ev.preventDefault().stop();
            var thisRef = this;
            $('compass-content').getElements('.checked').each(function(el){
                thisRef.onElementDrop(el.clone(), $('compass-dropzone'), el);
            }).removeClass('checked');
        }.bind(this));
    },
    setClickables:function(){
        var clickables = this.con.getElements('#compass-content .level-two>li, #compass-content .remove');
        this.clicked=false;
        
        clickables.each(function(el){
            var clickels = el.getChildren('a').combine(el.getElements('h2 > a'))
            clickels.addEvents({
                'mousedown': function(ev){
                    var clickable = this.getParent('li[data-secondlevel]'); //putting events directly on those interferes with dragging! (order of selectors is important!)
                    if(clickable.hasClass('checked')){
                        // hack
                        if ($$('#compass-dropzone [data-firstlevel="'+clickable.get('data-firstlevel')+'"][data-secondlevel="'+clickable.get('data-secondlevel')+'"][data-article="'+clickable.get('data-article')+'"]').length == 0)
                            clickable.removeClass('checked');
                    }else if (!clickable.hasClass('has-subcategories')){
                        clickable.addClass('checked');
                    }
                },
                'click':function(ev){
                ev.preventDefault();
                }
            
            });
        
        }.bind(this));
    },
    setElementCategoryData:function(dragging, dropzone){
        this.con.getElements('.level-one').each(function(el){
            var identifier = el.getElement('h1').get('text');
            el.getElements('li').set('data-firstlevel', identifier);
        });
        
        this.con.getElements('.level-two>li').each(function(el){
            var identifier = el.getElement('h2').get('text');
            el.set('data-secondlevel', identifier).getElements('li').set('data-secondlevel', identifier);
        });
        
        this.con.getElements('li.remove').each(function(el){
            var identifier = el.get('text');
            el.set('data-article', identifier);
        });
    },
    getSelectedClone:function(){
        var els = $('compass-content').getElements('.checked');
        var clone = new Element('ul', {'class':'cloned'});
        els.each(function(el){
            clone.grab(el.clone());
        });
        return clone;
    },
    setDraggables:function(){
        //var draggables = this.con.getElements('#compass-content .level-two, #compass-content .level-three a');
        var draggables = this.con.getElements('#compass-content .level-two>li, #compass-content .remove');
        var droppables = this.con.getElements('#compass-dropzone');//yes, Elements – Drag.Move expects array.
        var con = this.con;
        var instance = this;
        
        draggables.each(function(el){
            //clone element for drag
            el.addEvent('mousedown', function(ev){
                if(ev.target.hasClass('status')){return;}
                ev.stop();
                var draggable = this;
                var clone;
                if($('compass-content').getElements('.level-two > .checked').length < 2){
                    clone = draggable.clone();
                }else {
                    clone = instance.getSelectedClone();
                }
                try{ //ie
                    var dclone = clone.addClass('dragging-in-progress').set('style', '').setStyles(draggable.getCoordinates()).setStyles({
                        opacity: 0,
                        position: 'absolute'
                    }).inject(document.body);
                    
                    dclone.setStyles({'bottom': 'auto', 'height': 'auto'}).getElements('.level-three').set('style', '')
                } catch(e){
                }
                var move = new Drag.Move(dclone, {
                    snap: 5,
                    droppables: droppables,
                    container: con,
                    onSnap: function(dragging, dropzone){
                        if(!draggable.hasClass('checked')){//single drag
                            draggable.addClass('checked');    
                            clone = instance.getSelectedClone();
                        }
                        if(!dclone){return} 
                        dclone.tween('opacity', 0.6);
                    }.bind(instance),
                    onDrop: function(dragging, dropzone){
                            dragging.get('tween').cancel();
                            dragging.destroy();
                            if(!dropzone){return;}
                            $('compass-push-content').fireEvent('click');
                            return;
                        if(dragging.hasClass('cloned')){//if reconstructed multiple selections have been dragged
                            dragging.destroy();
                            $('compass-push-content').fireEvent('click');
                        }else {
                            
                            instance.onElementDrop(dragging, dropzone, draggable, true);
                        }
                        
                        
                    }.bind(instance),
                    onCancel: function(dragging){
                        dragging.destroy();
                    }
                });    
                move.start(ev);    
            });
        
        });
        
    },
    updateNumberImages:function(articles){//articles: number
        var dropzone = $('compass-dropzone');
        if(articles >0){
            dropzone.removeClass('here-be-content');
        }else{
            dropzone.empty().addClass('here-be-content');
        }
        $$('#compass-show-material .numerals').destroy();
        
        var articlesarr = String.from(articles).split('');
        var beforeEl = $('compass-show-material').getElement('img.text');
        var numerals = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
        Array.each(articlesarr, function(el, i){
            var numberEl = new Element('span', {'class':'numerals'});
            numberEl.addClass(numerals[el]).inject(beforeEl, 'before');
        });
        
    },
    updateDropTarget:function(){
        var articles = 0;
        var dropzone = $('compass-dropzone');
        var instance = this;
        dropzone.getElements('.level-three span.count').each(function(el){
            articles += parseInt(el.get('text').replace('(', ''),10);
        });
        
        this.updateNumberImages(articles); //use embedded numbers first
        this.send(true);//send with "onlynumbers"-Modifier
        
        
        
        
        //remove articles
        dropzone.store('removable', true);
        dropzone.getElements('h1, h2').each(function(headline){
            if(!headline.getElement('span.icon')){
                headline.grab(new Element('span', {'class':'icon'}));
            }
        });
        dropzone.getElements('span.icon').removeEvents('click').addEvent('click', function(ev){
            ev.stop();
            if(!dropzone.retrieve('removable')){
                return
            }
            dropzone.store('removable', false);
            if(this.getParent('h2') || this.getParent('h1')){//remove all from current
                destroyEl = this.getParent('li');
            }else {
                var thrdlen = this.getParent('.level-three').getChildren().length;
                var scndlen = this.getParent('.level-two').getChildren().length;
                var len = this.getParent('.level-one').getElements('.level-two').length;
                
                var destroyEl = null
                
                if(thrdlen == 1){
                    if(scndlen == 1){
                        if(len == 1){
                            destroyEl = this.getParent('.level-one');
                        }
                        else {
                            destroyEl = this.getParent('.level-two');
                        }
                    }
                    else {
                        
                        destroyEl = this.getParent('.level-three');
                    }
                    
                }else {
                    destroyEl = this.getParent('li');
                    
                }
            }
            destroyEl.set('morph', {duration:500, onComplete:function(){
                if(!destroyEl.hasClass('allparent') && destroyEl.getNext('.allparent') != null) {
                  destroyEl.getNext('.allparent').destroy();
                }
                destroyEl.destroy();
                instance.updateDropTarget();
                dropzone.store('removable', true);
            }}).morph({height:0, opacity:0});
            
            
        });
        //dropzone.getElements('.allparent').destroy();
    },
    onElementDrop:function(dragging, dropzone, draggable, donotinsert){
        var isAddAllParent = dragging.hasClass('allparent'); // add all parents
        if (isAddAllParent) {
            draggable.getParent('li').addClass('dragged');
            dragging = draggable.addClass('dragged').getParent('li').clone();
        }
        var isSingle = dragging.hasClass('remove'); //single or category
        var firstCat = dragging.get('data-firstlevel');
        var scndCat = dragging.get('data-secondlevel');
        dragging.destroy();
        if (dropzone == null){return;}
        
        draggable.addClass('checked');
        //check if cats already there:
        var firstCatAvailable = false;
        var firstCatDropTarget = false;
        var scndCatAvailable = false;
        var scndCatDropTarget = false;
        
        //dragging.destroy();
        
        $$('#compass-dropzone li').each(function(el){//room for speed optimization :)
            if(!firstCatDropTarget && firstCat != null && el.get('data-firstlevel') == firstCat){ 
                firstCatAvailable = true; 
                firstCatDropTarget = el.getParent('.level-one').getElement('li'); 
            }
            if(!scndCatDropTarget && scndCat != null && el.get('data-secondlevel') == scndCat && firstCat != '' && el.get('data-firstlevel') == firstCat){ 
                scndCatAvailable = true; 
                scndCatDropTarget = el.getParent('.level-two').getElement('ul'); 
            }
        });
        
        
        
        if(isSingle){//single topic
        
            if(!firstCatAvailable){ //dump list to dropzone.
                draggable.getParent('li').addClass('dragged');
                var insertElement = draggable.addClass('dragged').getParent('.compass-list').clone();
                insertElement.getElements('.level-two li').filter(function(el){return !el.hasClass('dragged')})
                    .each(function(el){
                        var dodel = !$(el).hasClass('dragged') && !$(el).getElement('.dragged');
                        if(dodel)el.destroy();
                        });
                insertElement.getElements('.level-three').set('style', '');//remove accordion inline styles
        
                insertElement.inject(dropzone);
                
                draggable.getParent('li').removeClass('dragged');
            }else {//merge first category
                if(scndCatAvailable){
                    var existing = false;
                    scndCatDropTarget.getElements('li').each(function(el){
                        if(el.get('data-article') == draggable.get('data-article')){
                            existing = true;
                        }
                    });
                    if(!existing){
                        var insertElement = draggable.clone();
                        insertElement.inject(scndCatDropTarget);
                    }
                }
                else {//rebuild second cat
                    
                    draggable.getParent('li').addClass('dragged');
                    var insertElement = draggable.addClass('dragged').getParent('.level-two').clone();
                
                    
                    insertElement.getChildren('li').filter(function(el){return !el.hasClass('dragged');}).destroy(); //remove other cat2
                    insertElement.getElements('.level-three li').filter(function(el){return !el.hasClass('dragged');}).destroy(); //remove other article
                    
                    insertElement.getElements('.level-three').set('style', '');//remove accordion inline styles
                    
                    insertElement.inject(firstCatDropTarget);
                    
                
                }
            
            }
        }else {//is not single
            if(!firstCatAvailable){ //dump list to dropzone.
                var insertElement = draggable.addClass('dragged').getParent('.compass-list').clone();
                insertElement.getElements('.level-two>li').filter(function(el){return !el.hasClass('dragged');}).destroy();
                insertElement.getElements('.level-three').set('style', '');//remove accordion inline styles
                
                insertElement.inject(dropzone);
            }else {//merge first category
                if(scndCatAvailable){//delete everything in scnd cat of droptarget, replace with dragged
                    var replaceEl = scndCatDropTarget.getParent('.level-two');
    
                    var insertElement = draggable.addClass('dragged').getParent('.level-two').clone();
                
                    insertElement.getChildren().filter(function(el){ return !el.hasClass('dragged');}).destroy();//destroy not-dragged elements
                    insertElement.getElements('.level-three').set('style', '');//remove accordion inline styles
                    
                    insertElement.replaces(replaceEl);
                }//dump level-two parent ul into category li
                else {
                    var insertElement = draggable.addClass('dragged').getParent('.level-two').clone();
                    insertElement.getChildren().filter(function(el){ return !el.hasClass('dragged');}).destroy();
                    insertElement.getElements('.level-three').set('style', '');//remove accordion inline styles
                
                    insertElement.inject(firstCatDropTarget);
                
                }
                
            
            }
        }
        this.updateDropTarget();
        
        dropzone.getElements('.dragged').removeClass('dragged');
        $('compass-content').getElements('.dragged').removeClass('dragged');
    
        var scroll = dropzone.getScrollSize();
        var myFx = new Fx.Scroll(dropzone).toBottom();
    },
    send:function(onlynumbers){
        var form = $('compass-send');
        var target = this.con.getElement('.compass-values').empty();
        var valuelistitems = this.con.getElements('#compass-dropzone li.remove');
        valuelistitems.each(function(li, i){
            target.grab(new Element('input', {type:'text', name:li.get('data-inputname')||'s', value:li.get('data-topicparameter')}));
        });
        if(onlynumbers){//ajax
            if(target.getChildren().length === 0){
                this.updateNumberImages(0);
                return;
            }
            form.set('send', {url:'../countmaterialkompass.xsl/materialkompass.xml', onComplete:function(resText, resXML){
                this.updateNumberImages(parseInt(resText,10));
            }.bind(this)});
            form.send();
        }
        else {
            form.submit()
        }
    }
});
window.addEvent('domready', function() {
    if(document.getElementById('compass') != null) {
      var mk = new MaterialKompass();
    }
    if(document.getElementById('compass-content') != null) {
      document.getElementById('compass-content').style.display = 'inline';
    }
    if (document.getElementById('compass-dropzone') != null) {
      document.getElementById('compass-dropzone').style.display = 'inline';
    }
});

