﻿var loginAttempt = false;
var screensaverLink = "screensaver/BingAroundTheWorldScreensaver.exe";
var imageSrc = "handlers/tracker.ashx?event={0}&nocache=" + (new Date()).getTime();
var watermarkStrings = { registerEmail : "email",
						 registerPersonalEmail : "email",
						 loginEmail : "email",
						 loginPersonalEmail : "email",
						 answer : "enter your answer here",
						 answerPersonal : "enter your answer here"
					   };

$(document).ready(function(){
	
	CountMe("Page Load");
	CountMe("newtestdocload");
	
	$("body").bind("DOMAttrModified", function() {
		$(this).attr("style", "");
	});	
	
	SetWatermarks();
	
	var value = GetCookieValue("baw1");
	if(value != null && value != "") // Do login
		$.get("handlers/login.ashx", { logindetail : value, nocache : (new Date()).getTime() }, ReceiveLoginResponse);
	else // Load in the anon map pins
	{
		// Check for session login
		$.get("handlers/login.ashx", { logincheck : true, nocache : (new Date()).getTime() }, ReceiveLoginResponse);
		ShowAnonymousPage();
	}
	
	$("#installSearch").click(function(){
		CountMe("Install Search Defaults");
		window.external.AddSearchProvider("setDefaults.xml");
	});
	
	$("#submitAnswerButtonAnonymous").click(function(){
		AnswerFormSubmit();
	});
	
	$("#submitAnswerButtonPersonal").click(function (){
		AnswerFormPersonalSubmit();
	});
	
	$("#submitLogin").click(function(){
		LoginFormSubmit();
	});
	
	$("#submitLoginPersonal").click(function(){
		LoginPersonalFormSubmit();
	});
	
	$("#submitRegister").click(function(){
		RegisterFormSubmit();
	});
	
	$("#registerPersonalSubmit").click(function(){
		RegisterPersonalFormSubmit();
	});
	
	$("#signout").click(function(){
		// Reset to initial status
		//JBT("SignOut clicked");
		member = false;
		answer = -1;
		$("#signout, #myaccount, #personalAnswerAlreadySubmitted, #personalAnswerSubmitted, .answerCorrect").hide();
		//Delete cookie
		//JBT("SignOut sending request: delete cookie");
		$.get("handlers/login.ashx", { deletecookie : true, nocache : (new Date()).getTime() }, ReceiveLoginResponse);
		//JBT("SignOut sending request: tracking");
		CountMe("Sign out");
		//JBT("SignOut showing anonymous page");
		ShowAnonymousPage();
		//JBT("SignOut finished");

	});
	
	$("#myaccount").click(function(){
		CountMe("My Account");
		window.location = "editdetails.aspx";
	});
	
	$(".sendToAFriend").click(function(){
		CountMe("Send to a Friend");
		window.location = "sendToFriend.aspx";
	});
	
	// Access Anoynmous content
	$(".logo").click(function (){
		ShowAnonymousPage();
		CountMe("Bing Logo Top Left");
	});
	
	// Pushpin search box has a magnifying glass button!
	$(".searchMagIcon").live("click", function(){
		SearchBingWithText($(".searchField")[0].value);
	});
		// Handle pressing enter in an input of a form
	$("#answer, #loginPassword, #loginEmail"
	+", #loginPersonalPassword, #loginPersonalEmail"
	+", #loginRemember, #loginPersonalRemember"
	+", #registerPassword, #registerEmail, #registerRemember"
	+", #registerPersonalPassword, #registerPersonalEmail, #registerPersonalRemember").keypress(ListenForKeypress);

	// Trying to access Member area
	$(".myPersonalTab").click(function (){
		ShowPersonalPage();
		CountMe("Personal Tab");
	});
	
	$(".loginButton").click(function(){
		$("#submitLoginPersonalField").show();
		$("#submitQuestions").hide();
		$(".submitAnswerField").hide();
		$("#submitRegisterPersonalField").hide();
	});
	
	$(".registerButton").click(function(){
		if(!member)
			$("#submitRegisterPersonalField").show();
		$(".submitAnswerField, #submitLoginPersonalField").hide();
		$("#submitQuestions").hide();
	});
		
	$(".downloadScreensaver").click(function(){
		CountMe("Screensaver Download");
		window.open(screensaverLink);
	});
	
});

function ShowPersonalPage()
{
	$("#myPersonalBingMapHeader").show();
	$("#header").hide();
	$("#myMapHero").show();
	if(member)
	{
		$.get("handlers/mapping.ashx", { type : "personal", nocache : (new Date()).getTime() }, ReceiveMappingResponse);
		$("#signout, #myaccount").show();
		if(answer < 1)
		{
			$("#answerPersonalField, .submitAnswerField").show();
			$("#personalAnswerSubmitted").hide();
		}
		else if(answer == 1)
		{
			$("#answerPersonalField").hide();
			$("#personalAnswerSubmitted").show();
		} 
		else if(answer == 2)
		{
			$(".alreadyAnswered, #personalAnswerAlreadySubmitted").show();	
			$("#answerPersonalField, #personalAnswerSubmitted").hide();
		}
		$("#submitLoginPersonalField, #submitRegisterPersonalField").hide();
		$(".heroLowerHalf, .heroUpperHalf, .heroLeftModule").show();
	}
	else
	{
		$("#myMapHero .heroLowerHalf, #myMapHero .heroLeftModule, #answerPersonalField, #submitRegisterPersonalField").hide();
		$("#myMapHero, .heroUpperHalf, #submitLoginPersonalField, .answerInstruction").show();
	}
	
	if(answer == 0)
	{ // incorrect
		$("#answerPersonalField, #formComponents").show();
		$("#personalAnswerSubmitted").hide();
	}
	else if(answer == 1)
	{ // correct
		$("#answerPersonalField, #formComponents").hide();
	}
	else if(answer == 2)
	{ // Already answered
		$("#answerPersonalField, #formComponents").hide();
		$(".alreadyAnswered, #personalAnswerAlreadySubmitted").show();
	}
	
	$("#heroAnonymous").hide(); 
	
	// Stop a user from re-setting the fields, complicating other event handling
	$(".myPersonalTab").unbind("click");
	// Reset the same on the logo
	$(".logo").click(function () {
		ShowAnonymousPage();
    });
}

function ShowAnonymousPage()
{
	$.get("handlers/mapping.ashx", { type : "anon", nocache : (new Date()).getTime() }, ReceiveMappingResponse);
	$("#myPersonalBingMapHeader, #mapTally, #myMapHero, #entriesTally").hide();
	$("#header, #heroAnonymous, #underTenNote").show();
	if(answer > 0)
	{
		$("#answerPersonalField").hide();
		if(member)
			$("#formComponents").hide();
		else
		{
			$("#formComponents").show();
			$("#combinedLoginRegister").slideDown(1000);
		}
	}
	else
	{
		$(".answerInstruction, #submitQuestions, .submitAnswerField, #formComponents").show();
		$(".answerError, #submitRegisterPersonalField, #combinedLoginRegister").hide();
	}
	
	// Reset event binding for the header elements
	$(".logo").unbind("click");
	$(".myPersonalTab").click(function(){
		ShowPersonalPage();
	});
}

// Used here and in response handlers
// = -1 is no answer (uninitialised)
// = 0 is no answer incorrect or no answer (bit inconsistent)
// = 1 is answer exists
// = 2 is answered correctly already
var answer = -1;
var answering = 0;
function AnswerFormSubmit()
{
	// This variable exists because pressing return triggers a form submit and a keypress event which calls this method.
	// Not sure how that happened. This stops the second attempt to send to the web service.
	if(answering > 1) answering = 0;
	answering++;
	if(answering == 1 && $("#answerForm").valid())
	{
		var answerString = $("#answer")[0].value;
		if(answerString != watermarkStrings.answer)
		{
			$.get("handlers/answer.ashx", { answer : answerString, nocache : (new Date()).getTime() }, ReceiveAnswerResponse);
			CountMe("Submit Answer");
		}
	}
	return false;
}

function AnswerFormPersonalSubmit()
{
	if($("#answerFormPersonal").valid())
	{
		// Set the global answer value used to set
		// element visibility on response
		var answerString = $("#answerPersonal")[0].value;
		if(answerString != watermarkStrings.answerPersonal)
		{
			$.get("handlers/answer.ashx", { answer : answerString, nocache : (new Date()).getTime() }, ReceiveAnswerResponse);
			CountMe("Submit Answer Logged In");
		}
	}
}

function LoginFormSubmit()
{
	if($("#loginForm").valid())
	{
		var username = $("#loginEmail")[0].value;
		var password = $("#loginPassword")[0].value;
		var remember = $("#loginRemember")[0].checked;
		loginAttempt = true;
		if(username != watermarkStrings.loginEmail)
		{
			$.get("handlers/login.ashx", { username : username, password : password, cookie: remember, nocache : (new Date()).getTime() }, ReceiveLoginResponse);
			CountMe("Submit Login");
		}
	}
	return false;
}

function LoginPersonalFormSubmit()
{
	if($("#loginPersonalForm").valid())
	{
		var username = $("#loginPersonalEmail")[0].value;
		var password = $("#loginPersonalPassword")[0].value;
		var remember = $("#loginPersonalRemember")[0].checked;
		loginAttempt = true;	
		if(username != watermarkStrings.loginPersonalEmail)
		{
			$.get("handlers/login.ashx", { username : username, password : password, cookie: remember, nocache : (new Date()).getTime() }, ReceiveLoginResponse);
			CountMe("Submit Login Personal Map");
		}
	}
	return false;
}

function RegisterPersonalFormSubmit()
{
	if($("#registerPersonalForm").valid())
	{
		var username = $("#registerPersonalEmail")[0].value;
		var password = $("#registerPersonalPassword")[0].value;
		var remember = $("#registerPersonalRemember")[0].checked;
		var newsletter = $("#registerPersonalNewsletter")[0].checked;
		if(username != watermarkStrings.registerPersonalEmail)
		{
			$.get("handlers/register.ashx", { username : username, password : password, cookie: remember, newsletter: newsletter, nocache : (new Date()).getTime() }, ReceiveRegisterResponse);
			CountMe("Submit Registration Personal Map");
		}
	}
	return false;
}


function RegisterFormSubmit()
{
	if($("#registerForm").valid())
	{
		var username = $("#registerEmail")[0].value;
		var password = $("#registerPassword")[0].value;
		var remember = $("#registerRemember")[0].checked;
		var newsletter = $("#registerNewsletter")[0].checked;
		if(username != watermarkStrings.registerEmail)
		{
			$(".registerError").hide();
			$.get("handlers/register.ashx", { username : username, password : password, cookie: remember, newsletter: newsletter, nocache : (new Date()).getTime() }, ReceiveRegisterResponse);
			CountMe("Submit Registration");
		}
	}
	return false;
}

function SetWatermarks()
{
	$("#registerEmail, #registerPersonalEmail").watermark("email");
	//$("#registerPassword, #registerPersonalPassword").watermark("password");
	$("#loginEmail, #loginPersonalEmail").watermark("email");
	//$("#loginPassword, #loginPersonalPassword").watermark("password");
	$("#answer, #answerPersonal").watermark("enter your answer here");

}

function SearchBingWithText(text)
{
	CountMe("Pushpin Search");
	window.open("http://www.bing.com/search?q=" + text + "&FORM=M00UUK&Publ=BING&Crea=BAWL_PUSHSB_1X1");
}

function ListenForKeypress(e){
	
	// Hide these manually added error messages
	$(".loginPasswordError, #loginPersonalPasswordError").hide();
	
	switch(this.id)
	{
		case "answer":
			$(".answerError").hide();
			$(".answerInstruction").show();
			if(e.keyCode == 13)
				AnswerFormSubmit();	
			break;
		case "loginPassword":
		case "loginEmail":
		case "loginRemember":
			if(e.keyCode == 13)
				LoginFormSubmit();
			break;
		case "loginPersonalPassword":
		case "loginPersonalEmail":
		case "loginPersonalRemember":
			if(e.keyCode == 13)
				LoginPersonalFormSubmit();
			break;
		case "registerPassword":
		case "registerEmail":
		case "registerRemember":
			if(e.keyCode == 13)
				RegisterFormSubmit();
			break;
		case "registerPersonalPassword":
		case "registerPersonalEmail":
		case "registerPersonalRemember":
			if(e.keyCode == 13)
				RegisterPersonalFormSubmit();
			break;
		default:
			if($(this).attr("class") == "searchField")
			{
				if(e.keyCode == 13)
					SearchBingWithText(this.value);
			}
			break;

	}
}

function ShowLoggedInUserName(name)
{
	$("#loggedInFirstName").text(" " + name).show();
}

//function JBT(event)
//{
//	if(jbtemail && jbtemail != "" && jbtemail == "jabutc@microsoft.com")
//		$("#jbt").show().append(event+"<br/>");
//}
