domapi.loadUnit("window");
domapi.loadUnit("popupmenu");
domapi.loadUnit("icon");
domapi.loadUnit("shadow");    
domapi.loadUnit("json");
domapi.loadUnit("thirdparty/btudball/statusbar");
domapi.loadUnit("thirdparty/btudball/resizegrip");

var iWallPaperSelected = 0;
var oPopupMenu = null;
var oDesktop = null;
var oComputer = null;
var oRecycler = null;

onload = function() {
    xWPos = 120;
    yWPos = 50;

    oPopupMenu = domapi.Popupmenu({x:200,y:50});

    oDesktop = domapi.Elm({ref:document.body});
    oDesktop.menudata = "data/popmenu-desktop.js";
    oPopupMenu.attach(oDesktop); 
    
    oComputer = domapi.Icon({x:10, y:10 ,w:75, h:70, imgW:32, imgH:32,text:"My Computer",src:"images/computer32.gif", menudata:"data/popmenu-computer.js"});
    oComputer.ondblclick = startExplorer;
    oPopupMenu.attach(oComputer);   
    
    oRecycler = domapi.Icon({x:10, y:80 ,w:75, h:70, imgW:32, imgH:32,text:"Recycle Bin",src:"images/recycler32.gif", menudata:"data/popmenu-recycler.js"});
    oRecycler.setImageIndex(1);
    oPopupMenu.attach(oRecycler);    
    
    domapi.addEvent( oDesktop, "contextmenu", onDesktopContext);
    domapi.addEvent( oComputer,"contextmenu", onGenContext);
    domapi.addEvent( oRecycler,"contextmenu", onRecyclerContext);
};

function onGenContext(E) {
    try {
        var _this = domapi.findTarget(E, "ICON"); if(!_this)return;
        _this.popupmenu.clear();
        _this.popupmenu.beginUpdate();
        _this.popupmenu.loadFromJson(domapi.urlToJson(_this.menudata));
        _this.popupmenu.endUpdate();
    } finally {
        _this = null;
    }
};
function onDesktopContext(E){
    try {
      var oJSON = domapi.urlToJson(oDesktop.menudata);
      oJSON.items[5].childMenu.items[iWallPaperSelected].checked = true;
      oDesktop.popupmenu.clear();
      oDesktop.popupmenu.beginUpdate();
      oDesktop.popupmenu.loadFromJson(oJSON);
      oDesktop.popupmenu.endUpdate();
      // this menu needs to be raised above windows
      oDesktop.popupmenu.bringToFront();
    } finally {
        oJSON = null;
    }
};

function onRecyclerContext(E){
    try {
        var oJSON = domapi.urlToJson(oRecycler.menudata);
        oJSON.items[2].enabled = (oRecycler.getImageIndex()==1);
        oRecycler.popupmenu.clear();
        oRecycler.popupmenu.beginUpdate();
        oRecycler.popupmenu.loadFromJson(oJSON);
        oRecycler.popupmenu.endUpdate();
    } finally {
        oJSON = null;
    }
};

 function emptyRecycler() {
    oRecycler.setImageIndex(0);
};

function startExplorer(){
    var rg, oW;
    var sCaptionMsg = '<img class="captionText" src="images/explorer16.gif" width="16" height="16" border="0" /><span class="captionText" ></span>';
    var sStatusMsg = '<img class="captionText" src="images/computer16.gif" width="16" height="16" border="0" />&nbsp;My Computer';
    oW = domapi.Window({text:sCaptionMsg,x:xWPos,y:yWPos,w:700,h:500,windowType:"IFRAME",showContentsWhileDragging:true});
    oW.titleBar.cell.firstChild.firstChild.ondblclick = function() {oW.close();};
    oW.setCaptionText = function(sTxt) {oW.titleBar.cell.firstChild.childNodes[1].innerHTML = "&nbsp;"+sTxt;}
    var sURL = "explorer.htm?theme=system&skin=true";
    try{
      domapi.shadow.dropShadow(oW,5);
      oW.loadURL(sURL);
      xWPos += 20;
      yWPos += 20;
      
      oW.sb = domapi.Statusbar({parent:oW,x:0,y:oW.getH()-18});
      oW.sb.beginUpdate();
      oW.sb.countPanel = oW.sb.addPanel({text:"0 objects"});
      oW.sb.sizePanel = oW.sb.addPanel({text:"0 KB", type:ptFixed,minW:100});
      var oStatusPanel = oW.sb.addPanel({text:sStatusMsg, type:ptFixed,minW:200});

      oW.sb.countPanel.style.fontSize = "8pt";
      oW.sb.sizePanel.style.fontSize = "8pt";
      oStatusPanel.style.fontSize = "8pt";
      
      oW.sb.doResize();
      rg = domapi.Resizegrip({parent:oW,fMove:rgResize});
      oW.sb.endUpdate();
      
      // make sure that the statusbar moves with the window during maximixe,minimize, and restore as necessary
      oW.onmaximize = oW.onendresize = winResize;
      oW.onminimize = function() {oW.sb.style.display = rg.style.display="none";};
      oW.onrestore = function() {oW.sb.style.display = rg.style.display="";winResize();};
    } finally{
    }
    
    function rgResize(){
      oW.sb.moveTo(oW.sb.gap,oW.getH()-oW.sb.getH()-oW.sb.margin);
      oW.sb.setW(oW.getW()-oW.sb.margin-oW.sb.gap);
      oW.sb.doResize();
    };
        
    function winResize(){
      rgResize();
      rg.setX(oW.getW()-rg.getW()-rg.margin);
      rg.setY(oW.getH()-rg.getH()-rg.margin);  
    };
};

function showReadme(){
    var w=500, h=270;
    var oW2 = domapi.Window({text:'Readme',w:w,h:h,windowType:"IFRAME", showContentsWhileDragging: true});
    try{
      domapi.shadow.dropShadow(oW2,6,"gray");
      oW2.loadURL("Readme.htm?theme=system&skin=true");        
      oW2.moveTo(domapi.bodyWidth()/2-w/2, domapi.bodyHeight()/2-h/2);
    }finally{
      oW2 = null;
    }
};

function onDesktopProps(){
  showReadme();
};

function onBGChange(menu, i){
    var s = menu.getText(i);
    iWallPaperSelected = i;
    
    if (menu.items[i].FN == "") {
      domapi.getElm("idBgImage").style.display = "none";
    }
    else {
      domapi.getElm("idBgImage").style.display = "";
      domapi.getElm("idBgImage").src = "images/bg/"+menu.items[i].FN;
    }
};


domapi.onunload = function(){
    oPopupMenu = null;
    oDesktop   = null;
    oComputer  = null;
    oRecycler  = null;
};