/* Because of strange nature of SWFObject, registerObject should be called right away */

(function()
{
    var i, version;

    var objects = document.getElementsByTagName('object');

    for (i=0; i<objects.length; i++)
    {
        if (objects[i].getAttribute('classid') == 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000')
        {
            // check for specific version
            if (objects[i].getAttribute('rel') && parseInt(objects[i].getAttribute('rel'), 10) > 0)
            {
                version = objects[i].getAttribute('rel');
            }
            else
            {
                // say we need 9 by default
                version = '10';
            }

            if (objects[i].getAttribute('rel') != 'no_swfobject')
            {
                if (!objects[i].id)
                {
                    objects[i].id = 'swfobject_target_' + Math.floor(Math.random()*1000);
                }

                swfobject.registerObject(objects[i].id, version);
            }

        }
    }

})();

/* do normail stuff */

Event.observe(document, 'dom:loaded', function()
{

    Element.addMethods(
    {
        'active': function(element, status)
        {
            element = $(element);

            var active = element.retrieve('active', false);

            // getter
            if (typeof status == 'undefined')
            {
                return active;
            }

            // setter
            if (status)
            {
                active = true;
                element.addClassName('active');
            }
            else
            {
                active = false;
                element.removeClassName('active');
            }

            element.store('active', active);

            return element;
        },

        'empty': function(element, status)
        {
            element = $(element);

            var empty = element.retrieve('empty', false);

            // getter
            if (typeof status == 'undefined')
            {
                return empty;
            }

            // setter
            if (status)
            {
                empty = true;
                element.addClassName('empty');
            }
            else
            {
                empty = false;
                element.removeClassName('empty');
            }

            element.store('empty', empty);

            return element;
        },

        'isEmpty': function(element)
        {
            element = $(element);

            switch(element.tagName)
            {
                case 'INPUT':
                case 'TEXTAREA':
                    return (element.value.length == 0);
                    break;

                default:
                    return (element.innerHTML.stripTags().length == 0);
            }
        },

        'setText': function(element, text)
        {
            element = $(element);

            switch(element.tagName)
            {
                case 'INPUT':
                case 'TEXTAREA':
                    element.value = text;
                    break;

                default:
                    element.update(text); // TODO: maybe dangerous
            }
        }
    });

    $$('input.text, textarea.textarea').each(function(el)
    {
        if (el.isEmpty())
        {
            el.setText(el.title);
            el.empty(true);
        }

        el.observe('focus', function(e)
        {
            var el = Event.element(e);

            if (el.empty())
            {
                el.setText('');
            }

            el.active(true);
            el.empty(false);
        });

        el.observe('blur', function(e)
        {
            var el = Event.element(e);

            if (el.isEmpty())
            {
                el.setText(el.title);
                el.empty(true);
            }

            el.active(false);
        });
    });

    $$('form').each(function(el)
    {
        el.observe('submit', function()
        {
            // clean up stubs from empty fields
            this.select('input.text, textarea.textarea').each(function(el)
            {
                if (el.empty())
                {
                    el.setText('');
                }
            });

            return true;
        }.bind(el));

        // add back reference to the form for form elements
        el.select('input.submit').each(function(field)
        {
            // here top level 'el' is 'this'
            field.store('form', this);
        }.bind(el));
    });

    $$('input.submit').each(function(el)
    {
        el.observe('click', function(e)
        {
            Event.stop(e);

            var el = Event.element(e);

            var form = el.retrieve('form', false);

            if (form)
            {
                form.request(
                {
                    onComplete: function()
                    {
                        alert('Thank you.\n\nYour data has been sent to Dr. Stephanie.\n');
                    }
                });
            }
        });
    });

});
