@Override
	public StringBuffer getOOXML( String catAxisId, String valAxisId, String serAxisId )
	{
		StringBuffer cooxml = new StringBuffer();

		// chart type: contains chart options and series data
		cooxml.append( "<c:barChart>" );
		cooxml.append( "\r\n" );
		cooxml.append( "<c:barDir val=\"col\"/>" );
		cooxml.append( "<c:grouping val=\"" );

		if( is100PercentStacked() )
		{
			cooxml.append( "percentStacked" );
		}
		else if( isStacked() )
		{
			cooxml.append( "stacked" );
		}
		else if( isClustered() )
		{
			cooxml.append( "clustered" );
		}
		else
		{
			cooxml.append( "standard" );
		}
		cooxml.append( "\"/>" );
		cooxml.append( "\r\n" );
		// vary colors???

		// *** Series Data:	ser, cat, val for most chart types
		cooxml.append( getParentChart().getChartSeries().getOOXML( getChartType(), false, 0 ) );

		// chart data labels, if any
		//TODO: FINISH		    	
		//cooxml.append(getDataLabelsOOXML(cf));
		//TODO: FINISH DR0P LINES    			
		///    			if (this.hasDropLines() )	/* Area, Line, Stock*/
		//				cooxml.append()
		if( !getChartOption( "Gap" ).equals( "150" ) )
		{
			cooxml.append( "<c:gapWidth val=\"" + getChartOption( "Gap" ) + "\"/>" );    // default= 0
		}
		if( !getChartOption( "Overlap" ).equals( "0" ) )
		{
			cooxml.append( "<c:overlap val=\"" + getChartOption( "Overlap" ) + "\"/>" );    // default= 0
		}
		// Series Lines	
		ChartLine cl = cf.getChartLinesRec();
		if( cl != null )
		{
			cooxml.append( cl.getOOXML() );
		}

		// axis ids	 - unsigned int strings
		cooxml.append( "<c:axId val=\"" + catAxisId + "\"/>" );
		cooxml.append( "\r\n" );
		cooxml.append( "<c:axId val=\"" + valAxisId + "\"/>" );
		cooxml.append( "\r\n" );

		cooxml.append( "</c:barChart>" );
		cooxml.append( "\r\n" );

		return cooxml;
	}