var page_loaded = false;
var last_results = null;
var current_order;
var current_page = 0;
var page = 0;
var order_by = '';
var readable = { teszt: 'Teszt',
                 bemutato: 'Bemutató',
                 hasznaltteszt: 'Használtteszt',
                 veteran: 'Veterán',
                 felszerelesteszt: 'Felszerelésteszt',
                 all: 'all' }
var lines = 50;
var tores_lines = 15;
function get_readable( cat )
{
    var retval;
    for( _i in readable )
    {
        if( readable[ _i ] == cat ) retval = _i;
    }
    return retval;
}
function brand( id, path )
{
    $$( ".brand_selected" ).each( function( element ) { element.removeClassName( 'brand_selected' ) } );
    $( "brand" + id ).removeClassName( 'brand' ).addClassName( 'brand_selected' );
    if( id > 0) brand_filter = path;
    else brand_filter = '';
    show_list();
}
function test( id ) 
{
    $$( ".selected" ).each( function( element ) { element.removeClassName( 'selected' ) } );
    if( $( get_readable( id ) ) != null ) $( get_readable( id ) ).addClassName( 'selected' );
    if( id != "all" ) test_filter = id;
    else test_filter = '';
    show_list();    
}
function orderby( id )
{
    current_order = id;
    if( id == order_by )
    {
        order_by = '';
        last_results.sort( r_sortby );
    }
    else
    {
        order_by = id;
        last_results.sort( sortby );
    }
    true_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 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()
{
    var url;
    url = url_base + 'motorok/' + brand_filter + '/tesztek/' + test_filter;
    $( "results" ).innerHTML = 'Loading...';
    new Ajax.Request( url, 
    {
        method: 'get',
        parameters: { noauth: 'true' },
        onSuccess: function( data ) 
        {
            if( data.status != 200 ) show_list();
            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( results[ i ][ 'kategs' ][ j ], results[ i ][ 'kategs' ][ j ] );
                    } 
                }
                markak = new Array();
                for( j in results[ i ][ 'tipus' ] )
                {
                   markak.push( 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'] };
                i++;
            }
            orderby( order_by == '' ? 'dte' : order_by );
            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 ] != '' ) type = type + ' <a href="#" onClick="test( \'' + results[ i ][ 'cat' ][ j ][ 1 ] + '\' );">' + results[ i ][ 'cat' ][ j ][ 0 ] + '</a>';  
            temp_html += '<tr class="' + list_class + '">\n' +
                         '<td class="cim_modell"><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">&nbsp;\n' +
                    '<a id="next_page" href="#" title="Következő oldal" onclick="page_next(); return false;"><span>következő</span></a>\n' +
                    '</div>\n';
    var prev_page = '<div class="pagers prev">\n' +
                    '<a id="prev_page" href="#" title="Előző oldal" onclick="page_prev(); return false;"><span>előző</span></a>\n' +
                    '&nbsp;</div>\n';
    var pager     = '<div id="pages" class="pages">\n' +
                    '</div>';
    var html      = next_page + prev_page + pager;
    $( 'pager' ).update( html );
    update_pager();
}
function update_pager()
{
    var pages = new Array();
    var count = 15;
    if( page < 15 ) count = page;
    start_from = current_page > 7 ? ( current_page > page - 8 ? page - 15 : current_page - 7 ) : 0; 
    for( i = start_from; i < count + start_from; i++ )
    {
        if( current_page == i ) str = ' class="actual" onclick="';
        else str = ' onclick="switch_to( ' + i + ' );';
        pages[ i - start_from ] = '<a href="#"' + str + 'return false;">' + ( i + 1 ) + '</a>';
    }
    if( start_from )
    {
        pages[ 0 ] = '<a onclick="switch_to( 0 ); return false;">1</a>';
        pages[ 1 ] = '...';
    }
    if( page - 8 > current_page && page > 15 )
    {
        pages[ 13 ] = '...';
        pages[ 14 ] = '<a onclick="switch_to( ' + ( page - 1 )+ ' ); return false;">' + page + '</a>';
    }
    $( "pages" ).update( pages.implode( ' | ' ) );
    if( ( current_page + 1 ) == page ) Effect.Fade( 'next_page', { queue: 'end', duration: 0.3 } );
    if( current_page == 0 ) Effect.Fade( 'prev_page', { queue: 'end', duration: 0.3 } );
}
function switch_to( id )
{
    if( id != current_page )
    {
        Effect.Fade( 'page' + current_page, { queue: 'end', duration: 0.3 } );
        Effect.Appear( 'page' + id, { queue: 'end', duration: 0.3 } );
        current_page = id;
        if( current_page == 0 && $( 'prev_page' ).getStyle( 'display' ) != 'none' ) Effect.Fade( 'prev_page', { queue: 'end', duration: 0.3 } );  
        if( current_page != 0 && $( 'prev_page' ).getStyle( 'display' ) == 'none' ) Effect.Appear( 'prev_page', { queue: 'end', duration: 0.3 } );
        if( ( current_page + 1 ) == page && $( 'next_page' ).getStyle( 'display' ) != 'none') Effect.Fade( 'next_page', { queue: 'end', duration: 0.3 } );
        if( ( current_page + 1 ) != page && $( 'next_page' ).getStyle( 'display' ) == 'none') Effect.Appear( 'next_page', { queue: 'end', duration: 0.3 } );
        update_pager();
        Effect.ScrollTo( 'content', { queue: 'end', duration: 0.3 } );
    }
}
function page_prev()
{
    if( current_page > 0 ) switch_to( current_page - 1 );
}
function page_next()
{
    if( ( current_page + 1 ) < page ) switch_to( 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 + 'motorok//tesztek/tores/';
    new Ajax.Request( url,
    {
        method: 'get',
        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'] };
                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' +
                         '<a href="#"><img src="images/cikk/minikep_01.jpg" border="0" alt="" /></a>\n' +
                         '<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' );  
}
Event.observe( window, 'load', function()
{
    order_by = 'dte';
    if( typeof subtype == 'string' ) show_tores(); 
    else show_list();
} );
