var clouds = Class.create({cloudContainerHeight: 389,cloudInfo: {},cloudMinSpeed: 100,cloudMaxSpeed: 300,cloudDelayRandomNess: 50,cloudRandomDelay: false,cloudContainerWidth: 0,movableProperties: {'balloon' : {'chance' : 1},'UFO': {'chance' : 5}},movables: {},movableIntervalId: {},cloudAnimation: false,objectAnimation: false,cloudRandomization: true,initialize: function (cloudAnimation, objectAnimation, minSpeed, maxSpeed){this.cloudAnimation = cloudAnimation;this.objectAnimation = objectAnimation;this.cloudMinSpeed = minSpeed;this.cloudMaxSpeed = maxSpeed;this.cloudInfo = $$('div.cloud');this.cloudContainerWidth = $('container').getWidth();$$('.movable').each(function(e){ e.setStyle({left: (this.cloudContainerWidth+e.getWidth()+50)+'px',zIndex: 600});}.bind(this));if(this.cloudRandomization == true){this.randomize();}if(this.cloudAnimation == true){this.animate();}this.activateMovables();},moveClouds: function(cloud){this.cloudInfo.each(function(e, index){var randomSpeed = (Math.floor(Math.random() * (this.cloudMaxSpeed - this.cloudMinSpeed))) + this.cloudMinSpeed;e.setStyle({zIndex: 500-(randomSpeed)});e.speed = randomSpeed;e.delay = Math.floor(Math.random() * this.cloudDelayRandomNess);this.moveCloudAction(e, index);}.bind(this));},moveCloudAction: function(cloud, index){if(this.cloudRandomDelay == true){var cloudDelay = this.cloudInfo[index].delay;} else{var cloudDelay = 0;}this.moveOptions = {x: (0 - (cloud.getWidth() * 2)),y: cloud.getStyle('top').replace('px', ''),mode: 'absolute',transition: Effect.Transitions.linear,duration: this.cloudInfo[index].speed,afterFinish: this.resetClouds.bind(this, cloud, index),delay: cloudDelay};new Effect.Move(cloud, this.moveOptions);},resetClouds: function(cloud, index){cloud.setStyle({ left : (this.cloudContainerWidth+cloud.getWidth()+50)+'px', top: Math.floor(Math.random() * this.cloudContainerHeight)+'px'});this.cloudInfo[index].delay = 0;this.moveCloudAction(cloud, index);},activateMovables: function(){$$('.movable').each(function(e){this.movableIntervalId[e.readAttribute('id')] = setInterval(function(){this.moveMovableAction(e);}.bind(this), (Math.floor(Math.random() * 5000 + 10000)));}.bind(this));},moveMovableAction: function(movable){if(movable.hasClassName('balloonType')){if(this.movableChance('balloon') == true){clearInterval(this.movableIntervalId[movable.readAttribute('id')]);this.moveOptions = {x: (Math.floor(Math.random() * (800 - 0))) + 0,y: -300,mode: 'absolute',transition: Effect.Transitions.linear,afterFinish: this.resetMovable.bind(this, movable),duration: 150,delay:(Math.floor(Math.random() * (20 - 0))) + 0};movable.show();new Effect.Move(movable, this.moveOptions);}} else if(movable.hasClassName('ufoType')){if(this.movableChance('UFO') == true){clearInterval(this.movableIntervalId[movable.readAttribute('id')]);movable.setStyle({top: Math.floor(Math.random() * this.cloudContainerHeight)+'px'});var ufoPos = (Math.floor(Math.random() * (800 - 0))) + 0;this.moveOptions = {x: ufoPos,y: movable.style.top.replace('px', ''),mode: 'absolute',transition: Effect.Transitions.linear,afterFinish: this.moveUfo.bind(this, movable, ufoPos),duration: 2,delay:(Math.floor(Math.random() * (20 - 0))) + 0};movable.show();new Effect.Move(movable, this.moveOptions);}}},movableChance: function(type){if(((Math.floor(Math.random() * (1000 - 0))) + 0) > this.movableProperties[type]['chance']){return true;}return false;},moveUfo: function(ufo, ufoPos){this.moveOptions = {x: (ufoPos - 150),y: -1000,mode: 'absolute',transition: Effect.Transitions.linear,afterFinish: this.resetMovable.bind(this, ufo),duration: 4,delay:3};new Effect.Move(ufo, this.moveOptions);},resetMovable: function(movable){movable.setStyle({left : (this.cloudContainerWidth+movable.getWidth()+50)+'px'});movable.hide();},animate: function(){if(this.objectAnimation){this.activateMovables();}this.moveClouds();},randomize: function(){this.cloudInfo.each(function(e){e.setStyle({left:((Math.floor(Math.random() * ((this.cloudContainerWidth * 2) + -500))) - 500)+'px'});e.appear({duration: 2, delay: Math.floor(Math.random() * 3)});}.bind(this));}});