/**********************************************************************************
WindowScript
*   Copyright (C) 2001 <a href="/dhtmlcentral/thomas_brattli.asp">Thomas Brattli</a>
*   This script was released at DHTMLCentral.com
*
*   MODIFICATO da Skid X
*********************************************************************************/

function lib_bwcheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	return this
}
var bw=new lib_bwcheck()
var oWin=new Array; oWin.dragobj=-1; oWin.zIndex=100

//Start Variables to set ******************************************************************
oWin.starty=0 //If you have a header or something on the page that you want the setWindows and the dragdrop to care about set it here.
oWin.defwidth=200 //Default width for the windows if nothing is spesified
oWin.defheight=200 //Default height for the windows if nothing is spesified
oWin.between=0 //This variable controls how much space there will be between the windows when you use setWindows
//Set this variable to 1 if you want to be able to control the area the windows can be scrolled.
oWin.keepinside=0 //VALUE: 1 || 0
	oWin.maxX=500 //This is the maximum X value the windows can go to. Set this to "winpage.x2" to keep them inside the window. VALUE: "winpage.x2" || px
	oWin.maxY=500 //This is the maximum Y value the windows can go to. Set this to "winpage.y2" to keep them inside the window. VALUE: "winpage.y2" || px
	oWin.minX=50 //This is the minimun X value the windows can go to. Set to 0 to keep them inside the window. VALUE: px
	oWin.minY=50 //This is the minimum Y value the windows can go to. Set to 0 to keep them inside the window. VALUE: px
//In the next version of this script all variables can be set on each individual window as well
//End Variables to set ********************************************************************

//Uncomment the next line if you want the user to be sent to another page if he's using an old browser
//if(!bw.bw) location.href='sorry.html'

function lib_doc_size(){ //Page positions - needed!
	this.x=0;this.x2=bw.ie && document.body.offsetWidth-20||innerWidth||0;
	if(bw.ns6) this.x2-=2
	this.y=0;this.y2=bw.ie && document.body.offsetHeight-5||innerHeight||0;
	if(bw.ns6) this.y2-=4
	if(!this.x2||!this.y2) return message('Document has no width or height')
	this.x50=this.x2/2;     this.y50=this.y2/2;
	this.x10=(this.x2*10)/100;this.y10=(this.y2*10)/100
	this.ytop=140*100/this.y2
	this.avail=(this.y2*(100-this.ytop))/100
	this.origy=this.y2
	return this;
}
function lib_moveIt(x,y){	this.x=x;this.y=y; this.css.left=x;this.css.top=y }
function lib_moveBy(x,y){	this.moveIt(this.x+x,this.y+y) }
function lib_showIt(){ this.css.visibility="visible" }
function lib_hideIt(){ this.css.visibility="hidden" }

function lib_clipTo(t,r,b,l,setwidth)
{
	if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0
	this.ct=t; this.cr=r; this.cb=b; this.cl=l
	if(bw.ns4)
  {
		this.css.clip.top=t;this.css.clip.right=r
		this.css.clip.bottom=b;this.css.clip.left=l
	}
  else if(bw.opera5)
  {
  	this.css.pixelWidth=r; this.css.pixelHeight=b; this.w=r; this.h=b
	}
  else
  {
		this.css.clip="rect("+t+","+r+","+b+","+l+")";
		if(setwidth){this.css.width=r; this.css.height=b; this.w=r; this.h=b}
	}
}

function lib_writeIt(text,startHTML,endHTML)
{	
  if(bw.ns4){	if(!startHTML){startHTML=""; endHTML=""}
		this.ref.open("text/html"); this.ref.write(startHTML+text+endHTML); this.ref.close()
	}else this.evnt.innerHTML=text
}

//Default lib functions
function lib_obj(obj,nest,dnest,ddnest,num)
{
	if(!bw.bw) return lib_message('Old browser')
	if(!bw.ns4) this.evnt=bw.dom && document.getElementById(obj)||bw.ie4 && document.all[obj]
	else
  {
		if(ddnest){ this.evnt=document[nest].document[dnest].document[ddnest].document[obj]?document[nest].document[dnest].document[ddnest].document[obj]:0; }
    else if(dnest){ this.evnt=document[nest].document[dnest].document[obj]?document[nest].document[dnest].document[obj]:0; }
    else if(nest){ this.evnt=document[nest].document[obj]?document[nest].document[obj]:0; }
    else{ this.evnt=document.layers[obj]?document.layers[obj]:0; }
	}
	if(!this.evnt)
    return lib_message('The layer does not exist ('+obj+') - Exiting script\n\nIf your using Netscape please check the nesting of your tags!')
	this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt;
	this.ref=bw.dom||bw.ie4?document:this.css.document;
	this.moveIt=lib_moveIt; this.moveBy=lib_moveBy;
	this.showIt=lib_showIt; this.hideIt=lib_hideIt;
  this.num=num; this.writeIt=lib_writeIt;
	this.clipTo=lib_clipTo;	this.obj = obj + "Object"; 	eval(this.obj + "=this")
	return this
}

/*****************************************************************************
Creating windows
*****************************************************************************/
function create_window(i,x,y,w,h,bg,bga)
{
	if(!w) w=oWin.defwidth;
  if(!h) h=oWin.defheight
	oWin[i]=new lib_obj('divWin'+i,"","","",i)
	oWin[i].oWindow=new lib_obj('divWindow'+i,'divWin'+i)
	oWin[i].oWindow.moveIt(0,0)
	oWin[i].oHead=new lib_obj('divWinHead'+i,'divWin'+i)
	oWin[i].oResize=new lib_obj('divWinResize'+i,'divWin'+i)
	oWin[i].oHead.evnt.onmouseover=new Function("w_mmover("+i+")")
	oWin[i].oHead.evnt.onmouseout=new Function("w_mmout()")
	oWin[i].oResize.evnt.onmouseover=new Function("w_mmover("+i+",1)")
	oWin[i].oResize.evnt.onmouseout=new Function("w_mmout()")
	if(!bw.ns4){
		oWin[i].oWindow.css.overflow="hidden"; oWin[i].css.overflow="hidden"
	}
	oWin[i].lastx=x;oWin[i].lasty=y;oWin[i].origw=w; oWin[i].origh=h
	oWin[i].resize=win_resize;
	oWin[i].regwin=win_regwin;
	oWin[i].addZ=win_addZ;	oWin[i].state="reg"
	oWin[i].moveIt(x,y); oWin[i].resize(w,h);
	if(bw.opera5) setTimeout("oWin["+i+"].resize("+w+","+h+"); oWin["+i+"].showIt()",10)
	else oWin[i].showIt()
}

/*****************************************************************************
Window functions
*****************************************************************************/
function win_regwin(){
	this.oResize.css.visibility="inherit"
	this.resize(this.origw,this.origh)
	this.moveIt(this.lastx,this.lasty)
	this.state="reg"; this.addZ()
	this.checkscroll()
}

function win_resize(w,h)
{
  this.oResize.moveIt(w,h)
  this.clipTo(0,w,h,0,1)
	this.oHead.clipTo(0,w,h,0,1);
}

function win_addZ(){oWin.zIndex++; this.css.zIndex=oWin.zIndex}
/*****************************************************************************
Initiating winpage
*****************************************************************************/
function win_init(){
	if(document.layers){
		document.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK)
		document.ondblclick=mdblclick;}
	document.onmousemove=mmove;document.onmousedown=mdown;document.onmouseup=mup;
}
/*****************************************************************************
Event functions
*****************************************************************************/
function w_mmover(num,resize){ oWin.dragover=num; }
function w_mmout(){	oWin.dragover=-1; }

function mup(e)
{ //Mouseup
	if((oWin.dragobj!=-1) && oWin.setposition) setPos();
	if(oWin.dragobj!=-1)
  {
  	oWin[oWin.dragobj].lastx=oWin[oWin.dragobj].x;
    oWin[oWin.dragobj].lasty=oWin[oWin.dragobj].y
  }
	oWin.dragobj=-1
}

function mdown(e)
{ //Mousedown
	x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
    y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	if(bw.ie5 || bw.ie6) y+=document.body.scrollTop
	id1=oWin.dragover
	if(id1>-1)
  {
		id=id1; oWin.dragobj=id
		oWin.clickedX=x-oWin[id].x;
		oWin.clickedY=y-oWin[id].y
		oWin[id].addZ()
	}
  else if(bw.ns4)
    routeEvent(e)
	if(!bw.ns4) return false
}

function mmove(e,y,rresize){ //Mousemove
	x=(bw.ns4 || bw.ns6)?e.pageX:event.x||event.clientX
    y=(bw.ns4 || bw.ns6)?e.pageY:event.y||event.clientY
	if(bw.ie5 || bw.ie6) y+=document.body.scrollTop
	id1=oWin.dragobj
  if(id1>-1)
  { //Move
		nx=x-oWin.clickedX; ny=y-oWin.clickedY
		if(ny<oWin.starty) ny=oWin.starty
		if(oWin.keepinside){
			if(nx+oWin[id1].cr>eval(oWin.maxX)) nx=eval(oWin.maxX)-oWin[id1].cr
			else if(nx<eval(oWin.minX)) nx=eval(oWin.minX)
			if(ny+oWin[id1].cb>eval(oWin.maxY)) ny=eval(oWin.maxY)-oWin[id1].cb
			else if(ny<eval(oWin.minY)) ny=eval(oWin.minY)
		}
		oWin[id1].moveIt(nx,ny)
		if(oWin[id].state==0){oWin[id].lastx=nx; oWin[id].lasty=ny}
	}
	if(!bw.ns4) return false
}

/*****************************************************************************
Adding window to winpage!
*****************************************************************************/
var lastx,lasty,lastw,lasth
function addWindow(heading,content,x,y,w,h,bg,bga)
{
	var num=oWin.length; wins=num+1; var str=""
	str+='<div id="divWin'+num+'" class="clWin">\n'
		str+='<div id="divWinHead'+num+'" class="clWinHead">'+heading+'</div>\n'
	  +'<div id="divWinButtons'+num+'" class="clWinButtons">\n'
	+'</div>\n'
	+'<div id="divWinResize'+num+'" class="clWinResize">\n'+'</div>\n'
	+'<div id="divWindow'+num+'" class="clWindow">\n'
		+'<div id="divWinText'+num+'" class="clText">'
	    if(content){
		  str+=content
    +'</div>\n'
	+'</div>\n'
  +'</div>'
	}
	document.write(str)
	if(content) create_window(num,x,y,w,h,bg,bga)
	return num;
}

function endWin(){
	num=wins-1
	str='\n</div>\n'
	+'</div>\n'
	+'</div>'
	return str
}
// ********************* FUNZIONI AGGIUNTE DA ME *************************
function zoomWin(indice){oWin.zIndex++; oWin[indice].css.zIndex=oWin.zIndex}
function setMenu(id){ menuAttivo=1; }
function unsetMenu(id){ if(menuAttivo>0)hideMenu(id);}
function showMenu(id)
{
  setMenu(id);
  document.getElementById(id).style.display="block";
}

function hide(id)
{
  if(menuAttivo==0)
    document.getElementById(id).style.display="none";
}

function hideMenu(id)
{
  menuAttivo=0;
  setTimeout("hide('"+id+"')",1000);
}


