//
	// imenu MENU
	//
	var rootactivemenu = null;
	
	function imenuMenu(parent, width, height, closebutton, createmask, css) {		
		var o = this;
		this.quisoc = "imenuMenu";
		this.showitemstimer;
		this.hideitemstimer;
		this.activemenu;
		this.child;
		this.mask;
		this.cssmask;
		this.parent = parent;
		
		this.hideTimer;
		this.xStep = 1;
		this.minHeight = 0;
		this.Potencia = 5;
		this.xStart = -100;
		this.Width;
		this.Height = 0;
		this.x = 0;
		this.css = css;
		
		this.activesubmenu = null;
		
		this.amagat = false;
		
		this.groupcount = 0;
		this.groups = Array();
		
		this.addGroup = imenuMenuaddgroup;
		this.quickclose = imenuMenuquickclose;
		this.switchstate = imenuMenuswitchstate;
		this.openmenu = imenuMenuopenmenu;
		this.closemenu = imenuMenuclosemenu;
		this.setMinHeight = imenuMenusetminheight;
		this.ancla = imenuMenuAncla();

		if(ie) window.attachEvent("onresize", imenuMenuAncla);
	
		menudiv = document.createElement("div");
		if(height) {
			this.Height = height;
			menudiv.style.height = height + "px";
		}	
		if(width) {
			this.Width = width;
			menudiv.style.width = width + "px";
		}
		
		menudiv.className = "imenu";
		parent.appendChild(menudiv);

		if(createmask) {
			menudiv.style.position = "absolute";
			menudiv.style.left = getleftpos(parent);
			menudiv.style.top = gettoppos(parent);
			mask = document.createElement("div");
			mask.style.position = "absolute";
			mask.className = "imenumask";
			mask.style.width = width + "px";
			mask.style.height = height + "px";
			mask.style.top = gettoppos(menudiv);
			mask.style.left = getleftpos(menudiv);
			menudiv.style.zIndex++;
			mask.style.zIndex = menudiv.style.zIndex - 1;
			mask.id = "xbasemask";
			parent.appendChild(mask);
			this.mask = mask;
		}
		
		if(css) {
			basemask = document.getElementById("xbasemask");
			cssmask = document.createElement("div");
			cssmask.style.width = basemask.offsetWidth + "px";
			cssmask.className = "imenuGrup " + css;
			cssmask.style.height = height + "px";
			basemask.appendChild(cssmask);
			menudiv.style.marginTop = "0px";
			this.cssmask = cssmask;
			
		}
		
		if(closebutton) {
			menudiv.style.paddingTop = "0px";
			closediv = document.createElement("div");
			closediv.innerHTML = closedivcaption(this.amagat);
			closediv.onclick = function() { o.switchstate(); }
			closediv.className = "closediv";
			closediv.style.height = "20px";
			closediv.id = "closediv";
			menudiv.appendChild(closediv);
			this.closediv = closediv;
			maskoffset = document.createElement("div");
			maskoffset.style.height = closediv.offsetHeight + "px";
			mask.appendChild(maskoffset);
		}
		
		this.div = menudiv;
		imenuMenuAncla();
		
		function imenuMenuaddgroup(css) {
			// grup = new imenuGrup(this, css);
			// this.groups[this.groupcount] = grup;	
			// this.groupcount++;
			i = new imenuMenu(this.div, 180, 29, false, false, css);
			// grup.setmenu(i);
			return i;
		}
				
				
		function imenuMenusetminheight(h) {
			this.minHeight = h;
		}

		function imenuMenuopenmenu() {
			if(this.amagat) {
				this.switchstate();
			}
		}
		
		function imenuMenuclosemenu() {
		  if(!this.amagat) {
				this.switchstate();
			}
		}

	function imenuMenuswitchstate() {
			if(!this.amagat) {
				m = this;
			}
			if(this.activesubmenu) {
				this.activesubmenu.closesubmenu();
			}
				
			if(!this.Height) {
				this.Height = this.div.offsetHeight;
			}
			this.x = this.xStart;
			this.amagat = !this.amagat;
			clearInterval(this.hideTimer);
			var o = this;
			if(this.closediv) {
				this.closediv.innerHTML = closedivcaption(this.amagat);
			}	
			this.hideTimer = setInterval(function() { imenuMenutimer(o); }, 5);
	 	}
		
		function imenuMenuquickclose() {
			this.amagat = true;
			this.div.style.height = this.minHeight + "px";
			if(this.mask) {
				this.mask.style.height = this.minHeight + "px";
			}
			if(this.closediv) {
				this.closediv.innerHTML = closedivcaption(this.amagat);
			}	
		}
				
		function imenuMenutimer(obj) {

    		obj.x+=obj.xStep;
    		y = Math.pow(obj.x, obj.Potencia);
    	
    		mH = (y*obj.Height);
    		mH = mH / Math.pow(obj.xStart, obj.Potencia);
			mH = Math.abs(mH) + obj.minHeight;

    		if(!obj.amagat) { 
				mH = (obj.Height - mH) + obj.minHeight;
			}
			// debug.innerHTML += mH +"<br>";
			// if(mH<0.5) {mH = 0.5;}
			if(obj.mask) {
				obj.mask.style.height = mH + "px";
			}
			obj.div.style.height = mH+ "px";
			if(obj.x>=0) { 
				clearInterval(obj.hideTimer); 
				obj.x = obj.Start*-1;
			}
    	}	
	
		function closedivcaption(amagat) {
			if(amagat) {
				img = "http://www.augassantas.es/img/imenu_open.gif";
				return "<table width='165'><tr><td><b>Menú</b><td><td align='right'><img src='"+img+"' height='8'></td></tr></table>";
			}
			img = "http://www.augassantas.es/img/imenu_close.gif";
			return "<table width='165'><tr><td><b>&nbsp;</b><td><td align='right'><img src='"+img+"' height='8'></td></tr></table>";
		}
		
		function imenuMenuAncla() {
			if(o.parent) {
				l = getleftpos(o.parent) + "px";;
				t = gettoppos(o.parent) + "px";
				if(o.div) {	o.div.style.left = l; 
							o.div.style.top = t;
				}
				if(o.mask) { 	o.mask.style.left = l; 
								o.mask.style.top = t;
				}
				if(o.cssmask) {	o.cssmask.style.left = l;
								o.cssmask.style.top = t;
				}
			}
		}	
	}
		
	//
	// imenu GRUP
	//
	
	function imenuGrup(parent) {

		var o = this;

		this.quisoc = "imenugrup";
		this.div = null;
		this.childmenu = null;
		this.parent = parent;
		this.ndx;
		
		this.setmenu = imenuGrupsetmenu;
	
		function imenuGrupsetmenu(menu) {
			this.childmenu = menu;
		}	
	}
	
	function imenuSpacer(parent) {
		div = document.createElement("div");
		div.style.width = "90%";
		div.style.height = "12px";
		parent.div.appendChild(div);
	}

	//
	// imenu ITEM
	//
		
	function imenuItem(caption, parent, url, img, img1, estil) {		
	
		var div = null;
		var o = this;
		
		this.quisoc = "menuItem";
		this.parent = parent;
		this.id = caption;
		this.child;
		this.submenu = null;	
		this.trow = null;
		this.tsel = null;
		this.setsubmenu = imenuItemsetsubmenu;		
		this.pnt = false;
		this.img = null;
		this.img1 = null;
		this.imgsubmenu = null;
		this.imgsubmenu1 = null;
		this.imgsubmenuact = false;
		this.mouseout = imenuItemmouseout;
		
		// Carrega d'Imatges
		if(img) { 	
			this.img = new Image;
			this.img.src = img; 
		}
				
		if(img1) { 	
			this.img1 = new Image;
			this.img1.src = img1; 
		}
		
		this.imgsubmenu = new Image;
		this.imgsubmenu.src = "http://www.augassantas.es/img/imenu_submenu.gif";
		this.imgsubmenu1 = new Image;
		this.imgsubmenu1.src = "http://www.augassantas.es/img/imenu_submenu1.gif";
		
		// Guardem l'estructura del menu
		parent.child = this;
		
		this.pnt = true;
		if(this.img) {
			this.pnt = false;
		}

		div = document.createElement("div");
		div.style.width = "90%";
		// div.style.height = "15px";
		if(estil=="submenu") { this.pnt = false; }
		this.trow = imenuItemcreatecaption(caption, url, div, img, this.pnt);

		div.onmouseover = function() { imenuItemonmousemove(o, div); }
		div.onmouseout = function() { imenuItemmouseout(o, div); }
		
		div.className = "imenuItem";
		parent.div.appendChild(div);
		
		this.div = div;
		parent.Height += div.offsetHeight;
		
		function imenuItemonmousemove(obj, div) {
			if(obj.submenu) {
				clearTimeout(obj.submenu.timer);
			}
			div.className = "imenuItemHover";
			clearTimeout(parent.showitemstimer);
			if(obj.submenu) {
				parent.showitemstimer = setTimeout(function() { imenuItemtimeout(obj); }, 500);
			}
			if(obj.pnt) {
				td = obj.trow.getElementsByTagName("img")[0];
				td.style.visibility = "visible";
			}
			
			if(obj.img && obj.img1) {
				img = obj.trow.getElementsByTagName("img")[1];
				img.src = obj.img1.src;
			}
			
			if(obj.submenu) {
				img = obj.trow.getElementsByTagName("img")[2];
				if(obj.submenu.amagat && !obj.imgsubmenuact) {
					img.src = obj.imgsubmenu1.src;
					obj.imgsubmenuact = false;
				} else {
					img.src = obj.imgsubmenu.src;
				}
				img.style.visibility = "visible";
				
			}
		}
		
		function imenuItemmouseout(obj, div) {
			
			if(obj.submenu) {
				if(!obj.submenu.amagat) {
					return;
				}
			}
			div.className = "imenuItem";

			clearTimeout(obj.parent.showitemstimer);
			if(obj.pnt) {
				td = obj.trow.getElementsByTagName("img")[0];
				td.style.visibility = "hidden";
			}

			if(obj.img && obj.img1) {
				img = obj.trow.getElementsByTagName("img")[1];
				img.src = obj.img.src;
			}

			if(obj.submenu) {
				img = obj.trow.getElementsByTagName("img")[2];
				img.style.visibility = "hidden";
			}
			
		}
		
		function imenuItemtimeout(obj) {
			clearTimeout(parent.showitemstimer);
			if(rootactivemenu) {
				if(rootactivemenu != obj.submenu ) {
					rootactivemenu.closesubmenu();
				}
			}

			if(obj.submenu) {
				obj.submenu.opensubmenu();
				// Animació de fletxa
				img = obj.trow.getElementsByTagName("img")[2];
				if(obj.imgsubmenu) img.src = obj.imgsubmenu.src;
				parent.activemenu = obj.submenu;
				rootactivemenu = obj.submenu;
			} else {
				parent.activemenu = null;
				rootactivemenu = null;				
			}
		}
		
		function imenuItemsetsubmenu(submenu) {
			this.submenu = submenu;
			tcl = document.createElement("td");
			tcl.innerHTML = "<img src='http://www.augassantas.es/img/imenu_submenu1.gif' style='visibility:hidden; margin-top:3px' width='6' height='5'>";
			tcl.style.display = "block";
			tcl.style.width = "6px";
			this.trow.appendChild(tcl);
			
			this.pnt = false;
			td = this.trow.getElementsByTagName("td")[0];
			td.style.display = "none";
		}
		
		function imenuItemcreatecaption(caption, url, div, img, pnt, target) {
			tbl = document.createElement("table");
			tbl.className = "imenuItem";
			tbd = document.createElement("tbody"); tbl.appendChild(tbd);
			trw = document.createElement("tr"); tbd.appendChild(trw);
			
			tdpnt = document.createElement("td"); 
			tdpnt.style.display = "none";
			tdpnt.style.width = "5px";
			trw.appendChild(tdpnt);
			tdpnt.innerHTML = "<img src='http://www.augassantas.es/img/imenu_punt.gif' style='visibility:hidden; margin-top:4px'>";
			tdpnt.vAlign = "top";
			if(pnt) tdpnt.style.display = "inline";

			tdimg = document.createElement("td");
			tdimg.style.display = "none";
			tdimg.style.width = "10px";
			trw.appendChild(tdimg);
			tdimg.innerHTML = "<img src='"+img+"' style='margin: 1px 3px 0px 0px'>";
			if(img) tdimg.style.display = "inline";

			tcl = document.createElement("td"); trw.appendChild(tcl);
			(ie)?width="95%":width="94%";
			tbl.setAttribute("width", width);
			tbl.setAttribute("border", "0");
			tbl.setAttribute("cellPadding", "2");
			tbl.setAttribute("cellSpacing", "0");
			if(url) {
				caption = "<a href='"+url+"' class='imenulink'>"+caption+"</a>";
			}
			tcl.innerHTML = caption;
			tcl.style.width = "95%";
			div.appendChild(tbl);
			return trw;
		}
	}
	
	// 
	// imenu SUBMENU
	//
	
	function imenuSubMenu(caption, parent, root) {

		var o = this;
		var offset = 5;
		var offsettop = 17;

		this.child;		
		this.div = null;
		this.mask = null;
		this.timer = null;
		this.quisoc = "imenusubmenu";
		this.caption = caption;
		this.root = root;
		this.amagat = true;
		this.parent = parent;
		
		parent.child = this;
		
		this.setDescripcio = imenuSubMenusetDescripcio;
		
		this.opensubmenu = imenuSubMenuopensubmenu;
		this.closesubmenu = imenuSubMenuclosesubmenu;
		this.ancla = imenuSubMenuAncla;

		div = document.createElement("div");
		div.className = "imenu isubmenu";
		div.innerHTML = createitemcaption(caption, false);
		
		if(ie) {
			window.attachEvent("onresize", imenuSubMenuAncla);
		} else {
			window.addEventListener("resize", imenuSubMenuAncla, true);
		}

		// Posicionem i dimensionem el submenu
		div.style.visibility="hidden";
		div.style.position = "absolute";
		if(ie) { 
			div.style.width  = root.div.offsetWidth; 
			div.style.height = root.div.offsetHeight - offsettop;	
		} else {
			div.style.width = root.div.style.width;
			div.style.height = root.div.style.height;
		}
		
		div.style.filter = "progid:DXImageTransform.Microsoft.Fade(duration=0.2)";
		div.onmouseout = function() { imenuSubMenumouseout(o); }
		div.onmouseover = function() { clearTimeout(o.timer); }
		parent.setsubmenu(o);
		
		// creem la mascara		
		mask = document.createElement("div");
		mask.style.position = "absolute";
		mask.style.visibility = "hidden";
		css = parent.parent.css;
		mask.className = "isubmenumask " + css;

		root.parent.appendChild(div);
		root.parent.appendChild(mask);		

		this.div = div;
		this.mask = mask;
		
		function imenuSubMenumouseout(o) {
		
			o.timer = setTimeout(function() { o.closesubmenu() }, 1000);
		}
		
		function imenuSubMenusetDescripcio(desc) {
			div.innerHTML = desc;
		}
		
		function imenuSubMenuopensubmenu() {
			if(!this.amagat) {
				return;
			}
			
			this.root.activesubmenu = this;
			
			this.div.style.left = getleftpos(root.div) + root.div.offsetWidth + offset + "px";
			this.div.style.top = root.div.offsetTop + offsettop + "px";
			this.div.style.zIndex++;
			// alert(this.div.style.left);
			
			if(ie) { this.div.filters[0].apply(); }
		  	this.div.style.height = this.root.div.offsetHeight - offsettop - 6 + "px";
			this.mask.style.left = this.div.style.left;
			this.mask.style.top = parseInt(this.div.style.top) + "px";
			this.mask.style.width = this.div.style.width;
			this.mask.style.height = parseInt(this.div.style.height)+ "px";
			this.mask.style.zIndex = this.div.style.zIndex-1;

			this.mask.style.visibility = "visible";
			this.div.style.visibility = "visible";
			if(ie) {this.div.filters[0].play(); }
			this.amagat = false;
		}
		
		function imenuSubMenuclosesubmenu() {
			if(this.amagat) {
				return;
			}
			// 
			
			root.activesubmenu = null;
			if(ie) { this.div.filters[0].apply(); }
			this.div.style.visibility = "hidden";
			this.mask.style.visibility = "hidden";
			if(ie) { this.div.filters[0].play(); }
			this.amagat = true;
			
			// alert(parent.mouseout);
			parent.mouseout(parent, parent.div);

		}
		
		function createitemcaption(caption, submenu, img) {
			if(caption!="") {
				txt = "<table border='0' cellpaddin='0' cellspacing='0' class='isubmenudesc'><tr><td>";
				txt += caption;
				txt += "</td></tr>";
				txt += "<tr><td height='8' background='http://www.augassantas.es/img/imenu_desc.gif'></td></tr><table>";
			} else {
				txt = "";
			}
			return txt;
		}
		
		function imenuSubMenuAncla() {
			o.div.style.left = getleftpos(root.div) + root.div.offsetWidth + offset + "px";
			o.div.style.top = root.div.offsetTop + offsettop + "px";
			o.mask.style.left = o.div.style.left;
			o.mask.style.top = parseInt(o.div.style.top) + "px";
		}
	}
	
	//
	//	imenu CONTAINER
	//
	
	function imenuContainer(parent, height) {
		
		this.child;
		this.menu;
	 	this.foot;
		this.quisoc = "container";
		parent.child = this;
	 
		maindiv = document.createElement("div");
	 	 
		table   = document.createElement("table");
		tbody   = document.createElement("tbody"); table.appendChild(tbody);
		trow1   = document.createElement("tr");    tbody.appendChild(trow1);
		tcell1  = document.createElement("td");    trow1.appendChild(tcell1);
		 
		table.setAttribute("border", "0");
		table.setAttribute("cellPadding", "0");
		table.setAttribute("cellSpacing", "0");
		table.setAttribute("height", height);
		table.setAttribute("width", "92%");
		tcell1.setAttribute("height", "100%");
		tcell1.setAttribute("vAlign", "top");
		maindiv.appendChild(table);
   
	   	// c = document.getElementById(container)
		parent.div.appendChild(maindiv);
		 
		this.menu = tcell1;
		this.div = maindiv;
	 
  }
	
	//
	//  AUXILIARS
	//


	
	function getleftpos(itm) {
		var l = 0;
		while(itm != null)	{
			l += itm.offsetLeft;
			itm = itm.offsetParent;
		}	
		return l;
	}
	
	function gettoppos(itm) {
		var t = 0;
		while(itm != null) {
			t += itm.offsetTop;
			itm = itm.offsetParent;
		}
		return t;
	}