function createXhr () {
  var xhr = null;

  if (window.XMLHttpRequest)
    xhr = new XMLHttpRequest ();
  else if (window.ActiveXObject)
    try { xhr = new ActiveXObject ("Msxml2.XMLHTTP"); }
    catch (e) {
      try { xhr = new ActiveXObject ("Microsoft.XMLHTTP"); }
      catch (e) {}
    }
  return xhr;
}

function gElm(element) {
  return document.getElementById(element);
}

function toggleFlash(state) {
  if(state != 1) state = 0;
  
  if(state == 1) {
    myFlashObject=new Object
    myFlashObject.movie="./img/flash.swf"
    myFlashObject.quality="high"
    myFlashObject.wmode="transparent"
    myFlashObject.width=502
    myFlashObject.height=224
    myFlashObject.version="7,0,19,0"

    commitFlashObject(myFlashObject, "myFlashDiv")
  }
  else {
    source  = '<img src="./img/flash-static.png" alt="" title="" usemap="#buttonMap" />';
    source += '<map name="buttonMap">';
    source += '<area href="#" shape="rect" coords="423, 2, 475, 25" onclick="toggleFlash(1); return false;" />';
    source += '</map>';
    gElm('myFlashDiv').innerHTML = source;
  }

  var flashState = createXhr();
  flashState.onreadystatechange = function () {
    if(flashState.readyState == 4)
      flashState = null;
  };
  flashState.open("GET", './scr/ajax/setFlashState.php?s=' + state);
  flashState.send(null);
}

function uncheckAllPositions(positionList) {
  if(gElm('pozice_00').checked == true) {
    var positionIds = positionList.split('|');
    for(i=0;i<positionIds.length;i++) {
      gElm('pozice_' + positionIds[i]).checked = false;
      gElm('pozice_' + positionIds[i]).disabled = true;
      gElm('poz_popis_' + positionIds[i]).className = 'disabl';
    }
  }
  else {
    var positionIds = positionList.split('|');
    for(i=0;i<positionIds.length;i++) {
      gElm('pozice_' + positionIds[i]).checked = false;
      gElm('pozice_' + positionIds[i]).disabled = false;
      gElm('poz_popis_' + positionIds[i]).className = '';
    }
  }
}

function uncheckAnyPosition(currPos) {
  if(gElm('pozice_' + currPos).checked == true) {
    gElm('pozice_00').checked = false;
  }
}

function checkContactFormSubmit(positionList) {
  result = true;
  // ======================================
  if(gElm('kod').value == "") {
    gElm('kod').className = 'pole_male_a';
    result = false;
  }
  else
    gElm('kod').className = 'pole_male';
  // ======================================
  if(gElm('souhlas').checked == false) {
    gElm('souhlas_lab').className = 'check_a';
    result = false;
  }
  else
    gElm('souhlas_lab').className = '';
  // ======================================
  positionIds = positionList.split('|');
  resultPozice = false;
  for(i=0;i<positionIds.length;i++) {
    if(gElm('pozice_' + positionIds[i]).checked == true)
      resultPozice = true;
  }
  if(resultPozice == false && gElm('pozice_00').checked == false)
    resultPozice = false;
  else
    resultPozice = true;
    
  if(resultPozice == false) {
    gElm('pozice_lab').className = 'check_a';
    result = false;
  }
  else
    gElm('pozice_lab').className = '';
  
  if(result) {
    if(gElm('kod').value != "" && isNaN(gElm('kod').value)) {
      gElm('kod').className = 'pole_male_a';
      alert('Opište prosím správný kód.');
    }
    else {
      gElm('kod').className = 'pole_male';
      gElm('contactForm').submit();
    }
  }
  else
    alert('Vyplňte prosím všechna povinná pole.');
}

function checkFieldsPages() {
  if(gElm('typ1').checked) {
    gElm('row_script').className = 'displayNone';
    gElm('row_text').className = '';
  }
  if(gElm('typ2').checked) {
    gElm('row_script').className = '';
    gElm('row_text').className = 'displayNone';
  }
  if(gElm('typ4').checked) {
    gElm('row_script').className = '';
    gElm('row_text').className = '';
  }
}

function checkFieldsMenu() {
  if(gElm('typ1').checked) {
    gElm('row_page').className = '';
    gElm('row_link').className = 'displayNone';
    gElm('row_prod').className = 'displayNone';
  }
  if(gElm('typ2').checked) {
    gElm('row_page').className = 'displayNone';
    gElm('row_link').className = '';
    gElm('row_prod').className = 'displayNone';
  }
  if(gElm('typ3').checked) {
    gElm('row_page').className = 'displayNone';
    gElm('row_link').className = 'displayNone';
    gElm('row_prod').className = '';
  }
}

/* =================== TVORBA CD =================== */

function setProgressBar(barId, percent) {
  if(percent > 0)
    gElm(barId + '_bar').style.display = 'block';
  else
    gElm(barId + '_bar').style.display = 'none';
  gElm(barId + '_bar').style.width = percent + '%';
  gElm(barId + '_text').innerHTML = Math.round(percent) + '%';
}

function setProgressDesc(barId, text) {
  gElm(barId + '_status').innerHTML = text;
}

var cF = 0;
var cP = 0;
var cZ = 0;

function startMakingCD() {
  preCleanEnv();
}

function preCleanEnv() {
  var cEnv = createXhr();
  cEnv.onreadystatechange = function () {
    if(cEnv.readyState == 4) {
      if(cEnv.responseText == 'ok') {
        setProgressBar('pBar1', 100);
        setProgressBar('pBar2', 1);
        setProgressDesc('pBar1', 'Počáteční údržba prostředí byla dokončena.');
        cEnv = null;
        setTimeout('copyFiles();', 1000);
      }
      else
        alert('Chyba: ' + cEnv.responseText);
    }
  };
  setProgressBar('pBar1', 0);
  setProgressDesc('pBar1', 'Probíhá počáteční údržba prostředí.');
  cEnv.open("GET", './scr/ajax/cdCleanEnv.php');
  cEnv.send(null);
}

function copyFiles() {
  if(cF < fileList.length) {
    var cFile = createXhr();
    cFile.onreadystatechange = function () {
      if(cFile.readyState == 4) {
        if(cFile.responseText == 'ok') {
          cF++;
          cFile = null;
          // Zavolame dalsi iteraci
          copyFiles();
        }
        else
          alert('Chyba: ' + cFile.responseText);
      }
    };
    setProgressBar('pBar1', ((cF + 1) / fileList.length) * 100);
    setProgressBar('pBar2', 1 + (((cF + 1) / fileList.length) * 20));
    setProgressDesc('pBar1', 'Probíhá kopírování souborů (' + (cF + 1) + ' z ' + fileList.length + ')<br />Soubor: ' + fileList[cF].substr(fileList[cF].lastIndexOf('/') + 1));
    cFile.open("GET", './scr/ajax/cdCopyFile.php?f=' + Base64.encode(fileList[cF]));
    cFile.send(null);
  }
  else {
    cF = 0;
    setProgressDesc('pBar1', 'Kopírování souborů bylo dokončeno.');
    // Zavolame dalsi krok
    setTimeout('copyCdRequisities();', 1000);
  }
}

function copyCdRequisities() {
  var cCR = createXhr();
  cCR.onreadystatechange = function () {
    if(cCR.readyState == 4) {
      if(cCR.responseText == 'ok') {
        setProgressBar('pBar1', 100);
        setProgressBar('pBar2', 22);
        setProgressDesc('pBar1', 'Kopírování souborů potřebných pro CD bylo dokončeno.');
        cCR = null;
        // Zavolame dalsi krok
        setTimeout('savePages();', 1000);
      }
      else
        alert('Chyba: ' + cCR.responseText);
    }
  };
  setProgressBar('pBar1', 0);
  setProgressDesc('pBar1', 'Probíhá kopírování souborů potřebných pro CD.');
  cCR.open("GET", './scr/ajax/cdCopyRequisities.php');
  cCR.send(null);
}

function savePages() {
  if(cP < pageList.length) {
    var sPage = createXhr();
    sPage.onreadystatechange = function () {
      if(sPage.readyState == 4) {
        if(sPage.responseText == 'ok') {
          cP++;
          sPage = null;
          // Zavolame dalsi iteraci
          savePages();
        }
        else
          alert('Chyba: ' + sPage.responseText);
      }
    };
    setProgressBar('pBar1', ((cP + 1) / pageList.length) * 100);
    setProgressBar('pBar2', 22 + (((cP + 1) / pageList.length) * 55));
    setProgressDesc('pBar1', 'Probíhá ukládání stránek webu (' + (cP + 1) + ' z ' + pageList.length + ')');
    sPage.open("GET", './scr/ajax/cdSavePage.php?p=' + Base64.encode(pageList[cP]));
    sPage.send(null);
  }
  else {
    cP = 0;
    setProgressDesc('pBar1', 'Ukládání stránek webu bylo dokončeno.');
    // Zavolame dalsi krok
    setTimeout('getFileListForZipping();', 1000);
  }
}

function getFileListForZipping() {
  var gFL = createXhr();
  gFL.onreadystatechange = function () {
    if(gFL.readyState == 4) {
      gFLresponseParts = gFL.responseText.split('|');
      
      gFLresponseStatus = gFLresponseParts[0];
      gFLresponseData = gFLresponseParts[1];
      
      if(gFLresponseStatus != 'err') {
        zipFileList = gFLresponseData.split(':');
        setProgressBar('pBar1', 100);
        setProgressBar('pBar2', 78);
        setProgressDesc('pBar1', 'Sestavování seznamu souborů pro kompresi bylo dokončeno.');
        gFL = null;
        // Zavolame dalsi krok
        setTimeout('zipFiles();', 1000);
      }
      else
        alert('Chyba: ' + gFLresponseData);
    }
  };
  setProgressBar('pBar1', 0);
  setProgressDesc('pBar1', 'Probíhá sestavování seznamu souborů pro kompresi.');
  gFL.open("GET", './scr/ajax/cdGetFileListForZipping.php');
  gFL.send(null);
}

function zipFiles() {
  if(cZ < zipFileList.length) {
    var zFile = createXhr();
    zFile.onreadystatechange = function () {
      if(zFile.readyState == 4) {
        if(zFile.responseText == 'ok') {
          cZ++;
          zFile = null;
          // Zavolame dalsi iteraci
          zipFiles();
        }
        else
          alert('Chyba: ' + zFile.responseText);
      }
    };
    setProgressBar('pBar1', ((cZ + 1) / zipFileList.length) * 100);
    setProgressBar('pBar2', 78 + (((cZ + 1) / zipFileList.length) * 20));
    setProgressDesc('pBar1', 'Probíhá komprese souborů (' + (cZ + 1) + ' z ' + zipFileList.length + ')<br />Soubor: ' + zipFileList[cZ].substr(zipFileList[cZ].lastIndexOf('/') + 1));
    zFile.open("GET", './scr/ajax/cdZipFiles.php?f=' + Base64.encode(zipFileList[cZ]));
    zFile.send(null);
  }
  else {
    cZ = 0;
    setProgressDesc('pBar1', 'Komprese souborů byla dokončena.');
    // Zavolame dalsi krok
    setTimeout('finishZip();', 1000);
  }
}

function finishZip() {
  var fZP = createXhr();
  fZP.onreadystatechange = function () {
    if(fZP.readyState == 4) {
      if(fZP.responseText == 'ok') {
        setProgressBar('pBar1', 100);
        setProgressBar('pBar2', 99);
        setProgressDesc('pBar1', 'Sestavování výsledného archívu bylo dokončeno.');
        fZP = null;
        // Zavolame dalsi krok
        setTimeout('postCleanEnv();', 1000);
      }
      else
        alert('Chyba: ' + fZP.responseText);
    }
  };
  setProgressBar('pBar1', 0);
  setProgressDesc('pBar1', 'Probíhá sestavování výsledného archívu.');
  fZP.open("GET", './scr/ajax/cdFinishZip.php?c=' + zipFileList.length);
  fZP.send(null);
}

function postCleanEnv() {
  var cEnvP = createXhr();
  cEnvP.onreadystatechange = function () {
    if(cEnvP.readyState == 4) {
      if(cEnvP.responseText == 'ok') {
        setProgressBar('pBar1', 100);
        setProgressBar('pBar2', 100);
        setProgressDesc('pBar1', 'Závěrečná údržba prostředí byla dokončena.');
        cEnvP = null;
        // Zavolame dalsi krok
        setTimeout('finishProcess();', 1000);
      }
      else
        alert('Chyba: ' + cEnvP.responseText);
    }
  };
  setProgressBar('pBar1', 0);
  setProgressDesc('pBar1', 'Probíhá závěrečná údržba prostředí.');
  cEnvP.open("GET", './scr/ajax/cdCleanEnv.php');
  cEnvP.send(null);
}

function finishProcess() {
  tb_remove();
  refreshFileList();
}

/* =========================== */

function refreshFileList() {
  var fList = createXhr();
  fList.onreadystatechange = function () {
    if(fList.readyState == 4) {
      if(fList.responseText != 'null') {
        document.getElementById('fileList').innerHTML = fList.responseText;
        fList = null;
      }
    }
  };
  fList.open("GET", './scr/ajax/cdRefreshList.php');
  fList.send(null);
}