// 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=wfCheckUserLoginJSON';
		if (callback && callback !="") {
			pars += "&rsargs[]="+callback;
		}
		var sUrl = server_to_use + "/" + url + "&" + pars;
		getDataFromServer("checkLogin",sUrl);
		
}

function log_in_required( return_to ){
	if( getCookie("wikicitiesUserName")=="" ){
		window.location=search_server_to_use+"login.html" + (( return_to )?"?return=" + return_to:"");
		return false;
	}
}

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);
			
			setCookie("wikiaSearchToken", logged_in_info.hash, myDate, '/');
			setCookie("wikicitiesUserId", logged_in_info.user_id, myDate, '/');
			setCookie("search_logged_in", true, myDate, '/', 'wikia-inc.com');
			setCookie("search_user_name", logged_in_info.user_name, myDate, '/');
			setCookie("search_user_id", logged_in_info.user_id, myDate, '/');
			if ( logged_in_info.adminhash ) setCookie("wikiaSearchAdminToken", logged_in_info.adminhash, myDate, '/');
			
			tok = getCookie("wikiaSearchToken");
			un = decodeURIComponent( getCookie("wikicitiesUserName") );
			isAdmin = getCookie("wikiaSearchAdminToken");
		}
		else {
			logged_in_info.is_logged_in=false;
			deleteCookie("wikiaSearchToken", '/');
			deleteCookie("wikiaSearchAdminToken", '/');
			deleteCookie("wikicitiesUserName", '/');
			deleteCookie("wikicitiesUserId", '/');
			deleteCookie("search_logged_in", '/');
			deleteCookie("search_user_name",'/');
			deleteCookie("search_user_id",'/');
			tok = false;
			un = false;
			isAdmin = false;
			set_header_loggedin();
		}
	}
	else {
		deleteCookie("wikiaSearchToken",'/');
		deleteCookie("wikiaSearchAdminToken", '/');
		deleteCookie("wikicitiesUserName", '/');
		deleteCookie("wikicitiesUserId",'/');
		deleteCookie("search_logged_in",'/');
		deleteCookie("search_user_name",'/');
		deleteCookie("search_user_id",'/');
		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 = gettext("You are logged in as")+" " + logged_in_info.user_name
			+ ". <div class=\"login-links\"><a href=\"#\" onclick=\"do_json_logout()\">"
			+ gettext("Logout")+"</a>"
			+ " - <a href=\""+search_server_to_use+"profile.html\">"+gettext("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 onsubmit="return do_json_login();">';
	return_str += '<h2>'+gettext('Sign In to your Account')+'</h2>';
		return_str += '<div class="login-input login-fix">';
		return_str += gettext("Want to Join?")+" <b><a href=\""+search_server_to_use+"register.html\">"+gettext("Sign Up")+"</a></b>.";
		return_str += '</div>';
		return_str += '<div class="login-input"><b>'+gettext('Username')+'</b><input type="text" id="wpName" name="wpName"/></div>';
		return_str += '<div class="login-input"><b>'+gettext('Password')+'</b><input type="password" id="wpPassword" name="wpPassword"/></div>';
		return_str += '<input type="checkbox" id="wpRemember" name="wpRemember" /> '+gettext('Remember me on this computer');
		return_str += '<div class="login-submit"><input type="submit" id="login_submit_btn"'+
		    ' value="'+gettext('Submit', {id:'login_submit_btn',param:'value'})+'" />';
		return_str += '<span class="forgot-password"><a href=\"#\" onclick=\"javascript:email_password()\">'+
		    gettext('Don\'t remember your password?')+'</a></span></div>';
	return_str += '</form>';
	
	return return_str;
}

// function to logout
function do_json_logout(callback){
		deleteCookie("wikiaSearchToken",'/');
		deleteCookie("wikiaSearchAdminToken", '/');
		//setCookie("wikicitiesUserName", "");
		deleteCookie("wikicitiesUserId",'/');
		deleteCookie("search_logged_in",'/');
		deleteCookie("search_user_name",'/');
		deleteCookie("search_user_id",'/');
		
		tok = false;
		un = false;
		isAdmin = false;
		
		var url = "index.php?action=ajax";
		var pars = 'rs=wfDoLogoutJSON';
		if (callback && callback !="") {
			pars += "&rsargs[]="+callback;
		}
		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(){
	var user_name = document.getElementById("wpName").value;
	var return_to = frames["loginframe"].location.href;
	
	if (return_to.indexOf("?loggedinas=") > 0) return_to = return_to.substring(0, return_to.indexOf("?loggedinas="));

	var url = "index.php?action=ajax";
	var pars = 'rs=wfDoEmailPassword';
	pars += "&rsargs[]="+user_name+"&"+return_to;
	
	var sUrl = server_to_use + "/" + url + "&" + pars;
	getDataFromServer("emailPassword",sUrl);
}

// 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.toGMTString() : "") +
      ((path) ? "; path=" + path : "");
      if(domain) curCookie+= "; domain=" + domain;
      else {
	      if (window.location.href) {
		      var s_domain=window.location.href.split('/'); 
		      s_d_string = s_domain[2];
		      s_d_string = s_d_string.substr(s_d_string.lastIndexOf(".", s_d_string.lastIndexOf(".")-1));
		      curCookie+= "; domain=" + s_d_string;
		      //alert(s_d_string);
	      }
      }
      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;
		      else {
			      if (window.location.href) {
				      var s_domain=window.location.href.split('/'); 
				      s_d_string = s_domain[2];
				      s_d_string = s_d_string.substr(s_d_string.lastIndexOf(".", s_d_string.lastIndexOf(".")-1));
				      curCookie+= "; domain=" + s_d_string;
				      //alert(s_d_string);
			      }
		      }
		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;
}

