/** * Добавляет чарт к данному элементу * * @author Tigay * @version Release: 2 * @copyright 2011 */ (function($){ var amstockAddr = "http://www.fibo.ru/lib/amstock"; $.fn.amStock = function(options) { var opts = $.extend({}, $.fn.amStock.defaults, options); var $this = this; opts.containerId = $this.attr("id"); if(typeof SWFObject == 'undefined') { $.getScript( amstockAddr +'/swfobject.js', function() { createChart.call($this); } ); } else { createChart.call($this); } function createChart() { try { $.fn.amStock.charts[opts.chartId] = $.extend({}, opts); var so = new SWFObject( opts.swf, opts.chartId, opts.width, opts.height, opts.flashVersion, opts.bgColor ); if(opts.flashParams) { $.each(opts.flashParams, function(key, value){ so.addParam(key, value); }); } var queryString = ''; if(opts.params) { queryString += encodeURIComponent($.param(opts.params)); } so.addVariable("path", opts.dataPath); if(opts.chartId) { so.addVariable("chart_id", opts.chartId); } so.addVariable("settings_file", opts.configFile +"?"+ queryString); so.write(opts.containerId); $.fn.amStock.charts[opts.chartId].loading = true; } catch(e) {} $this.css({ visibility : 'visible', height : opts.height }); } } $.fn.amStock.charts = {}; $.fn.amStock.defaults = { width : "100%", // ширина графика height : "100%", // высота графика flashVersion : 8, // версия flash chartId : null, // id элемента bgColor : "#FFFFFF", // цвет бэкграунда swf : amstockAddr +"/amstock.swf", // путь к amstock.swf dataPath : "", // директория дата-файла queryParams : null, // параметры дата-файла configParams : null, // параметры конфиг-файла configFile : amstockAddr +"/logic/config.php", // путь к конфиг-файлу flashParams : null, inited : false, loading : false }; })(jQuery); (function($){ $.fn.stockLoader = function(options) { var opts = $.extend({}, $.fn.stockLoader.defaults, options); $(this).filter('a').each(function() { var $this = $(this), controls, multiple = false; if($this.children('span').size()) { controls = $this.children('span'); multiple = true; } else { controls = $this; } controls.not('.'+ opts.turnOnClass).addClass(opts.turnOffClass); $this.click(function(event){ $target = $(event.target); var activeBefore; var triggerCall = (arguments.length == 1); if(!multiple || $target.parent('a').get(0)) { var chart_id = $target.attr('id'); var chart_container = $('#'+ chart_id +'_container'); if(!(chart_id in $.fn.amStock.charts)) { var stockParams = $.extend({}, opts.stockParams); stockParams.chartId = chart_id; stockParams.params.className = chart_id; chart_container.amStock(stockParams); } else { if($.browser.safari) { var isVisible = chart_container.is(':visible'); chart_container.css({ display : (isVisible ? 'none' : 'block') }); } else { var isVisible = chart_container.css('visibility') == 'visible'; chart_container.css({ visibility : (isVisible ? 'hidden' : 'visible'), height : (isVisible ? 0 : opts.stockParams.height) }); } } if(multiple && triggerCall) { activeBefore = $target.parent('a').children('span.'+ opts.turnOnClass); } $target.toggleClass(opts.turnOffClass); $target.toggleClass(opts.turnOnClass); if(activeBefore && activeBefore.get(0) && activeBefore.attr('id') != chart_id) { $(activeBefore).trigger('click', true); } } $this.blur(); event.preventDefault(); }); }); } $.fn.stockLoader.defaults = { turnOnClass : 'turn-on', turnOffClass : 'turn-off', cssClass : 'graph-container', stockParams : {} }; })(jQuery); amChartInited = function(chart_id) { if(chart_id in $.fn.amStock.charts) { $.fn.amStock.charts[chart_id].inited = true; $.fn.amStock.charts[chart_id].loading = false; } }