/**
 * The PaletTiler class controls the way palets are laid out on screen as they
 * are opened by a user.
 */

var PaletTiler=new Class({
	options:
	{
		container:null
	},
	initialize:function(options){
		var me=this;
		me.setOptions(options);
		me.palets=[];
		me.leftOffset = 0; //Accounts for maximized and minimized views when placing palets
		me.rightOffset = 0;
	},
	setBounds:function(){
		var me=this;
		//mm_debug("initializing useable window boundary");
		var coord = me.options.container.getCoordinates();
		me.leftOffset = coord.left;
		me.topOffset = coord.top;
		me.options.container;
	},
	addPalet:function(palet){
		//addButtons
		var me=this;
		//mm_debug("PaletTiler added Palet - "+(palet.isOpen()?"open":"closed"));
		me.stackButton=new Element('span',{'class':"menuTileButton"});	//RENAMED TO stackButton AS IT WAS OVERRIDING INSTANCE METHOD "stack" line 1190
		palet.addEvent('onLoad',function(){
			//palet.menu.addButton(new Element('span',{'class':"menuGlueButton"}));
			palet.menu.addButton(me.stackButton);
		});
		palet.addEvent('onClose',function(){
		});
		me.stackButton.addEvent('click', function(){me.stack(palet);});
		me.palets.push(palet);
	},
	removePalet:function(palet){},
	tile:function(options){},
	stack:function(palet, options){
		var gWin=palet.mediaMap.element;
		var win=window;

		mm_debug("Stack!");
		mm_debug(gWin);
		mm_debug(win);
	},
	openPalets:function(palets){
		var rslt = [];
		for(var i=0; i<palets.length; i++) {
			if(palets[i].isOpen())
				rslt.push(palets[i]);
		}
		return rslt;
	},
	glue:function(options){},
	getPosition:function(palet,options){
		var openPs = this.openPalets(this.palets);
		var GTemp;
		if(!palet.isOpen()) {
			if(openPs.length >= 1){
				var lastOpenedPalet = openPs[openPs.length-1]; //last opened palet
				var coord = lastOpenedPalet.menu.container.getCoordinates();
				//mm_debug(coord);
				GTemp = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(coord.right-this.leftOffset, coord.top-this.topOffset)); //Must anchor top left because mootools script requires it in order to be draggable
			}
			else {
				GTemp = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(50, 50)); //Must anchor top left because mootools script requires it in order to be draggable
			}
		}
		else {
			var coord = palet.menu.container.getCoordinates();
			GTemp = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(coord.left-this.leftOffset, coord.top-this.topOffset));
		}
		return GTemp;
	}
});
PaletTiler.implement(new Options(), new Events());
