var QuickLoginForm = {
	requestUri : '/xmlrpc/login.php',
	loaded : false,
	open : false, 
	embeddings : [],
	
	request : function(e) {
		this.orginatingEvent = e;
		if( this.loaded ) {
			this.orginatingEvent.stop();
			this.show();
			return false;
		}
		
		var r = new Ajax(this.requestUri, { method: 'get', onComplete : this.callback.bind(this) });
		r.request();
	},
	
	callback : function(response) {
		var divOverlay = new Element('div', {
			styles : {
				opacity: 0.8,
				background: '#000',
				position: 'absolute',
				top: 0,
				left: 0,
				width: window.getWidth() + 'px',
				height: window.getScrollHeight() + 'px',
				zIndex: 1
			}
		});
		
		var divCon = new Element('div', {
			styles : {
				opacity: 0,
				position: 'absolute',
				top: 0,
				left: 0,
				width: window.getWidth() + 'px',
				height: window.getScrollHeight() + 'px',
				zIndex: 2
			}
		});
		
		var div = new Element('div', {
			styles : {
				opacity: 1.0,
				position: 'absolute',
				top: (window.getScrollTop() + 10) + 'px',
				left: (window.getScrollLeft() + window.getWidth() / 2 - 225) + 'px',
				zIndex: 3
			}
		});

		this.hideEmbeddings();

		var quickForm = new Element('div', {id: 'quickLoginForm'});
		quickForm.adopt(divOverlay);
		quickForm.adopt(divCon);

		div.innerHTML += response;
		divCon.adopt(div);
		
		$$('body')[0].adopt(quickForm);
		this.loaded = true;
		this.open = true;
		
		new Fx.Style(divCon, 'opacity', {
			duration: 500
		}).start(0, 1);
		
		//add listeners for closing window
		$('loginPopup').addEvent( 'click', this.windowClick );
		document.addEvent( 'click', this.hide.bindWithEvent(this) );
		document.addEvent( 'keydown', this.keyListener.bindWithEvent(this) );
		
		this.initForms();
	},
	
	hide : function(event) {
		if( !this.open )  { return; }
		this.showEmbeddings();
		$('quickLoginForm').setStyle('display', 'none'); 
		this.open = false;
		event.stop();
	},
	
	show : function() {
		if( this.open )  { return; }
		this.hideEmbeddings();
		$('quickLoginForm').setStyle( 'display', '' );
		this.open = true;
	},
	
	initForms : function() {
		//add listeners for switching through the options
		//$('normalLink').addEvent('click', function() { document.location = '/members/recover'; });
		$('closelink').addEvent('click', this.hide.bindWithEvent(this));
		//$('loginPopup').getElements('div.label').each((function(d) {
		//	d.addEvent( 'click', this.labelListener.bindWithEvent(this, d) );
		//}).bind(this));

		//$('loginPopup').getElement('.skip div.label').addEvent('click', this.hide.bindWithEvent(this) );
		//$('loginPopup').getElement('.login a.lnk').addEvent('click', (function(e) { e = new Event(e); this.submitForm($('loginPopup').getElement('.login form')); e.stop(); return; }).bind(this) );
		$('loginPopup').getElement('.skip a.lnk').addEvent('click', this.hide.bindWithEvent(this) );
		$('loginPopup').getElement('.register a.lnk').addEvent('click', (function(e) { e = new Event(e); e.stop(); this.submitForm($('loginPopup').getElement('.register form')); return; }).bind(this));
		$('loginPopup').getElements('input').each((function(i) { i.addEvent('keydown', this.keyListener.bindWithEvent(this) ); }).bind(this));
	},
	
	windowClick : function(e) {
		e = new Event(e); 
		e.stopPropagation(); 
	},
	
	keyListener : function(e) {
		e = new Event(e);
		switch( e.key ) {
			case 'esc': this.hide(e); break;
			case 'enter': e.stop(); this.submitForm(e.target.form); break;
		}
	},
	
	labelListener : function(event, d) {
		$('loginPopup').getElements('div.option').each(function(dOpt) { dOpt.removeClass('checked'); });
		$('loginPopup').getElements('input').each(function(i) { i.disabled = 'disabled'; });
		//$('loginPopup').getElement('.login a.lnk').removeEvents('click');
		$('loginPopup').getElement('.register a.lnk').removeEvents('click');

		var container = d.parentNode;
		container.addClass('checked');
		container.getElements('input').each(function(i) { i.disabled = false; });

		if( container.hasClass('login') ) {
			//$('loginPopup').getElement('.login a.lnk').addEvent('click', (function(e) { e = new Event(e); this.submitForm( $('loginPopup').getElement('.login form')); e.stop(); return; }).bind(this) )
		}
		else if( container.hasClass('register') ) {
			//$('loginPopup').getElement('.register a.lnk').addEvent('click', (function(e) { e = new Event(e); this.submitForm( $('loginPopup').getElement('.register form')); e.stop(); return; }).bind(this) )
		}
	},
	
	submitForm : function(form) {
		$('register_password_confirm').value = $('register_password').value;
		form.submit();
	},
	
	showEmbeddings : function() {
		if( this.embeddings.length < 1) {
			this.getEmbeddings();
		}
		this.embeddings.each(function(el) {
			el.style.visibility = 'visible';
		});
	},
	
	hideEmbeddings : function() {
		if( this.embeddings.length < 1) {
			this.getEmbeddings();
		}
		this.embeddings.each(function(el) {
			el.style.visibility = 'hidden';
		});
	},
	
	getEmbeddings : function() {
		this.embeddings = $A(document.getElementsByTagName('object'));
		this.embeddings.extend(document.getElementsByTagName(window.ie ? 'select' : 'embed'));
	},
	
	redirect : function() {
		document.location = '/photos/all';
		return;
	}
};
