function CustomSeedMessage(id, custom_message_id)
{
	this.id = id;
	this.list = document.getElementsByName('message');
	this.list_custom = document.getElementById('message_' + custom_message_id);
	this.custom_message = document.getElementById(this.id);
	this.sensitive = null;

	var is_ie = (document.addEventListener) ? false: true;
	var self = this;

	function listClickHandler(event)
	{
		if (self.list_custom.checked)
			self.sensitize();
		else if (self.sensitive || self.sensitive == null)
			self.desensitize();
	}

	function messageClickHandler(event)
	{
		self.sensitize();
		self.list_custom.checked = true;
	}

	// set up event handlers
	for (var i = 0; i < this.list.length; i++) {
		if (is_ie)
			this.list[i].attachEvent('onclick', listClickHandler);
		else
			this.list[i].addEventListener('click', listClickHandler, true);

		// initialize state
		if (this.list[i].checked) {
			if (this.list[i] == this.list_custom)
				this.sensitize();
			else
				this.desensitize();
		}
	}

	// TODO: this handler never gets fired because disabled elements don't
	// trigger mouse events.
	if (is_ie)
		this.custom_message.attachEvent('onclick', messageClickHandler);
	else
		this.custom_message.addEventListener('click', messageClickHandler,
			true);
}

CustomSeedMessage.prototype.sensitize = function()
{
	this.custom_message.disabled = false;
	this.custom_message.className =
		this.custom_message.className.replace(/ *swat-insensitive/, '');

	this.custom_message.focus();

	this.sensitive = true;
}

CustomSeedMessage.prototype.desensitize = function()
{
	this.custom_message.disabled = true;
	this.custom_message.className += ' swat-insensitive';

	this.sensitive = false;
}

function CustomSeedTypePreview(radio_list_name, preview_image_id)
{
	this.radio_list_name = radio_list_name;
	this.preview_image = document.getElementById(preview_image_id);
	this.radio_buttons = document.getElementsByName(radio_list_name);

	for (var i = 0; i < this.radio_buttons.length; i++) {
		YAHOO.util.Event.addListener(this.radio_buttons[i], 'click',
			this.handleClick, this, true);
	}

	this.updatePreview();
}

// preload images
CustomSeedTypePreview.image_wildflower = new Image();
CustomSeedTypePreview.image_wildflower.src =
	'images/custom-seed-packages/wildflower.jpg';

CustomSeedTypePreview.image_sunflower = new Image();
CustomSeedTypePreview.image_sunflower.src =
	'images/custom-seed-packages/sunflower.jpg';

CustomSeedTypePreview.image_forgetmenot = new Image();
CustomSeedTypePreview.image_forgetmenot.src =
	'images/custom-seed-packages/forgetmenot.jpg';

CustomSeedTypePreview.image_daisy = new Image();
CustomSeedTypePreview.image_daisy.src =
	'images/custom-seed-packages/daisy.jpg';

CustomSeedTypePreview.image_generic = new Image();
CustomSeedTypePreview.image_generic.src =
	'images/custom-seed-packages/generic.jpg';

CustomSeedTypePreview.prototype.handleClick= function(e)
{
	this.updatePreview();
}

CustomSeedTypePreview.prototype.updatePreview = function()
{
	var radio_button = null;

	for (var i = 0; i < this.radio_buttons.length; i++) {
		if (this.radio_buttons[i].checked) {
			radio_button = this.radio_buttons[i];
			break;
		}
	}

	if (radio_button) {
		var item_id = radio_button.id.substring(
			this.radio_list_name.length + 1);

		var src = this.getImageSrc(item_id);
		this.preview_image.src = src;
		this.preview_image.alt = src;
	}
}

CustomSeedTypePreview.prototype.getImageSrc = function(item_id)
{
	var src = null;

	item_id = parseInt(item_id);

	switch (item_id) {
	case 2287:
	case 11103:
		src = CustomSeedTypePreview.image_wildflower.src;
		break;

	case 1945:
		src = CustomSeedTypePreview.image_sunflower.src;
		break;
	
	case 2122:
		src = CustomSeedTypePreview.image_forgetmenot.src;
		break;
	
	case 2223:
		src = CustomSeedTypePreview.image_daisy.src;
		break;

	case 2149:
	case 2211:
	case 2306:
	case 11100:
	case 11101:
	case 11104:
	default:
		src = CustomSeedTypePreview.image_generic.src;
		break;
	}

	return src;
}
