function charityInfo(name){
  $.get(name,{},function(data){
    $('#charity_info').empty();
  //  $(data).prependTo('#charity_info');
    $('#charity_info').html(data);
  },"text");
}

function makePlot(name){

$.post("includes/fetch_data.php",{id: name, chart: 0}, function(data){
  $('#min_title').empty();
  $('#min_name,#chair_name').remove();
  $(data).prependTo('#min_title');
},"text");

$.jqplot.config.enablePlugins = true; 
   $.post("includes/fetch_data.php", {id: name, chart: 1}, function(data){
     $('#chart1').empty();
     var scale = new Scaling(0,arrayMax(data[0]));
     var tickArray = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray[n] = i;n++;}
     $.jqplot('chart1',data,{
                stackSeries: false,
                legend: {show: true,placement:"outsideGrid"},
                title: 'Money Raised',
                series:[{label:'Payroll deductions'},{label:'Other donations'},{label:'Events'}],
                axes:{
		  xaxis:{renderer:$.jqplot.CategoryAxisRenderer},
		  yaxis:{tickOptions:{formatString:'$%3.0f'},
		         ticks:tickArray}
		},
       		highlighter : {tooltipAxes: 'y',
			      yvalues: 1,
			      formatString:'<span class="jq-highlight">%s</div>'}
     });
   },"json");

   $.post("includes/fetch_data.php", {id: name, chart: 2}, function(data){
     $('#chart2').empty();
     var scale = new Scaling(arrayMin(data[0]),arrayMax(data[0]));
     var tickArray1 = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray1[n] = i;n++;}
     var scale = new Scaling(arrayMin(data[1]),arrayMax(data[1]));
     var tickArray2 = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray2[n] = i;n++;}
     $.jqplot('chart2',data,{
       		legend:{show:true,placement:"outsideGrid"},
       		title: 'Donors and Average Gift',
       		series:[{label:'Donors'},{label:'Average Gift',yaxis:'y2axis'}],
       		seriesDefaults: {pointLabels:{location:'n'}},
       		axesDefaults:{pad:1.3},
       		axes:{
		//  xaxis:{autoscale:true,tickOptions:{formatString:'%4.0f'},tickInterval:1},
		  xaxis:{renderer: $.jqplot.CategoryAxisRenderer},
		  yaxis:{ticks:tickArray1, tickOptions:{formatString:'%2.0f'}},
		  y2axis:{ticks:tickArray2, tickOptions:{formatString:'$%2.0f'}}
		},
       		highlighter : {tooltipAxes: 'y',
			      yvalues: 1,
			      formatString:'<span class="jq-highlight">%s</div>'}
     });
   },"json");

   $.post("includes/fetch_data.php", {id: name, chart: 3}, function(data){
     $('#chart3').empty();
     var scale = new Scaling(arrayMin(data),arrayMax(data));
     var tickArray = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray[n] = i;n++;}
     $.jqplot('chart3',data,{
       		legend:{show:true,placement:"outsideGrid"},
       		title: 'Participation Rate',
       		series:[{label:'percent'}],
       		seriesDefaults: {pointLabels:{location:'n'}},
       		axesDefaults:{pad:1.3},
       		axes:{
		//  xaxis:{autoscale:true,tickOptions:{formatString:'%4.0f'},tickInterval:1},
		  xaxis:{renderer: $.jqplot.CategoryAxisRenderer},
		  yaxis:{ tickOptions:{formatString:'%2.0f'}},
                          ticks:tickArray
		},
		highlighter : {tooltipAxes: 'y',
			yvalues: 1,
			formatString:'<span class="jq-highlight">%s</div>'}
     });
   },"json");
}

function makeSumPlot(){

$.post("includes/summary_table.php",{ chart: 0}, function(data){
  $('#min_title').empty();
  $('#min_name,#chair_name').remove();
  $(data).prependTo('#min_title');
},"text");

$.jqplot.config.enablePlugins = true; 
   $.post("includes/summary_table.php", { chart: 1}, function(data){
     $('#chart1').empty();
     var scale = new Scaling(0,arrayMax(data[0]));
     var tickArray = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray[n] = i;n++;}
     $.jqplot('chart1',data,{
       		stackSeries: false,
       		legend: {show: true,placement:"outsideGrid"},
       		title: 'Money Raised',
       		series:[{label:'Payroll deductions'},{label:'Other donations'},{label:'Events'},{label:'Retiree Donations'}],
       		//seriesDefaults: {fill: true, showMarker: false},
       	//seriesDefaults: {renderer: $.jqplot.BarRenderer,rendererOptions:{barWidth:15}},
       		axes:{
		  xaxis:{renderer:$.jqplot.CategoryAxisRenderer},
		  yaxis:{tickOptions:{formatString:'$%3.0f'},
		         ticks:tickArray}
		},
       		highlighter : {tooltipAxes: 'y',
			      yvalues: 1,
			      formatString:'<span class="jq-highlight">%s</div>'}
     });
   },"json");

   $.post("includes/summary_table.php", { chart: 2}, function(data){
     $('#chart2').empty();
     var scale = new Scaling(arrayMin(data[0]),arrayMax(data[0]));
     var tickArray1 = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray1[n] = i;n++;}
     var scale = new Scaling(arrayMin(data[1]),arrayMax(data[1]));
     var tickArray2 = new Array();
     var n = 0;
         for (var i=scale.getNiceMin();i<=scale.getNiceMax();i=i+scale.getTickSpacing()){
	   tickArray2[n] = i;n++;}
     $.jqplot('chart2',data,{
       		legend:{show:true,placement:"outsideGrid"},
       		title: 'Donors and Average Gift',
       		series:[{label:'Donors'},{label:'Average Gift',yaxis:'y2axis'}],
       		seriesDefaults: {pointLabels:{location:'n'}},
       		axesDefaults:{pad:1.3},
       		axes:{
		//  xaxis:{autoscale:true,tickOptions:{formatString:'%4.0f'},tickInterval:1},
		  xaxis:{renderer: $.jqplot.CategoryAxisRenderer},
		  yaxis:{ticks:tickArray1, tickOptions:{formatString:'%2.0f'}},
		  y2axis:{ticks:tickArray2, tickOptions:{formatString:'$%2.0f'}}
		},
       		highlighter : {tooltipAxes: 'y',
			      yvalues: 1,
			      formatString:'<span class="jq-highlight">%s</div>'}
     });
   },"json");
}


function arrayMin(array){
//  return Math.max.apply(Math,array);
  var narray = [];
  for ( var i = 0; i < array.length; i++ )
    if ( typeof array[i][1] =="number")
      narray.push( array[i][1] );
  return Math.min.apply( Math, narray );
}
function arrayMax(array){
//  return Math.max.apply(Math,array);
  var narray = [];
  for ( var i = 0; i < array.length; i++ )
    if ( typeof array[i][1] =="number")
      narray.push( array[i][1] );
  return Math.max.apply( Math, narray );
}

function Scaling(min,max){
  maxTicks = 5;
  calculate();

  function calculate(){
    this.range = niceNum(max-min,false);
    this.tickSpacing = niceNum(range/(maxTicks-1),true);
    this.niceMin = Math.floor(min/tickSpacing)*tickSpacing;
    this.niceMax = Math.ceil(max/tickSpacing)*tickSpacing;
  }

  function niceNum(range,round){
    exponent = Math.floor(Math.LOG10E*Math.log(range));
    fraction = range/Math.pow(10,exponent);

    if(round){
      if(fraction<1.5)
	niceFraction=1;
      else if(fraction<3)
	niceFraction=2;
      else if(fraction<7)
	niceFraction=5;
      else
	niceFraction=10;
    } else {
      if(fraction<=1)
	niceFraction=1;
      else if (fraction<=2)
	niceFraction=2;
      else if(fraction<=5)
	niceFraction=5;
      else
	niceFraction=10;
    }
    return niceFraction*Math.pow(10,exponent);
  }

  function setMinMaxPoints(minPoint,maxPoint){
    this.minPoint=minPoint;
    this.maxPoint=maxPoint;
    calculate();
  }
  function setMaxTicks(maxTicks){
    this.maxTicks=maxTicks;
    calculate();
  }
  function getTickSpacing(){
    return tickSpacing;
  }
  function getNiceMin(){
    return niceMin;
  }
  function getNiceMax(){
    return niceMax;
  }
  this.getTickSpacing = getTickSpacing;
  this.getNiceMin = getNiceMin;
  this.getNiceMax = getNiceMax;
}

$(function(){
  $("ul.ministries > li a").click(function(){makePlot($(this).attr('name')); return false;});
  $("ul.charities > li a").click(function(){charityInfo($(this).attr('href')); return false;});

  $('#slideshow').cycle({random: true});
   $('.accordion,.homeLeftBar').accordion({ autoHeight: false });

  makeSumPlot();

  $('a[rel="thumb"]').colorbox({transition:'fade',current:'',opacity:0.8});
  $('a[rel="donateBox"]').colorbox({transition:'fade',current:'',opacity:0.8});

});



