Index: /trunk/phpgwapi/js/tools/xlink.js
===================================================================
--- /trunk/phpgwapi/js/tools/xlink.js	(revision 2562)
+++ /trunk/phpgwapi/js/tools/xlink.js	(revision 2565)
@@ -10,9 +10,11 @@
 	{
 		var action = pLink.href;
+		if ( action == '' )
+			return false;
+
 		var a = ( action.indexOf( 'javascript:' ) === 0 );
 		a = ( a || ( action.indexOf( '#' ) === 0 ) );
 		a = ( a || ( action.indexOf( window.location + '#' ) === 0 ) );
 		a = ( a || ! ( action.indexOf( 'workflow' ) < 0 ) );
-		//a = ( a || ! ( action.indexOf( 'expressoMail1_2' ) < 0 ) );
 
 		if ( ! a )
Index: /trunk/phpgwapi/templates/default/js/jscode/cookieManager.js
===================================================================
--- /trunk/phpgwapi/templates/default/js/jscode/cookieManager.js	(revision 2565)
+++ /trunk/phpgwapi/templates/default/js/jscode/cookieManager.js	(revision 2565)
@@ -0,0 +1,50 @@
+/*  Script contendo funcoes de manipulacao de cookies.
+	// baseado em script de Bill Dortch, hIdaho Design <bdortch@hidaho.com> e
+	// adaptado por Jorge Kinoshita.
+*/
+	function getCookieVal (offset) {
+	  var endstr = document.cookie.indexOf (";", offset);
+	  if (endstr == -1)
+	    endstr = document.cookie.length;
+	  return unescape(document.cookie.substring(offset, endstr));
+	}
+	
+	function FixCookieDate (date) {
+	  var base = new Date(0);
+	  var skew = base.getTime(); // dawn of (Unix) time - should be 0
+	  if (skew > 0)  // Except on the Mac - ahead of its time
+	    date.setTime (date.getTime() - skew);
+	}
+	//
+	//  Function to return the value of the cookie specified by "name".
+	//    name - String object containing the cookie name.
+	//    returns - String object containing the cookie value, or null if
+	//      the cookie does not exist.
+	
+	function GetCookie (name) {
+	  var arg = name + "=";
+	  var alen = arg.length;
+	  var clen = document.cookie.length;
+	  var i = 0;
+	  while (i < clen) {
+	    var j = i + alen;
+	    if (document.cookie.substring(i, j) == arg)
+	      return getCookieVal (j);
+	    i = document.cookie.indexOf(" ", i) + 1;
+	    if (i == 0) break; 
+	  }
+
+	  return 'true';
+	}
+		
+	function SetCookie (name,value,expires,path,domain,secure) {
+	  document.cookie = name + "=" + escape (value) +
+    	((expires) ? "; expires=" + expdate.toGMTString() : "") +
+	    ((path) ? "; path=" + path : "") +
+    	((domain) ? "; domain=" + domain : "") +
+	    ((secure) ? "; secure" : "");
+	}	
+	
+	var expdate = new Date ();
+	FixCookieDate (expdate); // Correct for Mac date bug - call only once for given Date object!
+	expdate.setTime (expdate.getTime() + (30 * 24 * 60 * 60 * 1000)); // Valid for 30 days.
Index: /trunk/phpgwapi/templates/default/js/jscode/simple_show_hide.js
===================================================================
--- /trunk/phpgwapi/templates/default/js/jscode/simple_show_hide.js	(revision 2565)
+++ /trunk/phpgwapi/templates/default/js/jscode/simple_show_hide.js	(revision 2565)
@@ -0,0 +1,183 @@
+/*****************************************************
+ * ypSlideOutMenu
+ * 3/04/2001
+ * 
+ * a nice little script to create exclusive, slide-out
+ * menus for ns4, ns6, mozilla, opera, ie4, ie5 on 
+ * mac and win32. I've got no linux or unix to test on but 
+ * it should(?) work... 
+ *
+ * --youngpup--
+ *****************************************************/
+
+//var isIE = false;
+//var isOther = false;
+//var isNS4 = false;
+//var isNS6 = false;
+// constructor
+function ypSlideOutMenu(id, dir, left, top, width, height,pos)
+{
+
+	this.ie  = document.all ? 1 : 0
+		this.ns4 = document.layers ? 1 : 0
+		this.dom = document.getElementById ? 1 : 0
+
+		if (this.ie || this.ns4 || this.dom) {
+			this.id			 = id
+				this.dir		 = dir
+				this.orientation = dir == "left" || dir == "right" ? "h" : "v"
+				this.dirType	 = dir == "right" || dir == "down" ? "-" : "+"
+				this.dim		 = this.orientation == "h" ? width : height
+				//this.hideTimer	 = false
+				//this.aniTimer	 = false
+				this.open		 = false
+				this.over		 = false
+				//this.startTime	 = 0
+
+				// global reference to this object
+				//this.gRef = "ypSlideOutMenu_"+id
+				//eval(this.gRef+"=this")
+
+				// add this menu object to an internal list of all menus
+				//ypSlideOutMenu.Registry[id] = this
+
+				var d = document
+
+				var strCSS = '<style type="text/css">';
+			strCSS += '#' + this.id + 'Container { visibility:hidden; '
+				if(pos)
+				{
+					strCSS += pos+':' + left + 'px; '
+				}
+				else
+				{
+					strCSS += 'left:' + left + 'px; '
+				}
+				strCSS += 'top:' + top + 'px; '
+					strCSS += 'overflow:visible; z-index:10000; }'
+					strCSS += '#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; '
+						strCSS += 'width:' + width + 'px; '
+							//		strCSS += 'height:' + height + 'px; '
+							//		strCSS += 'clip:rect(0 ' + width + ' ' + height + ' 0); '
+							strCSS += '}'
+							strCSS += '</style>';
+
+						d.write(strCSS);
+						//	alert(strCSS);
+//						this.load()
+
+					}
+		}
+
+	ypSlideOutMenu.aLs = function(layerID)
+	{
+
+		this.isIE = false;
+		this.isOther = false;
+		this.isNS4 = false;
+		this.isNS6 = false;
+		if(document.getElementById)
+		{
+			if(!document.all)
+			{
+				this.isNS6=true;
+			}
+			if(document.all)
+			{
+				this.isIE=true;
+			}
+		}
+		else
+		{
+			if(document.layers)
+			{
+				this.isNS4=true;
+			}
+			else
+			{
+				this.isOther=true;
+			}
+		}
+
+		var returnLayer;
+		if(this.isIE)
+		{
+			returnLayer = eval("document.all." + layerID + ".style");
+		}
+		if(this.isNS6)
+		{
+			returnLayer = eval("document.getElementById('" + layerID + "').style");
+		}
+		if(this.isNS4)
+		{
+			returnLayer = eval("document." + layerID);
+		}
+		if(this.isOther)
+		{
+			returnLayer = "null";
+			alert("Error:\nDue to your browser you will probably not\nbe able to view all of the following page\nas it was designed to be viewed. We regret\nthis error sincerely.");
+		}
+		return returnLayer;
+	}
+	// HideShow 1.0	Jim Cummins - http://www.conxiondesigns.com
+
+	ypSlideOutMenu.ShowL = function(ID)
+	{
+		ypSlideOutMenu.aLs(ID).visibility = "visible";
+	}
+
+	ypSlideOutMenu.HideL =function(ID)
+	{
+		ypSlideOutMenu.aLs(ID).visibility = "hidden";
+	}
+
+	ypSlideOutMenu.HideShow = function(ID)
+	{
+
+		if((ypSlideOutMenu.aLs(ID).visibility == "visible") || (ypSlideOutMenu.aLs(ID).visibility == ""))
+		{
+			ypSlideOutMenu.aLs(ID).visibility = "hidden";
+		}
+		else if(ypSlideOutMenu.aLs(ID).visibility == "hidden")
+		{
+			ypSlideOutMenu.aLs(ID).visibility = "visible";
+		}
+	}
+
+
+	ypSlideOutMenu.showMenu = function(id)
+	{
+		//temporarly hide all selectboxes to fix IE bug with z-index  
+		if(document.all)
+		{
+			for (var i=0; i<document.all.length; i++) {
+				o = document.all(i)
+					if (o.type == 'select-one' || o.type == 'select-multiple') {
+						// todo: add check for select in div?
+						if (o.style) o.style.display = 'none';
+					}
+			}
+		}
+		ypSlideOutMenu.ShowL(id+'Container');
+
+	}
+
+	ypSlideOutMenu.hide = function(id)
+	{
+		ypSlideOutMenu.HideL(id+'Container');
+		//show all selectboxes again to fix IE bug with z-index  
+		if(document.all)
+		{
+			for (var i=0; i<document.all.length; i++) {
+				o = document.all(i)
+					if (o.type == 'select-one' || o.type == 'select-multiple') {
+						// todo: add check for select in div?
+						if (o.style) o.style.display = 'inline';
+					}
+			}
+		}
+
+	}
+
+
+
Index: /trunk/phpgwapi/templates/default/js/jscode/slidereffects.js
===================================================================
--- /trunk/phpgwapi/templates/default/js/jscode/slidereffects.js	(revision 2565)
+++ /trunk/phpgwapi/templates/default/js/jscode/slidereffects.js	(revision 2565)
@@ -0,0 +1,217 @@
+/*****************************************************
+ * ypSlideOutMenu
+ * 3/04/2001
+ * 
+ * a nice little script to create exclusive, slide-out
+ * menus for ns4, ns6, mozilla, opera, ie4, ie5 on 
+ * mac and win32. I've got no linux or unix to test on but 
+ * it should(?) work... 
+ *
+ * --youngpup--
+ *****************************************************/
+
+ypSlideOutMenu.Registry = []
+ypSlideOutMenu.aniLen = 250
+ypSlideOutMenu.hideDelay = 1000
+ypSlideOutMenu.minCPUResolution = 10
+
+// constructor
+function ypSlideOutMenu(id, dir, left, top, width, height,pos)
+{
+	this.ie  = document.all ? 1 : 0
+		this.ns4 = document.layers ? 1 : 0
+		this.dom = document.getElementById ? 1 : 0
+
+		if (this.ie || this.ns4 || this.dom) {
+			this.id			 = id
+				this.dir		 = dir
+				this.orientation = dir == "left" || dir == "right" ? "h" : "v"
+				this.dirType	 = dir == "right" || dir == "down" ? "-" : "+"
+				this.dim		 = this.orientation == "h" ? width : height
+				this.hideTimer	 = false
+				this.aniTimer	 = false
+				this.open		 = false
+				this.over		 = false
+				this.startTime	 = 0
+
+				// global reference to this object
+				this.gRef = "ypSlideOutMenu_"+id
+				eval(this.gRef+"=this")
+
+				// add this menu object to an internal list of all menus
+				ypSlideOutMenu.Registry[id] = this
+
+				var d = document
+
+				var strCSS = '<style type="text/css">';
+			strCSS += '#' + this.id + 'Container { visibility:hidden; '
+				if(pos)
+				{
+					strCSS += pos+':' + left + 'px; '
+				}
+				else
+				{
+					strCSS += 'left:' + left + 'px; '
+				}
+				strCSS += 'top:' + top + 'px; '
+					strCSS += 'overflow:visible; z-index:10000; }'
+					strCSS += '#' + this.id + 'Container, #' + this.id + 'Content { position:absolute; '
+						strCSS += 'width:' + width + 'px; '
+							//		strCSS += 'height:' + height + 'px; '
+							//		strCSS += 'clip:rect(0 ' + width + ' ' + height + ' 0); '
+							strCSS += '}'
+							strCSS += '</style>';
+
+						d.write(strCSS)
+
+							this.load()
+					}
+		}
+
+	ypSlideOutMenu.prototype.load = function() {
+		var d = document
+			var lyrId1 = this.id + "Container"
+			var lyrId2 = this.id + "Content"
+			var obj1 = this.dom ? d.getElementById(lyrId1) : this.ie ? d.all[lyrId1] : d.layers[lyrId1]
+			if (obj1) var obj2 = this.ns4 ? obj1.layers[lyrId2] : this.ie ? d.all[lyrId2] : d.getElementById(lyrId2)
+				var temp
+
+					if (!obj1 || !obj2) window.setTimeout(this.gRef + ".load()", 100)
+					else {
+						this.container	= obj1
+							this.menu		= obj2
+							this.style		= this.ns4 ? this.menu : this.menu.style
+							this.homePos	= eval("0" + this.dirType + this.dim)
+							this.outPos		= 0
+							this.accelConst	= (this.outPos - this.homePos) / ypSlideOutMenu.aniLen / ypSlideOutMenu.aniLen 
+
+							// set event handlers.
+							if (this.ns4) this.menu.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
+						this.menu.onmouseover = new Function("ypSlideOutMenu.showMenu('" + this.id + "')")
+							this.menu.onmouseout = new Function("ypSlideOutMenu.hideMenu('" + this.id + "')")
+
+							//set initial state
+							this.endSlide()
+					}
+	}
+
+	ypSlideOutMenu.showMenu = function(id)
+	{
+		var reg = ypSlideOutMenu.Registry
+			var obj = ypSlideOutMenu.Registry[id]
+
+			//document.all.select.style="visibily:hidden";
+
+
+			//temporarly hide all selectboxes to fix IE bug with z-index  
+			if(document.all)
+			{
+				for (var i=0; i<document.all.length; i++) {
+					o = document.all(i)
+						if (o.type == 'select-one' || o.type == 'select-multiple') {
+							// todo: add check for select in div?
+							if (o.style) o.style.display = 'none';
+						}
+				}
+			}
+
+
+		if (obj.container) {
+			obj.over = true
+
+				// close other menus.
+				for (menu in reg) if (id != menu) ypSlideOutMenu.hide(menu)
+
+					// if this menu is scheduled to close, cancel it.
+					if (obj.hideTimer) { reg[id].hideTimer = window.clearTimeout(reg[id].hideTimer) }
+
+			// if this menu is closed, open it.
+			if (!obj.open && !obj.aniTimer) reg[id].startSlide(true)
+		}
+	}
+
+	ypSlideOutMenu.hideMenu = function(id)
+	{
+		// schedules the menu to close after <hideDelay> ms, which
+		// gives the user time to cancel the action if they accidentally moused out
+		var obj = ypSlideOutMenu.Registry[id]
+			if (obj.container) {
+				if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
+					obj.hideTimer = window.setTimeout("ypSlideOutMenu.hide('" + id + "')", ypSlideOutMenu.hideDelay);
+			}
+	}
+
+	ypSlideOutMenu.hide = function(id)
+	{
+		var obj = ypSlideOutMenu.Registry[id]
+			obj.over = false
+
+			if (obj.hideTimer) window.clearTimeout(obj.hideTimer)
+
+				// flag that this scheduled event has occured.
+				obj.hideTimer = 0
+
+					// if this menu is open, close it.
+					if (obj.open && !obj.aniTimer) obj.startSlide(false)
+
+						//show all selectboxes again to fix IE bug with z-index  
+						if(document.all)
+						{
+							for (var i=0; i<document.all.length; i++) {
+								o = document.all(i)
+									if (o.type == 'select-one' || o.type == 'select-multiple') {
+										// todo: add check for select in div?
+										if (o.style) o.style.display = 'inline';
+									}
+							}
+						}
+
+
+
+	}
+
+ypSlideOutMenu.prototype.startSlide = function(open) {
+	this[open ? "onactivate" : "ondeactivate"]()
+	this.open = open
+	if (open) this.setVisibility(true)
+	this.startTime = (new Date()).getTime()	
+	this.aniTimer = window.setInterval(this.gRef + ".slide()", ypSlideOutMenu.minCPUResolution)
+}
+
+ypSlideOutMenu.prototype.slide = function() {
+	var elapsed = (new Date()).getTime() - this.startTime
+	if (elapsed > ypSlideOutMenu.aniLen) this.endSlide()
+	else {
+		var d = Math.round(Math.pow(ypSlideOutMenu.aniLen-elapsed, 2) * this.accelConst)
+		if (this.open && this.dirType == "-")		d = -d
+		else if (this.open && this.dirType == "+")	d = -d
+		else if (!this.open && this.dirType == "-")	d = -this.dim + d
+		else										d = this.dim + d
+
+		this.moveTo(d)
+	}
+}
+
+ypSlideOutMenu.prototype.endSlide = function() {
+	this.aniTimer = window.clearTimeout(this.aniTimer)
+	this.moveTo(this.open ? this.outPos : this.homePos)
+	if (!this.open) this.setVisibility(false)
+	if ((this.open && !this.over) || (!this.open && this.over)) {
+		this.startSlide(this.over)
+	}
+}
+
+ypSlideOutMenu.prototype.setVisibility = function(bShow) { 
+	var s = this.ns4 ? this.container : this.container.style
+	s.visibility = bShow ? "visible" : "hidden"
+}
+ypSlideOutMenu.prototype.moveTo = function(p) { 
+	this.style[this.orientation == "h" ? "left" : "top"] = this.ns4 ? p : p + "px"
+}
+ypSlideOutMenu.prototype.getPos = function(c) {
+	return parseInt(this.style[c])
+}
+
+// events
+ypSlideOutMenu.prototype.onactivate		= function() { }
+ypSlideOutMenu.prototype.ondeactivate	= function() { }
Index: unk/phpgwapi/templates/default/js/cookieManager.js
===================================================================
--- /trunk/phpgwapi/templates/default/js/cookieManager.js	(revision 1151)
+++ 	(revision )
@@ -1,50 +1,0 @@
-/*  Script contendo funcoes de manipulacao de cookies.
-	// baseado em script de Bill Dortch, hIdaho Design <bdortch@hidaho.com> e
-	// adaptado por Jorge Kinoshita.
-*/
-	function getCookieVal (offset) {
-	  var endstr = document.cookie.indexOf (";", offset);
-	  if (endstr == -1)
-	    endstr = document.cookie.length;
-	  return unescape(document.cookie.substring(offset, endstr));
-	}
-	
-	function FixCookieDate (date) {
-	  var base = new Date(0);
-	  var skew = base.getTime(); // dawn of (Unix) time - should be 0
-	  if (skew > 0)  // Except on the Mac - ahead of its time
-	    date.setTime (date.getTime() - skew);
-	}
-	//
-	//  Function to return the value of the cookie specified by "name".
-	//    name - String object containing the cookie name.
-	//    returns - String object containing the cookie value, or null if
-	//      the cookie does not exist.
-	
-	function GetCookie (name) {
-	  var arg = name + "=";
-	  var alen = arg.length;
-	  var clen = document.cookie.length;
-	  var i = 0;
-	  while (i < clen) {
-	    var j = i + alen;
-	    if (document.cookie.substring(i, j) == arg)
-	      return getCookieVal (j);
-	    i = document.cookie.indexOf(" ", i) + 1;
-	    if (i == 0) break; 
-	  }
-
-	  return 'true';
-	}
-		
-	function SetCookie (name,value,expires,path,domain,secure) {
-	  document.cookie = name + "=" + escape (value) +
-    	((expires) ? "; expires=" + expdate.toGMTString() : "") +
-	    ((path) ? "; path=" + path : "") +
-    	((domain) ? "; domain=" + domain : "") +
-	    ((secure) ? "; secure" : "");
-	}	
-	
-	var expdate = new Date ();
-	FixCookieDate (expdate); // Correct for Mac date bug - call only once for given Date object!
-	expdate.setTime (expdate.getTime() + (30 * 24 * 60 * 60 * 1000)); // Valid for 30 days.
