var chart = {};
chart.width  = "412";
chart.height = "240";

// By default, right-clicking on OFC and choosing "save image locally" calls this function.
// You are free to change the code in OFC and call my wrapper (Control.OFC.your_favorite_save_method)
// function save_image() { alert(1); Control.OFC.popup('my_chart') }
function save_image(c) { 
  alert("Use the 'print' or 'PDF' functions to save or view the chart Image");
}


function findSWF(movieName) 
{
  if (navigator.appName.indexOf("Microsoft")!= -1) {
    return window[movieName];
  } else {
    return document[movieName];
  }
}

var aa = null;
var bb = null;

function toggle_chart(cm_id, element)
{  
  navigation.display = 1;
	
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].GRAPH_LEVEL == 1)
  {
    if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE1 == 0)
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE1 = 1;
    else
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE1 = 0;
  }
	
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].GRAPH_LEVEL == 2)
  {
    if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE2 == 0)
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE2 = 1;
    else
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE2 = 0;
  }  
	
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].GRAPH_LEVEL == 3)
  {
    if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE3 == 0)
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE3 = 1;
    else
      perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE3 = 0;
  }  
  
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf && $('#id_'+cm_id).find('.coremeasure_chart').is(':visible'))
  
 // if(perspective.COREMEASURE[cm_id].swf && $('#id_'+cm_id).find('.coremeasure_chart').is(':visible'))
  {
    get_chart(cm_id, 1);
    //perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf.load(get_chart_data(cm_id));
    perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf.load(get_chart_data(cm_id));

  }
  else 
  {
	 
	perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].GRAPH_LEVEL = 1;
	perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE1 = perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].INITIAL_CHART_TYPE;
	load_chart(cm_id, 1);
  }	 		
  //load_inventory(cm_id); 
}

function print_chart(cm_id, element)
{
  navigation.display = 1;
	 
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf)
	get_chart(cm_id, 1);
  else 
	load_chart(cm_id, 1);

  var obj = {};
  obj.dataURL = $('#coremeasure_swf_chart_'+navigation.direction+'_'+navigation.goal+'_'+cm_id)[0].get_img_binary();
  obj.chart_filename = "coremeasure_"+cm_id+".jpg";
  
  $.post("save_pdf_chart.php", obj, function(response) {
	  
	$("#tmp_chart").html($("#id_"+cm_id).html());
	
	$("#tmp_chart").find(".coremeasure_a_name").remove();
	$("#tmp_chart").find(".coremeasure_controls").remove();
	$("#tmp_chart").find(".coremeasure_editor").remove();
	$("#tmp_chart").find(".coremeasure_process").remove();
	$("#tmp_chart").find(".coremeasure_files").remove();
	  
	$("#tmp_chart").find(".coremeasure_swf_chart_wrapper").html("<img src='../../dashboard/files/coremeasure_"+cm_id+".jpg'>");
	$("#tmp_chart").find('.coremeasure_description').show();
	$("#tmp_chart").find('.coremeasure_chart').show(); 
	
	var str = perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].TITLE;
	var title = str.replace(/ /g, "_");
	
	var win = window.open("blank.html", "RCTC_Dashboard", "width=640,height=480,menubar=yes,scrollbars=yes,location=no"); // a window object

	var doc = win.document;
	
	var str = "<html><head><title>";
	str += perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].TITLE;
	str += '</title><link rel="stylesheet" href="css/bsc.css" type="text/css" title="bsc"></head><body>';
	str += $("#tmp_chart").html();
	str += '</div></body></html>';
	
	doc.open("text/html", "replace");
	doc.write(str);
	doc.close();
	win.print();
  }); 
}

function pdf_chart(cm_id, element)
{
  navigation.display = 1;
	
  if(perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf)
	get_chart(cm_id, 1);
  else 
	load_chart(cm_id, 1);
	    
  var str  = '<html><head><title>RCTC Strategic Dashboard</title><link rel="stylesheet" href="css/bsc.css" type="text/css" title="bsc"></head><body>';
  str += "<div id='pdf_containter'>";
  str += $("#id_"+cm_id).html();
  str += "</div></body></html>";
  $("#tmp_chart").html(str);  
  
  $("#tmp_chart").find(".coremeasure_a_name").remove();
  $("#tmp_chart").find(".coremeasure_controls").remove();
  //$("#tmp_chart").find(".inventory_response").remove();
  $("#tmp_chart").find(".coremeasure_editor").remove();
  $("#tmp_chart").find(".coremeasure_process").remove();
  $("#tmp_chart").find(".inventory_button").remove();
  $("#tmp_chart").find(".coremeasure_files").remove();
  $("#tmp_chart").find('.coremeasure_description').show();
  $("#tmp_chart").find('.coremeasure_chart').show(); 
  
  for(var y=session.start_yr; y <=session.end_yr; y++)
  {
	if(y < perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].YR1 || y > perspective.COREMEASURE[cm_id].YR2)
		$("#tmp_chart").find(".y"+y).remove();
  }
 
  //$("#tmp_chart").find(".inventory").find(":hidden").remove();
  
  $("#tmp_chart").find(".coremeasure_swf_chart_wrapper").html("<img src='files/coremeasure_"+cm_id+".jpg'>")
  
  var obj = {};
  obj.dataURL = $('#coremeasure_swf_chart_'+navigation.direction+'_'+navigation.goal+'_'+cm_id)[0].get_img_binary();
  obj.chart_filename = "coremeasure_"+cm_id+".jpg";
  
  $.post("save_pdf_chart.php", obj, function(response) {
	  
	  $("#chart_html").val($("#tmp_chart").html());
	  $("#chart_filename").val("coremeasure_"+cm_id+".pdf");
	  $("#pdf_form").submit();
  });
}


function show_chart(cm_id, graph_level, id)
{
    var term = 1;

    perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].CHART_TYPE = chart_types[perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].INITIAL_CHART_TYPE];
    perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].GRAPH_LEVEL = graph_level;
    perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].ITEM_ID = id;
  
    if(graph_level == 2)
    {
      $('.item_details').hide(); 
      $('.p'+id).show();
    } 

    if(graph_level == 3)
    {
      $('.item_details').hide(); 
      $('.i'+id+"_"+term).show();  
    }

    var flashvars = {}; 
    var params = {wmode: "transparent"}; 
  
    swfobject.embedSWF("flash/open-flash-chart.swf", "coremeasure_swf_chart_"+cm_id, chart.width, chart.height, "9.0.0","flash/expressInstall.swf",{"get-data":"get_chart_data","id":cm_id}, params);
    perspective.DIRECTION[navigation.direction].GOAL[navigation.goal].COREMEASURE[cm_id].swf = {};
    perspective.COREMEASURE[cm_id].swf = {};
    $("#debug").html(3)
    perspective.COREMEASURE[cm_id].swf = findSWF("coremeasure_swf_chart_"+cm_id); 
}

function get_chart_data(cm_id)
{
  if(!perspective.COREMEASURE[cm_id].YR1)
    perspective.COREMEASURE[cm_id].YR1 = session.y1; 
    
  if(!perspective.COREMEASURE[cm_id].YR2)
    perspective.COREMEASURE[cm_id].YR2 = session.y2; 

  
  var obj = null;
  var cur_pop_list = []; 
  var cur_item_list = []; 
  
  obj = {};
  obj.title = {};
  obj.y_legend = {};
  obj.elements = [];
  obj.x_axis = {"3d":0,"stroke":1,"tick_height":10,"colour":"#000000","grid_colour":"#999999"};
  obj.y_axis = {"3d":0,"stroke":1,"tick_height":2, "colour":"#000000","grid_colour":"#999999","offset":0};
  
  if(perspective.COREMEASURE[cm_id].Y_AXIS_MIN)
    obj.y_axis.min = perspective.COREMEASURE[cm_id].Y_AXIS_MIN;
    
  if(perspective.COREMEASURE[cm_id].Y_AXIS_MAX)
    obj.y_axis.max = perspective.COREMEASURE[cm_id].Y_AXIS_MAX; 
  
  obj.x_axis.steps = 1;
  obj.x_axis.labels = {};
  obj.x_axis.labels.steps = 1;
  obj.x_axis.labels.visible = true;
  obj.x_axis.labels.labels = [];  
  
  obj.x_axis.min = 0;
  obj.x_axis.max = 5; 
  
  for(var u = perspective.COREMEASURE[cm_id].YR1; u < (perspective.COREMEASURE[cm_id].YR1 + session.span_yrs); u++)  
  {
    obj.x_axis.labels.labels[obj.x_axis.labels.labels.length] = u.toString();
  }
   
  obj.bg_colour = "#EEEEDD";

  obj.title.text = "";
  obj.title.style = "{font-size: 14px; color:#000000; font-weight:bold; font-family: Verdana; text-align: center;}";
  
  if(perspective.COREMEASURE[cm_id].Y_AXIS)  //OFC blows up if no y axis
    obj.y_legend.text = perspective.COREMEASURE[cm_id].Y_AXIS;
  else
    obj.y_legend.text = "Response";
    
  obj.y_legend.style = "{color: #000000; font-size: 12px;}";  
 
  var _min = null;
  var _max = null;
  
  //summary data

  cur_pop_list = [];
    
  var cnt = 0;
  
  if(perspective.COREMEASURE[cm_id].BAND > 0)
  {
	  var a = 0 - parseInt(perspective.COREMEASURE[cm_id].BAND,10);
	  var b = perspective.COREMEASURE[cm_id].BAND;
	  var x = 0;
	  var y = 6;
	  //alert(1)
	  obj.elements[obj.elements.length] = { "type": "shape", "colour": "#FEAA66", "values": [ { "x": x, "y": a }, { "x": x, "y": b }, { "x": y, "y": b }, { "x": y, "y": a } ] };  
	  obj.elements[obj.elements.length] = { "type": "shape", "colour": "#222222", "values": [ { "x": x, "y": -.5 }, { "x": x, "y": .5 }, { "x": y, "y": .5 }, { "x": y, "y": -.5 } ] };  

  }
  
  if(perspective.COREMEASURE[cm_id].GRAPH_LEVEL == 1)
  {
   if(perspective.CORE_MEASURE_POPULATION[cm_id])  
   {
    $.each(perspective.CORE_MEASURE_POPULATION[cm_id], function (p, pop) {
    
      perspective.CORE_MEASURE_POPULATION[cm_id][p].series_event = function () {show_details(cm_id, p);}
      
      var cm_values = [];
 
      for(var u = perspective.COREMEASURE[cm_id].YR1; u < (perspective.COREMEASURE[cm_id].YR1 + session.span_yrs); u++)  
      {  
    
        if(perspective.COREMEASURE[cm_id].OP_TYPE==0)
        {     
          if(perspective.INVENTORY_MANUAL_SCORES[cm_id] && perspective.INVENTORY_MANUAL_SCORES[cm_id][p] && perspective.INVENTORY_MANUAL_SCORES[cm_id][p][u] && perspective.INVENTORY_MANUAL_SCORES[cm_id][p][u].SCORE) 
          {
            var tmp = parseFloat(perspective.INVENTORY_MANUAL_SCORES[cm_id][p][u].SCORE);
       
            cm_values[cm_values.length] = tmp;          
            if(tmp < _min || ! _min) _min = tmp;
            if(tmp > _max || ! _max) _max = tmp;      
          
            cur_pop_list[cur_pop_list.length] = p;  
          }
          else 
          {
            cm_values[cm_values.length] = null;
            cur_pop_list[cur_pop_list.length] = p;
          }
        }
        else
        { 
        
          if(perspective.INVENTORY_SCORES[cm_id] && perspective.INVENTORY_SCORES[cm_id][p] && perspective.INVENTORY_SCORES[cm_id][p][u] && perspective.INVENTORY_SCORES[cm_id][p][u].SCORE) 
          {
            var tmp = parseFloat(perspective.INVENTORY_SCORES[cm_id][p][u].SCORE);
       
            cm_values[cm_values.length] = tmp;          
            if(tmp < _min || ! _min) _min = tmp;
            if(tmp > _max || ! _max) _max = tmp;      
          
            cur_pop_list[cur_pop_list.length] = p;  
          }
          else 
          {
            cm_values[cm_values.length] = null;
            cur_pop_list[cur_pop_list.length] = p;
          }
        }
      };      
     
      cnt = perspective.CORE_MEASURE_POPULATION[cm_id][p].CLR;
      
      var clr = global.BSC_COLORS[cnt].COLOR_VALUE; //"#9933CC";

      if(p == perspective.COREMEASURE[cm_id].BASELINE_ID)
        clr = global.BSC_SETTING.baseline_color.SETTING_VALUE;
      if(p == perspective.COREMEASURE[cm_id].COMPARATIVE_ID)
        clr = global.BSC_SETTING.comparative_color.SETTING_VALUE;
      if(p == perspective.COREMEASURE[cm_id].TARGET_ID)
        clr = global.BSC_SETTING.target_color.SETTING_VALUE;
     
     
     if(perspective.COREMEASURE[cm_id].CHART_TYPE1 == 1)   
        obj.elements[obj.elements.length] = {"type":"line","on-show":{"type":"fade-in","cascade":0,"delay":0},"null-gap":true,"alpha":"0.5","pop_id":p,"colour":clr,"dot-size":4,"halo-size":0,"text":"","font-size":8,"values":cm_values,"dot-style":{"on-click":"perspective.CORE_MEASURE_POPULATION["+cm_id+"]["+p+"].series_event","type":"solid-dot", "colour":clr, "dot-size": 4,"halo-size":0,"tip":pop.TITLE+": #val#"}};
     else                                                                                                                                       
        obj.elements[obj.elements.length] = {"type":"bar","null-gap":true,"on-show":{"type":"fade-in","cascade":0,"delay":0},"alpha":0.5,"pop_id":p,"colour":clr,"font-size":8,"dot-size":4,"halo-size":0,"values":cm_values,"on-click":"perspective.CORE_MEASURE_POPULATION["+cm_id+"]["+p+"].series_event","tip":pop.TITLE+": #val#"};        
    });
   }  
  }
 
  if(perspective.COREMEASURE[cm_id].GRAPH_LEVEL == 2 && perspective.COREMEASURE[cm_id].ITEM_ID > 0)
  {
    cur_item_list = [];
   
    var p = perspective.COREMEASURE[cm_id].ITEM_ID;
    
    var cnt = 0;
    var clr = "#000000";
    
    $.each(perspective.CORE_MEASURE_INVENTORY_ITEM[cm_id], function (i, item) {   
      
      perspective.CORE_MEASURE_INVENTORY_ITEM[cm_id][i].series_event = function () {show_details2(cm_id, i, 1);}
      
      var cm_values = [];      
      var tmp_index = 0;
      
      for(var u = perspective.COREMEASURE[cm_id].YR1, idx=0; u < (perspective.COREMEASURE[cm_id].YR1 + session.span_yrs); u++, idx++)  
      { 
        var t = 1; //frequency term
        
        if(perspective.INVENTORY_VALUE[cm_id] && perspective.INVENTORY_VALUE[cm_id][p] && perspective.INVENTORY_VALUE[cm_id][p][i] && perspective.INVENTORY_VALUE[cm_id][p][i][t] && perspective.INVENTORY_VALUE[cm_id][p][i][t][u] && perspective.INVENTORY_VALUE[cm_id][p][i][t][u].SCORE) 
        {
          var tmp = parseFloat(perspective.INVENTORY_VALUE[cm_id][p][i][t][u].SCORE);          
        
          cm_values[idx] = tmp;        
          
          if(tmp < _min || ! _min) _min = tmp;
          if(tmp > _max || ! _max) _max = tmp;    
          cur_item_list[idx] = i;      
        }
        else 
        {
          cm_values[idx] = null;
        }
        
      };
   
      cnt = perspective.CORE_MEASURE_INVENTORY_ITEM[cm_id][i].CLR;     
      
      var mod = cnt%20;      
      
      var clr = global.BSC_COLORS[mod].COLOR_VALUE; //"#9933CC";
       
      if(perspective.COREMEASURE[cm_id].CHART_TYPE2 == 1)   
        obj.elements[obj.elements.length] = {"type":"line","on-show":{"type":"fade-in","cascade":0,"delay":0},"null-gap":true,"alpha":0.5,"colour":clr,"text":"","dot-size":4,"font-size":8,"values":cm_values,"dot-style":{"on-click":"perspective.CORE_MEASURE_INVENTORY_ITEM["+cm_id+"]["+i+"].series_event","type":"solid-dot", "colour":clr, "dot-size":4,"halo-size":0,"tip":item.ITEM_VALUE+": #val#"}};
      else                                                                                                                                       
        obj.elements[obj.elements.length] = {"type":"bar","null-gap":true,"on-show":{"type":"fade-in","cascade":0,"delay":0},"alpha":0.5,"colour":clr,"font-size":8,"dot-size":4,"values":cm_values,"on-click":"perspective.CORE_MEASURE_INVENTORY_ITEM["+cm_id+"]["+i+"].series_event","tip":item.ITEM_VALUE+": #val#"};
      
      cnt++;
    });     
   } 
 
  
  if(perspective.COREMEASURE[cm_id].GRAPH_LEVEL == 3 && perspective.COREMEASURE[cm_id].ITEM_ID > 0)
  { 
    cur_pop_list = [];
    
    var i = perspective.COREMEASURE[cm_id].ITEM_ID; 
    
    $.each(perspective.CORE_MEASURE_POPULATION[cm_id], function (p, pop) {
        
      perspective.CORE_MEASURE_POPULATION[cm_id][p].series_event = function () {show_details(cm_id, p);}
      
      var cm_values = [];
     
      for(var u = perspective.COREMEASURE[cm_id].YR1; u < (perspective.COREMEASURE[cm_id].YR1 + session.span_yrs); u++)  
      { 
        var t = 1; //frequency term
        
        if(perspective.INVENTORY_VALUE[cm_id] && perspective.INVENTORY_VALUE[cm_id][p] && perspective.INVENTORY_VALUE[cm_id][p][i] && perspective.INVENTORY_VALUE[cm_id][p][i][t] && perspective.INVENTORY_VALUE[cm_id][p][i][t][u] && perspective.INVENTORY_VALUE[cm_id][p][i][t][u].SCORE) 
        {
          var tmp = parseFloat(perspective.INVENTORY_VALUE[cm_id][p][i][t][u].SCORE);          
        
          cm_values[cm_values.length] = tmp;          
          if(tmp < _min || ! _min) _min = tmp;
          if(tmp > _max || ! _max) _max = tmp;  
          
          cur_pop_list[cur_pop_list.length] = p;
        }
        else 
        {
          cm_values[cm_values.length] = null;
        }
      };
    
      cnt = perspective.CORE_MEASURE_POPULATION[cm_id][p].CLR;
      
      var clr = global.BSC_COLORS[cnt].COLOR_VALUE; //"#9933CC";

      if(p == perspective.COREMEASURE[cm_id].BASELINE_ID)
        clr = global.BSC_SETTING.baseline_color.SETTING_VALUE;
      if(p == perspective.COREMEASURE[cm_id].COMPARATIVE_ID)
        clr = global.BSC_SETTING.comparative_color.SETTING_VALUE;
      if(p == perspective.COREMEASURE[cm_id].TARGET_ID)
        clr = global.BSC_SETTING.target_color.SETTING_VALUE;
     
      if(perspective.COREMEASURE[cm_id].CHART_TYPE3 == 1)   
        obj.elements[obj.elements.length] = {"type":"line","on-show":{"type":"fade-in","cascade":0,"delay":0},"null-gap":true,"alpha":0.5,"colour":clr,"text":"","dot-size":4,"font-size":8,"values":cm_values,"dot-style":{"on-click":"perspective.CORE_MEASURE_POPULATION["+cm_id+"]["+p+"].series_event","type":"solid-dot", "colour":clr, "dot-size":4,"halo-size":0,"tip":pop.TITLE+": #val#"}};
      else                                                                                                                                       
        obj.elements[obj.elements.length] = {"type":"bar","null-gap":true,"on-show":{"type":"fade-in","cascade":0,"delay":0},"alpha":0.5,"colour":clr,"font-size":8,"dot-size":4,"values":cm_values,"on-click":"perspective.CORE_MEASURE_POPULATION["+cm_id+"]["+p+"].series_event","tip":pop.TITLE+": #val#"};
    
    });
  }
  
  
  
  if(!_min) _min = 0;
  if(!_max) _max = 100;
  
  aa = _min;
  bb = _max;
  
  var x = parseInt(_min);
  var y = parseInt(_max)+1;
 
  var z = (y-x)/2;

  if(z == 0)
  {
    obj.y_axis.min = 0
    obj.y_axis.max = 2*y
  }
  else
  {
    obj.y_axis.min = parseInt(x-z);
    obj.y_axis.max = parseInt(y+z);
  }
  
  //don't like this
  if(x >= 0 && obj.y_axis.min < 0)
    obj.y_axis.min = 0; 
    
  if(perspective.COREMEASURE[cm_id].Y_AXIS_MIN && perspective.COREMEASURE[cm_id].Y_AXIS_MAX)
  {
	if(perspective.COREMEASURE[cm_id].GRAPH_LEVEL == 1 || (_min >= perspective.COREMEASURE[cm_id].Y_AXIS_MIN && _max <= perspective.COREMEASURE[cm_id].Y_AXIS_MAX) )
	{
	  obj.y_axis.min = perspective.COREMEASURE[cm_id].Y_AXIS_MIN;
	  obj.y_axis.max = perspective.COREMEASURE[cm_id].Y_AXIS_MAX;	
	}
  }  
  else
  {
	if(perspective.COREMEASURE[cm_id].CHART_TYPE2 == 2)  
	{
		obj.y_axis.min = obj.y_axis.min - z;  	
	}
  }
 
  obj.y_axis.steps= parseInt((obj.y_axis.max - obj.y_axis.min)/global.BSC_SETTING.y_axis_steps.SETTING_VALUE);
  
  if(perspective.COREMEASURE[cm_id].Y_AXIS_STEPS > 0)
    obj.y_axis.steps=((obj.y_axis.max - obj.y_axis.min)/perspective.COREMEASURE[cm_id].Y_AXIS_STEPS); 

  return JSON.stringify(obj);
}
