Question : Displaying SPANS to simulate tb-lr rather than the normal lr-tb way of displaying things.

Hello.

I'm building a generic widget which will display a set of checkboxes and labels in a fluid grid.

The end user will be able to control the size of the container, add any styling to the elements, etc.

The widget accepts a set of id=label pairings and displays them as ...
1:
2:
3:
4:
<span id="S_{$a_Data['UniqueID']}">
	<input type="checkbox" name="cbGrid[]" value="{$a_Data['UniqueID']}" id="C_{$a_Data['UniqueID']}" />
	<label for="C_{$a_Data['UniqueID']}">{$a_Data['Label']}</label>
</span>


Nothing too complicated.

I've got all the auto sizing done, so no matter what size the labels are (within reason - short labels sub 50 chars), the checkboxes all line up.

In the code snippet attached, I've got a static example. The fully dynamic version is not yet optimized, but fully works in IE8Standards, Firefox and Chrome. It is just a little slow in IE and FF.


What I'd like to do is to reorganize the SPANs so that instead of reading left-to-right, top-to-bottom, they read top-to-bottom, left-to-right.

The 2 main problems I have are:

1 - The number of elements is unknown until runtime

The widget includes an AJAX element to retrieve the list of ids and labels from a database. The list can be any data to which there is a suitable server side responder.

2 - The number of columns is unknown until runtime

The number of columns is determined, at runtime, by the width of the container and the maximum width of the text, taking into account border, margin and padding.


So, I'm really looking for 2 things.

1 - What algorithm can I use to allow me to sort 1-n items into 1-m columns such that the last row contains any left overs and that columns are filled first.

2 - Can I do this in JS by just applying positioning?


OOI, the experimental CSS3 column-count (and associated rules) would seem to offer some hope here. If they worked.

-moz-column-count & -webkit-column-count both seem to be imperfect at the moment. And it excludes anything in IE.



For the example data, the output should look like ...

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
AJDDQVIRXB           GCVCSZUAXVSSFDOXF    LYMWLFUHDCSOGTDIVU   QEDFDVCSRLPM         WMNVUPCDXEM 
AJRWJTWTIPBGUBQ      GFGCXSWYEQJKRE       MBHTO                QJMCOFZBGET          WNJSVVICXUSXL 
AMIXMKEZGM           GITDBCVTAHVVFTLAMZG  MNORWCWC             QXCIVWCGXPKTY        WNSXUJLQUSLLFMF 
APYYSBXVPPWVIRDSQSYI GJAMXBZKSO           MOYM                 QYFJJMXMTCPDQD       WQF 
AQN                  GONTINDHSIEMBS       MWPZ                 RLZOOGHJNVZDEFKHT    WUGBNXILWXOKM 
AVAXA                GYVSKFC              MWTCCMNWCNSZJEZSJ    RQXFJCZGYEWPDRTXZH   WYDDXRWDQPH 
AVGQHKAIAYUGXEWQ     HABDVNDI             MZTBJSURMAPNP        RSMKDDWUOSYAWEHEGC   XEW 
BJKJFJYFETPXVDFMHH   HKZ                  NDPRBCDU             SDFJXJDOXTXTBIBCO    XLUAQ 
BKTYJGMNQXXAAA       HNDHYSZBYZFGT        NEYAGJHGVACZ         SLNUYAL              XQABOUIJPWRZDTZEXI 
BKUIQXHFJ            HOBINLMPWRWIDVBIOGR  NGVIWTZSLVWN         SWOHQPGQNDLLEBAZ     XUGSSAUBZZI 
BMEHSWZISSBZ         HRWETYNHFGXJN        NMZRZXDFDJU          TOE                  XYKAWQEQMYDU 
BVPMKLOFBGLJSIB      IFHNXGDGXXRDTEVIIJ   NOWPKIXJHS           TROXMCROFXKZ         XZOCDZFIVHTGNPAA 
CRQMMXAVSIYWKSLPB    JOVFCFHUQBSRV        PAPDJLVIVGBESBK      TVGIMKBYRW           YGWZCLJQFPI 
CVEXAVCYQWY          JPO                  PBPQHIBFMIBNJY       UANFZTVBBZCB         YJBSJEJX 
EAWAYLHZ             JQSZDG               POAOXFGNZBW          UJKACYFKSBSPIA       YLRJAFKTAQYZRJIJXXQ 
EBIOVEMTA            JYWXVQMLMVTWZIBSE    PQGSIPWFDMHOVY       UOEPPBAZMRXUY        YPGXRXKDVFZYAUZYH 
ENGRPJGWDYCW         KEL                  PREOINTJWV           UZZOTOXRFPXEHFMQ     YRBDXVWHEQUIT 
ENXUDZWUF            LFKXNDOL             PTKKXCUEFGFAB        VETKKOWMZLAP         YRLXQVQCWEKIAYG 
FJJMQKRMSVIHNAQXXW   LLCNKIYRLPSYAOJM     PUQYWOXUUZZMZ        VUNNYXLNZUYLV        YXYYDTZYGURC 
FSKNGNNKQ            LSFXIDXYLHBW         PZQKHHVCBF           VXBICHZ              YZALVXZFKPKFZE 
FVCXPZLXYPE          LXGVRMAP             QCFZRB               WKOTS                ZMDLCZBLCWZKD 
FWG                  LXVTZEBPY            QDKSFUMJQTPK         WLQYOETGJ            ZMFDWTXAJPMFBO
GAEUPSNZQRGWLYIF


Any ideas, known examples of this, etc.

Really. Anything considered.

Regards,

Richard Quadling.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
201:
202:
203:
204:
205:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<meta http-equiv="X-UA-Compatible" content="IE=edge" /> 
<title>Test : Static Label Grid</title> 
<style type="text/css">
body,
html
	{
	background-color : rgb( 23,  23,  23);
	border           : 0;
	color            : rgb(255, 255, 255);
	font             : 100% / 1.25 Verdana, "Century Gothic", Calibri, "Lucida Grande", Arial, Helvetica, sans-serif;
	margin           : 0;
	padding          : 0;
	}

body
	{
	margin              : 10px;
	}

#cbGrid
	{
	background-color : rgb(216, 229, 241);
	border           : 3px solid rgb( 55,  96, 145);
	color            : rgb(0, 0, 0);
	float            : right;
	padding          : 0;
	margin           : 5px;
	width            : 85%;
	}

#cbGrid h1
	{
	border-bottom  : 1px solid black;
	border-radius  : 0;
	font-size      : 2em;
	font-weight    : normal;
	letter-spacing : 01px;
	margin         : 0 0 5px;
	padding        : 0;
	text-align     : center;
	text-shadow    : none;
	white-space    : normal;
	}

#cbGrid input[type=checkbox]
	{
	border  : 0;
	margin  : 0 5px;
	padding : 0;
	}

#cbGrid label
	{
	font-size      : 8pt;
	padding-bottom : 0px;
	padding-right  : 5px;
	position       : relative;
	text-shadow    : none;
	top            : -2px;
	}

#cbGrid span
	{
	float        : left;
	margin-left  : 1px;
	margin-right : 1px;
	min-width    : 201px;
	padding      : 0 4.1px;
	white-space  : nowrap;
	}

#cbGrid span:hover
	{
	background-color : rgb(184, 197, 209);
	cursor           : pointer;
	}
</style>
</head> 
<body> 
<div> 
	<h1>Test : Static Label Grid</h1> 
	<p> 
		I am trying to create a pseudo grid such that the checkboxes all line up based upon the widths of the labels.<br /> 
		These need to be dynamic as the new labels are added every other month or so.
	</p> 
</div> 
<div id="cbGrid"> 
	<h1>Select labels</h1> 
	<span id="S_37"><input type="checkbox" name="cbGrid[]" value="37" id="C_37" /><label id="L_37" for="C_37">AJDDQVIRXB</label></span> 
	<span id="S_725"><input type="checkbox" name="cbGrid[]" value="725" id="C_725" /><label id="L_725" for="C_725">AJRWJTWTIPBGUBQ</label></span> 
	<span id="S_48"><input type="checkbox" name="cbGrid[]" value="48" id="C_48" /><label id="L_48" for="C_48">AMIXMKEZGM</label></span> 
	<span id="S_759"><input type="checkbox" name="cbGrid[]" value="759" id="C_759" /><label id="L_759" for="C_759">APYYSBXVPPWVIRDSQSYI</label></span> 
	<span id="S_771"><input type="checkbox" name="cbGrid[]" value="771" id="C_771" /><label id="L_771" for="C_771">AQN</label></span> 
	<span id="S_90"><input type="checkbox" name="cbGrid[]" value="90" id="C_90" /><label id="L_90" for="C_90">AVAXA</label></span> 
	<span id="S_75"><input type="checkbox" name="cbGrid[]" value="75" id="C_75" /><label id="L_75" for="C_75">AVGQHKAIAYUGXEWQ</label></span> 
	<span id="S_737"><input type="checkbox" name="cbGrid[]" value="737" id="C_737" /><label id="L_737" for="C_737">BJKJFJYFETPXVDFMHH</label></span> 
	<span id="S_765"><input type="checkbox" name="cbGrid[]" value="765" id="C_765" /><label id="L_765" for="C_765">BKTYJGMNQXXAAA</label></span> 
	<span id="S_79"><input type="checkbox" name="cbGrid[]" value="79" id="C_79" /><label id="L_79" for="C_79">BKUIQXHFJ</label></span> 
	<span id="S_13"><input type="checkbox" name="cbGrid[]" value="13" id="C_13" /><label id="L_13" for="C_13">BMEHSWZISSBZ</label></span> 
	<span id="S_30"><input type="checkbox" name="cbGrid[]" value="30" id="C_30" /><label id="L_30" for="C_30">BVPMKLOFBGLJSIB</label></span> 
	<span id="S_745"><input type="checkbox" name="cbGrid[]" value="745" id="C_745" /><label id="L_745" for="C_745">CRQMMXAVSIYWKSLPB</label></span> 
	<span id="S_752"><input type="checkbox" name="cbGrid[]" value="752" id="C_752" /><label id="L_752" for="C_752">CVEXAVCYQWY</label></span> 
	<span id="S_726"><input type="checkbox" name="cbGrid[]" value="726" id="C_726" /><label id="L_726" for="C_726">EAWAYLHZ</label></span> 
	<span id="S_758"><input type="checkbox" name="cbGrid[]" value="758" id="C_758" /><label id="L_758" for="C_758">EBIOVEMTA</label></span> 
	<span id="S_756"><input type="checkbox" name="cbGrid[]" value="756" id="C_756" /><label id="L_756" for="C_756">ENGRPJGWDYCW</label></span> 
	<span id="S_63"><input type="checkbox" name="cbGrid[]" value="63" id="C_63" /><label id="L_63" for="C_63">ENXUDZWUF</label></span> 
	<span id="S_62"><input type="checkbox" name="cbGrid[]" value="62" id="C_62" /><label id="L_62" for="C_62">FJJMQKRMSVIHNAQXXW</label></span> 
	<span id="S_1"><input type="checkbox" name="cbGrid[]" value="1" id="C_1" /><label id="L_1" for="C_1">FSKNGNNKQ</label></span> 
	<span id="S_82"><input type="checkbox" name="cbGrid[]" value="82" id="C_82" /><label id="L_82" for="C_82">FVCXPZLXYPE</label></span> 
	<span id="S_772"><input type="checkbox" name="cbGrid[]" value="772" id="C_772" /><label id="L_772" for="C_772">FWG</label></span> 
	<span id="S_738"><input type="checkbox" name="cbGrid[]" value="738" id="C_738" /><label id="L_738" for="C_738">GAEUPSNZQRGWLYIF</label></span> 
	<span id="S_67"><input type="checkbox" name="cbGrid[]" value="67" id="C_67" /><label id="L_67" for="C_67">GCVCSZUAXVSSFDOXF</label></span> 
	<span id="S_60"><input type="checkbox" name="cbGrid[]" value="60" id="C_60" /><label id="L_60" for="C_60">GFGCXSWYEQJKRE</label></span> 
	<span id="S_71"><input type="checkbox" name="cbGrid[]" value="71" id="C_71" /><label id="L_71" for="C_71">GITDBCVTAHVVFTLAMZG</label></span> 
	<span id="S_18"><input type="checkbox" name="cbGrid[]" value="18" id="C_18" /><label id="L_18" for="C_18">GJAMXBZKSO</label></span> 
	<span id="S_88"><input type="checkbox" name="cbGrid[]" value="88" id="C_88" /><label id="L_88" for="C_88">GONTINDHSIEMBS</label></span> 
	<span id="S_77"><input type="checkbox" name="cbGrid[]" value="77" id="C_77" /><label id="L_77" for="C_77">GYVSKFC</label></span> 
	<span id="S_76"><input type="checkbox" name="cbGrid[]" value="76" id="C_76" /><label id="L_76" for="C_76">HABDVNDI</label></span> 
	<span id="S_730"><input type="checkbox" name="cbGrid[]" value="730" id="C_730" /><label id="L_730" for="C_730">HKZ</label></span> 
	<span id="S_747"><input type="checkbox" name="cbGrid[]" value="747" id="C_747" /><label id="L_747" for="C_747">HNDHYSZBYZFGT</label></span> 
	<span id="S_68"><input type="checkbox" name="cbGrid[]" value="68" id="C_68" /><label id="L_68" for="C_68">HOBINLMPWRWIDVBIOGR</label></span> 
	<span id="S_41"><input type="checkbox" name="cbGrid[]" value="41" id="C_41" /><label id="L_41" for="C_41">HRWETYNHFGXJN</label></span> 
	<span id="S_44"><input type="checkbox" name="cbGrid[]" value="44" id="C_44" /><label id="L_44" for="C_44">IFHNXGDGXXRDTEVIIJ</label></span> 
	<span id="S_81"><input type="checkbox" name="cbGrid[]" value="81" id="C_81" /><label id="L_81" for="C_81">JOVFCFHUQBSRV</label></span> 
	<span id="S_43"><input type="checkbox" name="cbGrid[]" value="43" id="C_43" /><label id="L_43" for="C_43">JPO</label></span> 
	<span id="S_39"><input type="checkbox" name="cbGrid[]" value="39" id="C_39" /><label id="L_39" for="C_39">JQSZDG</label></span> 
	<span id="S_56"><input type="checkbox" name="cbGrid[]" value="56" id="C_56" /><label id="L_56" for="C_56">JYWXVQMLMVTWZIBSE</label></span> 
	<span id="S_74"><input type="checkbox" name="cbGrid[]" value="74" id="C_74" /><label id="L_74" for="C_74">KEL</label></span> 
	<span id="S_721"><input type="checkbox" name="cbGrid[]" value="721" id="C_721" /><label id="L_721" for="C_721">LFKXNDOL</label></span> 
	<span id="S_28"><input type="checkbox" name="cbGrid[]" value="28" id="C_28" /><label id="L_28" for="C_28">LLCNKIYRLPSYAOJM</label></span> 
	<span id="S_72"><input type="checkbox" name="cbGrid[]" value="72" id="C_72" /><label id="L_72" for="C_72">LSFXIDXYLHBW</label></span> 
	<span id="S_12"><input type="checkbox" name="cbGrid[]" value="12" id="C_12" /><label id="L_12" for="C_12">LXGVRMAP</label></span> 
	<span id="S_23"><input type="checkbox" name="cbGrid[]" value="23" id="C_23" /><label id="L_23" for="C_23">LXVTZEBPY</label></span> 
	<span id="S_742"><input type="checkbox" name="cbGrid[]" value="742" id="C_742" /><label id="L_742" for="C_742">LYMWLFUHDCSOGTDIVU</label></span> 
	<span id="S_739"><input type="checkbox" name="cbGrid[]" value="739" id="C_739" /><label id="L_739" for="C_739">MBHTO</label></span> 
	<span id="S_58"><input type="checkbox" name="cbGrid[]" value="58" id="C_58" /><label id="L_58" for="C_58">MNORWCWC</label></span> 
	<span id="S_766"><input type="checkbox" name="cbGrid[]" value="766" id="C_766" /><label id="L_766" for="C_766">MOYM</label></span> 
	<span id="S_15"><input type="checkbox" name="cbGrid[]" value="15" id="C_15" /><label id="L_15" for="C_15">MWPZ</label></span> 
	<span id="S_769"><input type="checkbox" name="cbGrid[]" value="769" id="C_769" /><label id="L_769" for="C_769">MWTCCMNWCNSZJEZSJ</label></span> 
	<span id="S_760"><input type="checkbox" name="cbGrid[]" value="760" id="C_760" /><label id="L_760" for="C_760">MZTBJSURMAPNP</label></span> 
	<span id="S_748"><input type="checkbox" name="cbGrid[]" value="748" id="C_748" /><label id="L_748" for="C_748">NDPRBCDU</label></span> 
	<span id="S_26"><input type="checkbox" name="cbGrid[]" value="26" id="C_26" /><label id="L_26" for="C_26">NEYAGJHGVACZ</label></span> 
	<span id="S_749"><input type="checkbox" name="cbGrid[]" value="749" id="C_749" /><label id="L_749" for="C_749">NGVIWTZSLVWN</label></span> 
	<span id="S_712"><input type="checkbox" name="cbGrid[]" value="712" id="C_712" /><label id="L_712" for="C_712">NMZRZXDFDJU</label></span> 
	<span id="S_753"><input type="checkbox" name="cbGrid[]" value="753" id="C_753" /><label id="L_753" for="C_753">NOWPKIXJHS</label></span> 
	<span id="S_69"><input type="checkbox" name="cbGrid[]" value="69" id="C_69" /><label id="L_69" for="C_69">PAPDJLVIVGBESBK</label></span> 
	<span id="S_85"><input type="checkbox" name="cbGrid[]" value="85" id="C_85" /><label id="L_85" for="C_85">PBPQHIBFMIBNJY</label></span> 
	<span id="S_761"><input type="checkbox" name="cbGrid[]" value="761" id="C_761" /><label id="L_761" for="C_761">POAOXFGNZBW</label></span> 
	<span id="S_750"><input type="checkbox" name="cbGrid[]" value="750" id="C_750" /><label id="L_750" for="C_750">PQGSIPWFDMHOVY</label></span> 
	<span id="S_770"><input type="checkbox" name="cbGrid[]" value="770" id="C_770" /><label id="L_770" for="C_770">PREOINTJWV</label></span> 
	<span id="S_736"><input type="checkbox" name="cbGrid[]" value="736" id="C_736" /><label id="L_736" for="C_736">PTKKXCUEFGFAB</label></span> 
	<span id="S_720"><input type="checkbox" name="cbGrid[]" value="720" id="C_720" /><label id="L_720" for="C_720">PUQYWOXUUZZMZ</label></span> 
	<span id="S_767"><input type="checkbox" name="cbGrid[]" value="767" id="C_767" /><label id="L_767" for="C_767">PZQKHHVCBF</label></span> 
	<span id="S_38"><input type="checkbox" name="cbGrid[]" value="38" id="C_38" /><label id="L_38" for="C_38">QCFZRB</label></span> 
	<span id="S_55"><input type="checkbox" name="cbGrid[]" value="55" id="C_55" /><label id="L_55" for="C_55">QDKSFUMJQTPK</label></span> 
	<span id="S_33"><input type="checkbox" name="cbGrid[]" value="33" id="C_33" /><label id="L_33" for="C_33">QEDFDVCSRLPM</label></span> 
	<span id="S_42"><input type="checkbox" name="cbGrid[]" value="42" id="C_42" /><label id="L_42" for="C_42">QJMCOFZBGET</label></span> 
	<span id="S_66"><input type="checkbox" name="cbGrid[]" value="66" id="C_66" /><label id="L_66" for="C_66">QXCIVWCGXPKTY</label></span> 
	<span id="S_86"><input type="checkbox" name="cbGrid[]" value="86" id="C_86" /><label id="L_86" for="C_86">QYFJJMXMTCPDQD</label></span> 
	<span id="S_762"><input type="checkbox" name="cbGrid[]" value="762" id="C_762" /><label id="L_762" for="C_762">RLZOOGHJNVZDEFKHT</label></span> 
	<span id="S_751"><input type="checkbox" name="cbGrid[]" value="751" id="C_751" /><label id="L_751" for="C_751">RQXFJCZGYEWPDRTXZH</label></span> 
	<span id="S_24"><input type="checkbox" name="cbGrid[]" value="24" id="C_24" /><label id="L_24" for="C_24">RSMKDDWUOSYAWEHEGC</label></span> 
	<span id="S_723"><input type="checkbox" name="cbGrid[]" value="723" id="C_723" /><label id="L_723" for="C_723">SDFJXJDOXTXTBIBCO</label></span> 
	<span id="S_734"><input type="checkbox" name="cbGrid[]" value="734" id="C_734" /><label id="L_734" for="C_734">SLNUYAL</label></span> 
	<span id="S_729"><input type="checkbox" name="cbGrid[]" value="729" id="C_729" /><label id="L_729" for="C_729">SWOHQPGQNDLLEBAZ</label></span> 
	<span id="S_78"><input type="checkbox" name="cbGrid[]" value="78" id="C_78" /><label id="L_78" for="C_78">TOE</label></span> 
	<span id="S_34"><input type="checkbox" name="cbGrid[]" value="34" id="C_34" /><label id="L_34" for="C_34">TROXMCROFXKZ</label></span> 
	<span id="S_727"><input type="checkbox" name="cbGrid[]" value="727" id="C_727" /><label id="L_727" for="C_727">TVGIMKBYRW</label></span> 
	<span id="S_73"><input type="checkbox" name="cbGrid[]" value="73" id="C_73" /><label id="L_73" for="C_73">UANFZTVBBZCB</label></span> 
	<span id="S_65"><input type="checkbox" name="cbGrid[]" value="65" id="C_65" /><label id="L_65" for="C_65">UJKACYFKSBSPIA</label></span> 
	<span id="S_735"><input type="checkbox" name="cbGrid[]" value="735" id="C_735" /><label id="L_735" for="C_735">UOEPPBAZMRXUY</label></span> 
	<span id="S_70"><input type="checkbox" name="cbGrid[]" value="70" id="C_70" /><label id="L_70" for="C_70">UZZOTOXRFPXEHFMQ</label></span> 
	<span id="S_11"><input type="checkbox" name="cbGrid[]" value="11" id="C_11" /><label id="L_11" for="C_11">VETKKOWMZLAP</label></span> 
	<span id="S_614"><input type="checkbox" name="cbGrid[]" value="614" id="C_614" /><label id="L_614" for="C_614">VUNNYXLNZUYLV</label></span> 
	<span id="S_29"><input type="checkbox" name="cbGrid[]" value="29" id="C_29" /><label id="L_29" for="C_29">VXBICHZ</label></span> 
	<span id="S_20"><input type="checkbox" name="cbGrid[]" value="20" id="C_20" /><label id="L_20" for="C_20">WKOTS</label></span> 
	<span id="S_35"><input type="checkbox" name="cbGrid[]" value="35" id="C_35" /><label id="L_35" for="C_35">WLQYOETGJ</label></span> 
	<span id="S_755"><input type="checkbox" name="cbGrid[]" value="755" id="C_755" /><label id="L_755" for="C_755">WMNVUPCDXEM</label></span> 
	<span id="S_54"><input type="checkbox" name="cbGrid[]" value="54" id="C_54" /><label id="L_54" for="C_54">WNJSVVICXUSXL</label></span> 
	<span id="S_84"><input type="checkbox" name="cbGrid[]" value="84" id="C_84" /><label id="L_84" for="C_84">WNSXUJLQUSLLFMF</label></span> 
	<span id="S_724"><input type="checkbox" name="cbGrid[]" value="724" id="C_724" /><label id="L_724" for="C_724">WQF</label></span> 
	<span id="S_757"><input type="checkbox" name="cbGrid[]" value="757" id="C_757" /><label id="L_757" for="C_757">WUGBNXILWXOKM</label></span> 
	<span id="S_19"><input type="checkbox" name="cbGrid[]" value="19" id="C_19" /><label id="L_19" for="C_19">WYDDXRWDQPH</label></span> 
	<span id="S_80"><input type="checkbox" name="cbGrid[]" value="80" id="C_80" /><label id="L_80" for="C_80">XEW</label></span> 
	<span id="S_14"><input type="checkbox" name="cbGrid[]" value="14" id="C_14" /><label id="L_14" for="C_14">XLUAQ</label></span> 
	<span id="S_746"><input type="checkbox" name="cbGrid[]" value="746" id="C_746" /><label id="L_746" for="C_746">XQABOUIJPWRZDTZEXI</label></span> 
	<span id="S_718"><input type="checkbox" name="cbGrid[]" value="718" id="C_718" /><label id="L_718" for="C_718">XUGSSAUBZZI</label></span> 
	<span id="S_713"><input type="checkbox" name="cbGrid[]" value="713" id="C_713" /><label id="L_713" for="C_713">XYKAWQEQMYDU</label></span> 
	<span id="S_17"><input type="checkbox" name="cbGrid[]" value="17" id="C_17" /><label id="L_17" for="C_17">XZOCDZFIVHTGNPAA</label></span> 
	<span id="S_45"><input type="checkbox" name="cbGrid[]" value="45" id="C_45" /><label id="L_45" for="C_45">YGWZCLJQFPI</label></span> 
	<span id="S_719"><input type="checkbox" name="cbGrid[]" value="719" id="C_719" /><label id="L_719" for="C_719">YJBSJEJX</label></span> 
	<span id="S_92"><input type="checkbox" name="cbGrid[]" value="92" id="C_92" /><label id="L_92" for="C_92">YLRJAFKTAQYZRJIJXXQ</label></span> 
	<span id="S_659"><input type="checkbox" name="cbGrid[]" value="659" id="C_659" /><label id="L_659" for="C_659">YPGXRXKDVFZYAUZYH</label></span> 
	<span id="S_768"><input type="checkbox" name="cbGrid[]" value="768" id="C_768" /><label id="L_768" for="C_768">YRBDXVWHEQUIT</label></span> 
	<span id="S_40"><input type="checkbox" name="cbGrid[]" value="40" id="C_40" /><label id="L_40" for="C_40">YRLXQVQCWEKIAYG</label></span> 
	<span id="S_64"><input type="checkbox" name="cbGrid[]" value="64" id="C_64" /><label id="L_64" for="C_64">YXYYDTZYGURC</label></span> 
	<span id="S_754"><input type="checkbox" name="cbGrid[]" value="754" id="C_754" /><label id="L_754" for="C_754">YZALVXZFKPKFZE</label></span> 
	<span id="S_59"><input type="checkbox" name="cbGrid[]" value="59" id="C_59" /><label id="L_59" for="C_59">ZMDLCZBLCWZKD</label></span> 
	<span id="S_714"><input type="checkbox" name="cbGrid[]" value="714" id="C_714" /><label id="L_714" for="C_714">ZMFDWTXAJPMFBO</label></span></div> 
</body> 
</html>

Answer : Displaying SPANS to simulate tb-lr rather than the normal lr-tb way of displaying things.

The following (inelegant) code is untested, but it should get you started.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
Given the number of words and columns:

var word_count = 111;
var cols = 5;
var extra = 0;
var spillage = [0,0,0,0,0]; // Same # of elements as # of columns
var rows = parseInt(word_count / cols, 10); // Words per column
var i = 0;

if (rows * cols) !== word_count) { 
    extra = word_count - (rows  * cols); // Leftovers ?
    if (extra !== 0) {
        rows += 1; // Need another row for leftovers
    }
}

/*
You know the # of entries per column and you can split the "word_list" on spaces 
(or tab or whatever) and loop through the words, building your <SPAN/> elements
*/

var words = wordlist.split(' '); // Create array of words
var span = [];

for (var i = 0; i < cols; i++) {
    for (var j = 0; j < rows; j++) {
        // Create <SPAN/>
        span[(i  + (j * cols)] = "<span>" + (i + (j * cols);
    }
}

/*
"span" now holds the <SPAN/> elements in columnar order:
[
   0, 24, 46, 68, 90,
   1, 25, 47, 69, 91,
   2, 26, 48, 70, 92,
...
  22, 45, 67, 89,111
  23  --  --  --  --
]

and you can add them to the DOM with a simple loop
*/

for (i = 0; i < span.length; i += 1) {
    document.write(span[i]);
}
Random Solutions  
 
programming4us programming4us