var Fse; if (!Fse) Fse = {};

if( !Fse.Chart ) {
    Fse.Chart = {};
    Fse._chartObjects = new Array();
    Fse._chartBuilders = new Array();
}

Fse.Chart._addChart = function( sChartName, oChart ) {
    var oExistingChart = Fse._chartObjects[sChartName];
    Fse._chartObjects[sChartName] = oChart;
    return oExistingChart;
};

Fse.Chart.addChartBuilder = function( sChartName, fnBuilder ) {
    var fnExistingBuilder = Fse._chartBuilders[sChartName];
    Fse._chartBuilders[sChartName] = fnBuilder;
    return fnExistingBuilder;
};

Fse.Chart._initializeChart = function( sChartName ) {
    
    var oChart = Fse.Chart._getChart( sChartName );
    var fnBuilder = Fse.Chart._getChartBuilder( sChartName );
    if( ! fnBuilder ) {
        alert( "No builder for chart named " + sChartName );        
    }
    if( oChart && fnBuilder ) {
        fnBuilder( oChart );
    }
};

Fse.Chart._getChart = function( sChartName ) {
    return Fse._chartObjects[sChartName];    
};

Fse.Chart._getChartBuilder = function( sChartName ) {
    return Fse._chartBuilders[sChartName];    
};

Fse.Chart.addValue = function( sChartName, nValue, sName, bRepress) {
    var oChart = Fse.Chart._getChart( sChartName );
    if( oChart ) {
        return oChart.addChartValue( nValue, sName, bRepress );
    } else {
        alert( "No chart named " + sChartName );
    }
};
        
        
Fse.Chart.setTitle = function( sChartName, sText) {
    var oChart = Fse.Chart._getChart( sChartName );
    if( oChart ) {
        return oChart.setTitle( sText );
    } else {
        alert( "No chart named " + sChartName );
    }
};

Fse.Chart.setAxis = function( sChartName, sText ) {
    var oChart = Fse.Chart._getChart( sChartName );
    if( oChart ) {
        return oChart.setAxis( sText );
    } else {
        alert( "No chart named " + sChartName );
    }
};

Fse.Chart.showPie = function( sChartName ) {
    var oChart = Fse.Chart._getChart( sChartName );
    if( oChart ) {
        return oChart.showPie();
    } else {
        alert( "No chart named " + sChartName );
    }
};

Fse.Chart.showBar = function( sChartName ) {
    var oChart = Fse.Chart._getChart( sChartName );
    if( oChart ) {
        return oChart.showBar();
    } else {
        alert( "No chart named " + sChartName );
    }
};

Fse.Chart.emitSVG = function( sName, iWidth, iHeight, sClass ) {
    emitSVG( "fse-chart-parts.svg", sName, iWidth, iHeight, sClass );
};

Fse.Chart.embedTimeline = function( sName, iWidth, iHeight, sClass ) {
    emitSVG( "fse-chart-timeline.svg", sName, iWidth, iHeight, sClass );
};

Fse.Chart.embedGauge = function( sName, iWidth, iHeight, sClass ) {
    emitSVG( "fse-chart-gauge.svg", sName, iWidth, iHeight, sClass );
};


