//TROCHU OBECNEJSI FUNKCE
if (!window.limsjs) {window.limsjs = {};}
if (!limsjs.ui) {limsjs.ui = {};}
if (!limsjs.ui.dialog) {limsjs.ui.dialog= {};}
var _lastArticleTimer = null;

function showHideAdditionalInput(id)
{
    var el = $("#"+id);
    if(el.is(":visible"))
        el.addClass("hidden");
    else
        el.removeClass("hidden");
}

function showLanguageShortcut(sht){

    if($("#lang_"+sht).hasClass("invisible")){
        $("#lang_"+sht).removeClass("invisible");
    }
    else{
        $("#lang_"+sht).addClass("invisible");
    }

}

/**
 * Otevře dialog pro vyžádání zapomenutého hesla
 */
function showForgottenPasswordForm(button){
    var buttons = {};
    buttons[button] = function(){
        if($('#passMsg').is(":visible"))$("#passMsg").hide();
        $(this).dialog("destroy");
    };

    $('#forgottenPassword').dialog({
        modal: true,
        buttons: buttons
    });
}

/**
 *  Odešle požadavek na zapomenuté heslo
 *  requirements:   javascript -> webDir
 *                  php        -> addon UserLogin (načítat všude)
 */
function sendPasswordForm(passInput) {

    var email = $(passInput).val();
    if(email != ""){
        $('#passMsg').load(webDir+language+'?forgotten_password='+email).show();
    }
    else{
        $('#passMsg').html('<br /> Vyplňte prosím Váš email.').show();
    }
}

/**
* Zobrazi div jako dialog.
 */
limsjs.ui.dialog.show = function(id) {
    //plachta
    $('body').append('<div id="_plachta"></div>')
    var width = Math.max($(window).width(),  $(document).width());
    var height = Math.max($(window).height(),  $(document).height());
    $('#_plachta').css({
        position:'absolute',
        top: '0px', left: '0px',
        width: width + 'px',
        height: height+'px',
        backgroundColor: 'black',
        opacity: 0.7
    });

    //ukaz
    $('#'+id).show();
    var dialogTop = $(window).height() /2 + $(window).scrollTop() - ($('#'+id).height()/2);

    //misti
    $('#'+id).css({'top': dialogTop + "px"});

}

/**
 * Ochrana ajaxovych funkci pred blaznivym klikanim nebo mackanim tlacitek
 **/
limsjs.ui.safeAjax = function(functionForProtection, delay){

  if(typeof delay == 'undefined') {
   delay = 1000;
  }

  if (_lastArticleTimer != null) {
    clearTimeout(_lastArticleTimer);
  }

  _lastArticleTimer = setTimeout(functionForProtection,delay);
}


limsjs.ui.dialog.hide = function(id) {
     $('#'+id).hide();
     $('#_plachta').remove()
}

//================ AJAX LOADERY=====================
/**
 * Zaregistruej loader pro aplikaci, ruzne akce pak umeji vzit jmeno loaderu a ten bude pouzit
 * @param string name - nazev kterym se budeme na loader odkazovat
 * @param string targetId - id elementu kam bude vlozen
 * @param string image - nazev souboru obrazku (cesta se doplni
 * @param object css - volitelne styly ktere maji byt aplikovany na loader po zobrazeni (format pro jquery)
 */
limsjs.ui.registerLoader = function(name, targetId, image, clearOnEnd,css) {
    if(!this._loaders) {
        this._loaders = [];
    }

    if (! clearOnEnd ) clearOnEnd = false;
    var nLoader = {name: name, targetId: targetId, image:image, clearOnEnd: clearOnEnd};
    if (css) {
        nLoader['css'] = css;
    }
    this._loaders[this._loaders.length] = nLoader;
}

/**
 * Zobrazi loader dany jmenem. Musi byt nejdriv zaregistrovan (limsjs.ui.registerLoader)
 */
limsjs.ui.showLoader = function(name) {
    if (!name) return; //abych nemuselil checkovat pred volanim, zda nam prisel loader jako volitelny parametr
    if (this._loaders) {
        var foundLoader = limsjs.ui._findLodaer(name);

        if (foundLoader) {
            $("#" + foundLoader.targetId).html('<img src="'+webDir+'/images/'+foundLoader.image+'" alt="Nahrávám..." id="_loader_'+name+'">');
            if (foundLoader.css) {
                $('#_loader_'+name).css(foundLoader.css);
            }
        }
    }
}

/**
 * Pri doknceni akce schova loader, ale pouze pokud byl registrovan
 * s parametrem clearOnEnd = true.
 */
limsjs.ui.hideLoader = function(name) {
   if (!name) return; //abych nemuselil checkovat pred volanim, zda nam prisel loader jako volitelny parametr
   if (this._loaders) {
        var foundLoader = limsjs.ui._findLodaer(name);
        if (foundLoader && foundLoader.clearOnEnd) {
            $("#" + foundLoader.targetId).html('');
        }
   }
}

limsjs.ui._findLodaer = function(name) {
    var foundLoader = null;
    for(var i = 0; i < this._loaders.length; i++) {
            if (this._loaders[i].name == name) {
                foundLoader = this._loaders[i];
                break;
            }
    }
    return foundLoader;
}






