window.addEvent('load', function(){
	
	if ($("right")) {
		var remove = $("right").getElements("span.glossary");
		remove.each(
			function (sp) {
				sp.removeClass("glossary");
				}
			);
		}
	if ($("footer-features")) {
		var remove = $("footer-features").getElements("span.glossary");
		remove.each(
			function (sp) {
				sp.removeClass("glossary");
				}
			);
		}
	
	var glossaries = $("center").getElements("span.glossary");
	
	var exclude = "[h1],[h2],[h3],[h4],[h5],[a],[input]";
	glossaries.each(
		function (sp) {
			var spanItem = sp.getElement("span");
			//alert(exclude.indexOf(sp.getParent().tagName.toLowerCase()))
			
			if (exclude.indexOf("[" + sp.getParent().tagName.toLowerCase() + "]") == -1) {
				sp.setProperty("id", new UUID());
				
				sp.addEvent("mouseover", function () {
					if ($("d_" + sp.getProperty("id") )) {
						$("d_" + sp.getProperty("id") ).dispose()
						}
					
					definition = new Element("div", {"class":"definition", "id": "d_" + sp.getProperty("id")}).set("html","<strong>" + sp.get("text") + "</strong><p>" + sp.getProperty("title") + "</p>").setOpacity(0).injectAfter(sp);
					
					var fx = new Fx.Morph(definition, {
														duration: 100, wait: true, 
														onComplete : function () {
															//alert($("bubble-login").getStyle("opacity"))
															}
														});
					definition.addEvent("mouseout", function () {
						//definition.getParent().triggerEvent("mouseout");
						});
					fx.options.transition = Fx.Transitions.Sine.easeIn;
					dposition = definition.getCoordinates();
					spposition = sp.getCoordinates();
					bodyposition = $$("body")[0].getCoordinates();
					
					definition.setStyles({
						'opacity': 0,
						'display' : 'block',
						'top' : spposition.top - (dposition.height+5),
						'left' : spposition.left - ((dposition.width - spposition.width)/2)
						})
					//alert(spposition.top)
					//alert((definition.getCoordinates().left + dposition.width) + " : " + bodyposition.width)
					if ((definition.getCoordinates().left + dposition.width) >  bodyposition.width) {
						//alert("too wide")
						definition.setStyles({
							"left": 0,
							"top" : -100
							});
						}
					
					this.s = {
						'opacity' : 1
						};
					sp.setProperty("xtitle", sp.getProperty("title"));
					sp.removeProperty("title");
					fx.start(this.s);	
					return false;
						
					});
				
				
				
				sp.addEvent("mouseout", function (ev) {
					//alert(ev.target)
					var definition = ev.target.getNext();
					//alert(definition);
					sp.setProperty("title", sp.getProperty("xtitle"));
					sp.removeProperty("xtitle");
					//sp.setProperty("title", definition.getElement("p").innerHTML);
					var fx = new Fx.Morph(definition, {
														duration: 100, wait: true, 
														onComplete : function () {
															//alert(this.element.getProperty("id"));
															try {
																this.element.dispose();
																}catch (e) {}
															}
														});
						
					fx.options.transition = Fx.Transitions.Sine.easeIn;
					
					
					this.s = {
						'opacity' : 0
						};
				
					fx.start(this.s);	
					return false;
					});
				}
			else {
				sp.removeClass("glossary");
				
				}
					
			}
		);
	});