var texty;

$(function() {
  // nacteni textu vlozenych do stranky
  texty = $.parseJSON($('#texty').html());
  
  // nacteni editoru
  if ($('textarea#editor').length) {
    var editor = new Editor('editor');
  }
  
  // zobrazeni stavove zpravy formulare
  zobrazVysledekFormu();
  
  $('input[title],textarea[title],select[title]').each(function(index,element) {
    var elem = ($(element).parent('span').children('br').length? $(element).parent('span').children('br').prev() : $(element).parent('span'));
    var elemPoz = elem.position();

    var elemDiv = $('<div class="vykricnik"></div>').appendTo($(element).parent());
    elemDiv.css('left',(elem.width() + elemPoz.left + 4));
    elemDiv.css('top',(elemPoz.top + 4));

    var elemDivBubl = $('<div class="bublina"><div class="bublina_horni"></div><div class="bublina_stredni">' + $(element).attr('title') + '</div><div class="bublina_dolni"></div></div>').appendTo($(element).parent());    
    elemDivBubl.css('left',(elem.width() + elemPoz.left + elemDiv.width()));
    elemDivBubl.css('top',(elemPoz.top - elemDivBubl.height() + 10));
    element.removeAttribute("title");
    
    $(element).click(function() {
      if (!$(this).data('clicked')) {
        $(this).mouseover(function() {
          $(this).parent().children('div.bublina').css('display','');
        });
        $(this).mouseout(function() {
          $(this).parent().children('div.bublina').css('display','none');
        });
        $(this).data('clicked', 1);
      }
    });
  });

  // vypisy
  nactiVypis();
  
  // obrazky a odkazy
  nactiObsahEditoru();
  
  // vertikalni vypozicovani
  $('.jBottom').each(function(index,element) {
    var elemBottom = $(element);
    elemBottom.css('position','relative');
    elemBottom.css('top',(elemBottom.parent().height() - elemBottom.height()) + 'px');
  });

  // zverejneni kurzu
  $('a[class=zverejnic0],a[class=zverejnic1],a[class=zverejnia0],a[class=zverejnia1],a[class=zverejnib0],a[class=zverejnib1],a[class=zverejnik0],a[class=zverejnik1]').click(function() {
    var param = new Object();
    var textId = "id" + $(this).attr('class').substr(8,1);
    param[textId] = $(this).attr('id').substr(9);
    param['typ'] = $(this).attr('class').substr(9);
    
    $.post(doplnUrl('Strom','zverejni',param),function(data) {
      var arrData = urciVysledekFormu(data,'|',2);
      if (arrData[0] != 0) {
        if (doplnText('id_clanek')) {
          location.reload();
        }
        else if(arrData[1].substr(0,1) == 'k') {
          arrIdKategorie = arrData[0].split(',');
          for (var klic in arrIdKategorie) {
            $('#zverejni_' + arrIdKategorie[klic]).attr('class','zverejni' + arrData[1]);
          }
        }
        else {
          $('#zverejni_' + arrData[0]).attr('class','zverejni' + arrData[1]);
        }
      }
      else {
        zobrazVysledekFormu(0,arrData[1]);
      }
    });
    return false;
  });

  // pravo prihlaseni
  $('a[class=prihlaseni0],a[class=prihlaseni1]').click(function() {
    $.post(doplnUrl('Strom','pravoPrihlaseni',{id: $(this).attr('id').substr(11),typ: $(this).attr('class').substr(10)}),function(data) {
      var arrData = urciVysledekFormu(data,'|',2);
      if (arrData[0] != 0) {
        $('#prihlaseni_' + arrData[0]).attr('class','prihlaseni' + arrData[1]);
      }
      else {
        zobrazVysledekFormu(0,arrData[1]);
      }
    });
  });

  // zmena hesla
  $('a[class=zmenHeslo]').click(function() {
    $.post(doplnUrl('Strom','zmenHeslo',{id: $(this).attr('id').substr(10)}),function(data) {
      var arrData = urciVysledekFormu(data,'|',2);
      zobrazVysledekFormu(arrData[0],arrData[1]);
    });
  });

  // hlasovani v ankete
  nactiAnketu();

  // nastaveni ukazky kurzu
  $('.kategorie_cbox').click(function() {
    vyberKategorii($(this),false);
  });

  // pole pro datumy
  if ($('.datum').length || $('.datumod').length) {
    $.getScript(doplnUrl('Soubor','datepicker',{}),function() {
      $('.datum').datepicker();
      $('.datumod').datepicker({minDate: '-60D'});
    });
  }
  
  // zobraz skryte
  $('.zobraz').click(function() {
    var elem = $('.skryte_' + $(this).attr('id').substr(7));
    elem.css('display',(elem.css('display') == 'none'? 'block' : 'none'));
  });

  // aktivuj neaktivni
  $('.aktivuj').click(function() {
    var elem = $('.neaktivni_' + $(this).attr('id').substr(8));
    elem.attr('disabled',(elem.attr('disabled')? '' : 'disabled'));
  });

  // nahrad tohle
  $('.nahrad').each(function(index,element) {
    var elem = $('.tohle_' + $(element).attr('id').substr(7));
    $(element).css('position','absolute');
    $(element).css('top',elem.position().top);
    $(element).css('left',elem.position().left - $(element).width());
  });
  
  // povinne polozky
  $('.povinne').attr('title',doplnText('povinne'));
  
  // tlacitka dialogu necinnosti
  var tlacitka = new Object();
  tlacitka[doplnText('ano')] = function(){
    $.post(doplnUrl('Strom','timeout',{}),function(data) {      
      $('#timeoutDialog').dialog('close');
    });
  };
  tlacitka[doplnText('ne')] = function(){
    $('#timeoutDialog').dialog('close');
  };

  // dialog necinnosti
  $('#timeoutDialog').dialog({
    autoOpen: false,
    resizable: false,
    modal: true,
    buttons: tlacitka,
    beforeClose: function(event, ui) {
      if (interval = $('#timeoutDialog').data('interval')) {
        clearInterval(interval);
      }
      $('#timeoutDialog').data('otevren',0);
      $('#timeoutDialog').data('interval',0);
      return true;
    }
  });

  // tlacitka dialogu odhlaseni
  var tlacitka = new Object();
  tlacitka[doplnText('ok')] = function(){
    $('#odhlasenDialog').dialog('close')
  };

  // dialog odhlaseni
  $('#odhlasenDialog').dialog({
    autoOpen: false,
    resizable: false,
    modal: true,
    buttons: tlacitka
  });
  
  // timeout
  var jePrihlaseny = parseInt(doplnText('prihlaseny'));
  if (!isNaN(jePrihlaseny) && jePrihlaseny) {
    overTimeout();
  }
  
  // adresy
  $('.adresa').keyup(function() {
    overAdresu($(this),1);
  });
  
  $('.adresa').each(function(index,element) {
    if (!$(this).parent().children('.bublina').length) {
      overAdresu($(this),0);
    }
  });  
  
  // adresa clanku
  if ($('#adresa').length && $('#nazev').length) {
    $('#nazev').keyup(function() {
      $('#adresa').val(vytvorAdresu($('#nazev').val(),50));
      overAdresu($('#adresa'),1);
    });
  }

  $('a.sdilet_facebook').click(function() {
    window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(ziskejHezkeUrl(location.href))+'&t='+encodeURIComponent(document.title),'Facebook','toolbar=0,status=0,width=626,height=436');
    return false;
  });

  $('a.sdilet_twitter').click(function() {
    window.open('http://twitter.com/share?url='+encodeURIComponent(ziskejHezkeUrl(location.href))+'&text='+encodeURIComponent(document.title),'Twitter','toolbar=0,status=0,width=626,height=436');
    return false;
  });
  
  // galerie
  $('.vypis a.lightbox').lightBox({
    txtZpet: 'Předchozí obrázek',
    txtVpred: 'Další obrázek',
    txtZpetOdk: '&laquo; Předchozí',		
    txtVpredOdk: 'Další &raquo;',		
    txtZavrit: 'Zavřít',
    txtZobrazit: '(Zobrazit v plné velikosti)'
  });
  
  // kamera
  $('#kamera a.lightbox').lightBox({
    txtZpet: 'Předchozí obrázek',
    txtVpred: 'Další obrázek',
    txtZpetOdk: '&laquo; Předchozí',		
    txtVpredOdk: 'Další &raquo;',		
    txtZavrit: 'Zavřít',
    txtZobrazit: '(Zobrazit v plné velikosti)'
  });  
});

function nactiAnketu() {
  $('a[class=hlasuj]').click(function() {
    $.post(doplnUrl('Strom','hlasuj',{id: $(this).attr('id').substr(7)}),function(data) {
      var arrData = urciVysledekFormu(data,'|',3);
      if (arrData[0] != 0) {
        $('#anketa').html($(data.substr(arrData[0].length + arrData[1].length + 2)).html());
        nactiAnketu();
      }
      zobrazVysledekFormu(arrData[0],arrData[1]);
    });
    return false;
  });
}

function vyberKategorii(elem,vnoreni) {
  if (!elem.hasClass('cbox')) return;
  if (!vnoreni) {
    elem.parent('span').find('.cbox').attr('checked',elem.attr('checked'));
  }
  if (!elem.parent('span').parent('span').find('span .cbox:checked').length) {
    elem.parent('span').parent('span').find('.cbox').attr('checked','');
    vyberKategorii(elem.parent('span').parent('span').children('.cbox'),true);
  }
  if (elem.parent('span').parent('span').find('span .cbox:checked').length) {
    elem.parent('span').parent('span').children('.cbox').attr('checked','checked');
    vyberKategorii(elem.parent('span').parent('span').children('.cbox'),true);
  }
}

function nactiVypis() {
  // automaticky odesilany select
  $('.vyberakce,#filtr,.filtr').change(function() {
    $(this).parents('form').submit();
  });

  // vypozicovani nabidky strankovani
  var naStrankuDiv = $('.nastranku');
  if (naStrankuDiv.length) {
    var tdElem = naStrankuDiv.parent('td');
    naStrankuDiv.css('left',(tdElem.position().left + tdElem.innerWidth() - naStrankuDiv.width() - 1) + 'px');
    naStrankuDiv.css('display','block');
  }
  
  // vypozicovani listy razeni
  var nadpisVypis = $('.nadpis').next('div').children('.vypis_bez')
  if (nadpisVypis.length) {
    nadpisVypis.parent('div').prev('.nadpis').css('margin-bottom','0px').css('padding-bottom','0px');
  }
    
  // funkcionalita nabidky strankovani
  $('.nastranku select').change(function() {
    var vypisId = $(this).parents('table').attr('id').substr(5);
    var url = odstranZurl(doplnText('kompletni_url'),['strankovani'+vypisId]);
    $(location).attr('href', url + (url.search('[?]') != -1? '&' : '?') + 'strankovani' + vypisId + '=' + $(this).val());
  });

  // nastaveni barvy zahlavy tabulky
  $('.razeni').mouseover(function() {
    $(this).addClass('razeni_hover');
  });
  $('.razeni').mouseout(function() {
    $(this).removeClass('razeni_hover'); 
  });

  // hromadny vyber vsech prvku vypisu
  $('.vyber').click(function() {
    var vypisId = $(this).parents('table').attr('id').substr(5);
    var vypisElem = $('#vyber' + vypisId + '_0');
    $('#vypis' + vypisId).find('input').each(function(index,element) {
      if (element.id != vypisElem.attr('id') && element.id.search('^vyber' + vypisId + '_.*') != -1) {
        $(element).attr('checked',vypisElem.attr('checked'));
      }
    });
  });
}

function nactiObsahEditoru() {
  // obrazky
  $('div#editor img').each(function(index,element) {
    if (arrShoda = $(element).attr('src').match(new RegExp('media/([0-9]+)/1'))) {
      $('<a class="lightbox" href="media/' + arrShoda[1] + '"' + ($(element).attr('alt')? 'title="' + $(element).attr('alt') + '"' : '') + '></a>').appendTo($(element).parent()).append($(element).detach());
    }
  });

  $('div#editor a.lightbox').lightBox({
    txtZpet: 'Předchozí obrázek',
    txtVpred: 'Další obrázek',
    txtZpetOdk: '&laquo; Předchozí',		
    txtVpredOdk: 'Další &raquo;',		
    txtZavrit: 'Zavřít',
    txtZobrazit: '(Zobrazit v plné velikosti)'
  });
}

function pridejBanner(url) {
  var arrUrl = url.split('/',2);

  $.post(doplnUrl('Strom','pridejBanner',{id: arrUrl[1]}),function(data) {
    var arrData = urciVysledekFormu(data,'|',2);
    if (arrData[0] != 0) {
      $('#banner_div').html(data.substr(arrData[0].length + 1));
      $('#banner').val(arrData[0]);
      $('#novyBanner').val('1');
    }
  });
}

function odeberBanner() {
  $('.banner_odstran').remove();
  $('#banner').val('');
  $('#novyBanner').val('1');
}

function overAdresu(elem,timeout) {
  if (typeof(timeout) != 'undefined' && timeout) {
    if (elem.data('timeout')) {
      clearTimeout(elem.data('timeout'));
    }
    elem.data('timeout',setTimeout(function(){overAdresu(elem)},200));
    return;
  }

  if (elem.val() || typeof(timeout) == 'undefined') {
    if ((elem.attr('id') == 'adresa' || elem.attr('id') == 'adresaUzivatel') && $('#' + elem.attr('id') + 'Span').length) {
      $('#' + elem.attr('id') + 'Span').html(elem.val());
      $('#' + elem.attr('id') + 'KurzSpan').html(elem.val());
    }
    $('#adresaDialog .chyba').html('');
    elem.parent().find('img').remove();
    elem.parent().find('.vykricnik').remove();
    elem.parent().find('.bublina').remove();
    
    $.post(doplnUrl('Strom','adresa',{id: (doplnText('id_clanek')? doplnText('id_clanek') : 0),cas: (new Date().getTime())}),{adresa: elem.val()},function(data) {
      var arrData = urciVysledekFormu(data,'|',2);
      var elemImg = $('<img style="vertical-align:-3px;" src="http://www.hvezdarnapv.cz/obrazky/' + (arrData[0] != 0? 'form_ok' : 'form_ko') + '.png" alt=""/>').insertAfter(elem);
      
      if (arrData[0] == 0) {
        var elemDiv = $('<div class="bublina"><div class="bublina_horni"></div><div class="bublina_stredni">' + arrData[1] + '</div><div class="bublina_dolni"></div></div>').insertAfter(elemImg);    
        elemDiv.css('left',(elemImg.position().left + 11));
        elemDiv.css('top',(elem.position().top - elemDiv.height() + 14));
      }
    });
  }
}

function overTimeout() {
  $.get(doplnUrl('Strom','timeout',{}),function(data) {
    var cas = parseInt(data);
    if (!isNaN(cas)) {
      if (cas <= 125) {
        if (cas <= 1) {
          $('#timeoutDialog').dialog('close');
          $('#odhlasenDialog').dialog('open');
        }
        else {
          setTimeout(overTimeout,cas*1000);
          if (!$('#timeoutDialog').data('otevren')) {
            $('#timeoutDialog').data('otevren',1);
            $('#timeoutDialog span').html(parseInt(cas/60) + ':' + (cas%60 < 10? '0' : '') + cas%60);
            $('#timeoutDialog').data('interval',setInterval(function() {
              var arrCas = $('#timeoutDialog span').html().split(':');
              var minuty = parseInt(arrCas[0]);
              var sekundy = (arrCas[1][0] == '0'? parseInt(arrCas[1][1]) : parseInt(arrCas[1]));
              if (!isNaN(minuty) && !isNaN(sekundy) && (minuty || sekundy)) {
                if (sekundy) {
                  sekundy--;
                }
                else {
                  minuty--;
                  sekundy = 59;
                }
                $('#timeoutDialog span').html(minuty + ':' + (sekundy < 10? '0' : '') + sekundy);
              }
            },1000));
            $('#timeoutDialog').dialog('open');
          }
        }
      }
      else {
        $('#timeoutDialog').dialog('close');
        setTimeout(overTimeout,(cas-124)*1000);
      }
    }
  });
}

function doplnUrl(cast,akce,arrParam) {
  $.extend((arrParam? arrParam : {}),(cast? {cast: cast} : {}),(akce? {akce: akce} : {}));
  var i = 0;
  var arrDopln = Array();
  for (var klic in arrParam) {
    arrDopln[i] = klic + '=' + arrParam[klic];
    i++;
  }
  var zaklad = doplnText('zakladni_url');
  return zaklad + (arrParam? (zaklad.search('[&]') != -1? '&' : (zaklad.search('[?]') != -1? '&' : '?')) + arrDopln.join('&') : '');
}

function odstranZurl(url,arrOdstran) {
  var arrVysledek = Array(); 
  var arrOtaznik = url.split('?',2);  
  if (arrOtaznik[1]) {
    var arrPary = arrOtaznik[1].split('&');
    var arrParyVel = arrPary.length; 
    for (var i = 0; i < arrParyVel; i++) {
      var arrParam = arrPary[i].split('=',2);
      if (jQuery.inArray(arrParam[0],arrOdstran) == -1) {
        arrVysledek.push(arrPary[i]);
      }
    }
  }
  return arrOtaznik[0] + (arrVysledek.length? '?' + arrVysledek.join('&') : '');
}

function ziskejZurl(url,param) {
  var arrOtaznik = url.split('?',2);  
  if (arrOtaznik[1]) {
    var arrPary = arrOtaznik[1].split('&');
    var arrParyVel = arrPary.length; 
    for (var i = 0; i < arrParyVel; i++) {
      var arrParam = arrPary[i].split('=',2);
      if (arrParam[0] == param) {
        return arrParam[1];
      }
    }
  }
  return '';
}

function ziskejHezkeUrl(url) {
  var adresa = url;  
  var pozice = adresa.indexOf('://');
  adresa = (pozice != -1? 'http://' + adresa.substr(pozice+3) : adresa);
  pozice = adresa.indexOf('?');
  return (pozice != -1? adresa.substr(0,pozice) : adresa);  
}

function doplnText(kod) {
  if (vrat = texty[kod]) {
    return vrat;
  }
  else {
    return $('#' + kod).text();
  }
}

function doplnZaklad() {
  var zaklad = doplnText('zakladni_url');
  var pozice = zaklad.indexOf("?");
  return (pozice != -1? zaklad.substr(pozice) : '');
}

function urciVysledekFormu(data,oddelovac,pocet) {
  var arrData = data.split(oddelovac,pocet);
  if (isNaN(parseInt(arrData[0]))) {
    arrData[0] = 0;
    arrData[1] = doplnText('neopravnen');
  }
  return arrData;
}

function zobrazVysledekFormu(vysledek,text) {
  if (typeof(vysledek) != 'undefined') {
    $('#zprava').attr('class',(vysledek != 0? 'zpravaUspech' : 'zpravaNeuspech'));
  }
  if (typeof(text) != 'undefined') {
    $('#zprava').html(text);
  }
  
  var element = $('#zprava:parent');
  if (element.length) {
    var doba = element.html().length*73;
    if (doba < 6000) {
      doba = 6000;
    }
    element.css('display','');
    element.animate({opacity: 'hide'},doba);
    
    element.click(function() {
      $(this).css('display','none');
    });    
    element.mouseover(function() {
      $(this).stop(true,true); 
      $(this).css('display','');
    });
    element.mouseout(function() {
      $(this).animate({opacity: 'hide'},6000);
    });
  }
}

function vytvorBublinu(obsah) {
  return $('<table class="seda_bublina"><tr><td class="lh"></td><td class="h"></td><td class="ph"></td></tr><tr><td class="l"></td><td class="obsah">' + obsah + '</td><td class="p"></td></tr><tr><td class="ld"></td><td class="d"></td><td class="pd"></td></tr></table>');
}

function odstranBublinu() {
  $('.seda_bublina').parent().children().removeClass('hover');
  $('.seda_bublina').remove();
}

function vytvorAdresu(str,delka) {
  var arrPrevod = {'á':'a', 'č':'c', 'ď':'d', 'é':'e', 'ě':'e', 'í':'i', 'ň':'n', 'ó':'o', 'ř':'r', 'š':'s', 'ť':'t', 'ú':'u', 'ů':'u', 'ý':'y', 'ž':'z'};
  var str1 = str.toLowerCase();
  var str2 = '';
  for (var i = 0; i < str1.length; i++) {
    var znak = str1.charAt(i);
    str2 += (typeof arrPrevod[znak] == 'undefined'? znak : arrPrevod[znak]);
  }
  return str2.replace(/[^a-z0-9\-]+/g,'-').substr(0,delka).replace(/^[^a-z]*/g,'');
}

function editorZmena(e) {
  if (e.type == 'keydown') {
    var cas = new Date().getTime();
    if ((cas - $('#editor').data('cas')) > 15000) {
      $('#editor').data('cas',cas);
      $.post(doplnUrl('Strom','timeout',{}));
    }
  }
}
  
function Editor(id) {
  var parametry = doplnZaklad();
  $.getScript('http://www.hvezdarnapv.cz/tinymce/jquery.tinymce.js',function() {
    $.getScript('http://www.hvezdarnapv.cz/tinymce/plugins/tinybrowser/tb_tinymce.js.php' + parametry,function() {
      $('#editor').data('cas',new Date().getTime());
      $('#editor').tinymce({
        script_url : 'http://www.hvezdarnapv.cz/tinymce/tiny_mce.js',
        theme : "advanced",
        plugins : "advhr,advimage,advlink,advlist,autolink,contextmenu,fullscreen,inlinepopups,layer,media,paste,preview,print,searchreplace,style,table",
        theme_advanced_buttons1 : "formatselect,fontselect,fontsizeselect,bold,italic,underline,strikethrough,sub,sup,|,justifyleft,justifycenter,justifyright,justifyfull,|,forecolor,backcolor,styleprops,removeformat,|",
        theme_advanced_buttons2 : "undo,redo,|,cut,copy,|,paste,pastetext,pasteword,|,search,|,bullist,numlist,|,outdent,indent,|,hr,advhr,|,link,unlink,anchor,charmap,|,media,image",
        theme_advanced_buttons3 : "tablecontrols,visualaid,|,insertlayer,moveforward,movebackward,absolute,|,print,preview,code,|,fullscreen",
        theme_advanced_toolbar_location : "top",
        theme_advanced_toolbar_align : "left",
        theme_advanced_statusbar_location : "bottom",
        theme_advanced_resizing : true,
        skin : "cirkuit",
        file_browser_callback : "tinyBrowser",
        handle_event_callback : "editorZmena",
        language : doplnText('jazyk'),
        entity_encoding : "raw"
      });
    });
  });

  $('#ulozEditor').click(function(){
    $.post(doplnUrl('Strom','uloz',{id: doplnText('id_clanek')}),$('#editor').serialize(),function(data) {
      var arrData = urciVysledekFormu(data,'|',2);
      if (arrData[0] != 0) {
        $('#editor').val(data.substr(arrData[0].length + arrData[1].length + 2));
      }
      zobrazVysledekFormu(arrData[0],arrData[1]);
    });
  });
}

