/*
 * Main Authentication class. 
 * responsible for:
 *  -Login
 *  -Logout
 *  -Login status
 *  -Registration
 * 
 * written by: Blaine O'Brien
 * 
 */
$(document).ready(function () {
	    $(document).bind("authStatus", function(response){NICK.utils.doLog("authStatus: loggedIn: " + NICK.userData.loggedIn);})
	    NICK.login.doNickCheck();
});

NICK.namespace("login.forgot");

var nickLoginUrl = 'http://'+ NICK.utils.getNickDomain() +'/common/login/check.jhtml';
var nickRegUrl = 'http://'+ NICK.utils.getNickDomain() +'/common/registration/register.jhtml';
var nickAuthQuestionUrl = 'http://'+ NICK.utils.getNickDomain() +'/registration/data_files/getUserQuestion.jhtml';
var nickAuthAnswerUrl = 'http://'+ NICK.utils.getNickDomain() +'/registration/data_files/verify_answer.jhtml';
var nickPrepGamesUrl = 'http://'+ NICK.utils.getNickDomain() +'/nicktropolis/game/data/prep_games_js.jhtml';

NICK.login.doNickCheck = function() {
	if(NICK.userData == undefined){
 		var params = {
 	 			'res':'js',
 	 			'login_type':'LOGIN_CHECK'
 	 		}; 
 		NICK.request.doRequest({
 			dataType:"jsonp",
 			url: nickLoginUrl,
 			data: params,
 			onSuccess: function(response) {
 				NICK.utils.doLog("doNickCheck: onSuccess : " + response.nickName);
 				NICK.userData = response;
 				$(document).trigger("authStatus", response); 
 			},
 			onFail: function(errors) {
 				for(var error in errors) {
 					NICK.utils.doLog("doNickCheck: error: "+error+" - "+errors[error]);
 				}
 			}				
 		});
 	
	}else{
		$(document).trigger("authStatus");
	}
	

	//var nickLoginUrl = 'http://'+ NICK.utils.getNickDomain() +'/common/login/check.jhtml';
	//NICK.moojax.json.doRequest(nickLoginUrl, params, this.handleNickCheck.bind(this));
}

NICK.login.doLogIn = function(data) {
	NICK.utils.doLog("doLogIn!");

	var params = {
			'res':'js',
 			'screenName':data.username,
 			'password': data.password
 		}; 
	NICK.request.doRequest({
		dataType:"jsonp",
		url: nickLoginUrl,
		data: params,
		onSuccess: function(response) {
			NICK.utils.doLog("doLogIn: onSuccess : " + response.loggedIn);
			NICK.userData = response;
			for(var i in response){ NICK.utils.doLog('doLogIn: userData: ' + i); }

			if(response.loggedIn == "true"){
				$(document).trigger("loggedIn", response);
				NICK.login.prepGamesServer();
				NICK.overlay.close();
			}else{
				$(document).trigger("logInFail");
			}
		},
		onFail: function(errors) {
			NICK.utils.doLog("doLogIn: onFail");
			for(var error in errors) {
				NICK.utils.doLog("doLogIn: error: "+error+" - "+errors[error]);
			}
		}				
	});
}

NICK.login.doLogOut = function() {
	var params = {
			'res':'js',
	 		'forceLogout':'true'
	 		}; 
	NICK.request.doRequest({
			dataType:"jsonp",
			url: nickLoginUrl,
			data: params,
			onSuccess: function(response) {
				NICK.utils.doLog("doLogOut: onSuccess : " + response.loggedIn);
				NICK.userData = response;
				$(document).trigger("loggedOut", response); 
			},
			onFail: function(errors) {
				for(var error in errors) {
					NICK.utils.doLog("doLogOut: error: "+error+" - "+errors[error]);
				}
			}				
		});    	
}

NICK.login.doRegister = function(regdata) {
	var params = regdata; 
	params.res = 'js';
	params.trylogin = 'true';
     	
    	NICK.request.doRequest({
			dataType:"jsonp",
		url: nickRegUrl,
		data: params,
		onSuccess: function(response) {
			NICK.utils.doLog("doRegister: onSuccess : ");
			if(response.success =="true"){
				doRegSuccess(response, regdata);
			}else{
				doRegFail(response, regdata);
			}
		},
		onFail: function(errors) {
			for(var error in errors) {
				NICK.utils.doLog("doRegister: error: "+error+" - "+errors[error]);
			}
		}				
	});
}  
NICK.login.forgot.questionData = "";

NICK.login.forgot.submitAuthQuestion = function() {
	
	NICK.utils.doLog("submitAuthQuestion");
	if($("#getQuestionDiv").css("display") != "none"){
		NICK.login.forgot.submitNickname();
	}else{
		NICK.login.forgot.submitAnswer();
	}
	
};

NICK.login.forgot.submitNickname = function(){
	NICK.overlay.loadingToggle();
	
	var username = $('#usernameField').val();
	NICK.utils.doLog("submitNickName: ["+username+"]");
	if(NICK.utils.isEmptyString(username)) {
		NICK.overlay.loadingToggle();
		$("#failMsg").show().html("Incorrect NickName");
		return;
	}

	var params = {
		'username':$('#usernameField').val(),
		'showComments':'false',
		'responseType':'json'
	 }; 
    NICK.request.doRequest({
		dataType:"jsonp",
		url: nickAuthQuestionUrl,
		data: params,
		onSuccess: function(response) {
    		NICK.overlay.loadingToggle();
			NICK.utils.doLog("response question:"+ response.question);
			if(response.questionid != "null"){
				NICK.login.forgot.questionData  = response
				$("#secretQuestion").html(response.question);
				$("#getQuestionDiv").hide();
				$("#getAnswerDiv").show();
				$("#failMsg").hide();
			}else{
				$("#failMsg").show().html("Incorrect NickName");
			}
		},
		onFail: function(errors) {
			NICK.overlay.loadingToggle();
			for(var error in errors) {
				NICK.utils.doLog("submitNickname: error: "+error+" - "+errors[error]);
			}
		}				
	});
}
NICK.login.forgot.submitAnswer = function(){
	NICK.overlay.loadingToggle();
	
	NICK.utils.doLog("submitAnswer");
	var answer = $("#answerField").val();
	if(NICK.utils.isEmptyString(answer)) {
		NICK.overlay.loadingToggle();
		$("#failMsg").show().html("Incorrect Answer");
		return;
	}

	var params = {
		'username':NICK.login.forgot.questionData.username,
		'questionid':NICK.login.forgot.questionData.questionid,
		'answer':answer,
		'responseType':'json'
	 }; 
    NICK.request.doRequest({
		dataType:"jsonp",
		url: nickAuthAnswerUrl,
		data: params,
		onSuccess: function(response) {
    		NICK.overlay.loadingToggle();
			NICK.utils.doLog("response valid:"+ response.valid);
			if(response.valid == "true"){
				$("#failMsg").hide();
				$("#getAnswerDiv").hide();
				$(".o_popup_forgot .actions").hide();
				$('#yourPassword').show().html("Your password is: "+response.password);
			}else{
				$("#failMsg").show().html("Incorrect Answer");
			}
		},
		onFail: function(errors) {
			NICK.overlay.loadingToggle();
			for(var error in errors) {
				NICK.utils.doLog("submitAnswer: error: "+error+" - "+errors[error]);
			}
		}				
	});
	
}

NICK.login.prepGamesServer = function(){
	 NICK.request.doRequest({
		dataType:"jsonp",
		url: nickPrepGamesUrl,
		onSuccess: function(response) {
    		NICK.utils.doLog("Prep game server completed.");
		},
		onFail: function(errors) {
			for(var error in errors) {
				NICK.utils.doLog("Prep Game: error: "+error+" - "+errors[error]);
			}
		}				
	});
}
