var Reminder = Class.create();

Reminder.prototype =
{
	initialize: function(targets, reminder, button, prefix, isRemind)
	{
		if (prefix == undefined) {
			prefix = 'reminder_';
		}
		if (isRemind == undefined) {
			isRemind = true;
		}
		if (!(targets instanceof Array)) {
			_targets = targets;
			targets = new Array();
			targets[0] = _targets;
		}
		this.prefix = prefix;
		this.targets = targets;
		this.reminder = $(reminder);
		
		if (button != undefined) {
			Event.observe($(button), 'click', this.remember.bind(this));
		}
		
		if (isRemind) {
			Event.observe(window, 'load', this.remind.bind(this));
		}
	},
	
	remind: function()
	{
		if (Cookie.get(this.prefix)) {
			for (var i = 0; i < this.targets.length; i++) {
				var name = this.targets[i];
				var value = Cookie.get(this.prefix + name);

				if (value != undefined) {
					if ($(name).options) {
						for (var i = 0; i < $(name).options.length; i++) {
							if ($(name).options[i].value == value) {
								$(name).selectedIndex = i;
							}
						}
					}
					else {
						$(name).value = value;
					}
				}
			}
			if (this.reminder && !this.reminder.checked) {
				if (this.reminder.disabled) {
					this.reminder.checked = true;
				}
				else {
					this.reminder.click();
				}
			}
		}
	},
	
	remember: function()
	{
		if (this.reminder == undefined || this.reminder.checked) {
			Cookie.set(this.prefix, 1, 3600 * 24 * 90);
			for (var i = 0; i < this.targets.length; i++) {
				var name = this.targets[i];
				var value;
				if ($(name).options) {
					value = $(name).options[$(name).selectedIndex].value;
				}
				else {
					value = $(name).value;
				}
				Cookie.set(this.prefix + name, value, 3600 * 24 * 90);
			}
		}
		else {
			Cookie.unset(this.prefix);
			for (var i = 0; i < this.targets.length; i++) {
				var name = this.targets[i];
				Cookie.unset(this.prefix + name);
			}
		}
	}
}
