//Functin that reset the login box and open it
function open_close_login_box()
{
	reset_login_status();
	document.getElementById('login_box').target_anchor="";
	document.getElementById('login_box').target_box="";
	document.getElementById('login_box').v_position="";
	document.getElementById('login_box').h_position="";
	show_hide_div('login_box','login_button','bottom','left');
	setTimeout("give_login_focus()",1000);
}

function give_login_focus()
{
  if(document.getElementById('login_box').style.visibility == 'visible' && document.getElementById('login_box').style.display == 'block')
  {
    document.getElementById('login_user').focus();
  }
}

//Login Function
//Receive a boolean parameter.
//true if the user trying to login is a new one
//or false
function login()
{
	var name = document.getElementById("login_user").value;
	var email = document.getElementById("login_email").value;
	var pass = document.getElementById("login_pass").value;
	document.getElementById("login_status").innerHTML = 'Please wait...';
	if (pass != "")
	{
	  //user provided a password
		document.getElementById("login_pass").readOnly = true;
		document.getElementById("login_pass_submit").disabled = true;
		var url = "authentication.php?pass=" + pass ;
		request.open("GET", url, true);
		request.onreadystatechange = updatelogin;
		request.send(null);
	}
	else
	{
	  //user provided name and email
		if ((name != "") && (email != ""))
		{
		  newuser=document.getElementById("login_submit").value;
			document.getElementById("login_user").readOnly = true;
			document.getElementById("login_email").readOnly = true;
			document.getElementById("login_submit").disabled = true;
			if (newuser == 'Yes')
			{
			  //new user
				document.getElementById("login_submit2").disabled = true;
				var url = "authentication.php?name=" + name + "&email=" + email + "&new=true";
				request.open("GET", url, true);
				request.onreadystatechange = CreateAccount;
				request.send(null);
			}
			else
			{
			  //existing user
				var url = "authentication.php?name=" + name + "&email=" + email;
				request.open("GET", url, true);
				request.onreadystatechange = updatelogin;
				request.send(null);
			}
		}
		else
		{
		  //user did not fill every field
			document.getElementById("login_pass").readOnly = false;
			document.getElementById("login_pass_submit").disabled = false;
			document.getElementById("login_user").readOnly = false;
			document.getElementById("login_email").readOnly = false;
			document.getElementById("login_submit").disabled = false;
			document.getElementById("login_status").innerHTML = 'Please fill every field.';
			document.getElementById("login_status").style.color = '#f00';
			document.forms["login_no_password_form"].reset();
			document.forms["login_password_form"].reset();
			document.getElementById("login_user").focus();
			resizeIFrame(document.getElementById("login_box"));
		}
	}
}

//Account creation response from server
function CreateAccount()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			/* Update */
			switch(success)
			{
				case '3':
					break;
				default:
					/* If logged in succesfully */
					document.getElementById("login_status").innerHTML = "You are now loged in with your new account. You must confirm your account within five days, or it will be removed. An email has been sent to you with more details.";
					document.getElementById("login_status").style.color = '#000';
					document.getElementById("login_no_password").style.display= 'none';
					document.getElementById("OK_button").style.display= 'block';
					resizeIFrame(document.getElementById("login_box"));
					var ref= document.URL;
					document.getElementById('login').innerHTML = "Logged in as <a title='Go to your account settings.' href=user.php>" + success +"</a>||<a title='Click here when you are done.' href=logout.php?ref=" + ref + ">Logout</a>";
					if(document.getElementById("account_settings"))
					{
						document.getElementById("account_settings").style.display="inline";
						document.getElementById("account_settings_bottom").style.display="inline";
					}
					break;
			}
		}
 		else
		{
			alert("Error! Request status is " + request.status);
		}
	}
}

//login response from server
function updatelogin()
{
	if (request.readyState == 4)
	{
	  if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			/* Update */
			switch(success)
			{
			  //wrong password
				case '0':
					document.getElementById("login_status").innerHTML = "Incorrect information. Please try again.";
					document.getElementById("login_status").style.color = '#f00';
					document.getElementById("login_pass").readOnly = false;
					document.getElementById("login_pass_submit").disabled = false;
					document.getElementById("login_user").readOnly = false;
					document.getElementById("login_email").readOnly = false;
					document.getElementById("login_submit").disabled = false;
					document.forms["login_no_password_form"].reset();
					document.forms["login_password_form"].reset();
					break;
					
					//account needs a password
				case '1':
					document.getElementById("login_status").innerHTML = "Your account requires a password.";
					document.getElementById("login_no_password").style.display= 'none';
					document.getElementById("login_password").style.display= 'block';
					document.getElementById("login_pass").focus();
					break;
					
					//account not found. Create a new one?
				case '2':
					document.getElementById("login_status").style.color = '#000';
					document.getElementById("login_status").innerHTML = "This account doesn't exist. Do you want to create it?";
					document.getElementById('login_user').readOnly = true;
					document.getElementById('login_email').readOnly = true;
					document.getElementById("login_submit").disabled = false;
					document.getElementById("sub_log").innerHTML ="<input title='Yes' alt='Yes' id='login_submit' TYPE='image' src='"+theme_path+"button_yes.gif' value='Yes'/><input id='login_submit2' title='No' alt='No' TYPE='image' src='"+theme_path+"button_no.gif' onclick=\"reset_login_status();\" />";
					document.getElementById("forgot_password_button").style.display= 'none';
					break;
					
				  //email not valid
				case '4':
					document.getElementById("login_status").innerHTML = "You must provide a valid email.";
					document.getElementById("login_status").style.color = '#f00';
					document.getElementById("login_user").readOnly = false;
					document.getElementById("login_email").readOnly = false;
					document.getElementById("login_submit").disabled = false;
					document.forms["login_no_password_form"].reset();
					document.getElementById("login_user").focus();
					break;
					
					//user is flooding
				case '5':
					document.getElementById("login_status").innerHTML = "<BR>Too many login attempts, try again in 5 minutes.";
					document.getElementById("login_no_password").style.display= 'none';
					document.getElementById("login_password").style.display= 'none';
					document.getElementById("OK_button").style.display= 'block';
					document.getElementById("login_status").style.color = '#f00';
					document.forms["login_no_password_form"].reset();
					document.forms["login_password_form"].reset();
					document.getElementById('login_box').target_box= "";
			    document.getElementById('login_box').target_anchor= "";
			    document.getElementById('login_box').v_position= "";
			    document.getElementById('login_box').h_position= "";
				break;
				
				  //Username is too short
				case '6':
				  document.getElementById("login_status").innerHTML = "Username must be a least 3 characters.";
					document.getElementById("login_status").style.color = '#f00';
					document.getElementById("login_user").readOnly = false;
					document.getElementById("login_email").readOnly = false;
					document.getElementById("login_submit").disabled = false;
					document.getElementById("login_user").focus();
				break;
				
				  //logged in successfully
				default:
				
				  // if administrator
				  if (success == 7 && document.getElementById("new_topic_button"))
				  {
					   document.getElementById("new_blog_entry_checkbox").style.display="inline";
		      }
		      
					document.getElementById("login_status").innerHTML = "Logged in successfuly." ;
					document.getElementById("login_status").style.color = '#000';
					document.getElementById("login_no_password").style.display= 'none';
					document.getElementById("login_password").style.display= 'none';
					document.getElementById("OK_button").style.display= 'block';
					document.getElementById("forgot_password_button").style.display= 'none';
					var ref= document.URL;
					document.getElementById("login").innerHTML = "Logged in as <a title='Go to your account settings.' href=user.php>" + document.getElementById("login_user").value +"</a>||<a title='Click here when you are done.' href=logout.php?ref=" + ref + ">Logout</a>";
					if(document.getElementById("account_settings"))
					{
						document.getElementById("account_settings").style.display="inline";
						document.getElementById("account_settings_bottom").style.display="inline";
					}
					document.getElementById("login_ok").focus();
					break;
			}
			resizeIFrame(document.getElementById("login_box"));
		}
 		else
		{
			alert("Error! Request status is " + request.status);
		}
	}
}

//function that open another box if logged in successfully
function openboxafterlogin()
{
	if(document.getElementById('login_box').target_box != "" && document.getElementById('login_box').target_anchor != "")
	{
	  switch(document.getElementById('login_box').target_box)
	  {
      case "flag" :
        flag_post(document.getElementById('login_box').target_anchor);
      break;
      case "user_page" :
        history.go();
      break;
      default:
        show_hide_div(document.getElementById('login_box').target_box, document.getElementById('login_box').target_anchor, document.getElementById('login_box').v_position, document.getElementById('login_box').h_position);
			 document.getElementById('login_box').target_box= "";
			 document.getElementById('login_box').target_anchor= "";
			 document.getElementById('login_box').v_position= "";
			 document.getElementById('login_box').h_position= "";
      break;
    }
	}
}

//reset the login box
function reset_login_status()
{
	if (document.getElementById('login_info_box').style.display == 'block')
	{
		show_hide_div('login_info_box');
	}
	if (document.getElementById('privacy_box').style.display == 'block')
	{
		show_hide_div('privacy_box');
	}
	document.getElementById("login_status").innerHTML = 'Please enter your login information.';
	document.getElementById("login_status").style.color = '#000';
	document.getElementById("login_no_password").style.display= 'block';
	document.getElementById("login_password").style.display= 'none';
	document.getElementById("forgot_password_button").style.display= 'block';
	document.getElementById("sub_log").innerHTML ='<input src="'+theme_path+'/button_login.gif" id="login_submit" title="Click to login." alt="Click to login." TYPE="image" />';
	document.getElementById("OK_button").style.display= 'none';
	document.getElementById("login_pass").readOnly = false;
	document.getElementById("login_pass_submit").disabled = false;
	document.getElementById("login_user").readOnly = false;
	document.getElementById("login_email").readOnly = false;
	document.getElementById("login_submit").disabled = false;
	document.forms["login_no_password_form"].reset();
	document.forms["login_password_form"].reset();
}

document.onkeydown = function (evt) {
if(BrowserDetect.browser == "Explorer" && document.getElementById('login_box').style.display == 'block' )
{
  var keyCode = evt ? (evt.which ? evt.which : evt.keyCode) : event.keyCode;
  if (keyCode == 13 && (document.getElementById("login_no_password").style.display == 'block' || document.getElementById("login_password").style.display == 'block'))
  {
    login();
  }
}
};

//send email to server to recover login and password
function forgot_password()
{
	var email = document.getElementById("forgot_email").value;
	if (email == "")
	{
		document.getElementById("password_recovery_status").style.color ="#f00";
		document.getElementById("password_recovery_status").innerHTML ="You must provide an email.";
	}
	else
	{
		var url = "ajax-forgot.php?email=" + email;
		request.open("GET", url, true);
		request.onreadystatechange = password_sent;
		request.send(null);
	}
}

//server response for email recovery
function password_sent()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			switch (success)
			{
			  //recovery email sent successfully
				case 'true':
				document.getElementById("password_recovery_status").style.color ="#000";
				document.getElementById("password_recovery_status").innerHTML ="Your login info has been emailed to this address.";
				document.getElementById('send_forgot_email').disabled = true;
				break;
				
				//recovery email could not be sent.
				case 'send_error':
				document.getElementById("password_recovery_status").style.color ="#f00";
				document.getElementById("password_recovery_status").innerHTML ="Sorry, an error occured while processing your request. Please try again later.";
				break;
				
				//not matching user with email address.
				case 'non_existent':
				document.getElementById("password_recovery_status").style.color ="#f00";
				document.getElementById("password_recovery_status").innerHTML ="Sorry, cannot find any matching user.";
				break;
			}
		}
	}
}

//Account confirmation function
function ConfirmAccount()
{
	var email = document.getElementById("confirm_email").value;
	if (email == "")
	{
	  //user did not provide email
		document.getElementById("confirm_status").style.color ="#f00";
		document.getElementById("confirm_status").innerHTML ="You must provide an email.";
	}
	else
	{
		var code = document.getElementById("code").value;
		var url = "ajax-confirm.php?email=" + email + "&code=" + code;
		request.open("GET", url, true);
		request.onreadystatechange = account_confirmed;
		request.send(null);
	}
}

//account confirmation reply from server
function account_confirmed()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			switch (success)
			{
			  //account confirmed successfully
				case 'confirmed':
				document.getElementById("confirm_status").style.color ="#000";
				document.getElementById("confirm_status").innerHTML ="Your account has been confirmed.";
				document.getElementById('confirm_button').disabled = true;
				break;
				
				//expired confirmation code
				case 'invalid':
				document.getElementById("confirm_status").style.color ="#f00";
				document.getElementById("confirm_status").innerHTML ="Sorry, your confirmation code has expired.";
				break;
				
				//wrong email address
				case 'mismatch':
				document.getElementById("confirm_status").style.color ="#f00";
				document.getElementById("confirm_status").innerHTML ="Sorry, the email you provided doesn't match this confirmation";
				break;
				
				//server problem
				case 'db_error':
				document.getElementById("confirm_status").style.color ="#f00";
				document.getElementById("confirm_status").innerHTML ="Sorry, an error occured while processing your request. Please try again later.";
				break;
			}
		}
	}
}

function checkzipcode()
{
	var zip=document.getElementById("zip_input").value;
	if(zip.length == 5)
	{
	  document.getElementById("zip_input").disabled=true;
		var url = "ziplookup.php";
		request.open("POST", url, true);
		request.onreadystatechange = zipresult;
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		request.send("zip=" + zip);
	}
}

function zipresult()
{
	if (request.readyState == 4)
	{
	   if (request.status == 200)
		{
		  document.getElementById('zip_input').disabled = false;
			var success = request.responseText;
			if (success == 'not_found')
			{
				document.getElementById('zip_result').style.color="#f00";
				document.getElementById('zip_input').style.border="#f00 solid 1px";
				document.getElementById('zip_result').innerHTML="Invalid zip code.";
			}
			else
			{
				document.getElementById('zip_result').style.color="#000";
				document.getElementById('zip_input').style.border="#888 solid 1px";
				document.getElementById('zip_result').innerHTML=success;
			}
		}
	}
}
