Annotation of rat/client/rat.html, revision 1.1.1.1
1.1 albertel 1: <html>
2:
3: <!--
4: The LearningOnline Network
5: Resource Assembly Tool
6: 7/23,7/24,7/26,
7: 8/11,8/14,8/18,8/19,8/20,8/21,8/22,8/25,8/26,8/28,8/30,8/31,
8: 9/1,9/2,9/4,9/5,9/6 Gerd Kortemeyer with Scott Harrison
9: -->
10:
11:
12: <head>
13: <script language="JavaScript">
14:
15: var row=new Array();
16: var maxrow=-1;
17: var col=new Array();
18: var maxcol=-1;
19: var colmap=new Array();
20: var colmap2=new Array();
21: var colmap3=new Array();
22: var colmap4=new Array();
23: var colmap5=new Array();
24: var obj=new Array();
25: var maxobj=-1;
26: var rowcont=new Array();
27: var rowtype=new Array();
28: var coltype=new Array();
29: var rcol=new Array();
30: var rrow=new Array();
31: var cw=new Array();
32: var rh=new Array();
33:
34: var data1=new Array(1024);
35: var data2=new Array(1024);
36: var data3=new Array(1024);
37: var data4=new Array(1024);
38:
39: // ----------------------------------------- Functions to switch between images
40:
41: function ssws(doc,i,j) {
42: var name='s'+i+'_'+j;
43: doc.document[name].src='insrow.gif';
44: }
45:
46: function sswe(doc,i,j) {
47: var name='s'+i+'_'+j;
48: doc.document[name].src='sempty.gif';
49: }
50:
51: function sswet(doc,i,j) {
52: var name='s'+i+'_'+j;
53: doc.document[name].src='std.gif';
54: }
55:
56: function csws(doc,i,j) {
57: var name='c'+i+'_'+j;
58: doc.document[name].src='inscond.gif';
59: }
60:
61: function cswe(doc,i,j) {
62: var name='c'+i+'_'+j;
63: doc.document[name].src='sctd.gif';
64: }
65:
66: function isws(doc,i,j) {
67: var name='i'+i+'_'+j;
68: doc.document[name].src='inscol.gif';
69: }
70:
71: function iswel(doc,i,j) {
72: var name='i'+i+'_'+j;
73: doc.document[name].src='sld.gif';
74: }
75:
76: function iswed(doc,i,j) {
77: var name='i'+i+'_'+j;
78: doc.document[name].src='std.gif';
79: }
80:
81: function iswedt(doc,i,j) {
82: var name='i'+i+'_'+j;
83: doc.document[name].src='stdl.gif';
84: }
85:
86:
87: function isweb(doc,i,j) {
88: var name='i'+i+'_'+j;
89: doc.document[name].src='sempty.gif';
90: }
91:
92: function bsws(doc,i,j) {
93: var name='b'+i+'_'+j;
94: doc.document[name].src='insres.gif';
95: }
96:
97: function bswe(doc,i,j) {
98: var name='b'+i+'_'+j;
99: doc.document[name].src='bempty.gif';
100: }
101:
102: function bswet(doc,i,j) {
103: var name='b'+i+'_'+j;
104: doc.document[name].src='btd.gif';
105: }
106:
107: // Insert a resource
108:
109: function insertresource(i,j) {
110: var cols=tr[i].split(":");
111: cols[j]='r'+i+j;
112: tr[i]=cols.join(':');
113:
114: // This is only a test
115: joinres(tti,ttj,i,j,'nodraw');
116:
117: draw('edit');
118: }
119:
120: // Insert a condition
121:
122: function insertcondition(i,j) {
123: var cols=tc[i].split(":");
124: cols[j]='r'+i+j;
125: tc[i]=cols.join(':');
126: draw('edit');
127: }
128:
129: // ------------------------------------------------ Insert a row into the table
130:
131: function insertrow(j,size,ex1,ex2) {
132: objects1='';
133: objects2='';
134: for (kj=0;kj<=maxrow;kj++) {
135: if ( row[kj]==j ) { objects1=rowcont[kj]; }
136: if ( row[kj]==j+1 ) { objects2=rowcont[kj]; }
137: if ( row[kj]>j ) { row[kj]++; }
138: }
139: maxrow++;
140: row[maxrow]=j+1;
141: rowtype[maxrow]=size;
142: rowcont[maxrow]=':';
143: colcover=':'+ex1+':'+ex2+':';
144: objects=objects1+':'+objects2;
145: data1=objects.split(':');
146: for (kj=0;kj<data1.length;kj++) {
147: if (data1[kj]!='') {
148: thisisobj=obj[data1[kj]];
149: thisobjtype=thisisobj.split('&')[0];
150: if (thisobjtype=='v') {
151: if (rowcont[maxrow].indexOf(':'+data1[kj]+':',0)==-1) {
152: thisobjcol=thisisobj.split('&')[1];
153: if (colcover.indexOf(':'+thisobjcol+':',0)==-1) {
154: colcover+=thisobjcol+':';
155: rowcont[maxrow]+=data1[kj]+':';
156: }
157: }
158: }
159: if (thisobjtype=='h') {
160: updown=thisisobj.split('&')[4];
161: leftupdown=updown.split(':')[0];
162: rightupdown=updown.split(':')[1];
163: thisobjdest=thisisobj.split('&')[3];
164: thisobjtofrom=thisisobj.split('&')[2];
165: thisobjfrom=thisobjtofrom.split(':')[0];
166: thisobjto=thisobjtofrom.split(':')[1];
167: thisobjdir=col[thisobjto]-col[thisobjfrom];
168: thisobjrow=row[thisisobj.split('&')[1]];
169: topbottom=thisobjrow-j-1;
170: newobj='';
171: if (leftupdown==-1) {
172: if (topbottom<0) {
173: if (thisobjdir<0) {
174: newobj='v&'+thisobjto+'&'+thisobjdest+'&-1';
175: } else {
176: newobj='v&'+thisobjfrom+'&'+thisobjdest+'&1';
177: }
178: }
179: } else {
180: if (topbottom>0) {
181: if (thisobjdir<0) {
182: newobj='v&'+thisobjto+'&'+thisobjdest+'&1';
183: } else {
184: newobj='v&'+thisobjfrom+'&'+thisobjdest+'&-1';
185: }
186: }
187: }
188: if (newobj!='') {
189: thisobjcol=newobj.split('&')[1];
190: if (colcover.indexOf(':'+thisobjcol+':',0)==-1) {
191: colcover+=thisobjcol+':';
192: rowcont[maxrow]+=obj.length+':';
193: obj[obj.length]=newobj;
194: }
195: }
196: newobj='';
197: if (rightupdown==-1) {
198: if (topbottom<0) {
199: if (thisobjdir<0) {
200: newobj='v&'+thisobjfrom+'&'+thisobjdest+'&1';
201: } else {
202: newobj='v&'+thisobjto+'&'+thisobjdest+'&-1';
203: }
204: }
205: } else {
206: if (topbottom>0) {
207: if (thisobjdir<0) {
208: newobj='v&'+thisobjfrom+'&'+thisobjdest+'&-1';
209: } else {
210: newobj='v&'+thisobjto+'&'+thisobjdest+'&1';
211: }
212: }
213: }
214: if (newobj!='') {
215: thisobjcol=newobj.split('&')[1];
216: if (colcover.indexOf(':'+thisobjcol+':',0)==-1) {
217: colcover+=thisobjcol+':';
218: rowcont[maxrow]+=obj.length+':';
219: obj[obj.length]=newobj;
220: }
221: }
222: }
223: }
224: }
225: if (rowcont[maxrow]!=':') {
226: rowcont[maxrow]=rowcont[maxrow].substring(1,rowcont[maxrow].length-1);
227: } else {
228: rowcont[maxrow]='';
229: }
230: }
231:
232: // --------------------------------------------- Insert a column into the table
233:
234: function insertcol(j,size) {
235: for (kj=0;kj<=maxcol;kj++) {
236: if ( col[kj]>j ) { col[kj]++; }
237: }
238: maxcol++;
239: col[maxcol]=j+1;
240: coltype[maxcol]=size;
241: }
242:
243: // --------------------------------------------------------------- Find the row
244:
245: function findrow(jid) {
246: for (j=0;j<=maxrow;j++) { if (row[j]==jid) { return j; } }
247: return -1;
248: }
249:
250: // --------------------------------------------------------------- Find the col
251:
252: function findcol(jid) {
253: for (j=0;j<=maxcol;j++) { if (col[j]==jid) { return j; } }
254: return -1;
255: }
256:
257: // -------------------------------------------------------------- Map out a row
258: //
259: // b&rowID&colID:inObj:outObj:outCond&...
260: // h&rowID&incolID:outcolID&inObj:outObj&inupdown:outupdown
261: // v&colID&inObj:outObj&updown
262: //
263: // returns middle (col number of middle of obj1)
264: // sets colmap (map of cols with object numbers)
265:
266: function maprow (jid,obj1,ign) {
267: middle=-1;
268: for (j=0;j<=maxcol;j++) { colmap[j]=0; }
269: if (rowcont[jid]!='') {
270: data2=rowcont[jid].split(':');
271: for (j=0;j<data2.length;j++) {
272: data3=obj[data2[j]].split('&');
273: if (data3[0]=='b') {
274: left=maxcol;
275: right=0;
276: for (k=2;k<data3.length;k++) {
277: thiscol=col[data3[k].split(':')[0]];
278: if (thiscol<left) { left=thiscol; }
279: if (thiscol>right) { right=thiscol; }
280: }
281: }
282: if (data3[0]=='h') {
283: data4=data3[2].split(':');
284: if (col[data4[1]]>col[data4[0]]) {
285: left=col[data4[0]];
286: right=col[data4[1]];
287: } else {
288: right=col[data4[0]];
289: left=col[data4[1]];
290: }
291: }
292: if (data3[0]=='v') { left=col[data3[1]]; right=left; }
293: if (data2[j]==obj1) { middle=Math.round((left+right)/2); }
294: if ((data3[0]!='h') || (ign!=1)) {
295: for (k=left;k<=right;k++) { colmap[k]=data2[j]; }
296: } else {
297: colmap[left]=data2[j];
298: colmap[right]=data2[j];
299: }
300: }
301: }
302: return middle;
303: }
304:
305: // --------------------------------------------------------- Find hole in a row
306: // jid: rowID
307: // kid: colID, find point close to this
308: // dkid: destination colID
309: // returns colID
310:
311: function comingthru (jid,kid,dkid) {
312: maprow(jid,-1,1);
313: knum=col[kid];
314: if (colmap[knum]==0) { return kid; }
315: right=-1;
316: for (k=knum+1;(k<colmap.length) && (right==-1);k++) {
317: if ((right==-1) && (colmap[k]!=colmap[knum])) { right=k; }
318: }
319: left=-1;
320: for (k=knum-1;(k>=0) && (left==-1);k--) {
321: if ((left==-1) && (colmap[k]!=colmap[knum])) { left=k; }
322: }
323: kup=-1;
324: // if ((left==-1) && (right==-1)) { right=colmap.length; }
325: dknum=col[dkid];
326: dleft=left-dknum;
327: dright=right-dknum;
328: if (dleft<0) { dleft=-dleft; }
329: if (dright<0) { dright=-dright; }
330: if ((dright<=dleft) && (right!=-1)) { kup=right; }
331: if ((dright>=dleft) && (left!=-1)) { kup=left; }
332: if (colmap[kup]==0) { return findcol(kup); }
333: if (kup==right) { kup--; }
334: insertcol(kup,1);
335: return maxcol;
336: }
337:
338: // ----------------------------------------------------- Insert port into block
339: // obj1: object number
340: // d: direction from middle (>0: right, <0 left)
341: // inout: in or out port (1: in, 2: out)
342: // linkobj: object that the link goes to/comes from
343: // sets incol,inrow or outcol,outrow
344:
345: function insertport (obj1,d,inout,linkobj) {
346: data1=obj[obj1].split('&');
347: middle=maprow(data1[1],obj1,0);
348: if (inout==1) {
349: inrow=data1[1];
350: } else {
351: outrow=data1[1];
352: }
353: if (d>0) {
354: for (k=middle;(colmap[k]==obj1) && (k<colmap.length);k++) { data3[k]=0; }
355: } else {
356: for (k=middle;(colmap[k]==obj1) && (k>=0);k--) { data3[k]=0; }
357: }
358: for (k=2;k<data1.length;k++) {
359: data2=data1[k].split(':');
360: data3[col[data2[0]]]=data2[inout];
361: }
362: port=-1;
363: if (d>0) {
364: for (k=middle;(colmap[k]==obj1) && (k<colmap.length);k++) {
365: if ((data3[k]==0) && (colmap[k]==obj1) && (port==-1)) { port=k; }
366: }
367: } else {
368: for (k=middle;(colmap[k]==obj1) && (k>=0);k--) {
369: if ((data3[k]==0) && (colmap[k]==obj1) && (port==-1)) { port=k; }
370: }
371: }
372:
373: if (port==-1) {
374: if (colmap[k]==0) {
375: port=k;
376: if (inout==1) {
377: data1[data1.length]=findcol(port)+":"+linkobj+":0:0";
378: } else {
379: data1[data1.length]=findcol(port)+":0:"+linkobj+":0";
380: }
381: } else {
382: if (d>0) {
383: insertcol(k-1,2);
384: port=k;
385: } else {
386: insertcol(k,2);
387: port=k+1;
388: }
389: if (inout==1) {
390: data1[data1.length]=maxcol+":"+linkobj+":0:0";
391: } else {
392: data1[data1.length]=maxcol+":0:"+linkobj+":0";
393: }
394: }
395: } else {
396: portfound=-1;
397: for (k=2;k<data1.length;k++) {
398: data2=data1[k].split(':');
399: if (col[data2[0]]==port) {
400: data2[inout]=linkobj;
401: data1[k]=data2.join(':');
402: portfound=1;
403: }
404: }
405: if (portfound==-1) {
406: if (inout==1) {
407: data1[data1.length]=findcol(port)+":"+linkobj+":0:0";
408: } else {
409: data1[data1.length]=findcol(port)+":0:"+linkobj+":0";
410: }
411: }
412: }
413: if (inout==1) {
414: incol=findcol(port);
415: coltype[incol]=2;
416: } else {
417: outcol=findcol(port);
418: coltype[outcol]=2;
419: }
420: obj[obj1]=data1.join('&');
421: }
422:
423: // ---------------------------- Make a new object and add it to the row content
424:
425: function addobj(kjid,objs) {
426: if (rowcont[kjid]!='') { rowcont[kjid]+=':'; }
427: rowcont[kjid]+=obj.length;
428: obj[obj.length]=objs;
429: }
430:
431: // ---------------------------------------- Make horizontal connection for hrid
432: // hoffs=-1: this line goes on top of hrid
433:
434: function horizontal(hrid,hoffs,hfcol,htcol,hdest,hends) {
435: hcrid=-1;
436: if (hoffs==-1) {
437: hbrid=findrow(row[hrid]-1);
438: } else {
439: hbrid=findrow(row[hrid]+1);
440: }
441: if (hbrid!=-1) {
442: maprow(hbrid,-1,0);
443: hcrid=hbrid;
444: if (col[hfcol]>col[htcol]) { left=col[htcol]; right=col[hfcol]; }
445: else { right=col[htcol]; left=col[hfcol]; }
446: if (colmap[left]!=0) {
447: hcrid=-1;
448: } else {
449: if (colmap[right]!=0) {
450: hcrid=-1;
451: } else {
452: for (kh=left+1;kh<right;kh++) {
453: if (colmap[kh]!=0) {
454: if (obj[colmap[kh]].split('&')[0]!='v') { hcrid=-1; }
455: }
456: }
457: }
458: }
459: }
460:
461: if (hcrid==-1) {
462: insertrow(row[hrid]+hoffs,1,hfcol,htcol);
463: addobj(maxrow,'h&'+maxrow+'&'+hfcol+':'+htcol+'&'+hdest+'&'+hends);
464: } else {
465: addobj(hcrid,'h&'+hcrid+'&'+hfcol+':'+htcol+'&'+hdest+'&'+hends);
466: }
467: }
468:
469: // ----------------------------------------------------------- Join two objects
470: // Links obj1 with obj2
471:
472: function joinres (obj1,obj2) {
473: data3=obj[obj1].split('&');
474: sum=0;
475: for (k=2;k<data3.length;k++) { sum+=col[data3[k].split(':')[0]]; }
476: outmiddle=sum/(data3.length-2);
477: data3=obj[obj2].split('&');
478: sum=0;
479: for (k=2;k<data3.length;k++) { sum+=col[data3[k].split(':')[0]]; }
480: inmiddle=sum/(data3.length-2);
481: d=inmiddle-outmiddle;
482: insertport(obj1,d,2,obj2);
483: insertport(obj2,-d,1,obj1);
484: dest=obj1+':'+obj2;
485: if (row[inrow]<row[outrow]) {
486: updown=1;
487: tcol=comingthru(inrow,incol,outcol);
488: horizontal(inrow,-1,tcol,incol,dest,'-1:-1');
489: addobj(inrow,'v&'+tcol+'&'+dest+'&1');
490: incol=tcol;
491: tcol=comingthru(outrow,outcol,incol);
492: horizontal(outrow,0,outcol,tcol,dest,'1:1');
493: addobj(outrow,'v&'+tcol+'&'+dest+'&1');
494: outcol=tcol;
495: } else {
496: updown=-1;
497: }
498:
499: if (inrow==outrow) {
500: tcol=comingthru(inrow,incol,outcol);
501: horizontal(inrow,-1,tcol,incol,dest,'-1:-1');
502: addobj(inrow,'v&'+tcol+'&'+dest+'&1');
503: horizontal(outrow,0,outcol,tcol,dest,'1:1');
504: } else {
505: if (updown==-1) {
506: for (kr=row[outrow]+1;kr<row[inrow];kr++) {
507: rid=findrow(kr);
508: ncol=comingthru(rid,outcol,incol);
509: if (ncol!=outcol) {
510: insertrow(k-1,1,outcol,ncol);
511: if (col[ncol]>col[incol]) {
512: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+ncol+'&'+dest+'&-1:1');
513: } else {
514: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+ncol+'&'+dest+'&1:-1');
515: }
516: }
517: addobj(rid,'v&'+ncol+'&'+dest+'&-1');
518: outcol=ncol;
519: }
520: if (incol!=outcol) {
521: insertrow(row[inrow]-1,1,outcol,incol);
522: if (col[outcol]>col[incol]) {
523: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+incol+'&'+dest+'&-1:1');
524: } else {
525: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+incol+'&'+dest+'&1:-1');
526: }
527: }
528: } else {
529: for (kr=row[outrow]-1;kr>row[inrow];kr--) {
530: rid=findrow(kr);
531: ncol=comingthru(rid,outcol,incol);
532: if (ncol!=outcol) {
533: insertrow(k,1,outcol,ncol);
534: if (col[outcol]>col[ncol]) {
535: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+ncol+'&'+dest+'&1:-1');
536: } else {
537: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+ncol+'&'+dest+'&-1:1');
538: }
539: }
540: addobj(rid,'v&'+ncol+'&'+dest+'&1');
541: outcol=ncol;
542: }
543: if (incol!=outcol) {
544: insertrow(row[inrow],1,outcol,incol);
545: if (col[outcol]>col[incol]) {
546: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+incol+'&'+dest+'&1:-1');
547: } else {
548: addobj(maxrow,'h&'+maxrow+'&'+outcol+':'+incol+'&'+dest+'&-1:1');
549: }
550: }
551: }
552: }
553: }
554: // -------------------------------------------------------------- Draw an entry
555:
556: function drawcell (rtype,ctype,what,cm,mode2) {
557: doc.document.write('<td width='+cw[ctype]+'>');
558: if (what!='') {
559: if (cm!=0) {
560: if (what.substring(0,2)=='r:') {
561: doc.document.write(what);
562: } else {
563: doc.document.write('<img src="'+rtype+'.'+ctype+'.'+what+'.gif">');
564: }
565: } else {
566: doc.document.write('<img src="'+rtype+'.'+ctype+'.'+what+'.gif">');
567: }
568: }
569: doc.document.write('</td>');
570: }
571:
572: // ----------------------------------------------------------------- Draw a row
573:
574: function drawrow (jid,mode2) {
575: for (j=0;j<=maxcol;j++) {
576: colmap[j]=''; colmap2[j]=''; colmap3[j]=''; colmap4[j]=''; colmap5[j]='';
577: }
578: doc.document.writeln('<tr height='+rh[rowtype[jid]]+'>');
579: if (rowcont[jid]!='') {
580: data2=rowcont[jid].split(':');
581: for (jk=0;jk<data2.length;jk++) {
582: data3=obj[data2[jk]].split('&');
583: if (data3[0]=='b') {
584: left=maxcol;
585: leftin=maxcol;
586: leftout=maxcol;
587: right=0;
588: rightin=0;
589: rightout=0;
590: for (k=2;k<data3.length;k++) {
591: data1=data3[k].split(':');
592: thiscol=col[data1[0]];
593: if (thiscol<left) { left=thiscol; }
594: if (thiscol>right) { right=thiscol; }
595: if (data1[1]!=0) {
596: if (thiscol<leftin) { leftin=thiscol; }
597: if (thiscol>rightin) { rightin=thiscol; }
598: colmap4[thiscol]=data1[1];
599: }
600: if (data1[2]!=0) {
601: if (thiscol<leftout) { leftout=thiscol; }
602: if (thiscol>rightout) { rightout=thiscol; }
603: if (data1[3]!=0) {
604: colmap3[thiscol]='r:'+data1[3];
605: colmap5[thiscol]=2;
606: } else {
607: colmap3[thiscol]='ctd';
608: }
609: }
610: }
611: middle=Math.round((left+right)/2);
612: colmap[middle]='r:'+data2[jk];
613: colmap5[middle]=1;
614:
615: if (rightin>middle) {
616: for (k=middle+1;k<rightin;k++) {
617: if (colmap4[k]!='') {
618: colmap[k]='rlt';
619: } else {
620: colmap[k]='rl';
621: }
622: }
623: colmap[rightin]='tl';
624: }
625: if (leftin<middle) {
626: for (k=middle-1;k>leftin;k--) {
627: if (colmap4[k]!='') {
628: colmap[k]='lrt';
629: } else {
630: colmap[k]='lr';
631: }
632: }
633: colmap[leftin]='tr';
634: }
635:
636: if (leftout>middle) {
637: if (colmap3[leftout]!='') {
638: colmap2[middle]='tr';
639: }
640: }
641: if (leftout==middle) {
642: if (rightout==middle) { colmap2[middle]='td'; }
643: if (rightout>middle) { colmap2[middle]='rtd'; }
644: }
645: if (leftout<middle) {
646: if (rightout<middle) { colmap2[middle]='tl'; }
647: if (rightout==middle) { colmap2[middle]='tdl'; }
648: if (rightout>middle) {
649: if (colmap3[middle]!='') {
650: colmap2[middle]='rtdl';
651: } else {
652: colmap2[middle]='rtl';
653: }
654: }
655: }
656: if (leftout<middle) {
657: for (k=middle-1;k>leftout;k--) {
658: if (colmap3[k]!='') {
659: colmap2[k]='rld';
660: } else {
661: colmap2[k]='rl';
662: }
663: }
664: colmap2[leftout]='rd';
665: }
666: if (rightout>middle) {
667: for (k=middle+1;k<rightout;k++) {
668: if (colmap3[k]!='') {
669: colmap2[k]='lrd';
670: } else {
671: colmap2[k]='lr';
672: }
673: }
674: colmap2[rightout]='ld';
675: }
676: }
677: if (data3[0]=='h') {
678: data4=data3[2].split(':');
679: if (col[data4[1]]>col[data4[0]]) {
680: left=col[data4[0]];
681: right=col[data4[1]];
682: thisarrow='lr';
683: } else {
684: right=col[data4[0]];
685: left=col[data4[1]];
686: thisarrow='rl';
687: }
688: if (data3[4].split(':')[0]==1) {
689: colmap[left]='tr';
690: } else {
691: colmap[left]='rd'; colmap2[left]='utd'; colmap3[left]='utd';
692: }
693: for (k=left+1;k<right;k++) {
694: if (colmap[k]=='') {
695: colmap[k]=thisarrow;
696: } else {
697: colmap[k]='tdrl';
698: }
699: }
700: if (data3[4].split(':')[1]==1) {
701: colmap[right]='tl';
702: } else {
703: colmap[right]='ld'; colmap2[right]='utd'; colmap3[right]='utd';
704: }
705: }
706: if (data3[0]=='v') {
707: left=col[data3[1]];
708: if (colmap[left]=='') {
709: if (data3[3]==1) { colmap[left]='dt'; } else { colmap[left]='td'; }
710: } else {
711: colmap[left]='tdrl';
712: }
713: colmap2[left]='utd'; colmap3[left]='utd';
714: }
715: }
716: rtype=rowtype[jid];
717: for (k=0;k<=maxcol;k++) {
718: drawcell(rtype,coltype[rcol[k]],colmap[k],colmap5[k],mode2);
719: }
720: if (rowtype[jid]==2) {
721: doc.document.writeln('</tr><tr>');
722: for (k=0;k<=maxcol;k++) {
723: drawcell(1,coltype[rcol[k]],colmap2[k],colmap5[k],mode2);
724: }
725: doc.document.writeln('</tr><tr>');
726: for (k=0;k<=maxcol;k++) {
727: drawcell(1,coltype[rcol[k]],colmap3[k],colmap5[k],mode2);
728: }
729: }
730: }
731: doc.document.writeln('</tr>');
732: }
733:
734: // ------------------------------------------------------------- Draw the table
735:
736: function draw (mode,mode2) {
737: if (mode=='debug') {
738: var options="scrollbars=1,resizable=1,menubar=0,width=200,height=300";
739: deb=open("","debout",options);
740: deb.document.clear();
741: deb.document.writeln('<html><body bgcolor="#FFFFFF">');
742:
743: for (k=0;k<obj.length;k++) { deb.document.writeln(k+' - '+obj[k]+'<br>'); }
744: deb.document.writeln('<hr>Cols: '+col+'<hr>Rows: '+row+'<hr>');
745: for (kr=0;kr<=maxrow;kr++) {
746: kid=findrow(kr);
747: maprow(kid,-1,0);
748: deb.document.writeln(kid+' : '+colmap+' '+rowcont[kid]+"<br>");
749: }
750:
751: deb.document.writeln('</body></html>');
752: deb.document.close();
753: }
754:
755: for (k=0;k<=maxrow;k++) { rrow[row[k]]=k; }
756: for (k=0;k<=maxcol;k++) { rcol[col[k]]=k; }
757: rh[1]=30;
758: rh[2]=60;
759: cw[1]=30;
760: cw[2]=60;
761: var options="scrollbars=1,resizable=1,menubar=0,width=200,height=300";
762: doc=open("","mapout",options);
763: doc.document.clear();
764: doc.document.writeln('<html><body bgcolor="#AAFFAA">');
765: doc.document.writeln('<table cellpadding=0 cellspacing=0 border=0>');
766:
767: for (kr=0;kr<=maxrow;kr++) { drawrow(rrow[kr],mode2); }
768:
769: doc.document.writeln('</table>');
770: doc.document.writeln('</body></html>');
771: doc.document.close();
772:
773: }
774:
775: function main() {
776: row[0]=0;
777: row[1]=1;
778: row[2]=2;
779: rowcont[0]='5:4';
780: rowtype[0]=2;
781: rowcont[1]='3';
782: rowtype[1]=2;
783: rowcont[2]='7';
784: rowtype[2]=2;
785: insertcol(0,1);
786: insertcol(0,1);
787: insertcol(0,1);
788: insertcol(0,1);
789: insertcol(0,1);
790: insertcol(0,1);
791: insertcol(0,1);
792: insertcol(0,1);
793: insertcol(0,1);
794: insertcol(0,1);
795: insertcol(0,1);
796: insertcol(0,1);
797: insertcol(0,1);
798: swap=col[8];
799: col[8]=col[3];
800: col[3]=swap;
801: swap=col[6];
802: col[6]=col[4];
803: col[4]=swap;
804: maxrow=2;
805: obj[3]='b&1&4:0:0:0';
806: coltype[4]=2;
807: obj[4]='b&0&8:0:0:0';
808: coltype[8]=2;
809: obj[5]='b&0&2:0:0:0';
810: coltype[2]=2;
811: obj[7]='b&2&5:0:0:0';
812: coltype[5]=2;
813: joinres(7,4);
814: joinres(4,7);
815: joinres(7,5);
816: joinres(5,7);
817: joinres(7,7);
818: joinres(4,5);
819: joinres(5,5);
820: joinres(3,4);
821: joinres(3,7);
822: joinres(5,3);
823: joinres(7,3);
824: joinres(4,3);
825: draw('debug','edit');
826: }
827:
828: </script>
829: </head>
830:
831: <body onLoad="main()">
832: Hi!
833: </body>
834:
835: </html>
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>