
//----------------------------------------------------------------------
// internal domains list

internalDomains = [ '/', '#', '../', 'mailto:',
	
	'http://charlesdavid.com',
	'http://www.charlesdavid.com',
	
	'http://charlesdavid.stagedsite.com',
	
	'http://charlesdavid.zappos.com',
	'https://charlesdavid.zappos.com',
	
	'http://shopping-charlesdavid.zappos.com',
	'https://shopping-charlesdavid.zappos.com',
	
	'http://prelive.charlesdavid.zappos.com',
	'https://prelive.charlesdavid.zappos.com'
];


//----------------------------------------------------------------------
// Start her up

document.observe( 'dom:loaded', initPage );


//----------------------------------------------------------------------
// initPage

function initPage()
{
	// Product Search Form
	initProductSearch();
	
	// External links
	initExternalLinks();
	
	// Home -> What's New
	initWhatsNew();
	
	// Style Report -> Behind the Scenes
	initBehindScenes();
	
	// Style Report -> Lookbook
	initLookbook();
	
	// Contact -> Email Sign-Up
	initEmailSignUp();
}


//----------------------------------------------------------------------
// initProductSearch

function initProductSearch()
{	
	if ( !$('prod-search') ) return;
	
	$('srchnput').value = $('lbl-srchnput').innerHTML;
	
	$('srchnput').observe( 'focus', function( event )
	{
		var field = event.element();
		if( field._cleared ) return;
		field.clear();
		field._cleared = true;
	});
}


//----------------------------------------------------------------------
// initExternalLinks

function initExternalLinks()
{	
	// set any external links to target='_blank'
	var aLinks = $('wrapper').select('a'); // $$('a:link');
	for ( var i = 0; i < aLinks.length; i++ )
	{
		var isExternal = true;
		for ( var j = 0; j < internalDomains.length; j++ )
		{
			if( aLinks[i].href.startsWith( internalDomains[j] ) )
			{
				isExternal = false;
			}
		}
		if( isExternal ) aLinks[i].target = '_blank';
	}
}


//----------------------------------------------------------------------
// initWhatsNew

function initWhatsNew()
{	
	if ( !$('whats-new-swf') ) return;
	
	// embed flash
	var flashWidth = 948;
	var flashHeight = 478;
	var flashId = 'whats-new-swf';
	
	var flashvars =
	{
		xmlUrl: '/feed/'
	};
	var params = {
		menu: 'false'
	};
	var attributes = {
		name: flashId
	};
	swfobject.embedSWF( "/swf/whatsNew.swf", flashId, flashWidth, flashHeight, "9.0.0", false, flashvars, params, attributes );
}


//----------------------------------------------------------------------
// initBehindScenes

function initBehindScenes()
{	
	if ( !( $('flv-player') && $('flv-controls') ) ) return;
	
	// flowplayer config 
	var flvConfig =
	{ 
		plugins:
		{
			controls:
			{
				// display properties 
				height: 24, 
				backgroundColor: '#9d6d8c',
				backgroundGradient: 'none',
				sliderColor: '#08101c',			// background color for the timeline before buffer bar fulfills it. the same background color is also used in volume slider.
				sliderGradient: 'none',			// gradient setting for the sliders.
				bufferColor: '#504f4f',			// the color of the buffer. buffer is the bar that indicates how much video data has been read into player's memory.
				bufferGradient: 'none',			// gradient setting for the buffer.
				progressColor: '#7c7b7b',		// the color of the progress bar. this is the bar in the timeline from zero time to the point where playback is at given time.
				progressGradient: 'none',		// gradient setting for the progress bar.
				buttonColor: '#504f4f',			// color of the player buttons: stop, play, pause, fullscreen.
				buttonOverColor: '#7c7b7b',		// button color when mouse is positioned on top of them
				
				// which buttons are visible and which not
				autoHide: 'never', 
				all: false,
				play: true,
				volume: true,
				mute: true,
				scrubber: true
			}
		}
	}
	
	// create flowplayer
	flowplayer('flv-player', '/swf/flowplayer/flowplayer-3.0.0-rc4.swf', flvConfig ).onBeforeClick( function() { return false; }); 
	
	// set the video controls up
	var aLinks = $('flv-controls').select('a');
	for ( var i = 0; i < aLinks.length; i++ )
	{
		aLinks[i].observe( 'click', loadFlv );
	}
}


//----------------------------------------------------------------------
// loadFlv

function loadFlv( event )
{	
	Event.stop( event );
	var aLink = event.element();
	aLink.blur();
	if ( aLink.hasClassName('selected') ) return;
	
	// set selected class names
	var aLinks = $('flv-controls').select('a');
	for ( var i = 0; i < aLinks.length; i++ ) aLinks[i].removeClassName('selected');
	aLink.addClassName('selected');
	
	// Load the video
	var flvPlayer = flowplayer('flv-player');
	// if player isn't loaded yet, do it & load clip
	if( !flvPlayer.isLoaded() ) flvPlayer.load( function() { this.play( aLink.href ); });	
	// else, just load clip
	else flvPlayer.play( aLink.href );
}


//----------------------------------------------------------------------
// initLookbook

function initLookbook()
{	
	if ( !$('flipbook') ) return;
	
	flippingBook.stageWidth = 720;
	flippingBook.stageHeight = 510;
	flippingBook.settings.bookWidth = 700;
	flippingBook.settings.bookHeight = 490;
	flippingBook.settings.zoomImageWidth = 700;
	flippingBook.settings.zoomImageHeight = 980;
	flippingBook.settings.autoFlipSize = 100;
	
	flippingBook.settings.pageBackgroundColor = 0xffffff;
	flippingBook.settings.zoomUIColor = 0x888888;
	flippingBook.settings.backgroundColor = 0xbbbbbb;
	flippingBook.settings.backgroundImage = "";
	
	flippingBook.settings.smoothPages = true;	
	flippingBook.settings.dropShadowEnabled = true,
	flippingBook.settings.dropShadowHideWhenFlipping = false;
	flippingBook.settings.zoomHintEnabled = false;
	flippingBook.settings.allowPagesUnload = false;
	flippingBook.settings.loadOnDemand = true;
	flippingBook.settings.flipCornerStyle = "first page only";
	flippingBook.settings.preloaderType = "Gradient Wheel";
	
	flippingBook.create();
}


//----------------------------------------------------------------------
// initEmailSignUp

function initEmailSignUp()
{	
	if ( !$('email-signup-form') ) return;
	$('email-signup-form').observe( 'submit', validateEmailSignUpForm );
}

//----------------------------------------------------------------------
// validateEmailSignUpForm

function validateEmailSignUpForm( event )
{
	Event.stop( event );
	var f = event.element();
	var isValid = true;
	var isNewsletterSelected = true;
	var errorString = '';
	
	// Check fields
	if ( f.field6.value == "" )
	{
		errorString = errorString + "First Name\n" ;
		isValid = false;
	}
	if ( f.field7.value == "" )
	{
		errorString = errorString + "Last Name\n" ;
		isValid = false;
	}
	if ( f.field11.selectedIndex == 0 )
	// if (f.field11.value == "")
	{
		errorString = errorString + "State\n";
		isValid = false;
	} 
	if ( f.field12.value == "" )
	{
		errorString = errorString + "Zip Code\n" ;
		isValid = false;
	}
	if ( f.UEmail.value== "" )
	{ 
		errorString = errorString + "Email Address\n";
		isValid = false;
	}
	else
	{		
		if ( f.UEmail.value.indexOf("@") == -1 || f.UEmail.value.indexOf(".") == -1 )
		{
			errorString = errorString + 'Invalid email address';
			isValid = false;
		}
	}
	
	// submit or alert
	if ( isValid == true && isNewsletterSelected == true )
	{ 
		f.submit();
	} 
	else 
	{ 
		if ( isNewsletterSelected == false )
		{
			errorString = errorString +"----------------------\nPlease select at least one subscription";  
		}
		alert( "Following fields are required:\n\n"+ errorString );
	} 
}