Skip to content
Snippets Groups Projects
script.js 41.4 KiB
Newer Older
TonyFord's avatar
TonyFord committed
---
---
TonyFord's avatar
TonyFord committed
const DAY=24*3600*1000;

var Grps=[];

Tony Ford's avatar
Tony Ford committed
var _e = (el) => ( document.createElement(el) );

var TTTT = [];
TonyFord's avatar
TonyFord committed
function calculatePartien(saison,date){

  $('#partien').append('<h2 class="saison s_'+saison+'">Saison '+saison+'</h2>');

Tony Ford's avatar
Tony Ford committed
  // #######################################################################
  // Erstelle Partien der Runde 1 ( Hauptrunde ) / Spiel Jeder gegen Jeden
  var runde=1;
TonyFord's avatar
TonyFord committed

  date=new Date(date).getTime();
TonyFord's avatar
TonyFord committed
  var steps=0;
Tony Ford's avatar
Tony Ford committed
  var done=[];

  // stelle Gruppen zusammen
  STARTLISTE.forEach(
    function(g){
      var G=[];
      g.forEach(
        function(v){
Tony Ford's avatar
Tony Ford committed
            //G.push( TEAMS.filter( (a) => (a.nt == v) )[0] );
            G.push( TEAMS.filter( (a) => (a.nt == v) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] ); 
TonyFord's avatar
TonyFord committed
        }
      );
Tony Ford's avatar
Tony Ford committed
      Grps.push(G);
TonyFord's avatar
TonyFord committed
    }
Tony Ford's avatar
Tony Ford committed
  );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  var h3= _e('h3');
  h3.classList = 'runde s_'+saison+' r_'+runde;
  h3.innerHTML = 'Runde '+runde+ ' (Hauptrunde)';
  $('#partien').append(h3);
  
  // erzeuge die Partien und prüfe, ob diese bereits gespielt wurden
  STARTLISTE_PARTIEN.forEach(
    function(v,i){
      done.push( grpPartien(date,steps,saison,runde,i+1,v.slice(1)) ); steps+=v[0];
    }
  );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  var AFdone = false;
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  // ##################################################################################
  // Erstelle Viertelfinale ( Finalrunde ) / KO-Spiele
  if( FINALTEAMS == 8 ){
    if( done.reduce( (a,b) => a && b ) == true ){
      var Tabelle = calculatePunktestand( saison, runde, false );
    } else {
      var Tabelle = [];
      STARTLISTE.forEach(
        function(w,g){
          for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){
Tony Ford's avatar
Tony Ford committed
            Tabelle.push( [
Tony Ford's avatar
Tony Ford committed
              {
                'kontinent' : 'dummy',
                'nt': 'xx',
                'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>',
                'link': '',
                'manager': 'dummy',
                'start': 27
              }
Tony Ford's avatar
Tony Ford committed
            , undefined ]);
Tony Ford's avatar
Tony Ford committed
          }
TonyFord's avatar
TonyFord committed
        }
      );
Tony Ford's avatar
Tony Ford committed
    }
  } else if ( FINALTEAMS > 8 ){
    if( AFdone ){
TonyFord's avatar
TonyFord committed
    } else {
Tony Ford's avatar
Tony Ford committed
      var Tabelle = [];
      [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16].forEach(
        function(i){
Tony Ford's avatar
Tony Ford committed
          Tabelle.push( [
Tony Ford's avatar
Tony Ford committed
            {
              'kontinent' : 'dummy',
              'nt': 'xx',
              'name': '<i>AF ' + (i) + '</i>',
              'link': '',
              'manager': 'dummy',
              'start': 27
            }
Tony Ford's avatar
Tony Ford committed
          , undefined ] );
Tony Ford's avatar
Tony Ford committed
        }
      );
TonyFord's avatar
TonyFord committed
    }
  }
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  if( FINALTEAMS >= 8 ){
    Grps = [];
    Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() , Tabelle.shift() , Tabelle.shift() , Tabelle.shift() ] );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    runde='VF';
Tony Ford's avatar
Tony Ford committed
    var h3 = _e('h3');
    h3.classList = 'runde s_'+saison+' r_'+runde;
    h3.innerText = 'Viertelfinale';
    $('#partien').append(h3);
TonyFord's avatar
TonyFord committed
    steps+=FINALS_STEP;
Tony Ford's avatar
Tony Ford committed
    var done = [];
TonyFord's avatar
TonyFord committed
    done.push( grpPartien( date,steps,saison,runde, 1, [ 8,1, 7,2, 6,3, 5,4 ] ) );
Tony Ford's avatar
Tony Ford committed
    if( done[0].filter((a) => (a == false )).length == 0 ){
      var VFdone = true;
      var Tabelle = done[0];
    } 
  }
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  // ##################################################################################
  // Erstelle Halbfinale ( Finalrunde ) / KO-Spiele
  if( FINALTEAMS == 4 ){
TonyFord's avatar
TonyFord committed
    if( done.reduce( (a,b) => a && b ) == true ){
Tony Ford's avatar
Tony Ford committed
      var Tabelle = calculatePunktestand( saison, runde, false );
TonyFord's avatar
TonyFord committed
    } else {
Tony Ford's avatar
Tony Ford committed
      var Tabelle = [];
      STARTLISTE.forEach(
        function(w,g){
          for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){
Tony Ford's avatar
Tony Ford committed
            Tabelle.push( [
Tony Ford's avatar
Tony Ford committed
              {
                'kontinent' : 'dummy',
                'nt': 'xx',
                'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>',
                'link': '',
                'manager': 'dummy',
                'start': 27
              }
Tony Ford's avatar
Tony Ford committed
            ,undefined ]);
Tony Ford's avatar
Tony Ford committed
          }
TonyFord's avatar
TonyFord committed
        }
Tony Ford's avatar
Tony Ford committed
      );
    }
  } else if ( FINALTEAMS > 4 ){
Tony Ford's avatar
Tony Ford committed
    
Tony Ford's avatar
Tony Ford committed
    if( VFdone ){
    } else {
      var Tabelle = [];
      [1,2,3,4,5,6,7,8].forEach(
        function(i){
Tony Ford's avatar
Tony Ford committed
          Tabelle.push([
Tony Ford's avatar
Tony Ford committed
            {
              'kontinent' : 'dummy',
              'nt': 'xx',
              'name': '<i>VF ' + (i) + '</i>',
              'link': '',
              'manager': 'dummy',
              'start': 27
            }
Tony Ford's avatar
Tony Ford committed
          ,undefined ] );
Tony Ford's avatar
Tony Ford committed
        }
      );
TonyFord's avatar
TonyFord committed
    }
  }

Tony Ford's avatar
Tony Ford committed
  if( FINALTEAMS >= 4 ){
    Grps = [];
    Grps.push( [ Tabelle.shift(), Tabelle.shift(), Tabelle.shift(), Tabelle.shift() ] );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
    runde='HF';
    var h3 = _e('h3');
    h3.classList = 'runde s_'+saison+' r_'+runde;
    h3.innerText = 'Halbfinale';
    $('#partien').append(h3);
TonyFord's avatar
TonyFord committed
    steps+=FINALS_STEP;
Tony Ford's avatar
Tony Ford committed
    var done = [];
TonyFord's avatar
TonyFord committed
    done.push( grpPartien( date,steps,saison,runde, 1, [ 1,4, 2,3 ] ) );
Tony Ford's avatar
Tony Ford committed
    if( done[0].filter((a) => (a == false )).length == 0 ){
      var HFdone = true;
      var Tabelle = done[0];
    } 
TonyFord's avatar
TonyFord committed
  }
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  // ##################################################################################
  // Erstelle Finale ( Finalrunde ) / KO-Spiele
  if( FINALTEAMS == 2 ){
    if( done.reduce( (a,b) => a && b ) == true ){
      var Tabelle = calculatePunktestand( saison, runde, false );
    } else {
      var Tabelle = [];
      STARTLISTE.forEach(
        function(w,g){
          for( var i = 0; i < FINALTEAMS / STARTLISTE.length; i++ ){
Tony Ford's avatar
Tony Ford committed
            Tabelle.push([
Tony Ford's avatar
Tony Ford committed
              {
                'kontinent' : 'dummy',
                'nt': 'xx',
                'name': '<i>Gruppe ' + (g+1) + '.'+ (i+1) + '</i>',
                'link': '',
                'manager': 'dummy',
                'start': 27
              }
Tony Ford's avatar
Tony Ford committed
            ,undefined ]);
Tony Ford's avatar
Tony Ford committed
          }
        }
      );
    }
  } else if ( FINALTEAMS > 2 ){
    if( HFdone ){
    } else {
      var Tabelle = [];
      [1,2].forEach(
        function(i){
Tony Ford's avatar
Tony Ford committed
          Tabelle.push([
Tony Ford's avatar
Tony Ford committed
            {
              'kontinent' : 'dummy',
              'nt': 'xx',
              'name': '<i>HF ' + (i) + '</i>',
              'link': '',
              'manager': 'dummy',
              'start': 27
            }
Tony Ford's avatar
Tony Ford committed
          ,undefined ]);
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  if( FINALTEAMS >= 2 ){
    Grps = [];
TonyFord's avatar
TonyFord committed
    Grps.push( [ Tabelle.shift(), Tabelle.shift() ] );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
    runde='F';
    var h3 = _e('h3');
    h3.classList = 'runde s_'+saison+' r_'+runde;
    h3.innerText = 'Finale';
    $('#partien').append(h3);
    steps+=FINALS_STEP;
    var done = [];
    done.push( grpPartien( date,steps,saison,runde, 1, [ 1,2 ] ) );
    if( done[0].filter((a) => (a == false )).length == 0 ){
      var Fdone = true;
      var Tabelle = done[0];
    } 
TonyFord's avatar
TonyFord committed
  }
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
}

TonyFord's avatar
TonyFord committed
var St=0;
Tony Ford's avatar
Tony Ford committed
var PARTIEN = [];
TonyFord's avatar
TonyFord committed
function grpPartien( date,steps,saison,runde,spieltag,Bg ){
TonyFord's avatar
TonyFord committed

  if( Grps.map( (a) => ( a.filter((b) => (b == undefined )).length > 0 ) )[0] ){
TonyFord's avatar
TonyFord committed
    alert( 'Error: Einige Teams existieren nicht in der DB' );
    return;
  }
Tony Ford's avatar
Tony Ford committed
  
  var done = ( runde == 'VF' || runde == 'HF' || runde == 'F' ) ? [] : false;

  var h4 = _e('h4');
  h4.classList = 'spieltag s_'+saison+' r_'+runde+' t_'+spieltag;
  h4.id = 'r'+runde+'st'+spieltag;
Tony Ford's avatar
Tony Ford committed
  //$(h4).attr( 'ondblclick', 'getCsv('+saison+',\''+runde+'\','+spieltag+')' );
  h4.innerHTML = '<a class="unformated" href="javascript:getCsv('+saison+',\''+runde+'\','+spieltag+')">Spieltag ' + spieltag + '</a>';
Tony Ford's avatar
Tony Ford committed
  $('#partien').append(h4);
  var tbl = _e('table');
  tbl.classList = 'partien s_'+saison+' r_'+runde+' t_'+spieltag;
TonyFord's avatar
TonyFord committed
  var partie=0;
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  Grps.forEach(
    function(v,i){
      var BG = JSON.parse(JSON.stringify(Bg));
      do {
        
        var h1 = BG.shift()-1;
        var a1 = BG.shift()-1;
        partie++;
TonyFord's avatar
TonyFord committed

        if( h1 == -1 || a1 == -1 ) return;
Tony Ford's avatar
Tony Ford committed
        var ergebnis=ERGEBNISSE.filter( (a) => ( a.saison == saison && a.runde == runde && a.spieltag == spieltag && a.H.toLowerCase() == v[h1][0].nt.toLowerCase() && a.A.toLowerCase() == v[a1][0].nt.toLowerCase() ) );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
        if( v[h1][0].id != undefined ) PARTIEN.push({ 'T' : new Date(date).toJSON().slice(0,10), 'runde' : runde, 'spieltag' : spieltag, 'H' : v[h1][0].id, 'H_nt' : v[h1][0].nt, 'A' : v[a1][0].id, 'A_nt' : v[a1][0].nt, 'MID' : ergebnis.length == 1 ? ergebnis[0].MID : 0 });

TonyFord's avatar
TonyFord committed
        if( ergebnis.length == 1 ){
Tony Ford's avatar
Tony Ford committed

TonyFord's avatar
TonyFord committed
          ergebnis=ergebnis[0];
          var th=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TH+'</a>' : ergebnis.TH );
          var ta=(( ergebnis.MID > 0 ) ? '<a href="https://ultrasoccer.de/match/?id='+ergebnis.MID+'" target="ultrasoccer">'+ergebnis.TA+'</a>' : ergebnis.TA );
          var dt=new Date(ergebnis.T).toJSON().slice(0,10);
TonyFord's avatar
TonyFord committed
          var st=STAT_SAISON.filter( (a) => ( a.MID == ergebnis.MID )).length == 12;
TonyFord's avatar
TonyFord committed
          ergebnis['partie']=partie;
TonyFord's avatar
TonyFord committed
          if( St != -1 ) St=spieltag;
Tony Ford's avatar
Tony Ford committed
          if( runde == 'VF' || runde == 'HF' || runde == 'F' ){
Tony Ford's avatar
Tony Ford committed
            //done.push( th > ta ? TEAMS.filter((a) => (a.nt == ergebnis.H ))[0] : TEAMS.filter((a) => (a.nt == ergebnis.A ))[0] );
            done.push( th > ta ? Object.values(TEAMS).filter( (a) => ( ( a.nt == ergebnis.H  ) ) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] : Object.values(TEAMS).filter( (a) => ( ( a.nt == ergebnis.A  ) ) ).map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))[0] );
Tony Ford's avatar
Tony Ford committed
          } else {
            done = true;
          }

TonyFord's avatar
TonyFord committed
        } else {
TonyFord's avatar
TonyFord committed
          if( St > 0 ){
TonyFord's avatar
TonyFord committed
            var anker=St;
TonyFord's avatar
TonyFord committed
            setTimeout( function(){ window.location.href='#r'+runde+'st'+anker; },500 );
TonyFord's avatar
TonyFord committed
            St=-1;
Tony Ford's avatar
Tony Ford committed
          var th='-'; var ta='-'; var dt='<i>'+new Date(date+DAY*steps).toJSON().slice(0,10)+'</i> <sup>'+(steps+LIGASPIELTAG)+'</sup>'; var st=false; var match='';
          if( runde == 'VF' || runde == 'HF' || runde == 'F' ){
            done.push(false);
          } else {
            done = false;
          }
TonyFord's avatar
TonyFord committed
        }
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
        var tr = _e('tr');
Tony Ford's avatar
Tony Ford committed
        tr.classList = 'begegnungen ' + (( STARTLISTE.length > 1 ) ? 'gruppe' + i : '' ) + ' h_'+v[h1][0].nt+' a_'+v[a1][0].nt+' '+(( st ) ? 'stats' : '');
Tony Ford's avatar
Tony Ford committed
        var td = _e('td');
        td.innerHTML = dt;
        tr.append(td);
        
        var td = _e('td');
Tony Ford's avatar
Tony Ford committed
        $(td).attr('data-id',v[h1][0].nt);
Tony Ford's avatar
Tony Ford committed
        var sup = _e('sup');
Tony Ford's avatar
Tony Ford committed
        sup.innerHTML = v[h1][0].nt.toUpperCase();
Tony Ford's avatar
Tony Ford committed
        td.append(sup);

        var span = _e('span')
Tony Ford's avatar
Tony Ford committed
        span.innerHTML = ' '+v[h1][0].name.replace(/\(NL\)/g,'')+' ';
Tony Ford's avatar
Tony Ford committed
        td.append(span);

        var img = _e('img');
        img.classList = 'flags';
Tony Ford's avatar
Tony Ford committed
        img.src = './images/flags/'+(( v[h1][0].flag ) ? v[h1][0].flag : v[h1][0].nt.toLowerCase())+'.svg';
Tony Ford's avatar
Tony Ford committed
        td.append(img);
        tr.append(td);
        
        var td = _e('td');
        td.innerText = ' - ';
        tr.append(td);

        var td = _e('td');
Tony Ford's avatar
Tony Ford committed
        $(td).attr('data-id',v[a1][0].nt);
Tony Ford's avatar
Tony Ford committed
        var img = _e('img');
        img.classList = 'flags';
Tony Ford's avatar
Tony Ford committed
        img.src = './images/flags/'+(( v[a1][0].flag ) ? v[a1][0].flag : v[a1][0].nt.toLowerCase())+'.svg';
Tony Ford's avatar
Tony Ford committed
        td.append(img);

        var span = _e('span')
Tony Ford's avatar
Tony Ford committed
        span.innerHTML = ' '+v[a1][0].name.replace(/\(NL\)/g,'')+' ';
Tony Ford's avatar
Tony Ford committed
        td.append(span);

        var sup = _e('sup');
Tony Ford's avatar
Tony Ford committed
        sup.innerHTML = v[a1][0].nt.toUpperCase();
Tony Ford's avatar
Tony Ford committed
        td.append(sup);
        tr.append(td);

        var td = _e('td');
        $(td).attr('data-mid',(( ergebnis.MID != undefined ) ? ergebnis.MID : '0' ) ); 
        td.innerHTML = th;
        tr.append(td);
        
        var td = _e('td');
Tony Ford's avatar
Tony Ford committed
        $(td).attr('onmouseenter', "showLastResults('"+v[h1][0].nt+"','"+v[a1][0].nt+"')" );
Tony Ford's avatar
Tony Ford committed
        $(td).attr('onmouseleave', 'hideLastResults()');
        $(td).attr('onclick','ignoreHideLastResults()');
        td.innerText = ':';
        tr.append(td);
        
        var td = _e('td');
        td.innerHTML = ta;
        tr.append(td);

        tbl.append(tr);
      } while( BG.length > 0 );
    },spieltag
  );
TonyFord's avatar
TonyFord committed

Tony Ford's avatar
Tony Ford committed
  $('#partien').append(tbl);
TonyFord's avatar
TonyFord committed

  return done;
}

function getCsv(saison, runde, spieltag){
  var tbl=$('.partien.s_'+saison+'.r_'+runde+'.t_'+spieltag)[0];
  var csv=
  Object.values(tbl.rows).map(
    function(v,i){
      var T=[];
      T.push( runde );
      T.push( spieltag );
      T.push( v.cells[0].innerText.slice(0,10) );
      T.push( v.cells[1].dataset.id );
      T.push( v.cells[3].dataset.id );
      T.push( v.cells[4].innerText );
      T.push( v.cells[6].innerText );
      T.push( v.cells[4].dataset.mid );
      return T;
    }
  ).join('\n');
  $('#copypaste').toggleClass('d-none');
  $('#copypaste textarea').text('runde,spieltag,T,H,A,TH,TA,MID\n'+csv);
}

function calculateEwigePunktestand(){
  var Ew = {}; 
  ERGEBNISSE.filter( (a) => ( a.runde == 1 ) ).forEach(
    function( v ){
      var H = v.H.toLowerCase();
      var A = v.A.toLowerCase();
      if( Ew[H] == undefined ) Ew[H] = { 'S':0, 'P':0, 'Tp':0, 'Tn':0, 'Zp':0, 'Zn':0, 'Tr':[] }
      Ew[H].S++;
      Ew[H].P += v.TH*1 > v.TA*1 ? 3 : v.TH*1 == v.TA*1 ? 1 : 0;
      Ew[H].Tr.push( v.TH*1 > v.TA*1 ? 'S' : v.TH*1 == v.TA*1 ? 'U' : 'N' );
      Ew[H].Tp += v.TH*1;
      Ew[H].Tn += v.TA*1;
      if( Ew[ v.A ] == undefined ) Ew[A] = { 'S':0, 'P':0, 'Tp':0, 'Tn':0, 'Zp':0, 'Zn':0, 'Tr':[] }
      Ew[A].S++;
      Ew[A].P += v.TA*1 > v.TH*1 ? 3 : v.TH*1 == v.TA*1 ? 1 : 0;
      Ew[A].Tp += v.TA*1;
      Ew[A].Tn += v.TH*1;
      Ew[A].Tr.push( v.TA*1 > v.TH*1 ? 'S' : v.TH*1 == v.TA*1 ? 'U' : 'N' );
    }
  );
  
  var tabelle='#tabelle_P tbody';
  $(tabelle).html('');

  var saison = 0;
  var M = calculateAllPunktestand().map((a) => ( a[0][0].nt ));

  Object.entries(Ew)
    .map( (a) => ( [ TEAMS.filter((b) => (b.nt == a[0] ))[0], a[1] ] ) )
    .sort( (a,b) => ( a[1].P < b[1].P || a[1].P == b[1].P && (a[1].Tp-a[1].Tn) < (b[1].Tp-b[1].Tn) ? 1 : -1 ))
    .forEach(
    function(v,i){
      if( v[0].nt == 'xx' ) return;
      v[1].Zwk = Object.values( v[0] ).filter((a) =>( a.Zwk != undefined )).map((a) => (a.Zwk)).reduce((a,b) => (a+b));
      v[1].Td = v[1].Tp - v[1].Tn;

      var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : '';
      
      var tr = _e('tr');
      if( STARTLISTE.length > 1 ) tr.classList = 'gruppe' + j;
      
      var td = _e('td');
      td.classList = border;
      td.innerText = (i+1);
      tr.append(td);
      
      var t=v[1].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 );
      var trophy=ERGEBNISSE.filter((a) => ( a.saison==SAISON-1 && a.runde=='F')).map((a) => ( a.TH > a.TA ? a.H : a.A ))[0];
      trophy = trophy == undefined ? '' : trophy;
      //var master=TabelleLast.length > 0 ? TabelleLast[0][0].nt : '';
      var master = '';

      if( t.length == 0 ) t.push(0);

      var S=t.reduce( (a,b) => a+b );
      var pokal=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) > parseInt(a.TA) && a.H.toLowerCase() == v[0].nt.toLowerCase() || parseInt(a.TH) < parseInt(a.TA) && a.A.toLowerCase() == v[0].nt.toLowerCase() ) ) ).length;
      var finalist=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) < parseInt(a.TA) && a.H.toLowerCase() == v[0].nt.toLowerCase() || parseInt(a.TH) > parseInt(a.TA) && a.A.toLowerCase() == v[0].nt.toLowerCase() ) ) ).length;
      var meistertitel=M.filter( (a,i) => ( a == v[0].nt && ( i < saison - 26 || saison == 0 ) ) ).length;
      var managervoted=Object.values(MANAGERVOTING_WINNER).filter((a) => (a == v[0].nt)).length;

      var td = _e('td');
      td.classList = border;
      td.innerHTML = S;
      tr.append(td);

      var td = _e('td');
      td.classList = border;
      if( MANAGERVOTING ){
        var _i = _e('i');
        _i.classList = 'fas fa-thumbs-up ';
        $(_i).attr('onclick', "teamVoting('"+v[0].nt+"')");
        if( SAISON_TEAMVOTED.reduce((a,b) => (a.concat(b))).indexOf(v[0].nt) > -1 ){
          _i.classList += 'done';
          _i.title = 'Manager dieses Teams hat sein Voting abgegeben!';
        } else {
          _i.title = 'Manager dieses Teams hat noch kein Voting abgegeben!';
        }
        td.append(_i);
      }

      var img = _e('img');
      img.classList = 'flags';
      img.src = '/images/flags/'+(( v[0].flag ) ? v[0].flag : v[0].nt.toLowerCase())+'.svg';
      td.append(img);

      var span = _e('span');
      span.innerText = ' ';
      td.append(span);

      var _a = _e('a');
      _a.href = "javascript:calculateTeam("+((saison == 0 && false) ? SAISON_NOW : saison)+",'"+v[0].nt+"\')";
      _a.innerHTML = v[0].name.replace(/\(NL\)/g,'<sup>'+v[0].nt.toUpperCase()+'</sup></a>');
      td.append(_a);

      var _a = _e('a');
      _a.href = v[0].link;
      _a.target = 'ultrasoccer';

      var _i = _e('i');
      _i.classList = 'fas fa-link';
      _a.append(_i);
      td.append(_a);

      if( trophy.toLowerCase() == v[0].nt.toLowerCase() ){
        var _i = _e('i');
        _i.classList = 'fas fa-trophy';
        _i.title = 'Amtierender Titelgewinner';
        td.append(_i);
      }

      if( master.toLowerCase() == v[0].nt.toLowerCase() ){
        var _i = _e('i');
        _i.classList = 'fas fa-crown';
        _i.title = 'Amtierender Meister';
        td.append(_i);
      }

      if(  v[0].nt.toLowerCase() == MANAGERVOTING_TEAM ){
        var _i = _e('i');
        _i.classList = 'managervoted fas fa-thumbs-up';
        _i.title = 'Team der Saison, gewählt von den Managern';
        td.append(_i);
      }
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = ((pokal>0) ? pokal : '');
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = ((meistertitel>0) ? meistertitel : '');
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = ((finalist>0) ? finalist : '');
      tr.append(td);

      var td = _e('td');
      td.classList = border;
      td.innerText = ((managervoted>0) ? managervoted : '');
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = v[1].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b );
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = v[1].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b );
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = v[1].Tr.map( (a) => ( ( a == 'N') ? 1 : 0 ) ).reduce( (a,b) => a+b );
      tr.append(td);

      var td = _e('td');
      td.classList = border;
      //td.innerHTML = v[1].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join('');
      td.innerText = '';
      tr.append(td);

      var td = _e('td');
      td.classList = border;
      td.innerText = v[1].Tp+'/'+v[1].Tn;
      tr.append(td);
      
      var td = _e('td');
      td.classList = border + ' ' + ((v[1].Td > 0 ) ? 'p' : (v[1].Td == 0 ) ? 'u' : 'n');
      td.innerText = ((v[1].Td > 0 ) ? '+' : '') + v[1].Td;
      tr.append(td);
      
      var td = _e('td');
      td.classList = border + ' ' + ((v[1].Zwk > 0 ) ? 'p' : (v[1].Zwk == 0 ) ? 'u' : 'n');
      td.innerText = (v[1].Zwk > 0 ? '+' : '')+(v[1].Zwk / S).toFixed(2);
      tr.append(td);
      
      var td = _e('td');
      td.classList = border;
      td.innerText = v[1].P;
      tr.append(td);

      $(tabelle).append(tr);
    }
  );

}

Tony Ford's avatar
Tony Ford committed

TonyFord's avatar
TonyFord committed
function calculatePunktestand(saison,runde,show=true){
TonyFord's avatar
TonyFord committed

  $.each( TEAMS,
    function( i,v ){
TonyFord's avatar
TonyFord committed
      TEAMS[i][saison] = { P: 0, Tp: 0, Tn: 0, Td: 0, Tr: ['X'], Zwk: 0, active: (( TEAMS[i].start <= saison )) }
TonyFord's avatar
TonyFord committed
    }
  );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  ERGEBNISSE.filter( (a) => ( ( a.saison == saison || saison == 0 ) && $.isNumeric(a.runde) && a.runde <= runde  ) ).forEach(
TonyFord's avatar
TonyFord committed
    function( v,i ){
TonyFord's avatar
TonyFord committed
      var H=TEAMS.filter( (a) => ( a.nt == v.H.toLowerCase() && ( saison == 0 || a.start*1 <= saison && ( a.ende*1 >= saison || a.ende == 0 ) ) ) );
      var A=TEAMS.filter( (a) => ( a.nt == v.A.toLowerCase() && ( saison == 0 || a.start*1 <= saison && ( a.ende*1 >= saison || a.ende == 0 ) ) ) );
TonyFord's avatar
TonyFord committed
      if( H.length == 0 ){
        alert('Error: Team mit Code '+v.H+' fehlt!!' );
        return;
      }
      if( A.length == 0 ){
        alert('Error: Team mit Code '+v.A+' fehlt!!' );
        return;
      }
      H=H[0][saison];
      A=A[0][saison];
      if( v.TH == '-' || v.TA == '-' ) return;
      if( parseInt(v.TH) > parseInt(v.TA) ){
        H.P+=3;
        H.Tr.push('S');
        A.Tr.push('N');
      } else if( parseInt(v.TH) < parseInt(v.TA) ){
        A.P+=3;
        H.Tr.push('N');
        A.Tr.push('S');
TonyFord's avatar
TonyFord committed
      } else {
TonyFord's avatar
TonyFord committed
        H.P+=1;
        A.P+=1;
        H.Tr.push('U');
        A.Tr.push('U');
TonyFord's avatar
TonyFord committed
      }
TonyFord's avatar
TonyFord committed
      H.Tp+=parseInt(v.TH); H.Tn+=parseInt(v.TA); H.Td=H.Tp-H.Tn;
      A.Tp+=parseInt(v.TA); A.Tn+=parseInt(v.TH); A.Td=A.Tp-A.Tn;
Tony Ford's avatar
Tony Ford committed
      STAT_ALL_MID.filter((b) => ( b.MID == v.MID && v.H == b.nt )).forEach(
TonyFord's avatar
TonyFord committed
        function(c){
          H.Zwk+=c.Zwk*1;
        }
      );
Tony Ford's avatar
Tony Ford committed
      STAT_ALL_MID.filter((b) => ( b.MID == v.MID && v.A == b.nt )).forEach(
TonyFord's avatar
TonyFord committed
        function(c){
          A.Zwk+=c.Zwk*1;
        }
      );
TonyFord's avatar
TonyFord committed
    }
  );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  var startliste=STARTLISTE.reduce((a,b)=>(a));

Tony Ford's avatar
Tony Ford committed
  var Tabelle=
  Object.values(TEAMS)
    .filter( (a) => ( ( a.start <= saison || saison == 0 ) && ( startliste.indexOf( a.nt ) > -2 || ( saison == 0 && a.nt != 'xx' ) ) ) )
    .map((a) => ( [ Object.fromEntries( Object.entries(a).filter( (b) => ( ! ( b[0] < 1000 ) )) ), a[saison] ] ))
    .sort(
      function(a,b){
        return a[1].P < b[1].P ||
        ( a[1].P == b[1].P && a[1].Td < b[1].Td ) ||
        ( a[1].P == b[1].P && a[1].Td == b[1].Td && a[1].Tp < b[1].Tp ) ||
        ( a[1].P == b[1].P && a[1].Td == b[1].Td && a[1].Tp == b[1].Tp && a.nt > b.nt ) ? 1 : -1;
      }
    )
    .filter(
      function(b){
        if( ! b[1].active && saison != 0 ) return false;
        if( b[1].P == 0 && b[1].Tp == 0 && b[1].Tn == 0 ) return false;
        return true;
      } 
    );
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
  if( !show ){
    return Tabelle;
  }
TonyFord's avatar
TonyFord committed

  var tabelle='#tabelle_P tbody';
TonyFord's avatar
TonyFord committed
  $(tabelle).html('');

  var TabelleLast= ( saison > 26 ) ? calculateAllPunktestand()[saison-27] : [];
Tony Ford's avatar
Tony Ford committed
  var M = calculateAllPunktestand().map((a) => ( a[0][0].nt ));
Tony Ford's avatar
Tony Ford committed

  STARTLISTE.forEach(
    function(w,j){

Tony Ford's avatar
Tony Ford committed
      Tabelle.filter((a) => ( w.indexOf(a[0].nt) > -1 )).forEach(
Tony Ford's avatar
Tony Ford committed
        function(v,i){
Tony Ford's avatar
Tony Ford committed

Tony Ford's avatar
Tony Ford committed
          var border=SAISON_SETTINGS[saison - 26] == i+1 ? 'dashed ' : '';
Tony Ford's avatar
Tony Ford committed
          var tr = _e('tr');
          if( STARTLISTE.length > 1 ) tr.classList = 'gruppe' + j;
          
          var td = _e('td');
          td.classList = border;
          td.innerText = (i+1);
          tr.append(td);
          
Tony Ford's avatar
Tony Ford committed
          var t=v[1].Tr.map( (a) => ( a != 'X' ) ? 1 : 0 );
Tony Ford's avatar
Tony Ford committed
          var trophy=ERGEBNISSE.filter((a) => ( a.saison==SAISON-1 && a.runde=='F')).map((a) => ( a.TH > a.TA ? a.H : a.A ))[0];
          trophy = trophy == undefined ? '' : trophy;
Tony Ford's avatar
Tony Ford committed
          var master=TabelleLast.length > 0 ? TabelleLast[0][0].nt : '';
          
Tony Ford's avatar
Tony Ford committed
          if( t.length == 0 ) t.push(0);
    
          var S=t.reduce( (a,b) => a+b );
Tony Ford's avatar
Tony Ford committed
          var pokal=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) > parseInt(a.TA) && a.H.toLowerCase() == v[0].nt.toLowerCase() || parseInt(a.TH) < parseInt(a.TA) && a.A.toLowerCase() == v[0].nt.toLowerCase() ) ) ).length;
          var finalist=ERGEBNISSE.filter((a) => ( ( a.saison*1 < saison || saison == 0 ) && a.runde=='F' && ( parseInt(a.TH) < parseInt(a.TA) && a.H.toLowerCase() == v[0].nt.toLowerCase() || parseInt(a.TH) > parseInt(a.TA) && a.A.toLowerCase() == v[0].nt.toLowerCase() ) ) ).length;
Tony Ford's avatar
Tony Ford committed
          var meistertitel=M.filter( (a,i) => ( a == v[0].nt && ( i < saison - 26 || saison == 0 ) ) ).length;
Tony Ford's avatar
Tony Ford committed
          var managervoted=Object.values(MANAGERVOTING_WINNER).filter((a) => (a == v[0].nt)).length;
Tony Ford's avatar
Tony Ford committed
    
          var td = _e('td');
          td.classList = border;
          td.innerHTML = S;
          tr.append(td);

          var td = _e('td');
          td.classList = border;
          if( MANAGERVOTING ){
            var _i = _e('i');
            _i.classList = 'fas fa-thumbs-up ';
Tony Ford's avatar
Tony Ford committed
            $(_i).attr('onclick', "teamVoting('"+v[0].nt+"')");
            if( SAISON_TEAMVOTED.reduce((a,b) => (a.concat(b))).indexOf(v[0].nt) > -1 ){
Tony Ford's avatar
Tony Ford committed
              _i.classList += 'done';
              _i.title = 'Manager dieses Teams hat sein Voting abgegeben!';
            } else {
              _i.title = 'Manager dieses Teams hat noch kein Voting abgegeben!';
            }
            td.append(_i);
          }

          var img = _e('img');
          img.classList = 'flags';
Tony Ford's avatar
Tony Ford committed
          img.src = '/images/flags/'+(( v[0].flag ) ? v[0].flag : v[0].nt.toLowerCase())+'.svg';
Tony Ford's avatar
Tony Ford committed
          td.append(img);

          var span = _e('span');
          span.innerText = ' ';
          td.append(span);

          var _a = _e('a');
Tony Ford's avatar
Tony Ford committed
          _a.href = "javascript:calculateTeam("+((saison == 0 && false) ? SAISON_NOW : saison)+",'"+v[0].nt+"\')";
          _a.innerHTML = v[0].name.replace(/\(NL\)/g,'<sup>'+v[0].nt.toUpperCase()+'</sup></a>');
Tony Ford's avatar
Tony Ford committed
          td.append(_a);

          var _a = _e('a');
Tony Ford's avatar
Tony Ford committed
          _a.href = v[0].link;
Tony Ford's avatar
Tony Ford committed
          _a.target = 'ultrasoccer';

          var _i = _e('i');
          _i.classList = 'fas fa-link';
          _a.append(_i);
          td.append(_a);

Tony Ford's avatar
Tony Ford committed
          if( trophy.toLowerCase() == v[0].nt.toLowerCase() ){
Tony Ford's avatar
Tony Ford committed
            var _i = _e('i');
            _i.classList = 'fas fa-trophy';
            _i.title = 'Amtierender Titelgewinner';
            td.append(_i);
          }

Tony Ford's avatar
Tony Ford committed
          if( master.toLowerCase() == v[0].nt.toLowerCase() ){
Tony Ford's avatar
Tony Ford committed
            var _i = _e('i');
            _i.classList = 'fas fa-crown';
            _i.title = 'Amtierender Meister';
            td.append(_i);
          }

Tony Ford's avatar
Tony Ford committed
          if(  v[0].nt.toLowerCase() == MANAGERVOTING_TEAM ){
Tony Ford's avatar
Tony Ford committed
            var _i = _e('i');
            _i.classList = 'managervoted fas fa-thumbs-up';
            _i.title = 'Team der Saison, gewählt von den Managern';
            td.append(_i);
          }
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
          td.innerText = ((pokal>0) ? pokal : '');
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
          td.innerText = ((meistertitel>0) ? meistertitel : '');
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
          td.innerText = ((finalist>0) ? finalist : '');
          tr.append(td);

          var td = _e('td');
          td.classList = border;
          td.innerText = ((managervoted>0) ? managervoted : '');
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerText = v[1].Tr.map( (a) => ( ( a == 'S') ? 1 : 0 ) ).reduce( (a,b) => a+b );
Tony Ford's avatar
Tony Ford committed
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerText = v[1].Tr.map( (a) => ( ( a == 'U') ? 1 : 0 ) ).reduce( (a,b) => a+b );
Tony Ford's avatar
Tony Ford committed
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerText = v[1].Tr.map( (a) => ( ( a == 'N') ? 1 : 0 ) ).reduce( (a,b) => a+b );
Tony Ford's avatar
Tony Ford committed
          tr.append(td);

          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerHTML = v[1].Tr.map( (a) => '<'+a+'></'+a+'>' ).slice(-6).join('');
Tony Ford's avatar
Tony Ford committed
          tr.append(td);

          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerText = v[1].Tp+'/'+v[1].Tn;
Tony Ford's avatar
Tony Ford committed
          tr.append(td);
          
          var td = _e('td');
Tony Ford's avatar
Tony Ford committed
          td.classList = border + ' ' + ((v[1].Td > 0 ) ? 'p' : (v[1].Td == 0 ) ? 'u' : 'n');
          td.innerText = ((v[1].Td > 0 ) ? '+' : '') + v[1].Td;
Tony Ford's avatar
Tony Ford committed
          tr.append(td);
          
          var td = _e('td');
Tony Ford's avatar
Tony Ford committed
          td.classList = border + ' ' + ((v[1].Zwk > 0 ) ? 'p' : (v[1].Zwk == 0 ) ? 'u' : 'n');
          td.innerText = (v[1].Zwk > 0 ? '+' : '')+(v[1].Zwk / S).toFixed(2);
Tony Ford's avatar
Tony Ford committed
          tr.append(td);
          
          var td = _e('td');
          td.classList = border;
Tony Ford's avatar
Tony Ford committed
          td.innerText = v[1].P;
Tony Ford's avatar
Tony Ford committed
          tr.append(td);

          $(tabelle).append(tr);
        }
      );
TonyFord's avatar
TonyFord committed
    }
  );

TonyFord's avatar
TonyFord committed
}
TonyFord's avatar
TonyFord committed

function calculateTabelle(saison,param){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;
Tony Ford's avatar
Tony Ford committed
  var n=Object.entries( STATISTIK ).sort( (a,b) => ( a[1][param] < b[1][param] || ( a[1][param] == b[1][param] && a[1].S > b[1].S ) ) ? 1 : -1 ).slice(0,20).map(
TonyFord's avatar
TonyFord committed
    function(v,i){
      var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) );
      var tr=document.createElement('tr');

TonyFord's avatar
TonyFord committed
      if( team.length == 0 ){
        var flag = document.createElement('img');
        flag.classList='flags';
        flag.src='./images/flags/xx.svg'
        flag.title='n/a';
        var span = document.createElement('span');
        span.innerText='';

TonyFord's avatar
TonyFord committed
      } else {

        var face = document.createElement('td');
        face.classList='face';

        if( v[1].face.split(/_/g).length == 5 ){
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_head_' + v[1].face.split(/_/g)[0] + '.png';
          $(face).append(img);

          var img = document.createElement('img');
          img.src='images/facegenerator/fg_hair_' + v[1].face.split(/_/g)[1] + '.png';
          $(face).append(img);

          var img = document.createElement('img');
          img.src='images/facegenerator/fg_beard_' + v[1].face.split(/_/g)[2] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_mouth_' + v[1].face.split(/_/g)[3] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_eyes_' + v[1].face.split(/_/g)[4] + '.png';
          $(face).append(img);


        var flag = document.createElement('img');
        flag.classList='flags';
        flag.src='./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg';
        flag.title=team[0].name.split('(NL)')[0].trim();

        var span = document.createElement('span');
        var a_ = document.createElement('a');
        a_.href='javascript:calculateTeam('+saison+',\''+team[0].nt+'\')';
        a_.innerHTML=team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup> ');
        span.append(a_);

        var a_ = document.createElement('a');
        a_.href=team[0].link;
        a_.target='ultrasoccer';
        var i_ = document.createElement('i');
        i_.classList='fas fa-link';
        a_.append(i_);
        span.append(a_);
TonyFord's avatar
TonyFord committed
      }

      var attr=document.createElement('span');
      attr.innerHTML=((v[1].attr != undefined) ? v[1].attr : '').split(' ').map( (a) => ( a != '' && a != 'fas' ? '<i class="fas '+a+'"></i>' : '' ) ).join('');

      var td=document.createElement('td');
      td.innerText=(i+1);
      tr.append(td);

      var td=document.createElement('td');
      td.innerText=(( STATISTIK[v[0]] != undefined ) ? STATISTIK[v[0]].S : 0);
      tr.append(td);

      tr.append(face);

      var td=document.createElement('td');
      td.append(flag);
      td.append(attr);

      var a_=document.createElement('a');
      a_.href='https://ultrasoccer.de/playerprofile/?id='+v[0];
      a_.target='ultrasoccer';
      a_.innerText=(( v[1].name != null ) ? v[1].name+' ('+(v[1].age*1+((saison == 0 ) ? SAISON_NOW : saison )*1-v[1].age_saison)+')' : v[0] );
      td.append(a_);
      tr.append(td);

      var td=document.createElement('td');
      td.append(span)
      tr.append(td);

      var td=document.createElement('td');
      td.innerText = ( param == 'Z' &&  v[1][param] > 0 ) ? '+' + v[1][param] :  v[1][param];
      if( param == 'Z' ) td.classList = v[1][param] > 0 ? 'p' : ( v[1][param] == 0 ) ? 'u' : 'n';
      tr.append(td);

      return tr;
TonyFord's avatar
TonyFord committed

TonyFord's avatar
TonyFord committed
    }
  );

  $('#tabelle_'+param+' tbody').html( n );
Tony Ford's avatar
Tony Ford committed
  $('.news').toggleClass('d-none', false);
TonyFord's avatar
TonyFord committed
}

function calculateTeam(saison,nt){
TonyFord's avatar
TonyFord committed
  var STATISTIK=saison == 0 ? STATISTIK_ALL : STATISTIK_SAISON;

  var n=SPIELER.filter( (a) => ( a.nt == nt ) ).map( (b) => ( [ b.id, STATISTIK[b.id] ] ) ).filter( (c) => ( c[1] !== undefined ) ).map(
TonyFord's avatar
TonyFord committed
    function(v,i){
      var team=TEAMS.filter( (a) => ( a.nt == v[1].nt ) );

      var tr=document.createElement('tr');

TonyFord's avatar
TonyFord committed
      if( team.length == 0 ){
        var flag = document.createElement('img');
        flag.classList='flags';
        flag.src='./images/flags/xx.svg'
        flag.title='n/a';
        var span = document.createElement('span');
        span.innerText='';

TonyFord's avatar
TonyFord committed
      } else {
        var face = document.createElement('td');
        face.classList='face';

        if( v[1].face.split(/_/g).length == 5 ){
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_head_' + v[1].face.split(/_/g)[0] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_hair_' + v[1].face.split(/_/g)[1] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_beard_' + v[1].face.split(/_/g)[2] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_mouth_' + v[1].face.split(/_/g)[3] + '.png';
          $(face).append(img);
          var img = document.createElement('img');
          img.src='images/facegenerator/fg_eyes_' + v[1].face.split(/_/g)[4] + '.png';
          $(face).append(img);
        } else {
          face.innerHTML = '&nbsp;';
        }

        tr.append(face);

        var flag = document.createElement('img');
        flag.classList='flags';
        flag.src='./images/flags/'+(( team[0].flag ) ? team[0].flag : team[0].nt.toLowerCase())+'.svg';
        flag.title=team[0].name.split('(NL)')[0].trim();

        var span = document.createElement('span');
        var a_ = document.createElement('a');
        a_.href='javascript:calculateTeam('+saison+',\''+team[0].nt+'\')';
        a_.innerHTML=team[0].name.replace(/\(NL\)/g,'<sup>'+team[0].nt.toUpperCase()+'</sup> ');
        span.append(a_);