$(document).ready(function() {
	
	
	//use this to hide contents of toggle boxes on services page
	$('body.services #content .container').addClass('js');
	
	$('#header ul').removeClass('nonJs');
	
	var bodyClass = $('body').attr('class');
	var indicator = 'body.' + bodyClass + ' #header ul li.' + bodyClass;
	if (bodyClass != 'home')  {
		$(indicator).addClass('selectedLava');
	} else {
		$('#header ul li:first').addClass('selectedLava');
	}
	
	$("#header ul").lavaLamp({
		fx: "easeOutExpo",
		speed: 1000
	});
	
	//toggle function for services page
	$('body.services #content h4').css({cursor:"pointer"}).click(function(){
		var x = $(this).parent('div').parent('div').attr('id');
		var y = '#' + x + ' div.content';
		var n = $('div.open').length;
		
		if ($(this).parent('div').parent('div').attr('class')=='open') {
			$(y).hide('slow', function(){$('#' + x).removeClass('open');});
		} else if (n == 0) {
			$(y).show('slow', function(){$('#' + x).addClass('open');});
		} else {
			$('#content div.open div.content').hide('slow', function(){
				$('div.open').removeClass('open');
				
			});
			$(y).show('slow', function(){$('#' + x).addClass('open');});
		}
		
		
	});
	
	//to style second-tier lists in services page
	$('body.services #content .content ul ul li').css({listStyle:'none',margin:'0'}).prepend('- ');
	
	//roll-overs in footer social-sharing nav
	$('#footer ul.socialSharing a').hover(function(){ 
	  	var footClass = $(this).parent('li').attr('class');
	    var linkText = $(this).html();
		$(this).parent('li').parent('ul').parent('div').append('<p class="' + footClass + '">' + linkText + '</p>');
	},function(){ 
	  	var footClass = $(this).parent('li').attr('class');
		$('#footer p.' + footClass).remove();
	});
	
	
	//sifr text
	/*$.sifr({path:'swfs'});
	$('#content h2').sifr({
		font:'Trade Gothic',
		color:'#c73e27;',
		offsetTop: -3,
		offsetLeft: -1,
		beforeEach: function () { $(this).addClass('hidden'); },
		afterEach: function () { $(this).removeClass('hidden'); } 
	});
	
	$('#content h3').sifr({
		font:'Trade Gothic',
		color:'#c73e27;',
		textTransform: 'uppercase',
		offsetTop: -3,
		beforeEach: function () { $(this).addClass('hidden'); },
		afterEach: function () { $(this).removeClass('hidden'); }
	});/**/
	
	
	
	validateForms_init();
});




// assign function to submit of all forms that will validate its inputs
// required inputs are identified with class 'required'
// if any reqired input is empty, the field receives class 'required_flag' and the form doesn't submit
function validateForms_init() {
	// loop through all the forms
	for (var i=0,j=document.forms.length;i<j;i++) {
		var form = document.forms[i];
		// assign submit event
		form.onsubmit = function() {
			var isValid = validateForms_validate(this);
			// if returned value is false, stop form submit
			if (isValid == false) {
				if (!this.required_message) {
					// create message asking user to fix required fields
					var message = document.createElement('p');
					this.required_message = message
					message.className = 'required_message';
					// insert it before this form element
					this.parentNode.insertBefore(message,this);
					$(message).hide();
					message.innerHTML = 'Please fill in all required fields.';
					$(message).show('slow');
				}
				// don't submit
				return false;
			}
		}
	}
}

function validateForms_validate(form) {
	// isValid keeps track of whether the form is valid to submit
	var isValid = true;
	// loop through all the elements
	for (var i=0,j=form.elements.length;i<j;i++) {
		var element = form.elements[i];
		if (element.className.match('required')) {
			// validate textarea elements and input elements with type text
			if (element.type.match(/text/i) || element.tagName.match(/textarea/i)) {
				switch (element.value) {
					case '':
					isValid = false;
					break;
					case undefined:
					isValid = false;
					break;
					case null:
					isValid = false;
					break;
				}
				if (isValid == false) {
					validateForms_invalidElement(element);
				}
			}
		}
	}
	return isValid;
}

function validateForms_invalidElement(element) {
	// this element is apparently not valid, so flag it
	element.required_flag = 'required_flag'; // the class name that means it is flagged
	element.className += ' ' + element.required_flag; // add the class name
	// when the input gets focus, removed the flag
	element.onfocus = function() {
		var re = new RegExp(this.required_flag,'gi');
		this.className = this.className.replace(re,'');
	}
}