writer.style( ":link, :visited", "text-decoration: underline;", true );
	public void startReport( IReportContent report )	{		logger.log( Level.FINE, "[HTMLReportEmitter] Start emitter." ); //$NON-NLS-1$		this.report = report;		writer.open( out, "UTF-8" ); //$NON-NLS-1$		if ( isEmbeddable )		{			fixTransparentPNG( );			return;		}		writer.startWriter( );		writer.openTag( HTMLTags.TAG_HTML );		writer.openTag( HTMLTags.TAG_META );		writer.attribute( HTMLTags.ATTR_HTTP_EQUIV, "Content-Type" ); //$NON-NLS-1$ 		writer.attribute( HTMLTags.ATTR_CONTENT, "text/html; charset=UTF-8" ); //$NON-NLS-1$ 		writer.closeNoEndTag( );		writer.openTag( HTMLTags.TAG_HEAD );		writer.openTag( HTMLTags.TAG_STYLE );		writer.attribute( HTMLTags.ATTR_TYPE, "text/css" ); //$NON-NLS-1$		// output general styles		writer.style( "*", "text-decoration: none; vertical-align: baseline;", true ); //$NON-NLS-1$ //$NON-NLS-2$ 		writer.style(				"table", "border-collapse: collapse; empty-cells: show;", true ); //$NON-NLS-1$ //$NON-NLS-2$ 		writer.style(				":link, :visited", "text-decoration: underline;", true ); //$NON-NLS-1$ //$NON-NLS-2$ 				IStyle style;		StringBuffer styleBuffer = new StringBuffer( );		if ( report == null )		{			logger.log( Level.WARNING,					"[HTMLReportEmitter] Report object is null." ); //$NON-NLS-1$		}		else		{//			AttributeBuilder.buildStyle( styleBuffer, report.getNonInheritableDefaultStyle( ), this );//			writer.style( "*", styleBuffer.toString( ), true ); //$NON-NLS-1$			ArrayList styleList = new ArrayList( );			int styleNum = 0;			int m;			for ( int n = 0; n < report.getStyleCount( ); n++ )			{				styleBuffer.delete( 0, styleBuffer.capacity( ) );				style = report.getStyle( n );				if ( style != null )				{					if ( style.isEmpty( ) )					{						styleNameMapping.put( style.getName( ), null );					}					else					{						IStyle tempStyle;						for ( m = 0; m < styleNum; m++ )						{							tempStyle = (IStyle) styleList.get( m );							if ( style.isSameStyle( tempStyle ) )							{								styleNameMapping.put( style.getName( ),										tempStyle.getName( ) );								break;							}						}						if ( m == styleNum )						{							AttributeBuilder.buildStyle( styleBuffer, style,									this );							if ( styleBuffer.length( ) > 0 )							{								styleList.add( style );								styleNum++;								styleNameMapping.put( style.getName( ), style										.getName( ) );								writer.style( style.getName( ), styleBuffer										.toString( ), false );							}							else							{								styleNameMapping.put( style.getName( ), null );							}						}					}				}			}		}		writer.closeTag( HTMLTags.TAG_STYLE );		fixTransparentPNG( );		writer.closeTag( HTMLTags.TAG_HEAD );	}