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");
				}
			);
		}
	
	
	initGlossaries("center");	
	});
function initGlossaries(inside){
		var glossaries = $(inside).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.retrieve("hasGlossary"))) {
				//sp.setProperty("id", new UUID());
				sp.store("hasGlossary", true);
				sp.addEvent("mouseover", function(ev){
					
					if ($("d_" + sp.getProperty("rel"))) {
						$("d_" + sp.getProperty("rel")).dispose()
						}
					if(ev.target.get("tag") != "span") return;
					
					//console.log(ev.target.getCoordinates())
					
					
					definition = new Element("div", {
						"class": "definition",
						"id": "d_" + sp.getProperty("rel")
					}).set("html", "<strong>" + sp.get("text") + "</strong><p>" + smartTags[sp.get("rel")] + "</p>").setOpacity(0).inject($(document.body));
					
					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();
				//	console.log(spposition.top + ((dposition.height * -1)-5))
					definition.setStyles({
						'z-index':9999999,
						'opacity': 0,
						'display': 'block',
						'top': (spposition.top + ((dposition.height * -1)-5) > 0 ? spposition.top + ((dposition.height * -1)-5) : spposition.top + 20),
						'left': Math.min(spposition.left + (((dposition.width - spposition.width) / 2)*-1), spposition.left-10)
						});
					
					//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 = $("d_" + ev.target.getProperty("rel")).dispose();
					//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");
				
			}
			
		});
		}
