function Fotogalerie(server, tabulka, id, vybrany_dokument)
{
  var okno;
  var vyska, sirka;
  var url, nazev, vlastnosti;

  sirka = 800;
  vyska = 598;

  url        = "/cs/fotogalerie.html?popup=true&server="+server+"&tabulka="+tabulka+"&id="+id+"&vybrany_dokument="+vybrany_dokument;
  nazev      = "Fotogalerie_"+id;
  vlastnosti = "width="+sirka+", height="+vyska+", resizable=yes, scrollbars=yes";

  okno = window.open(url, nazev, vlastnosti);

  okno.moveTo(screen.width / 2 - sirka / 2, screen.height / 2 - vyska / 2);  

  return true;
}


function ExternalLink(URL)
{
  var okno;

  /*
  var vlastnosti;
  var vyska, sirka;

  vyska = Math.round(screen.height * 0.6);
  sirka = Math.round(screen.width * 0.6); 
    
  vlastnosti = "width="+sirka+", height="+vyska+", resizable=yes, scrollbars=yes, toolbar=yes, menubar=yes, adressbar=yes, status=yes, location=yes, directories=yes";
  */
  if (okno = window.open(URL, "_blank"))
    return true;
  else
    return false;
}

function NastavMoznosti(formular, produkt, vlastnost, hodnota) {
    var vybrane = new Array();
    var mozne = new Array();
    var pocet_moznych;
        
    FotoOpacity(produkt, null);
    for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {
        vybrane[variantni_vlastnosti[produkt][i]] = null;
        mozne[variantni_vlastnosti[produkt][i]] = new Array();

        if (formular['vlastnost_'+variantni_vlastnosti[produkt][i]].value != '') {
            vybrane[variantni_vlastnosti[produkt][i]] = formular['vlastnost_'+variantni_vlastnosti[produkt][i]].value;
            if (variantni_vlastnosti[produkt][i] == vlastnost_zobrazovat_samostatne) {
                FotoOpacity(produkt, vybrane[variantni_vlastnosti[produkt][i]]);
            }
        }
    }
   
    for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {    
        pocet_moznych = 0;
        for (var j = 0; j < varianty_vlastnosti[produkt][variantni_vlastnosti[produkt][i]].length; j++) {
           var mozny = false;

           for (var k = 0; k < varianty[produkt].length; k++) {
                var pokracovat = true; 
                
                for (var l = 0; l < variantni_vlastnosti[produkt].length; l++) {
                    if ((vybrane[variantni_vlastnosti[produkt][l]] != null) && (varianty[produkt][k][variantni_vlastnosti[produkt][l]] != vybrane[variantni_vlastnosti[produkt][l]])) {
                        pokracovat = false;
                        break;
                    }
                }
                
                if (pokracovat && (varianty_vlastnosti[produkt][variantni_vlastnosti[produkt][i]][j] == varianty[produkt][k][variantni_vlastnosti[produkt][i]])) {
                    mozny = true;
                    break;
                }
           }
           
           if (mozny) {
                mozne[variantni_vlastnosti[produkt][i]][pocet_moznych++] = varianty_vlastnosti[produkt][variantni_vlastnosti[produkt][i]][j];
           } 
        }
    } 
    
    for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {    
        var select = document.getElementById("select_"+produkt+"_"+variantni_vlastnosti[produkt][i]);
        select.options.length = 0;
        select.options[0] = new Option("zvolte prosím", "");
        var selected = false;
        for (var j = 0; j < mozne[variantni_vlastnosti[produkt][i]].length; j++) {
            select.options[j+1] = new Option(base64decoded[mozne[variantni_vlastnosti[produkt][i]][j]],mozne[variantni_vlastnosti[produkt][i]][j]);
            if (vybrane[variantni_vlastnosti[produkt][i]] == mozne[variantni_vlastnosti[produkt][i]][j]) {
                select.options[j+1].selected = true;
                selected = true;
            }
        }
        if (selected) {
            select.options[0].text = "změnit";
        }
      }
    
    var nastavit_cenu = true;
    for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {
        if (vybrane[variantni_vlastnosti[produkt][i]] == null) {
            nastavit_cenu = false;
        }
    }
    if (nastavit_cenu) {
        for (var k = 0; k < varianty[produkt].length; k++) {
            var pokracovat = true; 
                
            for (var l = 0; l < variantni_vlastnosti[produkt].length; l++) {
                if ((vybrane[variantni_vlastnosti[produkt][l]] == null) || (varianty[produkt][k][variantni_vlastnosti[produkt][l]] != vybrane[variantni_vlastnosti[produkt][l]])) {
                    pokracovat = false;
                    break;
                }
            }
                
            if (pokracovat) {
                document.getElementById("cena_"+produkt).innerHTML = varianty[produkt][k][0].toFixed(2).replace(".", ",");
                document.getElementById("cena_dph_"+produkt).innerHTML = (varianty[produkt][k][0] * sazba_dph).toFixed(2).replace(".", ",");
                break;
            }
        }
    }
    else {
        document.getElementById("cena_"+produkt).innerHTML = vychozi_ceny[produkt];
        document.getElementById("cena_dph_"+produkt).innerHTML = vychozi_ceny_dph[produkt];
    }
}


function FotoOpacity(produkt, hodnota) {
  for (var j = 0; j < foto[produkt].length; j++) {
      try {
        var f = document.getElementById("foto_produkt_"+j);
        if ((foto[produkt][j] == hodnota) || (hodnota == null)) {
          f.style.opacity = 1;
          f.style.filter = "alpha(opacity=100);";
        }
        else {
          f.style.opacity = 0.2;         
          f.style.filter = "alpha(opacity=20);";
        }
      }
      catch (e) {
      }
  }
}

function VlozDoKosiku(produkt, formular, cena, spinner_id)
{
  var vybrano_vse = false;
  
  var vybrane = new Array();
  for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {
        vybrane[variantni_vlastnosti[produkt][i]] = null;
        
        if (formular['vlastnost_'+variantni_vlastnosti[produkt][i]].value != '') {
            vybrane[variantni_vlastnosti[produkt][i]] = formular['vlastnost_'+variantni_vlastnosti[produkt][i]].value;
        }
  }
    
  var varianta = "";
  for (var k = 0; k < varianty[produkt].length; k++) {
       var pokracovat = true; 
           
       for (var l = 0; l < variantni_vlastnosti[produkt].length; l++) {
           if ((vybrane[variantni_vlastnosti[produkt][l]] == null) || (varianty[produkt][k][variantni_vlastnosti[produkt][l]] != vybrane[variantni_vlastnosti[produkt][l]])) {
               pokracovat = false;
               break;
           }
       }
           
       if (pokracovat) {
           cena = varianty[produkt][k][0];
           varianta = varianty[produkt][k][-1];
           vybrano_vse = true;
           break;
       }
   }
   
   if (!vybrano_vse && (varianty[produkt].length == 0)) {
     vybrano_vse = true;
   }   
     
  
  if (!vybrano_vse) {
    alert("Zvolte prosím variantu produktu.");
    return true;
  }  

  mnozstvi = formular.mnozstvi.value;
  mnozstvi = mnozstvi.replace(",", ".") *1;
  var url = "?akce=vlozdokosiku&produkt="+produkt+"&mnozstvi="+mnozstvi;
  for (var i = 0; i < variantni_vlastnosti[produkt].length; i++) {        
        url += "&vlastnost_"+variantni_vlastnosti[produkt][i] + "=" + urlencode(vybrane[variantni_vlastnosti[produkt][i]]);
  }

  if (window.ActiveXObject) {
    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else{
    httpRequest = new XMLHttpRequest();
  }
  httpRequest.open("GET", url, true);
  httpRequest.onreadystatechange = function () { ZpracujVlozeniDoKosiku(produkt, varianta, mnozstvi, cena, spinner_id); } ;
  httpRequest.send(null);
  
  jQuery('#spinner_' + spinner_id).html('<img class="spinner" src="/images/loading.gif" alt="Vyčkejte prosím..." />');
    
  return true;
}

function ZpracujVlozeniDoKosiku(produkt, varianta, mnozstvi, cena, spinner_id)
{
  if (httpRequest.readyState == 4)
  {
    jQuery('#spinner_' + spinner_id).html('');
    if (httpRequest.status == 200) {  
      kosik_celkova_cena += mnozstvi * cena;
      var zapsat = true;
      for (var i = 0; i < kosik_polozky_v_kosiku.length; i++) {
        if (kosik_polozky_v_kosiku[i] == produkt+"_"+varianta) {
          zapsat = false;
          break;
        }
      }
      if (zapsat)
        kosik_polozky_v_kosiku[kosik_polozky_v_kosiku.length] = produkt+"_"+varianta;

      var text = "Váš košík: ";
      
      if (kosik_polozky_v_kosiku.length > 0) {
        text += "" + kosik_polozky_v_kosiku.length + " polož";
        switch (kosik_polozky_v_kosiku.length) {
          case 1:
            text += "ka";
            break;
          case 2:
          case 3:
          case 4:
            text += "ky";
            break;
          default:
            text += "ek";
            break;
        }
        text += " za "
      }   
      else {
        text += "0 položek za ";
      }

      document.getElementById("kosik_polozek_v_kosiku").innerHTML = text;
      document.getElementById("kosik_celkova_cena").innerHTML = kosik_celkova_cena.toFixed(2).replace(".", ",");
      alert("Vybraný produkt byl vložen do košíku.");
    }
  }
}

function urlencode(str) {
  str = escape(str);
  str = str.replace(/\+/g, '%2B');
  str = str.replace(/%20/g, '+');
  str = str.replace(/\*/g, '%2A');
  str = str.replace(/\//g, '%2F');
  str = str.replace(/@/g, '%40');

  return str;
}

function urldecode(str) {
  str = str.replace(/\+/g, ' ');
  str = unescape(str);
  return str;
}


/** 
* Formats the number according to the 'format' string; 
* adherses to the american number standard where a comma 
* is inserted after every 3 digits. 
*  note: there should be only 1 contiguous number in the format, 
* where a number consists of digits, period, and commas 
*        any other characters can be wrapped around this number, including '$', '%', or text 
*        examples (123456.789): 
*          '0' - (123456) show only digits, no precision 
*          '0.00' - (123456.78) show only digits, 2 precision 
*          '0.0000' - (123456.7890) show only digits, 4 precision 
*          '0,000' - (123,456) show comma and digits, no precision 
*          '0,000.00' - (123,456.78) show comma and digits, 2 precision 
*          '0,0.00' - (123,456.78) shortcut method, show comma and digits, 2 precision 
* 
* @method format 
* @param format {string} the way you would like to format this text 
* @return {string} the formatted number 
* @public 
*/  
  
Number.prototype.format = function(format) { 
  //if (! isType(format, 'string')) {return "";} // sanity check 
  
  var hasComma = -1 < format.indexOf(','), 
    psplit = format.split('.'), 
    that = this; 
  
  // compute precision 
  if (1 < psplit.length) { 
    // fix number precision 
    that = that.toFixed(psplit[1].length); 
  } 
  // error: too many periods 
  else if (2 < psplit.length) { 
    throw('NumberFormatException: invalid format, formats should have no more than 1 period: ' + format); 
  } 
  // remove precision 
  else { 
    that = that.toFixed(0); 
  }  
  
  // get the string now that precision is correct 
  var fnum = that.toString(); 
  
  // format has comma, then compute commas 
  if (hasComma) { 
    // remove precision for computation 
    psplit = fnum.split('.'); 
  
    var cnum = psplit[0], 
      parr = [], 
      j = cnum.length, 
      m = Math.floor(j / 3), 
      n = cnum.length % 3 || 3; // n cannot be ZERO or causes infinite loop 
  
    // break the number into chunks of 3 digits; first chunk may be less than 3 
    for (var i = 0; i < j; i += n) { 
      if (i != 0) {n = 3;} 
      parr[parr.length] = cnum.substr(i, n); 
      m -= 1; 
    } 
  
    // put chunks back together, separated by comma 
    fnum = parr.join(','); 
  
    // add the precision back in 
    if (psplit[1]) {fnum += '.' + psplit[1];} 
  }  
  
  return format.replace(/[\d,?\.?]+/, fnum).replace(/,/, ' '); 
};
