var aspirium;
aspirium = function()
{

	var aspiriumAdvisoryId;

	aspiriumAdvisoryId = 0;

	var aspiriumPublic = {version: "1.0.0", extensions: {}, currentSite: {}, sites: {}};

	// Cookie scripts from http://www.quirksmode.org/js/cookies.html and modified

	aspiriumPublic.extensions.cssClassRemove = function(el, thisClass)
	{
		var theseClasses;
		theseClasses = el.className.split(" ");
		theseClasses = aspirium.extensions.arrayWithout(theseClasses, thisClass);
		el.className = theseClasses.join(" ");
	}

	aspiriumPublic.extensions.cssClassHas = function(el, thisClass)
	{
		var theseClasses;
		theseClasses = el.className.split(" ");
		return(aspirium.extensions.arrayCountOccurances(theseClasses, thisClass) > 0);
	}
	
	aspiriumPublic.extensions.cssClassAdd = function(el, thisClass)
	{
		aspirium.extensions.cssClassRemove(el, thisClass);
		if(el.cssClass=="") 
		{
			el.className = el.thisClass;
		}
		else
		{
			el.className = el.className + " " + thisClass;
		}
	}

	aspiriumPublic.extensions.arrayWithout = function(thisArray, removeThis)
	{
		var i;
		var thisNewArray;
		thisNewArray = [];
		for(i=0;i<thisArray.length;i++)
		{
			if(thisArray[i] != removeThis) thisNewArray.push(thisArray[i]);
		}
		return thisNewArray;
	}

	aspiriumPublic.extensions.arrayCountOccurances = function(thisArray, thisItem)
	{
		var i;
		var ii;
		ii = 0;
		for(i=0;i<thisArray.length;i++)
		{
			if(thisArray[i] == thisItem) ii++;
		}
		return ii;
	}

	aspiriumPublic.extensions.getKeyCode = function(e)
	{
		if(e)
		{
			if(aspirium.extensions.isIE==true)
			{
				return e.keyCode;
			}
			else
			{
				return e.which;
			}
		}
		else
		{
			return 0;
		}
	}

	aspiriumPublic.extensions.createCookie = function(name, value)
	{
		document.cookie = name+"="+value+"; path=/";
	}

	aspiriumPublic.extensions.readCookie = function(name)
	{
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++)
		{
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	}
	
	aspiriumPublic.extensions.textFocus = function(el, emptyPhrase)
	{
		if(el.value==emptyPhrase) { el.value = ""; }
	}

	aspiriumPublic.extensions.textBlur = function(el, emptyPhrase)
	{
		if(el.value=="") { el.value = emptyPhrase; }
	}

	aspiriumPublic.extensions.mlTag = function(thisTag)
	{
		return "<"+thisTag+">";
	}
	
	aspiriumPublic.extensions.isIE = navigator.appName.indexOf("Microsoft") != -1;

	aspiriumPublic.sites.toggleSite = function(el)
	{
		if(aspirium.extensions.cssClassHas(el.parentNode, "aspiriumSiteSelected"))
		{
			aspirium.extensions.cssClassRemove(el.parentNode, "aspiriumSiteSelected")
			el.innerHTML = "+";
		}
		else
		{
			aspirium.extensions.cssClassAdd(el.parentNode, "aspiriumSiteSelected")
			el.innerHTML = "-";
		}
	}

	aspiriumPublic.sites.advisoryLink = function (thisText, thisURL, thisTitle, thisReason)
	{
		aspiriumPublic.advisoryLinkOpen(thisURL, thisTitle, thisReason, aspiriumAdvisoryId);
		document.write(thisText);
		aspiriumPublic.advisoryLinkClose();
	}

	aspiriumPublic.sites.advisoryLinkOpen = function (thisURL, thisTitle, thisReason)
	{
		aspiriumAdvisoryId = aspiriumAdvisoryId + 1
		document.write("<form class=\"aspiriumAdvisoryForm\" id=\"advisory"+aspiriumAdvisoryId+"\" method=\"post\" action=\"/advisory/\">");
		document.write("<input class=\"noInput\" type=\"hidden\" name=\"advisoryurl\" value=\""+thisURL+"\" />");
		document.write("<input class=\"noInput\" type=\"hidden\" name=\"advisoryreason\" value=\""+thisReason+"\" />");
		document.write("<input class=\"noInput\" type=\"hidden\" name=\"advisorytitle\" value=\""+thisTitle+"\" />");
		document.write("<a href=\"javascript:document.getElementById('advisory"+aspiriumAdvisoryId+"').submit();\">");
	}

	aspiriumPublic.sites.advisoryLinkClose = function()
	{
		document.write("</a></form>");
	}

	aspiriumPublic.sites.getAdvisory = function()
	{
		var thisAdvisory = aspiriumPublic.extensions.readCookie("aspiriumadvisory");
		if(thisAdvisory==null)
		{
			thisAdvisory = "a";
		}
		else
		{
			if(thisAdvisory.indexOf("a", 0)!=0) thisAdvisory = "a" + thisAdvisory;
		}
		aspiriumPublic.extensions.createCookie("aspiriumadvisory", thisAdvisory);
		return aspiriumPublic.extensions.readCookie("aspiriumadvisory");
	}

	aspiriumPublic.sites.activateAdvisory = function(thisAdvisoryCode)
	{
		var thisAdvisory = aspiriumPublic.sites.getAdvisory();
		if(thisAdvisory!=null)
		{
			if(thisAdvisory.indexOf(thisAdvisoryCode, 0)!=-1)
			{
				aspiriumPublic.extensions.createCookie("aspiriumadvisory", thisAdvisory.replace(thisAdvisoryCode, ""));
			}
		}
	}

	aspiriumPublic.sites.deactivateAdvisory = function(thisAdvisoryCode)
	{
		var thisAdvisory = aspiriumPublic.sites.getAdvisory();
		if(thisAdvisory!=null)
		{
			if(thisAdvisory.indexOf(thisAdvisoryCode, 0)==-1)
			{
				aspiriumPublic.extensions.createCookie("aspiriumadvisory", thisAdvisory + thisAdvisoryCode);
			}
		}
	}

	aspiriumPublic.sites.advisoryIsOff = function(thisAdvisoryCode)
	{
		var thisAdvisory = aspiriumPublic.sites.getAdvisory();
		if(thisAdvisory==null) return null;
		return (thisAdvisory.indexOf(thisAdvisoryCode, 0)!=-1)
	}

	aspiriumPublic.extensions.returnWindow = function(thisURL, thisWidth, thisHeight, thisShowOthers)
	{
		if(thisShowOthers==null) thisShowOthers = "no";
		return window.open(thisURL, "aspiriumNew", "width="+thisWidth+",height="+thisHeight+",resizable="+thisShowOthers+",scrollbars="+thisShowOthers+",toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no");
	}
	
	aspiriumPublic.extensions.createWindow = function(thisURL, thisWidth, thisHeight, thisShowOthers)
	{
		if(thisShowOthers==null) thisShowOthers = "no";
		aspirium.extensions.returnWindow(thisURL, thisWidth, thisHeight, thisShowOthers);
	}
	
	aspiriumPublic.extensions.createImgWindow = function(imageTitle, imageURL, thisBackgroundCSS, thisWidth, thisHeight)
	{
		if(!thisBackgroundCSS)
		{
			thisBackgroundCSS = "#ffffff";
		}
		var imgPage;
		imgPage = aspirium.extensions.returnWindow("", thisWidth, thisHeight);
		imgPage.document.open();
		imgPage.document.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head><title>"+imageTitle+"</title><style>body { margin: 0px; background: " + thisBackgroundCSS + "; } img { display: block; margin: 0px auto;}</style></head><body><img src=\""+imageURL+"\" alt=\""+imageTitle+"\" title=\""+imageTitle+"\" onclick=\"window.close();\" /></body></html>");
		imgPage.document.close();
	}

	aspiriumPublic.extensions.printPage = function()
	{
		window.print();
	}
	
	aspiriumPublic.sites.searchFor = function(aspiriumSearchTerms, aspiriumSearchArea)
	{
		if(aspiriumSearchTerms!="")
		{
			if(aspiriumSearchArea=="")
			{
				window.location='/search/?keywords='+escape(aspiriumSearchTerms);	
			}
			else
			{
				window.location="/search/?location="+aspiriumSearchArea+"&keywords="+escape(aspiriumSearchTerms);
			}
		}
	}

	aspiriumPublic.extensions.selectLink = function(el)
	{
		var elParentLis;
		elParentLis = el.parentNode.getElementsByTagName("li");
		var i;
		for(i=0; i<elParentLis.length; i++)
		{
			elParentLis[i].className = "";
		}
		el.className = "aspiriumSelected";
	}

	aspiriumPublic.sites.initDocument = function(thisEvent)
	{
		if(aspiriumPublic.currentSite.initDocument) aspirium.currentSite.initDocument();
	}

	return aspiriumPublic;

}();