String.prototype.zkrat = function(maxZnaku) {
    if(!maxZnaku) maxZnaku = 32;
    if(this.length > 32) {
        return this.substr(0, maxZnaku-13) + "...." + this.substr(this.length-9, 9);
    } else {
        return this;
    }
}

function myAlert(message, typZpravy) {
    if(!typZpravy) {typZpravy = "ok"}
    popup('alert', Y.Node.create("<div class='"+typZpravy+"'><p>"+message+"</p></div>"));
}

var maxPopupId = 0;
function popup(popupClass, contentObject, topOffset) {
    if(!topOffset) {topOffset = 0};
    maxPopupId++;
    
    var preliv = Y.Node.create("<div id='sedyPreliv'>&nbsp;</div>").setAttribute("rel", maxPopupId);
    preliv.on("click", closePopup);
    
    var alert = Y.Node.create("<div id='alert' class='"+popupClass+"'></div>").setAttribute("rel", maxPopupId);
    alert.append(contentObject);
        
    var alertClose = Y.Node.create("<div id='alert_close' class='"+popupClass+"'>&nbsp;</div>").setAttribute("rel", maxPopupId);
    alertClose.on("click", closePopup);
    
    Y.one(document.body).append(preliv).append(alert).append(alertClose); 
    
    Y.one("#alert_close").setStyle("top", (document.documentElement.scrollTop + document.body.scrollTop + ((document.documentElement.clientHeight - contentObject.get("clientHeight"))/2)) + topOffset + "px")
    Y.one("#alert").setStyle("top", (document.documentElement.scrollTop + document.body.scrollTop + ((document.documentElement.clientHeight - contentObject.get("clientHeight"))/2)) + topOffset + "px");
}

function closePopup(e) {
    if(e) {
        var rel = "[rel='"+e.currentTarget.getAttribute("rel")+"']";
    } else {
        var rel = "[rel='"+maxPopupId+"']";
    }
    
    if(Y.one("#sedyPreliv"+rel)) Y.one("#sedyPreliv"+rel).remove();
    if(Y.one("#alert"+rel)) Y.one("#alert"+rel).remove();
    if(Y.one("#alert_close"+rel)) Y.one("#alert_close"+rel).remove();
}

function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }
    return true;
}

/* Funkce pro přednahrávání obrázků - využívá se hlavně pro chybový hlášky, aby se v případě výpadku internetu se zobrazily graficky jak mají */
var preloaded = new Array();
function preload_images() {
    for (var i = 0; i < arguments.length; i++){
        preloaded[i] = document.createElement("img");
        preloaded[i].setAttribute( "src",arguments[i]);
    };
};
/* Konec preloadu obrázků */

function paypal(data, cena) {
    location.href = 'https://www.paypal.com/cgi-bin/webscr'+
     '?cmd=_xclick&business=paypal%40megarapid%2eeu&item_name='+
     'ID%20'+user.uid+'%20Megarapid%20account%20%2d%20'+data+'%20000%20credits'+
     '&amount='+cena+'%2e00'+
     '&no_shipping=0&no_note=1&currency_code=CZK&lc=CZ&bn=PP%2dBuyNowBF'+
     '&charset=UTF%2d8';
} 

// Dialog pro registraci nového uživatele
function registerForm() {
    var nazevFormulare = "Registrace uživatele";
    var form = Y.Node.create("<form id='registerUser' class='editDialog' method='post'><h2>"+nazevFormulare+"</h2><table></table></form>");
    var tr1 = Y.Node.create("<tr><th><label>Nick</label></th><td></td></tr>");
    tr1.one("td").append(Y.Node.create("<input type='text' name='nick' />"));
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='action' value='register' />"));
    form.one("table").append(tr1);

    var tr2 = Y.Node.create("<tr><th><label>Email</label></th><td></td></tr>");
    tr2.one("td").append(Y.Node.create("<input type='text' name='email' />"));

    var tr3 = Y.Node.create("<tr><th><label>Heslo</label></th><td></td></tr>");
    tr3.one("td").append(Y.Node.create("<input type='password' name='pass1' />"));
    
    var tr4 = Y.Node.create("<tr><th><label>Heslo znovu</label></th><td></td></tr>");
    tr4.one("td").append(Y.Node.create("<input type='password' name='pass2' />"));
    
    var tr5 = Y.Node.create("<tr><th><label>Partner (nepovinné)</label></th><td></td></tr>");
    tr5.one("td").append(Y.Node.create("<input type='text' name='partnerid' />"));
    
    form.one("table").append(tr2).append(tr3).append(tr4).append(tr5);
    
    form.append(Y.Node.create("<p></p>"));
    
    /* Tlačítko OK */
    form.one("p").prepend("<input type='submit' id='registerUserOK' class='velkeTlacitko' value='OK' />");
    form.one("#registerUserOK").on("click", function(e) {
        //Y.io().. tady asi nemusí pořádně nic být, obsluhu zařídí níže HandleEditForm
    });
    
    form.on('submit', handleRemoteForm, function(t,r,a) {
        var odpoved = eval('('+r.responseText+')');
        if(!odpoved || typeof odpoved.status == "undefined")
        { 
            myAlert("Nejspíš se nepodařilo registrovat. Zkuste to prosím později nebo kontaktujte administrátory.");
        } else if(odpoved.status == false) {
            HandleDejZpravu(t,r,a);
        } else {
            closePopup();
            myAlert("Jste zaregistrováni. Můžete se přihlásit.");
        }
    });
    
    popup("registerForm", form);
}

function sklerozaForm() {
    var nazevFormulare = "Zapomenuté heslo";
    var form = Y.Node.create("<form class='editDialog' method='post'><h2>"+nazevFormulare+"</h2><table></table></form>");
    var tr1 = Y.Node.create("<tr><th><label>Zadejte email</label></th><td></td></tr>");
    tr1.one("td").append(Y.Node.create("<input type='text' name='email' />"));
    tr1.one("td").append(Y.Node.create("<input type='hidden' name='action' value='forgottenpassword' />"));
    form.one("table").append(tr1);
    
    form.append(Y.Node.create("<p></p>"));
    
    /* Tlačítko OK */
    form.one("p").prepend("<input type='submit' id='registerUserOK' class='velkeTlacitko' value='OK' />");
    form.on('submit', handleRemoteForm, HandleDejZpravu);
    
    popup("sklerozaForm", form);
}

function zpracujZpravu(odpoved) {
    if(odpoved.msg != null) {
        var alertClass = (typeof odpoved.errorMsg == 'undefined' || !odpoved.errorMsg) ? "ok" : "ko";
        if(typeof odpoved.msg == "string") {
            if(odpoved.msg) {
                myAlert(odpoved.msg, alertClass);
            }
        } else if(odpoved.msg.length) {
            var txt = "";
            for(var i = 0; i<odpoved.msg.length; i++) {txt += (odpoved.msg[i]+"<br/>\n");}
            myAlert(txt,alertClass);
        }
    } else if(odpoved.status && odpoved.status == true) {
        myAlert("Akce proběhla úspěšně");
    } else {
        myAlert(hlaskaNeuspech);
    }
}

