var menu = 'divisions-menu';
var container;
var background = 'div#header div.divisions h3';
var divisions = 'div#header div.divisions ul li';
var currentDivision = 'div#header div.divisions ul li.on';
var highlightedDivision = 'div#header div.divisions ul li.highlight';
var divisionsLink = 'div#header div.menu ul li.divisions a'; 
var openingMenu = false;
var siteURL = 'http://www.plotmulti.com/beta/';
var latest = 'latest';
var caseStudies = 'case-studies';
var latestItems = 'div#latest ul.slider-contents li';
var caseStudiesItems = 'div#case-studies ul.slider-contents li';
var latestControls = 'div.latest ul.slider-controls li';
var caseStudiesControls = 'div.case-studies ul.slider-controls li';

var commerceCapabilities = 'commerce-capabilities';
var commerceCapabilitiesItems = 'div.capabilities ul.commerce li';

var interactiveCapabilities = 'interactive-capabilities';
var interactiveCapabilitiesItems = 'div.interactive ul.capabilities li';
var interactiveMore = 'div.interactive ul.capabilities li p a.more';


var bureauLanding = 'bureau-landing';
var bureauItems = 'div#bureau-landing ul li';
var bureauItemsMore = 'div#bureau-landing ul li p a.more';
var bureauApi = 'div#bureau-landing ul li.api';
var bureauSeo = 'div#bureau-landing ul li.seo';
var bureauCms = 'div#bureau-landing ul li.cms';
var bureauWidget = 'div#bureau-landing ul li.widget';
var bureauSocial = 'div#bureau-landing ul li.social';
var bureauTransact = 'div#bureau-landing ul li.transact';
var bureauStreaming = 'div#bureau-landing ul li.streaming';

var landingSlider = 'landing-slider';
var landingSliderItems = 'div#landing-slider div.slides div.slide';
var landingSliderPrev = 'div.bigbox div.slideshow-controls ul li.prev a';
var landingSliderNext = 'div.bigbox div.slideshow-controls ul li.next a';
var slideshowThumbs = 'slideshow-thumbs';
var bigboxSlideThumbs = 'div.bigbox div.slideshow-thumbs a';
var bigboxSlideThumbCurrent = 'div.bigbox div.slideshow-thumbs a.current';
var sliding = false;
var slideSpeed = 6000;
var scrollTimer;

var blog = 'blog';
var shareToggle = 'div.blog div.blog-item div.options ul li.share a';
var shareBox = 'div.blog div.blog-item div.share';
var commentExpandAllOpen = false;
var commentExpandAllToggle = 'div.blog div.comments div.heading div.options ul li.expand-collapse a';
var commentReplies = 'div.blog div.comments ol li.discussion div.replies';
var commentRepliesToggle = 'div.blog div.comments div.options ul li.replies a';

var portfolioSlider = 'portfolio-slider';
var portfolioSliderControls = 'portfolio-slider-controls';

function openMenu() {
	if (!container.hasClass('transition')) {
		container.addClass('transition');
		openingMenu = true;
		$$(divisions).morph({'height' : 40, 'opacity' : [0, 1]});
		$$(currentDivision).morph({'opacity' : 1});
		$$(background).tween('opacity', [0, 1]);
	}
}

function closeMenu() {
	if (container.hasClass('open')) {
		openingMenu = false;
		$$(highlightedDivision).removeClass('highlight');
		container.removeClass('open');
		container.addClass('transition');
		$$(background).tween('opacity', [1, 0]);
		$$(divisions).morph({'height' : 0, 'opacity' : [1, 0]});
		$$(currentDivision).morph({'opacity' : 1});
	}
}

function highlightDivision(division) {
	$$(highlightedDivision).removeClass('highlight');
	switch(division) {
		case 0:
			$$('div#header div.divisions ul li.developers').addClass('highlight');
			break;
		case 1:
			$$('div#header div.divisions ul li.commerce').addClass('highlight');
			break;
		case 2:
			$$('div#header div.divisions ul li.interactive').addClass('highlight');
			break;
		case 3:
			$$('div#header div.divisions ul li.properties').addClass('highlight');
			break;
		case 4:
			$$('div#header div.divisions ul li.motion').addClass('highlight');
			break;
	}
}

function cubeClick(division) {
	switch(division) {
		case 0:
			window.location =  siteURL + 'developers/';
			break;
		case 1:
			window.location = siteURL + 'commerce/';
			break;
		case 2:
			window.location = siteURL + 'interactive/';
			break;
		case 3:
			window.location = siteURL + 'properties/';
			break;
		case 4:
			window.location = siteURL + 'motion/';
			break;
	}
}




window.addEvent('domready', function() {

	if ($(menu)) {
		container = $(menu).getParent();

		// Inserting pandora's box
		var flashvars = {};
		var params = {allowscriptaccess:"sameDomain", allowFullScreen:"false", wmode:"transparent", menu:"false"};
		var attributes = {id:"pandoras-box-swf", name:"pandoras-box-swf"};
		swfobject.embedSWF("http://www.plotmulti.com/beta/swfs/plot-pandoras-box.swf", "pandoras-box-swf", "180", "180", "9.0.0", "swfobject/expressInstall.swf", flashvars, params, attributes);

		// Menu functionality
		$$(background).set('tween', {duration: 500, onComplete: function() {
			if (openingMenu) {
				container.addClass('open');
				container.removeClass('transition');
				$$(divisions).setStyle('opacity', 1);
				$$(divisions).setStyle('height', 40);
			}
		}});
	
		$$(divisions).each(function(el, index) {
	
			el.set('morph', {duration: 400, onComplete: function() {
				if (!openingMenu) {
					container.removeClass('transition');
				}
			}});
	
			el.addEvent('click', function(e){
				if (!container.hasClass('open')) {
					e.stop();
					openMenu();
				}
			});
			
			el.store('hoverAnimationIn', false);
			el.store('hoverAnimationOut', false);
			
			el.set('tween', {duration: 150, onComplete: function() {
				if (el.retrieve('hoverAnimationOut')) {
					el.removeClass('highlight');
					el.setStyle('height', 40);
					el.store('hoverAnimationOut', false);
				}
				else {
					el.store('hoverAnimationIn', false);
				}
			}});
	
		});	

		window.addEvent('click', function(){
			closeMenu();
		});

		$$(divisionsLink).addEvent('click', function(e){
			e.stop();
			if (container.hasClass('open')) closeMenu();
			else openMenu();
		});	
		
		
		$$(divisions).addEvent('mouseover', function(){
			if ($(menu).getParent().hasClass('open') && !this.hasClass('highlight')) {
				if (!this.retrieve('hoverAnimationIn') && !this.retrieve('hoverAnimationOut')) {
					$$(divisions).each(function(el, index) {
						if (el != this && !el.retrieve('hoverAnimationOut')) {
							el.store('hoverAnimationIn', false);
							el.removeClass('highlight');
							el.setStyle('height', 40);
						}
					});
				
					this.store('hoverAnimationIn', true);
					this.setStyle('height', 0);
					this.addClass('highlight');
					this.tween('height', 45);
				}
			}
		});
		
		$$(divisions).addEvent('mouseout', function(){
			if ($(menu).getParent().hasClass('open')) {
				if (!this.retrieve('hoverAnimationIn')) {
					
					// Remove these two lines for animation on mouseout:
					this.removeClass('highlight');
					this.setStyle('height', 40);
					
					this.store('hoverAnimationOut', true);
					this.tween('height', 0);
				}
			}
		});
		
	} // if $(menu)

	// Latest Posts Slider
	if ($(latest)) {
		var latestItemsArray = $$(latestItems);
		var len = latestItemsArray.length;
		var latestScroll = new Fx.Scroll(latest, {mode: 'horizontal'}).toLeft();
		
		latestItemsArray[0].getParent().setStyle('width', (100 * len) + '%');
		latestItemsArray.setStyle('width', (100 / len) + '%');
		
		$$(latestControls).each(function(el, index) {													 
			el.store('item', latestItemsArray[index]);
			el.addEvent('click', function(e) {
				e.stop();
				$$(latestControls).removeClass('on');
				el.addClass('on');
				latestScroll.toElement(el.retrieve('item'));
			});
		});
		
		window.addEvent('resize', function() {
			latestScroll.toElement($$(latestControls + '.on')[0].retrieve('item'));
		});
	} // if $(latest)
	
	// Case Studies Slider
	if ($(caseStudies)) {
		var caseStudiesItemsArray = $$(caseStudiesItems);
		var len = caseStudiesItemsArray.length;
		var caseStudiesScroll = new Fx.Scroll(caseStudies, {mode: 'horizontal'}).toLeft();
		
		caseStudiesItemsArray[0].getParent().setStyle('width', (100 * len) + '%');
		caseStudiesItemsArray.setStyle('width', (100 / len) + '%');
		
		$$(caseStudiesControls).each(function(el, index) {													 
			el.store('item', caseStudiesItemsArray[index]);
			el.addEvent('click', function(e) {
				e.stop();
				$$(caseStudiesControls).removeClass('on');
				el.addClass('on');
				caseStudiesScroll.toElement(el.retrieve('item'));
			});
		});
		
		window.addEvent('resize', function() {
			caseStudiesScroll.toElement($$(caseStudiesControls + '.on')[0].retrieve('item'));
		});
	} // if $(caseStudies)
	
	// Commerce Capabilities hovering
	if ($(commerceCapabilities)) {
		$$(commerceCapabilitiesItems).addEvent('mouseover', function() {
			this.setStyle('cursor', 'pointer');
			this.getFirst().setStyle('color', '#ff8a33');
		});
		$$(commerceCapabilitiesItems).addEvent('mouseout', function() {
			this.setStyle('cursor', 'auto');
			this.getFirst().setStyle('color', '#334e5c');
		});
	} // if $(commerceCapabilities)
	
	// Interactive Capabilities expand/contractability
	if ($(interactiveCapabilities)) {
		$$(interactiveMore).addEvent('click', function(e) {
			e.stop();
			$$(interactiveCapabilitiesItems).removeClass('on');
			this.getParent().getParent().addClass('on');
		});
	} // if $(interactiveCapabilities)
	

	if ($(bureauLanding)) {
		
		// Paper corner hover pop-ups
		$$(bureauApi).addEvent('mouseover', function() {this.setStyle('background-position', '0 305px');});
		$$(bureauApi).addEvent('mouseout', function() {this.setStyle('background-position', '0 330px');});
		$$(bureauSeo).addEvent('mouseover', function() {this.setStyle('background-position', '-247px 305px');});
		$$(bureauSeo).addEvent('mouseout', function() {this.setStyle('background-position', '-247px 330px');});
		$$(bureauCms).addEvent('mouseover', function() {this.setStyle('background-position', '-494px 305px');});
		$$(bureauCms).addEvent('mouseout', function() {this.setStyle('background-position', '-494px 330px');});
		$$(bureauWidget).addEvent('mouseover', function() {this.setStyle('background-position', '-741px 305px');});
		$$(bureauWidget).addEvent('mouseout', function() {this.setStyle('background-position', '-741px 330px');});
		$$(bureauSocial).addEvent('mouseover', function() {this.setStyle('background-position', '-1000px 300px');});
		$$(bureauSocial).addEvent('mouseout', function() {this.setStyle('background-position', '-1000px 330px');});
		$$(bureauTransact).addEvent('mouseover', function() {this.setStyle('background-position', '-1247px 300px');});
		$$(bureauTransact).addEvent('mouseout', function() {this.setStyle('background-position', '-1247px 330px');});
		$$(bureauStreaming).addEvent('mouseover', function() {this.setStyle('background-position', '-1494px 300px');});
		$$(bureauStreaming).addEvent('mouseout', function() {this.setStyle('background-position', '-1494px 330px');});

		// Expand/contractability
		$$(bureauItemsMore).addEvent('click', function(e) {
			e.stop();
			$$(bureauItems).removeClass('on');
			this.getParent().getParent().addClass('on');
		});

	} // if $(bureauLanding)
	
	
	
	
	
	
	
	
	
	// Bureau Item expand/contractability

		
	

	
	
	
	
	
	// Landing Slider
	//
	// NOTE: First slide is a duplicate of last slide.
	//       Last slide is a duplicate of first slide.
	//       So if there are four slides of actual content, there will be 6 total:
	//       4 1 2 3 4 1
	
	if ($(landingSlider)) {
		var landingSliderItemsArray = $$(landingSliderItems);
		var len = landingSliderItemsArray.length;
		var currentItem = null,
				nextItem = null;
		var landingSliderScroll = new Fx.Scroll(landingSlider, {mode: 'horizontal', onComplete: function() {
			sliding = false;
		}});
		var landingSliderScrollInstant = new Fx.Scroll(landingSlider, {mode: 'horizontal', duration: 0, onComplete: function() {
			landingSliderScroll.toElement(nextItem);
		}});
		var thumbs = $$(bigboxSlideThumbs);
		var thumbRefersTo = 'slide';
		
		landingSliderItemsArray[0].getParent().setStyle('width', (100 * len) + '%');
		landingSliderItemsArray.setStyle('width', (100 / len) + '%');
		
		if ($(slideshowThumbs)) { // If the slider has thumbnails..
			for (var x = 0; x < len - 2; x++) {	
				thumbs[x].store(thumbRefersTo, landingSliderItemsArray[x+1]);
				thumbs[x].addEvent('click', function(e){
					e.stop();
					if (!sliding) {
						sliding = true;
						resetBigboxTimer();
						thumbs.removeClass('current');
						this.addClass('current');
						var newItem = this.retrieve(thumbRefersTo);
						landingSliderItemsArray.removeClass('on');
						newItem.addClass('on');
						landingSliderScroll.toElement(newItem);
					}
				});
			}
		}
		
		// Scroll Forward
		var scrollForward = function() {
			if (!sliding) {
				sliding = true;
				var currentThumb = null,
						nextThumb = null;
				if ($(slideshowThumbs)) { // If the slider has thumbnails..
					currentThumb = $$(bigboxSlideThumbs + '.current')[0];
					nextThumb = currentThumb.getNext();
					currentItem = $$(landingSliderItems + '.on')[0];
					if (nextThumb) {
						nextItem = currentItem.getNext();
						currentThumb.removeClass('current');
						nextThumb.addClass('current');
						landingSliderScroll.toElement(nextItem);
					}
					else {
						nextItem = $$(landingSliderItems)[1];
						thumbs.removeClass('current');
						thumbs[0].addClass('current');
						landingSliderScrollInstant.toLeft();
					}
				}
				else { // If the slider doesn't have thumbnails..
					currentItem = $$(landingSliderItems + '.on')[0];
					nextItem = currentItem.getNext();
					if (nextItem != landingSliderItemsArray[len-1]) {
						landingSliderScroll.toElement(nextItem);
					}
					else {
						nextItem = $$(landingSliderItems)[1];
						landingSliderScrollInstant.toLeft();
					}
				}
				
				currentItem.removeClass('on');
				nextItem.addClass('on');
			}
		}
		
		// Scroll Backward
		var scrollBackward = function() {
			if (!sliding) {
				sliding = true;
				var currentThumb = null,
						nextThumb = null;
				if ($(slideshowThumbs)) { // If the slider has thumbnails..
					currentThumb = $$(bigboxSlideThumbs + '.current')[0];
					nextThumb = currentThumb.getPrevious();
					currentItem = $$(landingSliderItems + '.on')[0];
					if (nextThumb) {
						nextItem = currentItem.getPrevious();
						currentThumb.removeClass('current');
						nextThumb.addClass('current');
						landingSliderScroll.toElement(nextItem);
					}
					else {
						nextItem = $$(landingSliderItems)[len-2];
						thumbs.removeClass('current');
						thumbs[len-3].addClass('current');
						landingSliderScrollInstant.toRight();
					}
				}
				else { // If the slider doesn't have thumbnails..
					currentItem = $$(landingSliderItems + '.on')[0];
					nextItem = currentItem.getPrevious();
					if (nextItem != landingSliderItemsArray[0]) {
						landingSliderScroll.toElement(nextItem);
					}
					else {
						nextItem = $$(landingSliderItems)[len-2];
						landingSliderScrollInstant.toRight();
					}
				}
				
				currentItem.removeClass('on');
				nextItem.addClass('on');
			}
		}
		
		$$(landingSliderPrev).addEvent('click', function(e) {
			e.stop();
			resetBigboxTimer();
			scrollBackward();
		});
		
		$$(landingSliderNext).addEvent('click', function(e) {
			e.stop();
			resetBigboxTimer();
			scrollForward();
		});
		
		scrollTimer = scrollForward.periodical(slideSpeed);
		
		function resetBigboxTimer() {
			$clear(scrollTimer);
			scrollTimer = scrollForward.periodical(slideSpeed);
		}
		
		landingSliderScroll.toElement($$(landingSliderItems + '.on')[0]);
		
		window.addEvent('resize', function() {
			landingSliderScroll.toElement($$(landingSliderItems + '.on')[0]);
		});
	} // if $(landingSlider)
	
	
	
	if ($(blog)) {
		
		// Show/hide share networks
		$$(shareToggle).addEvent('click', function(e) {
			e.stop();
			$$(shareToggle).getParent().toggleClass('on');
			$$(shareBox).toggleClass('on');
		});
		
		// All comment replies expand/collapse
		$$(commentExpandAllToggle).addEvent('click', function(e) {
			e.stop();
			var anyClosed = false;
			$$(commentReplies).each(function(el, index) {
				if (!el.hasClass('open')) {
					anyClosed = true;
					return false;
				}
			});
			if (anyClosed) {
				commentExpandAllOpen = true;
				this.getParent().addClass('open');
				$$(commentReplies).addClass('open');
			}
			else {
				commentExpandAllOpen = false;
				this.getParent().removeClass('open');
				$$(commentReplies).removeClass('open');
			}
		});
	
		// Individual comment replies expand/collapse
		$$(commentRepliesToggle).addEvent('click', function(e) {
			e.stop();
			var replies = this.getParent().getParent().getParent().getParent().getNext();
			if (replies) {
				if (replies.hasClass('open')) {
					if (commentExpandAllOpen) {
						commentExpandAllOpen = false;
						$$(commentExpandAllToggle).getParent().removeClass('open');
					}
					replies.removeClass('open');
				}
				else {
					replies.addClass('open');
					var anyClosed = false;
					$$(commentReplies).each(function(el, index) {
						if (!el.hasClass('open')) {
							anyClosed = true;
							return false;
						}
					});
					if (!anyClosed) {
						commentExpandAllOpen = true;
						$$(commentExpandAllToggle).getParent().addClass('open');
					}
				}
			}
		});
		
	} // if $(blog)

	if ($(portfolioSlider) && $(portfolioSliderControls)) {
		var slideList = $(portfolioSlider).getFirst();
		var currentItem = slideList.getFirst('.on');
		var slides = slideList.getChildren();
		var controls = $(portfolioSliderControls);
		var slidePrev = controls.getChildren('.prev')[0].getFirst();
		var slideNext = controls.getChildren('.next')[0].getFirst();
		var sliderScroll = new Fx.Scroll(portfolioSlider, {mode: 'horizontal'}).toLeft();
		
		var len = slides.length;
		slideList.setStyle('width', (100 * len) + '%');
		slides.setStyle('width', (100 / len) + '%');
		slideList.setStyle('height', currentItem.getStyle('height'));
		slideList.set('tween', {property:'height', duration:500});
		
		slidePrev.addEvent('click', function(e) {
			e.stop();
			var prevItem = currentItem.getPrevious();
			if (prevItem) {
				slideList.tween(prevItem.getStyle('height'));
				sliderScroll.toElement(prevItem);
				currentItem.removeClass('on');
				currentItem = prevItem;
				currentItem.addClass('on');
			}
		});
		
		slideNext.addEvent('click', function(e) {
			e.stop();
			var nextItem = currentItem.getNext();
			if (nextItem) {
				slideList.tween(nextItem.getStyle('height'));
				sliderScroll.toElement(nextItem);
				currentItem.removeClass('on');
				currentItem = nextItem;
				currentItem.addClass('on');
			}
		});
		
		window.addEvent('resize', function() {
			sliderScroll.toElement(slideList.getFirst('.on'));
			slideList.tween(currentItem.getStyle('height'));
		});
		
	} // if $(portfolioSlider)

});
