/**
 * Form
 * 
 * @require     MooTools
 * @require     Nb_Form_Select
 * 
 * @author      Christoph Freund <c.freund@netzbewegung.com>
 * @version     1.00 alpha
 */

Nb_FormPreviewEcard = new Class({
    Implements: Events,
    initialize: function(element, config)
    {
        this.config = config || {};

        this.form = element;
        
        this.form.addEvent('submit', this.onSubmit.bindWithEvent(this));
        
        this.tooltipTimeout = null;
        this.tooltipCurrent = null;

    },
    onSubmit: function(event)
    {
        
        if (this.config.url)
        {
            event.stop();

            var options = {
                url: this.config.url,
                //url : 'http://nb145a.bernbacher.dev.nb/rezepte/rezepte.html?ajax=1&ext=recipe&mtd=preview',
                onComplete: this.onSubmitCallComplete.bind(this)
            }
            
            new Request.JSON(options).post(this.form);
        }
    },
    onSubmitCallComplete: function (response)
    {
        try 
        {
            if (response.success)
            {
                layer = new Nb_LayerEcard();
                this.content = $('recipe-ecard-content');
                this.ecardPreview = $('recipe-ecard-preview');

                this.ecardPreview.setStyle('visibility', 'hidden');
                this.ecardThanks = new Element('div', {
                    'id': 'recipe-ecard-thanks',
                    html: response.data.html
                });
 
                this.ecardPreview.setStyle('display', 'none');
                this.content.appendChild(this.ecardThanks);
                
                this.config.url = this.config.url.replace('submit', 'preview');
                ecardForm = new Nb_FormEcard($('ecard-form'),this.config);
                
                
                this.fireEvent('formSuccess', layer.element);
            }
            else
            {
                var element = this.form.elements[response.errors[0].fieldName];
                
                if (element[0] && element[0].get('type') == 'radio')
                {
                    element = element[0];
                }
                
                if (this.tooltipTimeout)
                {
                    $clear(this.tooltipTimeout);
                    this.tooltipCurrent.hideAndDestroy();
                }
                
                var offsetY = 0;
                var offsetX = -110;
                
                // ie8 bugfix
                element = $(element);
                
                // tooltip position
                var formDimensions    = this.form.getDimensions();
                var elementPosition   = element.getPositionNb(this.form);
                var elementDimensions = element.getDimensions();
                var position          = {bottom: formDimensions.height - elementPosition.y + 17, left: elementPosition.x + elementDimensions.width - 190};
                
                
                this.tooltipCurrent = new Nb_Tooltip(response.errors[0].message);
                this.tooltipCurrent.create(this.form, 'bottom');
                this.tooltipCurrent.setStyles(position);
                this.tooltipCurrent.show();
                
                this.tooltipTimeout = this.tooltipCurrent.hideAndDestroy.delay(3000, this.tooltipCurrent);
                
                if (element.getStyle('display') != 'none')
                {
                    element.focus();
                }

            }
        }
        catch (e)
        {
            //alert('formEcardPreview:' + e.message);
        }      
    }
});


