
var list='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ !@#$&(-):<,>./?+*%";=\'';
var charList="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ ";
var charXtra="!@#$&(-):<,>.";
var specChar="/?+*%\"\;=\'";

charList = charList + charXtra;
var tagStuff="";

var chrHeight =  15;                // 13
var chrWidth  =  10;                //  9
var midWidth  =  16 * chrWidth;     // 16 *
var midHeight =   6 * chrHeight;    //  6 *

chrHeight = chrHeight.toString();
chrWidth  = chrWidth.toString();
midWidth  = midWidth.toString();
midHeight = midHeight.toString(); 

var charArray = new Array ();

var code='';
function gifRef(c) { 
  var inChar = c.toString();
  inChar = inChar.toUpperCase();
  code='';
  if (inChar == " ")  { code='%20'; return "sp";     } 
  if (inChar == "_")  { code='%5F'; return "under";  } 
  if (inChar == "-")  { code='%2D'; return "dash";   } 
  if (inChar == "\"") { code='%22'; return "quote";  }
  if (inChar == "\)") { code='%28'; return "lparen"; }
  if (inChar == "\(") { code='%29'; return "rparen"; }
  if (inChar == "\^") { code='%5E'; return "up";     }
  if (inChar == "\<") { code='%3C'; return "lkarot"; }
  if (inChar == "\>") { code='%3E'; return "rkarot"; }
  if (inChar == "\*") { code='%2A'; return "star";   }
  if (inChar == "\?") { code='%3F'; return "ques";   }
  if (inChar == "\#") { code='%23'; return "hash";   }
  if (inChar == "\'") { code='%2C'; return "apos";   } 
  if (inChar == "\&") { code='%26'; return "amp";    } 
  if (inChar == "\@") { code='%40'; return "at";     } 
  if (inChar == "\!") { code='%23'; return "bang";   } 
  if (inChar == "\%") { code='%25'; return "percent";} 
  if (inChar == "\$") { code='%24'; return "dollar"; } 
  if (inChar == "\/") { code='%2F'; return "slash";  } 
  if (inChar == "\:") { code='%3A'; return "colon";  } 
  if (inChar == "\;") { code='%3B'; return "semi";   } 
  if (inChar == "\+") { code='%2B'; return "plus";   } 
  if (inChar == "\=") { code='%3D'; return "equal";  } 
  if (inChar == "\.") { code='%2E'; return "dot";    } 
  if (inChar == "\,") { code='%2C'; return "comma";  } 
  if (validChar(inChar)) { return inChar.toLowerCase(); }
  return "sp";
}

function codeStr(str) {
  var code='';
  for (var i = 0; i < str.length; i++) {
    currChar = str.substring(i, i+1); 
    code += '%' + str.charCodeAt(i).toString(16);
  }
  return code;
}
function uncodeStr(str) {
  return unescape(str);
}

function loadImages() {
  var currChar = " ";
  for (var i = 0; i < charList.length; i++) {
    charArray[i] = new Image ();  
    currChar = charList.substring(i, i+1); 
    currChar = currChar.toString();   
    currChar = currChar.toLowerCase(); 
    eval ('charArray[i].src="' + baseHref + "chrs/" + gifRef(currChar) + '.gif"');
  }
}
function tagChars() { 

  var tagLines = "<table width=" + midWidth + " height=" + midHeight + " \n";
  tagLines += " border=0 cellpadding=0 cellspacing=0 align=left valign=top>\n";
  if (lines<6) { 
    tagLines += "<tr><td colspan=16 height=5><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=5></td></tr>\n";
  }
  if (lines<5) { 
    tagLines += "<tr><td colspan=16 height=7><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=7></td></tr>\n";
  }
  if (lines<4) { 
    tagLines += "<tr><td colspan=16 height=7><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=7></td></tr>\n";
  }
  for (var l=1;l<=lines;l++) { 
    var ln = l.toString();
    tagLines += "<tr width=" + midWidth + " height=" + chrHeight + "><td \n";
    tagLines += "    width=" + midWidth + " height=" + chrHeight + "\n";
    for (var c=1;c<17;c++) {
       var cn = c.toString();
       if (cn.length<2) { cn="0" + cn; }
       tagLines += "><img border=0 src=" + baseHref + "chrs/sp.gif ";
       tagLines += " width=" + chrWidth + " height=" + chrHeight;
       tagLines += " name=line" + ln + "chr" + cn + "\n";
    }
    tagLines += "></td></tr>\n";
    if (lines<6) { 
      tagLines += "<tr><td colspan=16 height=2><img border=0 src=" + baseHref + "/img/clear.gif ";
      tagLines += "width=" + midWidth + " height=2></td></tr>\n";
    }
  }
  if (lines<4) { 
    tagLines += "<tr><td colspan=16 height=7><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=7></td></tr>\n";
  }
  if (lines<5) { 
    tagLines += "<tr><td colspan=16 height=6><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=6></td></tr>\n";
  }
  if (lines<6) { 
    tagLines += "<tr><td colspan=16 height=5><img border=0 src=" + baseHref + "/img/clear.gif ";
    tagLines += "width=" + midWidth + " height=5></td></tr>\n";
  }
  tagLines += "</table>";
  return tagLines;

}
function showLine(l,t) {
  if (t == null) { t=''; }
  var lineNum = l.toString();
  var inText  = t.toString();

//  alert('showLine '+l+' '+t);

  var lineLimit=eval('line'+lineNum+'Limit');
  if (lineLimit<16) { limited=1; } else {limited=0; }

  inText = inText.toUpperCase()
  inText = inText.substring(0, lineLimit);

  var currChar = ' ';
  var charNum  = '0';
  var currGif  = 'sp';
  var i=0;
  if (l>lines) { return; }
  var outText='';
  var badChars=0; 
  for (i = 0; i < inText.length; i++) {
    currChar = inText.substring(i, i+1);
    currChar = currChar.toString();
    currChar = currChar.toUpperCase();
    if (validChar(currChar) && i <= lineLimit) { 
      currGif = gifRef(currChar);
      outText += currChar;
      charNum = i+1;
      charNum = charNum.toString();
      if (charNum.length<2) { charNum="0" + charNum; }
      var part1 = 'line'+lineNum+'chr'+charNum+'.src';
      currGif   = currGif.toLowerCase();
      var part2 = baseHref + "chrs/" +currGif+'.gif';
      eval('document.'+part1+'="'+part2+'"');
    } else { 
      badChars++;
    }
  }

  outText = outText.toUpperCase();

  var backslash='\\';  
  outText = outText.replace(/backslash/g,"");
  for (var i = 0; i < specChar.length; i++) {
    currChar = specChar.substring(i, i+1);
    newChar  = "\\"+currChar; 
    outText = outText.replace(/currChar/g,newChar);
  }

  if (outText.length>lineLimit) { 
    outText=outText.substring(0,lineLimit);
    eval( 'document.tags.line'+lineNum+'.value' + '="' + outText + '"'); 
  }

//  alert('line=' +lineNum+' limited='+limited);

  if (outText.length<=lineLimit || limited>0) { 
    for (i=outText.length+1; i<=16; i++) { 
      charNum = i.toString();
      if (charNum.length<2) { charNum="0" + charNum; }
      var part1 = 'line'+lineNum+'chr'+charNum+'.src';
      var part2 = baseHref + 'chrs/sp.gif';
      eval('document.'+part1+'="'+part2+'"');
    }
  }

  eval( 'line'+lineNum+'Value = outText');
  eval( 'line'+lineNum+'Length= outText.length');

  if (badChars>0) { 
    alert('That Character is not allowed!\n\n Use ONLY these: \n  Letters A-Z \n  Numbers 0-9 and\n  ! @ # $ & ( - ) : < , > .'); 
    eval( 'document.tags.line'+lineNum+'.value' + '="' + outText + '"'); 
  }

//  eval( 'document.tags.line'+lineNum+'.value' + '="' + outText + '"'); 
//  eval( 'line'+lineNum+'Value =document.tags.line'+lineNum+'.value');
//  eval( 'line'+lineNum+'Length=document.tags.line'+lineNum+'.length');
//  eval( 'document.getElementById("textTagLine' + lineNum + '").innerHTML = "' + lineNum + ': ' + outText +'"' );
}

function validChar(inChar) {
  var inChar = inChar.toString();
  inChar = inChar.toUpperCase();
  var cindex = charList.indexOf(inChar);
  if (cindex>=0) { return true; }
  return false;
}

loadImages();