// JavaScript Document

function makeOption(value,string) {
   var op=document.createElement("option");
   op.setAttribute("value",value);
   op.text=string;
   return op;
}

var optArr;
var sMesto;
var sKategorie
var sCil;

var zalohaOptions=new Array();

             //(radky - mesta | sloupce - kategorie)
function MultiDimensionalArray(iRows,iCols)
{
var i;
var j;

   var a = new Array(iRows+1);
   for (i=0; i < iRows+1; i++)
   {
       a[i] = new Array(iCols+1);
       for(j=0;j<iCols+1;j++) {
          a[i][j]=new Array();
       }
   }
   return(a);
}

//vytvori pole poli poli
function setArray(r,c) {
   optArr=MultiDimensionalArray(r,c);
}

//
function pushIds(mesto,kategorie,ids) {
   optArr[mesto][kategorie]=ids;
}




//postup : vytvori pole
//         naplni volanim fce pushIds()
//         nastav zdroje a cil setSelects()
//         zalohuj options

//nastavi zdroje a cil (selecty)
function setSelects(idMesta,idKategorie,idCil) {

   sMesto=document.getElementById(idMesta);
   sKategorie=document.getElementById(idKategorie);
   sCil=document.getElementById(idCil);
}

//vytvori kopii kolekce options
function zalohujOptions() {
   for(i=1;i<sCil.options.length;i++) {

      zalohaOptions[sCil.options[i].value]=makeOption(sCil.options[i].value,sCil.options[i].text);
   }

}

//vymaze options ciloveho selectu
function vycistiCil() {
         for(var i=sCil.options.length;i>0;i--) {
           sCil.options.remove(i);
         };
}

function vsechnyVeMeste(idMesta) {

   for(i=0;i<optArr[idMesta].length;i++) {

      //alert(i+" - "+optArr[idMesta][i]);
      for(j=0;j<optArr[idMesta][i].length;j++) {

         if(typeof(zalohaOptions[optArr[idMesta][i][j]])=="object") {
            sCil.options.add(zalohaOptions[optArr[idMesta][i][j]]);
         }
      };
   }
}

function vsechnyTypu(typ) {

    for(i=0;i<optArr.length;i++) {

      for(j=0;j<optArr[i][typ].length;j++) {

         if(typeof(zalohaOptions[optArr[i][typ][j]])=="object") {
           sCil.options.add(zalohaOptions[optArr[i][typ][j]]);
         };
      };
   }
}

function jeVacsi(v1, v2) {
  var abeceda=" 0123456789aáäbcèdïeéìfghiíjklå¾mnòoóôöpqràøsštuúùüvwxyýzž";
  if (v1=="Zvolte zaøízení") return -1;
  if (v2=="Zvolte zaøízení") return 1;
  l = v1.length;
  if (l > v2.length) l = v2.length;
  for (i=0;i<l;i++) {
    p1 = abeceda.search(v1.substr(i,1));
    p2 = abeceda.search(v2.substr(i,1));
    if (p1 > p2) return 1;
    if (p1 < p2) return -1;
  }
  return 0;
}




        // sort function - ascending (case-insensitive)
        function sortFuncAsc(record1, record2) {
            var value1 = record1.optText.toLowerCase();
            var value2 = record2.optText.toLowerCase();
            return jeVacsi(value1,value2);
            // if (value1 > value2) return(1);
            // if (value1 < value2) return(-1);
            //return(0);
        }

        // sort function - descending (case-insensitive)
        function sortFuncDesc(record1, record2) {
            var value1 = record1.optText.toLowerCase();
            var value2 = record2.optText.toLowerCase();
            if (value1 > value2) return(-1);
            if (value1 < value2) return(1);
            return(0);
        }

        function sortSelect(selectToSort, ascendingOrder) {
            if (arguments.length == 1) ascendingOrder = true;    // default to ascending sort

            // copy options into an array
            var myOptions = [];
            for (var loop=0; loop<selectToSort.options.length; loop++) {
                myOptions[loop] = { optText:selectToSort.options[loop].text, optValue:selectToSort.options[loop].value };
            }

            // sort array
            if (ascendingOrder) {
                myOptions.sort(sortFuncAsc);
            } else {
                myOptions.sort(sortFuncDesc);
            }

            // copy sorted options from array back to select box
            selectToSort.options.length = 0;
            for (var loop=0; loop<myOptions.length; loop++) {
                var optObj = document.createElement('option');
                optObj.text = myOptions[loop].optText;
                optObj.value = myOptions[loop].optValue;
                selectToSort.options.add(optObj);
            }
        }




function zobrazOptions() {
  vycistiCil();

  var m=sMesto.options[sMesto.selectedIndex].value;
  var s=sKategorie.options[sKategorie.selectedIndex].value;

 // alert(s+"/"+m);

  if(s==0) {
     vsechnyVeMeste(m);
     sortSelect(sCil, true)
     return;
  };
  if(m==0) {
     vsechnyTypu(s);
     sortSelect(sCil, true)
     return;
  };

  for(i=0;i<optArr[m][s].length;i++) {
     if(typeof(zalohaOptions[optArr[m][s][i]])=="object") {
        sCil.options.add(zalohaOptions[optArr[m][s][i]]);
     }
  }
  sortSelect(sCil, true)
}



setArray(15,15);


//window.status="loaded";
