var BioModal = new Class({

	Extends:Mooverlay.HTML,

	options:{
		animations:true,
		ajax:{
			url:'/modals/bio'	
		}
	},

	initialize:function(id,options) {
		this.options.animations = !!! Browser.Engine.trident;
		this.parent('bio-'+id+'-modal',options);
		this.options.ajax.url += '-'+id+'.php';
		this.addEvent('show',this.onShow.bind(this));
	},

	onShow:function() {
		Loader.fadeOut();
		Cufon.set('fontFamily','FuturaLight');
		Cufon.replace('.modal-stage h2');
		Cufon.now();
	}

});


var ForgotPassword = new Class({

	Extends:Mooverlay.HTML,

	options:{
		animations:true,
		ajax:{
			url:'/modals/forgot-password.php'	
		}
	},

	initialize:function(options) {
		this.parent('forgot-password',options);
		this.addEvent('show',this.onShow.bind(this));
	},

	onShow:function() {
		Loader.fadeOut();
		ForgotPassword = new ForgotPasswordEx;
	}
});

var ForgotPasswordEx = new Class({

	initialize:function(subject, content) {
		this.form = $('forgot-password');
		this.form.addEvent('submit',this.onSubmit.bind(this));
	},

	getForm:function() {
		return this.form;
	},

	onSubmit:function(event) {
		if(event) event.stop();

		var elms = this.getForm().getElements('.text');
		var error = false;
		elms.each(function(elm) {
				var value = (elm.get('value') || '').trim();
				if(!value || value.length==0) {
					error = true;
				}
		});
		
		if(error) {
			this.setMessage('You must enter your email address');
			return;
		}
		
		var q = '';
		q += '&email=' + $('forgot-email-input').get('value');
		q += '&';
		this.disable();

		//send
		var request = new Request.JSON({
				url:'/json/forgot-password.php',
				method:'post',
				data:q,
				
				onSuccess:this.onResponse.bind(this),
				onFailure:this.onFailure.bind(this)
		});
		// alert(q);return;
		request.send.delay(1000,request);
	},

	setMessage:function(error) {
		var message = $('question-message');
		if(message) {
			message.destroy();
		}
		
		message = new ErrorMessage;
		message.setErrors([error]);
		$(message).id = 'question-message';
		
		$(message).setOpacity(0);
		$(message).inject(this.form,'top');
		$(message).morph({
			'opacity':[0,1],
			'margin-top':[-10,0]			 
		});
	},

	enable:function() {
		var elms = this.getForm().getElements('.text');
		$$(elms).setProperty('disabled',0);
	},

	disable:function() {
		var elms = this.getForm().getElements('.text');
		$$(elms).setProperty('disabled',1);
	},

	onFailure:function(message) {
		this.setMessage(message || 'There was an error. It may be because you have entered an invalid email address.');
		this.enable();
	},

	onResponse:function(json) {
		if(json && json.status == 'success') {
			this.onSuccess();
		}
		else {
			this.onFailure(json);
		}
	},

	onSuccess:function() {
		this.getForm().empty();
		
		var success = new Message('An email with the new password has been sent to you');
		$(success).injectInside(this.getForm());
	}
});


