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(id,options){this.setOptions(options);this.__target=id;this.wall=$(this.__target);this.viewport=$(this.__target).getParent();},initWall:function(){this.coordinates=this.calculateCoordinates();if(this.options.preload==true)this.preloadContent();var bb=this.setBoundingBox();this.maxx=bb.maxx;this.maxy=bb.maxy;this.minx=bb.minx;this.miny=bb.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 handler=this.options.handle!=undefined?$(this.options.handle):$(this.__target);$(this.__target).addEvent("click",function(e){e.stopPropagation();this.moved=0;}.bind(this)) if(this.options.draggable==true){this.wallDrag=$(this.__target).makeDraggable({handle:handler,limit:{x:[this.minx,this.maxx],y:[this.miny,this.maxy]},invert:this.options.invert,onStart:function(el,e){clearTimeout(this.periodicalID);this.moved=0;this.xPos=e.page.x;this.yPos=e.page.y;}.bind(this),onDrag:function(el,e){this.xspeed=e.page.x-this.xPos;this.yspeed=e.page.y-this.yPos;this.xPos=e.page.x;this.yPos=e.page.y;e.stopPropagation();this.clearSlideShow();if(this.wallFX)this.wallFX.cancel();this.options.callOnUpdate(this.updateWall());this.moved++;}.bind(this),onComplete:function(el,e){e.preventDefault();if(this.options.inertia==true){this.periodicalID=(function(){if(this.options.invert==true){var finX=this.wall.getStyle("left").toInt()-this.xspeed;var finY=this.wall.getStyle("top").toInt()-this.yspeed;}else{var finX=this.wall.getStyle("left").toInt()+this.xspeed;var finY=this.wall.getStyle("top").toInt()+this.yspeed;} if(finX<0)this.wall.setStyle("left",Math.max(this.minx,finX));if(finY<0)this.wall.setStyle("top",Math.max(this.miny,finY));if(finX>0)this.wall.setStyle("left",Math.min(this.maxx,finX));if(finY>0)this.wall.setStyle("top",Math.min(this.maxy,finY));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 p=this.calculateProximity();this.id=this.getIdFromCoordinates(p.c,p.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 p=this.calculateProximity();this.id=this.getIdFromCoordinates(p.c,p.r);this.codaActiveItem(this.id);} this.options.callOnUpdate(this.updateWall());}.bind(this)});this.wall.setStyle("cursor","move");this.wallDrag.addEvent("mousedown",function(e){e.stop();clearTimeout(this.periodicalID);e.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 m=this.moved>0?true:false;this.moved=0;return m;},setBoundingBox:function(){var vp_coordinate=this.viewport.getCoordinates();var tile_w=this.options.width;var tile_h=this.options.height;var vp_w=vp_coordinate.width;var vp_h=vp_coordinate.height;var vp_cols=Math.ceil(vp_w/tile_w);var vp_rows=Math.ceil(vp_h/tile_h);var maxx=Math.abs(this.options.rangex[0])*tile_w;var maxy=Math.abs(this.options.rangey[0])*tile_h;var minx=-((Math.abs(this.options.rangex[1]))*tile_w)+vp_w;var miny=-((Math.abs(this.options.rangey[1]))*tile_h)+vp_h;return{"minx":minx,"miny":miny,"maxx":maxx,"maxy":maxy}},calculateCoordinates:function(){var indice=0;var coordinates=[];for(var r=this.options.rangey[0];rthis.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(c,r){if(c<0)c=Math.max(c,this.options.rangex[0]);if(c>0)c=Math.min(c,this.options.rangex[1]);if(r<0)r=Math.max(r,this.options.rangey[0]);if(r>0)r=Math.min(r,this.options.rangey[1]);this.wallFX.cancel().start({'left':Math.max(-(c*this.options.width),this.minx),'top':Math.max(-(r*this.options.height),this.miny)});this.id=this.getIdFromCoordinates(c,r);this.codaActiveItem(this.id);var name=this.coordinates[this.id].c+"x"+this.coordinates[this.id].r;var item=$$("#"+this.__target+" div[rel="+name+"]");if(item.length>0)return $$("#"+this.__target+" div[rel="+name+"]")[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=0){this.id--;} return this.moveTo(this.coordinates[this.id].c,this.coordinates[this.id].r)},getListLinksPoints:function(id_target){var items=[];$each(this.coordinates,function(e,i){var a=new Element("a.wall-item-coda[html="+(1+i)+"][href=#"+(1+i)+"]");a.addEvent("click",function(evt){this.clearSlideShow();this.id=i;this.codaActiveItem(i);evt.stop();this.moveTo(e.c,e.r);}.bind(this)) a.inject($(id_target));items.push(a);}.bind(this)) this.coda_target=id_target;this.coda_items=items;this.codaActiveItem(0);return items;},codaActiveItem:function(i){this.options.callOnChange(i);if(this.coda_target){$each(this.coda_items,function(e,i){e.removeClass("wall-item-current");}) this.coda_items[i].addClass("wall-item-current");return this.coda_items[i];}},detectMobile:function(){var ua=navigator.userAgent;var isiPad=/iPad/i.test(ua)||/iPhone OS 3_1_2/i.test(ua)||/iPhone OS 3_2_2/i.test(ua)||/iPhone/i.test(ua)||/iPod/i.test(ua) return isiPad;},initMobile:function(){this.wall.__root=this this.wall.addEvent('touchstart',function(e){if(e)e.stop();this.__root.clearSlideShow();this._startXMouse=e.page.x;this._startYMouse=e.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(e){if(e)e.stop();var _deltax=this._startXMouse-e.page.x;var _x=this.getStyle("left").toInt();if(_x>Math.min(this.__root.minx,0)){endx=Math.min(this._startLeft-_deltax,this.__root.maxx)}else{endx=Math.max(this.__root.minx,this._startLeft-_deltax)} if(endx<=this.__root.maxx)this.setStyle("left",endx);var _deltay=this._startYMouse-e.page.y;var _y=this.getStyle("top").toInt();if(_y>Math.min(this.__root.miny,0)){endy=Math.min(this._startTop-_deltay,this.__root.maxy)}else{endy=Math.max(this.__root.miny,this._startTop-_deltay)} if(endy<=this.__root.maxy)this.setStyle("top",endy);this.__root.options.callOnUpdate(this.__root.updateWall());});this.wall.addEvent('touchend',function(e){if(this.options.autoposition==true){if(this.slideshowInterval==undefined||this.options.slideshow==false)this.normalizePosition();}else{var p=this.calculateProximity();this.id=this.getIdFromCoordinates(p.c,p.r);this.codaActiveItem(this.id);} this.options.callOnUpdate(this.updateWall());}.bind(this));}}); var Site=new Class({Implements:Options,options:{},initialize:function(options){this.setOptions(options);var section=$$("body")[0].getProperty("class");if(typeof(this[section])=="function")this[section]();},home:function(){new SmoothScroll({duration:1000,transition:Fx.Transitions.Sine.easeOut});/*this.setLikeButton("content-like");*/this.initWallHeader("wall-mask","overlay");this.initBigWall();this.initCodaWall();this.initCreditsWall();this.initDonateWall();},examples:function(){this.initWallHeader("wall-mask-example","overlay-example");},thanks:function(){this.initWallHeader("wall","overlay");},error:function(){this.initWallHeader("wall","overlay");},initCreditsWall:function(){var dataCredits=['I grew up in Vancouver. I like it here. I also like new ideas. Art, culture, music, photography, design… whatever. If there’s new thinking around an old problem, it makes me happy.

\ In school, I found I could express myself a lot better through designing and taking pictures than I ever could as a dentist or something.','Lucky for everyone’s welfare, I stuck with creative services. \ At the end of the day, I’m young, passionate and just myself. I hope that comes across in my work.
Bye.

\

Other links

\ Docofolio.com, \ Deviantart.com, \ Behance.net, \ Twitter.com'] var wallCredits=new Wall("wall-credits",{"draggable":true,"autoposition":true,"width":300,"height":234,"rangex":[0,2],"rangey":[0,1],callOnUpdate:function(items){items.each(function(e,i){var a=new Element("p[html="+dataCredits[e.y]+"]");a.inject(e.node);})}});wallCredits.initWall();},initDonateWall:function(){var dataDonate=['

\ Cup \

','

\ Cup \

','

\ Cup \

','

\ Cup \

'] var wallDonate=new Wall("wall-donate",{"draggable":true,"autoposition":true,"width":140,"height":170,"startx":-2,"rangex":[0,4],"rangey":[0,1],callOnUpdate:function(items){items.each(function(e,i){var a=new Element("div[html="+dataDonate[e.y]+"]");a.inject(e.node).fade("hide").fade("in");})}});wallDonate.initWall();},initCodaWall:function(){var template='
{title}{type}
';var big_template='

{title}

{html}
View example

';var callOnUpdate=function(items){items.each(function(e,i){var a=new Element("div");a.set("html",this.templating(big_template,examples[e.y]));a.inject(e.node);}.bind(this))}.bind(this);var wall=new Wall("wall-examples",{"draggable":true,"autoposition":true,"inertia":true,"preload":true,"speed":1500,"showDuration":2000,"slideshow":false,"transition":Fx.Transitions.Sine.easeInOut,"width":940,"height":375,"rangex":[0,examples.length],"rangey":[0,1],callOnUpdate:callOnUpdate});wall.initWall();wall.getListLinksPoints("coda-list");var wallCommand=new Wall("wall-coda",{"draggable":true,"inertia":true,"autoposition":true,"preload":true,"speed":700,"transition":Fx.Transitions.Sine.easeOut,"width":177,"height":165,"rangex":[0,examples.length],"rangey":[0,1],callOnUpdate:function(items){items.each(function(e,i){var a=new Element("div");a.set("html",this.templating(template,examples[e.y]));a.inject(e.node);a.addEvent("mouseover",function(e){a.setStyle("cursor","pointer")});a.addEvent("click",function(e){var movement=wallCommand.getMovement();if(movement){e.stop();}else{var c=this.getParent().getProperty("col").toInt();wall.moveTo(c,0);}})}.bind(this))}.bind(this)});$("goNext").addEvent("click",function(e){e.stop();wall.moveToNext();}) $("goPrev").addEvent("click",function(e){e.stop();wall.moveToPrev();}) wallCommand.initWall();myChange=function(id){var c=id;wallCommand.moveTo(wallCommand.coordinates[c].c,wallCommand.coordinates[c].r);} wall.setCallOnChange(myChange) $$("#coda-list a").each(function(a,i){a.addEvent("click",function(e){var c=this.get("text").toInt()-1;wallCommand.moveTo(wallCommand.coordinates[c].c,wallCommand.coordinates[c].r);})});},initBigWall:function(){var maxLength=185;var counterFluid=1;var wallFluid=new Wall("wall-fluid",{"draggable":true,"inertia":true,"width":150,"height":150,"rangex":[-130,130],"rangey":[-130,130],callOnUpdate:function(items){items.each(function(e,i){var a=new Element("img[src=/public/images/middle/"+counterFluid+".jpg]");a.inject(e.node).fade("hide").fade("in");e.node.setStyle("background","url(/application/assets/images/thewall-null-150x150.gif) no-repeat center center");counterFluid++;if(counterFluid>maxLength)counterFluid=1;})}});wallFluid.initWall();},initWallHeader:function(id,handle){var maxLengthMSK=185;var counterMSK=1;var wallMSK=new Wall(id,{"draggable":true,"handle":handle,"inertia":true,"width":60,"height":60,"startx":0,"starty":0,"rangex":[-100,100],"rangey":[-100,100],callOnUpdate:function(items){items.each(function(e,i){var a=new Element("img[src=/public/images/small/"+counterMSK+".jpg]");a.inject(e.node);counterMSK++;if(counterMSK>maxLengthMSK)counterMSK=1;})}});wallMSK.initWall();},setLikeButton:function(id){$(id).set("html",'');},templating:function(s,d){for(var p in d) s=s.replace(new RegExp('{'+p+'}','g'),d[p]);return s;}});window.addEvent("domready",function(){var site=new Site();});