/** L'ultimo argomento e' facoltativo */
function Applet(codebase_, archive_, code_, width_, height_, javaVersion_) {

	var codebase = codebase_;
	var archive = archive_;
	var code = code_;
	var width = parseInt(width_);
	var height = parseInt(height_);
	var javaVersion = javaVersion_ == null ? 5 : parseInt(javaVersion_);

	/** Un array associativo con nome => valore dei parametri */
	var parameters;

  /** Restituisce una stringa col tag object pronto per eseguire l'applet */
  function getAppletObject() {
		var ieCodebase = // cambiano i valori a seconda della versiona Java utilizzata
			javaVersion == 6 ?
				"http://java.sun.com/update/1.6.0/jinstall-6u13-windows-i586.cab" :
				"http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0";

    var object =
      "<object classid=\"clsid:CAFEEFAC-001"+javaVersion+"-0000-0000-ABCDEFFEDCBA\" codebase=\""+ieCodebase+"\" width=\""+width+"\" height=\""+height+"\">\n"+
      "\t<param name=\"codebase\" value=\""+codebase+"\"/>\n"+
      "\t<param name=\"archive\" value=\""+archive+"\"/>\n"+
      "\t<param name=\"code\" value=\""+code+"\"/>\n";

		for(var name in parameters)	// AGGIUNTA DEI PARAMETRI
			object += "\t<param name=\""+name+"\" value=\""+parameters[name]+"\"/>\n";

		object +=
      "</object>";
    
    return object;
  }

  /** restituisce un oggetto embed pronto ad eseguire l'applet */
  function getAppletEmbed(startDir, prefixName) {
    var embed = document.createElement("embed");
    embed.setAttribute("type", "application/x-java-applet;version=1."+javaVersion);
    embed.setAttribute("width", width);
    embed.setAttribute("height", height);
    embed.setAttribute("pluginspace", "http://java.sun.com/javase/downloads/ea.jsp");
    embed.setAttribute("codebase", codebase);
    embed.setAttribute("archive", archive);
    embed.setAttribute("code", code);

		for(var name in parameters) embed.setAttribute(name, parameters[name]);	// AGGIUNTA DEI PARAMETRI

    return embed;
  }

  /** Inserisce l'applet sottoforma di applet (non lo uso) */
  function getAppletApplet(startDir, prefixName) {
		var applet = document.createElement("applet");
		applet.setAttribute("width", width);
		applet.setAttribute("height", height);
		applet.setAttribute("archive", archive);
		applet.setAttribute("code", code);
		applet.setAttribute("codebase", codebase);

		for(var name in parameters) {	// AGGIUNTA DEI PARAMETRI
			var param = document.createElement("param");
			param.setAttribute("name", name);
			param.setAttribute("value", parameters[name]);
			applet.appendChild(param);
		}

		return applet;
  }

  /** Restituisce l'applet sottoforma di object se su IE e di embed sugli altri */
  this.getApplet = function(containerId, loadingClassName) {
    if(loadingClassName != null) document.getElementById(containerId).className = loadingClassName;

    var applet = null;
		document.getElementById(containerId).innerHTML = "";
    if(document.all) {  // per explorer
      applet = getAppletObject();
      document.getElementById(containerId).innerHTML = applet;
    }
    else {  // per gli altri
      applet = getAppletEmbed();
      document.getElementById(containerId).appendChild(applet);
    }
  }

	/** Aggiunge un parametro all'applet. */
	this.addParameter = function(paramName, paramValue) {
		if(!parameters) parameters = new Array();
		parameters[paramName] = paramValue;
	}
}

