/* Settings Panel */
NICK.namespace('favorites');

NICK.favorites.attributePrivacy = 'nick_privacy';


NICK.favorites.settingsSetUrl		=	'http://'+ NICK.utils.getNickDomain() + '/sbcom/data/profile/nick/setStringAttrAuth-JS.jhtml';
NICK.favorites.settingsGetUrl		=	'http://'+ NICK.utils.getNickDomain() + '/sbcom/data/profile/nick/getAttrValue-JS.jhtml';
NICK.favorites.favoritesSetUrl		=	'http://'+ NICK.utils.getNickDomain() + '/sbcom/data/profile/nick/setFavListAuth-JS.jhtml';

NICK.favorites.addFavorite = function(itemId, attribute) {
	//doDisplayLoader();
	NICK.favorites.getFavorites(attribute, function(response) {
		NICK.favorites.saveMergedFavorites(itemId, response, attribute);
	});
}

NICK.favorites.removeFavorite = function(itemId, attribute) {
	//doDisplayLoader();
	NICK.favorites.getFavorites(attribute, function(response) {
		NICK.favorites.searchAndRemoveFavorite(itemId, response, attribute);
	});
}

NICK.favorites.getFavorites = function(attribute, callback) {
	NICK.favorites.getAttribute(attribute, callback, NICK.favorites.settingsGetUrl);
}

NICK.favorites.getAttribute = function(attribute, callback, attrGetUrl, user) {
	if(!attribute) attribute = NICK.favorites.attributePrivacy;
	if(!attrGetUrl) attrGetUrl = NICK.favorites.settingsGetUrl;
	if(!user) user = NICK.userData.screenName || NICK.userData.nickName;
	
	var requestParams = {
		//sbauth:SBCOM.utils.getCookie('auth'), // if auth url
		username:user,
		attName:attribute
	}
	
	NICK.request.doRequest({
		dataType: "jsonp",
		url: attrGetUrl,
		data: requestParams,
		onSuccess: callback,
		onFail: function(errors){
			for (var error in errors) {
				NICK.utils.doLog("Sort Response: Error: " + error + " - " + errors[error]);
			}
		}
	});
}

NICK.favorites.searchAndRemoveFavorite = function(itemId, response, profileAttribute) {
	if(!response) return;
	
	var favorites = NICK.favorites.getFavoritesArray(response.attributeValue);
	
	if(favorites == null || favorites.length <= 0) {
		NICK.utils.doLog('you have no favorite, therfore nothing to remove');
	} else {
		var tempArray = new Array();
		for(var i = 0; i < favorites.length; i++) {
			if(itemId != favorites[i]) {
				tempArray.push(favorites[i])
			}
		}
		
		if(favorites.length == tempArray.length){
			NICK.utils.doLog('Item can not be found');
		}else{
			favorites = tempArray;
			
			NICK.favorites.saveFavorites(profileAttribute, favorites.toString(), NICK.favorites.savedFavorite);
		}
		
	}	
}

NICK.favorites.saveMergedFavorites = function(itemId, response, profileAttribute) {
	if(!response) return;

	var favorites = NICK.favorites.getFavoritesArray(response.attributeValue);
	if(favorites == null || favorites.length <= 0) {
		NICK.favorites.saveFavorites(profileAttribute, itemId, NICK.favorites.savedFavorite);
	} else if(NICK.favorites.hasFavorite(itemId, favorites)) {
		NICK.utils.doLog('msg_favorites_already');
	} else {
		favorites.push(itemId);
		NICK.favorites.saveFavorites(profileAttribute, favorites.toString(), NICK.favorites.savedFavorite);
	}	
}

NICK.favorites.getFavoritesArray = function(favorites) {
	if(favorites == null) return null;
	favorites = favorites;
	if(favorites!="-1"){
		favoritesArray = favorites.indexOf(',') > 0 ? favorites.split(',') : new Array(favorites);
	}else{
		favoritesArray = new Array();
	}
	
	return favoritesArray
}

NICK.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;
}

NICK.favorites.savedFavorite = function(response) {
	if(response == null) {
		NICK.utils.doLog('msg_favorites_saves_error');
	} else if(response.code == 'OK') {
		NICK.utils.doLog('msg_favorites_saved');
	} else if(response.message && response.message.toLowerCase() == 'notloggedin') {
		NICK.utils.doLog('msg_favorites_login_error');
		//doDisplayLogin();
	} else {
		NICK.utils.doLog('msg_favorites_saves_error');
	}
}

NICK.favorites.saveFavorites = function(attribute, attributeValue, callback) {
	
	NICK.favorites.setAttribute(attribute, attributeValue, callback, NICK.favorites.favoritesSetUrl);
}

NICK.favorites.setAttribute = function(attribute, attributeValue, callback, attrSetUrl) {
	if(!attribute) return;
	if(!attributeValue) attributeValue="-1";
	if(!attrSetUrl) attrSetUrl = NICK.favorites.settingsSetUrl;

	var requestParams = {
		//sbauth:SBCOM.utils.getCookie('auth'),
		screenName:NICK.userData.screenName || NICK.userData.nickName,
		attName:attribute
	}
	requestParams[attribute] = attributeValue;
	NICK.request.doRequest({
		dataType: "jsonp",
		url: attrSetUrl,
		data: requestParams,
		onSuccess: callback,
		onFail: function(errors){
			for (var error in errors) {
				NICK.utils.doLog("Sort Response: Error: " + error + " - " + errors[error]);
			}
		}
	});
}

$(document).bind("authStatus loggedIn", function() {
		if ( NICK.userData.loggedIn == "true" ) {
			//NICK.favorites.addFavorite("23896","fav_videos");
			//NICK.favorites.removeFavorite("23896","fav_videos")
			//NICK.favorites.addFavorite("23897","fav_shows")
			//NICK.favorites.removeFavorite("23897","fav_shows")
			
		} 
	});

