function FCKeditor_IsCompatibleBrowser()
{
	var sAgent = navigator.userAgent.toLowerCase() ;

	// Internet Explorer 5.5+
	if ( /*@cc_on!@*/false && sAgent.indexOf("mac") == -1 )
	{
		var sBrowserVersion = navigator.appVersion.match(/MSIE (.\..)/)[1] ;
		return ( sBrowserVersion >= 5.5 ) ;
	}

	// Gecko (Opera 9 tries to behave like Gecko at this point).
	if ( navigator.product == "Gecko" && navigator.productSub >= 20030210 && !( typeof(opera) == 'object' && opera.postError ) )
		return true ;

	// Opera 9.50+
	if ( window.opera && window.opera.version && parseFloat( window.opera.version() ) >= 9.5 )
		return true ;

	// Adobe AIR
	// Checked before Safari because AIR have the WebKit rich text editor
	// features from Safari 3.0.4, but the version reported is 420.
	if ( sAgent.indexOf( ' adobeair/' ) != -1 )
		return ( sAgent.match( / adobeair\/(\d+)/ )[1] >= 1 ) ;	// Build must be at least v1

	// Safari 3+
	if ( sAgent.indexOf( ' applewebkit/' ) != -1 )
		return ( sAgent.match( / applewebkit\/(\d+)/ )[1] >= 522 ) ;	// Build must be at least 522 (v3)

	return false ;
}
Replace all <textarea> elements available in the document with FCKeditor
instances.

	// Replace all <textarea> elements in the page.
	FCKeditor.ReplaceAllTextareas() ;

	// Replace all <textarea class="myClassName"> elements in the page.
	FCKeditor.ReplaceAllTextareas( 'myClassName' ) ;

	// Selectively replace <textarea> elements, based on custom assertions.
	FCKeditor.ReplaceAllTextareas( function( textarea, editor )
		{
			// Custom code to evaluate the replace, returning false if it
			// must not be done.
			// It also passes the "editor" parameter, so the developer can
			// customize the instance.
		} ) ;