/* --- SEAN FEENEY FURNITURE copyright Bright White Space --- */

menuEffect = Class.create({
	initialize: function(element,rollElement){
		this.roll = rollElement;
		this.element = $(element);
		this.addObservers();
		
	},
	
	addObservers: function(){
		this.observers = {
			mouseOver: this.mouseOver.bind(this),
			mouseOut: this.mouseOut.bind(this)
		}
		
		this.element.observe("mouseover",this.observers.mouseOver);
		this.element.observe("mouseout",this.observers.mouseOut);
	},
	
	mouseOver: function(e){		
		if(this.mouseOutEffect != null){
			this.mouseOutEffect.cancel();
		}
		this.mouseOnEffect = new Effect.Appear(this.roll,{duration: 0.4, from: 0, to: 1});
	},
	
	mouseOut: function(e){
		if(this.mouseOnEffect != null){
			this.mouseOnEffect.cancel();
		}
		this.mouseOutEffect = new Effect.Fade(this.roll,{duration: 0.4, from: 1, to: 0});
	}
	
});

function init(){
	i = 0;
	$$('#menu li').each(function(menuItem) {
		if($(menuItem).id != "selected"){
			//$(menuItem).insert('<div id="rollover' + i + '" style="display: none;"></div>','end');
			//$('rollover'+ i).style.display = "none";			
		}
		i++;
	});
	i = 0;
	$$('#menu li a').each(function(menuItem) {
		if($(menuItem).id != "selected"){
			$(menuItem).insert('<div id="rollover' + i + '" style="display: none;"></div>','end');
			$('rollover'+ i).style.display = "none";
			var x = new menuEffect($(menuItem),$("rollover"+i));			
		}else{
			$(menuItem).insert('<div id="rollSelected"></div>','end');
			show = new Effect.Appear($('rollSelected'),{duration: 0.8, from: 0, to: 1});
		}
		i++;
	});
	
	if($('sliderItems') != null){
		switchTicker();
	}
	
	if($('sliderControl') != null){
		$('sliderControl').onclick = function(ob){
			if($('sliderControl').hasClassName('sliderPaused')){
				//play
				playSlider();
				$('sliderControl').toggleClassName('sliderPaused');
			}else{
				pauseSlider();
				$('sliderControl').toggleClassName('sliderPaused');
			}
		};
	}
	
	if($('submenu') != null){
		i = 0;
		animating = false;
		subs = $$('#submenu li a');
		currSubMenu = subs[0];
		
		currSubMenu.addClassName('subSelected');
		
		$$('#submenu li a').each(function(subMenuItem){
			$(subMenuItem).num = i;
			$(subMenuItem).onclick = function(){
				moveSubPage(this);
				return false;
			};
			i++;
		});
		
		setUpNavButtons();
		
	}
	
	if( $('portfolioThumbsContainer') != null) {

		// Image/thumbnail viewer setup
		xPos = $('thumbsContainer').offsetLeft;
		totalWidth = parseInt($('thumbsContainer').getStyle('width'),10);
		
		clicks = 0;
		ani = null;
		
		// Initially hide previous button (and next button if 4 images or less)
		$("prevThumbButton").hide();
		if( totalWidth <= 980 )
			$("nextThumbButton").hide();
		
		// Observe next / previous thumbnail clicks
		if($("nextThumbButton") != null){
			$("nextThumbButton").observe("click",function(e){
				showNextThumbs();
				e.stop();
			});
		}
		
		if($("prevThumbButton") != null){
			$("prevThumbButton").observe("click",function(e){
				showPrevThumbs();
				e.stop();
			});
		}
		
		// Observe clicks on thumbnails themselves
		numImages = 0;
		curThumbIndex = 0;
		mainImage = $('viewMainImg');
		
		$$(".thumbImage").each(
			function(thumbImage) {
				numImages++;
				//alert($(thumbImage).id);
				$(thumbImage).observe("click",
					function(e) {
						swapThumb(getThumbIndex(thumbImage.id));
						e.stop();
					});
			});
	
		// Observe next / previous main image clicks
		
		
		if($("imageNext") != null){
			$("imageNext").observe("click",function(e){
				showNextImage();
				e.stop();
			});
		}
		
		if($("imagePrev") != null){
			$("imagePrev").observe("click",function(e){
				showPrevImage();
				e.stop();
			});
		}
		
		
			
	}
	
	//water mark
	wmark.init({
		/* config goes here */
		"position": "bottom-right", // default "bottom-right"
		"opacity": 30, // default 50
		"className": "watermark", // default "watermark"
		"path": "/assets/images/watermark.png"
	});
}

function getThumbIndex(thumbId) {
	return thumbId.replace('thumb', '');
}
	
function swapThumb(thumbIndex) {
	str = $('thumb' + thumbIndex).src;
	imageSrc = str.slice(0, str.length - 7) + ".jpg";
	
	newImage = new Image();
	newImage.src = imageSrc;
	
	new Effect.Fade(mainImage, { duration: 0.15, from: 1, to: 0.1});
	//setTimeout('new Effect.Appear(mainImage, { duration: 0.15, from: 0.1, to: 1});', 150);
	imageTimer = setTimeout(checkImageLoaded, 100);
	
	curThumbIndex = parseInt(thumbIndex);
	
	numThumbs = $$(".thumbImage");
	
	if(thumbIndex == (numThumbs.length-1)){
		$("imageNext").hide();
	}else{
		$("imageNext").show();
	}
	
	if(thumbIndex == 0){
		$("imagePrev").hide();
	}else{
		$("imagePrev").show();
	}
	
}

function checkImageLoaded(){
	if(newImage.width > 0){
		clearTimeout(imageTimer);
		mainImage.src = imageSrc;
		new Effect.Appear(mainImage, { duration: 0.15, from: 0.1, to: 1});
	}else{	
		imageTimer = setTimeout(checkImageLoaded, 100);
	}
}
	
function showNextImage() {
	if( curThumbIndex < numImages-1 ) {
		swapThumb(++curThumbIndex);
		if( curThumbIndex % 7 == 0 )
			showNextThumbs();
	}
}
	
function showPrevImage() {
	if( curThumbIndex > 0 ) {
		swapThumb(--curThumbIndex);
		if( curThumbIndex % 7 == 6 )
			showPrevThumbs();
	}
}
	
function showNextThumbs() {
	nextClicks = clicks + 1;
	nextPos = 0 - (nextClicks * 980);
	if(nextPos < 980 - totalWidth) {
		$("nextThumbButton").hide();
	}
	if(nextPos > 0 - totalWidth){
		$("prevThumbButton").show();
		clicks++;
		if(ani != null){
			ani.cancel();
		}
		ani = new Effect.Move($('thumbsContainer'), { duration: 0.8, x: nextPos, mode: 'absolute', transition: Effect.Transitions.sinoidal});
	}	
}

function showPrevThumbs() {
	nextClicks = clicks - 1;
	nextPos = 0 - (nextClicks * 980);
	if(nextPos == 0) {
		$("prevThumbButton").hide();
	}
	if(nextPos <= 0){
		$("nextThumbButton").show();
		clicks--;
		if(ani != null){
			ani.cancel();
		}
		ani = new Effect.Move($('thumbsContainer'), { duration: 0.8, x: nextPos, mode: 'absolute', transition: Effect.Transitions.sinoidal});
	}
}

function setUpNavButtons(){
	$('prevButton').addClassName('disabled');
	
	$('nextButtonLink').onclick = function(){		
		for(var i = 0; i < subs.length; i++){
			if(subs[i].hasClassName('subSelected')){
				next = subs[i+1];
			}
		}
		moveSubPage(next);
		return false;
	};
	
	$('prevButtonLink').onclick = function(){		
		for(var i = 0; i < subs.length; i++){
			if(subs[i].hasClassName('subSelected')){
				prev = subs[i-1];
			}
		}
		moveSubPage(prev);
		return false;
	};
}

function moveSubPage(menu){
	if(!animating){	
		animating = true;
		currSubMenu.removeClassName('subSelected');
		xPos = 0 - (menu.num * 960);
		menu.addClassName('subSelected');
		new Effect.Move($('subPages'), { duration: 1, x: xPos, mode: 'absolute', transition: Effect.Transitions.sinoidal, afterFinish: updateSubPageButtons });
		currSubMenu = menu;
	}
}

function updateSubPageButtons(){
	animating = false;
	if(currSubMenu.num == (subs.length - 1)){
		$('nextButton').addClassName('disabled');
	}else{
		$('nextButton').removeClassName('disabled');
	}
	
	if(currSubMenu.num == 0){
		$('prevButton').addClassName('disabled');
	}else{
		$('prevButton').removeClassName('disabled');
	}
	console.log("test");
}

// JavaScript Document
var timeGap = 6; //seconds - change this value to increase/decrease pause between items
currid = null;

function switchTicker(){
	
	$items = $('sliderItems').getElementsByTagName("li");
	if(currid == null){
		currid = 0;
		showItem($items[currid].id,0);
		
	}else{
		hideItem($items[currid].id);
		if(currid == ($items.length-1)){
			currid = 0;
		}else{
			currid = currid + 1;
		}
		showItem($items[currid].id,0.4);
	}
	timer = setTimeout(switchTicker,(timeGap*1000));
}

function pauseSlider(){
	clearTimeout(timer);
}

function playSlider(){
	switchTicker();
}

function switchToItem(itemNum){
	
	clearTimeout(timer);
	hideItem($items[currid].id);
	currid = itemNum;
	showItem($items[currid].id,0.3);
	timer = setTimeout(switchTicker,(timeGap*1000));
	return false;
}

function showItem(id,d){
	Effect.Appear($(id),{duration: 0.8, from: 0, to: 1,delay:d});	

}

function hideItem(id){
	Effect.Fade($(id),{duration: 0.8, from: 1, to: 0});
}

Event.observe(window,'load',init);
