/*
	functions.dom.css
	DOM Interactivity Functions
	Created: Nov. 5, 2007
	Creator: Matt Kircher, Mainline Media LLC
	
	Modified: Jan. 16, 2008
*/

function setColumnHeights(){
	if(!document.styleSheets[0].disabled){
		
		var content= document.getElementById('content');
		var left   = document.getElementById('sub-content');
		var main   = document.getElementById('main-content');
		
		if(left && main){
			
			left.style.height = "auto";
			main.style.height = "auto";	
			
			var tallest = left.offsetHeight;
			if(main.offsetHeight > tallest){ tallest = main.offsetHeight; }
			
			left.style.height = tallest+"px";
			main.style.height = tallest+"px";
		}
	}
}

function setupMonitors(){
	if (window.addEventListener){
		window.addEventListener('resize', setColumnHeights, false);
	} else if (window.attachEvent){
		window.attachEvent('resize', setColumnHeights);
	}
}

function setupCaseStudies(){
	
	//thumbnail setup
	$('.casestudy_thumbnail img[@alt="cs-thumb"]')
	.bind('mouseover', function(){
		$(this).attr('rel', $(this).attr('src')).attr('src', '/Content/images/cs_thumb_rollover.jpg');
	})
	.bind('mouseout', function(){
		$(this).attr('src', $(this).attr('rel'));
	})
	.bind('click', function(){
		//if there are thumbnails available, trigger the first to click
		if($('.casestudy_gallery').length){
			$(this).parent().parent().parent().find('.casestudy_gallery a[@class="thickbox"]:eq(0)').trigger('click');
		}
		return false;
	});
	
	//hide thumbnail lists
	$('.casestudy_gallery').hide();
	
	//side selector
	$('#csSelector').bind('change', function(){ document.location.hash = $(this).val(); });
	
	//add 'back to top' after each module
	$('.casestudy_module').after('<p style="margin:0px 0px 12px 20px; padding-top:0px;"><a href="#header">Back to top</a></p>')
	
	//hide all but 1st paragraph
	$('.casestudy_content > *:not(:first-child)').hide();
	
	//add expand bar
	$('.casestudy_content').each(function(){
		if($(this).find(' > *:not(.casestudy_gallery)').length > 1){
			$(this).append('<div class="expand_bar"><a href="Open for more information on this case study...">Click for more</a></div>');
		}
	});
	
	//setup expand bar
	$('.expand_bar')
	.attr('rel', "closed")
	.bind('click', function(){
		if($(this).attr('rel') == "closed"){
			//show full content
			$(this).attr('rel', "open").find('a').html('Collapse').end();
			$(this).parent().find('> *:not(.casestudy_gallery)').show();
		} else {
			//hide all content except first node
			$(this).attr('rel', "closed").find('a').html('Click for more').end();
			$(this).parent().find('> *:not(:first-child)').hide();
		}
		$(this).blur().show();
		setColumnHeights();
		return false;
	})
	.show();
}

function setupContactForm(){
	
	//required interactions
	$('#contactForm .required').bind('change', function(){
		if($.trim($(this).val()) != ""){
			$(this).removeClass('required_attention');
		}
	});
	
	//setup highlighting
	$('#contactForm input[@type="text"]')
	.bind('focus', function(){ $(this).addClass('highlighted_form_field'); })
	.bind('blur', function(){  $(this).removeClass('highlighted_form_field'); });
	
	//focus on first field
	$('#contactForm input[@tabindex="1"]').focus();
}

function validateContactForm(){
	
	var valid = { status:true, response:'', element:null };
	
	$('#contactForm .required').removeClass('required_attention');
	$('#contactForm .required').each(function(){
		if(($(this).val() == "" || $(this).val() == null)){
			$(this).addClass('required_attention');
			valid.status = false;
			valid.response = 'One or more required fields has not been completed. Please complete them and resubmit the form.';
			if(valid.element == null){ valid.element = $(this); }
		}
	});
	
	if(valid.status){
		$('#contactForm .required').each(function(){
			if($(this).attr('name') == "email"){
				var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
				if(!filter.test($.trim($(this).val()))){
					$(this).addClass('required_attention');
					valid.status = false;
					valid.response = 'Please supply a valid email address.';	
					valid.element = $(this);
				}
			}
		});
	}
	
	if(!valid.status){ alert(valid.response); $(valid.element).focus(); }
	return valid.status;
}

$(document).ready(function(){
	
	setupCaseStudies(); //case studies
	
	setupContactForm(); // contact form
	
	setColumnHeights(); //general stuff
	setupMonitors();
	
});
