
$(document).ready(function(){
	var l = new Login('FormLogin');
	l.init();
	$('.login').click(function(){ l.show(); return false; });
})

function Login(id){
	this.oContainer = $('#'+id);
	this.sBackClass = 'back';
	this.sFormClass = 'form';
	this.speed = 1400;
	this.notHide = false;
}

Login.prototype.init = function(){
	this.findBlocks();
	this.initEvents();
}

Login.prototype.findBlocks = function(){
	this.oBack = $('.'+this.sBackClass, this.oContainer);
	this.oForm = $('.'+this.sFormClass, this.oContainer);
	this.oFormIn = $('.in', this.oForm);
}

Login.prototype.initEvents = function(){
	var _my = this;
	this.oForm.click(function(){ _my.hide(); })
	this.oFormIn.click(function(){
		_my.notHide = true;
	})
}

Login.prototype.show = function(){
	var _my = this;

	var absParams = this.getAbsoluteParams();
	this.prepareShow(absParams);
	this.oContainer.show();
//	this.oBack.animate({ left: 0 }, _my.speed, 'elasticout', function(){ $(this).css({ width: '100%' }) });
	this.oBack.css({ opacity: 0 }).show().animate({ opacity: 0.5 }, 200, 'linear', function(){
		_my.oForm.animate({ left: 0 }, _my.speed, 'elasticout', function(){ $(this).css({ width: '100%' }) });
	});
}

Login.prototype.hide = function(){
	if(!this.notHide){
		var _my = this;
		var absParams = this.getSize();
		this.oForm.css({ width: absParams.w }).animate({ left: absParams.w }, 300, 'easeout', function(){
			$(this).hide();
		});
		this.oBack.animate({ opacity: 0 }, 500, 'linear', function(){
			$(this).hide();
			_my.oContainer.hide();
		});
	}
	this.notHide = false;
}

Login.prototype.prepareShow = function(p){
//	this.oBack.css({ left: p.w, width: p.w });
	this.oForm.css({ left: -p.w, width: p.w });
}

Login.prototype.getAbsoluteParams = function(){
	this.oContainer.css({ visibility: 'hidden' }).show();
	var params = this.getSize();
	this.oContainer.css({ visibility: '' }).hide();
	return params;
}

Login.prototype.getSize = function(){
	var params = new Object();
	params.w = this.oContainer.width();
	params.h = this.oContainer.height();
	return params;
}