/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/	
var getElementsByClassName=function(className,tag,elm){if(document.getElementsByClassName){getElementsByClassName=function(className,tag,elm){elm=elm||document;var elements=elm.getElementsByClassName(className),nodeName=(tag)?new RegExp("\\b"+tag+"\\b","i"):null,returnElements=[],current;for(var i=0,il=elements.length;i<il;i+=1){current=elements[i];if(!nodeName||nodeName.test(current.nodeName)){returnElements.push(current);}}
return returnElements;};}
else if(document.evaluate){getElementsByClassName=function(className,tag,elm){tag=tag||"*";elm=elm||document;var classes=className.split(" "),classesToCheck="",xhtmlNamespace="http://www.w3.org/1999/xhtml",namespaceResolver=(document.documentElement.namespaceURI===xhtmlNamespace)?xhtmlNamespace:null,returnElements=[],elements,node;for(var j=0,jl=classes.length;j<jl;j+=1){classesToCheck+="[contains(concat(' ', @class, ' '), ' "+classes[j]+" ')]";}
try{elements=document.evaluate(".//"+tag+classesToCheck,elm,namespaceResolver,0,null);}
catch(e){elements=document.evaluate(".//"+tag+classesToCheck,elm,null,0,null);}
while((node=elements.iterateNext())){returnElements.push(node);}
return returnElements;};}
else{getElementsByClassName=function(className,tag,elm){tag=tag||"*";elm=elm||document;var classes=className.split(" "),classesToCheck=[],elements=(tag==="*"&&elm.all)?elm.all:elm.getElementsByTagName(tag),current,returnElements=[],match;for(var k=0,kl=classes.length;k<kl;k+=1){classesToCheck.push(new RegExp("(^|\\s)"+classes[k]+"(\\s|$)"));}
for(var l=0,ll=elements.length;l<ll;l+=1){current=elements[l];match=false;for(var m=0,ml=classesToCheck.length;m<ml;m+=1){match=classesToCheck[m].test(current.className);if(!match){break;}}
if(match){returnElements.push(current);}}
return returnElements;};}
return getElementsByClassName(className,tag,elm);};

/* http://buskerweb.com */

function checkForm() {
  var r;
  var allow = true;
  var required = ['name','email','phone','message'];
  for (var i = 0; i < required.length; i++) {
    r = document.getElementById(required[i]);
    if (!r.value) {
      r.parentNode.className = r.parentNode.className + ' error';
      allow = false;
    }
    else { r.parentNode.className = r.parentNode.className.replace(' error',''); }
  }
  if (!allow) { alert('Please enter a name, email address, phone number, and message.'); }
  return allow;
}

// Animation: Initialize globals
var animation,current_frame,content_boxes,content_boxes_length;
var total_frames = 30;
var total_animation_time = 600;

function animateLeft(content_boxes,content_boxes_length,pixels_per_frame) {
	if (current_frame < total_frames) {
		for (var i = 0; i < content_boxes_length; i++) { content_boxes[i].style.left = (content_boxes[i].style.left.replace('px','')*1 - pixels_per_frame) + 'px'; }
		current_frame++;
	} else { clearInterval(animation); }
}

function animateRight(content_boxes,content_boxes_length,pixels_per_frame) {
	if (current_frame < total_frames) {
		for (var i = 0; i < content_boxes_length; i++) { content_boxes[i].style.left = (content_boxes[i].style.left.replace('px','')*1 + Math.abs(pixels_per_frame)) + 'px'; }
		current_frame++;
	} else { clearInterval(animation); }
}

function animate(from_id,target_id){
	if (from_id == target_id) {
		return false; // Don't animate if we're already there!
	} else {
		current_frame = 0;
		var target_position = document.getElementById(target_id).style.left.replace('px','') * 1;
		if (target_position < 0) {
			var pixels_per_frame = Math.abs(target_position)/total_frames;
			animation = setInterval(function(){animateRight(content_boxes,content_boxes_length,pixels_per_frame);}, total_animation_time/total_frames);
		} else {
			var pixels_per_frame = target_position/total_frames;
			animation = setInterval(function(){animateLeft(content_boxes,content_boxes_length,pixels_per_frame);}, total_animation_time/total_frames);
		}
		return false;
	}
}

function init(){
	content_boxes = getElementsByClassName('content_box','div');
	content_boxes_length = content_boxes.length;

	var navigation_links = getElementsByClassName('navigation_link','a');
	var navigation_link_length = navigation_links.length;
	for (var i = 0; i < navigation_link_length; i++) {
		navigation_links[i].onclick = function(element){
			var from_id;
			for (var i = 0; i < content_boxes_length; i++) { if (content_boxes[i].style.left == '0px') { var from_id = content_boxes[i].id; } }
      return animate(from_id,this.href.substr(this.href.indexOf('#')+1));
		};
	}
	var previous_buttons = getElementsByClassName('previous_button','a');
	var previous_button_length = previous_buttons.length;
	for (var i = 0; i < previous_button_length; i++) {
		previous_buttons[i].onclick = function(element){
			return animate(this.parentNode.parentNode.parentNode.id,this.href.substr(this.href.indexOf('#')+1));
		};
	}
	var next_buttons = getElementsByClassName('next_button','a');
	var next_button_length = next_buttons.length;
	for (var i = 0; i < next_button_length; i++) {
		next_buttons[i].onclick = function(element){
			return animate(this.parentNode.parentNode.parentNode.id,this.href.substr(this.href.indexOf('#')+1));
		};
	}

	// Via JS instead of CSS so that the properties can be read back by JS
	var main = document.getElementById('main');
	main.style.height = '453px';
	main.style.overflow = 'hidden';

	for (var i = 0; i < content_boxes_length; i++) {
		content_boxes[i].style.position = 'absolute';
		content_boxes[i].style.left = (i * 900) + 'px';
		content_boxes[i].style.zIndex = (5 - i);
	}
}

