$(document).ready(function(){

  controls_set_functionality();

  /*
  není potřeba
  !!pokud bude potřeba pozor na duplicitní aplikování funkcí
  doporučuje se použít raději volání funkce controls_set_functionality() přímo v rámci konkrétního ajaxového volání
  $.ajaxSetup({
    complete: function(XMLHttpRequest, textStatus) {
      controls_set_functionality(); // the options for this ajax request
    }
  });
  */


  /**
   * odkazy do nového okna
   */
  $("a.t_out").live("click", function(){
    open($(this).attr("href"));
    return false;
  });
  

  /**
   * rozbalovací texty po kliknutí na odkaz
   */
  $('a.showbox').live("click", function(){
    $($(this).attr('href') + ' p:first-child').css('margin-top','0px');
    $($(this).attr('href')).toggle(100);
    return false;
  });
  

  /**
   * ----------------- FORMULARE obecne ------------------------------
   */
  $("input.numbersonly").live("keypress", function(e){
    return numbersonly(e, false);
  });

  $("input.numbersonly_dec").live("keypress", function(e){
    return numbersonly(e, true);
  });

  $("input.psconly").live("keypress", function(e){
    return psconly(e);
  });

  $("input.static").live("keypress", function(e){
     return false;
  });
  /**
   * ----------------- FORMULARE obecne KONEC------------------------------
   */
   

  /**
   * -------------------------------- MENU ----------------------------------------------
   */
  $("#menu_main > li > a").mouseover(function() {
    var item_id = $(this).attr("id");
    menu_reset_timeout(); /*ošetřuje speciální případ, kdy se z rozbaleného menu vrací zpět na tlačítko na liště*/
    skryj_menu("submenu_" + item_id);
    var position = $(this).position();
    var menu = $("ul#submenu_" + item_id);
    if ( menu.length ) {
      menu.css("left",position.left+"px");
      if ( $.browser.msie && parseInt($.browser.version) <= 6 ) {
        menu.css('display','block');
      }
      else {
        menu.slideDown("fast");
      }
    }
  });
  $("#menu_main > li > a").mouseout(function() {
    menu_skryt_timeout();
  });
  $("ul.submenu").mouseover(function() {
    $(this).prev().addClass('active');
    menu_reset_timeout();
  });
  $("ul.submenu").mouseout(function() {
    menu_skryt_timeout();
  });
  /**
   * -------------------------------- MENU konec ----------------------------------------------
   */
   

  /**
   * vložení flashe s proměnlivou velikostí do záhlaví stránky
   */
  var flashvars = {};
  var flashparams = {
    quality: "high",
    bgcolor: "transparent",
    allowScriptAccess: "sameDomain",
    allowFullScreen: "false",
    wmode: "transparent"
  };
  var flashattributes = {
    id: "flash_historie",
    name: "flash_historie"
  };
  
  if ( typeof is_homepage == "undefined"  )
     swfobject.embedSWF("./flash/flash_historie.swf"         , "flash_historie", "965", "250", "9.0.0", "", flashvars, flashparams, flashattributes);
  else
     {
     var flashvars = {
      closer: "0"
     };
     swfobject.embedSWF("./flash/flash_historie.swf?closer=0", "flash_historie", "965", "250", "9.0.0", "", flashvars, flashparams, flashattributes);
     }


  /**
   * vložení flashe v záhlaví stránky
   */
  var flashvars = {};
  var flashparams = {
    quality: "high",
    bgcolor: "transparent",
    allowScriptAccess: "sameDomain",
    allowFullScreen: "false",
    wmode: "transparent"
  };
  var flashattributes = {
    id: "flash_rozjedte",
    name: "flash_rozjedte"
  };

  swfobject.embedSWF("./flash/flash_rozjedte.swf", "flash_rozjedte", "600", "92", "9.0.0", "", flashvars, flashparams, flashattributes);


  /**
   * vložení flashe v pravém menu na titulce stránky
   */
  if ( $('#pokrok_nezastavis') ) {
    var flashvars = {};
    var flashparams = {
      quality: "high",
      bgcolor: "transparent",
      allowScriptAccess: "sameDomain",
      allowFullScreen: "false",
      wmode: "transparent"
    };
    var flashattributes = {
      id: "pokrok_nezastavis",
      name: "pokrok_nezastavis"
    };

    swfobject.embedSWF("./flash/pokrok_nezastavis.swf", "pokrok_nezastavis", "357", "140", "9.0.0", "", flashvars, flashparams, flashattributes);
  }

  
  /**
   * nastavení výšky prvků s nápisem "Slavíme 100 let" na levé a pravé straně stránky podle výšky stránky
   * Nastavení je nutné proto, aby prvek mohl "jezdit" podél stránky nahoru a dolů
   */
  var slavime_left_pos = $("#slavime_left").position();
  var slavime_right_pos = $("#slavime_left").position();
  var footer_pos = $("#footer").position();
  var footer_height = $("#footer").outerHeight();
  if ( slavime_left_pos && slavime_right_pos ) {
    var slavime_left_height = parseInt(footer_pos.top + footer_height - slavime_left_pos.top);
    var slavime_right_height = parseInt(footer_pos.top + footer_height - slavime_right_pos.top);
    $("#slavime_left").height(slavime_left_height + 'px');
    $("#slavime_right").height(slavime_right_height + 'px');
  }


  /**
   * ----------- NAŠEPTÁVAČ PRO VÝBĚR ZASTÁVKY --------------
   */
   
  /**
   * zvýraznění položky našeptávače po najetí myší
   */
  $('div.naseptavac ul li').live("mouseover",function(){
    naseptavac_select_item($(this));
  });
  $('div.naseptavac ul li').live("mouseout",function(){
    $(this).removeClass('hl');
  });
  
  /**
   * kliknutí na prvek našeptávače - výběr z nabízených hodnot
   */
  $('div.naseptavac ul li').live("click",function(){
    var text = $(this).html();
    var zastavka_id = $(this).attr('zastavka_id');
    var parent_naseptavac_obj = $(this).parents("div[id^='naseptavac_']");
    var target_obj = $('#' + parent_naseptavac_obj.attr('id').substring('naseptavac_'.length));
    target_obj.val(text);
    target_obj.focus();

    /**
     * uložení ID zastávky do příslušného formulářového pole
     */
    var zastavka_id_input_obj = target_obj.nextAll('input[name="s' + target_obj.attr('name') + '"]:hidden');
    if ( zastavka_id_input_obj.length ) {
      zastavka_id_input_obj.val(zastavka_id);
    }
    
    parent_naseptavac_obj.hide();
  });

  /**
   * pokud je kurzor myši umístěn nad rozbaleným našeptávačem, nastaví se našeptávači parametr "mouseover"
   * využití níže při události opuštění (blur) formulářového prvku
   */
  $('div.naseptavac').live("mouseover",function(){
    $(this).attr('mouseover','1');
  });
  $('div.naseptavac').live("mouseout",function(){
    $(this).removeAttr('mouseover');
  });

  /**
   * vypnutí našeptávače realizovaného prohlížečem
   **/
  $("input.naseptavac").attr('autocomplete', 'off');
  
  /**
   * při opuštění prvku, pro který je našeptávač zobrazen se testuje, zda je kurzor myši nad našeptávačem
   * pokud ano, pak se našeptávač neskrývá
   * ošetřuje případ stisknutí klávesy TAB při zobrazeném našeptávači (v takovém případě chceme, aby focus získal první prvek v našeptávači a proto se nesmí našeptávač skrýt)
   * !!událost blur nelze nastavit v současné verzi jQuery (1.3.2) pomocí "live"
   */
  $("input.naseptavac").blur(function(){
    var item_id = $(this).attr('id');

    var naseptavac_id = 'naseptavac_' + item_id;
    var naseptavac_obj = $('#' + naseptavac_id + ':visible');
    if ( naseptavac_obj.length && !naseptavac_obj.attr('mouseover') ) {
      naseptavac_obj.hide();
    }
  });

  /**
   * při stisku klávesy kontrolní klávesy (TAB, ENTER, šipky) ve formulářovém poli dochází k pohybu po našeptávači (TAB, šipky) nebo výběru položky (ENTER)
   */
  $("input.naseptavac").live("keydown", function(e){
    var item_id = $(this).attr('id');

    var naseptavac_id = 'naseptavac_' + item_id;
    var naseptavac_obj = $('#' + naseptavac_id + ':visible');

    /**
     * pokud prvek našeptávače existuje
     */
    if ( naseptavac_obj.length ) {

      /**
       * zjištění aktuálně zvýrazněné položky
       */
      var selected_obj = '';
      $('ul > li',naseptavac_obj).each(function(){
        if ( $(this).hasClass('hl') ) {
          selected_obj = $(this);
        }
      });
    
      /**
       * pohyb po našeptávači - stisknuto TAB or UP ARROW or DOWN ARROW
       */
      if ( e.which == 9 || e.which == 38 || e.which == 40 ) {

        if ( !selected_obj.length ) {
          $('ul > li:first',naseptavac_obj).addClass('hl');
        }
        else {
          var prev_next_obj = '';
          if ( e.which == 38 ) { //up arrow
            prev_next_obj = selected_obj.prev();
          }
          else if ( e.which == 9 || e.which == 40 ) { //tab or down arrow
            prev_next_obj = selected_obj.next();
          }
          if ( prev_next_obj.length ) {
            naseptavac_select_item(prev_next_obj);
            naseptavac_scroll(naseptavac_obj,prev_next_obj);
          }
        }

        /**
         * pokud byl stiknut tabelátor je třeba vrátit false, aby nedošlo k opuštění formulářového pole
         */
        if ( e.which == 9 ) { return false; }
      }
      
      /**
       * výběr prvku našeptávače - stisknut ENTER
       */
      else if ( e.which == 13 ) {
        if ( selected_obj.length ) {
          $(this).val(selected_obj.html());

          /**
           * uložení ID zastávky do příslušného formulářového pole
           */
          var zastavka_id_input_obj = $(this).nextAll('input[name="s' + $(this).attr('name') + '"]:hidden');
          if ( zastavka_id_input_obj.length ) {
            zastavka_id_input_obj.val(selected_obj.attr('zastavka_id'));
          }
        }
        naseptavac_obj.hide();
        /**
         * vrací se false, aby nedošlo k odeslání formuláře
         */
        return false;
      }
    }

  });
  
  /**
   * po stisku klávesy s "viditelným" znakem ve formulářovém poli se aktualizuje obsah našeptávače
   */
  $("input.naseptavac").live("keyup", function(e){
    var item_id = $(this).attr('id');
    var item_name = $(this).attr('name');
    var text = $(this).val();
    var width = $(this).width();
    var height = $(this).outerHeight();
    var position = $(this).position();

    /**
     * hidden prvek pro uložení ID zastávky
     * hidden prvek má stejné jméno jako formulářový prvek s prefixem "s" (tento prefix je použitý z historických důvodů - je již implementovaná funkčnost zpracovávající prvky "sod", "sdo", "pres")
     */
    var zastavka_id_input_obj = $(this).nextAll('input[name="s' + item_name + '"]:hidden');

    /**
     * prvek našeptávače
     */
    var naseptavac_id = 'naseptavac_' + item_id;
    var naseptavac_obj = $('#' + naseptavac_id);

    /**
     * stisknuta klávesa s "viditelným" znakem nebo znakem, který mění text (backspace, delete)
     */
    if ( e.which == 8 || e.which >= 46 ) {
    
      /**
       * vytvoření hidden prvku pro uložení ID zastávky
       */
      if ( !zastavka_id_input_obj.length ) {
        zastavka_id_input_obj = $('<input id="id_s' + item_name + '" name="s' + item_name + '" type="hidden" value="" />');
        $(this).after(zastavka_id_input_obj);
      }
    
      /**
       * pokud prvek našeptávače dosud nebyl vytvořen, tak se vytvoří
       */
      if ( !naseptavac_obj.length ) {
        naseptavac_obj = $('<div id="' + naseptavac_id + '" class="naseptavac"></div>');
        naseptavac_obj.css('left',position.left + 'px');
        naseptavac_obj.css('top',(position.top + height) + 'px');
        naseptavac_obj.css('width',width + 'px');
        $(this).after(naseptavac_obj);
      }
      /**
       * jestliže došlo ke změně textu ve formulářovém poli, načtou se nové hodnoty pro našeptávač
       */
      if ( text != $(this).attr('old_val') ) {

        /**
         * vymazání případné dříve uložené hodnoty id zastávky
         */
        zastavka_id_input_obj.val('');

        /**
         * nastavení, kde se má hledat - zastávky, ulice, instituce
         */
        var typ = [];
        $("input[name^='" + item_id + "']:checked").each(function(){
          typ.push($(this).val());
        });
        /**
         * pokud není nic vybráno, nastavuje se hledání v zastávkách
         */
        if ( !typ.length ) { typ.push('zastavka'); }

        $.getJSON(
          "ajax/naseptavac_zastavky.php",
          { zastavka: text, 'typ[]': typ },
          function(data) {
            naseptavac_obj.html('');
            if ( !data.error && data.zastavky.length ) {
              naseptavac_obj.show();
              var html = '<ul>';
              for ( var i=0; i<data.zastavky.length; i++ ) {
                html+= '<li zastavka_id="' + data.zastavky[i].id + '">' + data.zastavky[i].nazev + '</li>';
              }
              html+= '</ul>';
              naseptavac_obj.append(html);
            }
            else {
              naseptavac_obj.hide();
            }
          }
        );
      }

      $(this).attr('old_val',text);
    }

  });
  /**
   * ----------- KONEC NAŠEPTÁVAČ PRO VÝBĚR ZASTÁVKY --------------
   */


  /**
   * odeslání ajaxového formuláře
   */
  $("form.ajax_form").submit(function(){
    var form_obj = this;
    $(this).append('<input type="hidden" name="ajax" value="ajax" />');
    $(this).ajaxSubmit(
      {
        success: function(data){
          $(form_obj).find(".form_err").remove();
          $(form_obj).find(".form_done").remove();
          $(form_obj).find(".form_err_main").remove();
          if ( data.zpracovano=='ok' ) {
            $(form_obj).before('<p class="form_done">' + data.ok_msg + '</p>');
            $(form_obj).clearForm();
            $(form_obj).css('display','none');
          }
          else {
            if ( data.err_msg.length ) {
              $(form_obj).prepend('<p class="form_err_main">' + data.err_msg + '</p>');
            }
            
            for ( var i=0;i<data.err_elements.length;i++ ) {
              $(form_obj).find('#' + data.err_elements[i].elem_id).after(' <span class="form_err">' + data.err_elements[i].err_msg + '</span>');
            }
          }
        },
        dataType: 'json'
      }
    );
    return false;
  });


  /**
   * odebírání novinek
   */
  $("form#newsletter_form").submit(function(){
    var form_obj = this;
    $(this).append('<input type="hidden" name="ajax" value="ajax" />');
    $(this).ajaxSubmit(
      {
        success: function(data){
          $(form_obj).find(".form_err").remove();
          $(form_obj).find(".form_done").remove();
          if ( data.zpracovano=='ok' ) {
            var msg = 'Děkujeme za registraci.';
            $('#newsletter_email').val(msg);
          }
          else {
            if ( data.err_msg.length ) {
              $(form_obj).prepend('<div class="form_err">' + data.err_msg + '</div>');
            }
            for ( var i=0;i<data.err_elements.length;i++ ) {
              $('#' + data.err_elements[i].elem_id).before('<div class="form_err">' + data.err_elements[i].err_msg + '</div>');
            }
          }
        },
        dataType: 'json'
      }
    );
    return false;
  });


});

/**
 * nastaví zvolené položce našeptávače třídu pro zvýraznění prvku
 */
function naseptavac_select_item(selected_obj) {
  selected_obj.siblings().removeClass('hl');
  selected_obj.addClass('hl');
}

/**
 * zajišťuje odrolování našeptávače při posunu pomocí kurzorových kláves
 */
function naseptavac_scroll(naseptavac_obj,selected_obj) {
  var naseptavac_height = naseptavac_obj.innerHeight();
  var naseptavac_scrollTop = naseptavac_obj.scrollTop();
  var selected_obj_height = selected_obj.outerHeight();
  var selected_obj_position = selected_obj.position();
  var selected_obj_position_top = selected_obj_position.top;
  var selected_obj_position_bottom = selected_obj_position_top + selected_obj_height;
  if ( selected_obj_position_bottom > naseptavac_height ) {
    naseptavac_obj.scrollTop(selected_obj_position_top + naseptavac_scrollTop - naseptavac_height + selected_obj_height);
  }
  else if ( selected_obj_position_top < 0 ) {
    naseptavac_obj.scrollTop(selected_obj_position_top + naseptavac_scrollTop);
  }
}


function controls_set_functionality() {

  $("div.box_rt_corner").each(function(){

    var block_position = $(this).css('position');
    if ( block_position == 'static' ) {
      $(this).css('position','relative');
    }

    /*IE6*/
    if ( $.browser.msie && parseInt($.browser.version) <= 6 && $(this).css('float') == 'none' ) {
      var height = $(this).height();
      $(this).css('height', height + 'px');
    }

    $(this).append('<div class="corner_rt"></div>');
  });

  /**
   * kulaté rohy
   */
  $(".box_rounded").each(function(){

    var block_position = $(this).css('position');
    if ( block_position == 'static' ) {
      $(this).css('position','relative');
    }

    /*IE6*/
    if ( $.browser.msie && parseInt($.browser.version) <= 6 && $(this).css('float') == 'none' ) {
      var height = $(this).height();
      $(this).css('height', height + 'px');
    }
    
    var corners = '';
    if ( !$(this).hasClass('no_lt') ) { corners+= '<div class="corner lt"></div>'; }
    if ( !$(this).hasClass('no_rt') ) { corners+= '<div class="corner rt"></div>'; }
    if ( !$(this).hasClass('no_lb') ) { corners+= '<div class="corner lb"></div>'; }
    if ( !$(this).hasClass('no_rb') ) { corners+= '<div class="corner rb"></div>'; }

    $(this).append(corners);
  });

  /**
   * *************************** FORMULARE obecne ***********************************
   */
  /**
   * zmizení defaultního textu po získání focusu
   */
  $("input.default_text")
    .addClass('default_text_style')
    .attr("default_text",function(){return $(this).val();})
    .focus(function(){
      $(this).removeClass('default_text_style');
      $(this).attr("before_click_text",$(this).val());
      if ( $(this).val()==$(this).attr("default_text") ) {
        $(this).val("");
      }
    })
    .blur(function(){
      if ( !$.trim($(this).val()) && $(this).attr("before_click_text") ) {
        $(this).addClass('default_text_style');
        $(this).val($(this).attr("before_click_text"));
      }
    });
  /**
   * *************************** FORMULARE obecne KONEC ***********************************
   */



  /**
   * ************* NASTYLOVÁNÍ TABULEK S TŘÍDOU "STYLED" **************************
  */
  /**
   * tento kód přidá k sudým řádkům tabulky třídy "zoznam" třídu "even"
   * počítá s možným výskytem atributů rowspan
   */
  $("table.styled").children("tbody").each(function(){
    var skip_rows = 0; /*počet řádků, které se mají přeskočit - liché*/
    var fold_rows = 0; /*počet řádků, které se mají vysvítit (přiřadit k sudému)*/
    var tr_order = 0; /*pořadí řádku, podle kterého se počítá, je-li lichý nebo sudý*/
    $(this).children("tr").each(function(){ /*zajímají nás řádky pouze v první úrovni potomků*/
      if ( skip_rows>0 ) { skip_rows--; } /*musí být uvedeno >0 ( nestačí if ( fold_rows ) ) - Firefox, Opera*/
      else if ( fold_rows>0 ) { /*musí být uvedeno >0 ( nestačí if ( fold_rows ) ) - Firefox, Opera*/
        $(this).addClass('even');
        fold_rows--;
      }
      else {
        tr_order++;
        var even = (tr_order%2) ? false : true;

        /*zjistí se maximální rowspan u jakékoli buňky řádku a podle toho se následující řádky buď přeskakují nebo zahrnují*/
        var rowspan_max = 0;
        $(this).children("th,td").each(function(){
          if ( $(this).attr('rowspan') && parseInt($(this).attr('rowspan'))>rowspan_max ) {
            rowspan_max = parseInt($(this).attr('rowspan'));
          }
        });

        if ( even ) {
          $(this).addClass('even');
          fold_rows = rowspan_max - 1;
        }
        else {
          skip_rows = rowspan_max - 1;
        }
      }
      
      /**
       * každé buňce, která obsahuje "Kč" přidá třídu pro nezalamování a zarovnání vpravo
       */
      $(this).children("td:contains('Kč')").each(function(){
        $(this).addClass('nowrap r');
      });
    });
  });

  $("table.styled").children("thead").each(function(){
    $(this).children("tr:last").addClass('last');
  });

  $("table.styled thead th.vertical_stripe").each(function(){
    //var th_pos = $(this).prevAll().length;
    var th_pos = 0;
    var rowspans = new Array();
    $(this).prevAll().each(function(){
      th_pos+= ( $(this).attr('colspan') ) ? parseInt($(this).attr('colspan')) : 1;
      if ( $(this).attr('rowspan') && parseInt($(this).attr('rowspan'))>1 ) { rowspans.push(parseInt($(this).attr('rowspan'))); }
    });
    /**
     * vysvícení dalších <th> v <thead>
     */
    var tr_parent = $(this).parents("tr")[0];
    var tr_idx = 2;
    $(tr_parent).nextAll().each(function(){
      var position = 0;
      for ( i=0; i<rowspans.length; i++ ) {
        if ( tr_idx<=rowspans[i] ) { position++; }
      }
      $(this).children().each(function(){
        if ( position++ == th_pos ) {
          $(this).addClass('vertical_stripe');
        }
      });
      tr_idx++;
    });
    /**
     * vysvícení <td> v <tbody>
     */
    var table_parent = $(this).parents("table")[0];
    $(table_parent).children("tbody").children("tr").each(function(){
      var tds = $(this).children()[th_pos];
      $(tds).addClass('vertical_stripe');
    });
  });
  /**
   * ************* NASTYLOVÁNÍ TABULEK S TŘÍDOU "STYLED" konec **************************
  */
  
}

/**
 * funkce volaná flashem při jeho zvětšení
 * nastavuje flashi vysoký z-index, aby překryl obsah pod ním
 */
function otviramflash() {
  $("#flash_historie").css('z-index','50');
  $("body").addClass('flash_long');
}

/**
 * funkce volaná flashem při jeho zvětšení
 * nastavuje flashi nižší z-index, mež má obsah pod ním
 */
function zaviramflash() {
  $("#flash_historie").css('z-index','15');
  $("body").removeClass('flash_long');
}



/**
 * -------------------------------- MENU ----------------------------------------------
 */
var menu_timeout = 150; /*timeout, po kterém bude menu zrušeno - může být klidně nula, tzn. ihned po opuštění kurzorem - používá se vlastně jen ve funkci skryt_timeout*/
var menu_p_timeout = null; /*ukazatel na volání fukce setTimeout - používá se ve fci skryt_timeout a reset_timeout*/

function menu_skryt_timeout() { /*tato funkce nastavuje timeout pro schování*/
  menu_p_timeout = setTimeout("skryj_menu()",menu_timeout);
}
function menu_reset_timeout() { /*a tato funkce ho ruší*/
  clearTimeout(menu_p_timeout);
}
/**
 * skryje všechna menu kromě toho, jehož id je předáno
 */
function skryj_menu(except_id) {
  $("ul.submenu").each(function() {
    var item_id = $(this).attr("id");
    if ( item_id != except_id ) {
      if ( $.browser.msie && parseInt($.browser.version) <= 6 ) {
        $(this).css('display','none');
        $(this).prev().removeClass('active');
      }
      else {
        $(this).slideUp("fast", function() {
          $(this).prev().removeClass('active');
        });
      }
    }
  });
}
/**
 * -------------------------------- MENU konec ----------------------------------------------
 */



/**
 * @Name: number_format(number,decimals,dec_point,thousand_sep)
 * @Dependent on: function add_thousand_sep
 * @Author: Petr Novotný
 * @Date: 20.9.2008
 * @Description: Vrátí číslo (jako řetězec) v požadovaném formátu, inspirováno stejnojmennou PHP funkcí
 * @param float number          Číslo
 * @param int decimals          Počet desetinných míst
 * @param string dec_point      Oddělovač desetinných míst
 * @param string thousand_sep   Oddělovač tisíců
 */
function number_format(number,decimals,dec_point,thousand_sep) {

  number = parseFloat(number);
  
  if ( !decimals ) { decimals = 0; }
  if ( !dec_point ) { dec_point = ','; }
  if ( !thousand_sep ) { thousand_sep = ''; }

  var multi = Math.pow(10,decimals); //Zaokrouhlení na požadovaný počet desetinných míst
  var rounded = Math.round(number*multi) / multi;
  
  var rounded_str = rounded + ""; //převod na řetězec
  var numberparts = rounded_str.split('.',2); //rozdělení na celočíselnou a desetinnou část
  var intpart_str = numberparts[0]; //celočíselná část
  var decpart_str = '';
  if ( numberparts[1] ) { decpart_str = numberparts[1]; } //pokud je desetinná část
  else { //pokud není desetinná část, tak se vytvoří
    for ( var i=1;i<=decimals;i++ ) { decpart_str+= '0'; }
  }
  
  if ( thousand_sep.length ) { //pokud se požaduje oddělovač tisíců
    intpart_str = add_thousand_sep(intpart_str,thousand_sep); //přidá se oddělovač tisíců
  }
  
  var formated = intpart_str;
  if ( decimals ) { formated+= dec_point + decpart_str; }

  return formated;
}

/**
 * @Name: add_thousand_sep(number,thousand_sep)
 * @Author: Petr Novotný
 * @Date: 20.9.2008
 * @Description: Přidá oddělovač tisíců do celého čísla
 * @param int number            Číslo
 * @param string thousand_sep   Oddělovač tisíců
 */
function add_thousand_sep(number,thousand_sep) {

  var number_str = parseInt(number) + "";
  if ( !thousand_sep ) { thousand_sep = ''; }

  if ( thousand_sep.length ) {
    var number_str_new = "";
    var tmp = number_str;
    var last_trio = "";
    while ( tmp.length>3 ) {
      last_trio = tmp.substring(tmp.length-3);
      number_str_new = ( number_str_new.length ) ? last_trio + " " + number_str_new : last_trio;
      tmp = tmp.substring(0,tmp.length-3);
    }
    number_str = ( number_str_new.length ) ? tmp + " " + number_str_new : tmp;
  }
  
  return number_str;
}


//pouze čísla a případně desetinný oddělovač
function numbersonly(e, dec) {
  var key;
  var keychar;

  if (window.event)
    key = window.event.keyCode;
  else if (e)
    key = e.which;
  else
    return true;

  keychar = String.fromCharCode(key);

  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
    return true;
  else if ( ("0123456789").indexOf(keychar) > -1 )
    return true;
  else if ( dec && ((".,").indexOf(keychar) > -1) ) {
    return true;
  }
  else
   return false;
}


/**
 * @Name: is_int(tested_value)
 * @Author: Petr Novotný
 * @Date: 28.3.2003
 * @Description: Zjistí, zda je hodnota typu integer
 * @param float|string tested_value   Testovaná hodnota
 */
function is_int(tested_value) {
  var tmp;
  tmp = parseInt(tested_value) + "";
  if ( tested_value.length==0 ) { return false; }
  else if ( tmp.length!=tested_value.length || isNaN(tmp) ) { return false; }
  else { return true; }
}

/**
 * @Name: is_float(tested_value)
 * @Author: Petr Novotný
 * @Date: 20.9.2008
 * @Description: Zjistí, zda je hodnota typu float
 * @param float|string tested_value   Testovaná hodnota
 */
function is_float(tested_value) {
  var tmp;
  tmp = parseFloat(tested_value) + "";
  if ( tested_value.length==0 ) { return false; }
  else if ( tmp.length!=tested_value.length || isNaN(tmp) ) { return false; }
  else { return true; }
}


/**
 * @Name: round(number,decimals)
 * @Author: Petr Novotný
 * @Date: 20.9.2008
 * @Description: Zaokrouhlení na požadovaný počet desetinných míst, inspired on web
 * @param float number          Číslo
 * @param int decimals          Počet desetinných míst
 */
function round(number,decimals) {
  number = parseFloat(number);
  var multi = Math.pow(10,decimals);
  return Math.round(number*multi) / multi;
}

//pouze čísla a mezera
function psconly(myfield, e) {
  var key;
  var keychar;

  if (window.event)
    key = window.event.keyCode;
  else if (e)
    key = e.which;
  else
    return true;

  keychar = String.fromCharCode(key);

  if ((key==null) || (key==0) || (key==8) || (key==9) || (key==13) || (key==27) )
    return true;
  else if (((' 0123456789').indexOf(keychar) > -1))
    return true;
  else
   return false;
}



