$(document).ready(
    function() {
        $.datepicker.setDefaults({
                showOn: 'both',
                buttonImageOnly: true,
                buttonImage: skinUrl + '/images/icon/calendar.gif',
                yearRange: '-7:+7'});

        $('input.date').attachDatepicker();
        $('select.submit').change(onSelectorChange);

        $('#id').change(onCheckId);
        $('#netto').change(onChangeNetto);
        $('#vat').change(onChangeNetto);
        $('#partnerId').change(onCheckPartnerId);
        $('#sponsorId').change(onCheckSponsorId);

        $('.getAmountSymbol').change(onGetAmountSymbol);
        $('.getNextId').change(onGetNextId);
        $('.genPassword').click(onGenPassword);
        $('a.insertField').click(onInsertField);

        disableDisabled();

        $('.fckeditor').each(function() {
            var oFCKeditor = new FCKeditor( this.id, '100%', 400 ) ;
            oFCKeditor.BasePath = baseUrl + 'lib/fckeditor/';
            oFCKeditor.Config["AutoDetectLanguage"] = false;
            oFCKeditor.Config["DefaultLanguage"] = language;
            oFCKeditor.ReplaceTextarea() ;
        });
    }
);

function onInsertField() {
    var oEditor = FCKeditorAPI.GetInstance($('textarea.insertField')[0].id) ;
    oEditor.InsertHtml('{' + this.id + '}');
    return false;
}

function disableDisabled() {
    $('.disable').each(function() { this.disabled = true } );
}

function enableDisabled() {
    $('.disable').each(function() { this.disabled = false } );
}

function onGetAmountSymbol() {
    disableDisabled();

    var centreId = $('#centreId')[0].value;
    var url = baseUrl + 'centre/currency/json/' + centreId + '/';

    if (centreId == 0) {
        return;
    }

    $.getJSON(url, function(json) {
        if (json.symbol != null && json.rate != null) {
            $('#amountSymbol').html(json.symbol);
            enableDisabled();
        } else {
            $('#amountSymbol').html(getError());
        }
    });
}

function onChangeNetto() {
    var netto = parseFloat(this.form.fNetto.value.replace(',', '.'));
    var vat = parseFloat(this.form.vat.value.replace(',', '.') || 0);
    var brutto = new Number((vat / 100) * netto + netto);
    var result = new String(brutto.toFixed(2));
    this.form.fBrutto.value = result.replace('.', ',');
}

function onSelectorChange() {
    var form = $(this).parents('form')[0];
    form.submit();
    return false;
}

function onCheckPartnerId() {
    var partnerId = $('#partnerId')[0].value;
    var url = baseUrl + 'partner/json/' + partnerId + '/';

    $.getJSON(url, function(json) {
        var html = (json.name == null) ? getError() : getOk() + json.name;
        $('#partnerName').html(html);
    });
}

function onCheckSponsorId() {
    var sponsorId = $('#sponsorId')[0].value;
    var url = baseUrl + 'partner/json/' + sponsorId + '/';

    if (sponsorId == 0) {
        return;
    }

    $.getJSON(url, function(json) {
        var html = (json.name == null) ? getError() : getOk() + json.name;
        $('#sponsorName').html(html);
    });
}

function onCheckId() {
    var id = $('#id')[0].value;
    var url = baseUrl + 'partner/json/' + id + '/';

    $.getJSON(url, function(json) {
        var html = (json.name == null) ? getOk() : getError();
        $('#idStatus').html(html);
    });
}

function getError() {
    return '<img src="' + skinUrl + 'images/icon/error.gif" alt="Error" /> ';
}

function getOk() {
    return '<img src="' + skinUrl + 'images/icon/accept.gif" alt="OK" /> ';
}

function onGetNextId() {
    if ($('#id')[0].value != '') {
        return true;
    }

    var country = $('#country')[0].value;
    var url = window.location + '';

    $.post(
            url,
            {getNextId: '1', country: country},
            function(json, textStatus) {
                $('#id')[0].value = json.id;
                onCheckId();
            },
            "json");

    return true;
}

function onGenPassword() {
    $('#passwd')[0].value = getPassword(8);
    return false;
}

function getPassword(length) {
    var rc = "";
    for (var i = 1; i < length; ++i) {
        rc += getRandomChar();
    }
    return rc;
}

function getRandomNum(lbound, ubound) {
    return (Math.floor(Math.random() * (ubound - lbound)) + lbound);
}

function getRandomChar() {
    charSet  = "0123456789";
    charSet += "abcdefghijklmnopqrstuvwxyz";
    return charSet.charAt(getRandomNum(0, charSet.length));
}