var RequestReady = true;
var ResponseData = "";
var ResponseOK   = false;
var CurrentStep  = 0;
var currURL      = "";
var svGatesType  = 0;
var gWidth       = 0;
var gHeight      = 0;
var gAutomatics  = 0;
var gMount       = 0;
var whTxt; var summTxt;

function updGData(stepNum) {

  if(RequestReady == false) return null;

  CurrentStep = stepNum;
  if(whTxt == null)   whTxt   = document.getElementById('gwhhtml');
  if(summTxt == null) summTxt = document.getElementById('summhtml');

  // STEP 1 - Update gates width and height
  if(CurrentStep == 1) {
    // Get selected gate type
    prevGT = svGatesType;
    foGatesType = document.getElementsByName("GatesType");  
    for (i=0; i<=3; i++) {
      if(foGatesType[i].checked) svGatesType = foGatesType[i].value;
    }
    if(svGatesType == prevGT) { RequestReady = true; return null; }

    // Reset data
    Reset_Combo("selWidth");
    Reset_Combo("selHeight");
    Add_Item("selWidth" , '------', 0);
    Add_Item("selHeight", '------', 0);
    summTxt.innerHTML = "<br>";

    // Proceed server HTTP Request
    RequestReady = false;	
    currURL = "1.php?type="+svGatesType;
  }

  // STEP 2 - Calculate gate price
  if(CurrentStep == 2) {
    // Get data
    gWidth       = document.getElementById('selWidth')[document.getElementById('selWidth').selectedIndex].value;
    gHeight      = document.getElementById('selHeight')[document.getElementById('selHeight').selectedIndex].value;
    gAutomatics  = 0;    
    gMount       = 0;
    if(document.getElementById('GAuto').checked) gAutomatics = 1;
    if(document.getElementById('GMnt').checked)  gMount      = 1;

    // Proceed server HTTP Request
    RequestReady = false;
    currURL = '1.php?calc=1&a='+gAutomatics+'&m='+gMount+'&type='+svGatesType+'&w='+gWidth+'&h='+gHeight;
  }

  whTxt.innerHTML = "<font color='#EE3333'><b>Пожалуйста подождите...</b></font>";

  mkReq(currURL);

}


function mkReq(procURL) {
  var svRequest = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    svRequest = new XMLHttpRequest();
    if (svRequest.overrideMimeType) {
      svRequest.overrideMimeType('text/xml');
    }
  } else if (window.ActiveXObject) { // IE
    try {
      svRequest = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        svRequest = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {}
    }
  }
  if (!svRequest) {
    alert('Не вышло: невозможно создать экземпляр класса XMLHTTP');
    return false;
  }

  svRequest.onreadystatechange = function() { contentsReady(svRequest); };
  svRequest.open('GET', procURL, true);
  svRequest.send(null);
}

function contentsReady(svRequest) {
  if (svRequest.readyState == 4) {
    if (svRequest.status == 200) {
      ResponseData = svRequest.responseText;
      ResponseOK = true;

      if(CurrentStep == 1) { Step1Data(); updGData(2) }
      if(CurrentStep == 2) { Step2Data() }

      whTxt.innerHTML = "";
    } else {
      ResponseData = "";
      ResponseOK = false;
      whTxt.innerHTML = "<font color='#FF1111'><b>Невозможно загрузить данные. Пожалуйста, повторите попытку еще раз! (Ошибка: " + svRequest.status + ")</b></font>";
    }
  }
  RequestReady = true;
}

// STEP 1 - Update width and height combo's data
function Step1Data () {
  var ElArray = ''; ElArray = ResponseData.split("|||");
  var wdArr = '';   wdArr = ElArray[0].split("||");
  var hgArr = '';   hgArr = ElArray[1].split("||");

  // Reset combos
  Reset_Combo("selWidth");
  Reset_Combo("selHeight");

  // Fill Width Combo
  for (i = 0; i < wdArr.length; i+=1) {
    tmpTxt = wdArr[i];
    Add_Item("selWidth", tmpTxt, tmpTxt);
  }

  // Fill Height Combo
  for (i = 0; i < hgArr.length; i+=1) {
    tmpTxt = hgArr[i];
    Add_Item("selHeight", tmpTxt, tmpTxt);
  }
  ResponseData = "";
}

// STEP 2 - Update cost data
function Step2Data () {
  var ElArray = ''; ElArray = ResponseData.split("||");
  var gtCost = '';  gtCost = ElArray[0];
  var ovCost = '';  ovCost = ElArray[1];

//  if(ResponseData) summTxt.innerHTML = "Стоимость ворот: " + gtCost + " EUR" + "<br><font color='#3333FF'>Общая стоимость: " + ovCost + " EUR</font>";
  if(ResponseData) myint(ovCost.toString(),'');

  ResponseData = "";
}


function Add_Item(ComboName, Option_Title, Option_Value) {
  newOption = new Option();
  Combo_Obj = document.getElementById(ComboName).options;
  LastOption = Combo_Obj.length;
  Combo_Obj[LastOption] = newOption;
  Combo_Obj[LastOption].text  = Option_Title;
  Combo_Obj[LastOption].value = Option_Value;
}

function Reset_Combo(selname) {
  Combo_Obj = document.getElementById(selname).options;
  Count = Combo_Obj.length - 1;
  Combo_Obj.selectedIndex = 0;
  for (i=0; i<=Count; i++) {
    Combo_Obj[0] = null;
  }
}

	function myint(int,res)
	{
		temp = int.substr(int.length - 3, 3);
		if (int.length <= 3) 
		{
			if (document.getElementById('GAuto').checked) valu = 'EUR'; else valu = 'RUR';
			summTxt.innerHTML = "<font color='#3333FF'>Cтоимость: " + int + ' ' + res + valu + "</font>";
		} else 
		{
			myint(int.substr(0, int.length - 3), temp + ' ' + res);
		}
	}
