var date_interval_selector;


function dateIntervalSelector()
{

    this.autoBindAllFields= function()
    {
        var all_fields= document.getElementsByTagName( 'input' );

        for( var itr= 0; itr < all_fields.length; itr++ )
        {
            if( ( all_fields[ itr ].type == "text" ) && ( all_fields[ itr ].id ) && ( all_fields[ itr ].id.substr( 0, 21 ) == "period_left_boundary_" ) )
            {
                var field_id= all_fields[ itr ].id.substr( 21 );
                this.bindDatePeriodSelector( "period_left_boundary_"+field_id, "period_right_boundary_"+field_id );

            }
        }



    }

    this.bindDatePeriodSelector= function( left_boundary_selector, right_boundary_selector )
    {
        $("#"+left_boundary_selector).datepicker( {
            dateFormat: 'dd.mm.yy',
            minDate: this.min_date,
            dayNames: lang.dayNames,
            dayNamesMin: lang.dayNameAbbreviations,
            monthNames: lang.monthNames,
            firstDay: lang.firstDayOfTheWeek,
            onSelect: function( old_date )
                {
                var new_date= new Date();
                var slices= old_date.split( '.' );
                
                if( slices[ 1 ][ 0 ] == '0' )
                    slices[ 1 ]= slices[ 1 ][ 1 ];

                new_date.setFullYear( parseInt( slices[ 2 ] ), parseInt( slices[ 1 ] )-1, parseInt( slices[ 0 ] ) );

                new_date.setDate( new_date.getDate()+1 );

                $('#'+right_boundary_selector ).datepicker('option', 'minDate', new_date );
                }
            });

        $('#'+right_boundary_selector ).datepicker( {
            dateFormat: 'dd.mm.yy',
            minDate: this.min_date,
            dayNames: lang.dayNames,
            dayNamesMin: lang.dayNameAbbreviations,
            monthNames: lang.monthNames,
            firstDay: lang.firstDayOfTheWeek,
            onSelect: function( old_date )
                {
                    var new_date= new Date();

                    var slices= old_date.split( '.' );

                    if( slices[ 1 ][ 0 ] == '0' )
                        slices[ 1 ]= slices[ 1 ][ 1 ];

            
                    new_date.setFullYear( parseInt( slices[ 2 ] ), parseInt( slices[ 1 ] )-1, parseInt( slices[ 0 ] ) );

                    new_date.setDate( new_date.getDate()-1 );

                    $("#"+left_boundary_selector).datepicker('option', 'maxDate', new_date );

                }
        });
    }


    return this;
}


function initDateIntervalSelector()
{
    date_interval_selector= new dateIntervalSelector();
    date_interval_selector.autoBindAllFields();
}


runOnLoad( initDateIntervalSelector );