var is_startup = true;
var current_page = 0;
var page_loaded = false;
var last_results = null;
var current_order;
var page = 0;
var order_by = '';
var readable = { ujauto: "Új autó",
                 hasznaltauto: "Használt autó",
                 cimlapra: "",
                 kekzoldauto: "Kék-zöld autó",
                 osszehasonlito: "Összehasonlító",
                 totalsar: "Totálsár",
                 veteran: "Veterán",
                 haszon: "Haszonjármű",
                 Bemutató: "Bemutató" }
var lines = 50;
var tores_lines = 15;
var categ = 'ad';
function brand( id, path )
{
    $$( ".brand_selected" ).each( function( element ) { element.removeClassName( 'brand_selected' ) } );
    if( id > 0)
    {
        brand_filter = path;
        $( "brand" + id ).removeClassName( 'brand' ).addClassName( 'brand_selected' );
    }
    else brand_filter = '';
    show_list();
}
function test( id ) 
{
    $$( ".selected" ).each( function( element ) { element.removeClassName( 'selected' ) } );
    if( $( id ) != null ) $( id ).addClassName( 'selected' );
    if( id != "all" ) test_filter = id;
    else test_filter = '';
    show_list();    
}
function orderby( id )
{
    class_name = 'nov';
    current_order = id;
    if( id == order_by )
    {
        order_by = '';
        last_results.sort( r_sortby );
        class_name = 'csok';
    }
    else
    {
        order_by = id;
        last_results.sort( sortby );
    }
    true_list( last_results );
    $$( '.nov' ).each( function( element ) { element.removeClassName( 'nov' ); } );
    $$( '.csok' ).each( function( element ) { element.removeClassName( 'csok' ); } );
    $( id ).addClassName( class_name );
/*
    if( $( id ).hasClassName( 'csok' ) ) $( id ).removeClassName( 'csok' );
    else if( $( id ).hasClassName( 'nov' ) ) $( id ).removeClassName( 'nov' );
    if( order_by == '' ) $( id ).addClassName( 'csok' );
    else $( id ).addClassName( 'nov' );  
*/
}
function sortby( a, b )
{
    var x = a[ current_order ];
    var y = b[ current_order ];
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function r_sortby( a, b )
{
    var x = b[ current_order ];
    var y = a[ current_order ];
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
function show_list( url )
{
    if( typeof url == 'undefined' ) url = url_base + 'autok/' + brand_filter + '/tesztek/' + test_filter;
    $( "results" ).innerHTML = 'Loading...';
    new Ajax.Request( url, 
    {
        method: 'get',
        parameters: { noauth: 'true' },
        onSuccess: function( data ) 
        {
            var temp_html = ''
            var results = eval( data.responseText );
            last_results = new Array();
            var i = 0;
            while( typeof results[ i ] == "object" ) 
            {
                var kateg = new Array();
                var tipus = '';
                if( results[ i ][ 'kategs' ].length ) 
                {
                    for( j = 0; ln = results[ i ][ 'kategs' ].length, j < ln; j++ ) 
                    {
                        if( typeof results[ i ][ 'kategs' ][ j ] != 'undefined' ) kateg[ j ] = new Array( readable[ results[ i ][ 'kategs' ][ j ] ], results[ i ][ 'kategs' ][ j ] );
                    } 
                }

                markak = new Array();
                for( j in results[ i ][ 'tipus' ] )
                {
                   markak.push( j + ' ' + results[ i ][ 'tipus' ][ j ].implode( '| ' ) );
                }
                tipus = markak.implode( '; ' ).replace( /\|/g, ',' );

                last_results[ i ] = { cim: results[ i ]['cim'],
                                      typ: tipus,  
                                      url: results[ i ]['url'], 
                                      cat: kateg, 
                                      dte: results[ i ]['datum'],
                                      totalcar: results[ i ]['totalcar'],
                                      ite: results[ i ]['itelet'],
                                      ajk: results[ i ]['ajanlo_kep'],
                                      tmp: results[ i ]['template_params'] };
                i++;
            }
            order_by = 'dte';
            orderby( 'dte' );
            current_page = 0;
        } 
    } );
}
function true_list( results )
{
    var type = ''
    var ln = 0;
    if( results.length )
    {
        page = 0;
        temp_html = '';
        list_class = 'odd';
        for( i = 0, len = results.length; i < len; i++ )
        {
            if( !( i % lines ) )
            {
                if( i != 0 )
                {
                    temp_html += '</tbody>\n' +
                                 '</table>\n' +
                                 '</div>\n';
                }
                temp_html += '<div id="page' + page + '">\n' +
                             '<table class="itelet" cellpadding="0" cellspacing="0" border="0">\n' +
                             '<tbody>\n';
                page++;
            }
            type = '';
            for( j = 0, ln = results[ i ][ 'cat' ].length; j < ln; j++ ) if( results[ i ][ 'cat' ][ j ][ 1 ] != '' && results[ i ][ 'cat' ][ j ][ 0 ] !== undefined ) type = type + ' <a href="#" onclick="test( \'' + results[ i ][ 'cat' ][ j ][ 1 ] + '\' ); return false;">' + results[ i ][ 'cat' ][ j ][ 0 ] + '</a>';
            if ( results[ i ][ 'ajk' ] != '' ) { ajanlokep = '<a href="' + results[ i ]['url'] + '"><img border="0" alt="" src="' + results[ i ][ 'ajk' ] + '"/></a>'; }
            else if ( results[ i ][ 'tmp' ] != '' ) { ajanlokep = '<a href="' + results[ i ]['url'] + '"><img border="0" alt="" src="' + results[ i ][ 'tmp' ] + '"/></a>'; }
            else { ajanlokep = ''; }
            var evszam = results[ i ]['typ'].match( /\((19|20)(\d{2})\)/g );
            if( evszam != null ) results[ i ]['typ'] = results[ i ]['typ'].replace( /\((19|20)(\d{2})\)/g, '' ) + ' ' + evszam;
            temp_html += '<tr class="' + list_class + '">\n' +
                         '<td class="cim_modell">' + ajanlokep + '\n' +
                                                '<h3><a href="' + results[ i ]['url'] + '">' + results[ i ]['typ'] + '</a></h3>\n' +
                                                '<span>' + results[ i ]['cim'] + '</span></td>\n' +
                         '<td class="ido">' + results[ i ][ 'dte' ] + '</td>\n' +
                         '<td class="itelet"><span class="star star' + ( results[ i ]['ite'] == 10 ? 10 : '0' + results[ i ]['ite'] ) + '">&nbsp;</span>\n' +
                                            '<span class="star_tc star' + ( results[ i ]['totalcar'] == 10 ? 10 : '0' + results[ i ]['totalcar'] ) + '">&nbsp;</span></td>\n' +
                         '<td class="kategoria">' + type + '</td>\n' +
                         '</tr>\n';
            list_class = list_class == 'odd' ? 'even' : 'odd';
        }
        temp_html = temp_html + '</tbody>\n' +
                                '</table>\n' +
                                '</div>\n';
        $( "results" ).update( temp_html );
        for( i = 0; i < page; i++ )
        {
            if( i != current_page ) $( "page" + i ).hide();
        }
    }
    else $( "results" ).update( '<div id="not_found">Nincs találat!</div>' );
    create_default_pager(); 
}
function create_default_pager()
{
    var next_page = '<div class="pagers next">\n' +
                    '<a id="next_page" href="#" title="Következő oldal" onclick="next_page(); return false;">Következő oldal<span>&raquo;</span></a>\n' +
                    '</div>\n';
    var prev_page = '<div class="pagers prev">\n' +
                    '<a id="prev_page" href="#" title="Előző oldal" onclick="prev_page(); return false;"><span>&laquo;</span>Előző oldal</a>\n' +
                    '</div>\n';
    var pager     = '<div id="pager_numbers" class="pages">\n' +
                    '</div>';
    var html      = next_page + prev_page + pager;
    $( 'pager' ).update( html );
    update_pager( 0 );
}

// --------------

function update_pager( switch_to, force_reload )
{
    var cnt = 0;
    var html = '';
    var pager = new Array();
    var str;
    var start_on;
    var end_on;
    switch_to *= 1;
    if( typeof force_reload == 'undefined' ) force_reload = false;
    start_on = switch_to - 4 > 0 ? switch_to - 4 : 0;
    if( page > 9 ) start_on = start_on > page - 9 ? page - 9 : start_on;
    for( i = 0; i < ( page > 9 ? 9 : page ); i++ )
    {
        if( i + start_on == switch_to ) str = ' class="actual"';
        else str = '';
        pager[ i ] = '<a href="#"' + str + ' id="page_selector_' + ( i + start_on ) + '" onclick="update_pager( \'' + ( i + start_on ) + '\' ); return false;">' + ( i + start_on + 1 ) + '</a>';
    }
    if( start_on )
    {
        pager[ 0 ] = '<a href="#" id="page_selector_0" onclick="update_pager( \'0\' ); return false;">1</a>';
        pager[ 1 ] = '<span>...</span>';
    }
    if( ( 1 * switch_to + 6 ) < page )
    {
        pager[ 7 ] = '<span>...</span>';
        pager[ 8 ] = '<a href="#" id="page_selector_' + ( page - 1 ) + '" onclick="update_pager( \'' + ( page - 1 ) + '\' ); return false;">' + page + '</a>';
    }
    $( 'pager_numbers' ).update( pager.implode( '' ) );
    if( current_page != switch_to || force_reload )
    {
        if( $( 'page' + current_page ) )
        {
            Effect.Fade( 'page' + current_page,
            {
                queue: 'end',
                duration: 0.3
            } );
        }
        if( $( 'page' + switch_to ) ) Effect.Appear( 'page' + switch_to, { queue: 'end', duration: 0.3 } );
        current_page = switch_to;
    }
    if( !switch_to ) {
        var prevWidth = $('prev_page').getWidth();
        $('prev_page').up().setStyle({
            'width': prevWidth + 'px'
        });
        Effect.Fade( 'prev_page', { duration: 0.3 } );
    } else {
        Effect.Appear( 'prev_page', { duration: 0.3 } );
    }
    if( ( switch_to + 1 ) >= page ) {
        var nextWidth = $('next_page').getWidth();
        $('next_page').up().setStyle({
            'width': nextWidth + 'px'
        });
        Effect.Fade( 'next_page', { duration: 0.3 } );
    } else {
        Effect.Appear( 'next_page', { duration: 0.3 } );
    }
    if( !is_startup )
    {
        if( $( 'szukites' ) != null ) Effect.ScrollTo( 'szukites', { duration: 0.5 } );
        else Effect.ScrollTo( 'content', { duration: 0.5 } );
    }
    else is_startup = false;
}
function next_page()
{
    if( ( page - 1 ) > current_page ) update_pager( current_page + 1 );
}
function prev_page()
{
    if( current_page > 0 ) update_pager( current_page - 1 );
}

function show_tores()
{
    var table_start = '<table class="tores" cellpadding="0" cellspacing="0" border="0">\n' +
                      '<tbody>\n';
    var table_end   = '</tbody>\n' +
                      '</table>\n';
    url = url_base + 'autok//tesztek/tores/';
    new Ajax.Request( url,
    {
        method: 'get',
        parameters: { noauth: 'true' },
        onSuccess: function( data )
        {
            page_loaded = true;
            var temp_html = ''
            var results = eval( data.responseText );
            last_results = new Array();
            var i = 0;
            while( typeof results[ i ] == "object" ) 
            {
                last_results[ i ] = { cim: results[ i ]['cim'],
                                      url: results[ i ]['url'], 
                                      utk: results[ i ]['utkozes_vedelem'],
                                      gaz: results[ i ]['gazolas_riziko'],
                                      gye: results[ i ]['gyermek_vedelem'],
                                      ajk: results[ i ]['ajanlo_kep'],
                                      tmp: results[ i ]['template_params'] };
                i++;
            }
            toresorderby( order_by == '' ? 'cim' : order_by );
            current_page = 0;
        }
    } );
}
function create_tores_list( results )
{
    var type = ''
    var ln = 0;
    if( results.length )
    {
        page = 0;
        temp_html = '';
        list_class = 'odd';
        for( i = 0, len = results.length; i < len; i++ )
        {
            if( !( i % tores_lines ) )
            {
                if( i != 0 )
                {
                    temp_html += '</tbody>\n' +
                                 '</table>\n' +
                                 '</div>\n';
                }
                temp_html += '<div id="page' + page + '">\n' +
                             '<table class="tores" cellpadding="0" cellspacing="0" border="0">\n' +
                             '<tbody>\n';
                page++;
            }
            type = '';
            temp_html += '<tr class="' + list_class + '">\n' +
                         '<td class="cim_modell">\n';
            if( results[ i ][ 'ajk' ] != '' ) temp_html += '<a href="' + results[ i ][ 'url' ] + '"><img src="' + results[ i ][ 'ajk' ] + '" border="0" alt="" /></a>\n';
            else if( results[ i ][ 'tmp' ] != '' ) temp_html += '<a href="' + results[ i ][ 'url' ] + '"><img src="' + results[ i ][ 'tmp' ] + '" border="0" alt="" /></a>\n';
            temp_html += '<h3><a href="' + results[ i ][ 'url' ] + '">' + results[ i ][ 'cim' ] + '</a></h3>\n' +
                         '</td>\n' +
                         '<td class="frontalis">\n' +
                         '<span class="star_tt1 star' + ( results[ i ][ 'utk' ] == 10 ? 10 : '0' + results[ i ][ 'utk' ] * 1 ) + '" title="Frontális és oldalsó ütközésvédelem">&nbsp;</span>\n' +
                         '</td>\n' +
                         '<td class="gyerekb">\n' +
                         '<span class="star_tt2 star' + ( results[ i ][ 'gye' ] == 10 ? 10 : '0' + results[ i ][ 'gye' ] * 1 ) + '" title="Gyermekbiztonsági védelem">&nbsp;</span>\n' +
                         '</td>\n' +
                         '<td class="gazolas">\n' +
                         '<span class="star_tt3 star' + ( results[ i ][ 'gaz' ] == 10 ? 10 : '0' + results[ i ][ 'gaz' ] * 1 ) + '" title="Gázolási rizikófaktor">&nbsp;</span>\n' +
                         '</td>\n' +
                         '</tr>';
            list_class = list_class == 'odd' ? 'even' : 'odd';
        }
        temp_html = temp_html + '</tbody>\n' +
                                '</table>\n' +
                                '</div>\n';
        $( "tables" ).update( temp_html );
        for( i = 0; i < page; i++ )
        {
            if( i != current_page ) $( "page" + i ).hide();
        }
    }
    else $( "results" ).update( '<div id="not_found">Nincs találat!</div>' );
    create_default_pager(); 
}
function toresorderby( id )
{
    current_order = id;
    if( id == order_by )
    {
        order_by = '';
        last_results.sort( r_sortby );
    }
    else
    {
        order_by = id;
        last_results.sort( sortby );
    }
    create_tores_list( last_results );
    if( $( id ).hasClassName( 'csok' ) ) $( id ).removeClassName( 'csok' );  
    else if( $( id ).hasClassName( 'nov' ) ) $( id ).removeClassName( 'nov' );
    if( order_by == '' ) $( id ).addClassName( 'csok' );
    else $( id ).addClassName( 'nov' );  
}
function switch_alphabet( id )
{
    if( $( 'brand_container' ).getStyle( 'display' ) == 'none' )
    {
        Effect.SlideDown( 'brand_container', { queue: 'end', duration: 0.3 } );
        $$( '.szukites' ).each( function( element )
        {
            element.setStyle( { marginTop: '0px' } );
        } );        
    } 
    if( categ != id )
    {
        if( categ != 'all' ) Effect.Fade( categ, { duration: 0.5, queue: 'end' } );
        Effect.Appear( id, { duration: 0.5, queue: 'end' } );
        $( 'link_' + categ ).removeClassName( "aktiv" );
        $( 'link_' + id ).addClassName( "aktiv" );
        categ = id;
    }
}
function all_letter()
{
    Effect.Fade( categ, { duration: 0.3, queue: 'end' } );
    $( 'link_' + categ ).removeClassName( "aktiv" );
    $( 'link_all' ).addClassName( "aktiv" );
    if( $( 'brand_container' ).getStyle( 'display' ) != 'none' ) 
    {
        Effect.SlideUp( 'brand_container', { queue: 'end', duration: 0.3 } );
        $$( '.szukites' ).each( function( element )
        {
            element.setStyle( { marginTop: '10px' } );
        } );
    } 
    categ = 'all';
    brand( 'all' );
}
Event.observe( window, 'load', function()
{
    if( typeof subtype == 'string' ) show_tores(); 
    else
    {
        $$( ".alphabet" ).each( function( element ) { if( element.id != categ ) element.hide(); } );
        show_list();
    }
} );
