var searchMemory = new Array();

//zapamiętanie pola formularza
function putToMemory(n, v) {
  searchMemory[searchMemory.length] = new Array();
  searchMemory[searchMemory.length - 1][0] = n;
  searchMemory[searchMemory.length - 1][1] = v;
}

//przypomnienie pola formularza
function getFromMemory(n, justCheck) {
  var v = -1;
  for(var i = searchMemory.length - 1; i >= 0 ; i--)
    if(searchMemory[i][0] == n) {
      v = searchMemory[i][1];
      if(justCheck == undefined)
        searchMemory.splice(i, 1);
    }
  return v;
}

//wypełnianie agrofagów
function fillPests() {
  var i;
  var popPests = false;
  var pest = document.forms['formSearchPrep'].elements['pest'];
  var selected = pest.options[pest.selectedIndex].value;
  var type = document.forms['formSearchPrep'].elements['pestType'];
  type = type.options[type.selectedIndex].value;
  pest.options.length = 1;
  if(popularPests[0] != 0) {
    i = 0;
    while(popularPests[i] != 0) {
      if(!type || type == popularPests[i+4])
        popPests = true;
      i+=6;
    }
    if(popPests) {
      for(i = pest.childNodes.length - 1; i >= 0; i--)
        if(pest.childNodes[i].nodeName.toLowerCase() == 'optgroup')
          pest.removeChild(pest.childNodes[i]);
      var popGrp = document.createElement('optgroup');
      popGrp.label = popularPestsLabel;
      pest.appendChild(popGrp);
      i = 0;
      while(popularPests[i] != 0) {
        if(!type || type == popularPests[i+4]) {
          popGrp.appendChild(new Option(!type ? popularPests[i+1] + ' ('+types[popularPests[i+4]-1]+')' : popularPests[i+1], popularPests[i]));
          popGrp.childNodes[popGrp.childNodes.length-1].innerText = (!type ? popularPests[i+1] + ' ('+types[popularPests[i+4]-1]+')' : popularPests[i+1]);
          popGrp.childNodes[popGrp.childNodes.length-1].title = (popularPests[i+2] ? ' ('+popularPests[i+2]+')' : '') +
                                                                (popularPests[i+3] ? ' {'+popularPests[i+3]+'}' : '') +
                                                                (popularPests[i+5] ? ' ['+popularPests[i+5]+']' : '');
        }
        i+=6;
      }
    }
  }
  i = 0;
  while(pests[i] != 0) {
    if(!type || type == pests[i+4]) {
      pest.appendChild(new Option(!type ? pests[i+1] + ' ('+types[pests[i+4]-1]+')' : pests[i+1], pests[i]));
      pest.childNodes[pest.childNodes.length-1].innerText = (!type ? pests[i+1] + ' ('+types[pests[i+4]-1]+')' : pests[i+1]);
      pest.childNodes[pest.childNodes.length-1].title = (pests[i+2] ? ' ('+pests[i+2]+')' : '') +
                                                  (pests[i+3] ? ' {'+pests[i+3]+'}' : '') +
                                                  (pests[i+5] ? ' ['+pests[i+5]+']' : '');
      if(selected == pests[i])
        pest.childNodes[pest.childNodes.length-1].selected = true;
    }
    i+=6;
  }
}

//wypełnianie roślin
function fillPlants() {
  var plantCategory = document.forms['formSearchPrep'].elements['plantCategory'];
  plantCategory.options[0].value = '';
  var plantSubCategory = document.forms['formSearchPrep'].elements['plantSubCategory'];
  var plantType = document.forms['formSearchPrep'].elements['plantType'];
  var plant = document.forms['formSearchPrep'].elements['plant'];
  var plantCategorySelected = plantCategory.options[plantCategory.selectedIndex].value;
  var plantSubCategorySelected = plantSubCategory.options[plantSubCategory.selectedIndex].value;
  var plantTypeSelected = plantType.options[plantType.selectedIndex].value;
  var plantSelected = plant.options[plant.selectedIndex].value;
  plantCategory.options.length = 1;
  plantSubCategory.options.length = 1;
  plantType.options.length = 1;
  plant.options.length = 1;
  var i = 0;
  while(plantCategories[i] != 0) {
    plantCategory.options[plantCategory.options.length] = new Option(plantCategories[i+1], plantCategories[i]);
    plantCategory.options[plantCategory.options.length-1].title = (plantCategories[i+2] ? ' {'+plantCategories[i+2]+'}' : '');
    if(plantCategorySelected == plantCategories[i])
      plantCategory.options[plantCategory.options.length-1].selected = true;
    i+=3;
  }
  i = 0;
  plantCategory = plantCategory.options[plantCategory.selectedIndex].value;
  plantSubCategoriesStr = '|';
  while(plantSubCategories[i] != 0) {
    if(!plantCategory || plantCategory == plantSubCategories[i+4]) {
      plantSubCategoriesStr += plantSubCategories[i] + '|';
      plantSubCategory.options[plantSubCategory.options.length] = new Option(!plantCategory ? plantSubCategories[i+1] + ' ('+plantCategories[1 + getListIndexById(plantCategories, 3, plantSubCategories[i+4])]+')' : plantSubCategories[i+1], plantSubCategories[i]);
      plantSubCategory.options[plantSubCategory.options.length-1].title = (plantSubCategories[i+2] ? ' {'+plantSubCategories[i+2]+'}' : '');
      if(plantSubCategorySelected == plantSubCategories[i])
        plantSubCategory.options[plantSubCategory.options.length-1].selected = true;
    }
    i+=5;
  }
  if(plantSubCategory.options.length == 2 && plantSubCategories[getListIndexById(plantSubCategories, 5, plantSubCategory.options[1].value) + 3] == 1)
    plantSubCategory.options[1].selected = true;
  i = 0;
  plantSubCategory = plantSubCategory.options[plantSubCategory.selectedIndex].value;
  plantTypesStr = '|';
  while(plantTypes[i] != 0) {
    if((plantSubCategory && plantSubCategory == plantTypes[i+4])
      || (!plantSubCategory && plantSubCategoriesStr.indexOf('|'+plantTypes[i+4]+'|') != -1)) {
      plantTypesStr += plantTypes[i] + '|';
      plantType.options[plantType.options.length] = new Option(!plantSubCategory ? plantTypes[i+1] + ' ('+plantSubCategories[1 + getListIndexById(plantSubCategories, 5, plantTypes[i+4])]+')' : plantTypes[i+1], plantTypes[i]);
      plantType.options[plantType.options.length-1].title = (plantTypes[i+2] ? ' {'+plantTypes[i+2]+'}' : '');
      if(plantTypeSelected == plantTypes[i])
        plantType.options[plantType.options.length-1].selected = true;
    }
    i+=5;
  }
  if(plantType.options.length == 2 && plantTypes[getListIndexById(plantTypes, 5, plantType.options[1].value) + 3] == 1)
    plantType.options[1].selected = true;
  i = 0;
  plantType = plantType.options[plantType.selectedIndex].value;
  while(plants[i] != 0) {
    if((plantType && plantType == plants[i+4])
      || (!plantType && plantTypesStr.indexOf('|'+plants[i+4]+'|') != -1)) {
      plant.options[plant.options.length] = new Option(!plantType ? plants[i+1] + ' ('+plantTypes[1 + getListIndexById(plantTypes, 5, plants[i+4])]+')' : plants[i+1], plants[i]);
      plant.options[plant.options.length-1].title = (plants[i+2] ? ' ('+plants[i+2]+')' : '') +
                                                    (plants[i+3] ? ' {'+plants[i+3]+'}' : '');
      if(plantSelected == plants[i])
        plant.options[plant.options.length-1].selected = true;
    }
    i+=5;
  }
  document.forms['formSearchPrep'].elements['plantCategory'].options[0].value = '-';
}

//wyciąganie listy o id
function getListIndexById(list, offset, id) {
  var i = 0;
  while(list[i] != 0 && id != list[i])
    i+=offset;
  return list[i] != 0 ? i : null;
}

//ustawianie listy o id
function setSelectWithId(select, id, form) {
  select = document.forms[form ? form : 'formSearchPrep'].elements[select];
  var i = 0;
  while(i < select.options.length) {
    if(id == select.options[i].value) {
      select.options[i].selected = true;
      i = select.options.length;
    }
    i++;
  }
}

//inicjalizacja vartości wyszukiwarki
function initSearchPreparationsValues() {
  var req = extractReqParams(window.location);
  try {
    if(req.searchTab)
      document.forms['formSearchPrep'].elements['searchTab'].value = req.searchTab;
  } catch(ex) {}
  try {
    if(req.searchSubTab)
      document.forms['formSearchPrep'].elements['searchSubTab'].value = req.searchSubTab;
  } catch(ex) {}
  try {
    if(req.pestType)
      setSelectWithId('pestType', req.pestType);
  } catch(ex) {}
  fillPests();
  try {
    if(req.pest)
      setSelectWithId('pest', req.pest);
  } catch(ex) {}
  fillPlants();
  try {
    if(req && req.plantCategory)
      setSelectWithId('plantCategory', req.plantCategory);
    else if(getCookie('plantCategory'))
      setSelectWithId('plantCategory', getCookie('plantCategory'));
  } catch(ex) {}
  try {
    if(req.plantSubCategory)
      setSelectWithId('plantSubCategory', req.plantSubCategory);
  } catch(ex) {}
  try {
    if(req.plantType)
      setSelectWithId('plantType', req.plantType);
  } catch(ex) {}
  fillPlants();
  try {
    if(req.plant)
      setSelectWithId('plant', req.plant);
  } catch(ex) {}
  try {
    if(req.fenologicalPhase)
      setSelectWithId('fenologicalPhase', req.fenologicalPhase);
  } catch(ex) {}
  try {
    if(req.plantWorkingMethod)
      setSelectWithId('plantWorkingMethod', req.plantWorkingMethod);
  } catch(ex) {}
  try {
    if(req.pestWorkingMethod)
      setSelectWithId('pestWorkingMethod', req.pestWorkingMethod);
  } catch(ex) {}
  try {
    if(req.fungiWorkingMethod)
      setSelectWithId('fungiWorkingMethod', req.fungiWorkingMethod);
  } catch(ex) {}
  try {
    if(req.tempMin)
      document.forms['formSearchPrep'].elements['tempMin'].value = req.tempMin;
  } catch(ex) {}
  try {
    if(req.tempMax)
      document.forms['formSearchPrep'].elements['tempMax'].value = req.tempMax;
  } catch(ex) {}
  try {
    if(req.keywords)
      document.forms['formSearchPrep'].elements['keywords'].value = req.keywords;
  } catch(ex) {}
  try {
    showSearchPanel(document.forms['formSearchPrep'].elements['searchTab'].value);
  } catch(ex) {}
  try {
    showSearchSubPanel(document.forms['formSearchPrep'].elements['searchSubTab'].value);
  } catch(ex) {}
}

//przedwyszukiwanie
function preSearch(o) {
  var f = document.forms['formSearchPrep'];
  f.elements['page'].value = 'szukaj_preparat_wstepnie';
  advAJAX.submit(f, {
    tag : o
    , parameters: {
      'presearch' : 1
    }
    , onSuccess: function(obj) {
        try {
          document.getElementById('searchPreviewPanel1').innerHTML = obj.responseText;
          obj.tag.focus();
        } catch(ex) {}
    }
    , onError: function(obj) { alert("Błąd: " + obj.status); obj.tag.focus(); }
  });
  f.elements['page'].value = 'szukaj_preparat';
}

//pokazywanie panelu
function showSearchPanel(n) {
  o = document.getElementById('modeTab' + n);
  var f = document.forms['formSearchPrep'];
  var pcn = o.parentNode.childNodes;
  for(var i = 0; i < pcn.length; i++)
    if(pcn[i].className && pcn[i].className.indexOf('link') == 0 && pcn[i].className.indexOf(' tabOn') != -1)
      pcn[i].className = pcn[i].className.replace(' tabOn', '');
  o.className += ' tabOn';
  var v;
  if(n == 1) {
    document.getElementById('textPest1').className = '';
    document.getElementById('textPest2').className = 'safeHidden';
    v = getFromMemory('pestType');
    if(v != -1) {
      f.elements['pestType'].selectedIndex = v;
      fillPests();
    }
    v = getFromMemory('fenologicalPhase');
    if(v != -1)
      f.elements['fenologicalPhase'].selectedIndex = v;
    v = getFromMemory('plantWorkingMethod');
    if(v != -1)
      f.elements['plantWorkingMethod'].selectedIndex = v;
    v = getFromMemory('pestWorkingMethod');
    if(v != -1)
      f.elements['pestWorkingMethod'].selectedIndex = v;
    v = getFromMemory('fungiWorkingMethod');
    if(v != -1)
      f.elements['fungiWorkingMethod'].selectedIndex = v;
    document.getElementById('typePest').className = '';
    document.getElementById('pestSegment').className = 'searchSegment pests';
    document.getElementById('fenologicalPhasesSegment').className = 'searchSegment fenologicalPhases';
    document.getElementById('workingMethodsSegment').className = 'searchSegment workingMethods';
  } else if(n == 2) {
    document.getElementById('textPest1').className = 'safeHidden';
    document.getElementById('textPest2').className = '';
    document.getElementById('typePest').className = 'safeHidden';
    putToMemory('pestType', f.elements['pestType'].selectedIndex);
    f.elements['pestType'].selectedIndex = 2;
    fillPests();
    document.getElementById('pestSegment').className = 'searchSegment pests';
    if(getFromMemory('fenologicalPhase', true) == -1)
      putToMemory('fenologicalPhase', f.elements['fenologicalPhase'].selectedIndex);
    document.getElementById('fenologicalPhasesSegment').className = 'safeHidden';
    if(getFromMemory('plantWorkingMethod', true) == -1)
      putToMemory('plantWorkingMethod', f.elements['plantWorkingMethod'].selectedIndex);
    if(getFromMemory('pestWorkingMethod', true) == -1)
      putToMemory('pestWorkingMethod', f.elements['pestWorkingMethod'].selectedIndex);
    if(getFromMemory('fungiWorkingMethod', true) == -1)
      putToMemory('fungiWorkingMethod', f.elements['fungiWorkingMethod'].selectedIndex);
    f.elements['fenologicalPhase'].selectedIndex = 0;
    f.elements['plantWorkingMethod'].selectedIndex = 0;
    f.elements['pestWorkingMethod'].selectedIndex = 0;
    f.elements['fungiWorkingMethod'].selectedIndex = 0;
    document.getElementById('workingMethodsSegment').className = 'safeHidden';
  } else if(n == 3) {
    f.elements['pestType'].selectedIndex = 0;
    fillPests();
    f.elements['pest'].selectedIndex = 0;
    document.getElementById('pestSegment').className = 'safeHidden';
    if(getFromMemory('fenologicalPhase', true) == -1)
      putToMemory('fenologicalPhase', f.elements['fenologicalPhase'].selectedIndex);
    document.getElementById('fenologicalPhasesSegment').className = 'safeHidden';
    if(getFromMemory('plantWorkingMethod', true) == -1)
      putToMemory('plantWorkingMethod', f.elements['plantWorkingMethod'].selectedIndex);
    if(getFromMemory('pestWorkingMethod', true) == -1)
      putToMemory('pestWorkingMethod', f.elements['pestWorkingMethod'].selectedIndex);
    if(getFromMemory('fungiWorkingMethod', true) == -1)
      putToMemory('fungiWorkingMethod', f.elements['fungiWorkingMethod'].selectedIndex);
    f.elements['fenologicalPhase'].selectedIndex = 0;
    f.elements['plantWorkingMethod'].selectedIndex = 0;
    f.elements['pestWorkingMethod'].selectedIndex = 0;
    f.elements['fungiWorkingMethod'].selectedIndex = 0;
    document.getElementById('workingMethodsSegment').className = 'safeHidden';
  }
  f.elements['searchTab'].value = n;
}

//pokazywanie subpanelu
function showSearchSubPanel(n) {
  o = document.getElementById('tab' + n);
  var f = document.forms['formSearchPrep'];
  var pcn = o.parentNode.childNodes;
  var vp = 1;
  var i = 1;
  while(document.getElementById('searchPanel' + i)) {
    if(document.getElementById('searchPanel' + i).className.indexOf('safeHidden') == -1)
      vp = i;
    i++;
  }
  for(var i = 0; i < pcn.length; i++)
    if(pcn[i].className && pcn[i].className.indexOf('tab') == 0 && pcn[i].className.indexOf(' tabOn') != -1)
      pcn[i].className = pcn[i].className.replace(' tabOn', '');
  o.className += ' tabOn';
  for(var i = 1; i <=3; i++)
    try {
      document.getElementById('searchSubPanel'+vp+i).className = (i == n ? 'subPanel' : 'undisplayed');
    } catch(ex) {}
  f.elements['searchSubTab'].value = n;
}

//inicjalizacja vartości panelu filtrowania środków
function initFilterPreparationsValues() {
  var req = extractReqParams(window.location);
  try {
    if(req.groupId)
      setSelectWithId('groupId', req.groupId, 'formFilterPrep');
  } catch(ex) {}
  try {
    if(req.showDetails)
      document.forms['formFilterPrep'].elements['showDetails'].checked = 'checked';
      toggleShowDetails(document.forms['formFilterPrep'].elements['showDetails']);
  } catch(ex) {}
}

//zmiana trybu listy preparatów do filtrowania
function toggleShowDetails(o) {
  o.form.elements['page'].value = (o.checked ? 'katalog_preparatow_szczegolowy' : 'katalog_preparatow');
}

//inicjalizacja vartości panelu filtrowania agrofagów
function initFilterPestsValues() {
  var req = extractReqParams(window.location);
  try {
    if(req.type)
      setSelectWithId('type', req.type, 'formFilterPests');
  } catch(ex) {}
}

