
window.addEvent('domready', function() {
		// create a GUID if field exists
	var guid = 'guid-field';
	if ($(guid)) {
		$(guid).value = createGuid();
	}

		// page 2 - option A: check if there is a userscript field
	var txtar = 'tx-extensionwizard-script-userscript-field';
	if ($(txtar)) {
		var fn  = function() { $(txtar).removeClass('greyed-out'); textareaSwitch(txtar);  $('tx-extensionwizard-script-prefs-userscript').checked = 'checked'; };
		var fn2 = function() { $(txtar).addClass('greyed-out'); textareaSwitch(txtar); };
		$(txtar).addEvent('change', fn);
		$(txtar).addEvent('keyup',  fn);
		$(txtar).addEvent('click',  fn);
		$('tx-extensionwizard-script-prefs-userscript').addEvent('click',    fn);
		$('tx-extensionwizard-script-prefs-userscript').addEvent('change',   fn);
		$('tx-extensionwizard-script-prefs-placeholder').addEvent('click',   fn2);
		$('tx-extensionwizard-script-prefs-placeholder').addEvent('change',  fn2);
		if ($(txtar).value == '') {
			fn2();
		}
		textareaSwitch(txtar);

		$('tx-extensionwizard-button-clearform').addEvent('click', function() { $(txtar).value = ''; textareaSwitch(txtar); });


	}


		// page 3: check if there are the metadata fields
	var metainfo = 'tx-extensionwizard-metainfo';
	var menuitem = 'tx-extensionwizard-menuitem';

	var radio1 = ($('tx-extensionwizard-output1') ? 'tx-extensionwizard-output1' : 'tx-extensionwizard-use-metainfo-default');
	var radio2 = ($('tx-extensionwizard-output2') ? 'tx-extensionwizard-output2' : 'tx-extensionwizard-use-metainfo-custom');

	if ($(metainfo)) {

		var fnGrey = function() { 
			$$('#' + metainfo + ' input').each(function(el) { el.addClass('greyed-out'); });
			$(menuitem + '-name').addClass('greyed-out');
		}

		var fnUnGrey = function() {
			$(radio2).checked = true;
			$$('#' + metainfo + ' input').each(function(el) { el.removeClass('greyed-out'); });
			fnCheckMenuItem();
		}

		var fnCheckMenuItem = function() {
			if ($(menuitem + '-createmenu').checked) {
				$(menuitem + '-name').removeClass('greyed-out');
				if ($(menuitem + '-name').value == '') {
					$(menuitem + '-name').value = $(metainfo + '-name').value;
				}
			} else {
				$(menuitem + '-name').addClass('greyed-out');
			}
		}

			// register what happens if you click on an input field
		$$('#' + metainfo + ' input').each(function(el) {
			el.addEvents( { 'click': fnUnGrey, 'focus': fnUnGrey } );
		});

			// register what happens if you click on the radio buttons / checkboxes
		$(radio1).addEvent('click', fnGrey);
		$(radio2).addEvent('click', fnUnGrey);
		$(menuitem + '-createmenu').addEvent('click', fnUnGrey);
		$(menuitem + '-name').addEvent('click', function() { fnUnGrey(); $(menuitem + '-createmenu').checked = 'true'} );
		$(menuitem + '-name').addEvent('focus', function() { fnUnGrey(); $(menuitem + '-createmenu').checked = 'true'} );
		$(menuitem + '-name').addEvent('keydown', function() { fnUnGrey(); $(menuitem + '-createmenu').checked = 'true'} );

			// do initial check when page loads
		$(radio2).checked ? fnUnGrey() : fnGrey();
	}
});


var bgs = {};
// if a textarea is not empty, set the background image, otherwise remove it
function textareaSwitch(obj) {
	obj = $(obj);
	var bgImage = obj.getStyle('background-image');
	if (bgImage != 'none') bgs[obj.id] = bgImage;
	if (obj.value != '') {
		obj.setStyle('background-image', 'none');
	} else {
		obj.setStyle('background-image', bgs[obj.id]);
	}
}





function rand4() { return (((1+Math.random())*0x10000)|0).toString(16).substring(1); }
function createGuid() { return '{' + rand4() + rand4() + '-' + rand4() + '-' + rand4() + '-' + rand4() + '-' + rand4() + rand4() + rand4() + '}'; }

// loaded from: http://dynamic-tools.net/toolbox/copyToClipboard/
function copyToClipboard(s) {
	if (window.clipboardData && clipboardData.setData) {
		clipboardData.setData("Text", s);
	} else {
		// You have to sign the code to enable this or allow the action in about:config by changing
		// user_pref("signed.applets.codebase_principal_support", true);
		// netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

		var clip = Components.classes['@mozilla.org/widget/clipboard;[[[[1]]]]'].createInstance(Components.interfaces.nsIClipboard);
		if (!clip) return;

		// create a transferable
		var trans = Components.classes['@mozilla.org/widget/transferable;[[[[1]]]]'].createInstance(Components.interfaces.nsITransferable);
		if (!trans) return;

		// specify the data we wish to handle. Plaintext in this case.
		trans.addDataFlavor('text/unicode');

		// To get the data from the transferable we need two new objects
		var str = new Object();
		var len = new Object();

		var str = Components.classes["@mozilla.org/supports-string;[[[[1]]]]"].createInstance(Components.interfaces.nsISupportsString);

		var copytext=s;
		str.data=copytext;
		trans.setTransferData("text/unicode",str,copytext.length*[[[[2]]]]);
		var clipid=Components.interfaces.nsIClipboard;
		if (!clip) return false;
		clip.setData(trans,null,clipid.kGlobalClipboard);	   
	}
}

