function getLabel(elemId, simple)
{
    if (elemId) {
        var req = (simple) ? '' : '.required';
        var label = $('label' + req + '[for="' + elemId + '"]');

        if (label && label.length) {
            if (label[0].title) {
                return label[0].title;
            }

            return label[0].innerHTML;
        }
    }

    return '';
}

function checkForm(form, errorToText)
{
    var inputs = $('#' + form.id + ' .required');

    if (!inputs.length) {
        return (errorToText) ? '' : true;
    }

    var error = '';

    for (i = 0; i < inputs.length; i++) {
        el = inputs[i];
        label = getLabel(el.id).replace(/\*+$/g, '');

        if (!label) {
            continue;
        }

        if (
            !(el.value)
            || (('null' == el.value) && ('SELECT' == el.tagName))
            || (('checkbox' == el.type) && !el.checked)
        ) {
            switch (el.type) {
                case 'checkbox':
                    error += "Zaškrtněte prosím pole '" + label + "'.\n";
                    break;

                case 'select-one':
                    error += "Vyberte prosím jednu z možností v poli '" + label + "'.\n";
                    break;

                default:
                    error += "Vyplňte prosím pole '" + label + "'.\n";
                    break;
            }

            continue;
        }

        if (-1 != el.id.indexOf('email')) {
            if (window.RegExp) {
                re = new RegExp("^[_a-zA-Z0-9\.\-]+@[_a-zA-Z0-9\.\-]+[\.][a-zA-Z]{2,4}$");

                if (!re.test(el.value)) {
                    error += "Emailová adresa v poli '" + label + "' je neplatná, zadejte ji prosím znovu.\n";
                }
            }
        }
    }

    if (error) {
        if (errorToText) {
            return error;
        }

        if ($.prompt) {
            $.prompt(error.replace("\n", "<br />\n"), { opacity: 0.8 });
        } else {
            alert(error);
        }
        return false;
    }

    if (errorToText) {
        return '';
    }

    return true;
}

function definedkeys_only(e, keys)
{
    switch (e.keyCode) {
        case 8:
        case 9:
        case 13:
        case 37:
        case 38:
        case 39:
        case 40:
        case 46:
            return true;
            break;
    }

    var re = new RegExp(keys);

    return re.test(String.fromCharCode((e.which) ? e.which : e.keyCode));
}

function nums_only(e)
{
    switch (e.keyCode) {
        case 8:
        case 9:
        case 13:
        case 46:
        case 116:
            return true;
            break;
    }

    k = (e.which) ? e.which : e.keyCode;
    var r = !((k < 48 || k > 57) && (k < 35 || k > 40));

    return r;
}

function date_only(e) {
    switch (e.keyCode) {
        case 8:
        case 9:
        case 13:
        case 46:
            return true;
            break;
    }

    k = (e.which) ? e.which : e.keyCode;
    dot = (k == 46);

    var r = ((k < 48 || k > 57) && !dot && (k < 35 || k > 40));

    return !r;
}

function time_only(e) {
    switch (e.keyCode) {
        case 8:
        case 9:
        case 13:
        case 58:
            return true;
            break;
    }

    k = (e.which) ? e.which : e.keyCode;
    dot = (k == 58);

    var r = ((k < 48 || k > 57) && !dot && (k < 35 || k > 40));

    return !r;
}

function nums_dot(e, box) {
    switch (e.keyCode) {
        case 8:
        case 9:
        case 13:
        case 46:
            return true;
            break;
    }

    var k = (e.which) ? e.which : e.keyCode;
    var dot = (k == 46);

    if (dot && box && box.value && (-1 != box.value.indexOf('.'))) {
        dot = false;
    }

    var minus = (k == 45);

    if (minus) {
        // byl zmacknuty znak '-', pokud je na zacatku, povolim ho
        return true;
    }

    var r = ((k < 48 || k > 57) && !dot && (k < 35 || k > 40));

    return !r;
}

function setFocus(DOMdestination)
{
    setTimeout(DOMdestination, 400);
}

function externalLinks_init() {
    if (!document.getElementsByTagName) {
        return;
    }

    var links = document.getElementsByTagName('a');

    for (var i=0; i<links.length; i++) {
        var link = links[i];

        if (link.getAttribute('href') && link.getAttributeNode('class') && (link.getAttributeNode('class').value.search(/external/) >= 0)) {
            link.onclick = externalLinks_open;
            link.onkeypress = externalLinks_open;
        }
    }
}

function externalLinks_open(a) {
    window.open(this.href);
    return false;
}

window.onload = init;

function init() {
    externalLinks_init();
}

