function updateSignIn() {
		if (user.access_level > 0) {
			$('si_td_text'      ).innerHTML = 'Sign Out (' + user.email.substring(0,user.email.indexOf('@')) + ')'; //
//															+ '(' + user.access_level + '))';
			if ((user.access_level >1) & (user.validated != 1)) $('si_td_text').innerHTML += ' (Not Validated)';
			$('register_td_text').innerHTML = 'Modify Registration';
		} else {
			$('si_td_text'      ).innerHTML = 'Sign In';
			$('register_td_text').innerHTML = 'Register';
		}

		fnWriteAccessCookie ('ac1');
}

function fnSignIn(email, password, validate, onSuccess, onFailure) {
	ajaxSignIn (email, password, validate, function(result) {
						if (result == 'Bad Password') {
							alert ('Invalid email or password.');
							onFailure();
						} else if (result == 'Already Validated') {
							alert ('Your email address was already validated.  You only need to validate once.');
							onFailure();
						} else if (result == 'Bad Validation') {
							alert ('Validation error.');
							onFailure();
						} else {
							if (urlFunc == 've') {
								alert ('Your email address has been validated.  Welcome to CityLove.');
								urlFunc = '';
							}
							user = result;
							updateSignIn();
							
							if (user.city_id != -1) browserSettings.city_id = user.city_id;
							fnWriteAccessCookie('ac0');
							fnWriteAccessCookie('ac1');
							ajaxGetSongList(function() {});

							ajaxGetCityInfo(browserSettings.city_id, function(response) {
								ajaxBuildCountryCitySelectors('cs');
								$('lbCityName_td').innerHTML = JSON.decode(response).city_name;
								 onSuccess();
							 });
						}
	});
}

function fnSignOut() {
	user = cloneObject(defaultUser);
	if (statusDisplay) alertObject (user);
	var myCookie = Cookie.dispose('ac1');
	updateSignIn();
	ajaxGetSongList(function() {});
	aButtonStates['playerVote_btn'] = false;
	fnLightPlayerVoteButton();


}

function fnReadAccessCookies() {
	var cookie = Cookie.read ('ac0');		// access cookie 0 (ac0) is browser settings
	if (cookie) {
		browserSettings = JSON.decode(cookie);
		selectedCityId = browserSettings.city_id;
	}
	
	ajaxGetBanners(null);
	
	cookie = Cookie.read ('ac1');			// access cookie 1 (ac1) is user settings
	if (cookie) {
		if (isSet(JSON.decode(cookie).id)) {
			user = JSON.decode(cookie);
		} else {
//			alert ('Bad cookie found');
		}
//		alert ('user.id is ' + user.id);
//		alertObject(user);
	}
}

function fnWriteAccessCookie(which) {
	switch (which) {
		case 'ac0':							// access cookie 0 (ac0) is browser settings
			Cookie.write('ac0', JSON.encode(browserSettings), {duration: 99999});
//			alert ('Cookie ac0 written');
		break;
		
		case 'ac1':							// access cookie 1 (ac1) is user settings
			var d = signInRemember ? 99999 : 0;
			if (user.id >= 0) {
				Cookie.write('ac1', JSON.encode(user), {duration: d});
//				alert ('Cookie ac1 written');
			} else {
//				alert ('Cookie ac1 not written');
			}
		break;	
	}
}

function fnValidateEmail(userId) {
//	alert ('Will validate registration for user #' + userId);
	fnSignIn('', '', userId, null, null)
}


