// function to get json object for whether the user is logged in
function is_logged_in(callback){
	var url = "index.php?action=ajax";
	var pars = 'rs=wfCheckUserLoginJSONnew';
	if (callback && callback !="") {
		pars += "&rsargs[]="+callback;
	}
	var sUrl = server_to_use + "/" + url + "&" + pars;
	getDataFromServer("checkLogin",sUrl);
		
}

function is_logged_in_user(){
	if ( getCookie("searchUserID") > 0 || typeof( wgUserName ) == "string"   ) {
		return true;
	}
	return false;
}

function log_in_required( return_to ){
	if( ! is_logged_in_user() ){
		window.location=search_server_to_use+"login.html" + (( return_to )?"?return=" + return_to:"");
		return false;
	}
}

var ip = "";
function setLoginCookie(logged_in_info) {
	if (logged_in_info) {
		if(logged_in_info.is_logged_in && !is_IP(unescape(logged_in_info.user_name))) {
			var myDate = new Date();
			myDate.setDate(myDate.getDate()+30);
			var myTime = new Date();
			myTime.setMinutes(myTime.getMinutes()+ 10 );
			
			//clear first in case user was doing anything logged out
			deleteCookie("wikiaSearchTime", '/');
			deleteCookie("wikiaSearchTokenNew", '/');
			
			setCookie("wikiaSearchTokenNew", logged_in_info.hash, myTime, '/');
			setCookie("wikiaSearchTime", logged_in_info.time, myTime, '/');
			
			//cookies from wikia.com are Http Only..so we need to set our own
			deleteCookie("searchUserName", '/');
			deleteCookie("searchUserID", '/');
			
			setCookie("searchUserName", logged_in_info.user_name, myDate, '/');
			setCookie("searchUserID", logged_in_info.user_id, myDate, '/');
			
			if ( logged_in_info.adminhash ) setCookie("wikiaSearchAdminToken", logged_in_info.adminhash, myDate, '/');
			
			tok = getCookie("wikiaSearchTokenNew");
			un = decodeURIComponent( logged_in_info.user_name );
			isAdmin = getCookie("wikiaSearchAdminToken");
			check_notifications();
		}
		else {
			var myTime = new Date();
			myTime.setMinutes(myTime.getMinutes()+ 10 );
			
			logged_in_info.is_logged_in=false;
			deleteCookie("wikiaSearchTokenNew", '/');
			deleteCookie("wikiaSearchTime", '/');
			setCookie("wikiaSearchTime", logged_in_info.time, myTime, '/');
			deleteCookie("wikiaSearchAdminToken", '/');
			deleteCookie("wikicitiesUserName", '/');
			deleteCookie("wikicitiesUserId", '/');

			deleteCookie("searchUserName", '/');
			deleteCookie("searchUserID", '/');
			
			setCookie("wikiaSearchTokenNew", logged_in_info.hash, myTime, '/');
			tok = logged_in_info.hash;
			ip = logged_in_info.IP;
			check_notifications();
			un = false;
			isAdmin = false;
			set_header_loggedin();
		}
	}
	else {
		deleteCookie("wikiaSearchTokenNew",'/');
		deleteCookie("wikiaSearchTime",'/');
		deleteCookie("wikiaSearchAdminToken", '/');
		deleteCookie("wikicitiesUserName", '/', "wikia.com");
		deleteCookie("wikicitiesUserID", '/', "wikia.com");
		deleteCookie("searchUserName", '/');
		deleteCookie("searchUserID", '/');
		tok = false;
		un = false;
		isAdmin = false;
		set_header_loggedin();
	}
	
}                             

// default callback function for is_logged_in
// will output login form if not logged in, and logged in message if logged in
function handle_user_logged_in(logged_in_info) {
	var return_str = "";

	var not_logged_in_str = get_login_form();
	if (logged_in_info) {
		var qParams = location.href.toQueryParams();
		var return_page = (qParams["return"] ? qParams["return"] : false);
		if (logged_in_info.is_logged_in && return_page) location.href=return_page;
		
		if(logged_in_info.is_logged_in) {
		    return_str = getspan("You are logged in as")+" " + logged_in_info.user_name
			+ ". <div class=\"login-links\"><a href=\"#\" onclick=\"do_json_logout()\">"
			+ getspan("Logout")+"</a>"
			+ " - <a href=\""+search_server_to_use+"profile.html\">"+getspan("Profile")+"</a></div>";
		}
		else return_str += not_logged_in_str;
	}
	else return_str += not_logged_in_str;
	
	if (document.getElementById("login-form")) document.getElementById("login-form").innerHTML = return_str;
	else location.href= search_server_to_use + "login.html";
}

//function to return html for the login form
function get_login_form() {
	var return_str = "";
	
	return_str += '<form id=\"login-form-js\" onsubmit="return do_json_login();">';
	return_str += '<h2>'+getspan('Sign In to your Account')+'</h2>';
		return_str += '<div class="login-input login-fix">';
		return_str += getspan("Want to Join?")+" <b><a href=\""+search_server_to_use+"register.html\">"+getspan("Sign Up")+"</a></b>.";
		return_str += '</div>';
		return_str += '<div class="login-input"><b>'+getspan('Username')+'</b><input type="text" id="wpName" name="wpName"/></div>';
		return_str += '<div class="login-input"><b>'+getspan('Password')+'</b><input type="password" id="wpPassword" name="wpPassword"/></div>';
		return_str += '<input type="checkbox" id="wpRemember" name="wpRemember" /> '+getspan('Remember me on this computer');
		return_str += '<div class="login-submit"><input type="submit" id="login_btn" value="'+getspan('Submit', {id:'login_btn', param:'value'})+'"/><span class="forgot-password"><a href=\"#\" onclick=\"javascript:email_password()\">'+getspan('Don\'t remember your password?')+'</a></span><input type=\"hidden\" id=\"wpMailmypassword\" name=\"wpMailmypassword\" value=\"\"/></div>';
	return_str += '</form>';
	
	return return_str;
}

// function to logout
function do_json_logout(callback){
		deleteCookie("wikiaSearchTokenNew",'/');
		deleteCookie("wikiaSearchAdminToken", '/');
		deleteCookie("wikicitiesUserName", '/', "wikia.com");
		deleteCookie("searchUserName", '/');
		deleteCookie("searchUserID", '/');
		tok = false;
		un = false;
		isAdmin = false;
		
		var url = "api.php?action=logout"
		var pars = "format=json&callback=is_logged_in"
		var sUrl = server_to_use + "/" + url + "&" + pars;
		getDataFromServer("checkLogin",sUrl);
}

function reguired_field_check( field ){
	error = ""
	if( !document.getElementById(field).value ){
		$(field).style.border = "2px solid red";
		error = field;
	}else{
		$(field).style.border = "";
	}
	
	return error
}

function json_login_validate(){
	error = "";
	error += reguired_field_check("wpName");
	error += reguired_field_check("wpPassword");
	 
	return error;
}

// function to make email pass call
function email_password(){
	
	$("login-form-js").action = server_to_use + "/wiki/Special:Userlogin"
	$("login-form-js").method = "POST";
	$("wpMailmypassword").value = "true"
	$("login-form-js").submit();
	
}

function reset_password_redirect(){
	$("login-form-js").action = server_to_use + "/wiki/Special:Userlogin"
	$("login-form-js").method = "POST";
	$("login-form-js").submit();
}

// function to make call to login
function do_json_login(){

	var user_name = document.getElementById("wpName").value;
	var password = document.getElementById("wpPassword").value;
	
	var remember = ((document.getElementById("wpRemember").checked) ? 1:0);

	json_login_validate()
	
	//document.getElementById("wpPassword").value = "";
	
	// set value of variable for iframe to redirect to on completion of actions on server side
	// if param was set from previous return, only take url without querystring
	var return_to = frames["loginframe"].location.href;
	if (return_to.indexOf("?loggedinas=") > 0) return_to = return_to.substring(0, return_to.indexOf("?loggedinas="));
	
	// set each field in the iframe_form to the local var from fields in page; set action and submit 
	frames["loginframe"].document.forms[0].wpName.value=user_name;
	frames["loginframe"].document.forms[0].wpPassword.value=password;
	frames["loginframe"].document.forms[0].wpRemember.value=remember;
	frames["loginframe"].document.forms[0].wpSourceForm.value=return_to;
	frames["loginframe"].document.forms[0].action=server_to_use + "/index.php?action=ajax&rs=wfDoLoginJSONPost"
	frames["loginframe"].document.forms[0].submit();
	
	// since this function is an onsubmit, need to return false
	return false;
}


function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toUTCString() : "") +
      ((path) ? "; path=" + path : "");
      if(domain) curCookie+= "; domain=" + domain;

      curCookie += ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

// this deletes the cookie when called
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ){
		var curCookie = name + "=" +
		( ( path ) ? ";path=" + path : "");
		if(domain) curCookie+= "; domain=" + domain;

		curCookie+=";expires=Thu, 01-Jan-1970 00:00:01 GMT";
		document.cookie = curCookie;
	}
}


function getCookie(name)
{ // cookie grabber
        var C = document.cookie.split("; ");
        for (i=0; i < C.length; i++)
        {
                kv = C[i].split("=");
                if(kv[0] == name){ return unescape(kv[1].replace(/\+/g, "%20")); }
        }
        return false;
}

