
jQuery.fn.user = function(options) {
	config={reg_fields:['email','password','passwordval','nick','rules']};
	options = options || config;
	var elem = this.each(function() {

	});
	return jQuery.cartInstance=new user(this,options);
};
jQuery.extend(user, {
	DEFAULTS:{
		reg_fields:['email','password','passwordval','nickname','rules','data'],
		login_fields:['email','password','data'],
		request_suffix:'/json',
		error_output:'.error',
		login_sucess:false
	}
});
function user(element, options) {
	this.element = element;
	this.options = jQuery.extend(user, user.DEFAULTS, options);
}
user.prototype={
	reg_submit:function(form){
		var self=this;
		//TODO: this is not thread safty
		this.options.form=form;
		form.submit(function(){
			values={};
			$.each(user.reg_fields,function(i,name){
				input=form.find('input[name='+this+']');
				values[name]=input.val();
				if(input.attr('type')=='checkbox'){
					values[name]=input.attr('checked');
				}
			});
			$.postJSON(this.action+user.request_suffix,values,self.reg_handler,self);
			return false;
		});

	},
	reg_handler:function(data){
		if(!data.status){
			this.options.form.find(this.options.error_output).html(data.errors);
			this.options.form.find(this.options.error_output).show();
		}else{
			$.fancybox(data.html);
		}
		//TODO: delete
		$.fancybox.resize();
	},
	login_submit:function(form){
		var self=this;
		//TODO: this is not thread safty
		this.options.form=form;
		form.submit(function(){
			values={};
			$.each(user.login_fields,function(i,name){
				input=form.find('input[name='+this+']');
				values[name]=input.val();
				//console.log(input.attr('type'));
				if(input.attr('type')=='checkbox'){
					values[name]=input.attr('checked');
				}
			});
			$.postJSON(this.action+user.request_suffix,values,self.login_handler,self);
			return false;
		});
	},
	login_handler:function(data){
		if(data.error){
			$(this.options.form).find(this.options.error_output).html(data.error);
			$(this.options.form).find(this.options.error_output).show();
		}else{
			//$.fancybox(data.html);
			$.fancybox.close();
			$('#nickname-cont').html(data.data.nickname?data.data.nickname:data.data.email);
			users._togglemenu();
		}
	},
	logout:function(){
		$.postJSON(this.href+user.request_suffix);
		users._togglemenu();
		return false;
	},
	_togglemenu:function(){
		$('#users-box').toggle();
		$('#users-box-logined').toggle();		
	}
}

