//SC:2008
/* Settings Panel */
SBCOM.namespace('profile.settings');
SBCOM.namespace('favorites');
SBCOM.namespace('buddy');

SBCOM.profile.attributePrivacy = 'spongebob_privacy';
SBCOM.profile.attributeFavoriteGames = 'sb_fav_games';
SBCOM.profile.attributeFavoriteGamesStudio = 'gs_fav_games';
SBCOM.profile.attributeFavoriteVideos = 'sb_fav_videos';

SBCOM.profile.ID_SETTINGS_PANEL = 'showprofile';
SBCOM.profile.ID_SETTINGS_BUTTON = "settingsButton";
SBCOM.profile.ID_MY_PROFILE = "profilenavigation";

SBCOM.profile.settingsUrl			=	'/ajax/user/settings/';
SBCOM.profile.settingsSetUrl		=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/setStringAttrAuth-JS.jhtml';
SBCOM.profile.settingsGetUrl		=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/getAttrValue-JS.jhtml';
// cached get
SBCOM.profile.settingsGetUrlCached		=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/getAttrValueCached-JS.jhtml'; 

SBCOM.profile.settingsAuthGetUrl	=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/getStringAttrAuth-JS.jhtml';
SBCOM.profile.favoritesSetUrl		=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/setFavListAuth-JS.jhtml';
SBCOM.profile.userInfoUrl			=	'http://'+ SBCOM.utils.getNickDomain() + '/sbcom/data/profile/info.jhtml';

SBCOM.buddy.manageUrl		=	'/ajax/user/buddy/manage/##ACTION##/##SCREENNAME##/##BUDDYNAME##/##SBAUTH##/';

SBCOM.profile.requestedUser = null;

SBCOM.profile.getAttribute = function(attribute, callback, attrGetUrl, user) {
	if(!attribute) attribute = SBCOM.profile.attributePrivacy;
	if(!attrGetUrl) attrGetUrl = SBCOM.profile.settingsGetUrl;
	if(!user) user = SBCOM.utils.getCookie('loggedInScreenName');

	var requestParams = {
		sbauth:SBCOM.utils.getCookie('auth'), // if auth url
		username:user,
		attName:attribute
	}
	SBCOM.moojax.json.doRequest(attrGetUrl, requestParams, callback);
}

SBCOM.profile.setAttribute = function(attribute, attributeValue, callback, attrSetUrl) {
	if(!attribute || !attributeValue) return;
	if(!attrSetUrl) attrSetUrl = SBCOM.profile.settingsSetUrl;

	var requestParams = {
		//sbauth:SBCOM.utils.getCookie('auth'),
		screenName:SBCOM.utils.getCookie('loggedInScreenName'),
		attName:attribute
	}
	requestParams[attribute] = attributeValue;
	SBCOM.moojax.json.doRequest(attrSetUrl, requestParams, callback);
}

SBCOM.favorites.getFavorites = function(attribute, callback) {
	SBCOM.profile.getAttribute(attribute, callback, SBCOM.profile.settingsGetUrl);
}


SBCOM.favorites.saveFavorites = function(attribute, attributeValue, callback) {
	SBCOM.profile.setAttribute(attribute, attributeValue, callback, SBCOM.profile.favoritesSetUrl);
}

SBCOM.profile.settings.doSettingsSave = function() {
	var panel = $('saveSettingsPanel');
	if(!panel) return false;

	var selectedVal;
	for(var i = 0; i < panel.saveProfileOpt.length; i++) {
		if(!panel.saveProfileOpt[i].checked) continue;
		selectedVal = panel.saveProfileOpt[i].value;
	}

	if(!selectedVal) {
		alert("Please make a selection -- TODO:Error Window")
		return false;
	}

	//SBCOM.utils.hideElement("saveProfileButton");
	//SBCOM.utils.hideElement("cancelProfileButton");	

	SBCOM.profile.setAttribute(SBCOM.profile.attributePrivacy, selectedVal, SBCOM.profile.settings.doSettingsSaved);
	return false;
}

SBCOM.profile.settings.doSettingsSaved = function(response) {
	if(response == null || !response.code) {
		SBCOM.utils.doLog("doSettingsSaved: invalid response!");
		return;
	}

	var status = response.code.toLowerCase();

	if(status == 'ok') {
		//document.location.href = SBCOM.modules.profileHomeUrl;
		SBCOM.utils.doMessage('msg_settings_saved');
	} else if(status == 'error') {

		if(response.message == SBCOM.modules.ERROR_LOGIN) {
			doDisplayLogin();
		} else {
			SBCOM.utils.doMessage('msg_settings_save_error');
		}
	}
}

SBCOM.profile.settings.doSettingsCancel = function() {
	document.location.href = SBCOM.modules.profileHomeUrl;
	return false;
}

SBCOM.profile.settings.isMyProfile = function(user) {
	if(!isLoggedIn() || !user) return false;

	var loggedInUser = getLoggedInUser().screenName;
	return !SBCOM.utils.isEmptyString(loggedInUser) && (loggedInUser == user || user == SBCOM.modules.defaultProfileUser);
}

SBCOM.profile.settings.enableSettings = function(user) {
	SBCOM.utils.doLog('enableSettingsQueued: '+user);
	
	doCheckLogin(function() {
		//SBCOM.utils.doLog('enableSettingsQueued: '+user);
		if(!SBCOM.profile.settings.isMyProfile(user)) return;
		SBCOM.utils.showElement(SBCOM.profile.ID_MY_PROFILE);
	});
}

SBCOM.profile.settings.goSettings = function(user) {
	
	SBCOM.profile.requestedUser = user;
	doCheckLogin(SBCOM.profile.settings.openSettings);
	
}

SBCOM.profile.settings.openSettings = function() {
	
	var user = SBCOM.profile.requestedUser;
	if(!isLoggedIn()) {
		doDisplayLogin();
		return;
	}

	if(!SBCOM.profile.settings.isMyProfile(user))
		return;
	
	SBCOM.profile.getAttribute(SBCOM.profile.attributePrivacy, function(response) {
		SBCOM.utils.showElement(SBCOM.profile.ID_MY_PROFILE);
		SBCOM.profile.settings.setPrivacySelect(response.attributeValue);
		SBCOM.utils.showElement(SBCOM.profile.ID_SETTINGS_PANEL);
	});
}

SBCOM.profile.settings.setPrivacySelect = function(privacy) {
	if(SBCOM.utils.isEmptyString(privacy)) return;

	$('saveSettingsPanel').getElements('input[value='+privacy+']').set('checked', true);
}

/*
SBCOM.profile.settings.loadProfileSettings = function(user, callback) {
}
*/

/* end: Settings Panel */

SBCOM.favorites.addFavoriteVideo = function(itemId) {
	doDisplayLoader();

	SBCOM.favorites.getFavorites(SBCOM.profile.attributeFavoriteVideos, function(response) {
		SBCOM.favorites.saveMergedFavorites(itemId, response, SBCOM.profile.attributeFavoriteVideos);
	});
}

SBCOM.favorites.addFavoriteGame = function(itemId) {
	doDisplayLoader();

	SBCOM.favorites.getFavorites(SBCOM.profile.attributeFavoriteGames, function(response) {
		SBCOM.favorites.saveMergedFavorites(itemId, response, SBCOM.profile.attributeFavoriteGames);
	});
}

SBCOM.favorites.addFavoriteGameStudioGame = function(itemId) {
	doDisplayLoader();

	SBCOM.favorites.getFavorites(SBCOM.profile.attributeFavoriteGamesStudio, function(response) {
		SBCOM.favorites.saveMergedFavorites(itemId, response, SBCOM.profile.attributeFavoriteGamesStudio);
	});
}

SBCOM.favorites.saveMergedFavorites = function(itemId, response, profileAttribute) {
	if(!response) return;

	var favorites = SBCOM.favorites.getFavoritesArray(response.attributeValue);
	if(favorites == null || favorites.length <= 0) {
		SBCOM.favorites.saveFavorites(profileAttribute, itemId, SBCOM.favorites.savedFavorite);
	} else if(SBCOM.favorites.hasFavorite(itemId, favorites)) {
		SBCOM.utils.doMessage('msg_favorites_already');
	} else {
		favorites.push(itemId);
		SBCOM.favorites.saveFavorites(profileAttribute, favorites.toString(), SBCOM.favorites.savedFavorite);
	}	
}

SBCOM.favorites.getFavoritesArray = function(favorites) {
	if(favorites == null) return null;
	favorites = favorites;
	return favorites.indexOf(',') > 0 ? favorites.split(',') : new Array(favorites);
}

SBCOM.favorites.hasFavorite = function(itemId, favorites) {
	if(!favorites) return false;
	for(var i = 0; i < favorites.length; i++) {
		if(itemId == favorites[i]) return true;
	}
	return false;
}

SBCOM.favorites.savedFavorite = function(response) {
	if(response == null) {
		SBCOM.utils.doMessage('msg_favorites_saves_error');
	} else if(response.code == 'OK') {
		SBCOM.utils.doMessage('msg_favorites_saved');
	} else if(response.message && response.message.toLowerCase() == 'notloggedin') {
		//SBCOM.utils.doMessage('msg_favorites_login_error');
		doDisplayLogin();
	} else {
		SBCOM.utils.doMessage('msg_favorites_saves_error');
	}
}

SBCOM.favorites.loadedFavoriteGames = function(response) {
	SBCOM.utils.doLog('loadedFavoriteGames: '+response);
}

SBCOM.favorites.loadedFavoriteVideos = function() {
	SBCOM.utils.doLog('loadedFavoriteVideos: '+response);
}

SBCOM.buddy.addBuddy = function(user) {
	SBCOM.buddy.doManageBuddy(user, 'add');
}

SBCOM.buddy.removeBuddy = function(user) {
	SBCOM.buddy.doManageBuddy(user, 'remove');
}

SBCOM.buddy.blockBuddy = function(user) {
	SBCOM.buddy.doManageBuddy(user, 'block');
}

SBCOM.buddy.unblockBuddy = function(user) {
	SBCOM.buddy.doManageBuddy(user, 'unblock');
}

SBCOM.buddy.doManageBuddy = function(user, action) {
	if(!isLoggedIn()) {
		doDisplayLogin();
		return;
	}

	var params = {
		action:action,
		screenName:getLoggedInUser().screenName,
		buddyName:user,
		sbauth:SBCOM.utils.getCookie('auth')
	};

	var requestUrl = SBCOM.utils.getScenicRequestUrl(SBCOM.buddy.manageUrl, params);
	var requestPackage = {action:action, parser:SBCOM.buddy.doBuddyResponse};

	SBCOM.moojax.doLoadData(requestUrl, 'get', params, requestPackage);
}

SBCOM.buddy.doBuddyResponse = function(xml, requestPackage) {
	if(xml == null || xml.getAttribute('status') != 'ok') {
		SBCOM.utils.doMessage('buddy_err');
		return;
	}

	SBCOM.utils.doMessage('buddy_success_'+requestPackage.action);
}

SBCOM.profile.getInfo = function(user) {
	//if(!user) user = SBCOM.utils.getCookie('loggedInScreenName');
	var requestParams = { user:user };
	//SBCOM.moojax.json.doRequest(SBCOM.profile.userInfoUrl, requestParams, SBCOM.profile.displayInfo);
	SBCOM.jquery.doJsonRequest({
		url: SBCOM.profile.userInfoUrl,
		data: requestParams,
		onFail:function(request, error, exception) {
			SBCOM.utils.doLog("getInfo: "+error);
		},
		onSuccess:SBCOM.profile.displayInfo
	});
}

SBCOM.profile.displayInfo = function(response) {
	SBCOM.utils.doLog("displayInfo: "+response);
	if(response == null) return;

	if(!SBCOM.utils.isEmptyString(response.nickPoints)) $('proNickPoints').set('html', response.nickPoints);
	if(!SBCOM.utils.isEmptyString(response.nickAge)) $('proNickAge').set('html', response.nickAge);
}
