http://www.masswerk.at/jsuix/
// 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 termSpecials=new Array();
termSpecials[0]=' ';
termSpecials[1]='$';
termSpecials[2]=' ';
termSpecials[3]='?';
termSpecials[4]='#';
termSpecials[32]=' ';
termSpecials[34]='"';
termSpecials[38]='&';
termSpecials[60]='termSpecials[62]='>';
termSpecials[127];
var termStyles=new Array(1,2,4,8);
var termStyleOpen=new Array(); ();
termStyle[1]='
'; termStyle[2]='
termStyle[ 2]='';
termStyle[4]='';
termStyleOpen[8]='' ;
termStyleClose[8]='';
// buttons UI
var termImgNames=new Array('left_lo', 'right_lo' ', 'right_hi', 'delete_lo', 'delete_hi', 'Crazy, there is an operating system written in js_javascript skills_lo', 'Crazy, there is an operating system written in js_javascript skills_hi', 'kbd_show_lo', 'kbd_hide_lo', 'kbd_hide_hi'); var termImages=new Array();
function termImgPreload(path,imgnames) {
for (var i=0; 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
}
}
// UI keyboard
// key maps (200=left shift, 202=right shift, 204=CpsLock)
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=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 termKbdShow() {
if (termKbdOn) {
setDivVisibility(termKbdDiv,0);
termKbdOn=false;
termSetKbdButton(0)
}
else {
termImgPreload(keycapspath,keycapsImgNames);
keycapsShift=false;
keycapsCpslk=false;
var s='n';
s ='
| n';
s ='' termMakeKbd() ' | n';
s ' |
n';
s ='
|
n';
s ='
n';
s ='
| n';
s ='
' termMakeKbd() ' | n';
s '
|
n';
s ='
| n';
s ='';
writeElement(termKbdDiv,s);
setDivXY(termKbdDiv,conf_term_x,conf_term_y conf_kbd_offset conf_rows*conf_rowheigt);
if (termLayers) termKbdDocNS4=document.layers[termKbdDiv].document;
termKbdOn=true;
setDivVisibility(termKbdDiv,1); termSetKbdButton(0) } } function termMakeKbd() { var s=' n'; for (var i=0; i s =''; for (var k=0; k var kc=termKeyMap[i][k]; keycapsShiftRef[kc]=termKeyMapShift[i][k]; keycapsCpslkRef[kc]=termKeyMapCpslk[i][k]; if (kc==13) { s ='
'; continue }; if (kc==32) s =' ' else if (kc==28) { s =''; s =''; continue } else if (kc==29) { s =''; continue } else if (kc==8) { s =''; continue } s =''; if (kc==35) s =''; }; s ='
|
n';
};
s ='
';
return s
}
// term UI
function termHide() {
if (repeatTimer) clearTimeout(repeatTimer);
if (termKbdOn) termKbdShow();
setDivVisibility(termDiv,0)
}
function makeTerm() {
window.status='Building terminal ...';
termLayers=(document.layers)? true:false;
termSubDivs=(navigator.userAgent.indexOf('Gecko') var s='';
s ='
n';
s ='
n'; var rstr=''; for (var c=0; c for (var r=0; r var id=((termLayers) || (termSubDivs))? '' : ' ID="term_' r '"'; s ='' rstr ' | n'; }; s ='
| n'; s =' |
n';
s ='n
s =' n' }; termDocNS4=document.layers[termDiv].document; termStringStart=''; termStringEnd=''; } else if (termSubDivs) { for (var r=0; r s ='n' }; termStringStart=''; termStringEnd=''; }; writeElement(termDiv,s); setDivXY(termDiv,conf_term_x,conf_term_y); setDivVisibility(termDiv,1); window.status='' }
function termDisplay(r) { var s=termStringStart; var curStyle=0; for (var i=0; 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 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 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=='Crazy, there is an operating system written in js_javascript skills') 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 }
//eof
|
|
|