// Copyright Tobias Wetzel 2008 // Dependencies: mootools-1.2-core var Site = { start: function(){ if ($('pageNav')){ Site.initMenu(); } var as = $$('a.glossary'); as.addEvent('click', function(e){ e.stop(); Site.createGlossar(this.get('href'), e); }); $$('img.print').addEvent('click', function(e){ //e.stop(); window.print(); window.document.location.href = 'http://www.familotel.de/glossar/glossar.html'; }); }, initMenu: function(){ var fxs = []; var els = $$('#pageNav li ul'); els.each(function(el, i){ if(el.getParent().getParent().get('id') == 'pageNav'){ var height = el.getSize().y; var active = el.getParent().getElement('.active'); if(!active) { el.store('opened', false); el.setStyles({'overflow':'hidden','height':'0'}); fxs[i] = new Fx.Morph(el ,{ wait: false, onStart: Site.createOver.pass([el, i, height]) }); fxs[i].start(0, fxs[i], [0]); } else { el.getParent().addClass('close'); } } }); $('pageNav').getChildren().each(function(el){ if(el.getLast().get('tag') == 'a') el.addClass('main'); }); }, createOver: function(el, i, height){ var fx = new Fx.Morph(el, { duration: 350, wait: false }); var li = el.getParent(); var la = li.getElements('a'); var aclick = false; la.addEvent('click', function(){aclick = true;}); li.addClass('open'); li.addEvent('click', function(){ var status = this.retrieve('opened'); if(!status && !aclick){ fx.start({'height': height}); this.store('opened', true); this.toggleClass('close'); this.toggleClass('open'); } else if(!aclick) { fx.start({'height': 0}); this.store('opened', false); this.toggleClass('open'); this.toggleClass('close'); } }); }, createGlossar: function(url, e){ var coords = e.target.getCoordinates(); var docSize = document.getSize(); if(!$chk($('glossary'))){ var glossary = new Element('div',{id: 'glossary',styles: {top:coords.top, left:coords.left, width: 0, height: 0}}); var glHead = new Element('div',{id: 'glHead'}); var glClose = new Element('div',{id: 'glClose', html: 'X'}).addEvent('click', function(){glossary.destroy()}); $(document.body).adopt(glossary.adopt(glHead.adopt(glClose))); new Fx.Morph(glossary, { onComplete: function(){ (function(){ var glFrame = new IFrame({src:url, id: 'glFrame', border: 0}).inject(glossary);}).delay(500); } }).start({'height': [0, 270], 'width': [0, 400], 'top': [coords.top, docSize.y/2-125],'left': [coords.left, docSize.x/2-200]}); } else { e.stop(); $('glFrame').set('src', url); } } }; window.addEvent('domready', Site.start);