var Wall=new Class({__target:undefined,init:false,Implements:Options,id:0,coordinates:[],wall:undefined,viewport:undefined,grid:[],minx:0,maxx:0,wallFX:undefined,slideshowInterval:undefined,options:{printCoordinates:false,speed:1000,transition:Fx.Transitions.Quad.easeOut,autoposition:false,draggable:true,inertia:false,invert:false,width:0,height:0,startx:0,starty:0,rangex:[-500,500],rangey:[-500,500],handle:undefined,slideshow:false,showDuration:3000,preload:false,callOnUpdate:Function,callOnChange:Function},initialize:function(b,a){this.setOptions(a);this.__target=b;this.wall=$(this.__target);this.viewport=$(this.__target).getParent()},initWall:function(){this.coordinates=this.calculateCoordinates();if(this.options.preload==true){this.preloadContent()}var b=this.setBoundingBox();this.maxx=b.maxx;this.maxy=b.maxy;this.minx=b.minx;this.miny=b.miny;if(this.init==false){this.wallFX=new Fx.Morph(this.wall,{duration:this.options.speed,transition:this.options.transition,onStart:function(){}.bind(this),onComplete:function(){this.options.callOnUpdate(this.updateWall())}.bind(this)});this.init=true}else{if(this.options.draggable==true){this.wallDrag.detach()}}var a=this.options.handle!=undefined?$(this.options.handle):$(this.__target);$(this.__target).addEvent("click",function(c){c.stopPropagation();this.moved=0}.bind(this));if(this.options.draggable==true){this.wallDrag=$(this.__target).makeDraggable({handle:a,limit:{x:[this.minx,this.maxx],y:[this.miny,this.maxy]},invert:this.options.invert,onStart:function(c,d){clearTimeout(this.periodicalID);this.moved=0;this.xPos=d.page.x;this.yPos=d.page.y}.bind(this),onDrag:function(c,d){this.xspeed=d.page.x-this.xPos;this.yspeed=d.page.y-this.yPos;this.xPos=d.page.x;this.yPos=d.page.y;d.stopPropagation();this.clearSlideShow();if(this.wallFX){this.wallFX.cancel()}this.options.callOnUpdate(this.updateWall());this.moved++}.bind(this),onComplete:function(c,f){f.preventDefault();if(this.options.inertia==true){this.periodicalID=(function(){if(this.options.invert==true){var h=this.wall.getStyle("left").toInt()-this.xspeed;var g=this.wall.getStyle("top").toInt()-this.yspeed}else{var h=this.wall.getStyle("left").toInt()+this.xspeed;var g=this.wall.getStyle("top").toInt()+this.yspeed}if(h<0){this.wall.setStyle("left",Math.max(this.minx,h))}if(g<0){this.wall.setStyle("top",Math.max(this.miny,g))}if(h>0){this.wall.setStyle("left",Math.min(this.maxx,h))}if(g>0){this.wall.setStyle("top",Math.min(this.maxy,g))}this.xspeed*=0.9;this.yspeed*=0.9;this.options.callOnUpdate(this.updateWall());if(Math.abs(this.xspeed)<2&&Math.abs(this.yspeed)<2){var e=this.calculateProximity();this.id=this.getIdFromCoordinates(e.c,e.r);this.codaActiveItem(this.id);this.options.callOnUpdate(this.updateWall());if(this.options.autoposition==true){this.normalizePosition()}clearTimeout(this.periodicalID)}}).periodical(20,this)}if(this.options.autoposition==true&&this.options.inertia==false){if(this.slideshowInterval==undefined||this.options.slideshow==false){this.normalizePosition()}}else{var d=this.calculateProximity();this.id=this.getIdFromCoordinates(d.c,d.r);this.codaActiveItem(this.id)}this.options.callOnUpdate(this.updateWall())}.bind(this)});this.wall.setStyle("cursor","move");this.wallDrag.addEvent("mousedown",function(c){c.stop();clearTimeout(this.periodicalID);c.stopPropagation()}.bind(this))}else{this.wall.setStyles({cursor:"default",position:"absolute"})}this.wall.setStyles({left:this.options.startx*this.options.width,top:this.options.starty*this.options.height});this.options.callOnUpdate(this.updateWall());if(this.options.slideshow==true){this.initSlideshow()}if(this.detectMobile()){this.initMobile()}return this},getMovement:function(){var a=this.moved>0?true:false;this.moved=0;return a},setBoundingBox:function(){var c=this.viewport.getCoordinates();var k=this.options.width;var e=this.options.height;var b=c.width;var j=c.height;var i=Math.ceil(b/k);var a=Math.ceil(j/e);var f=Math.abs(this.options.rangex[0])*k;var d=Math.abs(this.options.rangey[0])*e;
var h=-((Math.abs(this.options.rangex[1]))*k)+b;var g=-((Math.abs(this.options.rangey[1]))*e)+j;return{minx:h,miny:g,maxx:f,maxy:d}},calculateCoordinates:function(){var e=0;var b=[];for(var a=this.options.rangey[0];a<this.options.rangey[1];a++){for(var d=this.options.rangex[0];d<this.options.rangex[1];d++){b[e]={c:d,r:a};if(d==0&&a==0){this.id=e}e++}}return b},getIdFromCoordinates:function(d,a){var f=0;for(var b=this.options.rangey[0];b<this.options.rangey[1];b++){for(var e=this.options.rangex[0];e<this.options.rangex[1];e++){if(e==d&&b==a){return f}f++}}return f},getCoordinatesFromId:function(a){return this.coordinates[a]},getActiveItem:function(){return this.id},calculateProximity:function(){var f=this.wall.getStyle("left").toInt()*-1;var e=this.wall.getStyle("top").toInt()*-1;var a=this.options.width;var d=this.options.height;var c=Math.round(f/a);var b=Math.round(e/d);return{c:c,r:b}},normalizePosition:function(){var a=this.calculateProximity();this.moveTo(a.c,a.r);return},updateWall:function(){var o=[];var e=this.viewport.getCoordinates();var m=this.wall.getCoordinates();var q=this.options.width;var h=this.options.height;var c=e.width;var p=e.height;var l=Math.ceil(c/q);var b=Math.ceil(p/h);var k={left:m.left-e.left,top:m.top-e.top};var a=Math.ceil(-k.left/q)-1;var g=Math.ceil(-k.top/h)-1;for(var f=a;f<=a+l;f++){for(var d=g;d<=g+b;d++){if(this.grid[f]===undefined){this.grid[f]={}}if(this.grid[f][d]===undefined){var n=this.appendTile(f,d);if(n.node!==undefined){o.push(n)}}}}wall_width=m.width;wall_height=m.height;wall_cols=Math.ceil(wall_width/q);wall_rows=Math.ceil(wall_height/h);return o},appendTile:function(b,a){this.grid[b][a]=true;var l=this.options.width;var f=this.options.height;var h=this.options.rangex;var c=this.options.rangey;if(b<h[0]||(h[1])<b){return{}}if(a<c[0]||(c[1])<a){return{}}var k=b*l;var g=a*f;var d=new Element("div").inject(this.wall);d.setProperties({"class":"tile",col:b,row:a,rel:b+"x"+a}).setStyles({position:"absolute",left:k,top:g,width:l,height:f});if(this.options.printCoordinates){d.set("text",b+"x"+a)}return{node:d,x:a,y:b}},preloadContent:function(){var a=[];$each(this.coordinates,function(c){if(this.grid[c.c]===undefined){this.grid[c.c]={}}var b=this.appendTile(c.c,c.r);a.push(b)}.bind(this));this.options.callOnUpdate(a);return a},setCallOnUpdate:function(a){this.options.callOnUpdate=a;return a},setCallOnChange:function(a){this.options.callOnChange=a;return a},initSlideshow:function(){if(this.options.showDuration<this.options.speed){this.options.showDuration=this.options.speed}this.slideshowInterval=this.getAutomaticNext.periodical(this.options.showDuration,this)},getAutomaticNext:function(){this.clearSlideShow();if(this.options.slideshow==true){this.slideshowInterval=this.getAutomaticNext.periodical(this.options.showDuration,this)}1+this.id>this.coordinates.length-1?this.id=0:this.id++;this.moveTo(this.coordinates[this.id].c,this.coordinates[this.id].r)},clearSlideShow:function(){clearTimeout(this.slideshowInterval);this.slideshowInterval=undefined},moveTo:function(e,d){if(e<0){e=Math.max(e,this.options.rangex[0])}if(e>0){e=Math.min(e,this.options.rangex[1])}if(d<0){d=Math.max(d,this.options.rangey[0])}if(d>0){d=Math.min(d,this.options.rangey[1])}this.wallFX.cancel().start({left:Math.max(-(e*this.options.width),this.minx),top:Math.max(-(d*this.options.height),this.miny)});this.id=this.getIdFromCoordinates(e,d);this.codaActiveItem(this.id);var a=this.coordinates[this.id].c+"x"+this.coordinates[this.id].r;var b=$$("#"+this.__target+" div[rel="+a+"]");if(b.length>0){return $$("#"+this.__target+" div[rel="+a+"]")[0]}return false},moveToActive:function(){return this.moveTo(this.coordinates[this.id].c,this.coordinates[this.id].r)},moveToNext:function(){this.clearSlideShow();if(1+this.id<this.coordinates.length){this.id++}return this.moveTo(this.coordinates[this.id].c,this.coordinates[this.id].r)},moveToPrev:function(){this.clearSlideShow();if((this.id-1)>=0){this.id--}return this.moveTo(this.coordinates[this.id].c,this.coordinates[this.id].r)
},getListLinksPoints:function(b){var a=[];$each(this.coordinates,function(f,d){var c=new Element("a.wall-item-coda[html="+(1+d)+"][href=#"+(1+d)+"]");c.addEvent("click",function(e){this.clearSlideShow();this.id=d;this.codaActiveItem(d);e.stop();this.moveTo(f.c,f.r)}.bind(this));c.inject($(b));a.push(c)}.bind(this));this.coda_target=b;this.coda_items=a;this.codaActiveItem(0);return a},codaActiveItem:function(a){this.options.callOnChange(a);if(this.coda_target){$each(this.coda_items,function(c,b){c.removeClass("wall-item-current")});this.coda_items[a].addClass("wall-item-current");return this.coda_items[a]}},detectMobile:function(){var b=navigator.userAgent;var a=/iPad/i.test(b)||/iPhone OS 3_1_2/i.test(b)||/iPhone OS 3_2_2/i.test(b)||/iPhone/i.test(b)||/iPod/i.test(b);return a},initMobile:function(){this.wall.__root=this;this.wall.addEvent("touchstart",function(a){if(a){a.stop()}this.__root.clearSlideShow();this._startXMouse=a.page.x;this._startYMouse=a.page.y;this._startLeft=this.getStyle("left").toInt();this._startTop=this.getStyle("top").toInt();this._width=this.getStyle("width").toInt();this._height=this.getStyle("height").toInt()});this.wall.addEvent("touchmove",function(f){if(f){f.stop()}var d=this._startXMouse-f.page.x;var b=this.getStyle("left").toInt();if(b>Math.min(this.__root.minx,0)){endx=Math.min(this._startLeft-d,this.__root.maxx)}else{endx=Math.max(this.__root.minx,this._startLeft-d)}if(endx<=this.__root.maxx){this.setStyle("left",endx)}var c=this._startYMouse-f.page.y;var a=this.getStyle("top").toInt();if(a>Math.min(this.__root.miny,0)){endy=Math.min(this._startTop-c,this.__root.maxy)}else{endy=Math.max(this.__root.miny,this._startTop-c)}if(endy<=this.__root.maxy){this.setStyle("top",endy)}this.__root.options.callOnUpdate(this.__root.updateWall())});this.wall.addEvent("touchend",function(b){if(this.options.autoposition==true){if(this.slideshowInterval==undefined||this.options.slideshow==false){this.normalizePosition()}}else{var a=this.calculateProximity();this.id=this.getIdFromCoordinates(a.c,a.r);this.codaActiveItem(this.id)}this.options.callOnUpdate(this.updateWall())}.bind(this))}});var APP={};APP.mooClouds=new Class({Implements:Options,dynCloudsNum:0,statCloudsNum:0,options:{maxDynClouds:0,maxStatClouds:0,cloudsClassesNum:1,cloudsClasses:"clouds",containerID:null,contX:null,contY:null},cContSizeX:0,cContSizeY:0,cCont:null,initialize:function(a){this.setOptions(a);if(this.options.containerID!=null){this.cCont=$(this.options.containerID);if(this.cCont!=null){this.setContainer()}else{alert("Oops! There was an error with the containers IDs!")}}else{alert("Oops! There was an error with the containers IDs!")}},addDynamicCloud:function(){if(this.dynCloudsNum>=this.options.maxDynClouds){return false}else{var b=$random(1,this.options.cloudsClassesNum);var h=this.getCloud(b);var f=$random(200,300);f=f*100;var a=this.cContSizeX;var g=this.cContSizeY;move=new Fx.Morph(h,{duration:f,onComplete:function(){var j=$random(200,300);j=j*100;var i=$random(0,a);var c=$random(0,g);c=0;this.start({left:i,top:c})}});this.cCont.adopt(h);var e=$random(0,this.cContSizeX);var d=$random(0,this.cContSizeY);d=0;move.start({left:e,top:d});this.dynCloudsNum++;return true}},addStaticCloud:function(){if(this.statCloudsNum>=this.options.maxStatClouds){return false}else{var a=$random(1,this.options.cloudsClassesNum);var b=this.getCloud(a);this.cCont.adopt(b);this.statCloudsNum++;return true}},getCloud:function(a){var e=new Element("div");e.addClass(this.options.cloudsClasses);e.addClass(this.options.cloudsClasses+""+a);var d=$random(0,this.cContSizeX);var b=$random(100,this.cContSizeY);e.setStyle("left",d);e.setStyle("top",b);return e},setContainer:function(){this.cCont.setStyle("position","absolute");this.cCont.setStyle("z-index",0);this.cCont.setStyle("overflow","hidden");var a=0;if(this.options.contX==null){a=this.cCont.getParent().getSize().x}else{a=this.options.contX}this.cCont.setStyle("width",a);var b=0;if(this.options.contY==null){b=this.cCont.getParent().getSize().y}else{b=this.options.contY}this.cCont.setStyle("height",b);this.cContSizeX=this.cCont.getSize().x;this.cContSizeY=this.cCont.getSize().y},generateClouds:function(){while(this.addDynamicCloud()){this.addDynamicCloud()}while(this.addStaticCloud()){this.addStaticCloud()}},destroyClouds:function(){$$("."+this.options.cloudsClasses).destroy();this.dynCloudsNum=0;this.statCloudsNum=0},pauseClouds:function(){var a=$$("."+this.options.cloudsClasses);a=a}});APP.PillMenu=new Class({Implements:[Options,Events],options:{vertical:0,pillClass:"pill",selectedClass:"selected",duration:"short",transition:Fx.Transitions.Linear},initialize:function(b,a){this.setOptions(a);this.element=document.id(b);this.pill=this.element.getElement(".pill");if(!this.pill){this.pill=new Element("div",{"class":this.options.pillClass,style:"position:absolute; z-index:1;"});this.pill.inject(this.element,"top")}this.pillFx=new Fx.Morph(this.pill,{duration:this.options.duration,link:"cancel",transition:this.options.transition});this.start()},start:function(){this.fireEvent("start");this.element.getElements("li").each(function(b,a){if(b.hasClass(this.options.selectedClass)){this.selected=b;this.pill.setStyles({opacity:0,width:b.getStyle("width"),height:b.getStyle("height"),left:b.getPosition().x-this.element.getPosition().x,top:b.getPosition().y-this.element.getPosition().y})}b.addEvent("mouseenter",function(){this.fireEvent("change");if(!this.options.vertical){this.pillFx.start({opacity:1,left:[this.pill.getStyle("left"),b.getPosition().x-this.element.getPosition().x],width:[this.pill.getStyle("width"),b.getStyle("width")]})}else{this.pillFx.start({opacity:1,top:[this.pill.getStyle("top"),b.getPosition().y-this.element.getPosition().y],height:[this.pill.getStyle("height"),b.getStyle("height")]})}}.bind(this))}.bind(this));this.element.addEvent("mouseleave",function(){if(!this.options.vertical){this.pillFx.start({opacity:0,left:[this.pill.getStyle("left"),this.selected.getPosition().x-this.element.getPosition().x],width:[this.pill.getStyle("width"),this.selected.getStyle("width")]})}else{this.pillFx.start({opacity:0,top:[this.pill.getStyle("top"),this.selected.getPosition().y-this.element.getPosition().y],height:[this.pill.getStyle("height"),this.selected.getStyle("height")]})
}}.bind(this))}});APP.init_events=function(){if($$("#nav.pillMenu ul li.selected")){var a=false;$$("#nav.pillMenu ul li").addEvent("click",function(h){new Event(h).stop();var f=this.get("class");if(f!="selected"){$("main_content").empty();var c=$$("#nav.pillMenu ul li.selected").getLast();c.removeProperty("class");this.set("class","selected");if(this.get("text").trim()==="Contact"&&a===false){APP.init_e_post();a=true}var g=this.get("text").trim();var d=$$("#left_place img").getLast();$("left_place").fade("out");$("main_content").fade("out");var b=d.get("src").replace(c.get("text").trim(),g);(function(){if(g==="Reference"){$("main_content").set("load",{onSuccess:function(){APP.init_wall()}});$("main_content").load("reference.html")}else{$("main_content").set("html",$(g).get("html"))}var e=Asset.image(b,{onLoad:function(){$("left_place").fade("in");$("main_content").fade("in")}});e.replaces(d)}).delay(500)}})}};APP.init_e_post=function(){var c="m&#97;&#105;lt&#111;:";var f="";var g="";var e="href=";var a="&#115;n&#101j&#64;";a=a+"g&#109;x&#46;d&#101;";var d=("<a "+e+"'"+c+a+f+"'"+g+">");d=d+a+"</a>";var b=$$("span#e_post");b.set("html",d);b.setStyle("display","inline")};APP.init_html5_header=function(){var d=false;switch(Browser.name){case"safari":d="webkit";break;case"chrome":d="webkit";break;case"firefox":d="moz";break;case"opera":d="o";break;case"ie":d="ms";break}$("headline").setStyle("background-image",'url("img/trans.gif")');var c=new Element("div#header1.header5");c.inject($("headline"));var b=new Element("div#header2.header5");b.inject($("headline"));var a=new Element("div#header3.header5");a.inject($("headline"));$("headline").addEvents({mouseenter:function(f){c.fade(1).setStyle("-"+d+"-transform","rotate(360deg)");(function(){b.fade(1).setStyle("-"+d+"-transform","rotate(360deg)")}).delay("300");(function(){a.fade(1).setStyle("-"+d+"-transform","rotate(360deg)")}).delay("600")},mouseleave:function(f){c.fade(1).setStyle("-"+d+"-transform","rotate(350deg)");(function(){b.fade(1).setStyle("-"+d+"-transform","rotate(350deg)")}).delay("500");(function(){a.fade(1).setStyle("-"+d+"-transform","rotate(350deg)")}).delay("1000")}})};APP.initialize_page=function(){$("container").fade("hide");var a=new Element("div#center_place.grid_9.grey_80_50.h_400",{html:'<div id="main_content"> &nbsp; </div>'}).inject($("hidden_content"),"before");$("main_content").set("html",$("Home").get("html"));$$("div#hidden_content").setStyle("display","none");var d=document.getCoordinates().height;$$(".stripes").map(function(){this.setStyle("height",d)});var b=new APP.mooClouds({maxDynClouds:4,maxStatClouds:6,cloudsClassesNum:4,cloudsClasses:"stripes",containerID:"container",contX:null,contY:null});b.generateClouds();window.addEvent("resize",function(g){$("container").fade("out");b.destroyClouds();var f=document.getSize();$("container").setStyles({height:f.y,width:f.x});$$(".stripes").map(function(){this.setStyle("height",f.y)});b.generateClouds();$("container").fade("in")});if(Browser.name=="ie"&&Browser.version.toInt()<8){}else{var c=new APP.PillMenu("nav",{vertical:0,duration:500,transition:Fx.Transitions.Back.easeOut})}$("wrapper").setStyle("visibility","visible");(function(){$("container").fade("in")}).delay(1000)};APP.init_wall=function(){var b=$$("#coda-list a.wall-item-coda");if(b.length===0){var a=new Wall("wall",{draggable:true,autoposition:true,slideshow:true,speed:1600,showDuration:5600,inertia:true,preload:true,width:540,height:350,rangex:[0,1],rangey:[0,5]});callBack=function(c){c.each(function(f,d){f.node.set("html",$("ref_"+((f.x)+1)).get("html"))})};a.setCallOnUpdate(callBack);a.initWall();a.getListLinksPoints("coda-list");$("wall").addEvents({mousedown:function(c){this.setStyle("cursor"," url(img/closed_grab.png), move")},mouseup:function(c){this.setStyle("cursor"," url(img/open_grab.png), move")}})}};window.addEvent("domready",function(){$("wrapper").setStyle("visibility","hidden");APP.initialize_page();APP.init_events();APP.init_html5_header()});
