



function EmailFieldFocus() {
	document.getElementById("ForgotPasswordForm").EmailAddress.focus();
}

var Layer = {
	DoNothing: function() {
	},
	
	Show: function(url, layerName) {
		var body = document.getElementsByTagName("body")[0];
		var div = body.appendChild(document.createElement("div"));
		div.id = layerName;
		LoadPage(url, layerName, EmailFieldFocus);
		
		var lyr = document.getElementById(layerName);
		//lyr.style.display = "none";
		lyr.style.position = "absolute";
		lyr.style.left = "575px";
		lyr.style.top = "125px";
		lyr.style.zIndex = "9999";
		
		//Effect.BlindDown(layerName);
	},
	
	Hide: function(layerName) {
		//Effect.SlideUp(layerName);
		var me = document.getElementById(layerName);
		me.parentNode.removeChild(me);
	}
}

//Friend object.
var Friend = {
	CustomerID: null,
	DisplayName: null,
	Alias: null,
	FirstName: null,
	ProfilePicUrl: null,
	
	friendStatus: null,
	
	Add: function(friendID) {
		var userID = Cookie.GetValue("cid");
		
		//You have to be logged on in order to add a friend.
		if(userID == null) {
			$("ServerReply").innerHTML = "You have to be logged on to add this friend.";
			ShowLayer("StatusLayer", true);
			ShowLayer("StatFlasher", false);
			ShowLayer("ViewUser", false);
		}
		//Do not allow to add thyself.
		else if(userID == friendID) {
			$("ServerReply").innerHTML = "Trying to add yourself as a friend is the first sign of insanity.";
			ShowLayer("StatusLayer", true);
			ShowLayer("StatFlasher", false);
			ShowLayer("ViewUser", false);
		}
		//Passed requirements, proceed with add method.
		else {
			ShowLayer("StatFlasher", true);
			ShowLayer("ViewUser", false);
			$("StatMessage").innerHTML = "requesting...";
			
			var photoUrl = Cookie.GetValue("photoUrl");
			var userName = Cookie.GetValue("dispName");
			//var email = Cookie.GetValue("email");
			var fName = Cookie.GetValue("fName");
			var lName = Cookie.GetValue("lName");
			
			var nameList = new Array("UserID", "FriendID", "UserName", "PhotoUrl");
			var valueList = new Array(userID, friendID, userName, photoUrl);
			var data = XmlObj.Create("AddFriend", nameList, valueList);
			
			var ajax = new GrooveNetAjax();
			ajax.SendRequest("POST", AjaxUrl.ApiV2, data, Friend.AddComplete, null);
		}
	},
	
	AddComplete: function(request) {
		//alert(request.responseText);
		var xmlDoc = request.responseXML.documentElement;
		var message = xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue;
		
		ShowLayer("StatFlasher", false);
		ShowLayer("StatusLayer", true);
		ShowLayer("ViewUser", false);
		$("ServerReply").innerHTML = message;
	},
	
	Accept: function(friendID) {
		this.UpdateStatus(friendID, 1);
	},
	
	Decline: function(friendID) {
		this.UpdateStatus(friendID, -1);
	},
	
	//friendStatus values:
	//-2 > delete
	//-1 > decline
	// 1 > accept
	UpdateStatus: function(friendID, friendStatus) {
		this.friendStatus = friendStatus;
		
		$("InboxDataFriendsLoaderText").innerHTML = "working . . .";
		ShowLayer("InboxDataFriendsLoader", true);
		ShowLayer("InboxDataFriendsStatus", false);
		ShowLayer("InboxDataFriendsContent", false);
		
		var userID = Cookie.GetValue("cid");
		
		var nameList = new Array("UserID", "FriendID", "FriendStatus");
		var valueList = new Array(userID, friendID, friendStatus);
		var data = XmlObj.Create("UpdateFriendStatus", nameList, valueList);
		
		var ajax = new GrooveNetAjax();
		ajax.SendRequest("POST", AjaxUrl.ApiV2, data, Friend.UpdateStatusComplete, null);
	},
	
	UpdateStatusComplete: function(request) {
		//var xmlDoc = request.responseXML.documentElement;
		//var status = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;
		//var message = xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue;
		
		//$("InboxDataFriendsStatusText").innerHTML = message;
		ShowLayer("InboxDataFriendsLoader", false);
		ShowLayer("InboxDataFriendsStatus", false);
		ShowLayer("InboxDataFriendsContent", true);
		
		ShowFriendRequests();
		
		//Accept or decline?  Update request count shown in tabs.
		if(Friend.friendStatus == 1 || Friend.friendStatus == -1) {
			if(Inbox.FriendRequestCount > 0) {
				Inbox.FriendRequestCount--;
				Inbox.ShowNewBreakdownCount();
			}
		}
	}
}

//PeopleBrowser.Search callback
function SearchCallback(request) {
	PeopleBrowser.SearchReply(request);
}

function BrowsePeople() {
	//alert("BrowsePeople()");
	//PeopleBrowser.Search("next", 0);
	PeopleBrowser.Search(1);
}

var PeopleBrowser = {
	ResultCount: 0,
	PageSize: 30,
	CurrentPage: 1,
	PageTotal: 0,
	PivotID: 0,
	Users: null,
	limitX: 0,
	
	//Search: function(navigateTo, pivotID) {
	Search: function(page) {
		//alert(page);
		//alert("PeopleBrowser.Search()");
		$("SearchResultPanel").innerHTML = "searching . . .";
	
		//this.PivotID = pivotID;
		//if(this.PivotID == 0) this.CurrentPage = 1;	//We have a new resultset so, re-set current page accordingly.
		this.CurrentPage = page ? page : 1;
		this.limitX = (this.CurrentPage * this.PageSize) - this.PageSize;
		
		var searchType = $F("SearchCriteria");
		var searchString = $F("SearchString");
		var genderID = getCheckedValue(document.forms['SearchForm'].elements['Gender']);
		var minAge =  User.MinAge.toString();
		var maxAge =  User.MaxAge.toString();
		var civilStatusID =  getCheckedValue(document.forms['SearchForm'].elements['CivilStatus']);
		var sexOrientID =  getCheckedValue(document.forms['SearchForm'].elements['SexOrient']);
		var provinceID =  $F("Province");
		var countryCode =  $F("Country");
		var sortBy = getCheckedValue(document.forms['SearchForm'].elements['SortBy']);
		
		var nameList = new Array("SearchType", "SearchString", "MinAge", "MaxAge", "Gender", "CivilStatusID",
			"SexOrientationID",	"ProvinceID", "CountryCode", "SortBy", "LimitX", "LimitY");
		var valueList = new Array(searchType, searchString, minAge, maxAge, genderID, civilStatusID,
			sexOrientID, provinceID, countryCode, sortBy, this.limitX, this.PageSize);
		var data = XmlObj.Create("BrowsePeople", nameList, valueList);
		
		var ajax = new GrooveNetAjax();
		ajax.SendRequest("POST", AjaxUrl.ApiV2, data, SearchCallback, null);
	},
	
	SearchReply: function(request) {
		//alert(request.responseText);
		var xmlDoc = request.responseXML.documentElement;
		var status = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;
		var message = xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue;
		
		var users = new Array();
		if(status == "true") {
			//Store data into object.
			var count = xmlDoc.getElementsByTagName("Users")[0].hasChildNodes() ? 
				xmlDoc.getElementsByTagName("Users")[0].getAttribute("count") : 0;
			
			this.ResultCount = xmlDoc.getElementsByTagName("Users")[0].hasChildNodes() ? 
				parseInt(xmlDoc.getElementsByTagName("Users")[0].getAttribute("truecount")) : 0;
			//alert("this.ResultCount: " + this.ResultCount); alert("this.PageSize: " + this.PageSize);	
			var remainder = (this.ResultCount % this.PageSize) == 0 ? 0 : 1;
			this.PageTotal = parseInt(this.ResultCount / this.PageSize) + remainder;
			//alert("this.PageTotal: " + this.PageTotal);
			myFriends = new Array();
			this.Users = new Array();
			
			for(var i = 0; i < count; i++) {
				//Users for display;
				this.Users[i] = new Users();
				this.Users[i].ID = xmlDoc.getElementsByTagName("UserID")[i].childNodes[0].nodeValue;
				this.Users[i].DisplayName = xmlDoc.getElementsByTagName("UserName")[i].childNodes[0].nodeValue;
				this.Users[i].PhotoUrl = xmlDoc.getElementsByTagName("UserPhotoUrl")[i].hasChildNodes() ?
					xmlDoc.getElementsByTagName("UserPhotoUrl")[i].childNodes[0].nodeValue : noPhotoUrl;
					
				this.Users[i].ProvinceName = xmlDoc.getElementsByTagName("ProvinceName")[i].childNodes[0].nodeValue;
				this.Users[i].CountryCode = xmlDoc.getElementsByTagName("CountryCode")[i].childNodes[0].nodeValue;
				this.Users[i].FriendCount = xmlDoc.getElementsByTagName("FriendCount")[i].childNodes[0].nodeValue;
				this.Users[i].IsOnline = xmlDoc.getElementsByTagName("IsOnline")[i].childNodes[0].nodeValue;
				
				//In preparation for message sending (needs improvement)
				myFriends[i] = new Friends();
				myFriends[i].CustomerID = this.Users[i].ID;
				myFriends[i].FirstName = this.Users[i].DisplayName;
				myFriends[i].ProfilePicUrl = this.Users[i].PhotoUrl;
				//alert(this.Users[i].ID);
			}
			
			//this.Users.sort(SortPeopleAscending); //we need to sort this for the prev navigation.
			//myFriends.sort(SortFriendsAscending); //let's be consistent with the user sort order, shall we?
			this.ShowResults();
			
		}
		else {
			//Display error message.
			$("SearchResultPanel").innerHTML = message;
		}
	},
	
	ShowResults: function() {
		//alert("PeopleBrowser.ShowResults()");
		var code = new Array();
		var arr = Cookie.Get();
		if(arr) User.CustomerID = arr["cid"];
		for(var i = 0; i < this.Users.length; i++) {
			//alert(this.Users.length);
			code.push("<div class='friendlist'>");
			code.push("	<div class='friendpic text7' style='width:70px;margin-bottom:2px;'><a href='/profile/friend/?cid=" + this.Users[i].ID + "' target='_blank'><img src='" + this.Users[i].PhotoUrl + "' width='70' height='70' border='0'></a></div>");
			code.push("	<div class='text7' style='margin-bottom:0px;'><a href='/profile/friend/?cid=" + this.Users[i].ID + "' target='_blank'>" + ShortString(this.Users[i].DisplayName, 10) + "</a></div>");
			code.push("	<div class='text44'>has " + this.Users[i].FriendCount + " friends</div>");
			code.push("	<div class='text44' style='margin-bottom:0px;'>" + ShortString(this.Users[i].ProvinceName, 10) + ", " + this.Users[i].CountryCode + "</div>");
			
			if(this.Users[i].IsOnline.toLowerCase() == "true")
				code.push("<div class='text45' style='margin-bottom:3px;'><img src='../images/OnlineIcon.gif' width='10' height='10' align='absmiddle' />Online Now!</div>");
			else
				code.push("<div class='text44' style='margin-bottom:3px;'>&nbsp;.</div>");
				
			if(User.CustomerID)
			code.push("	<div class='text7'><a href='javascript:Message.Compose(" + i + ");' class='link2'><img src='/images/envelop.gif' border='0' align='absmiddle'/>&nbsp;send msg</a></div>");
			code.push("</div>");
		}
		
		if(this.Users.length > this.PageSize) {
			//var max = User.Comments.length - 1;
			ShowLayer("BrowseNextOn", true);
			ShowLayer("BrowseNextOff", false);
		}
		else { 
			//var max = User.Comments.length;
			ShowLayer("BrowseNextOn", false);
			ShowLayer("BrowseNextOff", true);
		}
		
		//previous button on/off 
		//alert(this.CurrentPage); alert(this.PageTotal);
		if(this.CurrentPage == 1) {
			ShowLayer("BrowsePrevOn", false);
			ShowLayer("BrowsePrevOff", true);
		}
		else {
			ShowLayer("BrowsePrevOn", true);
			ShowLayer("BrowsePrevOff", false);
		}
		
		//next button on/off
		if(this.CurrentPage == this.PageTotal) {
			ShowLayer("BrowseNextOn", false);
			ShowLayer("BrowseNextOff", true);
		}
		else {
			ShowLayer("BrowseNextOn", true);
			ShowLayer("BrowseNextOff", false);
		}
		
		//Pagination
		//$("BrowsePagination").innerHTML = this.CurrentPage + " of " + this.PageTotal;
		$("BrowsePagination").innerHTML = "> page " + this.CurrentPage;
		
		$("SearchResultPanel").innerHTML = code.join("");
	},
	
	Navigate: function(to) {
		switch(to) {
			case("next"):
				//var lastIndex = this.Users.length - 1;
				//this.PivotID = this.Users[lastIndex].ID;
				//PeopleBrowser.Search("next", this.PivotID);
				this.CurrentPage++;
				this.limitX = (this.CurrentPage * this.PageSize) - this.PageSize;
				PeopleBrowser.Search("next");
				break;
			case("prev"):
				//this.PivotID = this.Users[0].ID;
				//PeopleBrowser.Search("prev", this.PivotID);
				this.CurrentPage--;
				PeopleBrowser.Search("prev");
				break;
			default:
				break;
		}
	}
}

//Browse people - deprecated by PeopleBrowser.Search()
/*function BrowsePeople20060824() {
	alert("BrowsePeople()");
	$("SearchResultPanel").innerHTML = "searching . . .";
	
	var searchType = $F("SearchCriteria");
	var searchString = $F("SearchString");
	var genderID = getCheckedValue(document.forms['SearchForm'].elements['Gender']);
	var minAge =  User.MinAge.toString();
	var maxAge =  User.MaxAge.toString();
	var civilStatusID =  getCheckedValue(document.forms['SearchForm'].elements['CivilStatus']);
	var sexOrientID =  getCheckedValue(document.forms['SearchForm'].elements['SexOrient']);
	var provinceID =  $F("Province");
	var countryCode =  $F("Country");
	
	//alert(minAge + ":" + maxAge);
	//alert(genderID + ":" + civilStatusID + ":" + sexOrientID);
	//alert(provinceID + ":" + countryID);
	
	var nameList = new Array("SearchType", "SearchString", "MinAge", "MaxAge", "Gender", "CivilStatusID",
		"SexOrientationID",	"ProvinceID", "CountryCode");
	var valueList = new Array(searchType, searchString, minAge, maxAge, genderID, civilStatusID,
		sexOrientID, provinceID, countryCode);
	var data = XmlObj.Create("BrowsePeople", nameList, valueList);
	
	var ajax = new GrooveNetAjax();
	ajax.SendRequest("POST", AjaxUrl.ApiV2, data, SearchUsersReply, null);
}*/

//Search for unique users using unique search criteria like avatar name and email address.
function SearchUsers(searchType, searchText) {
	if(searchType && searchText) {
		$("SearchResultPanel").innerHTML = "searching . . .";
	
		if(searchType.toUpperCase() == "AVATARNAME" || searchType.toUpperCase() == "EMAILADDRESS") {
			QuickSearchUser(searchType, searchText);
		}
		else {
			var nameList = new Array("SearchType", "SearchText");
			var valueList = new Array(searchType, searchText);
			var data = XmlRequest.Create("SearchUsers", nameList, valueList);
			
			var ajax = new GrooveNetAjax();
			ajax.SendRequest("POST", AjaxUrl.Api, data, SearchUsersReply, null);
		}
	}
}

function SearchUsersReply(request) {
	//alert(request.responseText);
	var xmlDoc = request.responseXML.documentElement;
	var status = xmlDoc.getElementsByTagName("status")[0].childNodes[0].nodeValue;
	var message = xmlDoc.getElementsByTagName("message")[0].childNodes[0].nodeValue;
	
	
	var users = new Array();
	if(status == "true") {
		//Store data into object.
		var count = xmlDoc.getElementsByTagName("Users")[0].hasChildNodes() ? 
			xmlDoc.getElementsByTagName("Users")[0].getAttribute("count") : 0;
		
		myFriends = new Array();
		for(var i = 0; i < count; i++) {
			//Users for display;
			users[i] = new Users();
			users[i].ID = xmlDoc.getElementsByTagName("UserID")[i].childNodes[0].nodeValue;
			users[i].DisplayName = xmlDoc.getElementsByTagName("UserName")[i].childNodes[0].nodeValue;
			users[i].PhotoUrl = xmlDoc.getElementsByTagName("UserPhotoUrl")[i].hasChildNodes() ?
				xmlDoc.getElementsByTagName("UserPhotoUrl")[i].childNodes[0].nodeValue : noPhotoUrl;
			//alert(myFriends);	
			//In preparation for message sending (needs improvement)
			myFriends[i] = new Friends();
			myFriends[i].CustomerID = users[i].ID;
			myFriends[i].FirstName = users[i].DisplayName;
			myFriends[i].ProfilePicUrl = users[i].PhotoUrl;
		}
		
		DisplaySearchUserResults(users);
		
	}
	else {
		$("SearchResultPanel").innerHTML = message;
	}
}

function DisplaySearchUserResults(users) {
	var code = new Array();
	var arr = Cookie.Get();
	if(arr) User.CustomerID = arr["cid"];
	for(var i = 0; i < users.length; i++) {
		//alert(i);
		code.push("<div class='friendlist'>");
		code.push("	<div class='friendpic text7' style='width:70px;margin-bottom:2px;'><a href='/profile/friend/?cid=" + users[i].ID + "'><img src='" + users[i].PhotoUrl + "' width='70' height='70' border='0'></a></div>");
		code.push("	<div class='text7' style='margin-bottom:5px;'><a href='/profile/friend/?cid=" + users[i].ID + "'>" + ShortString(users[i].DisplayName, 10) + "</a></div>");
		if(User.CustomerID)
		code.push("	<div class='text7'><a href='javascript:Message.Compose(" + i + ");' class='link2'><img src='/images/envelop.gif' border='0' align='absmiddle'/>&nbsp;send msg</a></div>");
		code.push("</div>");
	}
	
	$("SearchResultPanel").innerHTML = code.join("");
}


