	//Цвета для положительного и отрицательного изменеий
    var positiveChangeColor = "80FF80";
	var negativeChangeColor = "FFC0C0";
	//Настройки обновлений для HTML котировок
	var serverName = "j2.forexpf.ru";
	var serverPort = "80";
	var serverPath = "proftrading"
	var initPagePath = "informers/initquotepage.jsp";
	var reloadPagePath = "informers/reloadquotepage.jsp";
	//Настройки графиков HTML
	var chartServerName = "j2.forexpf.ru";
	var chartServerPort = "80";
	var chartServerPath = "proftrading/chart3.jsp";
	var chartWidth = 700;
	var chartHeight = 500;
	
	function initInstrumentQuoteInx(instrumentId, price, change, changeRate, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  inst.cells[1].innerHTML = price;
	  inst.cells[2].innerHTML = change;
	  inst.cells[3].innerHTML = changeRate;
	  inst.cells[4].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  inst.cells[3].bgColor = color;
	  
	  return true;
    }

	function initInstrumentQuoteStock(instrumentId, bid, ask, change, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  inst.cells[1].innerHTML = bid;
	  inst.cells[2].innerHTML = ask;
	  inst.cells[3].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  
	  return true;
    }

	function initInstrumentQuoteFutures(instrumentId, price, change, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  inst.cells[1].innerHTML = price;
	  inst.cells[2].innerHTML = change;
	  inst.cells[3].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  
	  return true;
    }

    function changeInstrumentQuoteInx(instrumentId, price, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  var oldPrice = inst.cells[1].innerHTML;
	  var change = Math.round((price - oldPrice) * 100)/100;
	  var changeRate = Math.round(change / oldPrice * 10000)/100;
	  	  
	  inst.cells[1].innerHTML = price;
	  inst.cells[2].innerHTML = change;
	  inst.cells[3].innerHTML = changeRate + "%";
	  inst.cells[4].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  inst.cells[3].bgColor = color;
	  
	  return true;
    }

    function changeInstrumentQuoteFutures(instrumentId, price, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  var oldPrice = inst.cells[1].innerHTML;
	  var change = Math.round((price - oldPrice) * 100)/100;
	  	  
	  inst.cells[1].innerHTML = price;
	  inst.cells[2].innerHTML = change;
	  inst.cells[3].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  
	  return true;
    }
	
    function changeInstrumentQuoteCurrencyFutures(instrumentId, price, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  var oldPrice = inst.cells[1].innerHTML;
	  var change = Math.round((price - oldPrice) * 10000)/10000;
	  	  
	  inst.cells[1].innerHTML = price;
	  inst.cells[2].innerHTML = change;
	  inst.cells[3].innerHTML = timestamp;
	  
	  var color = (change > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (change == 0) color = null;
	  
	  inst.cells[1].bgColor = color;
	  inst.cells[2].bgColor = color;
	  
	  return true;
    }

    function changeInstrumentQuoteStock(instrumentId, bid, ask, timestamp) {
	  var inst = document.getElementById(instrumentId);
	  
	  var oldBid = inst.cells[1].innerHTML;
	  var oldAsk = inst.cells[2].innerHTML
	  var changeBid = bid - oldBid;
	  var changeAsk = ask - oldAsk;
	  	  
	  inst.cells[1].innerHTML = bid;
	  inst.cells[2].innerHTML = ask;
	  inst.cells[3].innerHTML = timestamp;
	  
	  var colorBid = (changeBid > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (changeBid == 0) colorBid = null;
	  
	  var colorAsk = (changeAsk > 0) ? positiveChangeColor : negativeChangeColor ;
	  if (changeAsk == 0) colorAsk = null;

	  inst.cells[1].bgColor = colorBid;
	  inst.cells[2].bgColor = colorAsk;
	  
	  return true;
    }
	
	function getInitDataLocation() {
	  return 'http://' + serverName + ':' + serverPort + '/' + serverPath + '/' + initPagePath;
	}

	function getReloadDataLocation(timestamp) {
	  return 'http://' + serverName + ':' + serverPort + '/' + serverPath + '/' + reloadPagePath + '?lastUpdateTime='+ timestamp;
	}
	
	function loadData() {
	  scr = document.createElement('script');
	  scr.type='text/javascript';
	  scr.language='JavaScript';
	  scr.src=getInitDataLocation();
	  document.getElementsByTagName('head')[0].appendChild(scr);
	  return scr;
    }
  
    function reloadData(oldChild, timestamp) {
	  if (oldChild != null) {
	    document.getElementsByTagName('head')[0].removeChild(oldChild);
	  }

	  scr = document.createElement('script');
	  scr.type='text/javascript';
	  scr.language='JavaScript';
	  scr.src=getReloadDataLocation(timestamp);
	  document.getElementsByTagName('head')[0].appendChild(scr);

	  return scr;
    }
	
	function applyChanges() {
	  var sel = document.getElementById('refreshRate');
	  var selectedRate;
	  
      for(i = 0; i < sel.options.length; i++) {
	    if(sel.options[i].selected) {
		  selectedRate = sel.options[i].value;
		}
	  }

   	  setRefreshRate(selectedRate);
	}
	
	function disableControls(disable) {
	  if(disable) {
		document.getElementById('manualRefresh').style.display='none';
		document.getElementById('manualRefreshDisabled').style.display='inline';
	  } else {
		document.getElementById('manualRefreshDisabled').style.display='none';
		document.getElementById('manualRefresh').style.display='inline';
	  }
	}
	
	function getChartLocation(instrumentId) {
	  return 'http://' + chartServerName + ':' + chartServerPort + '/' + chartServerPath + '?instrumentId=' + instrumentId;
	}
	
	function showChart(instrumentId) {
		wn = "chart_" + instrumentId;
		wf = 'toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=0,resizable=1';
		wf += ',width=' + chartWidth;
		wf += ',height=' + chartHeight;
		
		window.open(getChartLocation(instrumentId), wn, wf);
	}
	
  //aliases
  function ii(inid, pr, ch, chRt, ts) {
    return initInstrumentQuoteInx(inid, pr, ch, chRt, ts);
  }
  
  function ci(inst, pr, ts) {
    return changeInstrumentQuoteInx(inst, pr, ts);
  }
  
  function is(inid, b, a, ch, ts) {
    return initInstrumentQuoteStock(inid, b, a, ch, ts);
  }
  
  function cs(inst, b, a, ts) {
    return changeInstrumentQuoteStock(inst, b, a, ts);
  }
  
  function inf(inid, pr, ch, ts) {
    return initInstrumentQuoteFutures(inid, pr, ch, ts);
  }
  
  function cf(inst, pr, ts) {
    return changeInstrumentQuoteFutures(inst, pr, ts);
  }
  
  function ccf(inst, pr, ts) {
  	return changeInstrumentQuoteCurrencyFutures(inst, pr, ts);
  }
  
  function sc(inst) {
    return showChart(inst);
  }

