Diff for /rat/client/Attic/code.html between versions 1.4 and 1.12

version 1.4, 2000/06/08 16:19:50 version 1.12, 2000/08/24 15:04:44
Line 9  Resource Assembly Tool Line 9  Resource Assembly Tool
 1/7,1/8,1/10,1/14,1/15,1/16,1/21,1/22,1/29,1/30,1/31,  1/7,1/8,1/10,1/14,1/15,1/16,1/21,1/22,1/29,1/30,1/31,
 2/2,2/3,2/10,2/12,2/13,2/14,2/15,2/17,2/18,2/19,2/20,2/21,2/22,  2/2,2/3,2/10,2/12,2/13,2/14,2/15,2/17,2/18,2/19,2/20,2/21,2/22,
 5/2,5/3,5/4,5/5,5/6,5/8,5/9,5/13,5/18,5/20,5/22,5/24,5/25,  5/2,5/3,5/4,5/5,5/6,5/8,5/9,5/13,5/18,5/20,5/22,5/24,5/25,
 6/7,6/8  6/7,6/8,6/9,6/10,6/12,6/15,7/4,7/26,7/28,7/31,8/5,8/19,8/24
 Gerd Kortemeyer with Scott Harrison  Gerd Kortemeyer with Scott Harrison
 -->  -->
   
Line 21  var row=new Array(); Line 21  var row=new Array();
 var maxrow=-1;  var maxrow=-1;
 var col=new Array();  var col=new Array();
 var maxcol=-1;  var maxcol=-1;
 var lastempty=-2;  
 var colmap=new Array();  var colmap=new Array();
 var colmap2=new Array();  var colmap2=new Array();
 var colmap3=new Array();  var colmap3=new Array();
Line 47  var notclear=0; Line 47  var notclear=0;
 var linkmode=0;  var linkmode=0;
 var lastinfo='';  var lastinfo='';
 var graphdef='no';  var graphdef='no';
   var mode='';
 var mainrun=0;  var mainrun=0;
 var tablemode=0;  var tablemode=0;
 var mostrecent=0;  var mostrecent=0;
Line 55  var zscale=3; Line 56  var zscale=3;
 var disrows=0;  var disrows=0;
 var discols=0;  var discols=0;
   
   var finishdone=0;
   var tim=0;
   var funny='|';
   var reqaction='';
   var canceltim;
   
   var expense=0;
   
 var data1=new Array(1024);  var data1=new Array(1024);
 var data2=new Array(1024);  var data2=new Array(1024);
 var data3=new Array(1024);  var data3=new Array(1024);
 var data4=new Array(1024);  var data4=new Array(1024);
 var data5=new Array(1024);  var data5=new Array(1024);
   
   var inf;
   
 // ------------------------------------------------ Insert a row into the table  // ------------------------------------------------ Insert a row into the table
   
 function insertrow(j,ex1,ex2) {  function insertrow(j,ex1,ex2) {
    var kj;     var kj;
    stored=0;     stored=0;
      expense++; expense++;
    objects1='';     objects1='';
    objects2='';     objects2='';
    for (kj=0;kj<=maxrow;kj++) {     for (kj=0;kj<=maxrow;kj++) {
Line 212  function insertcol(j) { Line 223  function insertcol(j) {
       if ( col[kj]>j ) { col[kj]++; }         if ( col[kj]>j ) { col[kj]++; } 
    }     }
    maxcol++;     maxcol++;
      expense++; expense++;
    col[maxcol]=j+1;     col[maxcol]=j+1;
 }  }
             
Line 335  function comingthru (jid,kid,dkid) { Line 347  function comingthru (jid,kid,dkid) {
   
 function insertport (obj1,d,inout,linkobj) {  function insertport (obj1,d,inout,linkobj) {
   
   
    var k; var port; var revport;     var k; var port; var revport;
    stored=0;     stored=0;
    data1=obj[obj1].split('&');     data1=obj[obj1].split('&');
Line 414  function insertport (obj1,d,inout,linkob Line 425  function insertport (obj1,d,inout,linkob
     
 function addobj(kjid,objs) {  function addobj(kjid,objs) {
    stored=0;     stored=0;
      expense++;
    if (rowcont[kjid]!='') { rowcont[kjid]+=':'; }     if (rowcont[kjid]!='') { rowcont[kjid]+=':'; }
    rowcont[kjid]+=obj.length;     rowcont[kjid]+=obj.length;
    obj[obj.length]=objs;     obj[obj.length]=objs;
Line 473  function delobj(obj1) { Line 485  function delobj(obj1) {
          }           }
       }        }
    }     }
      obj[obj1]='';
 }  }
   
 // --------------------------------------------------------- Garbage collection  // --------------------------------------------------------- Garbage collection
Line 482  function cleanup () { Line 495  function cleanup () {
    var j,kj,i;     var j,kj,i;
    disrows=0;     disrows=0;
    discols=0;     discols=0;
      var emptyspots=0;
    if (lastempty!=obj.length) {  
       insertrow(maxrow);  
       insertcol(maxcol);  
       addobj(maxrow,'e&'+maxcol);  
       lastempty=obj.length;  
    }  
   
    for (kj=0;kj<=maxcol;kj++) { data1[kj]=0; }     for (kj=0;kj<=maxcol;kj++) { data1[kj]=0; }
    for (kj=0;kj<=maxrow;kj++) {     for (kj=0;kj<=maxrow;kj++) {
Line 512  function cleanup () { Line 519  function cleanup () {
               }                }
               if (obj[colmap[j]].substring(0,2)=='b&') {                 if (obj[colmap[j]].substring(0,2)=='b&') { 
                  data1[j]=2;                   data1[j]=2;
                    if (colmap[maxcol]==0) { emptyspots++; }
                  rowtype[kj]=2;                   rowtype[kj]=2;
               }                  }  
            }             }
Line 526  function cleanup () { Line 534  function cleanup () {
        if (rowtype[j]==2) { disrows+=3; }         if (rowtype[j]==2) { disrows+=3; }
        if (rowtype[j]==1) { disrows+=1; }         if (rowtype[j]==1) { disrows+=1; }
    }     }
      if (emptyspots==0) {
         insertrow(maxrow);
         insertcol(maxcol);
         addobj(maxrow,'e&'+maxcol);
         discols++;
         disrows++;
         rowtype[maxrow]=2;
         coltype[maxcol]=2;
      }
   
 }  }
   
 // -------------------------------------------- Delete a condition from a block  // -------------------------------------------- Delete a condition from a block
Line 614  function dellink (linknr) { Line 632  function dellink (linknr) {
 // Links obj1 with obj2, creates new objlink, marks all elements with number  // Links obj1 with obj2, creates new objlink, marks all elements with number
   
 function joinres (obj1,obj2,cond) {  function joinres (obj1,obj2,cond) {
    var k; var kr; var outcol; var incol; var d;  
    stored=0;     stored=0;
      var minexpense;
      var best;
   
      expense=0;
      tryjoin(obj1,obj2,cond,1,1);
      minexpense=expense;
      best=0;
      finishload();
   
      expense=0;
      tryjoin(obj1,obj2,cond,1,-1);
      if (expense<minexpense) {
         best=1;
         minexpense=expense;
      }
      finishload();
   
      expense=0;
      tryjoin(obj1,obj2,cond,-1,1);
      if (expense<minexpense) {
         best=2;
         minexpense=expense;
      }
      finishload();
   
      expense=0;
      tryjoin(obj1,obj2,cond,-1,-1);
      if (expense<minexpense) {
         best=3;
         minexpense=expense;
      }
   
   
      if (best==0) {
         finishload();
         tryjoin(obj1,obj2,cond,1,1);
      }
      if (best==1) {
         finishload();
         tryjoin(obj1,obj2,cond,1,-1);
      }
      if (best==2) {
         finishload();
         tryjoin(obj1,obj2,cond,-1,1);
      }
   
   }
   
   
   function tryjoin(obj1,obj2,cond,d1,d2) {
      var k; var kr; var outcol; var incol; var d; var dest;
   
    dest=objlinks.length;     dest=objlinks.length;
    objlinks[dest]=obj1+':'+obj2+':'+cond;     objlinks[dest]=obj1+':'+obj2+':'+cond;
    data3=obj[obj1].split('&');  
    sum=0;     outcol=insertport(obj1,d1,2,dest);
    for (k=2;k<data3.length;k++) { sum+=col[data3[k].split(':')[0]]; }  
    outmiddle=sum/(data3.length-2);  
    data3=obj[obj2].split('&');  
    sum=0;  
    for (k=2;k<data3.length;k++) { sum+=col[data3[k].split(':')[0]]; }  
    inmiddle=sum/(data3.length-2);  
    d=inmiddle-outmiddle;  
    outcol=insertport(obj1,d,2,dest);  
    insertcond(obj1,outcol,cond);     insertcond(obj1,outcol,cond);
    incol=insertport(obj2,-d,1,dest);     incol=insertport(obj2,d2,1,dest);
    if (row[inrow]==(row[outrow]+1)) {     if (row[inrow]==(row[outrow]+1)) {
       insertrow(row[outrow],-1,-1);        insertrow(row[outrow],-1,-1);
    }     }
Line 822  function delres (obj1,recon) { Line 883  function delres (obj1,recon) {
                  thiscond+='('+outobjscond[k2]+')';                   thiscond+='('+outobjscond[k2]+')';
               }                }
               condnr=0;                condnr=0;
               if (thiscond!='') { condnr=newcondition(thiscond,'normal'); }                 if (thiscond!='') { condnr=newcondition(thiscond,'normal'); }
                 save(); 
               joinres(inobjs[k],outobjs[k2],condnr);                joinres(inobjs[k],outobjs[k2],condnr);
           }            }
       }        }
Line 853  function drawcell (rtype,ctype,what,cm,o Line 915  function drawcell (rtype,ctype,what,cm,o
             ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]              ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]
              +' src="condition.gif">');                         +' src="condition.gif">');          
         } else {          } else {
            parent.mapout.document.write             if (what=='rs:') {
             ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]+' src="'                parent.mapout.document.write
              +rtype+'.'+ctype+'.'+what+'.gif">');                 ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]
                  +' src="start.gif">');
              } else {
                if (what=='rf:') {
                   parent.mapout.document.write
                   ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]
                   +' src="finish.gif">');
                } else {
                   parent.mapout.document.write
                   ('<img border=0 width='+cw[ctype]+' height='+rh[rtype]
                   +' src="'+rtype+'.'+ctype+'.'+what+'.gif">');
                }
              }
         }          }
      }       }
      if (obj1!='') {       if (obj1!='') {
Line 887  function rescolor (ext,typ) { Line 961  function rescolor (ext,typ) {
    if (ext=='true') { bc='55'; } else { bc='99'; }     if (ext=='true') { bc='55'; } else { bc='99'; }
    if (typ=='mandatory') { rc='FF'; } else { rc='BB'; }     if (typ=='mandatory') { rc='FF'; } else { rc='BB'; }
    if (typ=='optional') { gc='BB'; } else { gc='FF'; }     if (typ=='optional') { gc='BB'; } else { gc='FF'; }
    if ((typ=='start') || (typ=='end')) { rc='AA'; gc='AA'; bc='FF'; }     if ((typ=='start') || (typ=='finish')) { rc='AA'; gc='AA'; bc='FF'; }
    return '#'+rc+gc+bc;     return '#'+rc+gc+bc;
 }  }
   
Line 902  function condcolor(typ) { Line 976  function condcolor(typ) {
 // ----------------------------------------------------------------- Draw a row  // ----------------------------------------------------------------- Draw a row
   
 function drawrow (jid) {  function drawrow (jid) {
 var j; var jk; var k;  var ck;  var j; var jk; var k;  var ck; var rtype;
 var objd1=new Array();  var objd1=new Array();
 var objd2=new Array();  var objd2=new Array();
 var notempty=new Array();  var notempty=new Array();
Line 921  if (rowtype[jid]!=0) { Line 995  if (rowtype[jid]!=0) {
       data3=obj[data2[jk]].split('&');        data3=obj[data2[jk]].split('&');
       if (data3[0]=='b') {        if (data3[0]=='b') {
          data1=objcont[data2[jk]].split(':');           data1=objcont[data2[jk]].split(':');
            rtype=data1[3];
          ck=rescolor(data1[2],data1[3]);           ck=rescolor(data1[2],data1[3]);
          left=maxcol;           left=maxcol;
          leftin=maxcol;           leftin=maxcol;
Line 958  if (rowtype[jid]!=0) { Line 1033  if (rowtype[jid]!=0) {
          }           }
          for (k=left;k<=right;k++) { notempty[k]=1; colmap5[k]=ck; }           for (k=left;k<=right;k++) { notempty[k]=1; colmap5[k]=ck; }
          middle=Math.round((left+right)/2);           middle=Math.round((left+right)/2);
          colmap[middle]='r:';           if (rtype=='start') {
               colmap[middle]='rs:';
            } else {
               if (rtype=='finish') {
                  colmap[middle]='rf:';
               } else {
                  colmap[middle]='r:';
               }
            }
          objd1[middle]+='r&'+data2[jk];           objd1[middle]+='r&'+data2[jk];
   
          if (rightin>middle) {           if (rightin>middle) {
Line 1077  if (rowtype[jid]!=0) { Line 1160  if (rowtype[jid]!=0) {
    }     }
    if (rowtype[jid]==2) {     if (rowtype[jid]==2) {
       parent.mapout.document.writeln('</tr>');        parent.mapout.document.writeln('</tr>');
       parent.mapout.document.writeln('<tr height=30>');        parent.mapout.document.writeln('<tr height='+rh[1]+'>');
       for (k=0;k<=maxcol;k++) {        for (k=0;k<=maxcol;k++) {
        drawcell(1,coltype[rcol[k]],colmap2[k],colmap5[k],objd2[k],jid,k,         drawcell(1,coltype[rcol[k]],colmap2[k],colmap5[k],objd2[k],jid,k,
                 notempty[k]);                  notempty[k]);
       }        }
       parent.mapout.document.writeln('</tr>');        parent.mapout.document.writeln('</tr>');
       parent.mapout.document.writeln('<tr height=30>');        parent.mapout.document.writeln('<tr height='+rh[1]+'>');
       for (k=0;k<=maxcol;k++) {        for (k=0;k<=maxcol;k++) {
        drawcell(1,coltype[rcol[k]],colmap3[k],colmap6[k],objd2[k],jid,k,         drawcell(1,coltype[rcol[k]],colmap3[k],colmap6[k],objd2[k],jid,k,
                 notempty[k]);                  notempty[k]);
Line 1125  function draw () { Line 1208  function draw () {
       parent.mapout.document.writeln(        parent.mapout.document.writeln(
        '<table cellpadding=0 cellspacing=0 border=0 rows='         '<table cellpadding=0 cellspacing=0 border=0 rows='
        +disrows+' cols='+discols+'>');         +disrows+' cols='+discols+'>');
       for (kr=0;kr<=maxrow;kr++) {         for (kr=0;kr<=maxrow;kr++) {
         message("Generating Output Row "+kr);           message("Generating Output Row "+kr); 
         drawrow(rrow[kr]);           drawrow(rrow[kr]); 
       }        }
Line 1153  function draw () { Line 1236  function draw () {
   
 function infoclear() {  function infoclear() {
  if (notclear!=1) {   if (notclear!=1) {
   var options="scrollbars=1,resizable=1,menubar=0,width=400,height=300";    infcheck();
   var inf=open("","infout",options);  
   inf.document.clear();    inf.document.clear();
   inf.document.writeln    inf.document.writeln
    ('<html><body bgcolor="#FFFFFF"><table><tr><td>'+     ('<html><body bgcolor="#FFFFFF"><table><tr><td>'+
Line 1189  function infoclear() { Line 1271  function infoclear() {
  }   }
 }  }
   
   // ------------------------------------------------------------ Open inf window
   
   function infopen() {
      var options="scrollbars=1,resizable=1,menubar=0,width=400,height=300";
      inf=open("","infout",options);
   }
   
   // -------------------------------------------------------- Do inf status check
   
   function infcheck() {
      if (inf.closed) {
         infopen();
      }
   }
   
 // --------------------------------------------------- Prints out resource info  // --------------------------------------------------- Prints out resource info
   
 function info(infostr) {  function info(infostr) {
  if ((editmode!=1) && (infostr!=lastinfo)) {   if ((editmode!=1) && (infostr!=lastinfo)) {
   notclear=1;    notclear=1;
   var options="scrollbars=1,resizable=1,menubar=0,width=400,height=300";    infcheck();
   var inf=open("","infout",options);  
   inf.document.clear();    inf.document.clear();
   inf.document.writeln(    inf.document.writeln(
    '<html><body bgcolor="#FFFFFF">'+     '<html><body bgcolor="#FFFFFF">'+
Line 1225  function info(infostr) { Line 1321  function info(infostr) {
         data2=objcont[data1[1]].split(':');          data2=objcont[data1[1]].split(':');
         inf.document.write('<b>');          inf.document.write('<b>');
         if (data2[2]=='true') { inf.document.write('External '); }          if (data2[2]=='true') { inf.document.write('External '); }
         inf.document.write('Resource');          if (data2[3]=='start') {
              inf.document.writeln('<b>Start</b>');
           } else {
              if (data2[3]=='finish') {
                 inf.document.writeln('<b>Finish</b>');
              } else {
                 inf.document.writeln('<b>Resource</b>');
              }
           }
         if (data2[3]=='mandatory') {          if (data2[3]=='mandatory') {
            inf.document.write(' (Mandatory)');             inf.document.write(' (Mandatory)');
         }          }
Line 1285  function insertreslink(infostr) { Line 1389  function insertreslink(infostr) {
    var tobj;     var tobj;
    var nobj;     var nobj;
    var cobj;     var cobj;
      var cid;
      var rid;
    data1=infostr.split('&');     data1=infostr.split('&');
    data2=obj[data1[0]].split('&');     data2=obj[data1[0]].split('&');
    lnr=data2[data2.length-2];     lnr=data2[data2.length-2];
Line 1302  function insertreslink(infostr) { Line 1408  function insertreslink(infostr) {
    dellink(lnr);     dellink(lnr);
    newresource(rid,cid,'','','false','normal');     newresource(rid,cid,'','','false','normal');
    nobj=obj.length-1;     nobj=obj.length-1;
      save();
    joinres(fobj,nobj,cobj);     joinres(fobj,nobj,cobj);
      save();
      joinres(nobj,tobj,0);
   }
   
   // -------------------------------------------- Insert resource after condition
   
   function insertcondlink(cid,lnr) {
      var fobj;
      var tobj;
      var nobj;
      var cobj;
      data3=objlinks[lnr].split(':');
      fobj=data3[0];
      tobj=data3[1];
      cobj=data3[2];
      rid=(obj[fobj].split('&'))[1];
      insertrow(row[rid]);
      dellink(lnr);
      newresource(maxrow,cid,'','','false','normal');
      nobj=obj.length-1;
      save();
      joinres(fobj,nobj,cobj);
      save();
    joinres(nobj,tobj,0);     joinres(nobj,tobj,0);
 }  }
   
Line 1312  function handler(infostr) { Line 1442  function handler(infostr) {
   var k;    var k;
   editmode=1;    editmode=1;
   notclear=1;    notclear=1;
   var options="scrollbars=1,resizable=1,menubar=0,width=400,height=300";    infcheck();
   var inf=open("","infout",options);  
   inf.document.clear();    inf.document.clear();
   inf.document.writeln(    inf.document.writeln(
    '<html><body bgcolor="#FFFFFF">'+     '<html><body bgcolor="#FFFFFF">'+
Line 1366  function handler(infostr) { Line 1495  function handler(infostr) {
            '<a href="javascript:opener.notclear=0;opener.infoclear();'             '<a href="javascript:opener.notclear=0;opener.infoclear();'
    +'opener.dellink('+data1[3]+');opener.editmode=0;opener.draw('     +'opener.dellink('+data1[3]+');opener.editmode=0;opener.draw('
          +');">Delete Link</a>');           +');">Delete Link</a>');
   
           inf.document.writeln('<br><a href="javascript:'+
            'opener.insertcondlink('+data1[1]+','+data1[3]+');'+
            'opener.editmode=0;opener.notclear=0;opener.infoclear();opener.draw('
                                 +');">Insert Resource Into Link</a>');
   
   
 } else {  } else {
      if (data1[0]=='r') {       if (data1[0]=='r') {
        if (linkmode!=0) {         if (linkmode!=0) {
Line 1376  function handler(infostr) { Line 1512  function handler(infostr) {
         inf.document.writeln('<b>Linked Resources</b>');          inf.document.writeln('<b>Linked Resources</b>');
         draw();          draw();
        } else {         } else {
         inf.document.writeln('<b>Resource</b>');  
         data2=objcont[data1[1]].split(':');          data2=objcont[data1[1]].split(':');
           if (data2[3]=='start') {
              inf.document.writeln('<b>Start</b>');
           } else {
              if (data2[3]=='finish') {
                 inf.document.writeln('<b>Finish</b>');
              } else {
                 inf.document.writeln('<b>Resource</b>');
              }
           }
         inf.document.write(          inf.document.write(
          '<form name=resinfo><table><tr><td>Title:</td><td>'           '<form name=resinfo><table><tr><td>Title:</td><td>'
         +'<input type=text name=t size=30 value="'          +'<input type=text name=t size=30 value="'
         +data2[0]+'"></td></tr><tr><td>URL:</td><td>'          +data2[0]+'"><input type=hidden name=h value='+data2[3]+'></td></tr>');
       if ((data2[3]!='start') && (data2[3]!='finish')) {
              inf.document.write('<tr><td>URL:</td><td>'
         +'<input type=text name=u size=30 value="'+data2[1]+'"></td></tr>'          +'<input type=text name=u size=30 value="'+data2[1]+'"></td></tr>'
         +'<tr><td>External:</td><td><input type=checkbox name=e');          +'<tr><td>External:</td><td><input type=checkbox name=e');
         if (data2[2]=='true') { inf.document.write(' checked'); }          if (data2[2]=='true') { inf.document.write(' checked'); }
         inf.document.write('></td></tr>'          inf.document.write('></td></tr>'
         +'<tr><td colspan=2><input type=hidden name=h value='+data2[3]          +'<tr><td colspan=2>'
         +'><input type=radio name=y value=normal '+          +'<input type=radio name=y value=normal '+
  'onClick="self.document.forms.resinfo.elements.h.value='+"'normal'"+'"');   'onClick="self.document.forms.resinfo.elements.h.value='+"'normal'"+'"');
      if (data2[3]=='normal') { inf.document.write(' checked'); }       if (data2[3]=='normal') { inf.document.write(' checked'); }
      inf.document.write(       inf.document.write(
Line 1398  function handler(infostr) { Line 1544  function handler(infostr) {
       '> Mandatory&nbsp;&nbsp;<input type=radio name=y value=optional '+        '> Mandatory&nbsp;&nbsp;<input type=radio name=y value=optional '+
  'onClick="self.document.forms.resinfo.elements.h.value='+"'optional'"+'"');   'onClick="self.document.forms.resinfo.elements.h.value='+"'optional'"+'"');
      if (data2[3]=='optional') { inf.document.write(' checked'); }       if (data2[3]=='optional') { inf.document.write(' checked'); }
      inf.document.write('> Optional</td></tr>'       inf.document.write('> Optional</td></tr>');
         +'<tr><td colspan=2><a href="javascript:opener.editmode=0;'      } else {
        inf.document.write(
           '<tr><td><input type=hidden name=e value=false>'
                  +'<input type=hidden name=u value=""></td></tr>');
       }
           inf.document.writeln(
            '<tr><td colspan=2><a href="javascript:opener.editmode=0;'
         +'opener.notclear=0;opener.objcont['+data1[1]          +'opener.notclear=0;opener.objcont['+data1[1]
         +']=opener.escape(self.document.forms.resinfo.elements.t.value)+'+"':'"          +']=opener.escape(self.document.forms.resinfo.elements.t.value)+'+"':'"
         +'+opener.escape(self.document.forms.resinfo.elements.u.value)+'+"':'"          +'+opener.escape(self.document.forms.resinfo.elements.u.value)+'+"':'"
Line 1409  function handler(infostr) { Line 1561  function handler(infostr) {
         +'<b>Change to above values</b></a>&nbsp;&nbsp;'          +'<b>Change to above values</b></a>&nbsp;&nbsp;'
         +' <a href="javascript:self.document.forms.resinfo.reset()">Reset</a>'          +' <a href="javascript:self.document.forms.resinfo.reset()">Reset</a>'
         +'</td></tr></table>');          +'</td></tr></table>');
       if ((data2[3]!='start') && (data2[3]!='finish')) {
         inf.document.writeln(          inf.document.writeln(
            '<a href="javascript:opener.notclear=0;opener.infoclear();'             '<a href="javascript:opener.notclear=0;opener.infoclear();'
          +'opener.delres('+data1[1]+',0);opener.editmode=0;opener.draw('           +'opener.delres('+data1[1]+',0);opener.editmode=0;opener.draw('
Line 1417  function handler(infostr) { Line 1570  function handler(infostr) {
           '<br><a href="javascript:opener.notclear=0;opener.infoclear();'            '<br><a href="javascript:opener.notclear=0;opener.infoclear();'
          +'opener.delres('+data1[1]+',1);opener.editmode=0;opener.draw('           +'opener.delres('+data1[1]+',1);opener.editmode=0;opener.draw('
          +');">Delete Resource (preserving links)</a>');           +');">Delete Resource (preserving links)</a>');
       }
       if (data2[3]!='finish') {
         inf.document.writeln(          inf.document.writeln(
           '<br><a href="javascript:opener.editmode=0;opener.notclear=0;'            '<br><a href="javascript:opener.editmode=0;opener.notclear=0;'
          +'opener.linkmode='+data1[1]+';'           +'opener.linkmode='+data1[1]+';'
          +'opener.infoclear();">Link Resource</a>');           +'opener.infoclear();">Link Resource</a>');
       }
       }        }
      } else {       } else {
         linkmode=0;          linkmode=0;
Line 1457  function empty(rid,k) { Line 1613  function empty(rid,k) {
   editmode=1;    editmode=1;
   notclear=1;    notclear=1;
   linkmode=0;    linkmode=0;
   var options="scrollbars=1,resizable=1,menubar=0,width=400,height=300";    infcheck();
   var inf=open("","infout",options);  
   inf.document.clear();    inf.document.clear();
   inf.document.writeln(    inf.document.writeln(
    '<html><body bgcolor="#FFFFFF">'+     '<html><body bgcolor="#FFFFFF">'+
Line 1523  function save() { Line 1678  function save() {
   var k;    var k;
   if (graphdef=='yes') {    if (graphdef=='yes') {
    parent.server.document.forms.storage.output.value='graphdef<:>yes';     parent.server.document.forms.storage.output.value='graphdef<:>yes';
    for (k=0;k<obj.length;k++) {     for (k=1;k<obj.length;k++) {
          parent.server.document.forms.storage.output.value+=           parent.server.document.forms.storage.output.value+=
           '<&>obj<:>'+k+'<:>'+obj[k];            '<&>obj<:>'+k+'<:>'+obj[k];
    }     }
Line 1593  function graphreset() { Line 1748  function graphreset() {
    insertcol(-1);     insertcol(-1);
   
    objcont[0]='';     objcont[0]='';
    objcont[1]='Start::false:start:res'  
    objcont[2]='Finish::false:end:res';  
    objlinks[0]='';     objlinks[0]='';
    objlinks[1]='1:2:0';     if (((objcont[1]==undefined)&&(objcont[2]==undefined)) ||
          ((objcont[1]=='')&&(objcont[2]==''))) { 
         objcont[1]='Start::false:start:res'
         objcont[2]='Finish::false:finish:res';
      }
    graphdef='no';     graphdef='no';
   
 }  }
Line 1633  function tabledraw() { Line 1789  function tabledraw() {
   var cck;    var cck;
   var condid;    var condid;
   var sortstr=sortobjs();    var sortstr=sortobjs();
  insrestab(1,-1,-1);   insrestab(1,-1,-1,'');
  if (sortstr!='') {   if (sortstr!='') {
   objsorted=sortstr.split('&');    objsorted=sortstr.split('&');
   for (k=0;k<objsorted.length;k++) {    for (k=0;k<objsorted.length;k++) {
Line 1659  function tabledraw() { Line 1815  function tabledraw() {
         +'"><form name=r'+i+' method=post>');          +'"><form name=r'+i+' method=post>');
       data2=obj[i].split('&');        data2=obj[i].split('&');
       parent.mapout.document.write('<table bgcolor="#CCCCCC">');        parent.mapout.document.write('<table bgcolor="#CCCCCC">');
         if (data1[3]=='start') { 
            parent.mapout.document.writeln('<tr><td><b>Start</b></td></tr>');
         }
         if (data1[3]=='finish') { 
            parent.mapout.document.writeln('<tr><td><b>Finish</b></td></tr>');
         }
       parent.mapout.document.write(        parent.mapout.document.write(
        '<tr><td>Title:</td><td><input type=text name=t size=50 value="'         '<tr><td>Title:</td><td><input type=text name=t size=50 value="'
                                    +data1[0]+'"></td></tr>');              +data1[0]+'"><input type=hidden name=h value='+data1[3]
               +'></td></tr>');
       if ((data1[3]!='start') && (data1[3]!='finish')) {
       parent.mapout.document.write(        parent.mapout.document.write(
        '<tr><td>URL:</td><td><input type=text name=u size=50 value="'         '<tr><td>URL:</td><td><input type=text name=u size=50 value="'
                                   +data1[1]+'"></td></tr>'                                    +data1[1]+'"></td></tr>'
           +'<tr><td>External:</td><td><input type=checkbox name=e');            +'<tr><td>External:</td><td><input type=checkbox name=e');
         if (data1[2]=='true') { parent.mapout.document.write(' checked'); }          if (data1[2]=='true') { parent.mapout.document.write(' checked'); }
         parent.mapout.document.write('></td></tr>'          parent.mapout.document.write('></td></tr>'
         +'<tr><td colspan=2><input type=hidden name=h value='+data1[3]          +'<tr><td colspan=2><input type=radio name=y value=normal '+
         +'><input type=radio name=y value=normal '+  
  'onClick="parent.mapout.document.forms.r'+i+'.elements.h.value='+   'onClick="parent.mapout.document.forms.r'+i+'.elements.h.value='+
      "'normal'"+'"');       "'normal'"+'"');
      if (data1[3]=='normal') { parent.mapout.document.write(' checked'); }       if (data1[3]=='normal') { parent.mapout.document.write(' checked'); }
Line 1683  function tabledraw() { Line 1846  function tabledraw() {
  'onClick="parent.mapout.document.forms.r'+i+'.elements.h.value='+   'onClick="parent.mapout.document.forms.r'+i+'.elements.h.value='+
      "'optional'"+'"');       "'optional'"+'"');
      if (data1[3]=='optional') { parent.mapout.document.write(' checked'); }       if (data1[3]=='optional') { parent.mapout.document.write(' checked'); }
      parent.mapout.document.write('> Optional</td></tr>'       parent.mapout.document.write('> Optional</td></tr>');
         +'<tr><td colspan=2><a href="javascript:parent.code.objcont['+i              } else {
        parent.mapout.document.write(
          '<tr><td><input type=hidden name=u value="">'
                 +'<input type=hidden name=e value=false></td></tr>');
       }
        parent.mapout.document.write(
            '<tr><td colspan=2><a href="javascript:parent.code.objcont['+i        
         +']=parent.code.escape(parent.mapout.document.forms.r'+i          +']=parent.code.escape(parent.mapout.document.forms.r'+i
         +'.elements.t.value)+'+"':'"          +'.elements.t.value)+'+"':'"
         +'+parent.code.escape(parent.mapout.document.forms.r'+i          +'+parent.code.escape(parent.mapout.document.forms.r'+i
Line 1694  function tabledraw() { Line 1863  function tabledraw() {
         +';parent.code.draw();">'          +';parent.code.draw();">'
         +'<b>Change to above values</b></a>&nbsp;&nbsp;'          +'<b>Change to above values</b></a>&nbsp;&nbsp;'
         +' <a href="javascript:parent.mapout.document.forms.r'+i          +' <a href="javascript:parent.mapout.document.forms.r'+i
         +'.reset()">Reset</a></td></tr><tr><td colspan=2>'          +'.reset()">Reset</a></td></tr><tr><td colspan=2>');
 +'<A href="javascript:parent.code.notclear=0;parent.code.infoclear();'      if ((data1[3]!='start') && (data1[3]!='finish')) {
        parent.mapout.document.writeln(
    '<A href="javascript:parent.code.notclear=0;parent.code.infoclear();'
 +'parent.code.delres('+i+',0);parent.code.editmode=0;parent.code.draw();">'  +'parent.code.delres('+i+',0);parent.code.editmode=0;parent.code.draw();">'
 +'Delete Resource (cutting links)</A><br>'  +'Delete Resource (cutting links)</A><br>'
 +'<A href="javascript:parent.code.notclear=0;parent.code.infoclear();'  +'<A href="javascript:parent.code.notclear=0;parent.code.infoclear();'
 +'parent.code.delres('+i+',1);parent.code.editmode=0;parent.code.draw();">'  +'parent.code.delres('+i+',1);parent.code.editmode=0;parent.code.draw();">'
 +'Delete Resource (preserving links)</A><br>'  +'Delete Resource (preserving links)</A><br>');
        +'<a href="javascript:parent.code.linkmode='+i+      }
       if (data1[3]!='finish') {
          parent.mapout.document.writeln(
           '<a href="javascript:parent.code.linkmode='+i+
        ';parent.code.notclear=0;parent.code.infoclear();">'+         ';parent.code.notclear=0;parent.code.infoclear();">'+
        'Link resource</a></td></tr>');         'Link resource</a></td></tr>');
       }
        parent.mapout.document.writeln('<tr><td colspan=2><table><tr>');         parent.mapout.document.writeln('<tr><td colspan=2><table><tr>');
        for (j=2;j<data2.length;j++) {         for (j=2;j<data2.length;j++) {
            data4=data2[j].split(':');             data4=data2[j].split(':');
Line 1752  function tabledraw() { Line 1926  function tabledraw() {
        }         }
        parent.mapout.document.writeln(         parent.mapout.document.writeln(
         '</tr></table></td></tr></table></form>');          '</tr></table></td></tr></table></form>');
        insrestab(rrow[data2[1]],i,nr);         insrestab(rrow[data2[1]],i,nr,data1[3]);
   
    }     }
   }    }
Line 1760  function tabledraw() { Line 1934  function tabledraw() {
   
 // ----------------------------------------------------- Insert Resource Output  // ----------------------------------------------------- Insert Resource Output
   
 function insrestab(irow,be,af) {  function insrestab(irow,be,af,typ) {
   parent.mapout.document.writeln('<tr><td colspan=2>'+    parent.mapout.document.writeln('<tr><td colspan=2>'+
        '<table><tr><td><a href="javascript:parent.code.insertrow('         '<table><tr><td><a href="javascript:parent.code.insertrow('
        +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[1]         +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[1]
  +",'','','false','normal');parent.code.mostrecent=parent.code.obj.length-1;"   +",'','','false','normal');parent.code.mostrecent=parent.code.obj.length-1;"
        +'parent.code.draw();">'         +'parent.code.draw();">'
        +'Insert resource</a></td><td>');         +'Insert resource</a></td><td>');
   if (be!=-1) {    if ((be!=-1) && (typ!='finish')) {
    parent.mapout.document.writeln(     parent.mapout.document.writeln(
        '<a href="javascript:parent.code.insertrow('         '<a href="javascript:parent.code.insertrow('
        +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[0]         +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[0]
Line 1776  function insrestab(irow,be,af) { Line 1950  function insrestab(irow,be,af) {
        +'parent.code.draw();">'         +'parent.code.draw();">'
        +'Insert resource linked to from above</a><br>');         +'Insert resource linked to from above</a><br>');
   }    }
   if ((be!=-1) && (af!=-1)) {    if ((be!=-1) && (af!=-1) && (typ!='finish')) {
      parent.mapout.document.writeln(       parent.mapout.document.writeln(
        '<a href="javascript:parent.code.insertrow('         '<a href="javascript:parent.code.insertrow('
        +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[0]         +irow+');parent.code.newresource(parent.code.maxrow,'+rcol[0]
Line 1832  function simpletabledraw() { Line 2006  function simpletabledraw() {
         +'">');          +'">');
       data2=obj[i].split('&');        data2=obj[i].split('&');
       parent.mapout.document.write('<table>');        parent.mapout.document.write('<table>');
         if (data1[3]=='start') { 
            parent.mapout.document.writeln('<tr><td><b>Start</b></td></tr>');
         }
         if (data1[3]=='finish') { 
            parent.mapout.document.writeln('<tr><td><b>Finish</b></td></tr>');
         }
       parent.mapout.document.write(        parent.mapout.document.write(
        '<tr><td>Title:</td><td>'+data1[0]+'</td></tr>');         '<tr><td>Title:</td><td>'+data1[0]+'</td></tr>');
       parent.mapout.document.write(        parent.mapout.document.write(
Line 1883  function simpletabledraw() { Line 2063  function simpletabledraw() {
 // ---------------------------------- Sort objects to straighten graph or table  // ---------------------------------- Sort objects to straighten graph or table
   
 function sortobjs() {  function sortobjs() {
    message("Sorting Resources");     message("Sorting Resources: "+funny);
    var k;     var k;
    var ij;     var ij;
    var dol;     var dol;
Line 1901  function sortobjs() { Line 2081  function sortobjs() {
    }     }
    if (objsort.length==0) { return ''; }     if (objsort.length==0) { return ''; }
    for (k=1;k<objlinks.length;k++) {     for (k=1;k<objlinks.length;k++) {
        wheelswitch();
        message("Sorting Resources: "+funny);
      if (objlinks[k]!='') {       if (objlinks[k]!='') {
       sortthis=1;        sortthis=1;
       data1=objlinks[k].split(':');        data1=objlinks[k].split(':');
Line 1910  function sortobjs() { Line 2092  function sortobjs() {
             kj=j;              kj=j;
          }           }
       }        }
       objsort[kj]+=':'+data1[1];        if (kj!=-1) { objsort[kj]+=':'+data1[1]; }
      }       }
    }     }
    if (sortthis!=0) {     if (sortthis!=0) {
     for (k=0;k<objsort.length;k++) {      for (k=0;k<objsort.length;k++) {
         wheelswitch();
         message("Sorting Resources: "+funny);
       for (j=0;j<objsort.length;j++) {        for (j=0;j<objsort.length;j++) {
         if (k!=j) {          if (k!=j) {
           data1=objsort[k].split(':');            data1=objsort[k].split(':');
           data2=objsort[j].split(':');            data2=objsort[j].split(':');
           dol=data1.length;            dol=data1.length;
           dtl=data2.length;            dtl=data2.length;
           for (kj=1;kj<dol;kj++) {            if (dol+dtl<200) {
              for (kj=1;kj<dol;kj++) {
              if (data1[kj]==data2[0]) {               if (data1[kj]==data2[0]) {
                 for (ij=1;ij<dtl;ij++) {                  for (ij=1;ij<dtl;ij++) {
                    data1[data1.length]=data2[ij];                     data1[data1.length]=data2[ij];
                 }                  }
              }               }
           }             }
           for (kj=1;kj<dtl;kj++) {             for (kj=1;kj<dtl;kj++) {
              if (data2[kj]==data1[0]) {               if (data2[kj]==data1[0]) {
                  for (ij=1;ij<dol;ij++) {                   for (ij=1;ij<dol;ij++) {
                    data2[data2.length]=data1[ij];                      data2[data2.length]=data1[ij];
                 }                   }
             }               }
              }
              objsort[k]=data1.join(':');
              objsort[j]=data2.join(':');
           }            }
           objsort[k]=data1.join(':');  
           objsort[j]=data2.join(':');  
          }           }
       }         } 
    }     }
      message("Sorting Resources: finishing up.");
    return objsort.sort(rescompare).join('&');     return objsort.sort(rescompare).join('&');
   } else {    } else {
    return objsort.join('&');     return objsort.join('&');
Line 1971  function graphopt() { Line 2158  function graphopt() {
          thiscolmax++;           thiscolmax++;
       } else {        } else {
          rowcont[rowcont.length]=thisnewobj;           rowcont[rowcont.length]=thisnewobj;
          if (thiscolmax>allcolmax) { allcolmax=thiscolmax; }  
          thiscolmax=1;           thiscolmax=1;
       }        }
       kj=rowcont.length-1;        kj=rowcont.length-1;
       obj[thisnewobj]='b&'+kj+'&'+thiscolmax+':0:0:0';           obj[thisnewobj]='b&'+kj+'&'+thiscolmax+':0:0:0';
         if (thiscolmax>allcolmax) { allcolmax=thiscolmax; }
    }     }
    for (k=0;k<obj.length;k++) {     for (k=0;k<obj.length;k++) {
        if (!obj[k]) { obj[k]=''; }         if (!obj[k]) { obj[k]=''; }
Line 1985  function graphopt() { Line 2172  function graphopt() {
       row[k]=k;        row[k]=k;
    }     }
    maxrow=rowcont.length-1;     maxrow=rowcont.length-1;
   
    var oldlinks=new Array();     var oldlinks=new Array();
    for (k=0;k<objlinks.length;k++) { oldlinks[k]=objlinks[k]; }     for (k=0;k<objlinks.length;k++) { 
         oldlinks[k]=objlinks[k]; 
         objlinks[k]='';
      }
    objlinks.length=0;     objlinks.length=0;
    objlinks[0]='';     objlinks[0]='';
      graphdef='yes';
      save();
   
    for (k=0;k<objsorted.length;k++) {     for (k=0;k<objsorted.length;k++) {
       kj=(objsorted[k].split(':'))[0];       wheelswitch();
        message("Connecting Resources: "+funny);
        kj=(objsorted[k].split(':'))[0];
       for (ij=1;ij<oldlinks.length;ij++) {        for (ij=1;ij<oldlinks.length;ij++) {
         if (oldlinks[ij]) {          if (oldlinks[ij]) {
           data1=oldlinks[ij].split(':');            data1=oldlinks[ij].split(':');
           if (data1[0]==kj) {            if (data1[0]==kj) {
              joinres(data1[0],data1[1],data1[2]);               joinres(data1[0],data1[1],data1[2]);
                save();
           }            }
          }           }
       }        }
    }     }
    graphdef='yes';  
 }  }
   
 // ----------------------------------------------------------- Remove e-objects  // ----------------------------------------------------------- Remove e-objects
Line 2021  function condense() { Line 2215  function condense() {
       }        }
      }       }
    }     }
    lastempty=-2;  
 }  }
   
 // ---------------------------------------------------- Load from hidden fields  // ---------------------------------------------------- Load from hidden fields
   
 function load() {  function load() {
    message("Loading");     message("Loading");
      schedule('load');
      checkdef();
   }
   
   function finishload() {
    var k;     var k;
    for (k=0;k<objcont.length;k++) { objcont[k]=''; }     for (k=0;k<objcont.length;k++) { objcont[k]=''; }
    objcont.length=0;     objcont.length=0;
Line 2054  function load() { Line 2252  function load() {
        if (data2[0]=='rowcont') { rowcont[data2[1]]=data2[2]; }         if (data2[0]=='rowcont') { rowcont[data2[1]]=data2[2]; }
        if (data2[0]=='row') { row[data2[1]]=1*data2[2]; }         if (data2[0]=='row') { row[data2[1]]=1*data2[2]; }
        if (data2[0]=='col') { col[data2[1]]=1*data2[2]; }         if (data2[0]=='col') { col[data2[1]]=1*data2[2]; }
          if (data2[0]=='mode') { mode=data2[1]; }
        if (data2[0]=='tablemode') { tablemode=1*data2[1]; }         if (data2[0]=='tablemode') { tablemode=1*data2[1]; }
        if (data2[0]=='zscale') { zscale=1*data2[1]; }         if (data2[0]=='zscale') { zscale=1*data2[1]; }
    }     }
   }    }
     if (graphdef=='yes') {
        for (k=1;k<=maxrow;k++) {
           if (rowcont[k]==undefined) { rowcont[k]=''; }
        }
     }
 }  }
   
 // -------------------------------------------------------------- Undo function  // -------------------------------------------------------------- Undo function
Line 2067  function undo() { Line 2271  function undo() {
       undopointer--;        undopointer--;
       parent.server.document.forms.storage.output.value        parent.server.document.forms.storage.output.value
        =undostack[undopointer];         =undostack[undopointer];
       load();        finishload();
       undopointer--;        undopointer--;
       draw();        draw();
       stored=0;        stored=0;
Line 2083  function redo() { Line 2287  function redo() {
       undopointer++;        undopointer++;
       parent.server.document.forms.storage.output.value        parent.server.document.forms.storage.output.value
        =undostack[undopointer];         =undostack[undopointer];
       load();        finishload();
       undopointer--;        undopointer--;
       draw();        draw();
       stored=0;        stored=0;
Line 2101  function revert() { Line 2305  function revert() {
    }     }
 }  }
   
   // ---------------------------------------------------------------- Wheelswitch
   
   function wheelswitch() {
      if (funny=='|') { 
         funny='/'; 
      } else {
         if (funny=='/') {
            funny='-';
         } else {
            if (funny=='-') { 
               funny='\\'; 
            } else {
               if (funny=='\\') { funny='|'; }
            }
         }
      } 
   }
   
   // --------------------------------------------- Checks if server frame defined
   
   function checkdef() {
      if (parent.server.document.forms.storage.output.value!=undefined) {
         srvloaded();
      }
      if ((finishdone==0) && (tim==0)) { setTimeout('checkdef()',100); }
   }
   
   // ---------------------------------------------------------- The wait function
   
   function wait() {
      if ((finishdone==1) || (tim==1)) {
         if (tim==0) {
            clearTimeout(canceltim);
            if (reqaction=='save') { finishsave(); }
            if (reqaction=='load') { finishload(); draw(); }
         } else {
            alert("Server Communication Timed Out.");
         }
      } else {
         wheelswitch();
         message('Waiting for server reply: '+funny);
         setTimeout('wait();',100);
      }
   }
   
   // ---------------------------------------------------------- Schedule function
   
   function schedule(action) {
      reqaction=action;
      tim=0;
      finishdone=0;
      canceltim=setTimeout('tim=1;',20000)
      wait();
   }
   
 // -------------------------------------------------------------- Store changes  // -------------------------------------------------------------- Store changes
   
 function storechange() {  function storechange() {
      var k;
    parent.server.document.forms.storage.submit();     parent.server.document.forms.storage.submit();
      schedule('save');
   }
   
   function finishsave() {
      finishload();
      draw();
    stored=1;     stored=1;
    alert("Stored changes");     }
   
   // --------------------------------------- Gets called when submission finished
   
   function srvloaded() {
      finishdone=1;
      message("Server replied.");
 }  }
   
 // ---------------------------------------------------------------- Toggle Mode  // ---------------------------------------------------------------- Toggle Mode
Line 2131  function togglemode() { Line 2403  function togglemode() {
 function main() {  function main() {
   
    if (mainrun==0) {     if (mainrun==0) {
         infopen();
         infoclear();
       load();        load();
       draw();  
       stored=1;        stored=1;
       mainrun=1;        mainrun=1;
    }     }
Line 2142  function main() { Line 2415  function main() {
 // ------------------------------------------------------------- Save on leave?  // ------------------------------------------------------------- Save on leave?
   
 function leave() {  function leave() {
    if (stored==0) {     if (!inf.closed) {
       if (confirm('Store changes?')) {        inf.close();
          storechange();     
       }  
    }     }
 }  }
   

Removed from v.1.4  
changed lines
  Added in v.1.12


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>