/* registering header flash */
swfobject.registerObject('flash-header', '9.0.0', '/expressInstall.swf');
swfobject.registerObject('flash-iphone', '9.0.0', '/expressInstall.swf');

/* main stuff */
Event.observe(document, 'dom:loaded', function()
{

    // mouseover
    $$('a.mouseover').each(function(el)
    {

        if (el.getAttribute('rel'))
        {
            var img = el.down('img');
            img.iOver = el.getAttribute('rel');
            img.iOut = img.src;

            img.observe('mouseover', function(e)
            {
                var el = Event.element(e);
                el.src = el.iOver;
            });

            img.observe('mouseout', function(e)
            {
                var el = Event.element(e);
                el.src = el.iOut;
            });
        }
    });

    // convert lables into titles
    $$('span.mark-field').each(function(el)
    {
        if (el.down('input'))
        {
            if (el.down('input').type == 'file')
            {
                // create new container for input-file label
                var label = new Element('div',
                {
                    'style': 'float:left; position:relative;'
                });

                label.innerHTML = el.down('input').title;

                // remove original label
                el.up().down('span.mark-label').remove();

                // insert new label container
                 el.up().insert({top: label})
            }
            else
            {
                // set label text as firld title param
                el.down('input').title = el.up().down('span.mark-label label').innerHTML.toUpperCase() + el.up().down('span.mark-label span.mark-required').innerHTML;
                // remove labels
                el.up().down('span.mark-label').remove();
            }
        }
        else if (el.down('textarea'))
        {
            // set label text as firld title param
            el.down('textarea').title = el.up().down('span.mark-label label').innerHTML.toUpperCase() + el.up().down('span.mark-label span.mark-required').innerHTML;
            // remove labels
            el.up().down('span.mark-label').remove();
        }

    });

    // add observers to input fields
    $$('span.mark-field input').each(function(el)
    {
        if (el.type == 'file')
        {
            el.isEmpty = false;
            return true;
        }

        if (el.value !== '')
        {
            el.isEmpty = false;
        }
        else
        {
            el.value = el.title;
            el.isEmpty = true;
            el.addClassName('text-stub');
        }

        el.observe('focus', function(event){
            Event.element(event).fire('my:focus');
        });
        
        el.observe('my:focus', function(event){
            e = Event.element(event);
            if (e.isEmpty)
            {
                e.isEmpty = false;
                e.value = '';
                e.removeClassName('text-stub');
            }
        });

        el.observe('blur', function(event){
            Event.element(event).fire('my:blur');
        });

        el.observe('my:blur', function(event){
            e = Event.element(event);
            if (e.value == '')
            {
                e.isEmpty = true;
                e.value = e.title;
                e.addClassName('text-stub');
            }
        });
    });

    // Add observers to textarea fields
    $$('span.mark-field textarea').each(function(el)
    {
        if (el.value !== '')
        {
            el.isEmpty = false;
        }
        else
        {
            el.value = el.title;
            el.isEmpty = true;
            el.addClassName('text-stub');
        }

        el.observe('focus', function(event){
            Event.element(event).fire('my:focus');
        });
        
        el.observe('my:focus', function(event){
            e = Event.element(event);
            if (e.isEmpty)
            {
                e.isEmpty = false;
                e.value = '';
                e.removeClassName('text-stub');
            }
        });

        el.observe('blur', function(event){
            Event.element(event).fire('my:blur');
        });
        el.observe('my:blur', function(event){
            e = Event.element(event);
            if (e.value == '')
            {
                e.isEmpty = true;
                e.value = e.title;
                e.addClassName('text-stub');
            }
        });
    });

    // image as submit
    if ($('image_send')) $('image_send').observe('click', function(e)
    {
        Event.stop(e);

        var readyFlag = true;

        var el = Event.element(e);

        $$('span.mark-field input, span.mark-field textarea').each(function(el)
        {
            if (el.type == 'file')
            {
                if (el.value)
                {
                    fileTypes = new Array('doc', 'pdf');

                    if (!testFileType(el.value, fileTypes))
                    {
                        alert("Please only upload files that end in types: \n\n." + (fileTypes.join(" .")) + "\n\nPlease select a new file and try again.");
                        readyFlag = false;
                    }
                }
            }
            else
            {
                if (el.isEmpty)
                {
                    el.isEmpty = false;
                    el.value = '';
                    el.removeClassName('text-stub');
                }
            }
        });

        if (readyFlag)
        {
            el.form.submit();
        }
    });
    // }}}

    function testFileType(fileName, fileTypes)
    {
        if (!fileName) return;
    
        dots = fileName.split(".");
    
        //get the part AFTER the LAST period.
        fileType = '.' + dots[dots.length-1];
    
        return (fileTypes.join(".").indexOf(fileType) != -1);
    }

});
