if (typeof $G == 'undefined') {
	var $G = {};
}

$G.fx = new (function() {
	var self = this;

	self.items = {};

	jQuery.easing.def = "easeInOutCirc";
	self.sSpeed = 'slow';
	self.sEasing = 'easeInOutCirc';
	self.fSpeed = 'fast';

	self.toggleBox = function( box ) {
		if (typeof self[box] == 'undefined') {
			return false;
		}
		if (self[box].isOpen()) {
			self[box].disappear();
		} else {
			self[box].open();
		}
	};

	self.allClose = function() {
		for (x in self.items) {
			self.items[x].removeClass('open');
		}
	}

         self.getNews = function() {
		if (typeof self.items.news == 'undefined') {
			self.items.news = jQuery("#newsBox");
		}
		return self.items.news;
	}

         self.getStory = function() {
		if (typeof self.items.story == 'undefined') {
			self.items.story = jQuery("#storyBox");
		}
		return self.items.story;
	}
	self.getPortfolio = function() {
		if (typeof self.items.portfolio == 'undefined') {
			self.items.portfolio = jQuery("#portfBox");
		}
		return self.items.portfolio;
	}
	self.getServices = function() {
		if (typeof self.items.services == 'undefined') {
			self.items.services = jQuery("#servicesBox");
		}
		return self.items.services;
	}
         self.getMedia = function() {
		if (typeof self.items.media == 'undefined') {
			self.items.media = jQuery("#mediaBox");
		}
		return self.items.media;
	}






	self.story = {
		isOpen: function() {
			return self.getStory().hasClass('open');
		},
		open: function() {
                         self.getNews()
				.fadeOut(self.fSpeed );
                         self.getPortfolio()
				.fadeOut(self.fSpeed );
			self.getServices()
				.fadeOut(self.fSpeed );
                         self.getMedia()
				.fadeOut(self.fSpeed );
                         self.allClose();
			self.getStory()
				.prev().animate({ top: '-418px' }, self.sSpeed, self.sEasing).end()
				.animate({ top: '-20px' }, self.sSpeed, self.sEasing, self.story.appear )
				.addClass("open");
			self.story.nudgeUp();
		},
		close: function() {
                         self.getStory()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing).end()
				.animate({ top: '0' }, self.sSpeed, self.sEasing )
				.removeClass("open");
			self.story.nudgeDn();
                         self.getNews()
				.fadeIn(self.sEasing );
		},
		appear: function() {
			self.getStory()
				.fadeIn(self.fSpeed);
		},
		disappear: function() {
			self.getStory()
				.fadeOut(self.fSpeed, self.story.close );

		},
		nudgeUp: function (lines) {
			self.getPortfolio()
				.prev().animate({ top: '-'+self.getPortfolio().prev().height() }, self.sSpeed, self.sEasing);
			self.getServices()
				.prev().animate({ top: '-'+self.getServices().prev().height() }, self.sSpeed, self.sEasing);
			self.getMedia()
				.prev().animate({ top: '-'+self.getMedia().prev().height() }, self.sSpeed, self.sEasing);
		},
		nudgeDn: function (lines) {
			self.getPortfolio()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
			self.getServices()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
                         self.getMedia()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
		}
	};
	self.portfolio = {
		isOpen: function() {
			return self.getPortfolio().hasClass('open');
		},
		open: function() {
                         self.getNews()
				.fadeOut(self.fSpeed );
                         self.getStory()
				.fadeOut(self.fSpeed );
			self.getServices()
				.fadeOut(self.fSpeed );
                         self.getMedia()
				.fadeOut(self.fSpeed );
			self.allClose();
			self.getPortfolio()
				.prev().animate({ top: '-455px' }, self.sSpeed, self.sEasing).end()
                                 .animate({ top: '0px' }, self.sSpeed, self.sEasing, self.portfolio.appear )
				.addClass("open");
			self.portfolio.nudgeUp();
		},
		close: function() {
			self.getPortfolio()
				.removeClass("open");
			self.story.open();
		},
		appear: function() {

                         self.getPortfolio()
				.fadeIn(self.fSpeed);
		},
		disappear: function() {
			self.getPortfolio()
				.fadeOut(self.fSpeed, self.portfolio.close );
		},
		nudgeUp: function (lines) {
			self.getStory()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
                         self.getServices()
				.prev().animate({ top: '-'+self.getServices().prev().height() }, self.sSpeed, self.sEasing);
			self.getMedia()
				.prev().animate({ top: '-'+self.getMedia().prev().height() }, self.sSpeed, self.sEasing);
		},
		nudgeDn: function (lines) {
			self.getStory()
				.prev().animate({ top: '-424px' }, self.sSpeed, self.sEasing);
			self.getServices()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
                         self.getMedia()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
		}
	};
	self.services = {
		isOpen: function() {
			return self.getServices().hasClass('open');
		},
		open: function() {
                         self.getNews()
				.fadeOut(self.fSpeed );
                         self.getPortfolio()
				.fadeOut(self.fSpeed );
			self.getStory()
				.fadeOut(self.fSpeed );
                         self.getMedia()
				.fadeOut(self.fSpeed );
			self.allClose();
			self.getServices()
				.prev().animate({ top: '-455px' }, self.sSpeed, self.sEasing).end()
				.animate({ top: '40px' }, self.sSpeed, self.sEasing, self.services.appear )
				.addClass("open");
			self.services.nudgeUp();
		},
		close: function() {
			self.getServices()
				.removeClass("open");
			self.portfolio.open();
		},
		appear: function() {
			self.getServices()
				.fadeIn(self.fSpeed);
		},
		disappear: function() {
			self.getServices()
				.fadeOut(self.fSpeed, self.services.close );
		},
		nudgeUp: function (lines) {
			self.getStory()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
			self.getPortfolio()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
                         self.getMedia()
				.prev().animate({ top: '-60px' }, self.sSpeed, self.sEasing);
		},
                 nudgeDn: function (lines) {
			self.getPortfolio()
				.prev().animate({ top: '-424px' }, self.sSpeed, self.sEasing);
			self.getStory()
				.prev().animate({ top: '-424px' }, self.sSpeed, self.sEasing);
                         self.getMedia()
				.prev().animate({ top: '0' }, self.sSpeed, self.sEasing);
		}
	};


self.media = {
		isOpen: function() {
			return self.getMedia().hasClass('open');
		},
		open: function() {
                         self.getNews()
				.fadeOut(self.fSpeed );
                         self.getPortfolio()
				.fadeOut(self.fSpeed );
			self.getStory()
				.fadeOut(self.fSpeed );
			self.getServices()
				.fadeOut(self.fSpeed );
			self.allClose();
			self.getMedia()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing).end()
				.animate({ top: '0px' }, self.sSpeed, self.sEasing, self.media.appear )
				.addClass("open");
			self.media.nudgeUp();
		},
		close: function() {
			self.getMedia()
				.removeClass("open");
			self.services.open();
		},
		appear: function() {
			self.getMedia()
				.fadeIn(self.fSpeed);
		},
		disappear: function() {
			self.getMedia()
				.fadeOut(self.fSpeed, self.media.close );
		},
		nudgeUp: function (lines) {
			self.getStory()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
			self.getPortfolio()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
                         self.getServices()
				.prev().animate({ top: '-480px' }, self.sSpeed, self.sEasing);
		}
	};


	return self;
})();
