Mike was refactoring an old web application written in Perl. We joke about Perl being a "write only language," but the original developer wanted to take that unreadable attitude to the JavaScript front-end portion of the application.
function setup() {
position('m1',46,220);
position('m1g',33,200);
position('m1c',33,200);
position('m2',46,330);
position('m2g',33,310);
position('m2c',33,310);
// ... snip 50 lines
}
The strings reference the IDs of various elements on the page. The IDs themselves, however, mean nothing. Why m1g
? No idea.
function offall() {
hideitem('m2i1');
hideitem('m2i1c');
// ... snip 50 lines
}
As you can also see, there's no attempt to use CSS classes or other selectors to make it easy to find all of the UI widgets that need to be hidden- one simply needs to access each one by its meaningless ID value.
Which also means when it comes time to show elements, it gets nasty:
function rollonmenu(item) {
clearcurrenttimeout();
offall();
overmenu=1;
highlight(item);
if (item=='m1') {
// ...
}
if (item=='m2') {
showitem('m2i1');
showitem('m2i1c');
// ... snip 20 lines
}
if (item=='m3') {
// ... snip 20 lines
}
if (item=='m4') {
// ...
}
if // ... more
}
All this is in the service of hiding or showing sub-options based on which item a user has selected. And it's cryptic, verbose, and ugly. But this isn't the real WTF in this code. TRWTF is how they insert the menu into the web page:
var _targ = document.getElementById('menu');
_targ.innerHTML='<div ... 10441 characters all on one line ';
The HTML describing this UI widget is a single JavaScript string, all on one line.