
//
//Gallery image switcher
//

var current = 'main-image1';
var target  = 'main-image2';
var lastImage = "image_1.jpg"

function changeImage(newImage){
    targetImageElement = document.getElementById(target);
    currentImageElement = document.getElementById(current);
	
	if(lastImage == newImage)
		return;
	
	lastImage = newImage;
	targetImageElement.src = "./gallery/" + newImage;
	targetImageElement.style.opacity = 0.0;
	targetImageElement.style.zIndex = 2;
    currentImageElement.style.zIndex = 1;
	swapStart(targetImageElement, currentImageElement, 0.0, 1.0, 10);
	var boo = current;
	current = target;
	target = boo;
}

//
// Animation Sliders
//
function moveElement(element, target, link){
	var theElement = document.getElementById(element);
	togglePageButtons(link);
	link.children[0].src = './assets/page-button-on.png';
	
	scrollElement(theElement, target, 50);
	return;
}

function scrollElement(element, target, duration){
	//find the current left position of the element
	var left;
	left = parseInt(element.style.left);
	if(!left){
		left = 0;
	}
	
	var start = left;
	var end = -target;
	scrollStart(element, start, end, duration);
}

function togglePageButtons(onButton){
	buttons = document.getElementById('page-buttons').getElementsByTagName('img')
	for(i = 0; i < buttons.length; i++){
		buttons[i].src = "./assets/page-button-off.png";
	}
}

//
// Most of the following code has been appropriated from panic.com's Incredible Horizontal Scrolling box.
// 
var scrollanim = {time:0, begin:0, change:0.0, duration:0.0, element:null, timer:null};
 
function scrollStart(elem, start, end, duration)
{
	if (scrollanim.timer != null) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	scrollanim.time = 0;
	scrollanim.begin = start;
	scrollanim.change = end - start;
	scrollanim.duration = duration;
	scrollanim.element = elem;
	scrollanim.timer = setInterval("scrollHorizAnim();", 15);	
}

function scrollHorizAnim()
{
	if (scrollanim.time > scrollanim.duration) {
		clearInterval(scrollanim.timer);
		scrollanim.timer = null;
	}
	else {
		move = sineInOut(scrollanim.time, scrollanim.begin, scrollanim.change, scrollanim.duration);
		scrollanim.element.style.left = move + 'px';
		scrollanim.time++;
	}
}

//
//Fade Animation - yeah, I should make a generic animator, but cut and paste is so much easier....
//
var crossfadeAnim = {time:0, begin:0, change:0.0, duration:0.0, inElement:null, outElement:null, timer:null, target:null};
 
function swapStart(inElem, outElem, start, end, duration)
{
	if (crossfadeAnim.timer != null) {
		clearInterval(crossfadeAnim.timer);
		crossfadeAnim.timer = null;
	}
	crossfadeAnim.time = 0;
	crossfadeAnim.begin = start;
	crossfadeAnim.change = end - start;
	crossfadeAnim.duration = duration;
	crossfadeAnim.inElement = inElem;
	crossfadeAnim.outElement = outElem;
	crossfadeAnim.timer = setInterval("fadeAnim();", 15);	
}

function fadeAnim()
{
	if (crossfadeAnim.time > crossfadeAnim.duration) {
		clearInterval(crossfadeAnim.timer);
		crossfadeAnim.timer = null;
	}
	else {
		inFade = linear(crossfadeAnim.time, crossfadeAnim.begin, crossfadeAnim.change, crossfadeAnim.duration);
		//outFade = linear(crossfadeAnim.time, crossfadeAnim.begin, crossfadeAnim.change, crossfadeAnim.duration);
		crossfadeAnim.inElement.style.opacity = inFade;
		//crossfadeAnim.outElement.style.opacity = 1 - outFade;
		crossfadeAnim.time++;
	}
}


function sineInOut(t, b, c, d)
{
	return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
}


function linear(t, b, c, d)
{
	return c*t/d + b;
}

function cubicIn(t, b, c, d) {
	return c*(t/=d)*t*t + b;
}
 
function cubicOut(t, b, c, d) {
	return c*((t=t/d-1)*t*t + 1) + b;
}



//
// Video Loading stuff
//
var oEmbedUrl = 'http://www.vimeo.com/api/oembed.json';
var loaded = null;
var lastLink = null;

function loadMovie(videoId, link){
    if(loaded == videoId)
    	return;
    
    link.childNodes[0].style.background = "url(../assets/video-icon-on.png) left center no-repeat";
    
	if(lastLink)
		lastLink.childNodes[0].style.background = "url(../assets/video-icon.png) left center no-repeat";
	
	lastLink = link;
	
	scriptUrl = oEmbedUrl + '?url=' + encodeURIComponent('http://vimeo.com/' + videoId) + '&maxheight=320&title=0&portrait=0&byline=0&color=999999&autoplay=true' + '&callback=' + 'embedVideo';
	loadScript(scriptUrl);
	
}

function embedVideo(video) {
	loaded = video.video_id;
	videoEmbedCode = video.html;
	document.getElementById('video-container').innerHTML = unescape(video.html);
}
		
// This function loads the data from Vimeo
function loadScript(url) {
	var js = document.createElement('script');
	js.setAttribute('type', 'text/javascript');
	js.setAttribute('src', url);
	document.getElementsByTagName('head').item(0).appendChild(js);
}		
		
		
		
		
		