var helper;
var chartBuilder;
var dataProvider;



chartBuilder = {
    lineChart: {
        graphs: function (parsedJson) {
            var graphs = [];
            $.each(parsedJson.chart.graphs.graph, function (i, obj1) {
                var obj = {
                    "balloonText": "[[category]]: [[value]]",
                    "title": obj1["@title"],
                    "valueField": i.toString(),
                    "lineColor": "#" + obj1["@color"],
                    "lineThickness": parseInt(obj1["@line_width"]),
                    "fillAlphas": 0,
                    "hidden": obj1["@visible"] == "no"
                };
                graphs.push(obj);
            });

            return graphs;
        },
        createChart: function (jsonData, eleId) {
            var chart = AmCharts.makeChart(eleId, {
                "type": "serial",
                "backgroundColor": "#eeeeee",
                "backgroundAlpha": 1,
                "legend": {
                    "useGraphSettings": false,
                    "markerType": "circle",
                    "position": "right",
                    "fontSize": 10,
                    "labelWidth": 90,
                    "forceWidth": true,
                    "width": 120
                },
                "dataProvider": dataProvider.formatLineChartData(jsonData),
                "valueAxes": [{
                    "title": ""
                }],
                "graphs": chartBuilder.lineChart.graphs(jsonData),
                "chartCursor": {
                    "cursorAlpha": 0,
                    "zoomable": false
                },
                "categoryField": "category",
                "categoryAxis": {
                    "gridAlpha": 0.2,
                    "dateFormats": [{"period":"fff","format":"JJ:NN:SS"},
                                    {"period":"ss","format":"JJ:NN:SS"},
                                    {"period":"mm","format":"JJ:NN"},
                                    {"period":"hh","format":"JJ:NN"},
                                    {"period":"DD","format":"MMMM DD"},
                                    {"period":"WW","format":"MMMM DD"},
                                    {"period":"MM","format":"MMMM"},
                                    {"period":"YYYY","format":"YYYY"}]
                },
                "export": {
                    "enabled": true,
                    "position": "bottom-right"
                }
            });

        },
        init: function (eleId, url) {
            dataProvider.fetchData(url, function (xmlData) {
                var jsonData = dataProvider.formatXMLData(xmlData);
                chartBuilder.lineChart.createChart(jsonData, eleId);
            });
        }
    },
    priceChart: {
        graphs: function (parsedJson) {
            var graphs = [];
            $.each(parsedJson.chart.graphs.graph, function (i, obj1) {
                var obj = {
                    "balloonText": "[[category]]: [[value]]",
                    "title": obj1["@title"],
                    "valueField": i.toString(),
                    "lineColor": "#" + obj1["@color"],
                    "lineThickness": parseInt(obj1["@line_width"]),
                    "fillAlphas": 0,
                    "hidden": obj1["@visible"] == "no"
                };
                graphs.push(obj);
            });

            return graphs;
        },
        createChart: function (jsonData, eleId) {
            var chart = AmCharts.makeChart(eleId, {
                "type": "serial",
                "backgroundColor": "#eeeeee",
                "backgroundAlpha": 1,
                "dataDateFormat": "MM/DD/YYYY",
                "legend": {
                    "useGraphSettings": false,
                    "markerType": "circle",
                    "divId": "share_view_legenddiv", // use the id of the dev container.refer to html below
                    "fontSize": 10,
                    "position": "absolute",
                    "left": 0,
                    "top": 0,
                },
                "dataProvider": dataProvider.formatLineChartData(jsonData),
                "valueAxes": [{
                    "title": ""
                }],
                "graphs": chartBuilder.priceChart.graphs(jsonData),
                "chartCursor": {
                    "cursorAlpha": 0,
                    "zoomable": false
                },
                "categoryField": "category",
                "categoryAxis": {
                    "parseDates":true,
                    "gridAlpha": 0.2,
                    "equalSpacing": true,
                    "dateFormats": [{ "period": "fff", "format": "JJ:NN:SS" },
                                    { "period": "ss", "format": "JJ:NN:SS" },
                                    { "period": "mm", "format": "JJ:NN" },
                                    { "period": "hh", "format": "JJ:NN" },
                                    { "period": "DD", "format": "MMMM DD" },
                                    { "period": "WW", "format": "MMMM DD" },
                                    { "period": "MM", "format": "MMMM DD" },
                                    { "period": "YYYY", "format": "YYYY" }]
                },
                "export": {
                    "enabled": true,
                    "position": "bottom-right"
                }
            });
        },
        init: function (eleId, url) {
            dataProvider.fetchData(url, function (xmlData) {
                var jsonData = dataProvider.formatXMLData(xmlData);
                chartBuilder.priceChart.createChart(jsonData, eleId);
            });
        }
    },
    marketChart: {
        graphs: function (parsedJson) {
            var graphs = [];
            $.each(parsedJson.chart.graphs.graph, function (i, obj1) {
                var obj = {
                    "balloonText": "[[category]]: [[value]]",
                    "title": obj1["@title"],
                    "valueField": i.toString(),
                    "lineColor": "#" + obj1["@color"],
                    "lineThickness": parseInt(obj1["@line_width"]),
                    "fillAlphas": 0,
                    "hidden": obj1["@visible"] == "no",
                    "id":obj1["@gid"]
                };
                graphs.push(obj);
            });
            return graphs;
        },
        createChart: function (jsonData, eleId) {
            var chart = AmCharts.makeChart(eleId, {
                "type": "serial",
                "backgroundColor": "#eeeeee",
                "backgroundAlpha": 1,
                "dataProvider": dataProvider.formatLineChartData(jsonData),
                "valueAxes": [{
                    "title": ""
                }],
                "graphs": chartBuilder.marketChart.graphs(jsonData),
                "chartCursor": {
                    "cursorAlpha": 0,
                    "zoomable": false
                },
                "categoryField": "category",
                "categoryAxis": {
                    "parseDates":true,
                    "gridAlpha": 0.2,
                    "equalSpacing": true,
                    "dateFormats": [{ "period": "fff", "format": "JJ:NN:SS" },
                                    { "period": "ss", "format": "JJ:NN:SS" },
                                    { "period": "mm", "format": "JJ:NN" },
                                    { "period": "hh", "format": "JJ:NN" },
                                    { "period": "DD", "format": "MMMM DD" },
                                    { "period": "WW", "format": "MMMM DD" },
                                    { "period": "MM", "format": "MMMM DD" },
                                    { "period": "YYYY", "format": "YYYY" }]
                },
                "legend": {
                    "enabled": false,
                },
                "export": {
                    "enabled": false,
                    "position": "bottom-right"
                }
            });

        },
        init: function (eleId, url) {
            debugger;
            dataProvider.fetchData(url, function (xmlData) {
                var jsonData = dataProvider.formatXMLData(xmlData);
                chartBuilder.marketChart.createChart(jsonData, eleId);
            });
        }
    },
    intraDayChart: {
        createChart: function (jsonData, eleId) {
            var intraDayChart = AmCharts.makeChart(eleId, {
                "type": "stock",
                "theme": "light",
                "categoryAxesSettings": {
                    "minPeriod": "mm"
                },
                "dataSets": [{
                    "color": "#b0de09",
                    "fieldMappings": [{
                        "fromField": "value",
                        "toField": "value"
                    }, {
                        "fromField": "volume",
                        "toField": "volume"
                    }],

                    "dataProvider": dataProvider.formatintraDayData(jsonData),
                    "categoryField": "date"
                }],
                "panels": [{
                    "showCategoryAxis": false,
                    "title": "Value",
                    "percentHeight": 70,
                    "stockGraphs": [{
                        "id": "g1",
                        "valueField": "value",
                        "type": "smoothedLine",
                        "lineThickness": 2,
                        "bullet": "round"
                    }],
                    "stockLegend": {
                        "valueTextRegular": " ",
                        "markerType": "none"
                    }
                }, {
                    "title": "Volume",
                    "percentHeight": 30,
                    "stockGraphs": [{
                        "valueField": "volume",
                        "type": "column",
                        "cornerRadiusTop": 2,
                        "fillAlphas": 1
                    }],
                    "stockLegend": {
                        "valueTextRegular": " ",
                        "markerType": "none"
                    }
                }],
                "chartCursorSettings": {
                    "valueBalloonsEnabled": true
                },
                "panelsSettings": {
                    "usePrefixes": true
                },
                "export": {
                    "enabled": true,
                    "position": "bottom-right"
                }
            });
        },
        init: function (eleId, url) {
            dataProvider.fetchData(url, function (csvData) {
                var csvHeader = "Date,,,,Value,Volume\n";
                var jsonData = dataProvider.formatCSVData(csvData,csvHeader);
                chartBuilder.intraDayChart.createChart(jsonData, eleId);
            });
        }
    },
    ohlcChart: {
        createChart: function (jsonData, eleId) {
            var ohlcChart = AmCharts.makeChart(eleId, {
                "type": "stock",
                "theme": "light",

                "categoryAxesSettings": {
                    "minPeriod": "mm"
                },

                "dataSets": [{
                    "fieldMappings": [{
                        "fromField": "open",
                        "toField": "open"
                    }, {
                        "fromField": "close",
                        "toField": "close"
                    }, {
                        "fromField": "high",
                        "toField": "high"
                    }, {
                        "fromField": "low",
                        "toField": "low"
                    }, {
                        "fromField": "volume",
                        "toField": "volume"
                    }],

                    "color": "#7f8da9",
                    "dataProvider": dataProvider.formatOHLCdata(jsonData),
                    "title": "Value",
                    "categoryField": "date"
                }],


                "panels": [
                    {
                        "stockGraphs": [{
                            "type": "ohlc",
                            "id": "g1",
                            "openField": "open",
                            "closeField": "close",
                            "highField": "high",
                            "lowField": "low",
                            "valueField": "close",
                            "lineColor": "#7f8da9",
                            "fillColors": "#7f8da9",
                            "negativeLineColor": "#db4c3c",
                            "negativeFillColors": "#db4c3c",
                            "fillAlphas": 1,
                            "useDataSetColors": false,
                            "balloonText": "open:<b>[[open]]</b><br>close:<b>[[close]]</b><br>low:<b>[[low]]</b><br>high:<b>[[high]]</b>",
                        }],

                        "stockLegend": {
                            "valueTextRegular": undefined,
                            "periodValueTextComparing": "[[percents.value.close]]%"
                        }
                    },

                  {
                      "title": "Volume",
                      "percentHeight": 30,
                      "marginTop": 1,
                      "showCategoryAxis": true,
                      "valueAxes": [{
                          "dashLength": 5
                      }],

                      "categoryAxis": {
                          "dashLength": 5
                      },

                      "stockGraphs": [{
                          "valueField": "volume",
                          "type": "column",
                          "balloonText": "Volume:<b>[[value]]</b>",
                          "fillAlphas": 1
                      }],

                      "stockLegend": {
                          "markerType": "none",
                          "markerSize": 0,
                          "labelText": "",
                          "periodValueTextRegular": "[[value.close]]"
                      }
                  }
                ],
                "chartCursorSettings": {
                    "valueBalloonsEnabled": true
                },
                "chartScrollbarSettings": {
                    "graph": "g1",
                    "graphType": "line",
                    "usePeriod": "hh"
                }
            });
        },
        init: function (eleId, url) {
            dataProvider.fetchData(url, function (csvData) {
                var csvHeader = "Date,Open,High,Low,Close,Volume\n";
                var jsonData = dataProvider.formatCSVData(csvData, csvHeader);
                chartBuilder.ohlcChart.createChart(jsonData, eleId);
            });
        }
    },
    candlestickChart: {
        createChart: function (jsonData, eleId) {
            var candleStickChart = AmCharts.makeChart(eleId, {
                "type": "stock",
                "theme": "light",

                "categoryAxesSettings": {
                    "minPeriod": "mm"
                },

                "dataSets": [{
                    "fieldMappings": [{
                        "fromField": "open",
                        "toField": "open"
                    }, {
                        "fromField": "close",
                        "toField": "close"
                    }, {
                        "fromField": "high",
                        "toField": "high"
                    }, {
                        "fromField": "low",
                        "toField": "low"
                    }, {
                        "fromField": "volume",
                        "toField": "volume"
                    }],

                    "color": "#7f8da9",
                    "dataProvider": dataProvider.formatOHLCdata(jsonData),
                    "title": "Value",
                    "categoryField": "date"
                }],


                "panels": [
                    {
                    "stockGraphs": [{
                        "type": "candlestick",
                        "id": "g1",
                        "openField": "open",
                        "closeField": "close",
                        "highField": "high",
                        "lowField": "low",
                        "valueField": "close",
                        "lineColor": "#7f8da9",
                        "fillColors": "#7f8da9",
                        "negativeLineColor": "#db4c3c",
                        "negativeFillColors": "#db4c3c",
                        "fillAlphas": 1,
                        "useDataSetColors": false,
                        "balloonText": "open:<b>[[open]]</b><br>close:<b>[[close]]</b><br>low:<b>[[low]]</b><br>high:<b>[[high]]</b>",
                    }],

                    "stockLegend": {
                        "valueTextRegular": undefined,
                        "periodValueTextComparing": "[[percents.value.close]]%"
                    }
                },

                  {
                      "title": "Volume",
                      "percentHeight": 30,
                      "marginTop": 1,
                      "showCategoryAxis": true,
                      "valueAxes": [{
                          "dashLength": 5
                      }],

                      "categoryAxis": {
                          "dashLength": 5
                      },

                      "stockGraphs": [{
                          "valueField": "volume",
                          "type": "column",
                          "balloonText": "Volume:<b>[[value]]</b>",
                          "fillAlphas": 1
                      }],

                      "stockLegend": {
                          "markerType": "none",
                          "markerSize": 0,
                          "labelText": "",
                          "periodValueTextRegular": "[[value.close]]"
                      }
                  }
                ],
                "chartCursorSettings": {
                    "valueBalloonsEnabled": true
                },
                "chartScrollbarSettings": {
                    "graph": "g1",
                    "graphType": "line",
                    "usePeriod": "hh"
                }
            });
        },
        init: function (eleId, url) {
            dataProvider.fetchData(url, function (csvData) {
                var csvHeader = "Date,Open,High,Low,Close,Volume\n";
                var jsonData = dataProvider.formatCSVData(csvData, csvHeader);
                chartBuilder.candlestickChart.createChart(jsonData, eleId);
            });
        }
    }
};

dataProvider = {
    fetchData: function (url,callback) {
        $.get(url, function (result) {
            callback(result);
        });
    },
    formatXMLData: function (xml) {
        var dom =  xml.firstElementChild;
        var json = helper.xml2json(dom);
        var cleanJson = json.replace("undefined", "");
        var parsedJson = JSON.parse(cleanJson);
        return parsedJson;
    },
    oldformatLineChartData: function (parsedJson) {
        var output = [];
        for (var i = 0; i < parsedJson.chart.series.value.length; i++) {
            var obj = { "category": parsedJson.chart.series.value[i]["#text"] };
            $.each(parsedJson.chart.graphs.graph, function (k, obj1) {
                if (obj1.value[i] && obj1.value[i]["#text"])
                    obj[k.toString()] = parseFloat(obj1.value[i]["#text"]);
            });
            output.push(obj);
        };
        return output;
    },
    formatLineChartData: function (parsedJson) {
        var output = [];
        debugger;
        for (var i = 0; i < parsedJson.chart.series.value.length; i++) {
            var obj = { "category": parsedJson.chart.series.value[i]["#text"] };
            $.each(parsedJson.chart.graphs.graph, function (k, obj1) {
                var val = null;
                $.each(obj1.value, function (m, obj2) {
                    if (obj2["@xid"] == parsedJson.chart.series.value[i]["@xid"])
                        val = parseFloat(obj2["#text"]);
                });
                obj[k.toString()] = val;
            });
            output.push(obj);
        };
        return output;
    },
    formatCSVData: function (csv,csvHeader) {
        debugger;
        csv = csvHeader + csv;
        var json = JSON.parse(helper.CSV2JSON(csv));
        return json;
    },
    formatintraDayData: function (parsedJson) {
        var chartData = [];
        $.each(parsedJson, function (index, obj) {
            if (obj.Value && parseFloat(obj.Value) > 0 && obj.Volume && parseFloat(obj.Volume) > 0) {
                chartData.push({
                    "date": new Date(obj.Date),
                    "value": parseFloat(obj.Value),
                    "volume": parseFloat(obj.Volume)
                });
            }
        });
        return chartData;
    },
    formatOHLCdata:function(parsedJson){
        var chartData = [];
        $.each(parsedJson,function(index,obj){
            chartData.push({
                "date":new Date(obj.Date),
                "open":parseFloat(obj.Open),
                "high":parseFloat(obj.High),
                "low":parseFloat(obj.Low),
                "close":parseFloat(obj.Close),
                "volume":parseFloat(obj.Volume)
            });
        });
        return chartData;
    }
};

helper = {

    parseXml: function (xml) {
        var dom = null;
        if (window.DOMParser) {
            try {
                dom = (new DOMParser()).parseFromString(xml, "text/xml");
            }
            catch (e) { dom = null; }
        }
        else if (window.ActiveXObject) {
            try {
                dom = new ActiveXObject('Microsoft.XMLDOM');
                dom.async = false;
                if (!dom.loadXML(xml)) // parse error ..

                    window.alert(dom.parseError.reason + dom.parseError.srcText);
            }
            catch (e) { dom = null; }
        }
        else
            alert("cannot parse xml string!");
        return dom;
    },

    xml2json: function (xml, tab) {
        var X = {
            toObj: function (xml) {
                var o = {};
                if (xml.nodeType == 1) {   // element node ..
                    if (xml.attributes.length)   // element with attributes  ..
                        for (var i = 0; i < xml.attributes.length; i++)
                            o["@" + xml.attributes[i].nodeName] = (xml.attributes[i].nodeValue || "").toString();
                    if (xml.firstChild) { // element has child nodes ..
                        var textChild = 0, cdataChild = 0, hasElementChild = false;
                        for (var n = xml.firstChild; n; n = n.nextSibling) {
                            if (n.nodeType == 1) hasElementChild = true;
                            else if (n.nodeType == 3 && n.nodeValue.match(/[^ \f\n\r\t\v]/)) textChild++; // non-whitespace text
                            else if (n.nodeType == 4) cdataChild++; // cdata section node
                        }
                        if (hasElementChild) {
                            if (textChild < 2 && cdataChild < 2) { // structured element with evtl. a single text or/and cdata node ..
                                X.removeWhite(xml);
                                for (var n = xml.firstChild; n; n = n.nextSibling) {
                                    if (n.nodeType == 3)  // text node
                                        o["#text"] = X.escape(n.nodeValue);
                                    else if (n.nodeType == 4)  // cdata node
                                        o["#cdata"] = X.escape(n.nodeValue);
                                    else if (o[n.nodeName]) {  // multiple occurence of element ..
                                        if (o[n.nodeName] instanceof Array)
                                            o[n.nodeName][o[n.nodeName].length] = X.toObj(n);
                                        else
                                            o[n.nodeName] = [o[n.nodeName], X.toObj(n)];
                                    }
                                    else  // first occurence of element..
                                        o[n.nodeName] = X.toObj(n);
                                }
                            }
                            else { // mixed content
                                if (!xml.attributes.length)
                                    o = X.escape(X.innerXml(xml));
                                else
                                    o["#text"] = X.escape(X.innerXml(xml));
                            }
                        }
                        else if (textChild) { // pure text
                            if (!xml.attributes.length)
                                o = X.escape(X.innerXml(xml));
                            else
                                o["#text"] = X.escape(X.innerXml(xml));
                        }
                        else if (cdataChild) { // cdata
                            if (cdataChild > 1)
                                o = X.escape(X.innerXml(xml));
                            else
                                for (var n = xml.firstChild; n; n = n.nextSibling)
                                    o["#cdata"] = X.escape(n.nodeValue);
                        }
                    }
                    if (!xml.attributes.length && !xml.firstChild) o = null;
                }
                else if (xml.nodeType == 9) { // document.node
                    o = X.toObj(xml.documentElement);
                }
                else
                    alert("unhandled node type: " + xml.nodeType);
                return o;
            },
            toJson: function (o, name, ind) {
                var json = name ? ("\"" + name + "\"") : "";
                if (o instanceof Array) {
                    for (var i = 0, n = o.length; i < n; i++)
                        o[i] = X.toJson(o[i], "", ind + "\t");
                    json += (name ? ":[" : "[") + (o.length > 1 ? ("\n" + ind + "\t" + o.join(",\n" + ind + "\t") + "\n" + ind) : o.join("")) + "]";
                }
                else if (o == null)
                    json += (name && ":") + "null";
                else if (typeof (o) == "object") {
                    var arr = [];
                    for (var m in o)
                        arr[arr.length] = X.toJson(o[m], m, ind + "\t");
                    json += (name ? ":{" : "{") + (arr.length > 1 ? ("\n" + ind + "\t" + arr.join(",\n" + ind + "\t") + "\n" + ind) : arr.join("")) + "}";
                }
                else if (typeof (o) == "string")
                    json += (name && ":") + "\"" + o.toString() + "\"";
                else
                    json += (name && ":") + o.toString();
                return json;
            },
            innerXml: function (node) {
                var s = ""
                if ("innerHTML" in node)
                    s = node.innerHTML;
                else {
                    var asXml = function (n) {
                        var s = "";
                        if (n.nodeType == 1) {
                            s += "<" + n.nodeName;
                            for (var i = 0; i < n.attributes.length; i++)
                                s += " " + n.attributes[i].nodeName + "=\"" + (n.attributes[i].nodeValue || "").toString() + "\"";
                            if (n.firstChild) {
                                s += ">";
                                for (var c = n.firstChild; c; c = c.nextSibling)
                                    s += asXml(c);
                                s += "</" + n.nodeName + ">";
                            }
                            else
                                s += "/>";
                        }
                        else if (n.nodeType == 3)
                            s += n.nodeValue;
                        else if (n.nodeType == 4)
                            s += "<![CDATA[" + n.nodeValue + "]]>";
                        return s;
                    };
                    for (var c = node.firstChild; c; c = c.nextSibling)
                        s += asXml(c);
                }
                return s;
            },
            escape: function (txt) {
                return txt.replace(/[\\]/g, "\\\\")
                          .replace(/[\"]/g, '\\"')
                          .replace(/[\n]/g, '\\n')
                          .replace(/[\r]/g, '\\r');
            },
            removeWhite: function (e) {
                e.normalize();
                for (var n = e.firstChild; n;) {
                    if (n.nodeType == 3) {  // text node
                        if (!n.nodeValue.match(/[^ \f\n\r\t\v]/)) { // pure whitespace text node
                            var nxt = n.nextSibling;
                            e.removeChild(n);
                            n = nxt;
                        }
                        else
                            n = n.nextSibling;
                    }
                    else if (n.nodeType == 1) {  // element node
                        X.removeWhite(n);
                        n = n.nextSibling;
                    }
                    else                      // any other node
                        n = n.nextSibling;
                }
                return e;
            }
        };
        if (xml.nodeType == 9) // document node
            xml = xml.documentElement;
        var json = X.toJson(X.toObj(X.removeWhite(xml)), xml.nodeName, "\t");
        return "{\n" + tab + (tab ? json.replace(/\t/g, tab) : json.replace(/\t|\n/g, "")) + "\n}";
    },

    CSV2JSON: function (csv) {
        var array = helper.CSVToArray(csv);
        var objArray = [];
        for (var i = 1; i < array.length; i++) {
            objArray[i - 1] = {};
            for (var k = 0; k < array[0].length && k < array[i].length; k++) {
                var key = array[0][k];
                objArray[i - 1][key] = array[i][k]
            }
        }
        var json = JSON.stringify(objArray);
        var str = json.replace(/},/g, "},\r\n");
        return str;
    },

    CSVToArray: function (strData, strDelimiter) {
        strDelimiter = (strDelimiter || ",");
        var objPattern = new RegExp((
        "(\\" + strDelimiter + "|\\r?\\n|\\r|^)" +
        "(?:\"([^\"]*(?:\"\"[^\"]*)*)\"|" +
        "([^\"\\" + strDelimiter + "\\r\\n]*))"), "gi");
        var arrData = [[]];
        var arrMatches = null;
        while (arrMatches = objPattern.exec(strData)) {
            var strMatchedDelimiter = arrMatches[1];
            if (strMatchedDelimiter.length && (strMatchedDelimiter != strDelimiter)) {
                arrData.push([]);
            }
            if (arrMatches[2]) {
                var strMatchedValue = arrMatches[2].replace(
                new RegExp("\"\"", "g"), "\"");
            } else {
                var strMatchedValue = arrMatches[3];
            }
            arrData[arrData.length - 1].push(strMatchedValue);
        }
        return (arrData);
    }

};

function toggleGraphStatus(id,ele){
    if(AmCharts.charts[0].getGraphById(id).hidden)
        AmCharts.charts[0].showGraph(AmCharts.charts[0].getGraphById(id))
    else
        AmCharts.charts[0].hideGraph(AmCharts.charts[0].getGraphById(id))
}