dj.LOGINHANDLES = {};
dj.cssrequire('/includes/css/djlogin.css');

dj.login = function (params){
    if (!params) params = {};
    //dj.clearlogin();

    dj.callhook('login_open');

    var handles = dj.LOGINHANDLES;

    if(handles.loginbox) return 1; // we are already in a login... Skip it


    handles.params = params;
    
    if(! $.browser.msie ){
        handles.shade = dj.element('div',{'class': 'djlogin_shade'},'body');
    }

    var div = handles.loginbox = dj.element('div',{'class': 'djlogin_main_container'}); //djtk_login_box
    //div.load('/login?pg=admin&dest=');
    div.load('/includes/html/djlogin/loginsignup.html',function(){dj._loginready()} );
    return 1;
};

dj._loginready = function(){
    var div = dj.LOGINHANDLES.loginbox;

    div.appendTo('body');
    dj.floatcenter(div);

    dj._login_showlogin();
    $('#djlogin_cancelbutton',div).click(dj.clearlogin);

}

dj._login_showlogin = function(){
  var div = dj.LOGINHANDLES.loginbox;

  $('.djlogin_errormessage',div).hide();
  $('.djlogin_message',div).hide();
  $('.djlogin_requiredfield',div).removeClass('djlogin_requiredfield');

  $('#djlogin_login_message',div).show();
  $('#djlogin_loginbutton',div).unbind('click').click(dj._login_submit);
  $('#djlogin_signupbutton',div).unbind('click').click(dj._login_showsignup);
  $('.djlogin_signupbox',div).hide();

}

dj._login_showsignup = function(){
  var div = dj.LOGINHANDLES.loginbox;

  $('.djlogin_errormessage',div).hide();
  $('.djlogin_message',div).hide();
  $('.djlogin_requiredfield',div).removeClass('djlogin_requiredfield');

  $('#djlogin_signup_message',div).show();
  $('#djlogin_loginbutton',div).unbind('click').click(dj._login_showlogin);
  $('#djlogin_signupbutton',div).unbind('click').click(dj._login_signup_submit);

  $('.djlogin_signupbox',div).addClass('djlogin_highlight');
  $('.djlogin_signupbox',div).fadeIn(1500,function(){  
				       $('.djlogin_signupbox',div).removeClass('djlogin_highlight');
				     });


}

dj._login_submit = function (){
    var div = dj.LOGINHANDLES.loginbox;
    var params = dj.LOGINHANDLES.params;

    var email = $('#djlogin_email',div).val();
    var password = $('#djlogin_password',div).val();

    $('.djlogin_errormessage',div).hide();

    var checkval = dj.checkfields({
	        errorclass: 'djlogin_requiredfield',
		errdiv: '#djlogin_required_message',
		parent_obj: div,
		fields: {
		    '#djlogin_email': 'email',
		    '#djlogin_password': '.'
		    }
	});

    if (!checkval) return 1;

    dj.ajax({
	     url: "/loginjson",
	     data: "cmd=login",
	     ref: {'email': email, 'password': password},
	     success: function(r){dj._login_handle_success(r,params)}
	     });
    
}

dj._login_handle_success = function (r,params){
    var div = dj.LOGINHANDLES.loginbox;

    if(r.success){
	dj.clearlogin();
	var successdiv = dj.element('div',{'class': 'djlogin_success'},'body').text('Logged in!');
	dj.floatcenter(successdiv);
	setTimeout(function(){
		       successdiv.fadeOut('slow',function(){successdiv.remove()});
		   },1000);

        dj.callhook('login_success');
	if(params.success) params.success();
    }else{
	if(r.error_code == 'nofields'){
	    dj.error('One or more fields is missing');
	}else if(r.error_code == 'badlogin'){
	    $('#djlogin_badlogin_message',div).show();
	}else{
	    dj.showmessage('Error: ' + r.error_code);
	}

        dj.callhook('login_error');
	if(params.error) params.error();
    }
}

dj.clearlogin = function(){
    var handles = dj.LOGINHANDLES;
    if(handles.loginbox){
       handles.loginbox.remove();
       delete handles.loginbox;
       dj.callhook('login_close');
    }

    if(handles.shade){
       handles.shade.remove();
       delete handles.shade;
    }
    
    delete handles.params;
}

dj._login_signup_submit = function (){
    var div = dj.LOGINHANDLES.loginbox;
    var params = dj.LOGINHANDLES.params;

    $('.djlogin_errormessage',div).hide();
    $('.djlogin_requiredfield',div).removeClass('djlogin_requiredfield');

    var checkval = dj.checkfields({
	        errorclass: 'djlogin_requiredfield',
		errdiv: '#djlogin_required_message',
		parent_obj: div,
		fields: {
		    '#djlogin_email': 'email',
	            '#djlogin_emailconfirm': 'email',
	            '#djlogin_password': '.{5,50}',
	            '#djlogin_passwordconfirm': '.',
	            //'#djlogin_nickname': '.',
	            '#djlogin_firstname': '.',
	            '#djlogin_lastname': '.'
		    }
	});

    if (!checkval) return 1;

    var email = $('#djlogin_email',div).val();
    var emailconfirm = $('#djlogin_emailconfirm',div).val();

    if(email != emailconfirm){
      return dj.showmessage('Emails do not match');
    }

    var password = $('#djlogin_password',div).val();
    var passwordconfirm = $('#djlogin_passwordconfirm',div).val();

    if(password != passwordconfirm){
      return dj.showmessage('Passwords do not match');
    }

    dj.ajax({
	     url: "/loginjson",
	     data: "cmd=signup",
	     ref: {
	        'email': email,
	        'password': password,
	        'firstname': $('#djlogin_firstname',div).val(),
	        'lastname': $('#djlogin_lastname',div).val(),
	        'nickname': $('#djlogin_nickname',div).val()
	       },
	     success: function(r){dj._login_signup_success(r,params)}
	     });
    
}

dj._login_signup_success = function (r,params){
    var div = dj.LOGINHANDLES.loginbox;

    if(r.success){

	dj.clearlogin();
	var successdiv = dj.element('div',{'class': 'djlogin_success'},'body').text('Successfully signed up!');
	dj.floatcenter(successdiv);
	setTimeout(function(){
		       successdiv.fadeOut('slow',function(){successdiv.remove()});
		   },1000);

        dj.callhook('login_success');
        dj.callhook('signup_success');
	if(params.success) params.success();
    }else{
	if(r.error_code == 'custexists'){
	  dj._login_showlogin();
	    $('#djlogin_login_message',div).hide();
	    $('#djlogin_custexists_message',div).show();
	}else{
	    dj.showmessage('Error: ' + r.error_code);
	}

	dj.callhook('login_error');
        dj.callhook('signup_error');
	if(params.error) params.error();
    }
}

