$(document.window).addEvent('domready', function () {
    $('search_box').addEvent('focus', focusSearch);
    $('search_box').addEvent('blur', blurSearch);
    showFormErrors('newsletter-subscribe');
    showFormErrors('comment-form');

    if (Cookie.read('newsletter_subscribed') == 'yes') {
        newsletterSubscribed();
    }
});

function editComment(id) {
    var txt = $('comment-text-' + id);
    if (txt == null) {
        alert('Can\'t edit; unable to find comment text');
    }

    var comment = txt.get('text');

    var html = '';
    html += '<textarea cols="60" rows="2" id="new_comment_' + id + '" class="edit_comment">' + comment + '</textarea>';
    html += '<br /><input type="button" id="save_edit_' + id + '" value="Opslaan" />';
    html += '<input type="button" id="cancel_edit_' + id + '" value="Annuleren" />';

    txt.set('html', html);

    $('cancel_edit_' + id).addEvent('click', function () {
        txt.set('text', comment);
    });

    var saveComplete = function (response) {
        if (response == 'NO_PERMISSION' || response == 'ERROR') {
            txt.set('html', 'Niet gelukt om de reactie op te slaan. Vernieuw de pagina!');
            return false;
        } else {
            txt.set('html', response);
        }
    }

    $('save_edit_' + id).addEvent('click', function() {
        var new_comment = $('new_comment_' + id).value;
        txt.set('html', 'Reactie wordt opgeslagen...<br /><br /> <img src="' + WEB_URL + 'images/ajax-loader.gif" />'); 

        var req = new Request({
            url: VIRTUAL_URL + 'comment/save/' + id,
            method: 'post',
            data: {'comment': new_comment},
            onComplete: saveComplete
        });

        req.send();
    });
}

function focusSearch() {
    var search = $('search_box');

    if (search.value == 'Zoeken...') {
        search.value = '';
    }
}

function blurSearch() {
    var search = $('search_box');

    if (search.value == '') {
        search.value = 'Zoeken...';
    }
}

function newsletterSubscribed() {
    $('subscribe-newsletter').getElement('.sidebar-lecotools-menu').destroy();
    $('already-subscribed').setStyle('display', 'block');


    Cookie.write('newsletter_subscribed', 'yes');
}

function showSubscribeNewsletter() {
    var header_box = $('header_box');
    var html = header_box.get('html');

    var url = VIRTUAL_URL + 'newsletter/ajax';

    var showLoading = function () {
        var loading = '<div class="loading"><img src="' + WEB_URL + 'images/ajax-loader.gif" /></div>';
        header_box.set('html', loading);
    }

    var submitComplete = function (response) {
        var form = $('newsletter-subscribe');
        if (response != 'OK') return complete(response);

        header_box.set('html', html);
        newsletterSubscribed();
    }

    var submitForm = function (e) {
        e.stop();

        var form = $('newsletter-subscribe');
        
        form.set('send', {
            url: url,
            method: 'post',
            onComplete: submitComplete
        });

        form.send();
        showLoading();
    }

    var complete = function (response) {
        header_box.set('html', response);
        var submit = $$('.newsletter-submit');
        submit.addEvent('click', submitForm);

        var form = $('newsletter-subscribe');
        form.addEvent('keyup', function (e) {
            if (e.key == 'enter') {
                submitForm();
                e.stop();
            }
        });
        form.addEvent('submit', function (e) {
            e.stop();
        });

        showFormErrors('newsletter-subscribe');
    }
    
    var req = new Request({
        url: url,
        method: 'get',
        onComplete: complete
    });

    showLoading();
    req.send();
}

function showFormErrors() {
    var form = $('newsletter-subscribe');
    if (form == null) return false;
    var errors = $$('.show_error');

    errors.each(function (el) {
        var field = form.elements[el.get('text').trim()];
        if (field == null || typeof(field) == 'undefined') return false;

        //alert(field);

        $(field).setStyle('background-image', 'url(' + WEB_URL + 'images/form_bg_input_error.gif)');
        $(field).setStyle('color', '#FFFFFF');

        el.setStyle('display', 'none');
    });

}