var Desktop = { dom : {windows: {}}, ressources : {metal: 2000, cristal: 1500, ions: 1000, energie: [1000,1500]}, planete : 1, //Planete sélectionné planetes : [[01,'Pegasi Alpha',8,31,4,1],[02,'Pegasi Beta',8,31,3,2],[03,'Pegasi Delta',8,31,2,3],[04,'Pegasi Zeta',8,31,1,4]], //id, nom , amas, syteme solaire, position, image. menu : [['Fenêtre 1',fenetre1],['Fenêtre 2',fenetre2],['Batiments',batiments],['Dialog',dialog],['Notification',notification],['Double',doubler]], descriptions : { batiments: { 1:['Usine de Métal','metal.png','Le purificateur de métal vous fournit les matières premières pour la construction de vos infrastructures et de vos unités. Plus vous développerez vos purificateurs, plus ils produiront de ressources. Les purificateurs les plus développés ont aussi besoin de plus d\'énergie.'], 2:['Purificateur de Cristal','cristal.png','Le purificateur de cristal vous fournit les ressources pour vos installations électroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'énergie que celui de métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leurs composants électroniques. La production augmente avec le développement de l\'usine.'], 3:['Ionisateur','hydrogene.jpg','L\'ionisateur utilise des ions négatifs et positifs d\'hydrogène pour créer une source conventionnelle de courant stable, servant à alimenter les bâtiments covenants qui nécessitent une arrivée massive de cette "ressource" pour actionner les divers éléments matériels des contrôles. La centrale de fusion à besoin de beaucoup d\'ions pour fonctionner.'] }}, Start : function() { /*new Ajax.Request('descriptions.xml',{method: 'get',onSuccess: function(xhr) { Desktop.dom.descriptions = xhr.responseXML; truc = xhr; bat = Desktop.dom.descriptions.documentElement.getElementsByTagName('*'); //alert(bat[2].textContent); for(var i in bat) { //Desktop.descriptions['batiments'][bat[i].getAttribute('id')] = [bat[i].getAttribute('name'),bat[i].getAttribute('img'),bat[i].textContent]; //Desktop.descriptions.batiments = bat[i]; alert(i); } }});*/ this.dom.menu = create('ul',document.body,'menu'); this.dom.barre = create('div',document.body,'barre'); var barre = new Array(); for(var i=0; i < this.menu.length ; i++) { this.menu[i][2] = create('li',this.dom.menu); this.menu[i][2].innerHTML = this.menu[i][0]; this.menu[i][2].onclick = this.menu[i][1]; } var ressources = create('div',document.body,'ressources'); var metal = create('div',ressources); metal.innerHTML = 'Métal : '; metal = create('span',metal); metal.innerHTML = this.ressources.metal; var cristal = create('div',ressources); cristal.innerHTML = 'Cristal : '; cristal = create('span',cristal); cristal.innerHTML = this.ressources.cristal; var ions = create('div',ressources); ions.innerHTML = 'Ions : '; ions = create('span',ions); ions.innerHTML = this.ressources.ions; var energie = create('div',ressources); energie.innerHTML = 'Energie : '; var energie = create('span',energie); energie.innerHTML = this.ressources.energie[0] +'/'+ this.ressources.energie[1]; this.dom.ressources = {metal: metal,cristal: cristal, ions: ions,energie: energie}; var planetes = create('div',document.body,'planetes'); var up = create('span',planetes,document.body,'up'); up.onclick = function() { return; } for(var i = 0; i <= 2 && i < this.planetes[i].length; i++) { var p = create('img',planetes); p.src = 'planetes/'+this.planetes[i][5]+'.jpg'; p.onclick = callback(function(i) { Desktop.ChangePlanete(i);},i); if(this.planetes[i][0] == this.planete) Element.addClassName(p,'selected'); } var down = create('span',planetes,0,'down'); down.onclick = function() { return; } }, NewWin : function(id,t,c) { if(!this.dom.windows[id]) { var o = new Object(); o.win = create('div',document.body,'Window'+id,'window'); o.win.style.zIndex = 10; o.top = create('div',o.win,0,'top'); o.topleft = create('span',o.top,0,'topleft'); o.topcenter = create('span',o.top,0,'topcenter'); o.topright = create('span',o.top,0,'topright'); o.barre = create('div',o.win,0,'barre'); o.barre.onmousedown = function(event) { Desktop.WinMove(id,event,1); }; o.barre.onmouseup = function(event) { Desktop.WinMove(id,event,3); }; o.titre = create('span',o.barre,0,'titre'); o.titre.innerHTML = t; o.button = create('div',o.barre,0,'button'); o.button.onmousedown, o.button.onmouseup = function() { return false;}; o.hide = create('span',o.button,0,'hide'); o.full = create('span',o.button,0,'full'); o.close = create('span',o.button,0,'close'); o.hide.onclick = function() { Desktop.WinHide(id); }; o.full.onclick = function() { Desktop.WinFull(id); }; o.close.onclick = function() { Desktop.WinClose(id); }; o.hide.onmousedown, o.full.onmousedown, o.close.onmousedown = function() { return false;}; o.content = create('div',o.win,0,'content'); if(typeof(c) == 'object') o.content.appendChild(c); else o.content.innerHTML = c; o.bottom = create('div',o.win,0,'bottom'); o.bottomleft = create('span',o.bottom,0,'bottomleft'); o.bottomcenter = create('span',o.bottom,0,'bottomcenter'); o.bottomright = create('span',o.bottom,0,'bottomright'); o.barre = create('div',this.dom.barre); o.barre.innerHTML = t; o.barre.onclick = function() { Desktop.WinFocus(id); } ; o.id = id; o.x = o.win.offsetLeft; o.y = o.win.offsetTop; o.h = o.win.offsetHeight; o.w = o.win.offsetWidth; o.full = false; o.move = false; o.moveX = 0; o.moveY = 0; this.dom.windows[id] = o; var r = new Object(); r.id = id; r.Close = function() { return Desktop.WinClose(id); } ; r.Full = function() { return Desktop.WinFull(id); } ; r.Hide = function() { return Desktop.WinHide(id); } ; r.Focus = function() { return Desktop.WinFocus(id); } ; r.Move = function(x,y) { return Desktop.WinMove(id,x,y); } ; r.Resize = function(x,y) { return Desktop.WinResize(id,x,y); } ; r.Content = function(t) { return Desktop.WinContent(id,t); } ; this.WinFocus(id); return r; } else this.WinFocus(id); }, WinFull : function(id) { if(this.dom.windows[id].full) { this.dom.windows[id].win.style.left = this.dom.windows[id].full[0]+'px'; this.dom.windows[id].win.style.top = this.dom.windows[id].full[1]+'px'; this.dom.windows[id].win.style.width = this.dom.windows[id].full[2]+'px'; this.dom.windows[id].win.style.height = this.dom.windows[id].full[3]+'px'; this.dom.windows[id].full = false; } else { this.dom.windows[id].full = [this.dom.windows[id].win.offsetLeft, this.dom.windows[id].win.offsetTop, this.dom.windows[id].win.offsetWidth, this.dom.windows[id].win.offsetHeight]; this.dom.windows[id].win.style.top = '0'; this.dom.windows[id].win.style.left = '0'; this.dom.windows[id].win.style.width = '100%'; this.dom.windows[id].win.style.height = (document.documentElement.offsetHeight - this.dom.barre.offsetHeight - 49) + 'px'; } Desktop.WinFocus(id); }, WinHide : function(id) { this.dom.windows[id].win.style.display = 'none'; }, WinFocus : function(id) { this.dom.windows[id].win.style.display = 'block'; this.dom.windows[id].x = this.dom.windows[id].win.offsetLeft; this.dom.windows[id].y = this.dom.windows[id].win.offsetTop; this.dom.windows[id].w = this.dom.windows[id].win.offsetHeight; this.dom.windows[id].h = this.dom.windows[id].win.offsetWidth; var z = this.dom.windows[id].win.style.zIndex * 1; for(var i in this.dom.windows) { z = z >= this.dom.windows[i].win.style.zIndex ? z : this.dom.windows[i].win.style.zIndex * 1; } this.dom.windows[id].win.style.zIndex = z+1; }, WinMove : function(id,event,action) { if(action == 1 && !this.dom.windows[id].full) // MouseDown { Desktop.WinFocus(id); this.dom.windows[id].moveX = Event.pointerX(event) - this.dom.windows[id].win.offsetLeft; this.dom.windows[id].moveY = Event.pointerY(event) - this.dom.windows[id].win.offsetTop; document.body.onmousemove = function(event) { Desktop.dom.windows[id].move = event; Desktop.WinMove(id,event,2);}; opacity(this.dom.windows[id].win,50); } else if(action == 2) //MouseMove { x = Event.pointerX(event) - this.dom.windows[id].moveX; y = Event.pointerY(event) - this.dom.windows[id].moveY; this.dom.windows[id].win.style.left = (x > 0 ? x : 0) + 'px'; this.dom.windows[id].win.style.top = (y > 0 ? y : 0) + 'px'; } else if(action == 3) //MouseUp { this.dom.windows[id].x = this.dom.windows[id].win.offsetLeft; this.dom.windows[id].y = this.dom.windows[id].win.offsetTop; opacity(this.dom.windows[id].win,100); document.body.onmousemove = function() { return false;}; } }, WinContent: function(id,c) { if(typeof(c) == 'object') { this.dom.windows[id].content.innerHTML = ''; this.dom.windows[id].content.appendChild(c); } else this.dom.windows[id].content.innerHTML = c; }, WinClose : function(id) { Element.remove(this.dom.windows[id].win); Element.remove(this.dom.windows[id].barre); delete this.dom.windows[id]; }, Dialog : function(text,callback) { if(!this.dom.dialog) { this.dom.darkness = create('div',document.body,'darkness'); fade('darkness',0,80,400); this.dom.dialog = create('div',document.body,'dialog'); var p = create('p',this.dom.dialog); p.innerHTML = text; var ok = create('span',this.dom.dialog,0,'button'); ok.innerHTML = 'ok'; var cancel = create('span',this.dom.dialog,0,'button'); cancel.innerHTML = 'Annuler'; var quit = create('span',this.dom.dialog,0,'quit'); var close = function() { Element.remove(Desktop.dom.dialog); Element.remove(Desktop.dom.darkness); Desktop.dom.dialog = false; Desktop.dom.darkness = false; }; quit.onclick = close; cancel.onclick = close; ok.onclick = function() { close(); callback(); }; } }, Notification: function(message) { if(!this.dom.notification) { this.dom.notification = create('p',document.body,'notification'); this.dom.notification.innerHTML = message; move('notification','bottom',-110,35,2000); setTimeout(function() {move('notification','bottom',35,-110,2000);},7000); setTimeout(function() {Element.remove(Desktop.dom.notification); Desktop.dom.notification = false;},10000); } }, Ressource: function(ressource,set) { switch(ressource) { case 'metal': case 'cristal': case 'ions': if(set) { this.dom.ressources[ressource].innerHTML = set; this.ressources[ressource] = set; } break; case 'energie': if(set) { this.dom.ressources[ressource].innerHTML = set+'/'+this.ressources[ressource][1]; this.ressources[ressource][0] = set; } break; case 'energieAll': if(set) { this.dom.ressources[ressource].innerHTML = this.ressources[ressource][0]+'/'+set; this.ressources[ressource][1] = set; } break; default: return false; } return this.ressources[ressource]; }, ChangePlanete: function(i) { if(this.planetes[i][0] != this.planete) alert('Changement de planete : '+this.planetes[i][1]); } } function create(type,parent,id,classe) { var element = document.createElement(type); if(id && !$(id)) element.setAttribute('id',id); if(classe) Element.addClassName(element,classe); if(parent) element = $(parent).appendChild(element); return element; } function callback(funct,parameter) { return function() { funct(parameter); }; } function move(objet,relative,from,to,speed) { switch(relative) { case 'top': case 'bottom': case 'left': case 'right': for(var i=1; i <= (Math.floor(Math.abs(from - to))) ;i++) { setTimeout(callback(function(i) {$(objet).style[relative] = (from < to ? from + i : from -i)+'px';},i),Math.floor(speed / (Math.floor(Math.abs(from - to))) * i)); } break; default: return false; } } function fade(objet,from,to,speed) { for(var i = 1; (Math.floor(Math.abs(from - to)) / 10) >= i; i++) { setTimeout(callback(function(i) {opacity(objet,(from < to ? from + i * 10 : from - i * 10));},i),Math.floor(speed / (Math.floor(Math.abs(from - to)) / 10)) * i); } } function opacity(objet,opacity) { $(objet).style.opacity = opacity / 100; $(objet).style.MozOpacity = opacity /100; $(objet).style.KhtmlOpacity = opacity / 100; $(objet).style.filter = "alpha(opacity="+opacity+")"; } function bulle(objet,text) { if(!$('bulle')) { objet.onmouvehover = function() { bulle = $('body').appendChild(document.createElement('div')); bulle.setAttribute('id','bulle'); }; } } function fenetre1() { var test1 = Desktop.NewWin('test1','Test','Hello World'); } function fenetre2() { var test2 = Desktop.NewWin('test2','Test 2','
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla
Bla bla bla bla bla bla bla bla bla bla bla