$(document).ready(function(){
    // H1 reflections
    $('h1').each(function(){
        var h1 = $(this);
        var reflection = h1.clone();
        reflection.addClass('reflection');
        reflection.attr('unselectable', 'on');
        h1.after(reflection);
    });

    // Rivona admin
    $('#content ul#image-gallery > li > a.edit').bind('click', function(e){
        e.preventDefault();

        var data        = $(this).parent().find('a[data-text]').attr('data-text').split('<br />');
        var title       = $('<div/>').html(data[0]).text();
        var description = $('<div/>').html(data[1]).text();

        $('#reference-form').prev().text('Referenzobjekt bearbeiten');
        $('#form-file').parent().remove();
        $('#form-title').val(title);
        $('#form-description').val(description);
        $('#reference-form').append($('<input type="hidden" name="image" value="' + $(this).attr('data-image') + '" />'));
        $('#reference-form').find('input[type="submit"]').removeClass('add-reference').addClass('save-reference');
    });

    $('#content ul#image-gallery > li > a.delete').bind('click', function(e){
        if (!window.confirm('Wollen Sie dieses Referenzobjekt wirklich löschen?')) {
            e.preventDefault();
        }
    });

    // Image viewer
    $('#image-gallery > li > a[data-text]').bind('click', function(e){
        e.preventDefault();

        var overlay = $('<span/>');
        overlay.css({
            'z-index':          '1000',
            'position':         'fixed',
            'left':             '0',
            'top':              '0',
            'width':            '100%',
            'height':           '100%',
            'background-color': '#000000',
            'opacity':          0.5
        });

        var current   = $(this);
        var viewer    = $('<span id="image-viewer"/>');
        var imageUrl  = $(this).attr('href');
        var container = $('<div class="image-container"/>');
        var image     = $('<img/>');
        image.attr('src', imageUrl);
        container.append(image);

        var text = $('<div class="text"/>').html(current.attr('data-text'));

        viewer.append(container);
        viewer.append(text);

        overlay.bind('click', function(e){
            e.preventDefault();

            overlay.remove();
            viewer.remove();
        });

        var arrowLeft  = $('<span class="arrow-left"/>');
        var arrowRight = $('<span class="arrow-right"/>');

        arrowLeft.bind('click', function(e){
            e.preventDefault();

            var parent = current.parent();

            if (parent.prev().length > 0) {
                current = parent.prev().find('a[data-text]');
            } else {
                current = parent.parent().find('li').last().find('a[data-text]');
            }

            image.attr('src', current.attr('href'));
            text.html(current.attr('data-text'));
        });

        arrowRight.bind('click', function(e){
            e.preventDefault();

            var parent = current.parent();

            if (parent.next().length > 0) {
                current = parent.next().find('a[data-text]');
            } else {
                current = parent.parent().find('li').first().find('a[data-text]');
            }

            image.attr('src', current.attr('href'));
            text.html(current.attr('data-text'));
        });

        viewer.append(arrowLeft)
              .append(arrowRight);

        $('body').append(overlay)
                 .append(viewer);
    });

    // Styling file uploads
    $('input[type="file"]').each(function(){
        var file   = $(this);
        var text   = $('<input type="text" id="form-file-text" readonly="readonly"/>');
        var button = $('<a href="#" class="button upload-file">Datei hochladen</a>');

        file.before(text);
        file.before(button);

        button.bind('click', function(e){
            e.preventDefault();
            button.blur();
            file.click();
        });

        file.bind('change', function(e){
            text.val(file.val());
        });

        file.css('display', 'none');
    });

    // Description limiter
    $('#form-description').each(function(){
        var textarea = $(this);
        var limit    = 160;
        var length   = textarea.val().length;
        var counter  = $('<span>' + length + '/' + limit + '</span>');

        textarea.bind('input', function(e){
            var length = textarea.val().length;

            if (length > limit) {
                textarea.val(textarea.val().substr(0, 160));
                length = 160;
            }

            counter.text(length + '/' + limit);
        });

        textarea.after(counter);
    });

    // Placeholder replacement
    $('input[data-placeholder], textarea[data-placeholder]').bind('focus', function(event){
        if ($(this).val() == $(this).attr('data-placeholder')) {
            $(this).val('');
        }
    }).bind('blur', function(event){
        if ($(this).val() == '') {
            $(this).val($(this).attr('data-placeholder'));
        }
    });

    // Remove placeholders on submit
    $('#contact-form').bind('submit', function(event){
        $(this).find('input[data-placeholder], textarea[data-placeholder]').each(function(){
            if ($(this).val() == $(this).attr('data-placeholder')) {
                $(this).val('');
            }
        });
    });

    // Captcha reload
    $('#form-captcha-row > img').bind('click', function(event){
        var uri = window.location.href;
        var img = $(this);

        $.post(uri, {newCaptcha: true}, function(data){
            img.attr('src', data.captchaUri);
            img.next('input[type="hidden"]').val(data.captchaId);
        });
    });
});

