📄 laputaxwinmain.js
字号:
/*
xWindows for Laputa System
auther: Jangogo Chan Q108112937
copyright: 4Fang Technology 广州海然数码科技有限公司
date created : 2006-12-08
*/
var xWinBorderCssText=document.styleSheets('xwincss').rules(0).style.cssText;
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
var dragObject = null;
var mouseOffset = null;
var subfixName = "_TK";
function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}
function getMouseOffset(target, ev){
ev = ev || window.event;
var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}
function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft;
top += e.offsetTop;
e = e.offsetParent;
}
left += e.offsetLeft;
top += e.offsetTop;
return {x:left, y:top};
}
function mouseMove(ev){
ev = ev || window.event;
var mousePos = mouseCoords(ev);
if(dragObject){
dragObject.style.position = 'absolute';
try{
dragObject.style.top = mousePos.y - mouseOffset.y;
dragObject.style.left = mousePos.x - mouseOffset.x;
}catch(ex){
mouseOffset=getMouseOffset(dragObject,ev);
}
if(dragObject.id=="ResizerDiv"){
$("ResizerFrm").style.top=dragObject.style.top;
$("ResizerFrm").style.left=dragObject.style.left;
$("WinShape").style.width=dragObject.offsetLeft - $(WinArea.TopWinName).offsetLeft + 8 + "px";
$("WinShape").style.height=dragObject.offsetTop - $(WinArea.TopWinName).offsetTop + 8 + "px";
}
return false;
}
}
function mouseUp(){
mouseOffset=null;
if(dragObject!=null){
var id=dragObject.id;
dragObject = null;
$("MaskDivT").style.display="none";
$("MaskDivB").style.display="none";
$("WinShape").style.display="none";
if($(WinArea.TopWinName)){
if(id=="WinShape"){
$(WinArea.TopWinName).style.left= $("WinShape").style.left;
$(WinArea.TopWinName).style.top= $("WinShape").style.top;
}else{
$(WinArea.TopWinName).style.width= $("WinShape").style.width;
$(WinArea.TopWinName).style.height= $("WinShape").style.height;
}
frontXwin(WinArea.TopWinName);
}
}
}
function makeDraggable(item){
if(!item) return;
item.onmousedown = function(ev){
showShape();
dragObject = this;
mouseOffset = getMouseOffset(this, ev);
return false;
}
}
function showShape(){
$("MaskDivT").style.display="";
$("MaskDivB").style.display="";
var zx=$(WinArea.TopWinName).style.zIndex;
$("MaskDivB").style.zIndex=zx+1;
$("MaskDivT").style.zIndex=zx+2;
$("ResizerFrm").style.zIndex=zx+3;
$("ResizerDiv").style.zIndex=zx+4;
$("WinShape").style.display="";
$("WinShape").style.zIndex=zx+5;
$("WinShape").style.top=$(WinArea.TopWinName).style.top;
$("WinShape").style.left=$(WinArea.TopWinName).style.left;
$("WinShape").style.width=$(WinArea.TopWinName).style.width;
$("WinShape").style.height=$(WinArea.TopWinName).style.height;
}
function hideShape(){
$("MaskDivT").style.display="none";
$("MaskDivB").style.display="none";
$("WinShape").style.display="none";
}
/*===end Drag and Drop======*/
var zInxWin=100;
var zInxTop=zInxWin+10;
var Wins=0;
window.onresize=repos;
function repos(){
$("TaskBarDiv").style.height= WinArea.TaskbarHeight+"px";
$("TaskBarDiv").style.top=WinArea.getHeight()+"px";
$("TaskBarDiv").style.zIndex=zInxTop+1;
}
WinArea={
TaskbarHeight:20,
WinOffset:20,
getWidth: function(){return document.body.clientWidth-4;},
getHeight:function(){return document.body.clientHeight-WinArea.TaskbarHeight;},
TopWinName:null,
lastX:0,
lastY:0
};
var WinInx = 0;
function getUniqueWinID(){
WinInx ++ ;
return "xChildWin_" + WinInx ;
}
function openXwin(sURL,width,height,modal,fixed,sName){
if(sName == ""||!sName||modal){
sName=getUniqueWinID();
}
if($("ModalMaskFrm").style.display!="none")modal=true;
var wmax=WinArea.getWidth();
var hmax=WinArea.getHeight();
var w=wmax;
var h=hmax;
var t=0;
var l=0;
var nh;
var nw;
if(width){
w=width;
//nw=w;
if(WinArea.lastX==0||modal)
l=parseInt(wmax-w)/2;
else
l=WinArea.lastX-WinArea.WinOffset;
}else{
nw=parseInt(wmax/2);
}
if(height){
h=height;
if(WinArea.lastY==0||modal)
t=parseInt(hmax-h)/2;
else
t=WinArea.lastY-WinArea.WinOffset;
}else{
nh=parseInt(hmax/2);
}
if(t<0)t=0;
if(l<0)l=0;
if(!modal){
WinArea.lastX=l;
WinArea.lastY=t;
}
if(!$(sName)){
var css='position:absolute;left:'+l+'px;top:'+t+'px;width:'+ w +'px;height:'+h+'px;z-index:'+zInxTop +';'+xWinBorderCssText;
if(document.all)
var ifrm=document.createElement('<iframe name="'+sName+'" style="'+css+'"></iframe>');
else{
var ifrm=document.createElement('iframe');
ifrm.name=sName;
ifrm.style.cssText=css;
}
document.body.appendChild(ifrm);
var dv=document.createElement("div");
dv.id=sName + subfixName;
dv.className="TaskBarBtnComment";
dv.onmouseover=mouseoverTskBtn;
dv.onmouseout=mouseoutTskBtn
dv.innerHTML=dv.id;
dv.setAttribute("winName",sName);
dv.setAttribute("initHeight",h);
dv.setAttribute("initWidth",w);
if(nh!=null && nw!=null){
dv.setAttribute("nowHeight",nh);
dv.setAttribute("nowWidth",nw);
dv.setAttribute("nowHeight",nh);
dv.setAttribute("nowLeft",WinArea.lastX);
dv.setAttribute("nowTop",WinArea.lastY);
dv.setAttribute("winMax",1);
}
dv.onclick=clickTaskBarBtn;
if(modal)dv.style.display="none";
//dv.setAttribute("onclick","frontXwin('"+sName+"');");
if(modal)
dv.setAttribute("modal",1);
if(fixed)
dv.setAttribute("fixed",1);
$("TaskBarDiv").appendChild(dv);
//var ps="{winName:'"+sName+"',initHeight:"+h+",initWidth:"+w+",Height}"
//dv.style.left=Wins*100 + "px";
//dv.style.top="0px";
//alert($("TaskBarDiv").innerHTML);
Wins++;
}
ifrm.src=sURL;
frontXwin(sName);
if(Wins==1)frontXwin(sName);
}
function mouseoverTskBtn(ev){
ev = ev || window.event;
if(ev.srcElement.className=='TaskBarBtnComment'){
ev.srcElement.className='TaskBarBtnCommentOver';
}
}
function mouseoutTskBtn(ev){
ev = ev || window.event;
if(ev.srcElement.className=='TaskBarBtnCommentOver'){
ev.srcElement.className='TaskBarBtnComment';
}
}
function clickTaskBarBtn(ev){
if($("ModalMaskFrm").style.display!="none")return;
ev = ev || window.event;
var s=ev.srcElement.getAttribute("winName");
frontXwin(s);
}
function closeXwin(s){
////frontXwin(s);
try{
hideResizer();
var dead=$(s);
dead.display="none";
dead.src="about:blank";
document.body.removeChild(dead);
delete dead;
dead=$(s+subfixName);
$("TaskBarDiv").removeChild(dead);
delete dead;
Wins--;
}catch(ex){
}
$("ModalMaskFrm").style.display="none";
try{
if(Wins>0)
frontXwin($("TaskBarDiv").childNodes[Wins].getAttribute("winName"));
}catch(ex){}
}
/*
function clipShape(s,tt,t,l,w,h){
try{
var e1=$(s+subfixName);
var e2=$("WinShape");
var p1=getPosition(e1);
var p2=getPosition(e2);
if(String(tt)=="undefined"){
tt=10;
l=parseInt((p1.x-p2.x)/10);
t=parseInt((p1.y-p2.y+e2.offsetHeight)/10);
w=parseInt((e2.offsetWidth -e1.offsetWidth) /10);
h=parseInt((e2.offsetHeight -e1.offsetHeight) /10);
}else{
tt--;
}
with($("WinShape").style){
left=(p2.x + l) +"px";
top=(p2.y + t ) + "px";
//window.status=l + "," + t
width=$("WinShape").offsetWidth -w +"px";
height=$("WinShape").offsetHeight-h +"px";
}
}catch(ex){
}
if(tt>1){
window.setTimeout("clipShape('" + s + "',"+tt+","+t+","+l+","+w+","+h+")",20);
}else{
hideShape();
}
}
*/
function minXwin(s){
var e=$(s+subfixName);
if(e){
if(e.getAttribute("modal")=="1")return;
}
frontXwin(s);
hideResizer();
//showShape();
$(s).style.display="none";
//clipShape(s);
}
function maxXwin(s){
var e=$(s+subfixName);
if(e.getAttribute("winMax")=="1"){
$(s).style.width=e.getAttribute("nowWidth");
$(s).style.height=e.getAttribute("nowHeight");
$(s).style.left=e.getAttribute("nowLeft");
$(s).style.top=e.getAttribute("nowTop");
e.setAttribute("winMax",0);
setResizer(s);
}else{
e.setAttribute("nowWidth",$(s).style.width);
e.setAttribute("nowHeight",$(s).style.height);
e.setAttribute("nowLeft",$(s).style.left);
e.setAttribute("nowTop",$(s).style.top);
e.setAttribute("winMax",1);
$(s).style.left=0;
$(s).style.top=0;
$(s).style.width=WinArea.getWidth() + "px";
$(s).style.height=WinArea.getHeight() + "px";
}
//
}
function moveXwin(s,t,l,w,h){
var w_=$(s).offsetWidth;
if(typeof(w)=='number'){w_=w}
var h_=$(s).offsetHeight;
if(typeof(h)=='number'){h_=h}
var t_=$(s).offsetTop;
if(typeof(t)=='number'){
t_=t;
if(t==0.5){
t_=parseInt((WinArea.getHeight()-h_)/2);
}
}
var l_=$(s).offsetLeft;
if(typeof(l)=='number'){
l_=l;
if(l==0.5){
l_=parseInt((WinArea.getWidth()-w_)/2);
}
}
$(s).style.left=l_ + "px";
$(s).style.top=t_ + "px";
$(s).style.width=w_ + "px";
$(s).style.height=h_ + "px";
setResizer(s);
}
function hideResizer(){
$("ResizerDiv").style.display="none";
$("ResizerFrm").style.display="none";
}
function setFront(sName){
var e= $(sName);
if(e){
e.style.display="";
e.style.zIndex=zInxTop;
e=$(sName+subfixName);
e.className="TaskBarBtnActive";
if(e.getAttribute("modal")=="1"){
$("ModalMaskFrm").style.zIndex=zInxTop-5;
$("ModalMaskFrm").style.display="";
}else{
$("ModalMaskFrm").style.display="none";
}
WinArea.TopWinName=sName;
}
}
function frontXwin(sName){
hideStartMenu();
$("ModuleFrm").style.zIndex=0;
if(WinArea.TopWinName!=sName){
var e= $(WinArea.TopWinName);
if(e){
e.style.zIndex=zInxWin;
e= $(WinArea.TopWinName+subfixName);
e.className="TaskBarBtnComment";
}
setFront(sName);
frontXwin(sName);
}else{
setFront(sName);
}
setResizer(sName);
}
function setResizer(sName){
var e=$(sName+subfixName);
if(e){
if(e.getAttribute("fixed")!="1"){
e= $(sName);
if(e){
//e.focus();
$("ResizerDiv").style.left=e.offsetWidth + e.offsetLeft - $("ResizerDiv").offsetWidth+2 + "px";
$("ResizerDiv").style.top =e.offsetHeight + e.offsetTop - $("ResizerDiv").offsetHeight +2 + "px";
$("ResizerDiv").style.zIndex=zInxTop-3;
$("ResizerDiv").style.display="";
$("ResizerFrm").style.top=$("ResizerDiv").style.top;
$("ResizerFrm").style.left=$("ResizerDiv").style.left;
$("ResizerFrm").style.zIndex=zInxTop-4;
$("ResizerFrm").style.display="";
}
}else{
$("ResizerFrm").style.display="none";
$("ResizerDiv").style.display="none";
}
}
}
function setXwinTitle(s,sName){
$(sName+subfixName).innerHTML=s;
}
function dragShape(){
//makeDraggable($("WinShape"));
showShape();
dragObject=$("WinShape");
//$("WinShape").onmousedown(window.event);
}
function initXwin(){
var dv=document.createElement("div");
dv.id="ResizerDiv";
dv.style.cssText=document.styleSheets('xwincss').rules(1).style.cssText;
document.body.appendChild(dv);
var dv=document.createElement("div");
dv.id="WinShape";
dv.style.cssText=document.styleSheets('xwincss').rules(2).style.cssText;
document.body.appendChild(dv);
repos();
makeDraggable($("ResizerDiv"));
makeDraggable($("WinShape"));
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -