
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
};

function EnableSigningForm() {
	$('signing_form').observe('submit', function(event) {
		event.stop()
		if ($('signing_form_username').getValue().trim() == '')
		{
			$$('#signing_form .error').each (function (s) {
				s.update('Podpis nie może być pusty.')
			});
		}
		else
		{
			$$('#signing_form .error').each (function (s) {
				s.update('')
			});
			$('signing_form').request({
				onCreate: function(){
					$('signing_form').disable()
				},
				onSuccess: function(transport) {
					$$('#signing_form .error').each (function (s) {
						$('signing_form').hide()
						s.update('Zostałeś dopisany do listy uczestników.');
					});
					$('attendances').update(transport.responseText);
				},
				onFailure: function(transport) {
					$$('#signing_form .error').each (function (s) {
						s.update('Wystąpił błąd podczas wysyłania formularza.')
					});
					$('signing_form').enable()
				}
			})
		}
	});
}

function EnableSigning(action_url) {
	$('signer').observe('click', function(event) {
		this.hide();
		this.up().insert('<form id="signing_form" method="post" action="'+action_url+
				'">Dopisz mnie do listy uczestników!<br />Podpis '+
				'<input id="signing_form_username" type="text" name="username" /><input type="submit" value="Dopisz" />'+
				'<span class="error"></span></form>')
		EnableSigningForm();
	});
}


/**
 * Initial author: jacor
 *
 * Version: 20100505
 *
 * Popup based on the Modalbox script for a quick reminder in apero.
 */ 
function EnablePopup() {
	$('reminder').hide();	// a div containing whole form
	$('przypomnij').hide(); // a h3 description and anchor at the same time

	if ($('quick_remind')) {
		$('quick_remind').hide();	// an anchor on the event's page
	}
	
	$$('.remind-me a').each (function (event) {	// each link in the .remind-me block gets a popup
		event.observe ('click', function (e) {
			e.stop();
			var e_id = event.id.match (/\d+/);
			$('reminder_event_id').setValue (e_id);

			Modalbox.show($('reminder'), {title: event.title, width: 620, afterLoad: observeRemindPopup});
		})
	});
}

// AJAX response for the popup
function observeRemindPopup() {
	$('reminder_form').observe ('submit', function(event) {
		event.stop();
		if ($('reminder_email').getValue().trim() == '') {
			$('reminder_message').update ('Wpisz swój e-mail.');
		}
		else {
			$('reminder_form').request({
				onCreate: function() {
					$('reminder_form').disable();
				},
				onSuccess: function(transport) {
					if (transport.responseText == 'x') {
						$('reminder_message').update ('Błędny e-mail. Spróbuj ponownie.');
						$('reminder_form').enable();
					}
					else {
						$('reminder_message').update ('Przypomnienie zostanie wysłane.');
						setTimeout('Modalbox.hide()', 1000);
					}
				},
				onFailure: function(transport) {
					$('reminder_message').update ('Coś się spierniczyło. Spróbuj jeszcze raz.');
					$('reminder_form').enable();
				}
			})
		}
	});
}


/**
 * Initial author: mcv
 * Contributors: zergu
 *
 * Version: 20100409
 *
 * Helper for input default text autoclearing on focus and bringing back old one on blur.
 * @param element Id of an element to be autocleared.
 * @param default_value Default displaying text.
 */
var Autoclear = Class.create ({
	initialize:
		function (element, default_value)
		{
			this.element = $(element);
			this.focus_observer = function() {
				if (this.value == (this.getAttribute ('default') || default_value)) {
					this.value = '';
				}
			}

			this.blur_observer = function() {
				if (!this.value) {
					this.value = this.getAttribute ('default') || default_value;
				}
			}

			// Rollback to default value on Esc key press
			this.keyup_observer = function (event) {
				if (event.keyCode == 27) {
					this.value = '';
				}
			}

			this.element.observe ('focus', this.focus_observer);
			this.element.observe ('blur', this.blur_observer);
			this.element.observe ('keyup', this.keyup_observer);
		},
	destroy:
		function()
		{
			this.element.stopObserving ('focus', this.focus_observer);
			this.element.stopObserving ('blur', this.blur_observer);
			this.element.stopObserving ('keyup', this.keyup_observer);
		}
}) 
