var startup_open_table = true;
var comparison_open = false;
var cmp_modellek;
var list;
var already_voted = false;
Event.observe( window, 'load', function() 
{
    if( typeof list_count != 'undefined' && !list_count && $( 'sajatlista' ) ) $( 'sajatlista' ).removeClassName( 'closed' );
    if( $( 'listaba_top' ) != null ) $( 'listaba_top' ).disable();
    if( $( 'listaba_bottom' ) != null ) $( 'listaba_bottom' ).disable();
    if( $( 'slista' ) != null ) $( 'slista' ).hide();
    if( typeof marka_id != 'undefined' && marka_id != '' ) reload_selector( markanevek[ marka_id ] );
    else if( $( "tipus_lista" ) != null ) $( "tipus_lista" ).disable();
    $$( '.pager_div' ).each( function( element ) 
    {
        if( element.id != 'page' + current_page ) element.hide();
    } );
    if( $( "add_to_compare" ) != null ) $( "add_to_compare" ).observe( 'submit', function( event )
    {
        var id_array = ''
        event.stop();
        $$( "input[type='checkbox']" ).each( function( element )
        {
            if( element.checked && !element.disabled ) 
            {
                element.disable();
                Effect.Fade( $( 'tr_' + element.id ), { to: 0.5 } );
                var parts = element.id.split( '_' );
                id_array += modellek[ parts[ 0 ] ][ parts[ 1 ] ][ 'id' ] + '|';
                modellek[ parts[ 0 ] ][ parts[ 1 ] ][ 'in_the_list' ] = true;
                list_count++;
            }
        } );
        if( id_array != '' )
        {
            update_counter();
            Effect.ScrollTo( $( 'sajatlista' ) );
            $( 'sajatlista' ).removeClassName( 'open' ).addClassName( 'closed' );
            if( comparison_open )
            {
                comparison_open = false;
                Effect.SlideUp( 'slista', 
                {
                    queue: 'end',
                    afterFinish: function()
                    {
                        new Ajax.Request( host_site_url + 'adatok/', 
                        {
                            parameters: 
                            {
                                op: 'add_to_compare',
                                ids: id_array.substring( 0, id_array.length -1 )
                            },
                            onSuccess: function( data )
                            {
                                cmp_modellek = eval( data.responseText );
                                toggle_comparison();
                            }
                        } );
                    } 
                } );
            }
            else
            {
                new Ajax.Request( host_site_url + 'adatok/', 
                {
                    parameters: 
                    {
                        op: 'add_to_compare',
                        ids: id_array.substring( 0, id_array.length -1 )
                    },
                    onSuccess: function( data )
                    {
                        cmp_modellek = eval( data.responseText ); 
                        toggle_comparison();
                    }
                } );
            }
            $( 'listaba_top' ).disable();
            $( 'listaba_bottom' ).disable();
        }
    } )
    $$( ".autolista_table" ).each( function( element ) 
    {
        element.table_status = 'closed';
        element.setStyle( { display: 'none' } );
    } );
    $$( "input[type='text']" ).each( function( element )
    {
        element.original_value = element.getValue();
        element.observe( 'blur', function() 
        {
            if( element.getValue() == '' ) element.setValue( element.original_value );
        } );
    } );
} );
function watch_me( obj ) 
{
    obj.ancestors().each( function( elem ) 
    {
        if( elem.tagName == 'TR' )
        {
            if( elem.hasClassName( 'selected' ) ) elem.removeClassName( 'selected' );
            else elem.addClassName( 'selected' );
        } 
    } );
}
function reload_selector( marka )
{   
    if( $( "tipus_lista" ).enabled ) $( "tipus_lista" ).disable();
    new Ajax.Request( host_site_url + 'autok/' + marka + "tipusok/", 
    { 
        onSuccess: function( data ) 
        {
            var str = '';
            var id = '';
            html_list = '                                        <option value="">Típus</option>';
            list = eval( data.responseText );
            list.each( function( item )
            {
                if( tipus == item[ 'name' ] )
                {
                    str = ' SELECTED';
                    tipus_nev = item[ 'cim' ];
                }
                else str = ''; 
                html_list += '                                        <option value="' + item[ 'name' ] + '"' + str + '>' + item[ 'cim' ] + '</option>\n';
            } );
            $( "tipus_lista" ).innerHTML = html_list;
            $( "tipus_lista" ).enable();
            if( tipus_id > 0 && startup_open_table )
            {
                for( _id in modellek )
                {
                    modellek[ _id ].each( function( item )
                    {
                        if( item[ 'marka_id' ] == marka_id && item[ 'tipus_id' ] == tipus_id ) id = item[ 'markanev' ] + ' ' + item[ 'tipusnev' ]; 
                    } );
                }
                filter_table( id );
                startup_open_table = false;
            }
        } 
    } );
}
function toggle_comparison()
{
    if( comparison_open )
    {
        Effect.SlideUp( 'slista', { queue: 'end' } );
        $( 'sajatlista' ).removeClassName( 'open' );
        if( list_count ) $( 'sajatlista' ).addClassName( 'closed' );
        comparison_open = false;
    }
    else 
    {
        if( typeof cmp_modellek == 'undefined' )
        {
            new Ajax.Request( host_site_url + 'adatok/', 
            {
                parameters: 
                {
                    op: 'add_to_compare'
                },
                onSuccess: function( data )
                {
                    cmp_modellek = eval( data.responseText );
                    if( typeof cmp_modellek != 'undefined' ) toggle_comparison();
                }
            } );
        }       
        else
        { 
            if( list_count )
            {
                var list_class = 'odd';
                var html = '';
                var o_id;
                for( i = 0; len = cmp_modellek.length, i < len; i++ )
                {
                    o_id = getid( cmp_modellek[ i ][ 'id' ] );
                    html += '<tr id="list_' + ( o_id ? o_id : cmp_modellek[ i ][ 'markanev' ] + '_' + cmp_modellek[ i ][ 'tipusnev' ] ) + '" class="' + list_class + '">\n' +
                            '    <td class="modell"><a href="' + host_site_url + 'autok/' + cmp_modellek[ i ][ 'path' ] + '" id="modal_' + cmp_modellek[ i ][ 'id' ] + '" class="modal_popup">' + cmp_modellek[ i ][ 'rovid_cim' ] + '<br/>' + cmp_modellek[ i ][ 'markanev' ] + ' ' + cmp_modellek[ i ][ 'tipusnev' ] + '</a></td>\n' +
                            '    <td class="build">' + cmp_modellek[ i ][ 'felepites' ] + '</td>\n' +
                            '    <td class="engine">' + cmp_modellek[ i ][ 'motor' ] + '</td>\n' +
                            '    <td class="transm">' + cmp_modellek[ i ][ 'sebessegvalto' ] + '</td>\n' +
                            '    <td class="price">' + cmp_modellek[ i ][ 'ar' ] + ' Ft</td>\n' +
                            '    <td class="del"><a href="#" title="Törlés a listából" onClick="remove_from_list( \'' + ( o_id ? o_id : cmp_modellek[ i ][ 'markanev' ] + '_' + cmp_modellek[ i ][ 'tipusnev' ] ) + '\' ); return false;"><span>Törlés a listából</span></a></td>\n' +
                            '</tr>\n';
                    list_class = ( list_class == 'odd' ) ? 'even' : 'odd'; 
                }
                $( 'slista' ).update( html + '<tr>\n' +
                                             '    <td colspan="6" class="slista_footer">\n' +
                                             '        <a href="#" onClick="empty_list(); return false;">összes törlése</a>\n' +
                                             '        <input type="submit" value="Hasonlítsuk össze ezeket" />\n' +
                                             '    </td>\n' +
                                             '</tr>\n' );
                Effect.SlideDown( 'slista', 
                {
                    queue: 'end',
                    beforeSetup: function()
                    {
                        $( this ).scaleMode.originalHeight = ( $( 'slista' ).getHeight() - 31 ) * 56 / 41 + 32; 
                    },
                    afterFinish: function()
                    {
                        $$( '.modal_popup').each( function( element ) 
                        {
                            new Control.Modal( element, { overlayCloseOnClick: false } );
                        } );
                    }
                } );
                $( 'sajatlista' ).removeClassName( 'closed' ).addClassName( 'open' );
                comparison_open = true;
            }
        }
    }
}
function default_list()
{
    $( "tipus_lista" ).innerHTML = '                                        <option value="">Típus</option>';
    $( "tipus_lista" ).disable();
}
function filter_table( id )
{
    var filter_build = $( id + '_build' ).getValue();
    var filter_engine = $( id + '_engine' ).getValue();
    var html = '<table class="autolista" cellpadding="0" cellspacing="0" border="0">\n' +
               '    <tr class="info">\n' +
               '    <td class="modell">Modell</td>\n' +
               '    <td class="build" title="Felépítés">Felép.</td>\n' +
               '    <td class="engine">Motor</td>\n' +
               '    <td class="output" title="Teljesítmény">Telj.</td>\n' +
               '    <td class="torque" title="Nyomaték">Nyom.</td>\n' +
               '    <td class="transm">Váltó</td>\n' +
               '    <td class="avg" title="Átlagfogyasztás (l/100 km)">Fogy.</td>\n' +
               '    <td class="price">Ár</td>\n' +
               '    <td class="check">&nbsp;</td>\n' +
               '</tr>\n';
    var line_class = 'odd';
    var additional_class = '';
    var checked = ''; 
    var enable;
    var line_count = 0;
    for( i = 0; len = modellek[ id ].length, i < len; i++ )
    {
        enable = true;
        if( filter_build != '' ) { enable = ( filter_build == modellek[ id ][ i ][ 'felepites' ] ) }
        if( filter_engine != '' && enable ) { enable = ( filter_engine == modellek[ id ][ i ][ 'hengerurtartalom_liter' ] ) }
        if( enable )
        { 
            if( modellek[ id ][ i ][ 'in_the_list' ] )
            {
                additional_class = ' in_the_list selected';
                checked = ' CHECKED';
            }
            else additional_class = checked = ''; 
            html += '<tr id="tr_' + id + '_' + i + '" class="' + line_class + additional_class + '">\n' + 
                    '    <td class="modell">\n' +
                    '        <a href="' + host_site_url + 'autok/' + modellek[ id ][ i ][ 'path' ] + '" id="modal_' + modellek[ id ][ i ][ 'id' ] + '" class="modal_popup">' + modellek[ id ][ i ][ 'rovid_cim' ] + '</a>\n' +
                    ( modellek[id][i][ 'linkids' ] ? 
                    '        <span class="kapcs" title="Ehhez a modellhez van saját anyagunk">&nbsp;</span>\n' : '' ) +
                    '    </td>\n' +
                    '    <td class="build">' + modellek[ id ][ i ][ 'felepites' ] + '</td>\n' +
                    '    <td class="engine">' + modellek[ id ][ i ][ 'motor' ] + '</td>\n' +
                    '    <td class="output">' + modellek[ id ][ i ][ 'teljesitmeny' ] + ' Le</td>\n' +
                    '    <td class="torque">' + modellek[ id ][ i ][ 'nyomatek' ] + ' Nm</td>\n' +
                    '    <td class="transm">' + modellek[ id ][ i ][ 'sebessegvalto' ] + '</td>\n' +
                    '    <td class="avg">' + modellek[ id ][ i ][ 'kombinalt_fogyasztas' ] + ' l</td>\n' +
                    '    <td class="price">' + modellek[ id ][ i ][ 'ar' ] + ' Ft</td>\n' +
                    '    <td class="check"><input type="checkbox" onClick="watch_me( this );" id="' + id + '_' + i + '"' + checked + '/></td>\n' +
                    '</tr>\n';
            line_class = ( line_class == 'odd' ) ? 'even' : 'odd';
            line_count++;
        } 
    }
    html += '</table>';
    $( 'listanyito_' + id ).removeClassName( 'open' ).addClassName( 'close' );
    if( $( id ).table_status == 'open' ) 
    {
        $( id ).table_status = 'closed';
        new Effect.SlideUp( $( id ), { queue: 'end', afterFinish: function() { $( id ).update( html ); } } );
    }
    else $( id ).update( html );
    if( line_count )
    {
        new Effect.SlideDown( $( id ), 
        {
            beforeSetup: function()
            {
                $( this ).scaleMode.originalHeight = $( id ).getHeight(); 
            },
            queue: 'end',
            afterFinish: function() 
            {
                $$( "input[type='checkbox']" ).each( function( element ) 
                { 
                    var parts = element.id.split( '_' ); 
                    if( modellek[ parts[ 0 ] ][ parts[ 1 ] ][ 'in_the_list' ] ) element.disable();
                    element.observe( 'click', function( event )
                    {
                        var checked = 0;
                        $$( "input[type='checkbox']" ).each( function( elem ) 
                        { 
                            if( elem.checked && !elem.disabled ) checked++;                   
                        } );
                        if( checked )
                        {
                            $( 'listaba_top' ).enable();
                            $( 'listaba_bottom' ).enable();
                        }
                        else
                        {
                            $( 'listaba_top' ).disable();
                            $( 'listaba_bottom' ).disable();
                        }
                    } ); 
                } ); 
            } 
        } );
        $( id ).table_status = 'open';
        $$( '.modal_popup').each( function( element ) 
        {
            new Control.Modal( element, { overlayCloseOnClick: false } );
        } );
    }
}
function open_table( id )
{
    Effect.SlideDown( $( id ) );
    $( id ).table_status = 'open';
    $( 'listanyito_' + id ).removeClassName( 'open' ).addClassName( 'close' );
}
function close_table( id )
{
    Effect.SlideUp( $( id ) );
    $( id ).table_status = 'closed';
    $( 'listanyito_' + id ).removeClassName( 'close' ).addClassName( 'open' );
}
function toggle_table( id )
{
    if( $( id ).table_status == 'closed' ) filter_table( id );
    else close_table( id ); 
}
function remove_from_list( id )
{
    list_count--;
    Effect.Fade( 'list_' + id, 
    {
        afterFinish: function() 
        {
            if( !list_count ) toggle_comparison();
            else check_comparison_lines(); 
        }
    } );
    var parts = id.split( '_' );
    update_counter();
    if( typeof modellek[ parts[ 0 ] ] != 'undefined' ) modellek[ parts[ 0 ] ][ parts[ 1 ] ][ 'in_the_list' ] = false;
    if( $( 'tr_' + id ) != null ) 
    {
        Effect.Appear( $( 'tr_' + id ), 
        {
            queue: 'end', 
            from: 0.5, 
            to: 1.0,
            id: id,
            afterFinish: function()
            {
                $( id ).enable();
                $( id ).checked = false;
                $( 'tr_' + id ).removeClassName( 'selected' );
                $( 'tr_' + id ).removeClassName( 'in_the_list' );
            } 
        } );
    }
    new Ajax.Request( host_site_url + 'adatok/', 
    {
        parameters: 
        {
            op: 'remove_from_list', 
            id: ( typeof modellek[ parts[ 0 ] ] != 'undefined' ? modellek[ parts[ 0 ] ][ parts[ 1 ] ][ 'id' ] : cmp_getid( parts[ 0 ] + parts[ 1 ] ) ) 
        },
        onSuccess: function( data )
        {
            cmp_modellek = eval( data.responseText );
        }
    } );
}
function empty_list()
{
    var key = '';
    new Ajax.Request( host_site_url + 'adatok/', { parameters: { op: 'empty_list' } } );
    for( id in modellek ) 
    {
        for( i = 0; len = modellek[ id ].length, i < len; i++ ) 
        {
            if( modellek[ id ][ i ][ 'in_the_list' ] )
            {
                key = id + '_' + i;
                if( $( 'tr_' + key ) != null ) 
                {
                    Effect.Appear( $( 'tr_' + key ), 
                    {
                        from: 0.5, 
                        to: 1.0,
                        id: key, 
                        afterFinish: function()
                        {
                            $( $( this ).id ).enable();
                            $( $( this ).id ).checked = false;
                            $( 'tr_' + $( this ).id ).removeClassName( 'selected' );
                            $( 'tr_' + $( this ).id ).removeClassName( 'in_the_list' );
                        } 
                    } );
                }
                modellek[ id ][ i ][ 'in_the_list' ] = false;
            }
        }
    }
    cmp_modellek = new Array();
    list_count = 0;
    update_counter();
    toggle_comparison();
}
function update_counter()
{
    $( 'comparison_counter' ).update( ( list_count ) ? '(' + list_count + ' autó van benne)' : '(üres)' );
}
function next_page()
{
    if( $( 'page' + ( 1 * current_page + 1 ) ) != null ) switch_page( 1 * current_page + 1 );
}
function prev_page()
{
    if( $( 'page' + ( current_page - 1 ) ) != null ) switch_page( current_page - 1 );
}
function switch_page( switch_to )
{
    if( pages > 14 )
    {
        var pager = new Array();
        var str;
        var start_on;
        var end_on;
        
        start_on = switch_to - 7 > 0 ? switch_to - 7 : 0;
        start_on = start_on > pages - 14 ? pages - 14 : start_on;
        for( i = 0; i < 14; i++ )
        {
            if( i + start_on == switch_to ) str = ' class="actual"';
            else str = ''; 
            pager[ i ] = '<a href="#"' + str + ' id="page_selector_' + ( i + start_on ) + '" onClick="switch_page( \'' + ( i + start_on ) + '\' ); return false;">' + ( i + start_on + 1 ) + '</a>';
            
        }
        if( start_on ) 
        {
            pager[ 0 ] = '<a href="#" id="page_selector_0" onClick="switch_page( \'0\' ); return false;">1</a>'; 
            pager[ 1 ] = '...';
        }
        if( ( 1 * switch_to + 6 ) < pages )
        {
            pager[ 12 ] = '...';
            pager[ 13 ] = '<a href="#" id="page_selector_' + ( pages - 1 ) + '" onClick="switch_page( \'' + ( pages - 1 ) + '\' ); return false;">' + pages + '</a>';
        }
        $( 'pages_top' ).update( pager.implode( ' | ' ) );
        $( 'pages_bottom' ).update( pager.implode( ' | ' ) );
    }
    else
    {
        $( 'page_selector_' + current_page ).removeClassName( 'actual' );
        $( 'page_selector_' + switch_to ).addClassName( 'actual' );
        $( 'page_selector_' + current_page + '_bottom' ).removeClassName( 'actual' );
        $( 'page_selector_' + switch_to + '_bottom' ).addClassName( 'actual' );
    }
    Effect.Fade( $( 'page' + current_page ), 
    {
        duration: 0.3,
        queue: 'end',
        afterFinish: function() 
        {
            Effect.Appear( $( 'page' + switch_to ), 
            {
                duration: 0.3,
                queue: 'end'
            } );
        }
    } );
    current_page = switch_to;
    Effect.ScrollTo( $( "content" ) );
}
function getid( id )
{
    if( modellek != 0 )
    {
        for( _id in modellek )
        {
            for( _i = 0; len = modellek[ _id ].length, _i < len; _i++ )
            {
                if( modellek[ _id ][ _i ][ 'id' ] == id ) return _id + '_' + _i;
            }
        }
    }
    return false;
}
function cmp_getid( id )
{
    for( _i = 0; len = cmp_modellek.length, _i < len; _i++ )
    {
        if( cmp_modellek[ _i ][ 'markanev' ] + cmp_modellek[ _i ][ 'tipusnev' ] == id ) return cmp_modellek[ _i ][ 'id' ];
    }
}
function check_comparison_lines()
{
    var list_class = 'odd';
    $( 'slista' ).descendants().each( function( element )
    {
        if( element.tagName == 'TR' && element.getStyle( 'display' ) != 'none' )
        {
            element.addClassName( list_class );
            list_class = list_class == 'odd' ? 'even' : 'odd';
            element.removeClassName( list_class );
        }
    } );
}
function nepitelet_vote( vote, anyag_id )
{
    if( !already_voted && anyag_id )
    {
        already_voted = true;
        new Ajax.Request( document.location.href.replace( /#/g, '' ),
        {
            parameters:
            {
                op: 'vote_nepitelet',
                szavazat: vote,
                anyag_id: anyag_id
            },
            onSuccess: function( data )
            {
                ertekelesek += 1;
                var html = '';
                for( i = 0; i < vote; i++ ) html += "<span class=\"active\"><a href=\"#\" class=\"no_vote\" onClick=\"return false;\"></a>\n";
                for( i = 0; len = 5 - vote, i < len; i++ ) html += "<span class=\"voted\"><a href=\"#\" class=\"no_vote\" onClick=\"return false;\"></a>\n";
                html += '</span></span></span></span></span>';
                $( 'main_rating_stars' ).update( html );
                if( rating == 0 ) rating = vote + ',0';
                else
                {
                    rating = Math.round( ( rating * 1 + vote ) / ertekelesek * 10 );
                    if( rating % 10 ) rating = ( rating / 10 ).toString().replace(/\./g, ',' );
                    else rating = ( rating / 10 ) + ',0';
                }
                $( 'main_rating' ).update( '<span>' + rating + '</span>(' + ertekelesek + ' db)' );
            }
        } );
    }
}
