function ClientDetails( showDetails ) {
	
	var clientDetailsList = document.getElementById( "client_details_list" );
	if( !showDetails ) { clientDetailsList.style.visibility = "hidden"; }
	
	this.DOM_ENABLED = true;
	this.BROWSER_NAME = document.getElementById( "client_browser" ).firstChild.nodeValue;
	this.BROWSER_VERSION = document.getElementById( "client_version" ).firstChild.nodeValue;
	this.FLASH_SUPPORTED = false;
	this.FLASH_VERSION = false;
	
	if( !document.getElementById || !document.createElement || !document.getElementsByTagName ) { this.DOM_ENABLED = false; }
	else { this.FLASH_SUPPORTED = supportsFlashVersion( "9.0.115" ); }
	
	var domListItem = document.createElement( "li" );
	var domSpan = document.createElement( "span" );
	var domTitle = document.createTextNode( "DOM Enabled: " );
	var domText = document.createTextNode( ( this.DOM_ENABLED ? "Yes" : "No" ) );
	domListItem.appendChild( domTitle );
	domListItem.appendChild( domSpan );
	domSpan.appendChild( domText );
	clientDetailsList.appendChild( domListItem );
	
	var flashListItem = document.createElement( "li" );
	var flashSpan = document.createElement( "span" );
	var flashTitle = document.createTextNode( "Flash Supported: " );
	var flashText = document.createTextNode( ( this.FLASH_SUPPORTED ? "Yes" : "No" ) );
	flashListItem.appendChild( flashTitle );
	flashListItem.appendChild( flashSpan );
	flashSpan.appendChild( flashText );
	clientDetailsList.appendChild( flashListItem );
	
}

function supportsFlashVersion( targetVersion ) {
	
	var pluginIsInstalled = false;
	var flashVersionSupported = false;
	
	var versionStack;
	var clientVersion = "";
	
	if( navigator.plugins != null && navigator.plugins.length > 0 ) {
		
		for( var i = 0; i < navigator.plugins.length; i++ ) {
			
			if( navigator.plugins[ i ].name.indexOf( "Shockwave Flash" ) > -1 ) { 
			
				pluginIsInstalled = true;
				clientVersion = navigator.plugins[ i ].description;
				
				break;
				
			}
			
		}
		
		if( clientVersion != "" ) {
			
			flashVersionSupported = compareFlashVersions( targetVersion, formatVersionString( clientVersion ) );
			
		}
		
	} else {
		
		var activeXObj;
		try {
			
			activeXObj = new ActiveXObject( "ShockwaveFlash.ShockwaveFlash" );
			clientVersion = activeXObj.GetVariable( "$version" );
			
		} catch ( e ) {
			
		}
		
		if( clientVersion ) {
			
			pluginIsInstalled = true;
			flashVersionSupported = compareFlashVersions( targetVersion, formatVersionString( clientVersion ) );
			
		}
		
	}
	
	return flashVersionSupported;
}

function compareFlashVersions( targetVersn, clientVersn ) {
	
	var targetVersionList = targetVersn.split( "." );
	var clientVersionList = clientVersn.split( "." );
	
	if( targetVersionList.length >= 3 && targetVersionList.length >= 3 ) {
		
		cMaj = parseInt( clientVersionList[ 0 ] );
		cMin = parseInt( clientVersionList[ 1 ] );
		cRev = parseInt( clientVersionList[ 2 ] );
		
		tMaj = parseInt( targetVersionList[ 0 ] );
		tMin = parseInt( targetVersionList[ 1 ] );
		tRev = parseInt( targetVersionList[ 2 ] );
		
	} else { return false; }

	var supported = false;
	
	if( cMaj > tMaj ) {
				
		supported = true;
		
	} else if( cMaj == tMaj ) {
	
		if( cMin > tMin ) {
			
			supported = true;	
			
		} else if( cMin == tMin ) {
		
			if( cRev > tRev || cRev == tRev ) {
				
				supported = true;	
				
			}
			
		}
		
	}
	
	return supported;
	
}

function formatVersionString( ver ) {
	
	return ver.match( /[\d]+/g ).join( "." );
	
}





