// JavaScript Document
if ( ! window.Prototype )
	throw new Exception('Can\'t work without prototype');
/*
if ( ! window.Scriptaculous )
	throw new Exception('Can\'t work without scriptaculous');
*/
if ( ! window.BrowserDetect )
	throw new Exception('Can\'t work without BrowserDetect');
	
if ( ! window.hensam )
	var hensam = { Projects : { mehrdafon : {} } };
else if ( ! (hensam.Projects ) )
	hensam.Projects = { mehrdafon : {} } ;
else if ( ! hensam.Projects.mehrdafon  )
	hensam.Projects.mehrdafon = {};
	
hensam.Projects.mehrdafon.Profile = Class.create({
	
	profileForm : 'profile',
	passwords : [],
	passwordSpans : [],
	
	formSubmittedHandler : function(event) {
		//event.stop();
	},
	
	sendChanges : function(event) {
		alert('you changed something :)');
	},
	
	editFieldHandler : function(event, formElement) {
		event.element().removeClassName('editable').update(formElement);
		if ( formElement.fireEvents )
		{
			event.element().fire('field:edited', { element : formElement});
		}
		$('saveProfile').enable();
	},
	
	editPasswordHandler : function(event) {
		var otherFieldIndex = null;
		if ( event.memo.element == this.passwords[0] )
		{
			otherFieldIndex = 1;
		}
		else
		{
			otherFieldIndex = 0;
		}
		var pwField = this.passwords[otherFieldIndex];
		
		pwField.value = '';
		event.memo.element.value = '';
		pwField.fireEvents = false;
		
		var myEvent = {};
		myEvent.hiddenElement = this.passwordSpans[otherFieldIndex];
		myEvent.element = function() { 
			return this.hiddenElement; 
		};

		this.editFieldHandler(myEvent, pwField);
	},
	
	enhanceInputFields : function(formElement) {
		var span = new Element('span');
		span = formElement.up();
		formElement.fireEvents = true;
		span.setStyle({ width : formElement.getWidth()+'px', height : formElement.getHeight() + 'px'})
			.update(formElement.getValue())
			.addClassName('editable')
			.show()
			.observe('click', this.editFieldHandler.bindAsEventListener(this, formElement));
	},
	
	enhancePasswordFields : function() {
		
		this.passwords.each(function(pwElement, key) {
									 
			this.passwordSpans[key] = pwElement.up();
			pwElement.value = '(versteckt)';
			pwElement.up().observe('field:edited', this.editPasswordHandler.bindAsEventListener(this));
			this.enhanceInputFields(pwElement);
			
		}, this);
		
	},
	
	domLoadedHandler : function(event) {
		this.profileForm = $(this.profileForm);
		
		if ( ! this.profileForm )
			return;
		
		this.profileForm.select('input[type="text"]').each(this.enhanceInputFields,this);
		this.passwords =
			this.profileForm.select('input[type="password"]');
		this.enhancePasswordFields();
		this.profileForm.down('form').observe('submit', this.formSubmittedHandler.bindAsEventListener(this));
		
		$('saveProfile').disable();
	},

	initialize : function() {
	    Event.observe(document, 'dom:loaded', this.domLoadedHandler.bindAsEventListener(this));
	}
});

new hensam.Projects.mehrdafon.Profile();