/*================================================== FUSION CHARTS JAVASCRIPT */
/*
    Javascript Document for Land Securities AR2009
    Build: Julien Decaudin on behalf of SAS - 31/03/2009
*/

//Global variables
var chartFormatUpdated = false;
var currentXmlDataPath = "";
var currentChartFormat = "bar";

/*========= LoadChart(domId) */
//Generate the Chart XML data
function LoadChart(domId, animate){
    //Get reference to chart object using Dom ID
    var chartObj = getChartFromId(domId);
    //var fcXmlData = "<chart " + chartParams + ">";
    var fcXmlData = "";
    var chartParams = "";
    
    //Generate a custom XML depending on chart settings state
    $.ajax({
        type: "GET",
        url: currentXmlDataPath,
        dataType: "xml",
            success: function(xml) {
                var currentChart = $(xml).find('chart');
                
                //---------------- Add chart parameters                
                fcXmlData += "<chart numberPrefix='" + currentChart.attr('numberPrefix') + "' ";                
                fcXmlData += "formatNumber='1' formatNumberScale='0' canvasBorderAlpha='0' showLegend='0' bgColor='FFFFFF' showBorder='0' showPlotBorder='" + ((currentChartFormat=="area")?"1":"0") + "' showAlternateHGridColor='0' legendShadow='0' legendBorderAlpha='0' showValues='0'  placeValuesInside='0'  rotateValues='1' animation='" + ((animate==true)?"1":"0") + "' ";          
                fcXmlData += "exportEnabled='1' exportHandler='/usercontrols/FusionChartExportHandler/FCExporter.aspx' exportAtClient='0' exportAction='download'>";
                
                //---------------- Add categories
                fcXmlData += "<categories>";
                                    
                //Loop through checked years
                $.each($('input[name=year]').fieldValue(), function(n,value){                     
                    var currentCategory = $(xml).find('category[id=' + value + ']');
                    fcXmlData += "<category id='" + currentCategory.attr('id') + "' label='" + currentCategory.attr('label') + "'/>";                    
                });                                        
                fcXmlData += "</categories>";
                
                //----------------Add datasets
                //Loop through checked dataset
                $.each($('input[name=dataset]').fieldValue(), function(n,value){                     
                    var currentDataset = $(xml).find('dataset[id=' + value + ']');
                    fcXmlData += "<dataset id='" + currentDataset.attr('id') + "' seriesname='" + currentDataset.attr('seriesname') + "' color='" + currentDataset.attr('color') + "' ratio='" + currentDataset.attr('ratio') + "' plotBorderColor='" + currentDataset.attr('plotBorderColor') + "'>";
                    
                    //---------------- Add datasets values depending on checked years
                    $.each($('input[name=year]'), function(n,value){                     
                        if($(this).fieldValue() != ""){
                            var related_set = currentDataset.find('set:eq('+ n +')');
                            fcXmlData += "<set value='" + related_set.attr('value') + "'/>";
                        }
                    });
                    fcXmlData += "</dataset>";
                });            
                
                //----------------Add styles
                fcXmlData += "<styles>";
                fcXmlData += "<definition>";
                fcXmlData += "<style name='Axis' type='font' bold='1' />";        
                fcXmlData += "</definition>";
                fcXmlData += "<application>";
                fcXmlData += "<apply toObject='Datalabels' styles='Axis' />";
                fcXmlData += "<apply toObject='Yaxisvalues' styles='Axis' />";            
                fcXmlData += "</application>";   
                fcXmlData += "</styles>";
                                                                                   
                fcXmlData += "</chart>";                                    
             },
             error: function() {                    
                      
             },
             complete: function() {                             
                //console.log("fcXmlData: " + fcXmlData);
                //Update the chart
                chartObj.setDataXML(fcXmlData);     
             }
         });                           
}

/*========= LoadFigure(domId, figureLink) */
//Init the clicked figure: Load the year list and the full chart
function LoadFigure(domId, figureLink){
    currentXmlDataPath = figureLink.attr('href');                                           
    
    //Update the dataset checkboxes
    $('input[name=dataset]').attr('checked','');
    figureLink.parent().find('+ div.settings_container').find('input[name=dataset]').attr('checked','checked');
    
    //Update the chart caption and load the year list
    var chartCaption = "";    
    var chartSubCaption = "";
    var yearList = "";    
    $.ajax({
        type: "GET",
        url: currentXmlDataPath,
        dataType: "xml",
            success: function(xml) { 
                chartCaption = $(xml).find('chart').attr('caption');
                chartSubCaption = $(xml).find('chart').attr('subcaption');
                yearList = "<div class='settings_container'><div class='rounded_top'><img src='/images/rounded_top_charttool_130.gif' alt='' /></div><div class='rounded_bottom'><img src='/images/rounded_bottom_charttool_130.gif' alt='' /></div><ul>";     
                
                $(xml).find('category').each(function(){
                    yearList += "<li><input type='checkbox' id='year_" + $(this).attr('id') + "' name='year' value='" + $(this).attr('id') + "' checked='checked' /><label for='year_" + $(this).attr('id') + "'>" + $(this).attr('label') + "</label><div class='clearer'>&nbsp;</div></li>";
                });
                
                yearList += "</ul></div>";                              
             },
             error: function() {                    
                      
             },
             complete: function() {      
                $('#cct_caption').empty();                       
                $('#cct_caption').append(chartCaption);
                $('#cct_subcaption').empty();                       
                $('#cct_subcaption').append(chartSubCaption);
                $('#years_list').empty();
                $('#years_list').append(yearList);
                
                //Load the chart
                LoadChart(domId, true);
             }
         });
}    

/*========= LoadChartFormat(chartFormatLinkId) */
//Update the FusionChart SWF used depending the selected chart format and re-render the chart
function LoadChartFormat(chartFormatLinkId){    
    var chartSWF = "";
    chartFormatUpdated = true;
    currentChartFormat = chartFormatLinkId.split('chart_format_')[1];
    
    switch(currentChartFormat){
        case "area":
            chartSWF = "MSArea.swf";
            break;
        case "line":
            chartSWF = "MSLine.swf";    
            break;
        case "bar":
            chartSWF = "MSColumn2D.swf";                
            break;
        default:                
            chartSWF = "MSColumn2D.swf";                
    }
    
    //console.log(chartSWF);
    
    var comparison_chart = new FusionCharts("/scripts/fusioncharts/" + chartSWF, "comparison_chart", "420", "250", "0", "1");		   			
    comparison_chart.setDataXML("&lt;chart&gt;&lt;/chart&gt;");    
    comparison_chart.render("chart_holder");        
}

/*========= FC_Rendered(domId) */
//FC_Rendered method is invoked when the chart has completed rendering for the first time.
//@param domId Dom ID of the chart object
function FC_Rendered(domId){ 
     //console.log('FC_Rendered');
   
       //--------------------------------------------- set height of figures list within chart tool to avoid page jumping
        var figures_min_height = $('#figures_list').height() + 10;
        $('#figures_list').css('min-height', figures_min_height  + 'px');    

        if($.browser.msie && $.browser.version < 7){
            $('#figures_list').attr('style', 'min-height:' + figures_min_height + 'px;' + 'height:auto !important;' + 'height:' + figures_min_height + 'px');
        }
   
     if (domId == "comparison_chart"){   
        var chartObject = getChartFromId(domId);
     
        if(chartFormatUpdated){
            //The chart format has been updated: the selected data is not reinitialized
            LoadChart(domId, true);                       
        }else{
            //Init the settings events
            //Change figure event
            $('a.load_figure', '#cct_settings_column').click(function(){
                LoadFigure(domId, $(this));                
            });

            //Change dataset and year events
            $('input[name=dataset], input[name=year]', '#cct_settings_column').live("click", function(){
                LoadChart(domId, false);
            });
            
            //Change chart format event        
            $('#chart_format_list a').bind("click", function(){
                LoadChartFormat(this.id);
                return false;
            });
            
            //Export JPEG
            $('#chart_export_jpg').click(function(){
                chartObject.exportChart( { exportFormat: 'JPG' } );
                return false;
            });
                        
            //Export CSV
            $('#chart_export_csv').click(function(){                
                alert(chartObject.getDataAsCSV());
                return false;
            });
            
                    
            //Reinit the first accordion item        
            //$('#figures_list').accordion('activate', 0);
                    
            //Init & load the default figure        
            LoadFigure(domId, $('a.default_figure', '#cct_settings_column'));           
        }
     }
     return true;
}


//---------------------------------------------
