function onStoreKeyDown( sID, oEvent )
{
	if( oEvent.keyCode == 13 )
	{
		oEvent.returnValue=false;
		oEvent.cancel = true;
		
		var oZip = document.getElementById( sID );
		
		if( oZip )
		{
			location.href = '/article/content/informationcenter/storelocator/storelocator.html?zip=' + oZip.value;
		}
	}	
}

function findStore( sID )
{	
	var oZip = document.getElementById( sID );
	
	if( oZip )
	{
		location.href = '/article/content/informationcenter/storelocator/storelocator.html?zip=' + oZip.value;
	}
	
	return false;
}

function onRepresentativeKeyDown( sID, oEvent )
{
	if( oEvent.keyCode == 13 )
	{
		oEvent.returnValue=false;
		oEvent.cancel = true;
		
		var oZip = document.getElementById( sID );
		
		if( oZip )
		{
			location.href = 'http://www.dunnedwards.com/retail/content.asp?category=72&target_zip=' + oZip.value;
		}
	}	
}

function findRepresentative( sID )
{	
	var oZip = document.getElementById( sID );
	
	if( oZip )
	{
		location.href = 'http://www.dunnedwards.com/retail/content.asp?category=72&target_zip=' + oZip.value;
	}
	
	return false;
}

var aToolbarPanels = new Array();
var aToolbarPanelTabs = new Array();
var aToolbarPanelCaptions = new Array();
var aToolbarPanelCookies = new Array();
var oToolbarDescriptionLayer;

function registerToolbarPanel( sPanelID, sTabID, sCookie, sCaption )
{
	aToolbarPanels.push( sPanelID );
	aToolbarPanelTabs.push( sTabID );
	aToolbarPanelCaptions.push( sCaption );
	aToolbarPanelCookies.push( sCookie );

	hideLayer( sPanelID );
}

function registerToolbarDescriptionLayer( sID )
{
	oToolbarDescriptionLayer = document.getElementById( sID );
}

function showToolbarPanelByCookie( sID )
{
	for( var nIndex = 0; nIndex < aToolbarPanels.length; nIndex++ )
		if( aToolbarPanelCookies[ nIndex ] == sID )
			showToolbarPanel( aToolbarPanels[ nIndex ] )
			
	return false;
}

function showToolbarPanel( sID )
{
	for( var nIndex = 0; nIndex < aToolbarPanels.length; nIndex++ )
	{
		var oPanelTab = document.getElementById( aToolbarPanelTabs[ nIndex ] );

		if( aToolbarPanels[ nIndex ] == sID )
		{
			showLayer( aToolbarPanels[ nIndex ] );
			oPanelTab.style.top = '1px';
			oPanelTab.style.backgroundColor = '#ededed';
			
			if( oToolbarDescriptionLayer )
				oToolbarDescriptionLayer.innerText = aToolbarPanelCaptions[ nIndex ];
				
			setCookie( 'activePanel', aToolbarPanelCookies[ nIndex ], 3650 );
		}
		else
		{
			hideLayer( aToolbarPanels[ nIndex ] );
			oPanelTab.style.top = '0px';
			oPanelTab.style.backgroundColor = '#f6f6f6';
		}
	}
}


var oBodyLayer = null;
var oTrimLayer = null;
var oAccent1Layer = null;
var oAccent2Layer = null;
var oActiveComponent = null;
var oComponents = new Array();

function registerSchemeComponents( sBodyID, sTrimID, sAccent1ID, sAccent2ID )
{
	oBodyLayer = document.getElementById( sBodyID );
	oTrimLayer = document.getElementById( sTrimID );
	oAccent1Layer = document.getElementById( sAccent1ID );
	oAccent2Layer = document.getElementById( sAccent2ID );
	
	oBodyLayer.componentName = 'body';
	oTrimLayer.componentName = 'trim';
	oAccent1Layer.componentName = 'accent1';
	oAccent2Layer.componentName = 'accent2';
	
	oBodyLayer.onclick = onComponentClick; 
	oTrimLayer.onclick = onComponentClick; 
	oAccent1Layer.onclick = onComponentClick; 
	oAccent2Layer.onclick = onComponentClick; 
	
	oComponents.push( oBodyLayer );
	oComponents.push( oTrimLayer );
	oComponents.push( oAccent1Layer );
	oComponents.push( oAccent2Layer );
	
	var sActiveID = getCookie( 'activeSchemeComponent' );
	
	if( sActiveID )
		setActiveComponent( sActiveID )
	
}

function setActiveComponent( sID )
{
	for( var nIndex = 0; nIndex < oComponents.length; nIndex++ )
	{
		var oComponent = oComponents[ nIndex ];
		
		if( oComponent.id == sID )
		{
			oComponent.style.border = 'solid 1px #666666';			
			oActiveComponent = oComponent;
		}
		else			
		{
			oComponent.style.border = 'none';			
		}
	}
}

function onComponentClick()
{
	setActiveComponent( this.id );	
	setCookie( 'activeSchemeComponent', this.id );	
}

function setComponentColor( sColorID )
{
	if( oActiveComponent )
	{	
		var sURL 		= '/services/colorscheme.asmx';
		var sAction 	= 'ColorSchemeService/UpdateColorScheme';
		var sComponent	= oActiveComponent.componentName;
		var sRequest 	= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:col="ColorSchemeService"><soapenv:Header/><soapenv:Body><col:UpdateColorScheme><col:sComponent>' + sComponent + '</col:sComponent><col:sColorID>' + sColorID + '</col:sColorID></col:UpdateColorScheme></soapenv:Body></soapenv:Envelope>';
		
		var oHttpRequest = new HttpRequest( onUpdateColorScheme, sURL );
		
		oHttpRequest.executeSoap( sAction, sRequest );
	}
	else
	{
		alert( 'Please select an area on your scheme' );
	}
}


function onUpdateColorScheme( oDocument )
{
	var oResultElement 	= oDocument.getElementsByTagName("UpdateColorSchemeResult")[ 0 ];			
	var sColor			= oResultElement.childNodes[ 0 ].nodeValue;
	
	if( oActiveComponent )
		oActiveComponent.style.backgroundColor = sColor;
}


var oColorSearch = new Object();

function registerColorSearchFields( sURL, sColorNameID, sColorFamilyID )
{
	oColorSearch.URL = sURL;
	oColorSearch.colorName = document.getElementById( sColorNameID );			
	oColorSearch.colorFamily = document.getElementById( sColorFamilyID );	
}

function onColorSearch()
{
	var sColorName = oColorSearch.colorName.value;
	var sColorFamily = oColorSearch.colorFamily.options[ oColorSearch.colorFamily.selectedIndex ].value;
	var sURL = oColorSearch.URL;
	
	sURL = sURL.replace( oColorSearch.colorName.id, sColorName );
	sURL = sURL.replace( oColorSearch.colorFamily.id, sColorFamily );
	
	location.href = sURL;
}

var oColorBrowser = new Object();

function registerColorBrowser( sColorBrowserID, sColorNameID, sColorFamilyID, sSearchResultsID )
{
	oColorBrowser.colorBrowser = document.getElementById( sColorBrowserID );
	oColorBrowser.colorName = document.getElementById( sColorNameID );
	oColorBrowser.colorFamily = document.getElementById( sColorFamilyID );
	oColorBrowser.searchResults = document.getElementById( sSearchResultsID );
	
	if( oColorBrowser.colorBrowser )
		hideLayer( oColorBrowser.colorBrowser.id );
	
	if( oColorBrowser.searchResults )
		hideLayer( oColorBrowser.searchResults.id );
		
}

function getElementPosition( sID )
{
	var nLeft 	= 0;
	var nTop 	= 0;

	oElement = document.getElementById( sID );
	
	if( oElement.offsetParent )
	{
		do
		{
			nLeft += oElement.offsetLeft;
			nTop += oElement.offsetTop;
		}
		while( oElement = oElement.offsetParent )		
	}
	
	return [ nLeft, nTop ];	
}


function getElementSize( sID )
{
}

function startColorBrowser( sTargetID, sQuantityID )
{	
	if( oColorBrowser )
	{		
		oColorBrowser.target = document.getElementById( sTargetID );
		oColorBrowser.quantity = document.getElementById( sQuantityID );
		
		var aTargetPosition = getElementPosition( sTargetID );
		
		oColorBrowser.colorBrowser.style.left = aTargetPosition[ 0 ];
		oColorBrowser.colorBrowser.style.top = aTargetPosition[ 1 ] + oColorBrowser.colorBrowser.offsetHeight + 22;
		
		fadeLayer( oColorBrowser.colorBrowser.id, 0, 100, 20, 1 );
	}	
}

function onColorBrowserSearch()
{
	var sColor		= oColorBrowser.colorName.value;
	var sFamily		= oColorBrowser.colorFamily.options[ oColorBrowser.colorFamily.selectedIndex ].value;	
	var sURL 		= '/services/colorsearch.asmx';
	var sAction;
	var sRequest;
	
	if( sFamily )
	{
		oColorBrowser.searchResultType = 'FindColorsInFamilyResult';
		sAction 	= 'ColorSearchService/FindColorsInFamily';
		sRequest 	= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:col="ColorSearchService"><soapenv:Header/><soapenv:Body><col:FindColorsInFamily><col:nColorFamilyID>' + sFamily + '</col:nColorFamilyID><col:sColor>' + sColor + '</col:sColor></col:FindColorsInFamily></soapenv:Body></soapenv:Envelope>';
	}
	else
	{
		oColorBrowser.searchResultType = 'FindColorsResult';
		sAction 	= 'ColorSearchService/FindColors';
		sRequest 	= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:col="ColorSearchService"><soapenv:Header/><soapenv:Body><col:FindColors><col:sColor>' + sColor + '</col:sColor></col:FindColors></soapenv:Body></soapenv:Envelope>';
	}
	
	var oHttpRequest = new HttpRequest( onColorBrowserSearchResult, sURL );
	
	document.body.style.cursor = 'wait';
	
	oHttpRequest.executeSoap( sAction, sRequest );	
}

function onColorBrowserSearchResult( oDocument )
{
	var oResultElement 	= oDocument.getElementsByTagName( oColorBrowser.searchResultType )[ 0 ];			
	var sResult = '';
	
	for( var nIndex = 0; nIndex < oResultElement.childNodes.length; nIndex++ )
	{
		var oNode = oResultElement.childNodes.item( nIndex );
		var sColorID = oNode.getElementsByTagName("ColorID")[0].firstChild.nodeValue;
		var sColorName = oNode.getElementsByTagName("ColorName")[0].firstChild.nodeValue;
		var sWebColor = oNode.getElementsByTagName("WebColor")[0].firstChild.nodeValue;
		var sAction = "javascript:onColorSearchResultClick( '" + sColorID + "' );";
		var nSwatchSize = 101;
				
		sResult += '<div class="colorSearchResult" style="background-color:' + sWebColor + ';height:' + nSwatchSize + 'px;width:' + nSwatchSize + 'px;"><div class="colorSearchResultName">' + sColorName + '</div><a href="' + sAction + '"><img src="/images/color_clear.gif" alt="' + sColorName + ' (' + sColorID + ')" border="0" style="height:' + nSwatchSize + 'px;width:' + nSwatchSize + 'px;"/></a><br/></div>';
	}
	
	oColorBrowser.searchResults.innerHTML = sResult;
	showLayer( oColorBrowser.searchResults.id );
	document.body.style.cursor = 'default';	
}


function onColorSearchResultClick( sColorID )
{
	oColorBrowser.target.value = sColorID;
	
	if( oColorBrowser.quantity.value.length == 0 )
		oColorBrowser.quantity.value = '1';
	
	fadeLayer( oColorBrowser.colorBrowser.id, 100, 0, 20, 1 );
}



// ajax text box field


function onAccountSearchSelect( sID, sAccount )
{
	var oTextBox = document.getElementById( sID );
	
	oTextBox.value = sAccount.replace( "&apos;", "'" );
	hideLayer( oTextBox.optionsLayer.id );
}

function onAccountSearchResult( oDocument, oObject )
{
	var oResultElement 	= oDocument.getElementsByTagName("FindAccountResult")[ 0 ];			
	var sResult = '';
	
	for( var nIndex = 0; nIndex < oResultElement.childNodes.length; nIndex++ )
	{
		var oNode = oResultElement.childNodes.item( nIndex );
		var sAccountName = oNode.getElementsByTagName("AccountName")[0].firstChild.nodeValue;
		var sAccountCity = oNode.getElementsByTagName("AccountCity")[0].firstChild.nodeValue;
		var sAccountState = oNode.getElementsByTagName("AccountState")[0].firstChild.nodeValue;
		var sFunction = "javascript:onAccountSearchSelect( '" + oObject.id + "', '" + sAccountName.replace( "'", "&apos;" ) + "' );";
		
		sResult +=  '<a href="' + sFunction + '" class="ajaxTextBoxOptionOptionItem"><b>' + sAccountName + '</b><br/>' + sAccountCity + ', ' + sAccountState + '</a>';
	}
	
	if( oObject )
	{
		if( sResult.length == 0 )
		{
			hideLayer( oObject.optionsLayer.id );
		}
		else
		{
			oObject.optionsLayer.innerHTML = sResult;	
			showLayer( oObject.optionsLayer.id );
		}
	}
}

var oAccountSearchService = new Object();

oAccountSearchService.serviceUrl = '/services/accountsearch.asmx';
oAccountSearchService.action = 'AccountSearchService/FindAccount';
oAccountSearchService.request = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:acc="AccountSearchService"><soapenv:Header/><soapenv:Body><acc:FindAccount><acc:sAccount><value/></acc:sAccount></acc:FindAccount></soapenv:Body></soapenv:Envelope>'
oAccountSearchService.handler = onAccountSearchResult;

registerAjaxTextBoxService( 'accountSearch', oAccountSearchService );


var oSchemeInformationControls = new Object();

function registerSchemeInformationControls( sFieldsLayerID, sSchemeNumberID, sNameID, sAddressID, sCityID, sStateID, sZipID, sPhoneID )
{
	oSchemeInformationControls.fieldsLayer = document.getElementById( sFieldsLayerID );
	oSchemeInformationControls.schemeNumberTextBox = document.getElementById( sSchemeNumberID );
	oSchemeInformationControls.nameTextBox = document.getElementById( sNameID );
	oSchemeInformationControls.addressTextBox = document.getElementById( sAddressID );
	oSchemeInformationControls.cityTextBox = document.getElementById( sCityID );
	oSchemeInformationControls.stateTextBox = document.getElementById( sStateID );
	oSchemeInformationControls.zipTextBox = document.getElementById( sZipID );
	oSchemeInformationControls.phoneTextBox = document.getElementById( sPhoneID );
	
	hideLayer( oSchemeInformationControls.fieldsLayer.id );
}

function onSchemeInformationShowUpdate()
{	
	var scrolledX, scrolledY; 	
	if( self.pageYoffset )
	{ 
		scrolledX = self.pageXoffset; 
		scrolledY = self.pageYoffset; 
	} 
	else if( document.documentElement && document.documentElement.scrollTop )
	{ 
		scrolledX = document.documentElement.scrollLeft; 
		scrolledY = document.documentElement.scrollTop; 
	} 
	else if( document.body ) 
	{ 
		scrolledX = document.body.scrollLeft; 
		scrolledY = document.body.scrollTop; 
	} 
	
	var centerX, centerY; 
	if( self.innerHeight ) 
	{ 
		centerX = self.innerWidth; 
		centerY = self.innerHeight; 
	}
	else if( document.documentElement && document.documentElement.clientHeight ) 
	{ 
		centerX = document.documentElement.clientWidth; 
		centerY = document.documentElement.clientHeight; 
	}
	else if( document.body ) 
	{ 
		centerX = document.body.clientWidth; 
		centerY = document.body.clientHeight; 
	} 	
	
	var nLeft = scrolledX + (centerX - 310) / 2; 
	var nTop = scrolledY + (centerY - 300) / 2; 	
	
	oSchemeInformationControls.fieldsLayer.style.left = nLeft;
	oSchemeInformationControls.fieldsLayer.style.top = nTop;
	  
	showLayer( oSchemeInformationControls.fieldsLayer.id );
}

function onSchemeInformationHideUpdate()
{
	hideLayer( oSchemeInformationControls.fieldsLayer.id );
}

function onSchemeInformationUpdate()
{
	var sNumber 	= oSchemeInformationControls.schemeNumberTextBox.value;
	var sName 		= oSchemeInformationControls.nameTextBox.value;
	var sAddress 	= oSchemeInformationControls.addressTextBox.value;
	var sCity 		= oSchemeInformationControls.cityTextBox.value;
	var sState 		= oSchemeInformationControls.stateTextBox.value;
	var sZip 		= oSchemeInformationControls.zipTextBox.value;
	var sPhone 		= oSchemeInformationControls.phoneTextBox.value;
	var sURL 		= '/services/colorscheme.asmx';
	var sAction 	= 'ColorSchemeService/UpdateColorSchemeInformation';
	var sRequest 	= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:col="ColorSchemeService"><soapenv:Header/><soapenv:Body><col:UpdateColorSchemeInformation><col:sSchemeNumber>' + sNumber + '</col:sSchemeNumber><col:sName>' + sName + '</col:sName><col:sAddress>' + sAddress + '</col:sAddress><col:sCity>' + sCity + '</col:sCity><col:sState>' + sState + '</col:sState><col:sZip>' + sZip + '</col:sZip><col:sPhone>' + sPhone + '</col:sPhone></col:UpdateColorSchemeInformation></soapenv:Body></soapenv:Envelope>';
	
	var oHttpRequest = new HttpRequest( onSchemeInformationUpdateResult, sURL );
	
	oHttpRequest.executeSoap( sAction, sRequest );	
}

function onSchemeInformationUpdateResult()
{
	hideLayer( oSchemeInformationControls.fieldsLayer.id );
	
	window.open( '/svg/colorarrangement.pdf', '_blank' );
}