//----------------------------------------------------------------------
// internal domains list


var INTERNAL_DOMAINS = [ '/', '#', '../', 'mailto:',
	'http://santorodriggs.com',
	'http://www.santorodriggs.com'
];

var EMAIL_REGEX = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;

var CONTACT_FIELDS = { 
	name:		{ lbl: 'Name',					type:'req' 		},
	email: 		{ lbl: 'Email',					type:'email'	},
	phone: 		{ lbl: 'Phone',					type:'req'		},
	related: 	{ lbl: 'Related Parties',		type:'opt'		},
	adverse: 	{ lbl: 'Adverse Parties',		type:'opt'		},
	descript: 	{ lbl: 'Brief Description',		type:'req' 		}
};


//----------------------------------------------------------------------
// Start her up

document.observe( 'dom:loaded', initPage );


//----------------------------------------------------------------------
// initPage

function initPage()
{
	// Navigation subnav menus
	initNav();
	
	// External links
	initExternalLinks();
	
	// Bio detail subnav
	initBioDetail();
	
	// Contact Form
	initContactForm();
}


//----------------------------------------------------------------------
// initNav

function initNav()
{	
	var navNodes = $('nav').down().childElements();
	for ( var i = 0; i < navNodes.length; i++ )
	{
		navNodes[i].observe( 'mouseenter', function( event )
		{
			this.addClassName( 'hover' );
		});
		
		navNodes[i].observe( 'mouseleave', function( event )
		{
			this.removeClassName( 'hover' );
		});
	}
}


//----------------------------------------------------------------------
// initExternalLinks

function initExternalLinks()
{	
	// set any external links to target='_blank'
	var aLinks = $$('a:link');
	for ( var i = 0; i < aLinks.length; i++ )
	{
		var isExternal = true;
		for ( var j = 0; j < INTERNAL_DOMAINS.length; j++ )
		{
			if( aLinks[i].href.startsWith( INTERNAL_DOMAINS[j] ) )
			{
				isExternal = false;
			}
		}
		if( isExternal ) aLinks[i].target = '_blank';
	}
}


//----------------------------------------------------------------------
// initBioDetail

function initBioDetail()
{	
	if ( !( $('bios-nav') && $('bio-summary') && $('bio-full') ) ) return;
	
	var bioSum = $('bio-summary');
	var bioFull = $('bio-full');
	var nav = $('bios-nav');
	var btnSum = nav.select('a[href="#bio-summary"]')[0];
	var btnFull = nav.select('a[href="#bio-full"]')[0];
	// var btnPrint = nav.select('a[href="#print"]')[0];
	
	btnSum.observe( 'click', function( event )
	{
		Event.stop( event );
		var aLink = event.element();
		aLink.blur();
		if ( aLink.up().hasClassName('disabled') ) return;
		showBio('sum');
	});
	
	btnFull.observe( 'click', function( event )
	{
		Event.stop( event );
		var aLink = event.element();
		aLink.blur();
		if ( aLink.up().hasClassName('disabled') ) return;
		showBio('full');
	});
	
	/*
	btnPrint.observe( 'click', function( event )
	{
		Event.stop( event );
		showBio('full');
		window.print();
	});
	*/
	
	showBio('sum');
	nav.removeClassName('hidden');
}

function showBio( state )
{	
	var bioSum = $('bio-summary');
	var bioFull = $('bio-full');
	var nav = $('bios-nav');
	var btnSum = nav.select('a[href="#bio-summary"]')[0];
	var btnFull = nav.select('a[href="#bio-full"]')[0];
	var btnPrint = nav.select('a[href="#print"]')[0];
	
	if ( state == 'sum' )
	{
		bioSum.removeClassName('hidden');
		btnSum.up().addClassName('disabled');
		bioFull.addClassName('hidden');
		btnFull.up().removeClassName('disabled');
	}
	else if ( state == 'full' )
	{
		bioSum.addClassName('hidden');
		btnSum.up().removeClassName('disabled');
		bioFull.removeClassName('hidden');
		btnFull.up().addClassName('disabled');
	}
}


//----------------------------------------------------------------------
// initContactForm

function initContactForm()
{	
	if ( !$('contact-form') ) return;
	$('contact-form').observe( 'submit', validateContactForm );
}

//----------------------------------------------------------------------
// validateContactForm

function validateContactForm( event )
{
	Event.stop( event );
	var f = event.element();
	var isValid = true;
	var isNewsletterSelected = true;
	var errorString = '';

	var fields = f.getInputs('text');
	fields.push( f.descript );
	
	for ( var i = 0; i < fields.length; i++ )
	{
		var field = fields[i];
		var fieldLbl = CONTACT_FIELDS[ field.name ].lbl;
		var fieldType = CONTACT_FIELDS[ field.name ].type;
		
		if ( fieldType == 'req' )
		{
			if ( $(field).getValue() == '' )
			{
				errorString = errorString + '- ' + fieldLbl + ' field is required\n' ;
				isValid = false;
			}
		}
		else if ( fieldType == 'email' )
		{
			if ( !validateEmail( $(field).getValue() ) )
			{
				errorString = errorString + '- ' + fieldLbl + ' field requires a valid email address\n';
				isValid = false;
			}
		}
	}
	
	// submit or alert
	if ( isValid == true )
	{ 
		f.submit();
	} 
	else 
	{ 
		alert( "There was an error with your request:\n\n"+ errorString );
	}	
}
function validateEmail( email )
{      
	return EMAIL_REGEX.test( email ); 
}

