/**
 * enthaelt sowohl funktionen fuer rezept-uebersicht als auch einzelrezepte
 * besonderheit: einzelrezepte werden via ajax nachgeladen, nutzen aber ebenfalls javascript
 * jquery 1.3 benoetigt
 */
$(function () {
    function initBindings() {
        $('form[name^="vote_"]').each(function () {
            $(this).addClass('hasStarRating').append('<span class="ratingTip" />');
            $('input[type=radio]', this).rating({
                "focus": function (value, link) {
                    var tip = $('span.ratingTip', this.form);
                    tip[0].data = tip[0].data || tip.html();
                    tip.html(link.title || 'Bewertung: ' + value);
                },
                "blur": function (value, link) {
                    var tip = $('span.ratingTip', this.form);
                    tip.html(tip[0].data || '');
                },
                "callback": function(value, link) {
                    var formId = $("input[name='id']", this.form).attr('value');
                    var e_form = this.form;
                    $.getJSON("/_comp/php/rezepte_bewertung.php",
                    //{"mode": "ajax", "id": formId},
                    {"mode": "ajax", "id": formId, "bewertung": value},
                    function (data) {
                        try {
                            $('input', e_form).rating('disable');
                            // funktioniert nicht
                            //.rating('select', String(data.sterne));
                            $(e_form).append('<span class="ratingInfoSuccess">Vielen Dank für Ihre Bewertung</span>').find('.tooltipRezepte').hide();
                        } catch (err) {}
                    });
                },
                // nur, um cancel-button zu verstecken
                "required": true
            });
        });

        // portionsberechnung automatisch versenden
        /* angepasst für ajax-geladene rezepte
        $('form.portionsberechnung').find('select').change(function () {
            this.form.submit();
        }).end().find('input[type="submit"]').hide();
        */
        $('form.portionsberechnung').find('select').change(function () {
            // formular via ajax versenden und elterninhalt ersetzen
            $target = $(this).parents('div[id^=item]');
            var ajaxUrl = $target.data('ajaxUrl');
            var params = $(this).parents('form').serialize();
            ajaxUrl += '?' + params;
            $target.html('<img src="/media/bilder/_layout/ajax-indicator.gif" alt="Bitte warten" />').load(ajaxUrl + ' td.itemDescription > div > div', initBindings);
        }).end().find('input[type="submit"]').hide();

        // angebotsdetails bei mouseover anzeigen (achtung: layer muss klickbar sein!)
        $('a.productLink').next().hide().end().bind('mouseenter', function () {
            $(this).next().show();
        }).parent().bind('mouseleave', function () {
            $('.relatedOffer', this).hide();
        });

        // hilfstooltips bei rezepten
        $(".tooltipRezepte").find("[alt]").removeAttr("alt").end().tooltip({
            delay: 100,
            showURL: false,
            showBody: ' - ',
            extraClass: 'tooltipRezepteStyle'
        });


    } // end wrapper function

    // rezeptinhalte via ajax nachladen
    $('p.linkFaqDetails a').click(function (evt) {
        // ziel lokalisieren
        var $target = $('div[id="' + /#(.+)$/.exec(this.href)[1] + '"]');
        if ($target.children().length > 1) {
            // inhalte scheinbar bereits geladen
            return;
        }
        // inhalte nachladen
        var ajaxUrl = $target.children('a').attr('href');
        $target.data('ajaxUrl', ajaxUrl) // url fuer spaetere verwendung im element zwischenspeichern
            .html('<img src="/media/bilder/_layout/ajax-indicator.gif" alt="Bitte warten" />') // warte-animation abspielen
            .load(ajaxUrl + ' td.itemDescription > div > div', initBindings); // inhalt laden, javascript-bindings fuer neue elemente aktualisieren
        // falschen seitensprung korrigieren
        window.setTimeout(
            function ()
            {
                var offset = $target.offset();
                window.scrollTo(offset.left, offset.top - 40);
            },
            500 // ausgedacht
        );
    });
});

// rezeptlinks ausblenden
$('<style type="text/css">.itemDescription .content-link{display:none}</style>').appendTo('head');
