// JScript 文件

//坐标的一些值
var kd_x=8;//X轴的刻度数
var kd_y=9;//Y轴的刻度数

//全局变量
var dataArr = new Array();
var colorArr = new Array();

//坐标的一些值
var FROM_X  = 350;//Y轴开始点的Y轴值
var FROM_Y  = 200;//Y轴开始点的X轴值
var TO_X    = 3920 ;//x轴结束点的X轴值
var TO_Y    = 2000; //x轴结束点的Y轴值


//画框的阴影
var osx= 4;
var osy= 3;

var filled="false";//是否填充颜色

function drawZB()
{
    //画坐标
    drawxy(FROM_X, FROM_Y, TO_X-FROM_X, TO_Y-FROM_Y);
    //画框
    drawbk(4, 3);
    addDiv("50", "10", "MA5:", "0", "", "#e18700", "12px");
    addDiv("75", "10", "■", "0", "", "#e18700", "12px");
    addDiv("100", "10", "MA10:", "0", "", "#787842", "12px");
    addDiv("125", "10", "■", "0", "", "#787842", "12px");
    addDiv("150", "10", "MA20:", "0", "", "#0001f8", "12px");
    addDiv("175", "10", "■", "0", "", "#0001f8", "12px");
    //画横纵坐标
    drawhz(8, 9, FROM_X, FROM_Y, TO_X, TO_Y);
    //添加k线图的X刻度标签
    addScaleLabel_X();
    //添加k线图的Y刻度标签
    addScaleLabel_Y();
    //画5日均线折线图
    drawPolyLine(genPolyLine(k_ma5_line), "#e18700", "false");
    //画10日均线折线图
    drawPolyLine(genPolyLine(k_ma10_line), "#787842", "false");
    //画20日均线折线图
    drawPolyLine(genPolyLine(k_ma20_line), "#0001f8", "false");
    //画折线图
    drawStock();
    //画k线图坐标(销售量)
    drawxy(FROM_X, 2200, TO_X - FROM_X, 900);
    //画k线图横纵坐标(销售量)
    drawhz(8, 5, FROM_X, 2200, TO_X, 3100);
    //画k线图Y刻度(销售量)
    addCountSaleLabel(5, 3000);
    var yScale =   900   / arrayMax(fdaycount);
    var count = fdaycount.length -1;
    var xScale = (TO_X - FROM_X)  / DAY_COUNT ;
    //画柱体(销售量)
    for (var i = 0; i < count; i++)
    {
        var left = FROM_X + xScale * i;
        var v = Math.abs(fdaycount[i]);
        drawBar(left, yScale * v, v, fdaycount[i] > 0 ? "red" : "#00ab00");
    }
    //zoom(4);
}

var xx=9000;
var yy=8400;
function zoom(h)
{
    group1.coordsize=xx/h+","+yy/h;
    var divs = group1.getElementsByTagName('div');
    
    for(var i=0;i<divs.length;i++)
      divs[i].style.fontSize=9*h+"pt";

}

function drawxy(fx, fy, tx, ty)
{
  //画坐标
  var canvas = document.all.group1;
  if (canvas == null)
    return ;
  var newShape = document.createElement(
    "<v:rect style='position:relative;left:" + fx + ";top:" + fy + ";width:" + 
    (tx) + ";height:" + (ty) + ";z-index:1;border:1px'></v:rect>");
  canvas.insertBefore(newShape);
}

function drawbk(osx,osy)
{
  //画框
  var canvas = document.all.group1;
  if(canvas == null) return;
  var newrect = document.createElement("<v:rect style='WIDTH:4100;HEIGHT:3250'  fillcolor='white' strokecolor='black'></v:rect>");
  canvas.insertBefore(newrect);
  var newrectStroke = document.createElement("<v:shadow on='t' type='single' color='silver' offset='"+osx+"pt,"+osy+"pt'></v:shadow>");
  newrect.insertBefore(newrectStroke);	
  
}
//画横纵虚线坐标  
function drawhz(kd_x, kd_y, fx, fy, tx, ty)
{
  //画纵坐标
    var count = kd_x - 1;
    var diff = (tx - fx ) / count;
    for (var i = 1; i < count; i++)
    {
        var px = fx + diff * i;
        createLine(px,fy, px, ty);
    }
    //画横坐标
    var count = kd_y -1;
    var diff = (ty-fy)/(count);
    for (var i = 1; i < count; i++)
    {
        var py = fy + diff * i ;
        createLine(fx, py, tx, py);
    }
}

//添加k线图的Y刻度标签
function addScaleLabel_Y()
{
  var maxData = index[0]; //最大值
  var minData = index[1]; //最小值
  var difference = (maxData - minData) / (kd_y -1);
  var scale = (TO_Y - FROM_Y) / (kd_y -1);
  //Y轴刻度
  for (var i = 0; i < kd_y; i++)
  {
    var kdvalue = Math.round( (maxData - difference * i)*100)/100;
    var py1 = FROM_Y + scale * i - 80;
    createText(-50, py1, kdvalue);
  }
}

//添加k线图的X刻度标签
function addScaleLabel_X()
{
  //x轴刻度
  var scale = (TO_X - FROM_X) /(kd_x-1);
  for (var i = 0; i < kd_x; i++)
  {
    var px1 = 130 + scale * i;
    createText(px1, TO_Y, k_x_val[i]);
  }
}

//添加金币出售量的刻度标签
function addCountSaleLabel(kd_y, ty)
{
  var maxData = arrayMax(fdaycount); //最大值
  var minData = 0; //最小值
  var difference = Math.ceil((maxData - minData) / (kd_y - 1)) == 0 ? 1 :
    Math.ceil((maxData - minData) / (kd_y - 1));
  //Y轴刻度
  for (var i = kd_y - 1; i >= 0; i--)
  {
    var kdvalue = minData + difference * i;
    var py1 = 28 * (kd_y - i - 1) + ty % kd_y + 293;
    var px1 = 5;
    var newLine = document.createElement(
      "<div style='LEFT: 5; POSITION: absolute; TOP: " + py1 + 
      "; BORDER:0 solid;color:black;text-align:right;WIDTH:37px; font-size:12px' ></div>");
    newLine.innerHTML = kdvalue;
    group1.insertBefore(newLine);
  }
}

//画折线
function drawPolyLine(PolyLine, color, filled)
{
  var canvas = document.all.group1;
  if (canvas == null)
    return ;
  var strPoly = "<v:PolyLine filled='" + filled + "' Points='" + PolyLine + 
    "' style='POSITION:absolute;z-index:9;' strokecolor='" + color + 
    "' fillcolor='" + color + "'/>";
  var ploy = document.createElement(strPoly);
  canvas.appendChild(ploy);
}

//画柱体
function drawBar(left, top, title, color)
{
  if (!!!left || !!!top)    return ;
  var px = 3098-top;
  var newShape = document.createElement("v:rect");
  newShape.style.position = 'relative';
  newShape.style.left = left;
  newShape.style.top = px;
  newShape.style.width = 25 * PROPORTION;
  newShape.style.height = top;
  newShape.fillColor = color;
  newShape.strokeColor = color;
  newShape.title = title;
  newShape.style.zIndex = 9;
  group1.appendChild(newShape);
}


//添加DIV
function addDiv(left, top, value, border, bgColor,color,size){
	var canvas = document.all.group1;
	if(canvas == null) return;

	var strDiv = "<div style='LEFT: "+ left +"px; POSITION: absolute; TOP: "
		+ top +"px; BORDER:"+ border +"px solid;color:"+color+"; font-size:"+size+"; BACKGROUND-COLOR:"+ bgColor +";'></div>";
	var div = document.createElement(strDiv);
	canvas.appendChild(div);
	div.innerHTML = value;
}
function drawStock()
{    
      
    var max = index[0]; //最大值
    var min = index[1]; //最小值
  
    var xScale = (TO_X - FROM_X) / DAY_COUNT;
    var yScale = (TO_Y - FROM_Y) / (max - min);

    var i = 0,j = 0;
    while ( i < k_val_line.length - 1)
    {
        var k = k_val_line[i];
        var s = k_val_line[i + 1];
        var g = k_val_line[i + 2];
        var d = k_val_line[i + 3];
        var z = k_val_line[i + 4];
        if (!!k)
        {
            //kai pan
            var line = (FROM_X + j * xScale) + "," + (FROM_Y + (max - k ) * yScale ) + ",";
            //shou pan
            line += (FROM_X + j * xScale) + "," + (FROM_Y + (max - s ) * yScale ) + ",";
            
            //shou pan ju xing
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - s ) * yScale ) + ",";
            //gao 
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - g ) * yScale ) + ",";
            
            //shou pan ju xing
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - s ) * yScale ) + ",";
            
            //shou pan ju xing
            line += (FROM_X + j * xScale + 2 * 12 * PROPORTION) + "," + (FROM_Y + (max - s ) * yScale ) + ",";

            //kai pan jux ing
            line += (FROM_X + j * xScale + 2 * 12 * PROPORTION) + "," + (FROM_Y + (max - k ) * yScale) + ",";
            
            //kai pan jux ing
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - k ) * yScale) + ",";
            
            //di
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - d ) * yScale) + ",";
            
            //kai pan jux ing
            line += (FROM_X + j * xScale + 12 * PROPORTION) + "," + (FROM_Y + (max - k ) * yScale) + ",";
            //kai pan jux ing
            line += (FROM_X + j * xScale ) + "," + (FROM_Y + (max - k ) * yScale) + ",";
            
            
            var color = z == 1 ? "red" : "#00ab00";
            var fill = z == 0 ? "true" : "true";
            drawPolyLine(line, color, fill);
        }
        i += 5;
        j++;
    }
}  

function arrayMax(arr)
{
  var max = 0;
  for (i = 0,  count = arr.length - 1; i < count; i++)
  {
    if (Math.abs(arr[i]) > max) max = Math.abs(arr[i])
  }
  return max;
}
function arrayMin(arr)
{
    
  var max = 999999;
  for (i = 0,  count = arr.length - 1; i < count; i++)
  {
    if (Math.abs(arr[i]) < max) max = Math.abs(arr[i])
  }
  return max;
}
function genPolyLine(ary)
{
    var s = '';
    var max = index[0]; //最大值
    var min = index[1]; //最小值
  
    var count = ary.length - 1;
    var xScale = (TO_X - FROM_X) / DAY_COUNT;
    var yScale = (TO_Y - FROM_Y) / (max - min);
    for (var i = 0; i < count; i++)
    {   if (!!! ary[i]) continue;
        s += FROM_X + i * xScale;
        s += ",";
        s += FROM_Y + (max -ary[i]  ) * yScale ;
        s += ",";
    }
    return s;
}
function createLine(fx,fy, tx, ty)
{
    var newLine = document.createElement("<v:line from='" + fx + "," + fy + 
      "' to='" + tx + "," + ty + 
      "' style='position:absolute;z-index:7'></v:line>");
    group1.appendChild(newLine);
    var newStroke = document.createElement(
      "<v:stroke color='grad' dashstyle='dot'>");
    newLine.appendChild(newStroke);
}
function createText(x, y, text)
{
    var shape = document.createElement("v:shape");
    with (shape.style) 
    {
        position = 'relative';
        left = x  ;
        top = y;
        width = 500;
        height = 300;
        zIndex = 9;

    }    
    group1.appendChild(shape);
    
    var obj = document.createElement("<v:textbox  />");
    with (obj)
    {
        innerHTML  = text;
    }
    shape.appendChild(obj);
}
