// <c> sugr gmbh tomas cabral 2007

function numberFormat(nStr)
{
        nStr += '';
        x = nStr.split('.');
        x1 = x[0];
        x2 = x.length > 1 ? '.' + x[1] : '';
        var rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
                x1 = x1.replace(rgx, '$1' + ',' + '$2');
        }
        return x1 + x2;
}


var inputd = new Array();
inputd[0] = new Array(1.5,0,0,125000,250000,20000);
inputd[1] = new Array(1,0,0,125000,250000,10000);
inputd[2] = new Array(0.75,5,0,100000,0,0);
inputd[3] = new Array(0,5,-2,100000,0,10000);
inputd[4] = new Array(0,0,-3,0,0,5000);
inputd[5] = new Array(0,2,-10,0,0,5000);
inputd[6] = new Array(0,3,-8,0,0,0);
inputd[7] = new Array(0,3,-7,0,0,0);
inputd[8] = new Array(0,4,-4,150000,0,0);
inputd[9] = new Array(0,3,-6,150000,0,10000);
inputd[10] = new Array(0,1,-5,100000,0,15000);
inputd[11] = new Array(0,0,-5,100000,0,15000);
inputd[12] = new Array(0,3,0,0,0,20000);
inputd[13] = new Array(0,5,-2,0,0,20000);
inputd[14] = new Array(0,6,-3,0,0,25000);
inputd[15] = new Array(0,10,-10,0,0,25000);
inputd[16] = new Array(0,10,-8,150000,250000,20000);
inputd[17] = new Array(0,10,-7,125000,250000,20000);
inputd[18] = new Array(0,15,-4,100000,0,15000);
inputd[19] = new Array(-1,10,-6,100000,0,10000);
inputd[20] = new Array(-2,10,-5,90000,0,5000);
inputd[21] = new Array(-3,6,-5,85000,0,0);
inputd[22] = new Array(-3,6,0,0,0,0);
inputd[23] = new Array(-3,5,0,0,0,0);
inputd[24] = new Array(-3,5,0,0,0,5000);
inputd[25] = new Array(-3,3,0,0,0,5000);
inputd[26] = new Array(-2,0,0,150000,250000,10000);
inputd[27] = new Array(-1,1,0,150000,250000,10000);
inputd[28] = new Array(0,1,0,100000,0,15000);
inputd[29] = new Array(0,2,0,100000,0,15000);
inputd[30] = new Array(0,2,0,100000,0,20000);
inputd[31] = new Array(0,1,0,100000,0,20000);
inputd[32] = new Array(0,0,0,0,0,10000);
inputd[33] = new Array(0,2,-2,0,0,10000);
inputd[34] = new Array(0,1,-3,0,0,0);
inputd[35] = new Array(0,5,-10,0,0,0);
inputd[36] = new Array(0,5,-8,150000,0,0);
inputd[37] = new Array(0,3,-7,150000,0,0);
inputd[38] = new Array(0,0,-4,100000,0,0);
inputd[39] = new Array(0,1,-6,100000,0,0);
inputd[40] = new Array(0,2,-5,0,0,0);
inputd[41] = new Array(0,3,-10,0,0,10000);
inputd[42] = new Array(1,2,-8,0,0,10000);
inputd[43] = new Array(1.1,2,-7,0,0,15000);
inputd[44] = new Array(1.5,3,-4,150000,250000,15000);
inputd[45] = new Array(2,3,-6,150000,250000,20000);
inputd[46] = new Array(2.5,4,-5,100000,0,20000);
inputd[47] = new Array(3,3,-5,100000,0,10000);

var column01 = "<chart animation='1' caption='Incremental sales' yAxisName='Sales Volume' bgColor='002E5C,FFFFFF' bgAlpha='6,100' bgAngle='90' bgRatio='10,90' yAxisMaxValue='800000' alternateHGridColor='002E5C' alternateHGridAlpha='5' shownames='1' showvalues='0' decimals='0' useRoundEdges='0' legendBorderAlpha='0' outCnvBaseFontColor='333333'> <categories> <category label='TV' /> <category label='Outdoor' /> <category label='Promotion' /> </categories><dataset seriesName='Base Plan Sales' color='525052' showValues='0'> <set value='390808' /> <set value='145463' /> <set value='470813' /> </dataset><dataset seriesName='Test Plan Sales' color='D30547' showValues='0'>";

var column02 = " </dataset>  <styles> <definition> <style name='CaptionFont' type='font' face='Verdana' size='12' /> </definition> <application> <apply toObject='CAPTION' styles='CaptionFont' /> <apply toObject='SUBCAPTION' styles='CaptionFont' /> </application> <definition> <style name='myLegendFont' type='font' face='Arial' size='10' color='333333'/> </definition> <application> <apply toObject='Legend' styles='myLegendFont' /> </application></styles>  </chart>";


var line01 = "<chart animation='1' yAxisMinValue='100000' yAxisMaxValue='350000' yAxisName='Sales Volume' xAxisName='Weeks' decimals='0' outCnvBaseFontColor='333333' caption='Sales Development' subcaption='' lineThickness='1' showValues='0' formatNumberScale='1' anchorRadius='2'   divLineAlpha='20' divLineColor='CC3300' divLineIsDashed='0' legendBorderAlpha='0' showAlternateHGridColor='1' alternateHGridAlpha='5' alternateHGridColor='002E5C' shadowAlpha='40' labelStep='3' numvdivlines='5' chartRightMargin='35' bgColor='002E5C,FFFFFF' bgAlpha='6,100' bgAngle='90' bgRatio='10,90'> <categories > <category label='1' /> <category label='2' /> <category label='3' /> <category label='4' /> <category label='5' /> <category label='6' /> <category label='7' /> <category label='8' /> <category label='9' /> <category label='10' /> <category label='11' /> <category label='12' /> <category label='13' /> <category label='14' /> <category label='15' /> <category label='16' /> <category label='17' /> <category label='18' /> <category label='19' /> <category label='20' /> <category label='21' /> <category label='22' /> <category label='23' /> <category label='24' /> <category label='25' /> <category label='26' /> <category label='27' /> <category label='28' /> <category label='29' /> <category label='30' /> <category label='31' /> <category label='32' /> <category label='33' /> <category label='34' /> <category label='35' /> <category label='36' /> <category label='37' /> <category label='38' /> <category label='39' /> <category label='40' /> <category label='41' /> <category label='42' /> <category label='43' /> <category label='44' /> <category label='45' /> <category label='46' /> <category label='47' /> <category label='48' /> </categories><dataset seriesName='Base Plan Sales' color='525052' drawAnchors='0'> <set value='229468.13'/> <set value='209261.25'/> <set value='201562.5'/> <set value='191868.75'/> <set value='143051.25'/> <set value='126813'/> <set value='135750'/> <set value='139500'/> <set value='173550'/> <set value='168247.13'/> <set value='159432'/> <set value='153300'/> <set value='186303'/> <set value='189675'/> <set value='196638.75'/> <set value='190575'/> <set value='232702.5'/> <set value='234456.56'/> <set value='249660'/> <set value='187605'/> <set value='168894.38'/> <set value='125256.56'/> <set value='136500'/> <set value='131250'/> <set value='135318.75'/> <set value='124493.25'/> <set value='154440'/> <set value='180501.75'/> <set value='181332'/> <set value='187464'/> <set value='192439.5'/> <set value='186144.75'/> <set value='159300'/> <set value='162486'/> <set value='144000'/> <set value='138750'/> <set value='162703.13'/> <set value='155193.75'/> <set value='145125'/> <set value='142706.25'/> <set value='141750'/> <set value='136201.5'/> <set value='154521'/> <set value='164769.75'/> <set value='228343.5'/> <set value='233714.25'/> <set value='227510.25'/> <set value='218304'/> </dataset> <dataset seriesName='Test Plan Sales' color='D30547' drawAnchors='0'>";

var line03 = "</dataset><styles> <definition> <style name='CaptionFont' type='font' face='Arial' size='12' /> </definition> <application> <apply toObject='CAPTION' styles='CaptionFont' /> <apply toObject='SUBCAPTION' styles='CaptionFont' /> </application> <definition> <style name='myLegendFont' type='font' face='Arial' size='10' color='333333'/> </definition> <application> <apply toObject='Legend' styles='myLegendFont' /> </application> </styles> </chart>";

var dataArr = new Array();
var sumVals = { tv: {  basept: 390808 , testpt: 0, diffpt: 0 },
	        out: {  basept: 145463 , testpt: 0, diffpt: 0 },
		promo: {  basept: 470813 , testpt: 0, diffpt: 0 } };
var totalVals = { basept: 1007083 , testpt: 0, diffpt: 0 }; 

var cursBase = new Array(100, 100, 100, 100, 100, 100);
var curs = new Array(100, 100, 100, 100, 100, 100);



function updateTables()
{ $('basept').innerHTML = numberFormat(totalVals['basept']);
  $('testpt').innerHTML = numberFormat(totalVals['testpt']);
  $('diffpt').innerHTML = numberFormat(totalVals['diffpt']);

  $('basetv').innerHTML = numberFormat(sumVals['tv']['basept']);
  $('testtv').innerHTML = numberFormat(sumVals['tv']['testpt']);
  $('difftv').innerHTML = numberFormat(sumVals['tv']['diffpt']);

  $('baseout').innerHTML = numberFormat(sumVals['out']['basept']);
  $('testout').innerHTML = numberFormat(sumVals['out']['testpt']);
  $('diffout').innerHTML = numberFormat(sumVals['out']['diffpt']);

  $('basepromo').innerHTML = numberFormat(sumVals['promo']['basept']);
  $('testpromo').innerHTML = numberFormat(sumVals['promo']['testpt']);
  $('diffpromo').innerHTML = numberFormat(sumVals['promo']['diffpt']);
}


function calcData()
{ var cc = 150000;
  var cof = new Array(0.1, 0.035, 0.025, 0.00000075, 0.00000045, 0.0000062);

  var sumTV = 0, sumOut = 0, sumProm = 0;

  var text; 
  for ( var i = 0; i < inputd.length; i++ )
  { 
    var season = inputd[i][0] * cof[0] *(curs[0]/100) * cc; //$Input.B5*$Output.C$5*(C$3/100)*$B$7
    var distr  = inputd[i][1] * cof[1] *(curs[1]/100) * cc; //$Input.C5*$Output.D$5*(D$3/100)*$B$7
    var price  = inputd[i][2] * cof[2] *(curs[2]/100) * cc; //$Input.D5*$Output.E$5*(E$3/100)*$B$7  

    var tv     = inputd[i][3] * cof[3] *(curs[3]/100) * (cc+season+distr+price); //$Input.E5*$Output.F$5*(F$3/100)*($B$7+$C9+$D9+$E9)
    var outdoor = inputd[i][4] * cof[4] *(curs[4]/100) * (cc+season+distr+price); //$Input.F5*$Output.G$5*(G$3/100)*($B$7+$C9+$D9+$E9)
    var promotions = inputd[i][5] * cof[5] *(curs[5]/100) * (cc+season+distr+price); //$Input.G5*$Output.H$5*(H$3/100)*($B$7+$C9+$D9+$E9)

    sumTV += tv; sumOut += outdoor; sumProm += promotions;

    var testsales = cc+season+distr+price+tv+outdoor+promotions; //SUMME(B9:I9)

//if ( i == 0 ) alert(i + " season: " + season + " distr: " + distr + " price: " + price + " tv: " + tv + " outdoor: " + outdoor + " promotions: " + promotions + " testsales: " + testsales);

    text = text + "<set value='" + testsales + "'/>"; 
  }

  dataArr[0] = text;

  dataArr[1] = "<set value='" + sumTV + "' /> <set value='" + sumOut + "' /> <set value='" + sumProm + "' />"; 

  sumVals['tv']['testpt'] = Math.round(sumTV); 
  sumVals['out']['testpt'] = Math.round(sumOut);
  sumVals['promo']['testpt'] = Math.round(sumProm);

  sumVals['tv']['diffpt'] = sumVals['tv']['testpt'] - sumVals['tv']['basept'];
  sumVals['out']['diffpt'] = sumVals['out']['testpt'] - sumVals['out']['basept'];
  if ( sumVals['out']['diffpt'] == -1 ) sumVals['out']['diffpt'] = 0;
  sumVals['promo']['diffpt'] = sumVals['promo']['testpt'] - sumVals['promo']['basept'];

  totalVals['testpt'] = Math.round(sumTV + sumOut + sumProm);
  totalVals['diffpt'] = totalVals['testpt'] - totalVals['basept'];

}

function getLineData()
{ if ( !FIRSTTIME ) return line01 + dataArr[0] + line03;
  else return line01 + line03;
}

function getColumnData()
{ return column01 + dataArr[1] + column02;
}

//var chart01 = new FusionCharts("../Charts/MSLine.swf", "ChartId01", "413", "250", "0", "0");
//var chart02 = new FusionCharts("../Charts/MSColumn2D.swf", "ChartId02", "413", "250", "0", "0");

var chartLoaded = false;
var FIRSTTIME = false;

function FC_Rendered(domId){
                        if (domId=="ChartId01"){
				calcData();

                                chartLoaded = true;

                                var chartObj = getChartFromId(domId);
				FIRSTTIME = true;
                                chartObj.setDataXML(getLineData());
				FIRSTTIME = false;
                        }

			if (domId=="ChartId02"){
				calcData();

                                chartLoaded = true;

                                var chartObj = getChartFromId(domId);
                                chartObj.setDataXML(getColumnData());
                        }

                        return true;
                }


function renderCharts()
{ calcData();

var chart01 = new FusionCharts("../Charts/MSLine.swf", "ChartId01", "413", "250", "0", "1");
var chart02 = new FusionCharts("../Charts/MSColumn2D.swf", "ChartId02", "413", "250", "0", "1");

  chart01.setDataXML("<chart></chart>");
  chart01.render("chartdiv01");
  chart02.setDataXML("<chart></chart>");
  chart02.render("chartdiv02");
  updateTables();

}

function updateCharts()
{ calcData();

  column01 = column01.replace(/animation='1'/g,"animation='0'");
  line01   = line01.replace(/animation='1'/g,"animation='0'");

  var chart01 = getChartFromId("ChartId01");
  var chart02 = getChartFromId("ChartId02");

  chart01.setDataXML(getLineData());
  chart02.setDataXML(getColumnData());
  updateTables();
}

function formatVal(val)
{ return val > 0 ? '+' + Math.ceil(val) + '%' : Math.floor(val) + '%'; 
}

var Sliders = new Array();

function resetSliders()
{  FIRSTTIME = true;
   Sliders['handle1'].setValue(0,0);
   Sliders['handle2'].setValue(0,0);
   Sliders['handle3'].setValue(0,0);
   Sliders['handle4'].setValue(0,0);
   Sliders['handle5'].setValue(0,0);
   FIRSTTIME = false;
}

function addSliders()
{

   Sliders['handle1'] = new Control.Slider('handle1','track1',{
      range:$R(-10,10),
      sliderValue: 0.1,
      onSlide:function(v){$('debug1').innerHTML= formatVal(v);},
      onChange:function(v){
                curs[1] = cursBase[1] + cursBase[1] * v *5 / 100;
                $('debug1').innerHTML= formatVal(v);
                updateCharts();
                }
        });
    Sliders['handle2'] = new Control.Slider('handle2','track2',{
      range:$R(-10,10),
      sliderValue: 0.1,
      onSlide:function(v){$('debug2').innerHTML= formatVal(v);},
      onChange:function(v){
                curs[2] = cursBase[2] + cursBase[2] * v *5 / 100;
                $('debug2').innerHTML= formatVal(v); 
                updateCharts();
                }
        });
    Sliders['handle3'] = new Control.Slider('handle3','track3',{
      range:$R(-25,25),
      sliderValue: 0.1,
      onSlide:function(v){$('debug3').innerHTML= formatVal(v);},
      onChange:function(v){
                curs[3] = cursBase[3] + cursBase[3] * v / 100;
                $('debug3').innerHTML= formatVal(v); 
                updateCharts();
                }
        });
    Sliders['handle4'] = new Control.Slider('handle4','track4',{
      range:$R(-25,25),
      sliderValue: 0.1,
      onSlide:function(v){$('debug4').innerHTML= formatVal(v);},
      onChange:function(v){
                curs[4] = cursBase[4] + cursBase[4] * v / 100;
                $('debug4').innerHTML= formatVal(v); 
                updateCharts();
                }
        });
    Sliders['handle5'] =  new Control.Slider('handle5','track5',{
      range:$R(-25,25),
      sliderValue: 0.1,
      onSlide:function(v){$('debug5').innerHTML= formatVal(v);},
      onChange:function(v){
                curs[5] = cursBase[5] + cursBase[5] * v / 100;
                $('debug5').innerHTML= formatVal(v); 
                updateCharts();
                }
        });

} 
