 MooTools.More={version:"1.2.4.2",build:"bd5a93c0913cce25917c48cbdacde568e15e02ef"};Class.Mutators.Binds=function(a){return a;};Class.Mutators.initialize=function(a){return function(){$splat(this.Binds).each(function(b){var c=this[b]; if(c){this[b]=c.bind(this);}},this);return a.apply(this,arguments);};};Class.Occlude=new Class({occlude:function(c,b){b=document.id(b||this.element);var a=b.retrieve(c||this.property); if(a&&!$defined(this.occluded)){return this.occluded=a;}this.occluded=false;b.store(c||this.property,this);return this.occluded;}});Element.implement({measure:function(e){var g=function(h){return !!(!h||h.offsetHeight||h.offsetWidth); };if(g(this)){return e.apply(this);}var d=this.getParent(),f=[],b=[];while(!g(d)&&d!=document.body){b.push(d.expose());d=d.getParent();}var c=this.expose(); var a=e.apply(this);c();b.each(function(h){h();});return a;},expose:function(){if(this.getStyle("display")!="none"){return $empty;}var a=this.style.cssText; this.setStyles({display:"block",position:"absolute",visibility:"hidden"});return function(){this.style.cssText=a;}.bind(this);},getDimensions:function(a){a=$merge({computeSize:false},a); var f={};var d=function(g,e){return(e.computeSize)?g.getComputedSize(e):g.getSize();};var b=this.getParent("body");if(b&&this.getStyle("display")=="none"){f=this.measure(function(){return d(this,a); });}else{if(b){try{f=d(this,a);}catch(c){}}else{f={x:0,y:0};}}return $chk(f.x)?$extend(f,{width:f.x,height:f.y}):$extend(f,{x:f.width,y:f.height});},getComputedSize:function(a){a=$merge({styles:["padding","border"],plains:{height:["top","bottom"],width:["left","right"]},mode:"both"},a); var c={width:0,height:0};switch(a.mode){case"vertical":delete c.width;delete a.plains.width;break;case"horizontal":delete c.height;delete a.plains.height; break;}var b=[];$each(a.plains,function(g,f){g.each(function(h){a.styles.each(function(i){b.push((i=="border")?i+"-"+h+"-width":i+"-"+h);});});});var e={}; b.each(function(f){e[f]=this.getComputedStyle(f);},this);var d=[];$each(a.plains,function(g,f){var h=f.capitalize();c["total"+h]=c["computed"+h]=0;g.each(function(i){c["computed"+i.capitalize()]=0; b.each(function(k,j){if(k.test(i)){e[k]=e[k].toInt()||0;c["total"+h]=c["total"+h]+e[k];c["computed"+i.capitalize()]=c["computed"+i.capitalize()]+e[k];}if(k.test(i)&&f!=k&&(k.test("border")||k.test("padding"))&&!d.contains(k)){d.push(k); c["computed"+h]=c["computed"+h]-e[k];}});});});["Width","Height"].each(function(g){var f=g.toLowerCase();if(!$chk(c[f])){return;}c[f]=c[f]+this["offset"+g]+c["computed"+g]; c["total"+g]=c[f]+c["total"+g];delete c["computed"+g];},this);return $extend(e,c);}});(function(){var a=Element.prototype.position;Element.implement({position:function(h){if(h&&($defined(h.x)||$defined(h.y))){return a?a.apply(this,arguments):this; }$each(h||{},function(w,u){if(!$defined(w)){delete h[u];}});h=$merge({relativeTo:document.body,position:{x:"center",y:"center"},edge:false,offset:{x:0,y:0},returnPos:false,relFixedPosition:false,ignoreMargins:false,ignoreScroll:false,allowNegative:false},h); var s={x:0,y:0},f=false;var c=this.measure(function(){return document.id(this.getOffsetParent());});if(c&&c!=this.getDocument().body){s=c.measure(function(){return this.getPosition(); });f=c!=document.id(h.relativeTo);h.offset.x=h.offset.x-s.x;h.offset.y=h.offset.y-s.y;}var t=function(u){if($type(u)!="string"){return u;}u=u.toLowerCase(); var v={};if(u.test("left")){v.x="left";}else{if(u.test("right")){v.x="right";}else{v.x="center";}}if(u.test("upper")||u.test("top")){v.y="top";}else{if(u.test("bottom")){v.y="bottom"; }else{v.y="center";}}return v;};h.edge=t(h.edge);h.position=t(h.position);if(!h.edge){if(h.position.x=="center"&&h.position.y=="center"){h.edge={x:"center",y:"center"}; }else{h.edge={x:"left",y:"top"};}}this.setStyle("position","absolute");var g=document.id(h.relativeTo)||document.body,d=g==document.body?window.getScroll():g.getPosition(),n=d.y,i=d.x; var e=g.getScrolls();n+=e.y;i+=e.x;var o=this.getDimensions({computeSize:true,styles:["padding","border","margin"]});var k={},p=h.offset.y,r=h.offset.x,l=window.getSize(); switch(h.position.x){case"left":k.x=i+r;break;case"right":k.x=i+r+g.offsetWidth;break;default:k.x=i+((g==document.body?l.x:g.offsetWidth)/2)+r;break;}switch(h.position.y){case"top":k.y=n+p; break;case"bottom":k.y=n+p+g.offsetHeight;break;default:k.y=n+((g==document.body?l.y:g.offsetHeight)/2)+p;break;}if(h.edge){var b={};switch(h.edge.x){case"left":b.x=0; break;case"right":b.x=-o.x-o.computedRight-o.computedLeft;break;default:b.x=-(o.totalWidth/2);break;}switch(h.edge.y){case"top":b.y=0;break;case"bottom":b.y=-o.y-o.computedTop-o.computedBottom; break;default:b.y=-(o.totalHeight/2);break;}k.x+=b.x;k.y+=b.y;}k={left:((k.x>=0||f||h.allowNegative)?k.x:0).toInt(),top:((k.y>=0||f||h.allowNegative)?k.y:0).toInt()}; var j={left:"x",top:"y"};["minimum","maximum"].each(function(u){["left","top"].each(function(v){var w=h[u]?h[u][j[v]]:null;if(w!=null&&k[v]<w){k[v]=w;}}); });if(g.getStyle("position")=="fixed"||h.relFixedPosition){var m=window.getScroll();k.top+=m.y;k.left+=m.x;}if(h.ignoreScroll){var q=g.getScroll();k.top-=q.y; k.left-=q.x;}if(h.ignoreMargins){k.left+=(h.edge.x=="right"?o["margin-right"]:h.edge.x=="center"?-o["margin-left"]+((o["margin-right"]+o["margin-left"])/2):-o["margin-left"]); k.top+=(h.edge.y=="bottom"?o["margin-bottom"]:h.edge.y=="center"?-o["margin-top"]+((o["margin-bottom"]+o["margin-top"])/2):-o["margin-top"]);}k.left=Math.ceil(k.left); k.top=Math.ceil(k.top);if(h.returnPos){return k;}else{this.setStyles(k);}return this;}});})();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:Object.type,element:$defined}); this.element=document.id(b.element);this.document=this.element.getDocument();this.setOptions(b.options||{});var a=$type(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.Engine.trident)?"selectstart":"mousedown";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:$lambda(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(c){if(c.rightClick){return;}if(this.options.preventDefault){c.preventDefault();}if(this.options.stopPropagation){c.stopPropagation(); }this.mouse.start=c.page;this.fireEvent("beforeStart",this.element);var a=this.options.limit;this.limit={x:[],y:[]};for(var d in this.options.modifiers){if(!this.options.modifiers[d]){continue; }if(this.options.style){this.value.now[d]=this.element.getStyle(this.options.modifiers[d]).toInt();}else{this.value.now[d]=this.element[this.options.modifiers[d]]; }if(this.options.invert){this.value.now[d]*=-1;}this.mouse.pos[d]=c.page[d]-this.value.now[d];if(a&&a[d]){for(var b=2;b--;b){if($chk(a[d][b])){this.limit[d][b]=$lambda(a[d][b])(); }}}}if($type(this.options.grid)=="number"){this.options.grid={x:this.options.grid,y:this.options.grid};}this.document.addEvents({mousemove:this.bound.check,mouseup:this.bound.cancel}); this.document.addEvent(this.selection,this.bound.eventStop);},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(a){if(this.options.preventDefault){a.preventDefault();}this.mouse.now=a.page;for(var b in this.options.modifiers){if(!this.options.modifiers[b]){continue; }this.value.now[b]=this.mouse.now[b]-this.mouse.pos[b];if(this.options.invert){this.value.now[b]*=-1;}if(this.options.limit&&this.limit[b]){if($chk(this.limit[b][1])&&(this.value.now[b]>this.limit[b][1])){this.value.now[b]=this.limit[b][1]; }else{if($chk(this.limit[b][0])&&(this.value.now[b]<this.limit[b][0])){this.value.now[b]=this.limit[b][0];}}}if(this.options.grid[b]){this.value.now[b]-=((this.value.now[b]-(this.limit[b][0]||0))%this.options.grid[b]); }if(this.options.style){this.element.setStyle(this.options.modifiers[b],this.value.now[b]+this.options.unit);}else{this.element[this.options.modifiers[b]]=this.value.now[b]; }}this.fireEvent("drag",[this.element,a]);},cancel:function(a){this.document.removeEvent("mousemove",this.bound.check);this.document.removeEvent("mouseup",this.bound.cancel); if(a){this.document.removeEvent(this.selection,this.bound.eventStop);this.fireEvent("cancel",this.element);}},stop:function(a){this.document.removeEvent(this.selection,this.bound.eventStop); this.document.removeEvent("mousemove",this.bound.drag);this.document.removeEvent("mouseup",this.bound.stop);if(a){this.fireEvent("complete",[this.element,a]); }}});Element.implement({makeResizable:function(a){var b=new Drag(this,$merge({modifiers:{x:"width",y:"height"}},a));this.store("resizer",b);return b.addEvent("drag",function(){this.fireEvent("resize",b); }.bind(this));}});var Slider=new Class({Implements:[Events,Options],Binds:["clickedElement","draggedKnob","scrolledElement"],options:{onTick:function(a){if(this.options.snap){a=this.toPosition(this.step); }this.knob.setStyle(this.property,a);},initialStep:0,snap:false,offset:0,range:false,wheel:false,steps:100,mode:"horizontal"},initialize:function(f,a,e){this.setOptions(e); this.element=document.id(f);this.knob=document.id(a);this.previousChange=this.previousEnd=this.step=-1;var g,b={},d={x:false,y:false};switch(this.options.mode){case"vertical":this.axis="y"; this.property="top";g="offsetHeight";break;case"horizontal":this.axis="x";this.property="left";g="offsetWidth";}this.full=this.element.measure(function(){this.half=this.knob[g]/2; return this.element[g]-this.knob[g]+(this.options.offset*2);}.bind(this));this.min=$chk(this.options.range[0])?this.options.range[0]:0;this.max=$chk(this.options.range[1])?this.options.range[1]:this.options.steps; this.range=this.max-this.min;this.steps=this.options.steps||this.full;this.stepSize=Math.abs(this.range)/this.steps;this.stepWidth=this.stepSize*this.full/Math.abs(this.range); this.knob.setStyle("position","relative").setStyle(this.property,this.options.initialStep?this.toPosition(this.options.initialStep):-this.options.offset); d[this.axis]=this.property;b[this.axis]=[-this.options.offset,this.full-this.options.offset];var c={snap:0,limit:b,modifiers:d,onDrag:this.draggedKnob,onStart:this.draggedKnob,onBeforeStart:(function(){this.isDragging=true; }).bind(this),onCancel:function(){this.isDragging=false;}.bind(this),onComplete:function(){this.isDragging=false;this.draggedKnob();this.end();}.bind(this)}; if(this.options.snap){c.grid=Math.ceil(this.stepWidth);c.limit[this.axis][1]=this.full;}this.drag=new Drag(this.knob,c);this.attach();},attach:function(){this.element.addEvent("mousedown",this.clickedElement); if(this.options.wheel){this.element.addEvent("mousewheel",this.scrolledElement);}this.drag.attach();return this;},detach:function(){this.element.removeEvent("mousedown",this.clickedElement); this.element.removeEvent("mousewheel",this.scrolledElement);this.drag.detach();return this;},set:function(a){if(!((this.range>0)^(a<this.min))){a=this.min; }if(!((this.range>0)^(a>this.max))){a=this.max;}this.step=Math.round(a);this.checkStep();this.fireEvent("tick",this.toPosition(this.step));this.end();return this; },clickedElement:function(c){if(this.isDragging||c.target==this.knob){return;}var b=this.range<0?-1:1;var a=c.page[this.axis]-this.element.getPosition()[this.axis]-this.half; a=a.limit(-this.options.offset,this.full-this.options.offset);this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();this.fireEvent("tick",a); this.end();},scrolledElement:function(a){var b=(this.options.mode=="horizontal")?(a.wheel<0):(a.wheel>0);this.set(b?this.step-this.stepSize:this.step+this.stepSize); a.stop();},draggedKnob:function(){var b=this.range<0?-1:1;var a=this.drag.value.now[this.axis];a=a.limit(-this.options.offset,this.full-this.options.offset); this.step=Math.round(this.min+b*this.toStep(a));this.checkStep();},checkStep:function(){if(this.previousChange!=this.step){this.previousChange=this.step; this.fireEvent("change",this.step);}},end:function(){if(this.previousEnd!==this.step){this.previousEnd=this.step;this.fireEvent("complete",this.step+""); }},toStep:function(a){var b=(a+this.options.offset)*this.stepSize/this.full*this.steps;return this.options.steps?Math.round(b-=b%this.stepSize):b;},toPosition:function(a){return(this.full*Math.abs(this.min-a))/(this.steps*this.stepSize)-this.options.offset; }});var Asset={javascript:function(f,d){d=$extend({onload:$empty,document:document,check:$lambda(true)},d);var b=new Element("script",{src:f,type:"text/javascript"}); var e=d.onload.bind(b),a=d.check,g=d.document;delete d.onload;delete d.check;delete d.document;b.addEvents({load:e,readystatechange:function(){if(["loaded","complete"].contains(this.readyState)){e(); }}}).set(d);if(Browser.Engine.webkit419){var c=(function(){if(!$try(a)){return;}$clear(c);e();}).periodical(50);}return b.inject(g.head);},css:function(b,a){return new Element("link",$merge({rel:"stylesheet",media:"screen",type:"text/css",href:b},a)).inject(document.head); },image:function(c,b){b=$merge({onload:$empty,onabort:$empty,onerror:$empty},b);var d=new Image();var a=document.id(d)||new Element("img");["load","abort","error"].each(function(e){var f="on"+e; var g=b[f];delete b[f];d[f]=function(){if(!d){return;}if(!a.parentNode){a.width=d.width;a.height=d.height;}d=d.onload=d.onabort=d.onerror=null;g.delay(1,a,a); a.fireEvent(e,a,1);};});d.src=a.src=c;if(d&&d.complete){d.onload.delay(1);}return a.set(b);},images:function(d,c){c=$merge({onComplete:$empty,onProgress:$empty,onError:$empty,properties:{}},c); d=$splat(d);var a=[];var b=0;return new Elements(d.map(function(e){return Asset.image(e,$extend(c.properties,{onload:function(){c.onProgress.call(this,b,d.indexOf(e)); b++;if(b==d.length){c.onComplete();}},onerror:function(){c.onError.call(this,b,d.indexOf(e));b++;if(b==d.length){c.onComplete();}}}));}));}};var IframeShim=new Class({Implements:[Options,Events,Class.Occlude],options:{className:"iframeShim",src:'javascript:false;document.write("");',display:false,zIndex:null,margin:0,offset:{x:0,y:0},browsers:(Browser.Engine.trident4||(Browser.Engine.gecko&&!Browser.Engine.gecko19&&Browser.Platform.mac))},property:"IframeShim",initialize:function(b,a){this.element=document.id(b); if(this.occlude()){return this.occluded;}this.setOptions(a);this.makeShim();return this;},makeShim:function(){if(this.options.browsers){var c=this.element.getStyle("zIndex").toInt(); if(!c){c=1;var b=this.element.getStyle("position");if(b=="static"||!b){this.element.setStyle("position","relative");}this.element.setStyle("zIndex",c); }c=($chk(this.options.zIndex)&&c>this.options.zIndex)?this.options.zIndex:c-1;if(c<0){c=1;}this.shim=new Element("iframe",{src:this.options.src,scrolling:"no",frameborder:0,styles:{zIndex:c,position:"absolute",border:"none",filter:"progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)"},"class":this.options.className}).store("IframeShim",this); var a=(function(){this.shim.inject(this.element,"after");this[this.options.display?"show":"hide"]();this.fireEvent("inject");}).bind(this);if(IframeShim.ready){window.addEvent("load",a); }else{a();}}else{this.position=this.hide=this.show=this.dispose=$lambda(this);}},position:function(){if(!IframeShim.ready||!this.shim){return this;}var a=this.element.measure(function(){return this.getSize(); });if(this.options.margin!=undefined){a.x=a.x-(this.options.margin*2);a.y=a.y-(this.options.margin*2);this.options.offset.x+=this.options.margin;this.options.offset.y+=this.options.margin; }this.shim.set({width:a.x,height:a.y}).position({relativeTo:this.element,offset:this.options.offset});return this;},hide:function(){if(this.shim){this.shim.setStyle("display","none"); }return this;},show:function(){if(this.shim){this.shim.setStyle("display","block");}return this.position();},dispose:function(){if(this.shim){this.shim.dispose(); }return this;},destroy:function(){if(this.shim){this.shim.destroy();}return this;}});window.addEvent("load",function(){IframeShim.ready=true;}); Core = { createNamespace: function(namespace) { var namespace_arr = namespace.split('.'); var root = window; for (var i = 0; i < namespace_arr.length; i++) { if (! $type(root[namespace_arr[i]])) { root[namespace_arr[i]] = {}; } root = root[namespace_arr[i]] ; } } };try { console.log('core initiated'); } catch (e) { console = {}; console.log = function(msg) { } }Core.createNamespace('nl.code.pager'); nl.code.pager.Uri = { base_uri: null, /** * @var string, this the base_url with http://domain in front of it */ base_url: null, open_in_new_window_options: { other_domain: true, files: true, rel_blank: true, exception_href_arr: [] }, setBaseUri: function(base_uri) { nl.code.pager.Uri.base_uri = base_uri; }, /** * Make links open in a new browser/tab * * @param root Element, the html element to scan for anchors, defaults to body * @param array * @return void */ parseLinksToOpenInNewWindow: function(element, open_in_new_window_options) { element = element || document.id(document.body); open_in_new_window_options = $merge(nl.code.pager.Uri.open_in_new_window_options, open_in_new_window_options); var anchor_arr = element.getElements('a'); for (var i = 0; i < anchor_arr.length; i++) { var url = nl.code.pager.Uri.getAnchorUrl(anchor_arr[i]); if (!url) { continue; } var exception_url = nl.code.pager.Uri.isExceptionUrl(url, open_in_new_window_options.exception_href_arr); if ( (open_in_new_window_options.rel_blank && nl.code.pager.Uri.isBlankUrl(url, anchor_arr[i])) || (!exception_url && open_in_new_window_options.other_domain && nl.code.pager.Uri.isExternalUrl(url, anchor_arr[i])) || (!exception_url && open_in_new_window_options.files && nl.code.pager.Uri.isFileUrl(url, anchor_arr[i])) ) { nl.code.pager.Uri.openLinkInNewWindow(anchor_arr[i]); } } }, isBlankUrl: function(url, anchor) { var rel = anchor.get('rel'); if (rel == '_blank') { anchor.addClass('js-blank-uri'); return true; } return false; }, isInternalUrl: function (url) { var file_re = /\.[a-z0-9]{2,4}$/i; var javascript_re = /^javascript\:/; var http_re = /^https?\:\/\//i; var mailto_re = /^mailto\:/; if (! file_re.test(url) && ! javascript_re.test(url) && ! http_re.test(url) && ! mailto_re.test(url)) { return true; } return false; }, isExternalUrl: function(url, anchor) { var http_re = /^https?\:\/\//i; if (http_re.test(url)) { anchor.addClass('js-external-uri'); return true; } return false; }, isFileUrl: function(url, anchor) { var file_re = /\.[a-z0-9]{2,4}$/i; var mailto_re = /^mailto\:/; var javascript_re = /^javascript\:/; if (file_re.test(url) && !(mailto_re.test(url) || javascript_re.test(url))) { anchor.addClass('js-file-uri'); return true; } return false; }, isExceptionUrl: function(url, exception_arr) { for (var i = 0; i < exception_arr.length; i++) { if (url.test(exception_arr[i])) { return true; } } return false; }, openLinkInNewWindow: function(anchor) { anchor.addEvent('click', function(event) { event.stop(); window.open(this.get('href'), '_blank'); }); }, getAnchorUrl: function(anchor) { var url = anchor.get('href'); var http_re = /^https?\:\/\//i; if (!url) { return; } var base_url_re = new RegExp(window.location.protocol +'\/\/(www\.)?'+ window.location.host.replace('www.', ''), 'i'); url = url.replace(base_url_re, ''); if (http_re.test(nl.code.pager.Uri.base_uri)) { url = url.replace(nl.code.pager.Uri.base_uri); } return url; }, getBaseUrl: function() { if (!nl.code.pager.Uri.base_url) { nl.code.pager.Uri.base_url = window.location.protocol + window.location.host; } return nl.code.pager.Uri.base_url; }, getHash: function() { var hash = window.location.hash; hash = hash.replace('#/', ''); return hash; }, /** * Get the hash part of the url in the address bar of the browser * Remove the first "#/" * * @param string * @return void */ setHash: function(hash) { window.location.hash = hash; } }; Core.createNamespace('nl.code.pager'); nl.code.pager.PageData = { history_manager: null, request: function(uri, observer, data, trigger) { if (!$type(data)) { data = ''; } if (uri.indexOf('?') == -1) { uri += '/?'; } var request = new Request({ url: uri +'ajax=true&pager_file='+ document.id(document.body).get('id'), onSuccess: function(responseText, responseXML) { nl.code.pager.PageData.requestSuccess(observer, responseText, trigger); } }); request.send(data); return request; }, requestSuccess: function(observer, responseText, trigger) { var response = responseText.replace(/\n/g, ''); response = response.replace(/\r/g, ''); var json_object = JSON.decode(response); observer.setContent(json_object, response, trigger); }, parseAjaxElements: function(pager, root) { if (! nl.code.pager.PageData.history_manager) { nl.code.pager.PageData.history_manager = new nl.code.pager.HistoryManager(pager); } nl.code.pager.PageData.parseAjaxLinks(root); nl.code.pager.PageData.parseAjaxForms(root); }, parseAjaxForms: function(root) { var form_arr = root.getElements('form'); for (var i = 0; i < form_arr.length; i++) { nl.code.pager.PageData.parseAjaxForm(form_arr[i]); } }, parseAjaxForm: function(form) { var uri = form.get('action'); var http_re = /^https?\:\/\//i; if (http_re.test(nl.code.pager.Uri.base_url)) { uri = uri.replace(nl.code.pager.Uri.base_url, ''); } form.addEvent('submit', function(event) { event.stop(); nl.code.pager.PageData.history_manager.addHistoryEntry(uri, this.toQueryString()); }); }, parseAjaxLinks: function(root) { var anchor_arr = root.getElements('a'); for (var i = 0; i < anchor_arr.length; i++) { var url = nl.code.pager.Uri.getAnchorUrl(anchor_arr[i]); var rel = anchor_arr[i].get('rel'); if (! url) { continue; } if (rel && rel.indexOf('lightbox') != -1) { continue; } if (! nl.code.pager.Uri.isInternalUrl(url)) { continue; } nl.code.pager.PageData.parseAjaxLink(anchor_arr[i]); } }, parseAjaxLink: function(anchor) { var href = nl.code.pager.Uri.getAnchorUrl(anchor); anchor.addEvent('click', function(event) { event.stop(); nl.code.pager.PageData.history_manager.addHistoryEntry(href); }); } };Core.createNamespace('nl.code.pager'); nl.code.pager.Pager = new Class({ Implements: Events, page_object_arr: [], template: null, id: null, initialize: function(base_uri) { this.template = document.id(document.body).get('id'); this.id = this.template; nl.code.pager.Uri.setBaseUri(base_uri); }, setContent: function(data, text) { try { this.template = data.template; this.id = data.id; document.id(document.body).set('id', data.template); for (var i = 0; i < this.page_object_arr.length; i++) { delete this.page_object_arr[i]; } for (html_id in data.content) { var element = document.id(html_id); if (! element) { continue; } element.empty(); element.set('html', data.content[html_id]); this.scanContent(element); this.fireEvent('updateElement', {html_id: html_id}); } this.fireEvent('updatePage', {uri: nl.code.pager.Uri.getHash()}); } catch (e) { } }, scanContent: function(root) { } });Core.createNamespace('nl.code.fx'); nl.code.fx.Fx = new Class({ Extends: Fx, initialize: function(options) { this.parent(options); }, set: function(calculated_value) { this.fireEvent('set', calculated_value); } });Core.createNamespace('nl.code.fx'); nl.code.fx.Pause = new Class({ Implements: [Options, Events], interval: null, options: { milliseconds: 100 }, initialize: function(options) { this.setOptions(options); }, start: function() { this.interval = this.onComplete.delay(this.options.milliseconds, this); }, cancel: function() { $clear(this.interval); }, onComplete: function() { this.fireEvent('onComplete'); } });Core.createNamespace('nl.code.fx'); nl.code.fx.Chain = new Class({ Implements: [Options, Events], options: { }, step_arr: [], current_step: null, initialize: function(options) { this.setOptions(options); }, addStep: function(fx, start_value, end_value) { if ($type(fx) == 'function') { this.step_arr.push(fx); } else { var thisObject = this; fx.addEvent('complete', function() { thisObject.onComplete(); }); this.step_arr.push({fx: fx, start_value: start_value, end_value: end_value}); } }, reset: function() { this.current_step = null; this.step_arr = []; }, start: function() { var step = this.getCurrentStep(); if ($type(step) == 'function') { step(); this.onComplete(); } else { step.fx.start(step.start_value, step.end_value); } }, stop: function() { var step = this.getCurrentStep(); if ($type(step) != 'function') { step.fx.cancel(); } this.reset(); }, getCurrentStep: function() { if (this.current_step == null) { this.current_step = 0; } return this.step_arr[this.current_step]; }, onComplete: function() { this.current_step++; if (this.current_step < this.step_arr.length) { this.start(); } else { this.current_step = null; this.fireEvent('chainFinished'); } } });Core.createNamespace('nl.code.lightbox'); nl.code.lightbox.Lightbox = new Class({ Implements: Options, id: null, options: { css_class: '', overlay_opacity: 0.4, overlay_color: '#000000', show_loading: true, animation_class: null, autostart_animation: false, autostart_animation_width: 0, autostart_animation_height: 0 }, visible: false, container: null, overlay: null, canvas: null, content: null, animation: null, iframe_shim: null, data: null, initialize: function(id, options) { this.id = id; this.setOptions(options); this.container = this.getContainer(); this.overlay = this.container.getElement('div.js-lightbox-overlay'); this.canvas = this.container.getElement('div.js-lightbox-canvas'); this.content = this.container.getElement('div.js-lightbox-content-wrapper'); this.iframe_shim = new IframeShim(this.container); if (this.options.animation_class) { try { var animation_class = this.options.animation_class; this.animation = new animation_class(this, this.options); } catch (e) { this.animation = null; } } this.addEvents(); }, addEvents: function() { var thisObject = this; this.overlay.addEvent('click', function(event) { event.stop(); thisObject.hide(); }); var current_height = 0; var current_width = 0; window.addEvent('resize', function() { if (current_height != window.getSize().y || current_width != window.getSize().x) { thisObject.setSize(); } current_height = window.getSize().y; current_width = window.getSize().x; }); }, setZIndex: function(zIndex) { this.container.setStyle('z-index', zIndex); }, preload: function(data) { data = $merge({css_class: this.options.css_class}, data); if (this.canvas.getSize().x && this.options.show_loading) { this.content.set('html', '<div class="js-loading"></div>'); } if (data.content) { var thisObject = this; var preloader = new nl.code.lightbox.Preloader(data, { onPreloadComplete: function(data) { thisObject.show(data); } }); } }, show: function(data) { if (!data.width || !data.height) { this.preload(data); return; } this.data = data; this.iframe_shim.position(); this.iframe_shim.show(); if (this.options.css_class) { this.container.addClass(this.options.css_class); } if (this.animation) { this.animation.show(this.data); } else { this.setContent(); this.setSize(); this.setOptionStyles(); this.showContent(); } }, setOptionStyles: function() { if (this.options.overlay_color) { this.overlay.setStyle('background-color', this.options.overlay_color); } if (this.options.overlay_opacity) { this.overlay.setStyle('opacity', this.options.overlay_opacity); } }, showContent: function() { if (!this.overlay.getStyle('opacity')) { this.overlay.setStyles({ backgroundColor: 'transparent', opacity: 1 }); } this.content.setStyle('display', 'block'); this.container.setStyle('display', 'block'); this.visible = true; }, setContent: function() { this.content.set('html', this.data.content); var thisObject = this; var anchor_arr = this.container.getElements('a[rel=close]'); for (var i = 0; i < anchor_arr.length; i++) { anchor_arr[i].addEvent('click', function(event) { event.stop(); nl.code.lightbox.Lightboxer.hideLightbox(thisObject.id); }); } var form_arr = this.container.getElements('form'); for (var i = 0; i < form_arr.length; i++) { form_arr[i].addEvent('submit', function(event) { event.stop(); nl.code.pager.PageData.request(this.get('action'), nl.code.lightbox.Lightboxer, this, this); }); } nl.code.lightbox.Lightboxer.pager.scanContent(this.content); }, hideContent: function() { this.visible = false; this.content.empty(); this.content.setStyle('display', 'none'); this.container.setStyle('display', 'none'); }, setSize: function() { var width = this.canvas.getSize().x; if (this.data && this.data.width) { width = this.data.width; } var height = this.canvas.getSize().y; if (this.data && this.data.height) { height = this.data.height; } this.overlay.setStyles({ width: nl.code.lightbox.Lightboxer.calculateWindowWidth(width), height: nl.code.lightbox.Lightboxer.calculateWindowHeight(height) }); this.canvas.setStyles({ width: width, height: height, left: nl.code.lightbox.Lightboxer.calculateCanvasXPosition(width), top: nl.code.lightbox.Lightboxer.calculateCanvasYPosition(height) }); }, hide: function() { if (this.animation && this.animation.animating) { return; } if (this.animation !== null) { this.animation.hide(); } else { this.hideContent(); } this.iframe_shim.hide(); }, getContainer: function() { var container = document.id('js-lightbox'); if (! container) { container = this.renderContainer(); } return container.clone().inject(document.id(document.body)); }, renderContainer: function() { var container = new Element('div', {'class': 'js-lightbox', 'id': 'js-lightbox'}); var overlay = new Element('div', {'class': 'js-lightbox-overlay'}); var canvas = new Element('div', {'class': 'js-lightbox-canvas'}); var content = new Element('div', {'class': 'js-lightbox-content-wrapper'}); container.inject(document.id(document.body)); overlay.inject(container); canvas.inject(container); content.inject(canvas); return container; } });Core.createNamespace('nl.code.lightbox'); nl.code.lightbox.Lightboxer = { pager: null, fit_screen: false, zIndex: 800, lightbox_arr: [], visible_lightbox_arr: [], lightbox_options: { ajax: { }, image: { }, gallery: { }, element: { } }, parseLightboxLinks: function(pager, root, lightbox_options) { nl.code.lightbox.Lightboxer.pager = pager; root = root || document.id(document.body); lightbox_options = lightbox_options || {}; nl.code.lightbox.Lightboxer.lightbox_options = $merge(nl.code.lightbox.Lightboxer.lightbox_options, lightbox_options); var anchor_arr = root.getElements('a'); var lightbox_re = new RegExp('\-lightbox'); for (var i = 0; i < anchor_arr.length; i++) { var rel = anchor_arr[i].get('rel'); if (!rel || !lightbox_re.test(rel)) { continue; } nl.code.lightbox.Lightboxer.parseLightboxLink(anchor_arr[i], rel, nl.code.lightbox.Lightboxer.lightbox_options); } nl.code.lightbox.Lightboxer.addEvents(); }, addEvents: function() { document.addEvent('keydown', function(e) { var event = new Event(e); if (event.key == 'esc') { nl.code.lightbox.Lightboxer.hideLightbox(); } }); }, parseLightboxLink: function(anchor, rel, lightbox_options) { anchor.removeEvents('click'); if (rel == 'image-lightbox') { nl.code.lightbox.ImageLightbox.createTrigger(anchor, lightbox_options.image); } else if (rel.indexOf('gallery-lightbox') != -1) { nl.code.lightbox.GalleryLightbox.createTrigger(anchor, lightbox_options.gallery); } else if (rel == 'element-lightbox') { var element = document.id(anchor.get('href')); if (element) { nl.code.lightbox.ElementLightbox.createTrigger(anchor, element, lightbox_options.element); } } else if (rel == 'ajax-lightbox') { nl.code.lightbox.AjaxLightbox.createTrigger(anchor, lightbox_options.ajax); } }, setContent: function(json, text, trigger) { nl.code.lightbox.Lightboxer.openLightbox(json.id, json.width, json.height, json.content, trigger, nl.code.lightbox.AjaxLightbox, nl.code.lightbox.Lightboxer.lightbox_options.ajax); }, openLightbox: function(id, width, height, content, trigger, lightbox_class, options) { var lightbox = nl.code.lightbox.Lightboxer.findLightbox(id); if (! lightbox) { lightbox = new lightbox_class(id, options); nl.code.lightbox.Lightboxer.lightbox_arr.push(lightbox); } else if (nl.code.lightbox.Lightboxer.visible_lightbox_arr.contains(lightbox) && nl.code.lightbox.Lightboxer.visible_lightbox_arr[nl.code.lightbox.Lightboxer.visible_lightbox_arr.length - 1] != lightbox) { nl.code.lightbox.Lightboxer.visible_lightbox_arr.erase(lightbox); } lightbox.setZIndex(nl.code.lightbox.Lightboxer.zIndex++); nl.code.lightbox.Lightboxer.visible_lightbox_arr.push(lightbox); lightbox.show({ width: width, height: height, content: content, trigger: trigger }); }, findLightbox: function(id) { for (var i = 0; i < nl.code.lightbox.Lightboxer.lightbox_arr.length; i++) { if (nl.code.lightbox.Lightboxer.lightbox_arr[i].id == id) { return nl.code.lightbox.Lightboxer.lightbox_arr[i]; } } return false; }, calculateCanvasXPosition: function(width) { var x = (window.getSize().x - width) / 2; if (x < 10) { x = 10; } x += window.getScroll().x; return x; }, calculateCanvasYPosition: function(height) { var y = (window.getSize().y - height) / 2; if (y < 10) { y = 10; } y += window.getScroll().y; return y; }, /** * A Lightbox can be bigger (width/height) then the window * * @param int * @return int */ calculateWindowWidth: function(canvas_width) { var x = nl.code.lightbox.Lightboxer.calculateCanvasXPosition(canvas_width); var min_width = (2 * x) + canvas_width; var win_width = window.getScrollSize().x; if (min_width > win_width) { return min_width; } return win_width; }, calculateWindowHeight: function(canvas_height) { var y = nl.code.lightbox.Lightboxer.calculateCanvasYPosition(canvas_height); var min_height = (2 * y) + canvas_height; var win_height = window.getScrollSize().y; if (min_height > win_height) { return min_height; } return win_height; }, hideLightbox: function() { if (! nl.code.lightbox.Lightboxer.visible_lightbox_arr.length) { return; } var index = nl.code.lightbox.Lightboxer.visible_lightbox_arr.length - 1; nl.code.lightbox.Lightboxer.visible_lightbox_arr[index].hide(); nl.code.lightbox.Lightboxer.visible_lightbox_arr.erase(nl.code.lightbox.Lightboxer.visible_lightbox_arr[index]); }, hideAllLightboxes: function() { for (var i = 0; i < nl.code.lightbox.Lightboxer.visible_lightbox_arr.length; i++) { nl.code.lightbox.Lightboxer.visible_lightbox_arr[i].hide(); } nl.code.lightbox.Lightboxer.visible_lightbox_arr = []; } };Core.createNamespace('nl.code.lightbox'); nl.code.lightbox.Preloader = new Class({ Implements: [Options, Events], options: { }, data: null, images_preloaded: 0, preload_image_arr: null, preload_content: null, initialize: function(data, options) { this.data = data; this.setOptions(options); this.preload_content = this.createContentContainer(); this.addImageEvents(); }, addImageEvents: function() { var thisObject = this; this.preload_image_arr = this.preload_content.getElements('img'); if (this.preload_image_arr.length) { for (var i = 0; i < this.preload_image_arr.length; i++) { var preload_image = new Asset.image(this.preload_image_arr[i].src, { onload: function() { thisObject.onImagePreload(); }, onerror: function() { thisObject.onImagePreload(); }, onabort: function() { thisObject.onImagePreload(); } }); } } else { this.onPreloadComplete(); } }, createContentContainer: function() { var preload_container = new Element('div', { 'class': 'js-lightbox-preload-container' }); preload_container.inject(document.body); var preload_content = new Element('div', { 'class': 'js-lightbox-content-wrapper' }); if (this.data.height != 0) { preload_content.setStyles({ height: this.data.height, top: (-2 * this.data.height) }); } else if (this.data.width != 0) { preload_content.setStyles({ width: this.data.width, left: (-2 * this.data.width) }); } preload_content.inject(preload_container); if (this.data.css_class) { preload_content.addClass(this.data.css_class); } preload_content.set('html', this.data.content); return preload_content; }, onPreloadComplete: function() { var coordinates = this.preload_content.getCoordinates(); if (nl.code.lightbox.Lightboxer.fit_screen) { this.data.width = (coordinates.width > (window.getSize().x - 40) ? (window.getSize().x - 40) : coordinates.width); this.data.height = (coordinates.height > (window.getSize().y - 40) ? (window.getSize().y - 40) : coordinates.height); } else { this.data.width = coordinates.width; this.data.height = coordinates.height; } this.fireEvent('onPreloadComplete', this.data); }, onImagePreload: function() { this.images_preloaded++; if (this.images_preloaded == this.preload_image_arr.length) { this.onPreloadComplete(); } } });Core.createNamespace('nl.code.lightbox'); nl.code.lightbox.AjaxLightbox = new Class({ Extends: nl.code.lightbox.Lightbox, initialize: function(id, options) { var default_options = { css_class: 'js-ajax-lightbox', overlay_opacity: 0.4, overlay_color: '#000000', show_loading: true, animation_class: LightboxAnimation, autostart_animation: true, autostart_animation_width: 200, autostart_animation_height: 200 }; options = $merge(default_options, options); this.parent(id, options); }, preload: function(data) { this.parent(data); if (this.options.autostart_animation && this.animation && !this.canvas.getSize().x) { data.content = '&nbsp;'; if (this.options.show_loading) { data.content = '<div class="js-loading"></div>'; } data.width = this.options.autostart_animation_width; data.height = this.options.autostart_animation_height; this.show(data); } }, hide: function() { if (this.data.trigger.request) { this.data.trigger.request.cancel(); } this.parent(); } }); nl.code.lightbox.AjaxLightbox.createTrigger = function(anchor, options) { anchor.addEvent('click', function(event) { event.stop(); this.blur(); var url = nl.code.pager.Uri.getAnchorUrl(anchor); var lightbox_id = url.replace('/', '-'); this.request = nl.code.pager.PageData.request(url, nl.code.lightbox.Lightboxer, 'lightbox_id='+ lightbox_id, anchor); nl.code.lightbox.Lightboxer.openLightbox( lightbox_id, 0, 0, '', anchor, nl.code.lightbox.AjaxLightbox, options ); }); }; LightboxAnimation = new Class({ lightbox: null, data: null, options: null, overlay_opacity: null, canvas_width: null, canvas_height: null, animating: false, control_anchor_arr: [], fx_chain: null, initialize: function(lightbox, options) { this.lightbox = lightbox; this.options = options; this.control_anchor_arr = this.getControlAnchorArr(); if (this.options.overlay_color) { this.lightbox.overlay.setStyle('background-color', this.options.overlay_color); } }, getControlAnchorArr: function() { var anchor_arr = []; var close_anchor = this.lightbox.container.getElement('.js-lightbox-close'); if (close_anchor) { anchor_arr.push(close_anchor); } var next_anchor = this.lightbox.container.getElement('.js-lightbox-next'); if (next_anchor) { anchor_arr.push(next_anchor); } var previous_anchor = this.lightbox.container.getElement('.js-lightbox-previous'); if (previous_anchor) { anchor_arr.push(previous_anchor); } return anchor_arr; }, setControlAnchorsVisibility: function(visibility) { for (var i = 0; i < this.control_anchor_arr.length; i++) { this.control_anchor_arr[i].setStyle('visibility', visibility); } }, show: function(data) { this.data = data; this.setControlAnchorsVisibility('hidden'); this.lightbox.setContent(this.data.content); var thisObject = this; if (this.fx_chain) { this.fx_chain.stop(); } this.fx_chain = new nl.code.fx.Chain({ onChainFinished: function() { thisObject.onLightboxVisible(); } }); this.canvas_width = this.lightbox.canvas.getSize().x; this.canvas_height = this.lightbox.canvas.getSize().y; this.overlay_opacity = this.lightbox.overlay.getStyle('opacity'); if (this.lightbox.visible) { this.lightbox.content.setStyle('display', 'none'); this.fx_chain.addStep(new nl.code.fx.Fx({ duration: 200, transition: Fx.Transitions.lineair, onSet: function(value) { thisObject.canvasSize(value); } }), 0, 100); } else { if (!this.animating) { this.setBaseDimensions(); } this.fx_chain.addStep(new nl.code.fx.Fx({ duration: 100, transition: Fx.Transitions.Linear, onSet: function(value) { thisObject.overlayOpacity(value); } }), 0, 100); this.fx_chain.addStep(new nl.code.fx.Fx({ duration: 200, transition: Fx.Transitions.lineair, onSet: function(value) { thisObject.canvasSize(value); } }), 0, 100); } this.animating = true; this.fx_chain.start(); }, onLightboxVisible: function() { this.animating = false; this.setControlAnchorsVisibility('visible'); this.lightbox.showContent(); }, onLightboxHidden: function() { this.animating = false; this.lightbox.hideContent(); }, hide: function() { this.animating = true; this.setControlAnchorsVisibility('hidden'); this.data = { width: 0, height: 0, content: '' }; this.canvas_width = this.lightbox.canvas.getSize().x; this.canvas_height = this.lightbox.canvas.getSize().y; this.overlay_opacity = this.lightbox.overlay.getStyle('opacity'); if (this.fx_chain) { this.fx_chain.stop(); } var thisObject = this; this.fx_chain = new nl.code.fx.Chain({ onChainFinished: function() { thisObject.onLightboxHidden(); } }); this.fx_chain.addStep(new nl.code.fx.Fx({ duration: 200, transition: Fx.Transitions.lineair, onSet: function(value) { thisObject.canvasSize(value); } }), 0, 100); this.fx_chain.addStep(new nl.code.fx.Fx({ duration: 100, transition: Fx.Transitions.Linear, onSet: function(value) { thisObject.overlayOpacity(value); } }), 0, -100); this.lightbox.content.setStyle('display', 'none'); this.fx_chain.start(); }, setBaseDimensions: function() { this.lightbox.content.setStyle('display', 'none'); this.lightbox.container.setStyle('display', 'block'); this.lightbox.canvas.setStyles({ width: 1, left: nl.code.lightbox.Lightboxer.calculateCanvasXPosition(20), height: 1, top: nl.code.lightbox.Lightboxer.calculateCanvasYPosition(20) }); this.lightbox.overlay.setStyles({ width: nl.code.lightbox.Lightboxer.calculateWindowWidth(this.data.width), height: nl.code.lightbox.Lightboxer.calculateWindowHeight(this.data.height), opacity: 0 }); }, canvasSize: function(value) { var percent = value / 100; var width = this.canvas_width + Math.round((this.data.width - this.canvas_width) * percent); var height = this.canvas_height + Math.round((this.data.height - this.canvas_height) * percent); this.lightbox.canvas.setStyles({ top: nl.code.lightbox.Lightboxer.calculateCanvasYPosition(height), left: nl.code.lightbox.Lightboxer.calculateCanvasXPosition(width), width: width, height: height }); }, overlayOpacity: function(value) { var percent = value / 100; var opacity = this.overlay_opacity + ((this.options.overlay_opacity - this.overlay_opacity) * percent); this.lightbox.overlay.setStyle('opacity', opacity); } }); HorizontalSlider = new Class({ slideable_content: null, viewport: null, bar: null, knob: null, steps: 50, slider: null, arrow_left: null, arrow_right: null, move_fx: null, initialize: function() { this.slideable_content = document.id('slider'); if (!this.slideable_content) { return; } this.viewport = document.id('slider-container'); this.bar = document.id(document.body).getElement('div.slider-controls'); this.knob = document.id(document.body).getElement('div.slider-controls div.knob'); this.arrow_left = document.id(document.body).getElement('ul.slider-nav li.left a'); this.arrow_right = document.id(document.body).getElement('ul.slider-nav li.right a'); if (!this.viewport || !this.bar || !this.knob || !this.arrow_left || !this.arrow_right) { return; } this.positionElements(); if (this.slideable_content.getSize().x <= this.viewport.getSize().x) { this.bar.setStyle('display', 'none'); this.arrow_left.setStyle('display', 'none'); this.arrow_right.setStyle('display', 'none'); return; } var thisObject = this; this.move_fx = new nl.code.fx.Fx({ duration: 400, transition: Fx.Transitions.Quad.easeIn, onSet: function(value) { thisObject.moveToPosition(value); } }); this.slider = this.createSlider(); this.addEventHandlers(); }, moveByTick: function(mouse_x_pos) { this.move_fx.cancel(); var pos = (mouse_x_pos - (this.knob.getSize().x / 2)) - this.bar.getPosition().x; var percentage = pos / this.slider.full; var dx = this.slideable_content.getSize().x - this.viewport.getSize().x; var from = this.slideable_content.getStyle('left').toInt(); var to = -percentage * dx; this.move_fx.start(from, to); }, moveByStep: function(step) { this.move_fx.cancel(); var dx = this.slideable_content.getSize().x - this.viewport.getSize().x; var left = -1 * (step/this.steps) * dx; this.slideable_content.setStyle('left', left); }, moveByArrow: function(direction) { this.move_fx.cancel(); var from = this.slideable_content.getStyle('left').toInt(); var step_width = 800; var to = from + (direction * step_width); this.move_fx.start(from, to); }, moveToPosition: function(new_position) { var dx = this.slideable_content.getSize().x - this.viewport.getSize().x; if (new_position <= 0 && new_position >= -dx) { this.slideable_content.setStyle('left', new_position); var step_width = (this.slideable_content.getSize().x - this.viewport.getSize().x) / this.steps; var current_step = Math.floor(this.slideable_content.getStyle('left').toInt() / step_width); this.knob.setStyle('left', this.slider.toPosition(current_step)); } else if (new_position > 0) { this.slideable_content.setStyle('left', 0); this.knob.setStyle('left', 0); this.move_fx.cancel(); } else if (new_position < -dx) { this.slideable_content.setStyle('left', -dx); this.knob.setStyle('left', this.slider.full); this.move_fx.cancel(); } }, addEventHandlers: function() { var thisObject = this; this.arrow_left.addEvents({ 'mousedown': function(event) { event.stop(); thisObject.moveByArrow(1); } }); this.arrow_right.addEvents({ 'mousedown': function(event) { event.stop(); thisObject.moveByArrow(-1); } }); this.bar.removeEvents(); this.bar.addEvent('mousedown', function(event) { thisObject.moveByTick(event.client.x); }); }, createSlider: function() { var thisObject = this; var slider = new Slider(this.bar, this.knob, { mode: 'horizontal', steps: this.steps, wheel: true, onChange: function(step){ thisObject.moveByStep(step); }, onTick: function(pos){ thisObject.moveByTick(pos); } }); return slider; }, positionElements: function() { var left = 0; var li_arr = this.slideable_content.getElements('li'); var is_collection = false; if (document.id(document.body).hasClass('collection')) { is_collection = true; } for (var i = 0; i < li_arr.length; i++) { li_arr[i].setStyles({ 'position': 'absolute', 'left': left }); if (is_collection) { var slideable_element = new SlideableElement(li_arr[i]); } left += li_arr[i].getSize().x; } this.slideable_content.setStyle('width', left); } }); SlideableElement = new Class({ container: null, label: null, image: null, anchor: null, timeout: null, initialize: function(container) { this.container = container; this.label = this.getLabel(); this.image = this.container.getElement('img'); this.anchor = this.container.getElement('a'); if (!this.label || !this.image || !this.anchor) { return; } this.anchor.erase('title'); this.addEventHandlers(); }, addEventHandlers: function() { var thisObject = this; this.image.addEvents({ 'mouseover': function(event) { thisObject.showLabel(event); }, 'mouseout': function() { thisObject.mouseOut(); }, 'mousemove': function(event) { thisObject.positionLabel(event); } }); }, mouseOut: function() { $clear(this.timeout); this.timeout = this.hideLabel.delay(100, this); }, showLabel: function(event) { $clear(this.timeout); this.positionLabel(event); this.label.setStyle('visibility', 'visible'); }, hideLabel: function() { this.label.setStyle('visibility', 'hidden'); }, positionLabel: function(event) { this.label.setStyles({ 'top': event.client.y + 10 + Window.getScroll().y, 'left': event.client.x + 5 + Window.getScroll().x }); }, getLabel: function() { var label = this.container.getElement('.go-to-detail'); label.setStyles({ 'position': 'absolute', 'z-index': 100, 'display': 'block', 'margin': 0, 'visibility': 'hidden' }); label.inject(document.id(document.body)); return label; } }); Map = new Class({ container: null, country_arr: null, active: null, initialize: function() { this.container = document.id('world-map'); if (!this.container) { return; } this.country_arr = Country.getCountries(this); }, setActiveCountry: function(country) { if (this.active == country) { return; } if (this.active) { this.active.hide(); } this.active = country; this.active.show(); } }); Country = new Class({ map: null, name: null, anchor: null, image: null, projects: null, fx: null, is_active: false, initialize: function(li, map) { this.map = map; this.name = li.get('class'); this.anchor = li.getElement('a'); this.image = document.id(document.body).getElement('.mapped-countries .'+ this.name); if (!this.image) { return; } this.projects = this.getProjectsContainer(); if (!this.projects) { return; } this.fx = this.createFx(); this.addEventHandlers(); }, createFx: function() { var thisObject = this; var fx = new nl.code.fx.Fx({ duration: 300, transition: Fx.Transitions.Quad.easeIn, onSet: function(value) { thisObject.setOpacity(value); } }); return fx; }, getProjectsContainer: function() { var element = this.image.getElement('.projects-container'); if (!element) { return null; } element.setStyles({ 'display': 'block' }); if (!Browser.Engine.trident) { element.setStyle('opacity', 0); } element.inject(document.body); return element; }, addEventHandlers: function() { var thisObject = this; this.anchor.addEvent('click', function(event) { event.stop(); thisObject.map.setActiveCountry(thisObject); }); this.image.addEvents({ 'mouseover': function(event) { thisObject.onMouseOutMap(); }, 'mouseout': function(event) { thisObject.onMouseOverMap(); }, 'click': function(event) { event.stop(); thisObject.map.setActiveCountry(thisObject); } }); }, setOpacity: function(value) { this.projects.setStyle('opacity', value); }, onMouseOutMap: function() { if (this.is_active) { return; } this.image.addClass('active'); }, onMouseOverMap: function() { if (this.is_active) { return; } this.image.removeClass('active'); }, show: function() { this.is_active = true; this.positionProjectsContainer(); this.anchor.addClass('active'); this.image.addClass('active'); if (!Browser.Engine.trident) { this.fx.start(0, 1); } }, positionProjectsContainer: function() { var coordinates = this.image.getElement('.country').getCoordinates(); var size = this.projects.getSize(); var top = (coordinates.top + (coordinates.height/2)) - size.y + 10; var left = (coordinates.left + (coordinates.width/2)) - 20; var half_way = (this.map.container.getCoordinates().width/2) + this.map.container.getCoordinates().left; if (left > half_way) { left = left - 264; this.projects.addClass('flip'); } this.projects.setStyles({ 'position': 'absolute', 'top': top, 'bottom': 'auto', 'left': left, 'display': 'block' }); if (!Browser.Engine.trident) { this.projects.setStyle('opacity', 0); } else { this.projects.setStyle('visibility', 'visible'); } }, hide: function() { this.is_active = false; this.anchor.removeClass('active'); this.image.removeClass('active'); if (!Browser.Engine.trident) { this.projects.setStyle('opacity', 0); } else { this.projects.setStyle('visibility', 'hidden'); } } }); Country.getCountries = function(map) { var country_arr = []; var li_arr = document.id(document.body).getElements('ul.listed-countries li'); for (var i = 0; i < li_arr.length; i++) { country_arr.push(new Country(li_arr[i], map)); } return country_arr; }; SitePager = new Class({ Extends: nl.code.pager.Pager, initialize: function(base_url) { this.parent(base_url); this.scanContent(document.id(document.body)); }, setContent: function(data, text) { this.parent(data, text); }, scanContent: function(root) { nl.code.lightbox.Lightboxer.parseLightboxLinks(this, root, { ajax: { css_class: 'js-ajax-lightbox', overlay_opacity: 0.4, overlay_color: '#000000', show_loading: true, animation_class: LightboxAnimation, autostart_animation: true, autostart_animation_width: 200, autostart_animation_height: 200 } }); if (root == document.id(document.body)) { var slider = new HorizontalSlider(); var map = new Map(); } } });