/*
 *  フォーム（公開ページ用）JavaScript
 *  Copyright(C) 2007 Pantacle, All Rights Reserved.
 *  Copyright(C) 2007 Kawanagare workshop, All Rights Reserved.
 */

/*
 *  Registering the events.
 */
Event.observe( window, 'load', prdfwc_initialize_controls, false );


/*
 *  Methods on loaded.
 */
function prdfwc_initialize_controls()
{
    var elements = new Array();

    $A( document.getElementsByTagName('form') ).each( function(elem){
        Event.observe( elem, 'submit', prdfwc_judge_form_submited.bindAsEventListener( elem ), false );

        Form.getElements(elem).each( function(form_elem){

            elem_type = form_elem.getAttribute('type');

            if ( form_elem.name != '' )
            {
                if ( ( Element.visible(form_elem) ) &&
                     ( elem_type != 'hidden' ) &&
                     ( elem_type != 'button' ) &&
                     ( elem_type != 'submit' ) &&
                     ( elem_type != 'reset'  ) )
                {
                    elements.push( form_elem );
                }
            }

            if ( ( ! form_elem.readOnly ) && ( elem_type != 'hidden' ) )
            {
                Event.observe( form_elem, 'focus', prdfwc_set_control_focus.bindAsEventListener( form_elem ), false );
                Event.observe( form_elem, 'blur', prdfwc_set_control_blur.bindAsEventListener( form_elem ), false );
            }

        });
    });

    if ( elements.length > 0 )
    {
        var current_elem = null;
        var current_left = 99999999;
        var current_top  = 99999999;

        elements.each( function(elem){
            poff = Position.cumulativeOffset(elem);
            target_left = poff[0];
            target_top  = poff[1];

            if ( ( ( target_top != 0 ) || ( target_left != 0 ) ) &&
                 ( current_top >= target_top ) &&
                 ( current_left >= target_left ) )
            {
                current_elem = elem;
                current_left = target_left;
                current_top  = target_top;
            }
        });

        Field.focus( current_elem );
    }
}



/*
 *  Focus control
 */
var g_prdfwc_focused_background_color = '#ffffcc';
var g_prdfwc_focused_elements_background_color = null;

function prdfwc_set_control_focus()
{
    if ( this.style == null )
    {
        return;
    }

    g_prdfwc_focused_elements_background_color = Element.getStyle(this, 'background-color');

    var styles = {};
    styles['background-color'] = g_prdfwc_focused_background_color;
    Element.setStyle(this,styles);
}

function prdfwc_set_control_blur()
{
    if ( g_prdfwc_focused_elements_background_color != null )
    {
        this.style.backgroundColor = g_prdfwc_focused_elements_background_color;
    }
    g_prdfwc_focused_elements_background_color = null;
}


/*
 *  Control of Submit of forms.
 */
var g_prdfwc_is_form_submit = false;

function prdfwc_judge_form_submited()
{
    if ( g_prdfwc_is_form_submit )
    {
        return( false );
    }

    g_prdfwc_is_form_submit = true;
    return( true );
}