var gPlatform = PLATFORM_WINDOWS;

var PLATFORM_OTHER    = 0;
var PLATFORM_WINDOWS  = 1;
var PLATFORM_LINUX    = 2;
var PLATFORM_MACOSX   = 3;
var PLATFORM_MAC      = 4;

if (navigator.platform.indexOf("Win32") != -1)
  gPlatform = PLATFORM_WINDOWS;
else if (navigator.platform.indexOf("Linux") != -1)
  gPlatform = PLATFORM_LINUX;
else if (navigator.userAgent.indexOf("Mac OS X") != -1)
  gPlatform = PLATFORM_MACOSX;
else if (navigator.userAgent.indexOf("MSIE 5.2") != -1)
  gPlatform = PLATFORM_MACOSX;
else if (navigator.platform.indexOf("Mac") != -1)
  gPlatform = PLATFORM_MAC;
else
  gPlatform = PLATFORM_OTHER;

function getPlatformName()
{
  if (gPlatform == PLATFORM_WINDOWS)
	return "Windows";
  if (gPlatform == PLATFORM_LINUX)
	return "Linux";
  if (gPlatform == PLATFORM_MACOSX)
	return "MacOSX";
  return "Unknown";
}

function getInstallURL(aEvent) {
 
	// The event target might be the link itself or one of its children
	var target = aEvent.target;
	while (target && !target.href)
	  target = target.parentNode;
	
	return target && target.href;
}

function install( aEvent, extName, iconURL, extHash)  {   

	if (aEvent.altKey || !window.InstallTrigger)
		return true;

	var url = getInstallURL(aEvent);

	if (url && url.match(/^.+\.xpi$/)) {

		var params = new Array();

		params[extName] = {
			URL: url,
			IconURL: iconURL,
			toString: function () { return this.URL; }
		};

		// Only add the Hash param if it exists.
		//
		// We optionally add this to params[] because installTrigger
		// will still try to compare a null hash as long as the var is set.
		if (extHash) {
			params[extName].Hash = extHash;
		}

		InstallTrigger.install(params);

		try {
			var p = new XMLHttpRequest();
			p.open("GET", "/install.php?uri=" + url, true);
			p.send(null);
		} catch(e) { }

		return false;
	}
	return true;
}

function installTheme( aEvent, extName) {
	if(!window.InstallTrigger) 
		return true;
	
	var url = getInstallURL(aEvent);
	if (!url)
		return true;

	InstallTrigger.installChrome(InstallTrigger.SKIN,url,extName);

	try {
		var p = new XMLHttpRequest();
		p.open("GET", "/install.php?uri="+url, true);
		p.send(null);
	} catch(e) { }
	return false;
}

function fixPlatformLinks(addonID, name)
{
	var platform = getPlatformName();
	var outer = document.getElementById("install-"+ addonID);
	var installs = outer.getElementsByTagName("p");
	var found = false;
	for (var i = 0; i < installs.length; i++) {
		var className = installs[i].className;
		if (className.indexOf("platform-" + platform) != -1 ||
			className.indexOf("platform-ALL") != -1) {
				found = true;
		} else {
				installs[i].style.display = "none";
		}
	}
	if (!found)
		outer.appendChild(document.createTextNode(name + " is not available for " + platform)); 
}
