@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:line3DChart>" );
		cooxml.append( "\r\n" );
		cooxml.append( "<c:grouping val=\"" );

		if( is100PercentStacked() )
		{
			cooxml.append( "percentStacked" );
		}
		else if( isStacked() )
		{
			cooxml.append( "stacked" );
		}
		//			} else if (this.isClustered())
		//				grouping="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));
		//dropLines
		ChartLine cl = cf.getChartLinesRec( ChartLine.TYPE_DROPLINE );
		if( cl != null )
		{
			cooxml.append( cl.getOOXML() );
		}
		// gapDepth
		int gapdepth = getGapDepth();
		if( gapdepth != 0 )
		{
			cooxml.append( "<c:gapDepth val=\"" + gapdepth + "\"/>" );
		}

		// 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:axId val=\"" + serAxisId + "\"/>" );
		cooxml.append( "\r\n" );
		cooxml.append( "</c:line3DChart>" );
		cooxml.append( "\r\n" );

		return cooxml;
	}