/* 
 * FDesktop Functions
 * @author Fernando Hernandez - Freelance Soft
 * www.freelancesoft.com.ar
 *
 * DESCRIPCION:
 * Conjunto de funciones para el FDesktop.
 * 
 * 
 * REQUERIMIENTOS:
 * Clase FWindows, Dialog Functions, HTML con los elementos del escritorio FDesktop
 *
 * Testeado en Opera 9, Firefox 2 e IE 6, 7
 */
  var Windows_Open_Limit=12;
  var fwindow_Set=new FWindow_Set();
  var fwidget_Set=new FWidget_Set();
  
  function initFDesktop(){
     StartClock();
	 moveWindows_setTopLimit(30);
   }
  
  function showDesktop(){
    fwindow=fwindow_Set.getFirst().minimizeWindow();
	
	fwindow=fwindow_Set.next();
	while(fwindow){
		fwindow.minimizeWindow();
		fwindow=fwindow_Set.next();
	}
   }
  
  function newWindow(title,content){
   	 var i;
	 
	 i=fwindow_Set.freePos();
	 
	 fwindow_Set.addWindow(i, new FWindow(i,title,content,'desktop'));
	 
	 update_menu_items();
	 return i;
   }
  
  function newWidget(title,content){
   	 var i;
	 
	 i=fwidget_Set.freePos();
	 
	 fwidget_Set.addWidget(i, new FWidget(i,title,content,'desktop'));
	 
	 return i;
   }
  
  function openWindow(num){
      var fwindow=fwindow_Set.getWindow(num);
	  
	  if(fwindow.isWindowOpen()){
	  	toFront(num);
	  }else{
	  	fwindow.openWindow();
		toFront(num);
	  }	  
  }	 
  function closeWindow(num){
	  var fwindow=fwindow_Set.getWindow(num);
	 
	  fwindow_Set.removeWindow(num);
	  
	  fwindow.closeWindow();
	  update_menu_items();
  }	 
  
  function closeWidget(num){
  	var fwidget=fwidget_Set.getWidget(num);
	
	fwidget_Set.removeWidget(num);
	fwidget.closeWidget();
  }
  
  function minimizeWindow(num){
  	  var fwindow=fwindow_Set.getWindow(num);
	  
  	  fwindow.minimizeWindow();
  }
  
  function toFront(num){
  	fwindow=fwindow_Set.getFirst().toBack();
	
	fwindow=fwindow_Set.next();
	while(fwindow){
		fwindow.toBack();
		fwindow=fwindow_Set.next();
	}
  	(fwindow_Set.getWindow(num)).toFront();	
  }
  
  function change_back(id, x){
    fwidget_object=document.getElementById(id);	 
	
	switch(x){
		case 0: fwidget_object.style.backgroundImage= "url('images/back_widget.png')"; break;
		case 1: fwidget_object.style.backgroundImage= "url('images/back_widget_over.png')"; break;
	}   
    
  }
  
  function changeWindowsSize(num){
  	 fwindow=fwindow_Set.getWindow(num);
  	 if(fwindow.isMaximized()){
	 	fwindow.restaureWindow(); 
	 } else {
	 	fwindow.maximizeWindow();
	 }
  }
	 
  function open_menu(){
     var menu=document.getElementById('menu_desplegable');
	 
	 menu.style.visibility= "visible";
	 menu.style.zIndex= "1";
  }	 
  
  function close_menu(){
     var menu=document.getElementById('menu_desplegable');
	 
	 menu.style.visibility= "hidden";
	 menu.style.zIndex= "0";
  }	 
  
  function setDesktopBackground(image){
   	  var desktop=document.getElementById('body');
	  
	  desktop.style.backgroundImage="url("+image+")";
   }
   
   function setDesktopColor(color){
   	  var desktop=document.getElementById('body');
	  
	  desktop.style.backgroundColor=color;
   }
   
   function update_menu_items(){
      var items=document.getElementById('menu_bar_items');
	  
	  items.innerHTML="";
	  
	  fwindow=fwindow_Set.getFirst();

	  while(fwindow){
    	items.innerHTML=items.innerHTML+" | <a href=\"javascript:openWindow("+fwindow.getID()+")\" class=\"link_menu_item\">"+fwindow.getTitle()+"</a> <a href=\"javascript:closeWindow("+fwindow.getID()+")\" class=\"link_menu_item\">(X)</a>";
		fwindow=fwindow_Set.next();
	 }
   }
  
  
//----------------------------------- CLOCK FUNCTIONS
  function UpdateClock() {
    var reloj=document.getElementById('reloj');
   
    if(clockID) {
      clearTimeout(clockID);
      clockID  = 0;
     }

    var tDate = new Date();

    var hora = (tDate.getHours()>9) ? tDate.getHours() : "0"+tDate.getHours();
    var minutos = (tDate.getMinutes()>9) ? tDate.getMinutes() : "0"+tDate.getMinutes();
   
    reloj.innerHTML = hora + ":" + minutos;
   
    clockID = setTimeout("UpdateClock()", 5000);
   }
   
   function StartClock() {
     clockID = setTimeout("UpdateClock()", 500);
   }
//--------------------------------- END CLOCK FUNCTIONS