sysDebug("processing gsosWindow");

// ************** Init ********************************

var maxwindow=4;
var iniposx=100,iniposy=100;
var showBorder=0;


// ************** PUBLIC FUNCTIONS ******************************************

function gsosAddWindow(title, posx,posy,mode,sizex,sizey)
{
	var id =_newWindow();
	if (!id)
		return;

	_wintext = '<table width=100% border='+showBorder+' class=sysfont ><tr valign=bottom >';
	
var row = id + 'row';
var data = id + 'data';
var hidden = id + 'hidden';


    var str =  '<TABLE border='+showBorder+' class=sysfont  cellspacing=0 cellpadding=0 width=100% ><TR>';
     str += '<TD width=32px id='+hidden+'0>';

   str += '<a href="javascript:closeWindow('
          + "'" + id + "');"
		  + '" onMouseOver="sysChangeImg('
          + "'win" + id + "','gifcloseselected');"
		  + '" onMouseOut="sysChangeImg('
          + "'win" + id + "','gifclose');"
		  + '">';
   str+='<IMG src="pic/close.gif" name="win' +id+ '" border='+showBorder+'></A></TD>';

     str += '<TD WIDTH=50% id='+hidden+'1 STYLE="background:url(' + "'pic/menufill.gif'" + ');" id="i'+id+'" onMouseDown="mouseClick(event)">&nbsp;</TD>';
     str += '<TD  onMouseDown="mouseClick(event)">&nbsp;' +title+ '&nbsp;</TD>';
     
	if (mode!=1)
	{
	     str += '<TD WIDTH=50% id='+hidden+'2 onMouseDown="mouseClick(event)" STYLE="background:url(' + "'pic/menufill.gif'" + ');"></TD>';
	     str += '<TD width=32px id='+hidden+'3><IMG  SRC="pic/menutopright.gif" ></TD>';
	}
	else
	{
	    str += '<TD colspan=2 WIDTH=50% id='+hidden+'2 onMouseDown="mouseClick(event)" STYLE="background:url(' + "'pic/menufill.gif'" + ');"></TD>';
	}     
	str += '</TR>';
	
str += '<TR><TD height=2 COLSPAN=5 WIDTH=100% STYLE="background:url(' +"'pic/trait.gif'" +');"></TD></TR>';

	if (mode!=1)
	{
		str += '<TR><TD COLSPAN=5><TABLE width=100%>';
		str += '<TD width=25% align=left>Windows 2000</TD>';
		str += '<TD width=25% align=center>3 Items</TD>';
		str += '<TD width=25% align=center>1.45Mb used</TD>';
		str += '<TD width=25% align=right>127Mb Free</TD>';
		str += '</TABLE></TD></TR>';
	
		str += '<TR><TD COLSPAN=5 height=2 WIDTH=100% STYLE="background-repeat=repeat-x; background:url(' +"'pic/trait.gif'" +');"></TD></TR>';
		str += '<TR><TD></TD><TD></TD><TD></TD><TD></TD><TD width=32px align=right><img src="pic/menuflechehaut.gif"></TD></TR>';
		
		str += '<TR id="' +row+ '" height=100px>';
		str += '<TD colspan=4 id="'+ data+ '" ></td>';
		str += '<TD width=32px STYLE="background:url(' +"'pic/menuflechefill.gif'" + ');"></TD></TR>';
		str += '<TR><TD></TD><TD></TD><TD></TD><TD></TD><TD width=32px align=right><img src="pic/menuflechebas.gif"></TD></TR>';
	
	
		str += '<TR><TD height=2 COLSPAN=5 WIDTH=100% STYLE="background:url(' +"'pic/trait.gif'" +');"></TD></TR>';
	
		str += '<TR><TD align=left><IMG SRC="pic/menubottomleft.gif"></TD>';
		str += '<TD></TD><TD></TD>';
	
		str += '<TD align=right STYLE="background-repeat:repeat-y; background:url(' +"'pic/menubottomright2.gif'" + ') right;"></TD>';
	
		str += '<TD align=right onMouseDown="mouseResize()" id="r'+id+'" STYLE="cursor:move; background:url(' +"'pic/menubottomright1.gif'" + '); background-repeat:no-repeat;"></TD></TR>';
		str +=  '</TABLE>';
	}
	else
	{
		str += '</TABLE><table><tr><td id="'+ data+ '" class=sysfont onMouseDown="gsosMakeOnTop('+"'"+id+"'"+')" ><</td></tr></table>';
		/*
		str += '<TR id="' +row+ '" height=100px>';
		str += '<TD colspan=4 id="'+ data+ '" >hello world</td></tr>';
		*/
	}


	sysWriteInnerHTML(id,str);

	if (posx>0)
		sysSetPosition(id,posx,posy);
	else
	{
		sysSetPosition(id,wposx,wposy);

		wposx+=40;
		wposy+=40;
		if (wposy>400)
		{
			wposx=iniposx;
			wposy=iniposy;
		}
	}
	
	if (sizex>0)
		sysSetSize(id,sizex,sizey);

	return id;			
}

function gsosAddWindowItem(id,folderid,icon)
{

	var str2 = _buildItem(id+folderid,folderid,icon );
	_wintext += '<td>'+str2+'</td>';
    
}

function gsosAddWindowHTML(id,str)
{
	_wintext += str;
}

function gsosAddPicture(id,name,file)
{
	_addGenericItem(id,name,file,"file","_displayPic");
}

function gsosAddTextFile(id,name,file)
{
	_addGenericItem(id,name,file,"readme","_displayTextFile");
}



function gsosActivateWindow(id)
{
	if (!id)
		return;
		
	_wintext += '</tr></table>' ;
	sysWriteInnerHTML(id+'data',_wintext );
	gsosMakeOnTop(id);
	sysSetVisibility(id,"visible");
}

function gsosCloseAllWindows()
{
   for(var i=0;i<maxwindow;i++)
    	closeWindow("w"+i);
}

function gsosArrangeWindows()
{
   wposx=iniposx;
   wposy=iniposy;
   for(var i=0;i<maxwindow;i++)
   {
    	sysSetPosition("w"+i,wposx,wposy);
    	wposx+=40;wposy+=40;
    }
}


// ****************** INTERNAL VARIABLES ************************************

var _wintext;
var twindow = new Array(maxwindow);;
var topWindow;		// fenetre top
var wposx=iniposx,wposy=iniposy;

// ****************** INTERNAL FUNCTIONS ************************************

function _addGenericItem(id,name,file,icon,function2call)
{

idname=id+"text"+name;

	var str2 = '<table border='+showBorder+' ><tr><td align=center><a href="javascript:sysChangeImg(' 
   		 + "'" +name
		 + "','gif"+icon+"');javascript:"+function2call+"('"
		 + name + "','"+file+"'"
		 + ');"  onMouseOver="sysChangeImg('
		 + "'" + idname + "','gif"+icon+"selected');"
		 + '" onMouseOut="sysChangeImg('
   		 + "'" + idname + "','gif"+icon+"');"
		 + '">';
   str2+='<IMG src="pic/'+icon+'.gif" name="' +idname+ '" border='+showBorder+'></A></td><tr><td align=center><font class=sysfont>'+name+'</font></td></tr></table>';
   	_wintext += '<td>'+str2+'</td>';
}

function _AddWindowSystem()
{
var i;
 for( i=0;i<maxwindow;i++)
 	  {
	  var str = '<div id="w' +i+ '" style="position:absolute; visibility:hidden; background: white; BORDER: 2px solid black; zindex=1;" onMouseDown="sysDebug(1);gsosMakeOnTopEvent(event)"></div>';
	  document.write(str);
	  }
	  	
 for( i=0;i<maxwindow;i++)
        twindow[i]=true;
}

function closeWindow(str)
{
	
	sysDebug("closeWindow");
	
    var c = eval(str.substr(1,2));
    if (twindow[c]) return;
    twindow[c]=true;
    topWindow=0;
    sysWriteInnerHTML(str,null);
    sysSetVisibility(str,"hidden");    
    
    // recherche la fenetre la plus en avant
    var max=-1;
    var ind=-1;
    for(var i=0;i<maxwindow;i++)
    {
    	if (!twindow[i])
    	{
	    	var z = sysGetZIndex("w"+i);
	    	sysDebug("find:"+z+"/"+ind+"/"+max);
	    	if (z>max)
	    	{
	    		max=z;
	    		ind=i;
	    	}
	    }
    }
    sysDebug("find:"+z+"/"+ind+"/"+max);
    if (ind!=-1)
    	gsosMakeOnTop("w"+ind);
    else
    {
    	wposx=iniposx;
    	wposy=iniposy;
    }
}

function _newWindow()
{

	sysDebug("newWindow");
	
 	for(var i=0;i<maxwindow;i++)
 	{
         if (twindow[i])
          {
              twindow[i]=false;
              return "w"+i;
          }
      }
 	alert("Too many windows !");
 	return 0;
}

function _displayPic(name,file)
{
sysDebug("_displayPic:"+name+", "+file);
	var win = gsosAddWindow(name,-1,-1,1,640,400);
	if (!win)return;
	gsosAddWindowHTML(win,'<img src="'+file+'" width=640 height=400>');
	gsosActivateWindow(win);
}

function _displayTextFile(name,file)
{
sysDebug("_displayTextFIle:"+name+", "+file);
	var win = gsosAddWindow(name,-1,-1,1,640,400);
	if (!win)return;
	gsosAddWindowHTML(win,'<iframe src="'+file+'" width=620 height=380></iframe>');
	gsosActivateWindow(win);
}

function getParent(tag)
{
	if (iex)
	{
		while( tag.tagName!="DIV" ) tag=tag.parentElement;
		return tag.id;
	}
	else
		return tag.id.substr(1,3);
}


// ****************** MOVE ********************

var deltax=0;
var deltay=0;

function get_mousemove(e)
{

//	sysDebug("mouseMove");
	
 var x = sysGetMouseX(e);
 var y = sysGetMouseY(e);
 var my = sysGetWindowSizeY("toppanel") +sysGetWindowY("toppanel") ;
	if ( y+deltay < my )
		sysSetPosition( topWindow,x+deltax,my );
	else
		sysSetPosition( topWindow,x+deltax,y+deltay );
	
		
	return false;

}

// ****************** RESIZE ********************

var refx=0;
var refy=0;
var inresize=0;

function get_mouseresize(e)
{
//	sysDebug("mouseResize event");

 var x = sysGetMouseX(e);
 var y = sysGetMouseY(e);

  var nx =     refx + x - deltax;
  var ny =      refy + y - deltay;

	sysResize( topWindow,nx,ny);
}

function mouseResize(e)
{
	sysDebug("mouseResize");
	
	inresize=1;
	mouseClick(e);
}


function mouseClick()
{
	sysDebug("mouseClick");
	
	if (inresize == 2 )	return;
		
	var e = sysRetrieveEvent();
			
	var x = sysGetMouseX(e);
	var y = sysGetMouseY(e);
   	
   	var pe = sysGetTrigger(e);			  
	var pi = getParent( pe );
	if (!pi) return;
		
	//gsosMakeOnTop(pi);	// topWindow positionné
	  
	if (inresize==1)
	{
		
		
		deltax = x;
		deltay = y;
		refx = sysGetWindowSizeX(pi);
		refy = sysGetWindowSizeYbis(pi+"row");
		
		sysSetMouseMoveEvent( get_mouseresize );
		sysDebug("to mouseResize ");
		inresize=2;
	}
	else
	{
		deltax = sysGetWindowX(pi) - x ;
		deltay = sysGetWindowY(pi) - y ;

		sysSetMouseMoveEvent( get_mousemove );
		sysDebug("to mouseMove ");
	}
	
	return false;

}

function mouseUp()
{
	sysDebug("mouseUp");
	deactivateMenu();
 	sysSetMouseMoveEvent( null );
	inresize=0;
	
}

var zindex=2;

function gsosMakeOnTopEvent(event)
{
	sysDebug("makeontop event");
	
	var pe = sysGetTrigger(event);			  
	var pi = getParent( pe );
	if (!pi) return;
		
	gsosMakeOnTop(pi);	// topWindow positionné
}


function gsosMakeOnTop(el)
 {

	
 	var ptop;
 	var applet;
 	
 	if ( (topWindow==el) || (!el) )
 		return ;
 	
 	sysDebug("makeontop");
 	 	
 	if (topWindow)
	{
		applet = topWindow+"applet";
		ptop = sysGetObject(applet);
		if (ptop)
		{
	//		ptop.setPause(1);
			sysSetVisibility(applet,"hidden");
		}
		sysSetVisibility(topWindow+"hidden0","hidden");
		sysSetVisibility(topWindow+"hidden1","hidden");
		sysSetVisibility(topWindow+"hidden2","hidden");
		sysSetVisibility(topWindow+"hidden3","hidden");
	}

	sysSetZIndex(el,zindex);

	zindex=zindex+1;
	
	topWindow=el;	
	applet = el+"applet";
		
	ptop = sysGetObject(applet);
	if (ptop)
	{
	//	ptop.setPause(0);
		sysSetVisibility(applet,"visible");
	}

	sysSetVisibility(topWindow+"hidden0","visible");
	sysSetVisibility(topWindow+"hidden1","visible");
	sysSetVisibility(topWindow+"hidden2","visible");
	sysSetVisibility(topWindow+"hidden3","visible");
	
	sysDebug("end makeontop");
}

document.onmouseup=mouseUp;

sysDebug("end processign gsosWindow");
