C, 235 211 208 206 bytes
i;c(){puts("0");for(;i++<36;){char b[58]="";if(i<21){memset(b,!((i-1)%3)?35:32,56);i<10?memcpy(b," * * * * * * "+(i%2?0:2),23):0;b[56]=124;}if(!i||i==20)memset(b,45,57);printf("|%.*s\n",57,b);}} edit: added some of Cool Guy's suggestions and made use of ?: to replace some if statements.
edit: removed overflow \0 prevention and used string length limiter in printf instead.