// following three are for using spidermonkey from command line.
// 
// see: http://www.thefrontside.net/blog/learning_javascript_from_the_command_line
// 
/**
options( 'strict' );
options( 'werror' );
load( 'NumberFormat.js' );
load( 'jscharts.js' );
var alert = function( message ){ 
        print( message ); 
}
*/

function makeDefaultBarnettParams(){
        var sys = {
                englandPopn: 50.0,
                walesPopn: 3.0,
                populationRatio: 3.0/50.0,         //5.83/100.0,
                comparabilityFactor: 1.0,
                scalingFactor: 1.0                 
        }
        return sys;
}

/**
 * @param params - from makeDefaultBarnettParams() above
 * @return a float giving the equivalent change in £s for wales given english increase
*/
function calcBarnettChange( params, changeInEngland ){ 
        var change = changeInEngland * params.comparabilityFactor * params.populationRatio;
        return change;

}

/**
 * @return an array indexed by year with relative spending in wales as % of english spending
*/
function calcBarnettChangePerYear( params, 
                                   wales, 
                                   growthAssumption, 
                                   startYear, 
                                   endYear ){
      var relSpending = new Array();
      var england = 100.0;
      var oldengland = england;
      wales *= england * params.populationRatio;
      growthAssumption /= 100.0;
      for( year = startYear; year <= endYear; year++ ){
                england *= ( 1.0 + growthAssumption );
                changeInEngland = england - oldengland;
                var changeInWales = calcBarnettChange( params, changeInEngland );
                wales += changeInWales;
                /*
                print( "Year " + year  );
                print( "change in england " + changeInEngland );
                print( "=>change in wales " + changeInWales );
                var pcWales = changeInWales / params.walesPopn;
                var pcEngland = changeInEngland / params.englandPopn;
                print( "wales = " + wales );
                print( "england = " + england );
                print( "pcwales = " + pcWales );
                print( "pcengland = " + pcEngland );
                print( "" );
                */
                relSpending[ year ] = 100.0 * ( wales / england ) / params.populationRatio;
                oldengland = england;
        }
        return relSpending;
}  

/**
 * draw line chart to chartcontainer div using JSCharts
 * @param rels - array based at 0 of Wales/England
 * @return null
*/
function drawChart( rels, growthAssumption ){
        var byYear = new Array;
        year = 2010;
        for( i = 0; i < 30; i++ ){
                byYear[i] = [ year, rels[i] ];
                year++;
        }
        var myChart = new JSChart( 'chartcontainer', 'line' );
        myChart.setDataArray( byYear );
        // this draws a straight line at 100 
        var _100 = new Array( [2010, 100 ], [2040, 100 ] );
        myChart.setDataArray( _100 );
        myChart.setAxisNameX('Year');
        myChart.setAxisNameY('Wales/England');
        myChart.setTitle('Spending in Wales as % of Spending in England (' + growthAssumption+ "% Spending Growth)" );
        myChart.setTitleFontSize( 8 )
        myChart.setAxisNameFontSize( 6 )
        myChart.draw();
}

function showBarnett( tobj ){
        startYear = 2010;
	var growthAssumption = 6.0;
        if( tobj == null ){
              growthAssumption = 6.0;         
        } else {
              growthAssumption = tobj.value;
        }
        params = makeDefaultBarnettParams();
        endYear = 2040;
        walesStart = 1.12;
        rels = calcBarnettChangePerYear( 
                                   params, 
                                   walesStart, 
                                   growthAssumption, 
                                   2010 - startYear, 
                                   endYear - startYear );
        $( '#w2010' ).text( formatReal( rels[0], 1 ) );
        $( '#w2015' ).text( formatReal( rels[4], 1 ) );
        $( '#w2020' ).text( formatReal( rels[9], 1 ) );
        $( '#w2040' ).text( formatReal( rels[29], 1 ) );
        var gaf = formatReal( growthAssumption );
        $( '#growthAssumption' ).text( gaf );
        drawChart( rels, gaf );
}

function startFCK(){
       params = { 
                path: '/wales_funding/js/fckeditor/', 
                height: 220,
                toolbar: 'Basic'
       };
       $( 'input#btn-ajax' ).css( { display: 'block' } );
       $( '#have_your_say_text' ).fck( params );
       
}

function submissionComplete( response ){
        $('#latest_comment').html( response.responseText );
}

function ajaxSubmitComment(){
        params = { complete: submissionComplete };
        $('form#comment_submission').ajaxSubmit( params );
}
