// JavaScript Document
// Author Evert Pieterse, Bulbecks Ltd 2010
// some additions by Juice, Bulbecks LTD 2010

// user wants to create a new account
// alsoAddToFavs indicates whether or not
function CreateUserAccount()
{
	// general variable for handling messages
	var errMSG = "";


	// check email address is valid
	var theEmail = document.createAccount.newEmail.value;

	errMSG = SimpleCheckValidEmail(theEmail);

	// check passwords match
	var thePWD = document.createAccount.newPass.value;
	var thePWD2 = document.createAccount.newPass2.value;
	
	if (thePWD == "")
	{errMSG = "Please enter a password" + "\n"}
	
	if (thePWD != thePWD2)
	{errMSG = "Passwords don't match" + "\n"}
	

	var agreePrivacy = document.getElementById("readAndAgree").checked;
	if (!document.getElementById("readAndAgree").checked)
	{errMSG = "You must agree to our Privacy Notice to create an account" + "\n";}   

	var oErrMsg = document.getElementById("uFeedBack");
	oErrMsg.childNodes[0].nodeValue = errMSG;

	// if there are no errors, try to create account
	if (errMSG == "")
	{
		errMSG = tryCreateAccount(theEmail, thePWD);
		oErrMsg.childNodes[0].nodeValue = errMSG;

		if (errMSG == "Account created")
		{
			// log the user in(by filling in the login form and submitting)
			document.loginAccount.email.value = theEmail;
			document.loginAccount.pass.value = thePWD;

			LoginUser();
		}
	
	
	}

}

// user wants to login to their account
function LoginUser()
{
	// general variable for handling messages
	var errMSG = "";

	
	// check email address is valid
	var theEmail = document.loginAccount.email.value;
	var thePWD = document.loginAccount.pass.value;

	errMSG = SimpleCheckValidEmail(theEmail);

	if (errMSG == "")
	{
		// email address is correct format then
		errMSG = tryLoginUser(theEmail, thePWD);
	}

	// if login successful then close dialog box
//	if (errMSG != 'Email or password incorrect' && errMSG != 'Error retrieving account' )
	if (errMSG == 'Login successful')
	{
		var oCurtain = document.getElementById("lnkCurtain");
		var oLogin = document.getElementById("divLogin");
		
		// close elements
		ElementDisplay(new Array(oCurtain,oLogin),"none");

		// reload page - because if they try to view their favourites the list will be empty
		window.location.reload();
	}
	else
	{
		var oErrMsg = document.getElementById("pFeedBack");
		oErrMsg.childNodes[0].nodeValue = errMSG;
		errMSG = -1;
	}

	//return errMSG; // if the user has requested that this building is added to favs and is trying to login at the same time, this will be their user ID
}

function SimpleCheckValidEmail(emailToCheck)
{
	
	var AtPos = emailToCheck.indexOf("@");
	var StopPos = emailToCheck.lastIndexOf(".");
	var errMSG = "";
	
	if (emailToCheck == "") {
	errMSG = "Not a valid Email address" + "\n";
	}
	
	if (AtPos == -1 || StopPos == -1) {
	errMSG = "Not a valid email address" + "\n";
	}
	
	if (StopPos < AtPos) {
	errMSG = "Not a valid email address" + "\n";
	}
	
	if (StopPos - AtPos == 1) {
	errMSG = "Not a valid email address" + "\n";
	} 
	
	return errMSG;
}

// add building tofavourites
function AddToFavs(building_id)
{
	// IF BUILDING ID = -1 THEN USER NOT LOGGED IN
	// so let them logon
	if (building_id == '-1')
	{
		var oCurtain = document.getElementById("lnkCurtain");
		var oLogin = document.getElementById("divLogin");
		ElementDisplay(new Array(oCurtain,oLogin),"block");
	}


	var errMSG = "an error occurred";

	errMSG = tryAddBuilding(building_id);
//		alert(errMSG);
	if (errMSG != "Could not add building - please login first.")
	{
		// need to reload page, in case they ask to look at their favourites
		window.location.reload();		
	}
}

// need to login and add to favourites
function AddToFavsAndLogin(building_id)
{

	var errMSG = "an error occurred";

	errMSG = tryAddBuilding(building_id);
//		alert(errMSG);
	if (errMSG != "Could not add building - please login first.")
	{
		// need to reload page, in case they ask to look at their favourites
		window.location.reload();		
	}
}


//change the display property
function ElementDisplay(Elements,Value){
	for(var i = 0;i<Elements.length;i++){
		Elements[i].style.display = Value;	
	}
}

//handle multiple onload events
function addLoadEvent(func) { 
  var oldonload = window.onload; 
  if (typeof window.onload != 'function') { 
    window.onload = func; 
  } else { 
    window.onload = function() { 
      if (oldonload) { 
        oldonload(); 
      } 
      func(); 
    } 
  } 
} 

//handle the dom bits of the favourites scripts
function InitFavs(){
		//define elements
		var oLoginLink = document.getElementById("lnkLogin");
		var oFavsLink = document.getElementById("lnkFavs");
//		var oFavsLoginLink = document.getElementById("lnkAddToFavsLogin");
		
		var oLoginCloseLink = document.getElementById("lnkLoginClose");
		var oFavsCloseLink = document.getElementById("lnkFavsClose");
		var oCurtain = document.getElementById("lnkCurtain");
		var oLogin = document.getElementById("divLogin");
		var oFavs = document.getElementById("divFavs");
		
		// close elements
		oCurtain.onclick = oLoginCloseLink.onclick = oFavsCloseLink.onclick = function(){
			this.blur();
			ElementDisplay(new Array(oCurtain,oLogin,oFavs),"none");
			return false;
		}
		
		// set up login link
		oLoginLink.onclick = function()
		{
			// this function is also used to log the user out, so let's check this first
			var errMSG;
			errMSG = tryIsUserLoggedIn();
			if (errMSG == 'TRUE')
			{
				// their user session variable has been ended, so reload window
					window.location.reload();
			} 
			this.blur();
			ElementDisplay(new Array(oCurtain,oLogin),"block");
			return false;
		}
		
//		oFavsLoginLink.onclick = function(){
//			this.blur();
//			ElementDisplay(new Array(oCurtain,oLogin),"block");
//			return false;
//		}
				
		oFavsLink.onclick = function(){
			this.blur();
			ElementDisplay(new Array(oCurtain,oFavs),"block");
			return false;
		}


}


//returns the XmlHttpObject or null if not available
function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
    {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
  catch (e)
    {
    // Internet Explorer
    try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
    catch (e)
      {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
  return xmlHttp;
};


// try to create an account for this user
function tryCreateAccount(email, pwd)
{
	
		var xmlHttp = GetXmlHttpObject();
		
		//if ajax is available, get the data
		if(xmlHttp != null)
		{
			xmlHttp.open("GET","/public/london/find/scripts/createNewAccount.asp?email=" + email +"&pwd=" + pwd,false);

			xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
					// success
				}
			};
			xmlHttp.send(null);
		}
		else
		{
			targetSpan.innerHTML = "Browser not AJAX enabled";
		}


	return xmlHttp.responseText;
};


// try to create an account for this user
function tryLoginUser(email, pwd)
{
		var xmlHttp = GetXmlHttpObject();
		
		//if ajax is available, get the data
		if(xmlHttp != null)
		{
			xmlHttp.open("GET","/public/london/find/scripts/loginUser.asp?email=" + email +"&pwd=" + pwd,false);

			xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
					// success
				}
			};
			xmlHttp.send(null);
		}
		else
		{
			targetSpan.innerHTML = "Browser not AJAX enabled";
		}


	return xmlHttp.responseText;
};


function tryAddBuilding(building_id)
{

		var xmlHttp = GetXmlHttpObject();
		
		//if ajax is available, get the data
		if(xmlHttp != null)
		{
			xmlHttp.open("GET","/public/london/find/scripts/addtofavs.asp?id=" + building_id,false);

			xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
					// success
				}
			};
			xmlHttp.send(null);
		}
		else
		{
			targetSpan.innerHTML = "Browser not AJAX enabled";
		}


	return xmlHttp.responseText;
	
}


// try to create an account for this user
function tryIsUserLoggedIn()
{
	
		var xmlHttp = GetXmlHttpObject();
		
		//if ajax is available, get the data
		if(xmlHttp != null)
		{
			xmlHttp.open("GET","/public/london/find/scripts/isUserLoggedIn.asp",false);

			xmlHttp.onreadystatechange=function()
			{
				if(xmlHttp.readyState==4)
				{
					// success
				}
			};
			xmlHttp.send(null);
		}
		else
		{
			targetSpan.innerHTML = "Browser not AJAX enabled";
		}


	return xmlHttp.responseText;
};

addLoadEvent(InitFavs);
