/**
* jQuery plugin to integrate processing applet.
*/
jQuery.fn.processing = function(op) {
	// defaults
	var defaults = {
		width:900,
		height:600,
		archiveCore:"applet/d33/core.jar",
		archiveSketch:"applet/d33/imdg_33.jar",
		archiveLibraries:"applet/d33/mysql.jar,applet/d33/mysql-connector-java-3.1.14-bin.jar",
		java:"imdg_33.class",
		code:"applet/d33/imdg_33",
		loader:"applet/loading.gif",
		boxbgcolor:"#000000",
		params:null
	};
	jQuery.extend(defaults, op);
	
	// container
	var container = jQuery(this);
	
	// size
	jQuery(container).width(defaults.width + "px");
	jQuery(container).height(defaults.height + "px");
	
	// archives
	var archives = defaults.archiveCore + "," + defaults.archiveSketch + "," + defaults.archiveLibraries;

	
	// create
	createMarkup();
	
	
	/**
	* Creates the markup.
	*/
	function createMarkup() {
		
		// flags
		var ie = false;
		if (jQuery.browser.msie) {
			ie = true;	
		}
		
		// markup
		var markup = "";
		if (! ie) {
			markup += "<object classid='java:"+defaults.java+"' type='application/x-java-applet' archive='"+archives+"' width='"+defaults.width+"' height='"+defaults.height+"' standby='Loading Processing software...' >";
			markup += "<param name='archive' value='"+archives+"' />";
			markup += "<param name='mayscript' value='true' />";
			markup += "<param name='scriptable' value='true' />";
			markup += "<param name='image' value='"+defaults.loader+"' />";
			markup += "<param name='boxmessage' value='Loading Processing software...' />";
			markup += "<param name='boxbgcolor' value='"+defaults.boxbgcolor+"' />";
			markup += "<param name='test_string' value='outer' />";
			markup += "<param name='appletWidth'    value='"+defaults.width+"'>";
			markup += "<param name='appletHeight'    value='"+defaults.height+"'>";
			
		}
		markup += "<object classid='clsid:8AD9C840-044E-11D1-B3E9-00805F499D93' codebase='http://java.sun.com/update/1.4.2/jinstall-1_4_2_12-windows-i586.cab' width='"+defaults.width+"' height='"+defaults.height+"' standby='Loading Processing software...'  >";
		markup += "<param name='code' value='"+defaults.code+"' />";
		markup += "<param name='archive' value='"+archives+"' />";
		markup += "<param name='mayscript' value='true' />";
		markup += "<param name='scriptable' value='true' />";
		markup += "<param name='image' value='"+defaults.loader+"' />";
		markup += "<param name='boxmessage' value='Loading Processing software...' />";
		markup += "<param name='boxbgcolor' value='"+defaults.boxbgcolor+"' />";
		markup += "<param name='test_string' value='outer' />";
		markup += "<param name='appletWidth'    value='"+defaults.width+"'>";
		markup += "<param name='appletHeight'    value='"+defaults.height+"'>";
		markup += "</object>";
		if (! ie) {
			markup +="</object>";	
		}
		
		// append
		jQuery(container).html(markup);
		
	}
	
	
	// return
	return this;
}
