/*
 * int13h Javascript Steam Community
 */
var sapiq_users=0;
var sapiq_usergames=0;
var sapi_gamefindergameslist=[];
var sapi_steamids=[];
var sapi_membericons=[];

$(document).ready(function(){
	// Only load/query if the sidebar is there
	if($('#steamcommunity').length){
		steamGetMemberIDs('int13h');
		$('#steamcommunity_loading').show();
	}
});

function steamGetUser (sid){
	consoleLog('<span class="highlight">Fetching Steam Data for Steam ID:</span> '+sid);
	sapi_steamids.push(sid);
	sapiq_users++;
	$.post(__SITEROOT__+'Steam.itf?request=user',{steamid:sid},function(data){
		if(data.stateMessage===undefined){
			consoleLog('<span class="highlight">WARNING - Bad Data for Steam Data for '+
				'Steam ID:</span> '+sid);
		} else {
			consoleLog('<span class="highlight">Got Steam Data for Steam ID:</span> '+sid);
			var membericon='<a href="'+data.url+'" target="_blank"><img class="'+
				data.onlineState+'" src="'+data.avatarIcon+'" alt="'+sid+'" title="'+
				data.steamID+'<br>'+
				data.stateMessage.replace("\n",'<br>').replace(' - Join','')+'"></a>';
			sapi_membericons[sid]=membericon;
			$('#steamcommunity').append(membericon);

			// Check for any steamboxes
			if($('#steambox_'+sid).length){
				$('#steambox_'+sid).append(
					'<table width="400" cellpadding="0" cellspacing="1" class="steambox">'+
					'<tr><th colspan="3">Steam Details</th></tr>'+
					'<tr><td rowspan="5" align="center"><a href="'+data.url+
						'" target="_blank"><img class="steambox '+data.onlineState+'" src="'+
						data.avatarMedium+'" alt="'+sid+'" title="'+data.steamID+'"></a></td>'+
					'<td class="label">Name:</td><td>'+data.steamID+'</td></tr>'+
					'<tr><td class="label">Member Since:</td><td>'+data.memberSince+'</td></tr>'+
					'<tr><td class="label">Steam Rating:</td><td>'+data.steamRating+'</td></tr>'+
					'<tr><td class="label">Playing Time:</td><td>'+data.hoursPlayed2Wk+
						' hrs past 2 weeks</td></tr>'+
					'<tr><td class="label">Status:</td><td>'+
					data.stateMessage.replace("\n",'<br>').replace(' - Join','')+'</td></tr>'+
					'</table>'
				);
				$('img.steambox').tipTip({maxWidth: "auto", edgeOffset: 5});
			}

			// Steam Game Finder
			if($('#steamgamefinder_members').length){
				$('#steamgamefinder_members').append('<img class="offline" src="'+
					data.avatarMedium+'" alt="'+sid+'" title="'+data.steamID+'">');
			}
		}
		sapiq_users--;
		if(sapiq_users==0){
			steamShowCommunity();
			if($('#steamgamefinder_members').length){
				steamUpdateGameFinder();
				steamShowGameFinderMembers();
			}
		}
	},'json');
}

function steamGetMemberIDs (group){
	consoleLog('<span class="highlight">Fetching Steam Member List for '+
		'Steam Group:</span> '+group);
	
	$.ajax({
		type: "POST",
		url: __SITEROOT__+'Steam.itf?request=groupmembers',
		data: {steamgroup:group},
		dataType: "json",
		success: function(data){
			if($(data.members).length){
				consoleLog('<span class="highlight">Got '+data.members.length+
					' Steam Members for Steam Group:</span> '+group);
				$.each(data.members,function(key,val){
					steamGetUser(val);
				});
			} else {
				consoleLog('<span class="highlight">Failed to get Members List for </span>'+
					group+' <span class="highlight">Steam Community might be b0rked</span> ');
				$('#steamcommunity').append('Offline');
				steamShowCommunity();
			}
		},
		error: function(){
			consoleLog('<span class="highlight">Failed to get Members List for </span>'+
				group+' <span class="highlight">Steam Community might be b0rked</span> ');
			$('#steamcommunity').append('Offline');
			steamShowCommunity();
		}
	});

}

function steamShowCommunity (){
	$('#steamcommunity img').tipTip({maxWidth: "auto", edgeOffset: 5});
	$('#steamcommunity').slideDown();
	$('#steamcommunity_loading').hide();
}

//
// Game Finder -------------------------------------------------------------------------------------
//
function steamGameFinder (){
	var ids=[];
	$('#steamgamefinder_members img').each(function(){
		if($(this).hasClass('selected'))
			ids.push($(this).attr('alt'));
	});
	
	if(!ids.length){
		$("#dialogtext").html('<br><center>No Members Selected</center>');
		$("#dialog").dialog({
			title: 'Steam Game Finder',
			resizable: false,
			closeOnEscape: true,
			height: 150,
			width: 300,
			autoOpen: true,
			modal: true,
			buttons: {"Ok": function() { $(this).dialog("close");}}
		});
		return;
	}
	$('#steamgamefinderupdate').slideUp('fast');
	$('#steamgamefinder_games_loading').slideDown('fast',function(){
		$('#steamgamefinder_games').slideUp('fast',function(){
			$(this).html('');
			$.post(__SITEROOT__+'Steam.itf?request=gamecommonfinderbyid',
				{steamids:ids},function(data){
				var matching=0;
				if(data.games!==undefined)
					matching=data.games.length;
				$('#steamgamefinder_games').append('<h4>Matching Games ('+matching+')</h4>');
				if(data.result=='success'){
					$(data.games).each(function(key,game){
						var userlist=game.userlist.split(',');
						var alsoownsthisgame='';
						$(userlist).each(function(i,v){
							if(i==8){
								alsoownsthisgame+=' (+'+(userlist.length-8)+' more)';
							}else if(i<8){
								alsoownsthisgame+=sapi_membericons[v];
							}
						});
						$('#steamgamefinder_games').append(
							'<div align="center" class="gameline"><div class="gamelogo"><a href="'+
							game.appstorelink+'"><img src="'+game.applogo+'" width="184" height="69"></a></div>'+
							'<div class="gameinfo"><div class="gamename"><a href="'+game.appstorelink+'">'+
							game.appname+'</a></div><div class="alsoownsthisgame">'+alsoownsthisgame+
							'</div></div></div>');
					});
				} else {
					$('#steamgamefinder_games').append('<div align="center">No Common Games Found</div>');
				}
				$('#steamgamefinder_games img').tipTip({maxWidth: "auto", edgeOffset: 5});
				$('#steamgamefinder_games_loading').slideUp('fast',function(){
					$('#steamgamefinderupdate').slideDown('fast');
					$('#steamgamefinder_games').slideDown();
				});
			},'JSON');
		});
	});
}
function steamShowGameFinderMembers (){
	$('#steamgamefinder_members_loading').hide();
	$('#steamgamefinder_members img').tipTip({maxWidth: "auto", edgeOffset: 5});
	$('#steamgamefinder_members img').each(function(){
		$(this).click(function(){$(this).toggleClass('selected').toggleClass('offline');});
	});
	$('#steamgamefinder_members').append('<div class="spacer"></div><div class="clearfix" '+
		'align=right" id="steamgamefinderupdate"><input type="button" id="b_steamgamefinderupdate" '+
		'value="Find Games"></div>');
	$('#b_steamgamefinderupdate').button().click(steamGameFinder);
	$('#steamgamefinder_members').slideDown();
}
function steamUpdateGameFinder (){
	if(!sapi_steamids.length)
		return;
	$.post(__SITEROOT__+'Steam.itf?request=updateusergameslist',
		{steamids:sapi_steamids},function(data){
		consoleLog('<span class="highlight">Steam Update Games List:</span> '+data.result);
	},'JSON');
}

