// JS/UIX v0.44 // (c) mass:werk (N.Landsteiner) 2003 // all rights reserved
// term gui
var conf_term_x=102; var conf_term_y=34; var conf_kbd_offset=34; var termImgPath='jsuix_support/'; var termDiv='termDiv'; var termBgColor='#181818'; var termFrameColor='#555555'; var termPageColor='#222222'; var conf_repeat_delay1=320; var conf_repeat_delay2=170;
var termKbdDiv='termKbdDiv'; var termKbdBgColor='#222222'; var keycapspath='jsuix_support/keycaps/';
var termSubDivs=false; var termLayers=false; var termDocNS4=null; var termStringStart=''; var termStringEnd='';
var termKbdDocNS4=null; var termKbdOn=false; var keycapsShift=false; var keycapsCpslk=false; var keycapsShiftRef=new Array(); var keycapsCpslkRef=new Array();
var termStyles=new Array(1,2,4,8); var termStyleOpen=new Array(); var termStyleClose=new Array(); termStyleOpen[1]='<SPAN CLASS="termReverse">'; termStyleClose[1]='<\/SPAN>'; termStyleOpen[2]='<U>'; termStyleClose[2]='<\/U>'; termStyleOpen[4]='<I>'; termStyleClose[4]='<\/I>'; termStyleOpen[8]='<STRIKE>'; termStyleClose[8]='<\/STRIKE>';
// buttons UI
var termImgNames=new Array('left_lo', 'left_hi', 'right_lo', 'right_hi', 'delete_lo', 'delete_hi', 'esc_lo', 'esc_hi', 'kbd_show_lo', 'kbd_show_hi', 'kbd_hide_lo', 'kbd_hide_hi'); var termImages=new Array();
function termImgPreload(path,imgnames) { for (var i=0; i<imgnames.length; i++) { var n=imgnames[i]; termImages[n]=new Image(); termImages[n].src=path+n+'.gif' } }
if (document.images) termImgPreload(termImgPath,termImgNames);
function termSetImg(n,v) { if (document.images) { var img=(termLayers)? termDocNS4.images['term_'+n] : document.images['term_'+n]; var stat=(v)? '_hi' : '_lo'; img.src=termImages[n+stat].src } }
var termKeyMap= [ [96,49,50,51,52,53,54,55,56,57,48,45,61,8], [27,113,119,101,114,116,121,117,105,111,112,91,93,13], [204,97,115,100,102,103,104,106,107,108,59,39,35], [200,92,122,120,99,118,98,110,109,44,46,47,30,202], [32,28,31,29] ]; var termKeyMapShift=[ [126,33,34,35,36,37,94,38,42,40,41,95,43,8], [27,81,87,69,82,84,89,85,73,79,80,123,125,13], [204,65,83,68,70,71,72,74,75,76,58,34,64], [200,124,90,88,67,86,66,78,77,60,62,63,30,202], [32,28,31,29] ]; var termKeyMapCpslk=[ [96,49,50,51,52,53,54,55,56,57,48,45,61,8], [27,81,87,69,82,84,89,85,73,79,80,91,93,13], [204,65,83,68,70,71,72,74,75,76,59,39,35], [200,92,90,88,67,86,66,78,77,44,46,47,30,202], [32,28,31,29] ]; var termKeyWdth=[ [35,35,35,35,35,35,35,35,35,35,35,35,35,69], [55,35,35,35,35,35,35,35,35,35,35,35,35,0], [65,35,35,35,35,35,35,35,35,35,35,35,35], [49,35,35,35,35,35,35,35,35,35,35,35,35,54], [252,35,35,35] ];
var keycapsImgNames=new Array(200,201,202,203,204,205);
function termKeyCaps(k) { if ((k<28) && (k>=32) && (repeatTimer)) clearTimeout(repeatTimer); if (k==204) { keycapsCpslk=(!keycapsCpslk); var cnr=(keycapsCpslk)? 205:204; termKbdSetImg(204,cnr) } else if ((k==200) || (k==202)) { keycapsShift=(!keycapsShift); var m=(keycapsShift)? 1:0; termKbdSetImg(200,200+m); termKbdSetImg(202,202+m) } else { var ch=0; if (keycapsShift) { ch=keycapsShiftRef[k] keycapsShift=false; termKbdSetImg(200,200); termKbdSetImg(202,202) } else if (keycapsCpslk) ch=keycapsCpslkRef[k] else ch=k; keyHandler({which:ch,jsuix_remapped:true}) } }
function termKbdSetImg(n,v) { if (document.images) { var img=(termLayers)? termKbdDocNS4.images['key'+n] : document.images['key'+n]; img.src=termImages[v].src } }
function termSetKbdButton(v) { if (document.images) { var img=(termLayers)? termDocNS4.images.term_kbd_show : document.images.term_kbd_show; var n=(termKbdOn)? 'kbd_hide' : 'kbd_show'; var stat=(v)? '_hi' : '_lo'; img.src=termImages[n+stat].src } }
function termDisplay(r) { var s=termStringStart; var curStyle=0; for (var i=0; i<conf_cols; i++) { var c=term[r][i]; var cs=termStyle[r][i]; if (cs!=curStyle) { if (curStyle) { for (var k=termStyles.length-1; k>=0; k--) { var st=termStyles[k]; if (curStyle&st) s+=termStyleClose[st]; } }; curStyle=cs; for (var k=0; k<termStyles.length; k++) { var st=termStyles[k]; if (curStyle&st) s+=termStyleOpen[st]; } }; s+= (termSpecials[c])? termSpecials[c] : String.fromCharCode(c); }; if (curStyle>0) { for (var k=termStyles.length-1; k>=0; k--) { var st=termStyles[k]; if (curStyle&st) s+=termStyleClose[st]; } }; s+=termStringEnd; writeElement('term_'+r,s,termDocNS4) }
function termGuiReady() { ready=true; if (termGuiElementReady(termDiv, self.document)) { for (var r=0; r<conf_rows; r++) { if (termGuiElementReady('term_'+r,termDocNS4)==false) { ready=false; break } } } else ready=false; return ready }
function cursorKbdLeft() { keyHandler({which:28}) }
function cursorKbdRight() { keyHandler({which:29}) }
function termKbdBackspace() { keyHandler({which:8}) }
function termKbdEsc() { keyHandler({which:27}) }
function termKbdClear() { if ((!cnslLock) && (!cnslRawMode)) cnslReset(); }
// UI-button repeat
function repeatSet(cmd,on) { if (repeatTimer) clearTimeout(repeatTimer); repeatTimer=setTimeout('repeatDo("'+cmd+'")',conf_repeat_delay1); }
function repeatClear() { if (repeatTimer) clearTimeout(repeatTimer); }
function repeatDo(cmd) { if (repeatTimer) clearTimeout(repeatTimer); if (cmd=='left') cursorKbdLeft() else if (cmd=='right') cursorKbdRight() else if (cmd=='backspace') termKbdBackspace(); repeatTimer=setTimeout('repeatDo("'+cmd+'")',conf_repeat_delay2); }
// basic dynamics
function writeElement(e,t,d) { if (document.layers) { var doc=(d)? d : self.document; doc.layers[e].document.open(); doc.layers[e].document.write(t); doc.layers[e].document.close() } else if (document.getElementById) { var obj=document.getElementById(e); obj.innerHTML=t } else if (document.all) { document.all[e].innerHTML=t } }
function setDivXY(d,x,y) { if (document.layers) { document.layers[d].moveTo(x,y) } else if (document.getElementById) { var obj=document.getElementById(d); obj.style.left=x+'px'; obj.style.top=y+'px' } else if (document.all) { document.all[d].style.left=x+'px'; document.all[d].style.top=y+'px' } }
function setDivVisibility(d,v) { if (document.layers) { document.layers[d].visibility= (v)? 'show':'hide'; } else if (document.getElementById) { var obj=document.getElementById(d); obj.style.visibility= (v)? 'visible':'hidden'; } else if (document.all) { document.all[d].style.visibility= (v)? 'visible':'hidden'; } }
function termGuiElementReady(e,d) { if (document.layers) { var doc=(d)? d : self.document; return ((doc) && (doc.layers[e]))? true:false } else if (document.getElementById) { return (document.getElementById(e))? true:false } else if (document.all) { return (document.all[e])? true:false } else return false }