// JavaScript Document

if (
		(typeof Prototype=='undefined') ||
		(typeof Element == 'undefined') ||
		(typeof Element.Methods=='undefined') ||
		parseFloat(Prototype.Version.split(".")[0] + "." + Prototype.Version.split(".")[1]) < 1.5
		)
	throw("Desktop exige le framework Prototype version >= 1.5.0");
	
if (
		(typeof dataRetriever=='undefined')
		)
	throw("Desktop exige la classe DataRetriever !");

var dimensions = {width: 0, height: 0};
var listsWidth = {left: 0, center: 0, right: 0};

Desktop = Class.create();

Desktop.prototype = {

  initialize: function(id) {
    this.uniqId;
    this.elmList = new List;
    this.sizeMin = 300;
    this.elementMenu;
    this.menu = new menuWindow();
    this.getDesktopSize();
    this.setListDimensions();
    this.create();
    new Event.observe(
                      'body',
                      'resize',
                      function(){
                       this.getDesktopSize();
                       this.setListDimensions();
                       this.create();
                      }
                      ,
                      false);
    
    //alert(listsWidth.left);
	//on regarde dans le fichier la liste des fenêtres à ouvrir au démarrage
    var dtRetriever = new dataRetriever('openlist://current.domain/getJSON.php?__callMethod=post&jsonTpl=./openList');
    var tmpData = dtRetriever.retrieve('data');
    if (tmpData != false) {
      this.windowsList = tmpData;
      this.initWindows();
		}
    
  },
  
  //Ouvre les fenêtres initiales
  initWindows: function(){
  	var wl = this.windowsList.items;
  	
  	for(var i=0;i < wl.length;i++)
  	{
  		this.createNewWindowTo(wl[i].column,wl[i].data);
  	}
  },
  
  create: function(fenetre){
      elements = Builder.node('div',{id:'Glob',className:'Glob'},
                  [
                    Builder.node('div',{id:'leftColumn', className:'left', style:'width: ' + (this.getListsWidth('left')+16) + 'px'},
                      [
                      ]),
                    Builder.node('div',{id:'centerColumn', className:'center', style:'width: ' + (this.getListsWidth('center')+16) + 'px'},
                      [
                      ]),
										Builder.node('div',{id:'rightColumn', className:'right', style:'width: ' + (this.getListsWidth('right')+16) + 'px'},
                      [
                      ]),
                  ]);
      $('body').appendChild(elements);
      
  },

  creatSortList: function(){
    Sortable.create("leftColumn",
                                     {
                                      tag: 'div',
                                      handle: 'handle',
                                      treeTag: 'div',
                                      dropOnEmpty:true,
                                      containment:["leftColumn","centerColumn","rightColumn"],
                                      constraint:false,
                                      onChange:function(){
                                                          var width = listsWidth.left;
                                  												var height = custWinHeight;
                                  												if (!$(Windows.getFocusedWindow().getId()+'_row2').visible()){
                                  												  //$(Windows.getFocusedWindow().setSize(width, 0));
                                  												  height = 0;
                                                          } 
                                                          //$(Windows.getFocusedWindow().setSize(width, height));
                                  												Windows.getFocusedWindow().setSize(width, height);
                                  												Windows.getFocusedWindow().options.column = 'left';
                                                        }
                                      }
                        );
      Sortable.create("centerColumn",
                                   {
                                    tag: 'div',
                                    handle: 'handle',
                                    treeTag: 'div',
                                    dropOnEmpty:true,
                                    containment:["leftColumn","centerColumn","rightColumn"],
                                    constraint:false,
                                    onChange:function(){
                                                        var width = listsWidth.center;
                                												var height = custWinHeight;
                                												if (!$(Windows.getFocusedWindow().getId()+'_row2').visible()){
                                  										  height = 0;
                                                        } 
                                												Windows.getFocusedWindow().setSize(width, height);
                                  											Windows.getFocusedWindow().options.column = 'center';
                                                        }
                                    }
                      );
      Sortable.create("rightColumn",
                                   {
                                    tag: 'div',
                                    handle: 'handle',
                                    treeTag: 'div',
                                    dropOnEmpty:true,
                                    containment:["leftColumn","centerColumn","rightColumn"],
                                    constraint:false,
                                    onChange: function() {
                                  												var width = listsWidth.right;
                                  												var height = custWinHeight;
                                  												if (!$(Windows.getFocusedWindow().getId()+'_row2').visible()){
                                                            height = 0;
                                                          }
                                                          //alert(height); 
                                  												Windows.getFocusedWindow().setSize(width, height);
                                  												Windows.getFocusedWindow().options.column = 'right';
                      											             }
                                    }
                      );
  },

  createNewWindowTo: function(column, psObjFentereData) {
    // Example psObjFentereData :
    /*
       NOUVELLE VERSION
      {className:'alphacube',resizable: true,parent:$('li_'+column+'_'+uniqId),title: "Test",url:"http://nhumbert.dev.capitol.fr/scripta/GC/listeNews.php?__callMethod=get&tn=2&tb=5&place=6",showEffect:Element.show,hideEffect: Effect.SwitchOff,draggable: true}
    */
  	var uniqId = this.elmList.elmCreateAtEnd(psObjFentereData.title,psObjFentereData.url);
  	var li = Builder.node('div', {id:'li_'+uniqId, className:'extWin'});
		$(column+'Column').appendChild(li);
		var hauteur = 200;
		var refreshAuto = false;
		if(psObjFentereData.height!=null) hauteur = psObjFentereData.height;
		if(psObjFentereData.refreshAuto!=null) refreshAuto = psObjFentereData.refreshAuto;
		/*
		var dtRetriever = new dataRetriever(psObjFentereData.url);
    var tmpData = dtRetriever.retrieve('html');
    */
		
		win = new Window(
											'li_'+uniqId+'_win',
											{
												className:psObjFentereData.className,
												resizable: psObjFentereData.resizable,
												maximizable: false,
												parent:$('li_'+uniqId),
												column:column,
												title: psObjFentereData.title,
												width: this.getListsWidth(column),
												height: hauteur,
												url:psObjFentereData.url,
												//content:tmpData,
												showEffect:psObjFentereData.showEffect,
												hideEffect: psObjFentereData.hideEffect,
												draggable: psObjFentereData.draggable,
												refreshAuto: refreshAuto,
												ico:  psObjFentereData.ico
											}
										);
		
		win.show();

    /*new Event.observe(
                      'li_'+uniqId+'_win',
                      'mouseup',
                      function(e) {
												var col = $('li_'+uniqId).parentNode.id;
												var width = eval('listsWidth.'+col.replace(/Column/, ''));
												var height = custWinHeight;
												alert(Windows.observers["onDrag"]);
												if (!$('li_'+uniqId+'_win_row2').visible() && Windows.observers["onDrag"] != Windows.getWindow('li_'+uniqId+'_win')) height = 0;
                        alert(height); 
                        
												Windows.getWindow('li_'+uniqId+'_win').setSize(width, height);
											},
											false);
    */
  	this.creatSortList();
	},
  
	getDesktopSize: function(){
	  /// ? source de pbs
	 dimensions = $('body').getDimensions('body');
	 return true;
  },
  
  setListDimensions: function(){
    centerWidth = dimensions.width - (this.sizeMin + 10 + 10)*2 - 70;
    listsWidth = {
      left: this.sizeMin,
      center: ((centerWidth<this.sizeMin)?this.sizeMin:centerWidth),
      right: this.sizeMin
    };
  },

  getListsWidth: function(column) {
    return eval('listsWidth.'+column);
  }
}

