/* SocNet Supporting JS - a selection of the original SocNet JS */

/* 
 * 
 * from __sn.js 
 * 
 *
 */
var randDARTNumber=0;
function genSetRandDARTNumber()
{
	randDARTNumber = Math.round(Math.random()*1000000000000);
}
genSetRandDARTNumber();

/* 
 * 
 * from sn_user.js 
 * 
 *
 */
 
 
/*
SN User Data Handling
*/

// cookie functions
function sn_createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function sn_readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function sn_eraseCookie(name) {
	sn_createCookie(name,"",-1);
}

// user data object
var sn_UserData = function(a, b, c, d, e, f, g) {
	this.a = a;
	this.b = b;
	this.c = c;
	this.d = d;
	this.e = e;
	this.f = f;
	this.g = g;
}

// extract cookie data
if (sn_readCookie('sn_nbc_b'))
{
	var sn_cookieData = unescape(sn_readCookie('sn_nbc_b')).split('|');

	// create new user data object with data from cookie
	var sn_currentUserData = new sn_UserData(sn_cookieData[1], sn_cookieData[2], sn_cookieData[3], sn_cookieData[4], sn_cookieData[5], sn_cookieData[6], sn_cookieData[7]);
}

// dart
var sn_dart_group_text = '';
if (sn_currentUserData)
{
	if (sn_currentUserData.b)
	{
		sn_dart_group_text += ('group=' + sn_currentUserData.b + ';');
	}
	if (sn_currentUserData.c)
	{
		sn_dart_group_text += ('group=' + sn_currentUserData.c + ';');
	}
	if (sn_currentUserData.d)
	{
		sn_dart_group_text += ('group=' + sn_currentUserData.d + ';');
	}
	if (sn_currentUserData.e)
	{
		sn_dart_group_text += ('group=' + sn_currentUserData.e + ';');
	}
	if (sn_currentUserData.f)
	{
		sn_dart_group_text += ('group=' + sn_currentUserData.f + ';');
	}
}

// Send to friend 
function sn_ajax_sendGameToFriendPopUp() {
	 showAlertBoxBG();

	var htmlBody = "<span>Enter friend's email:</span>";
	htmlBody += "<input type='test' value='' id='send_to_friend_email'>";
	confirmPopup (htmlBody, sn_ajax_sendGameToFriend);
}

function sn_ajax_sendGameToFriend() {
		$jq.ajax({
	   type: "POST",
	   url: "/contacts/act/sendGame",
	   data: "sn_currentGameUUID="+sn_currentGameUUID+
	   "&friendEmail="+document.getElementById("send_to_friend_email").value,
	   success: sn_ajax_sendGameToFriend_callback
	 });
}


function sn_ajax_sendGameToFriend_callback(msg) {
	if (msg.indexOf('&') != -1)
	{
		var msgParts = msg.split('&');
		var successParts = msgParts[0].splitFirst('=');
		var messageParts = msgParts[1].splitFirst('=');
	}
	var message = unescape(messageParts[1]);
	if(successParts[1]=='1')
		sendAlert(message,'good', 300000);
	else
		sendAlert(message,'bad', 300000);
}


// Save game as favorite
function sn_ajax_saveAsFavoriteGamePopUp() {
	var htmlBody = "<span>Save this game as favorite?</span>";
	confirmPopup (htmlBody, sn_ajax_saveAsFavoriteGame);
	//$jq('#game_wrapper').hide();
	showAlertBoxBG();
}

function sn_ajax_saveAsFavoriteGame() {
		$jq.ajax({
	   type: "POST",
	   url: "/games/act/addFavoriteGame",
	   data: "gameUUID="+sn_currentGameUUID,
	   success: sn_ajax_saveAsFavoriteGame_callback
	 });

}


function sn_ajax_saveAsFavoriteGame_callback(msg) {
	if (msg.indexOf('&') != -1)
	{
		var msgParts = msg.split('&');
		var successParts = msgParts[0].splitFirst('=');
		var messageParts = msgParts[1].splitFirst('=');
	}
	var message = unescape(messageParts[1]);
	if(successParts[1]=='1')
		sendAlert(message,'good', 300000);
	else
		sendAlert(message,'bad', 300000);
}


// -------------------------------------------------------------

function sn_ajax_addMember(contactName, contactFlag)
{
	if(contactFlag == "true"){
		confirmPopup('Are you sure you want to follow this member?',sn_ajax_addMemberCallback);
	}else{
		confirmPopup('Are you sure you want add this member?',sn_ajax_addMemberCallback);
	}
	function sn_ajax_addMemberCallback()
	{
		$jq.ajax({
	   type: "POST",
	   url: "/contacts/act/addMember",
	   data: "add=" + contactName + "&fanFlag=" + contactFlag,
	   success: sn_ajax_callback_multiple
	 });
	}
}

function sn_ajax_blockMember(contactName)
{
	confirmPopup('Are you sure you want to block this user?',sn_ajax_blockMemberCallback);
	function sn_ajax_blockMemberCallback()
	{
		$jq.ajax({
	   type: "POST",
	   url: "/contacts/act/block",
	   data: "contactName=" + contactName,
	   success: sn_ajax_callback
	 });
	}
}

function sn_ajax_flagProfile(userName)
{
	confirmPopup('Are you sure you want to flag this user?',sn_ajax_flagProfileCallback);
	function sn_ajax_flagProfileCallback()
	{
		$jq.ajax({
	   type: "POST",
	   url: "/flagging/flagProfile",
	   data: "userName=" + userName,
	   success: sn_ajax_callback
	 });
	}
}

/*
 * 
 * 
 * support functions for messaging and popups 
 * 
 * 
 * 
 */

function sn_ajax_callback(msg)
{
	if (msg.indexOf('&') != -1)
	{
		var msgParts = msg.split('&');

		var successParts = msgParts[0].splitFirst('=');
		var messageParts = msgParts[1].splitFirst('=');
		
		var message = unescape(messageParts[1]);
		var labelParts = msgParts[2].splitFirst('=');
		if(labelParts[0]=='action_label')
		{
			var urlParts = msgParts[3].splitFirst('=');
			if(urlParts[0]=='action_url')
			{
				message+='<br/><a href="'+urlParts[1]+'">'+unescape(labelParts[1])+'</a>';
			}
		}
		
		if (successParts[0] == 'success' && successParts[1] == 1)
		{
			// success		
			sendAlert(message, 'good', 300000);
			sn_ajax_callback_login_form(msgParts);
			return 1;
		}
		else if (successParts[0] == 'success' && successParts[1] == 0)
		{
			// failure
			sendAlert(message, 'bad', 300000);
			sn_ajax_callback_login_form(msgParts);
			return 0;
		}
	}
}

function sn_ajax_callback_multiple(msg)
{
	if (msg.indexOf('&') != -1)
	{
		var msgParts = msg.split('&');
		

		var successParts = msgParts[0].splitFirst('=');
		var messageParts = msgParts[1].splitFirst('=');
		
		if (successParts[0] == 'success' && successParts[1] == 1)
		{
			// success
			var message = unescape(messageParts[1]);
			var labelParts = msgParts[2].splitFirst('=');
			if(labelParts[0]=='action_label')
			{
				var urlParts = msgParts[3].splitFirst('=');
				if(urlParts[0]=='action_url')
				{
					message+='<br/><a href="'+unescape(urlParts[1])+'">'+unescape(labelParts[1])+'</a>';
				}
				}
			var redirect_message=sn_ajax_callback_redirect(msgParts)
			if(redirect_message)
			{
				message+='<br/>'+redirect_message;
			}
			sendAlert(message, 'good', 300000);
			sn_ajax_callback_login_form(msgParts);
			return 1;
		}
		else if (successParts[0] == 'success' && successParts[1] == 0)
		{
			// failure
			var i;
			var message='';
			for(i=1;i<msgParts.length;i++)
			{
				messageParts = msgParts[i].splitFirst('=');
				if(messageParts[0]=='error')
				{
					message+=unescape(messageParts[1])+'<br/>';
				}
			}
			sendAlert(message, 'bad', 300000);
			sn_ajax_callback_login_form(msgParts);
			return 0;
		}
	}
	return 0;
}

function sn_ajax_callback_redirect(msgParts)
{
	var redirectUrl='';
	var wait=0;
	var message='';
	for(i=0;i<msgParts.length;i++)
	{
		if(msgParts[i].splitFirst('=')[0]=='redirect')
		{
			redirectUrl=msgParts[i].splitFirst('=')[1];
		}
		if(msgParts[i].splitFirst('=')[0]=='redirect_wait')
		{
			wait=msgParts[i].splitFirst('=')[1];
		}
		if(msgParts[i].splitFirst('=')[0]=='redirect_message')
		{
			message=msgParts[i].splitFirst('=')[1];
		}
	}
	if(!isNaN(wait) && wait>0 && redirectUrl!='')
	{	
		setTimeout(function(){top.location=redirectUrl;},wait);
		if(message)
		{
			message=unescape(message);
			return message.replace(/%seconds%/,wait/1000);
		}
		else
		{
			return 0;
		}
	}
	else if(wait<0 && redirectUrl!='')
	{
		//do nothing
	}	
	else if(wait==0 && redirectUrl!='')
	{
		top.location=redirectUrl;
	}
	return 0;
}

function sn_ajax_callback_login_form(msgParts)
{
	for(i=0;i<msgParts.length;i++)
	{
		if(msgParts[i].splitFirst('=')[0]=='display_login_form')
		{
			if(msgParts[i].splitFirst('=')[1])
			{
				
				$jq.ajax({
					async: false,
				  type: "GET",
				  url: '/accounts/display-ajax-login',
				  data: "ii="+Math.floor(Math.random()*50000),
				success: function(msg){
							$jq('#sn_alert_messages').after(msg);
						}	
				});
			}
		}
	}
}
//////////////////////////////////////////
//  SHOW ALERT BOX WITH DARK BACKGROUND
//////////////////////////////////////////
var alertBoxBG = new Element('div');
function showAlertBoxBG() {
	alertBoxBG.setStyle('position', 'absolute');
	alertBoxBG.setStyle('z-index', '20');
	alertBoxBG.setStyle('height', $('container').getCoordinates().height + 'px');
	alertBoxBG.setStyle('width', '100%');
	alertBoxBG.setStyle('background', '#000');
	
	if (window.gecko) {
		// use a background tile fill png in firefox to prevent rendering issues with flash...
		alertBoxBG.setStyle('background', 'url(' + sn_img_base_url + '/fill/000000_80.png)');
	} else {
		alertBoxBG.setOpacity(0.8);
	}
	alertBoxBG.injectAfter(document.body);	
	$jq('#game_wrapper').hide(); 
}

function hideAlertBoxBG() {
	$jq('#game_wrapper').show();
	alertBoxBG.remove();
}

////////////////////////////////////////////////////////////////////////
var confirmPopup = function(mess,callback){
		
		if (typeof callback != 'function') {
			var follow=callback;
			callback = function() { window.location.href = follow; }
		}
		
		$jq('#container').before('<div class="sn_alert_pop"  style="display:none;" id="sn_alert_popID">'+mess+'<span id="close-style-box">X</span><p><form><input type="button" id="sn_alert_button_yes" value="Yes" />&nbsp;<input type="button" id="sn_alert_button_no" value="No" /></form></p></div>')
		$jq('.sn_alert_pop').fadeIn('fast');
		$jq('#close-style-box').click(function(){$jq('.sn_alert_pop').remove();hideAlertBoxBG();});
		$jq('#sn_alert_button_yes').click(function(){callback();$jq('.sn_alert_pop').remove();return true;});
		$jq('#sn_alert_button_no').click(function(){$jq('.sn_alert_pop').remove(); hideAlertBoxBG(); });

}
var confirmPopupTrueFalse = function(mess,trueCallBack,falseCallBack){
		if (typeof trueCallBack != 'function') {
			var followTrue=trueCallBack;
			trueCallBack = function() { window.location.href = followTrue; }
		}
		if (typeof falseCallBack != 'function') {
			var followFalse=falseCallBack;
			falseCallBack = function() { window.location.href = followFalse; }
		}
		
		$jq('#container').before('<div class="sn_alert_pop"  style="display:none" id="sn_alert_popID">'+mess+'<span id="close-style-box">X</span><p><form><input type="button" id="sn_alert_button_yes" value="Yes" />&nbsp;<input type="button" id="sn_alert_button_no" value="No" /></form></p></div>')
		$jq('.sn_alert_pop').fadeIn('fast');
		$jq('#close-style-box').click(function(){$jq('.sn_alert_pop').remove();});
		$jq('#sn_alert_button_yes').click(function(){$jq('.sn_alert_pop').remove();trueCallBack();return true;});
		$jq('#sn_alert_button_no').click(function(){$jq('.sn_alert_pop').remove();falseCallBack(); return false;});

}

String.prototype.splitFirst=function(split)
{ 
	var i=this.indexOf(split);
	if(i!=-1)
	{
		var retval=new Array();
		var length=this.length;
		if(i+1<length)
		{
			retval[0]=this.substring(0,i);
			retval[1]=this.substring(i+1);
		}
		else if(i+1==length)
		{
			retval[0]=this.substring(0,i);
			retval[1]='';
		}
		else
		{
			retval[0]=this;
			retval[1]='';
		}
		return retval;
	}
	else
	{
		return new Array(this,'');
	}
}

//alerts
var sendAlert = function(mess, typeOf, timing){
		$jq(".sn_alert_pop").remove();
		$jq(".sn_alert_pop2").remove();
		if (typeOf == 'good') {
			$jq('#container').before('<div class="sn_alert_pop" style="display:none"  id="sn_alert_popID"><div id="sn_alert_messages">'+mess+'</div><span id="close-style-box">X</span></div>')
			$jq('.sn_alert_pop').fadeIn('slow').animate({opacity: 1.0}, timing).fadeOut('slow', function(){if(this.parentNode){$jq(this).remove();}});
		}
		else if (typeOf == 'bad') {
			$jq('#container').before('<div class="sn_alert_pop2"  style="display:none"  id="sn_alert_popID"><div id="sn_alert_messages">'+mess+'</div><span id="close-style-box">X</span></div>')
			$jq('.sn_alert_pop2').fadeIn('slow').animate({opacity: 1.0}, timing).fadeOut('slow', function(){if(this.parentNode){$jq(this).remove();}});
		}
		$jq('#close-style-box').click(function(){$jq('#sn_alert_popID').remove();if($("game_wrapper")) {hideAlertBoxBG();} })
}	
var xPos=0;
var yPos=0;
jQuery(document).ready(function(){
	$jq().click(function(e){
		xPos=e.pageX;
		yPos=e.pageY;
	}); 
})
var sendAlertAtCursor = function(mess){
	$jq(".sn_alert_pop").remove();
	$jq(".sn_alert_pop2").remove();
	//alert(xPos+" "+yPos);
	$jq('#container').before('<div class="sn_alert_pop" style="display:none" id="sn_alert_popID">'+mess+'<span id="close-style-box">X</span></div>');

	$jq('#sn_alert_popID').css("position","absolute");
	$jq('#sn_alert_popID').css("left",(xPos+($jq('#sn_alert_popID').width()/2)));
	$jq('#sn_alert_popID').css("top",(yPos));


	$jq('#sn_alert_popID').fadeIn('slow');
	$jq('#close-style-box').click(function(){$jq('#sn_alert_popID').remove();});

}
var sendAlertAtCursorDemote= function(mess){
	$jq(".sn_alert_pop").remove();
	$jq(".sn_alert_pop4").remove();

	//alert(xPos+" "+yPos);
	$jq('#container').before('<div class="sn_alert_pop4" style="display:none" id="sn_alert_popID">'+mess+'<span id="close-style-box">X</span></div>');

	$jq('#sn_alert_popID').css("position","absolute");
//	$jq('#sn_alert_popID').css("left",(xPos+($jq('#sn_alert_popID').width()/2)));
//	$jq('#sn_alert_popID').css("top",(yPos));
  	$jq('#sn_alert_popID').css("left",1200);
  $jq('#sn_alert_popID').css("top",(550));
	$jq('#sn_alert_popID').fadeIn('slow');
	$jq('#close-style-box').click(function(){$jq('#sn_alert_popID').remove();});

}

// Character counter
	/**
	 * attaches a character counter to each textarea element in the jQuery object
	 * usage: $("#myTextArea").charCounter(max, settings);
	 */

		$jq.fn.charCounter = function(max, settings) {
			max = max || 100;
			settings = $jq.extend({
				container: "<em>",
				classname: "sn_charcount",
				format: "(%1 characters remaining)",
				pulse: true
			}, settings);
			var p;

			function count(el, container) {
				el = $jq(el);
				if (el.val().length > max) {
				    el.val(el.val().substring(0, max));
				    if (settings.pulse && !p) {
				    	pulse(container, true);
				    };
				};
				container.html(settings.format.replace(/%1/, (max - el.val().length)));
			};

			function pulse(el, again) {
				if (p) {
					window.clearTimeout(p);
					p = null;
				};
				el.animate({ opacity: 0.1 }, 100, function() {
					$jq(this).animate({ opacity: 1.0 }, 100);
				});
				if (again) {
					p = window.setTimeout(function() { pulse(el) }, 200);
				};
			};

			return this.each(function() {
				var container = (!settings.container.match(/^<.+>$/)) 
					? $jq(settings.container) 
					: $jq(settings.container)
						.insertAfter(this)
						.addClass(settings.classname);
				$jq(this)
					.bind("keydown", function() { count(this, container); })
					.bind("keypress", function() { count(this, container); })
					.bind("keyup", function() { count(this, container); })
					.bind("focus", function() { count(this, container); })
					.bind("mouseover", function() { count(this, container); })
					.bind("mouseout", function() { count(this, container); })
					.bind("paste", function() { 
						var me = this;
						setTimeout(function() { count(me, container); }, 10);
					});
				if (this.addEventListener) {
					this.addEventListener('input', function() { count(this, container); }, false);
				};
				count(this, container);
			});
		};


/* gameplay ajax calls */
var sn_currentMatchUUID = '';
var sn_challengedPlayerUUID = '';

function sn_games_startGame(personUUID, gameUUID)
{
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/startgame",
	   data: "personUUID=" + personUUID + "&gameUUID=" + gameUUID,
	   success: function(msg) {
			if (msg == 'error')
			{
				sendAlert('There was an error starting the game. Please try again', 'bad', 30000);
			}
			else
			{
				sn_currentMatchUUID = msg;
			}
	   }
	});
}


//////////////////////////////////////
//    sn_games_getGameEndResults
//////////////////////////////////////
function sn_games_getGameEndResults(matchUUID, playerUUID,type)
{
	sn_games_showHideEndGameScreen(false); // Hide game wrapper and show end game screen
	//alert("sn_games_getGameEndResults called: "+type);
	//wrapperFlash.advance()
	//alert("#@#@#");
	//return;
	if(type==false)
		type="score";
	var random = Math.round(Math.random()*1000000000000);
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/getGameEndResults",
	   data: "matchUUID=" + matchUUID + "&playerUUID=" + playerUUID + "&type=" + type + "&random=" + random,
	   success: function(msg) {
		// --- Reset all html objects ---
				// Hide the add
		document.getElementById("endGameContainer_Window_endGameAd_container").style.display = "block"; 
		document.getElementById("endGameContainer_results_div").style.display = "block";
		document.getElementById("endGameContainer_WinnerComment_Div").style.display = "none";
		// ---
		var msg_title = msg.getElementsByTagName("title")[0].firstChild.nodeValue;
		var msg_summary = msg.getElementsByTagName("summary")[0].firstChild.nodeValue;
		var msg_final_menu = msg.getElementsByTagName("finalMenu")[0].firstChild.nodeValue;
		// --- Prepare the right side buttons ---
		var endGameButtonsContainer = document.getElementById("endGameContainer_playagainDoneButtons");
		//btn_html = '<p><a href="#"><img src="/themes/ca/images/endGameScreen_playagain.gif" width="120" height="24" border="0"/></a></p>';
		var btn_html = '<p style="padding-top:65px;"><a href="javascript:sn_games_showHideEndGameScreen(true)"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';
		endGameButtonsContainer.innerHTML = btn_html;
		switch(type) {
			case "score":
				var msg_playerAvatar = msg.getElementsByTagName("playerAvatar")[0].firstChild.nodeValue;
				msg_summary += "<div class='endGameOnePlayerAvatar'><img src='"+msg_playerAvatar+"' border='0' /></div>";
				break;
			case "challenge":
				// --- Prepare the results screen				
				var msg_playerAvatar = msg.getElementsByTagName("playerAvatar")[0].firstChild.nodeValue;
				var msg_opponentAvatar = msg.getElementsByTagName("opponentAvatar")[0].firstChild.nodeValue;

				msg_summary += "<div class='endGameAvatarContainer'>";
				msg_summary += "<div class='endGameAvatar'><img src='"+msg_playerAvatar+"' width='80' height='80' border='0'/></div>";
				msg_summary += "<div class='endGameVsText'><b>VS</b></div>";
				msg_summary += "<div class='endGameAvatar'><img src='"+msg_opponentAvatar+"' width='80' height='80' border='0'/></div>";
				msg_summary += "</div>";
				if(msg_final_menu == 1) { // --- Challenge issued ---
					document.getElementById("endGameContainer_Score_Div").style.display = "none"    // Hide the star
					document.getElementById("endGameContainer_Comment_Div").style.display = "none"; // Hide the comment text area
				}
				else {			     // --- Challenge received ---
					// -- 
					if(msg.getElementsByTagName("win")[0].childNodes.length!=0)
						var msg_win = msg.getElementsByTagName("win")[0].firstChild.nodeValue;
					else 
						var msg_win = 0;
					// -- Points Earned
					if(msg.getElementsByTagName("award")[0].childNodes.length!=0)
						var award = msg.getElementsByTagName("award")[0].firstChild.nodeValue;
					else
						var award = 0;
					document.getElementById("endGameContainer_Score_field").innerHTML = "<b>+"+award+"</b>";
					document.getElementById("endGameContainer_Score_Div").style.display = "block";				
					if(msg_win == 1) { // Won the challenge
						document.getElementById("endGameContainer_Comment_Div").style.display = "block";
						var on_click = "sn_games_EndGameScreen_addComment('"+playerUUID+"', '"+matchUUID+"')";
						//endGameButtonsContainer.innerHTML = '<p style="padding-top:65px;"><a href="/games/'+sn_currentGameUUID+'"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';					
						endGameButtonsContainer.innerHTML = '<p style="padding-top:65px;"><a href="javascript:'+on_click+'"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';					
					}		     
					else {		    // Lost the challenge
						endGameButtonsContainer.innerHTML = '<p style="padding-top:65px;"><a href="/games/'+sn_currentGameUUID+'"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';					
					}
				}
				break;

		}

		document.getElementById("endGameContainer_Window_header").innerHTML = msg_title;
		document.getElementById("endGameContainer_Window_summary").innerHTML = msg_summary;

		document.getElementById("endGameAdIframe").src = "/gbl/adEndGame";
		document.getElementById("endGameContainer").style.display = "block";
		//document.getElementById("game_wrapper_container").style.display = "none";

		//var r = msg.documentGetElementById("title").innerHTML
	   	//wrapperJS.loadGameResults(wrapperJS);
		// Call getGameEndResults
	   }
	});
}


function sn_games_EndGameScreen_addComment(playerUUID, matchUUID) {
	var message = document.getElementById("endGameContainer_Comment_TextArea").value;
	if(message !="") {
		$jq.ajax({
		   type: "POST",
		   url: "/games/act/AddChallengeComment",
		   data: "matchUUID=" + matchUUID + "&playerUUID=" + playerUUID + "&message=" + message,
		   success: function(msg) {
				// --- Prepare the right side buttons ---
				var endGameButtonsContainer = document.getElementById("endGameContainer_playagainDoneButtons");
				//btn_html = '<p><a href="#"><img src="/themes/ca/images/endGameScreen_playagain.gif" width="120" height="24" border="0"/></a></p>';
				//var btn_html ='<p style="padding-top:65px;"><a href="javascript:sn_games_showHideEndGameScreen(true)"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';
				var btn_html = '<p style="padding-top:65px;"><a href="/games/'+sn_currentGameUUID+'"><img src="/themes/ca/images/endGameScreen_done.gif" width="120" height="24" border="0"/></a></p>';

				endGameButtonsContainer.innerHTML = btn_html;
				// Hide the add
				document.getElementById("endGameContainer_Window_endGameAd_container").style.display = "none"; 
				// --- Show Message ----
				var msg_title = msg.getElementsByTagName("title")[0].firstChild.nodeValue;
				var msg_summary = msg.getElementsByTagName("summary")[0].firstChild.nodeValue;	
				document.getElementById("endGameContainer_WinnerComment_header").innerHTML = msg_title;
				document.getElementById("endGameContainer_WinnerComment_summary").innerHTML = msg_summary;
				document.getElementById("endGameContainer_results_div").style.display = "none";
				document.getElementById("endGameContainer_WinnerComment_Div").style.display = "block";
			}
		});
	}
	else {
		sn_games_showHideEndGameScreen(true);
	}

}


function sn_games_showHideEndGameScreen(hide) {
	if(hide == true) { // Hide end game screen		
		//alert(" ");
		document.getElementById("endGameContainer_Score_Div").style.display = "none";	
		//alert(" ");	
		document.getElementById("endGameContainer_Comment_Div").style.display = "none";
		//document.getElementById("game_wrapper_container").style.display = "block";
		//alert(" ");
		document.getElementById("endGameContainer").style.display = "none";			// Hide the whole End Game screen
		//GameWrapper.advance();
		//setTimeout("wrapperFlash.advance()", 2000);
		wrapperFlashContainer.setStyle('left', '')
		//alert(" ");
		//wrapperFlash.advance();
		wrapperJS.initialize();
	}
	else {		     // Show end game screen
		wrapperFlashContainer.setStyle('left', '-2000px')		
		document.getElementById("endGameContainer").style.display = "block";
		//document.getElementById("game_wrapper_container").style.display = "none";
	}
}


function sn_games_endGame(matchUUID, personUUID, score, numberOfTries, startTime, stopTime, playerMessage, challengeMode)
{
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/endgame",
	   data: "matchUUID=" + matchUUID + "&personUUID=" + personUUID + "&score=" + score + "&numberOfTries=" + numberOfTries + "&startTime=" + startTime + "&stopTime=" + stopTime + "&playerMessage=" + playerMessage,
	   success: function(msg) {
	   	//wrapperJS.loadGameResults(wrapperJS);
		// Call getGameEndResults		
		var type = "score";
		if(challengeMode == true)
			type="challenge"
		sn_games_getGameEndResults(matchUUID, personUUID, type); // show End Game Screen
	   }
	});
}


function sn_games_startChallenge(challengerUUID, challengedPlayerUUID)
{
	sn_challengedPlayerUUID = challengedPlayerUUID;
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/startgame",
	   data: "personUUID=" + challengerUUID + "&gameUUID=" + sn_currentGameUUID,
	   success: function(msg) {
			if (msg == 'error')
			{
				sendAlert('There was an error starting the challenge. Please try again', 'bad', 30000);
			}
			else
			{
				sn_currentMatchUUID = msg;
				$jq.ajax({
				   type: "POST",
				   url: "/games/act/startchallenge",
				   data: "matchUUID=" + sn_currentMatchUUID + "&challengedPlayerUUID=" + sn_challengedPlayerUUID + "&challengerUUID=" + sn_currentUserData.a+"&gameUUID="+sn_currentGameUUID,
				   success: sn_ajax_callback
				});
			}
	   }
	});
}
function sn_games_declineChallenge(matchUUID, challengedPlayerUUID, replyMessage)
{
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/declinechallenge",
	   data: "matchUUID=" + matchUUID + "&challengedPlayerUUID=" + challengedPlayerUUID + "&replyMessage=" + replyMessage,
	   success: sn_ajax_callback
	});
}
function closeGallery() {
	GameDetailsView.remove();
}
function sn_games_contacts(userName, fanFlag)
{
	if(fanFlag == 'true')
	{
		$jq('div#people_content_menu .on_left').hide();
		
	}
	else
	{
		$jq('div#people_content_menu .on_left').show();
	}
	
	$jq.ajax({
	   type: "POST",
	   url: "/contacts/act/list",
	   data: "userName=" + userName + "&fanFlag=" + fanFlag ,
	   success: function(content) {
		   $jq('div#people_content_list0').html(content);
	   }
	});
}
function sn_games_challenges(userName, flag)
{
	$jq.ajax({
       type: "POST",
	   url: "/games/act/list",
	   data: "userName=" + userName + "&flag=" + flag,
       success: function(content) {
		   $jq('div#challenges_content_list0').html(content);
		   $jq('div#challenges_content_menu').html('<a href="challenges/'+userName+'?show='+flag+'" class="on_right" style="visibility: visible">MORE</a>');
	   }
	});
}
function sn_games_addChallengeComment(matchUUID, playerUUID, message)
{
	$jq.ajax({
	   type: "POST",
	   url: "/games/act/addchallengecomment",
	   data: "matchUUID=" + matchUUID + "&playerUUID=" + playerUUID + "&message=" + message,
	   success: sn_ajax_callback
	});
}
/************************************************/
function sn_ajax_deleteContact(contactName)
{   //contactNames may be a comma delimited sequence of user names.
	var displayContacts = contactName;
	var wordUser = 'user';
	var arrayContacts = [];
	if (contactName.indexOf(',') > 0) {
		//explode on the comma
		arrayContacts = contactName.split(",");
		//alert(arrayContacts.length+' '+arrayContacts[0]);
		displayContacts = arrayContacts.join(", ");
		wordUser = "users";
	} else {
		arrayContacts[0] = contactName;
	}
	confirmPopup('Are you sure you want to remove the '+wordUser +' '+displayContacts+' from your contacts?',sn_ajax_deleteContactCallback);
	function sn_ajax_deleteContactCallback()
	{
		for (i=0;i<arrayContacts.length;i++) {
		 	$jq.ajax({
		   		type: "POST",
				url: "/contacts/act/delete",
				data: "contactName=" + arrayContacts[i],
		  		success: function(msg)
					{
						if(sn_ajax_callback_multiple(msg)==1)
						{
							
						}
					}
		 		});
	 	} // end for loop
	}
}
function gl_ajax_deleteContact(contactName)
{ //contactNames may be a comma delimited sequence of user names.
	var displayContacts = contactName;
	var wordUser = 'user';
	var arrayContacts = [];
	if (contactName.indexOf(',') > 0) {
		//explode on the comma
		arrayContacts = contactName.split(",");
		//alert(arrayContacts.length+' '+arrayContacts[0]);
		displayContacts = arrayContacts.join(", ");
		wordUser = "users";
	} else {
		arrayContacts[0] = contactName;
	}
	//got to call back cancel (restore) function if NO is pressed
	confirmPopupTrueFalse('Are you sure you want to remove the '+wordUser +' '+displayContacts+' from your contacts?',gl_ajax_deleteContactCallback,gl_ajax_restoreContactCallback);
	function gl_ajax_deleteContactCallback()
	{
		ce_ajax_flush();
		for (i=0;i<arrayContacts.length;i++) {
		 	$jq.ajax({
		   		type: "POST",
				url: "/contacts/act/delete",
				data: "contactName=" + arrayContacts[i],
		  		success: function(msg)
					{
						if(sn_ajax_callback_multiple(msg)==1)
						{
							
						}
					}
		 		});
	 	} // end for loop
	}
	function gl_ajax_restoreContactCallback()
	{
		//alert ("NO to pop up confirmation! returning (string)cancel");
		//CollectionEditor.restore();
		ce_ajax_restore();
	}
}


////////////////////////////////////
//   Remove Favorite Games
////////////////////////////////////

function gl_ajax_deleteFavoriteGame(favoriteGame)
{ //favoriteGame may be a comma delimited sequence of game friendlyURLNames.
	var displayGames = favoriteGame.split('|')[1];
	var wordGames = 'game';
	var arrayGames = [];
	if (favoriteGame.indexOf(',') > 0) {
		//explode on the comma
		displayGames ="";
		var arrayGames_tmp = favoriteGame.split(",");
		for(var q=0;q<arrayGames_tmp.length;q++) {
			arrayGames.push(arrayGames_tmp[q].split('|')[0]);
			displayGames += ", " + arrayGames_tmp[q].split('|')[1];
		}
		displayGames = displayGames.substring(1);
		wordGames = "games";
	} else {
		arrayGames[0] = favoriteGame.split('|')[0];
	}
	confirmPopupTrueFalse('Are you sure you want to remove the '+wordGames +' '+displayGames+'?',gl_ajax_deleteFavoriteGameCallback,gl_ajax_restoreContactCallback);
	function gl_ajax_deleteFavoriteGameCallback()
	{
		ce_ajax_flush();
		for (i=0;i<arrayGames.length;i++) {
		 	$jq.ajax({
		   		type: "POST",
				url: "/games/act/deleteFavoriteGame",
				data: "gameUUID=" + arrayGames[i],
		  		success: function(msg)
					{
						if(sn_ajax_callback_multiple(msg)==1)
						{
							
						}
					}
		 		});
	 	} // end for loop
	}
	function gl_ajax_restoreContactCallback()
	{
		//alert ("NO to pop up confirmation! returning (string)cancel");
		//CollectionEditor.restore();
		ce_ajax_restore();
	}
}




function gl_ajax_deleteFollower(contactName)
{ //contactNames may be a comma delimited sequence of user names.
	var displayContacts = contactName;
	var wordUser = 'user';
	var arrayContacts = [];
	if (contactName.indexOf(',') > 0) {
		//explode on the comma
		arrayContacts = contactName.split(",");
		//alert(arrayContacts.length+' '+arrayContacts[0]);
		displayContacts = arrayContacts.join(", ");
		wordUser = "users";
	} else {
		arrayContacts[0] = contactName;
	}
	//got to call back cancel (restore) function if NO is pressed
	confirmPopupTrueFalse('Are you sure you want to stop following the '+wordUser +' '+displayContacts+'?',gl_ajax_deleteFollowerCallback,gl_ajax_restoreContactCallback);
	function gl_ajax_deleteFollowerCallback()
	{
		ce_ajax_flush();
		for (i=0;i<arrayContacts.length;i++) {
		 	$jq.ajax({
		   		type: "POST",
				url: "/contacts/act/deleteFollower",
				data: "contactName=" + arrayContacts[i],
		  		success: function(msg)
					{
						if(sn_ajax_callback_multiple(msg)==1)
						{
							
						}
					}
		 		});
	 	} // end for loop
	}
	
	function gl_ajax_restoreContactCallback()
	{
		//alert ("NO to pop up confirmation! returning (string)cancel");
		//CollectionEditor.restore();
		ce_ajax_restore();
	}
}

jQuery.fn.extend({
	escapeVal: function(){ return(this.val().replace(/&/g,"%26"));}
})	

function sn_ajax_busy(divID, visible, msg)
{
        var busyImg = '<img src="' + sn_img_base_url + '/ajax_busy.gif">';

        if (visible)
        {
                $jq(divID).css("display","none");
				$jq(divID).append('<span style="">' + busyImg + '</span>')
                if (msg.length > 0)
                {
                        $jq(divID).css({ padding: "5px", textAlign: "center"});
                        $jq(divID).append('<span style="padding-left: 5px;">' + msg + '</span>');
                }
				$jq(divID).slideDown();
        }
        else
        {
				if(msg!='remove')
				{
                	$jq(divID).slideUp('normal',function(){$jq(divID).children().remove();});
        		}
				else
				{
					$jq(divID).slideUp('normal',function(){$jq(divID).remove();});
				}
		}
}

var original_ajax_busy_image='';

function sn_ajax_busy_replace(elementID,visible)
{
	if(visible)
	{
		original_ajax_busy_image=$jq(elementID).css('background-image');
		$jq(elementID).css('background-image','url(' + sn_img_base_url + '/ajax_busy.gif)');

	}
	else
	{
		$jq(elementID).css('background-image',original_ajax_busy_image);
	}
}

function sn_ajax_callback_no_popup(msg)
{
	if (msg.indexOf('&') != -1)
	{
		var msgParts = msg.split('&');

		var successParts = msgParts[0].splitFirst('=');
		var messageParts = msgParts[1].splitFirst('=');
		var message = unescape(messageParts[1]);
		if (successParts[0] == 'success' && successParts[1] == 1)
		{
			// success
			return new Array(1,message);
		}
		else if (successParts[0] == 'success' && successParts[1] == 0)
		{
			// failure
			message='';
			for(i=1;i<msgParts.length;i++)
			{
				messageParts = msgParts[i].splitFirst('=');
				if(messageParts[0]=='error')
				{
					message+=unescape(messageParts[1])+'<br/>';
				}
			}
			return new Array(0,message);
		}
	}
	return new Array(0,'The server gave an invalid response, please try again');
}

function sn_refreshAd728x90(iFrameID)
{
	document.getElementById(iFrameID).src = document.getElementById(iFrameID).src;
}

function sn_Pagination()
{
	this._pagesBefore = 2;
	this._pagesAfter = 2;
	this._showPrevious = 1;
	this._showNext = 1;
	this._previousPage = 0;
	this._nextPage = 0;
	this._start = 0;
	this._end = 0;
	this._totalPageChecker = 5;
	this._pageActionHREF = '#';
	this._pageActionHREFTemplate = '#';
	this._title = '';
	this._titleTemplate = '%currentPage% of %totalPages%';
	this._currentPage = 0;
	this._totalPages = 0;

	this.notifyOnPageLoaded=null;
}

sn_Pagination.prototype.setOptions = function(pagesBefore, pagesAfter, totalPageChecker)
{
	this._pagesBefore = pagesBefore;
	this._pagesAfter = pagesAfter;
	this._totalPageChecker = totalPageChecker;
}

sn_Pagination.prototype.setPageActionHREF = function(href)
{
	this._pageActionHREFTemplate = href;
}

sn_Pagination.prototype.setTitle = function(title)
{
	this._title = title;
}

sn_Pagination.prototype.setCurrentPage = function(page)
{
	this._currentPage = page;
}

sn_Pagination.prototype.getCurrentPage = function()
{
	return this._currentPage;
}

sn_Pagination.prototype.draw = function(totalPages, currentPage, divID)
{
	this._currentPage = currentPage;
	this._totalPages = totalPages;
	this._previousPage = currentPage - 1;
	this._nextPage = currentPage + 1;
	this._showPrevious = 1;
	this._showNext = 1;


	if(totalPages>1)
	{
		if (currentPage <= this._pagesBefore + 1)
		{
			this._start = 1;
			if ((currentPage + this._pagesAfter) < totalPages)
			{
				this._end = currentPage + this._pagesAfter;
			}
			else
			{
				this._end = totalPages;
			}
		}
		else if (currentPage >= totalPages - this._pagesAfter)
		{
			this._start = currentPage - this._pagesBefore;
			this._end = totalPages;
		}
		else
		{
			this._start = currentPage - this._pagesBefore;
			this._end = currentPage + this._pagesAfter;
		}
		if (currentPage == 1)
		{
			this._showPrevious = 0;
		}
		if (currentPage == totalPages)
		{
			this._showNext = 0;
		}
		this._title = this._titleTemplate;
		this._title = this._title.replace(/%currentPage%/, this._currentPage);
		this._title = this._title.replace(/%totalPages%/, this._totalPages);
	
		htmlOutput = '<span class="sn_title">' + this._title + '</span>';
		htmlOutput += '<ul>';
	
		if (this._showPrevious == 1)
		{
			this._pageActionHREF = this._pageActionHREFTemplate;
			htmlOutput += '<li class="continue"><a href="' + this._pageActionHREF.replace(/%page%/, this._previousPage) + '">&laquo; prev</a></li>';
		}
		else
		{
			// @TODO needs to be a diff class to denote you cannot go back
			//htmlOutput += '<li class="continue"><a href="#">&laquo; prev</a></li>';
		}
	
		htmlOutput += '  <li class="numbering">';
	
		if (this._start > 1)
		{
			var additionalText = "";
			if (this._start > 2)
				var additionalText = "...";

			this._pageActionHREF = this._pageActionHREFTemplate;
			htmlOutput += '	<a href="' + this._pageActionHREF.replace(/%page%/, 1) + '">1' + additionalText + '</a>';
		}
	
		for (i=this._start ; i<=this._end ; i++)
		{
			linkStyle = "";
			if (i == currentPage) {
				// @TODO add a style to denote current page
				linkStyle = ' style="font-weight: bold;" ';
			}
			this._pageActionHREF = this._pageActionHREFTemplate;
			htmlOutput += '	<a href="' + this._pageActionHREF.replace(/%page%/, i) + '" ' + linkStyle + '>' + i + '</a>';
		}
	
		if (this._end <= (totalPages - 1))
		{
			var additionalText = "";
			if (this._end < (totalPages - 1))
				var additionalText = "...";
			
			this._pageActionHREF = this._pageActionHREFTemplate;
			htmlOutput += '	<a href="' + this._pageActionHREF.replace(/%page%/, totalPages) + '">' + additionalText + totalPages + '</a>';
		}
	
		htmlOutput += '  </li>';
	
		if (this._showNext == 1)
		{
			this._pageActionHREF = this._pageActionHREFTemplate;
			htmlOutput += '<li class="continue"><a href="' + this._pageActionHREF.replace(/%page%/, this._nextPage) + '">next &raquo;</a></li>';
		}
		else
		{
			// @TODO needs to be a diff class to denote you cannot go forward
			//htmlOutput += '<li class="continue"><a href="#">next &raquo;</a></li>';
			htmlOutput+='&nbsp;';
		}
	
		htmlOutput += '</ul>';

		document.getElementById(divID).innerHTML = htmlOutput;
		//$(function(){$('ul#sn_album_thumbnails').html(content);});
	}
	else
	{
		document.getElementById(divID).style.display='none';
	}
}
function sn_ajax_pageThumbs()
{
	var page=arguments[0];
	var paginator=arguments[1];
	var edit=arguments[2];
	var album=arguments[3];
	var divResults=arguments[4];
	var divPagination=arguments[5];
	var pageType=arguments[6];
	var totalPages=arguments[7];
	var thumbType=arguments[8];
	var groupURLName=(arguments[9])?arguments[9]: '';
	var sortBy=(arguments[10])?arguments[10]:'';
	 //sn_ajax_busy('div#' + divPagination + ' div#sn_ajax_busy_pag', true, '');
       sn_ajax_busy('div#' + divPagination, true, '');
	
	var notifyOnPageLoaded=arguments[11];
	
	 var ajaxUrl = '';
	if(groupURLName=='')
	{
	 switch (thumbType)
	 {
		 case 'PHOTO': ajaxUrl = '/photos/act/page'; break;
		 case 'VIDEO': ajaxUrl = '/videos/act/page'; break;
		 case 'CONTACT': ajaxUrl = '/contacts/act/page'; break;
		 case 'GROUP': ajaxUrl = '/groups/act/page'; break;
		 // case 'ALL_GROUP': ajaxUrl = '/groups/act/pageAll'; break;
	  	 case 'ALL_GROUPS': ajaxUrl = '/groups/act/pageAll'; break;
	  	 case 'ALL_PEOPLE': ajaxUrl = '/people/pageAll'; break;
	  	 case 'ALL_VIDEO': ajaxUrl = '/videos/act/pageAll'; break;
	  	 case 'ALL_PHOTO': ajaxUrl = '/photos/act/pageAll'; break;
      		 case 'TASKS_MM_PHOTOCONTEST': ajaxUrl = '/tasks/photoContest?mode=page'; break;
		 case 'USER_ORDER_HISTORY': ajaxUrl = '/store/act/pageGetUserOrderHistory'; break;
		 case 'STORE_ITEMS': ajaxUrl = '/store/act/pageStoreItems'; break;
	  	 default: return;
	 }
	}
	else
	{
		switch (thumbType)
		{
			case 'PHOTO': ajaxUrl = '/groups/photos/'+groupURLName+'/act/page'; break;
			case 'VIDEO': ajaxUrl = '/groups/videos/'+groupURLName+'/act/page'; break;
			default: return;
		}		
	}
	 var albumName = '';
	 if (album)
	 {
		albumName = album;
	 }
	 else
	 {
		if(typeof(sn_albumName)!='undefined')
		{
		albumName = sn_albumName;
	 }
	 }
	 
	 var divResultsID = '';
	 if (divResults)
	 {
		divResultsID = divResults;
	 }
	 else
	 {
		divResultsID = 'ul#sn_album_thumbnails';
	 }
	 
	 var divPaginationID = '';
	 if (divPagination)
	 {
		divPaginationID = divPagination;
	 }
	 else
	 {
		divPaginationID = 'sn_thumbPagination';
	 }
	 
	 var pageTypeValue = '';
	 if (pageType)
	 {
		pageTypeValue = pageType;
	 }
	 else
	 {
		pageTypeValue = 'ALBUM';
	 }
	//only do sort if it is defined
	if(sortBy=="SORT")
	{
		sortBy='&sort=name';
		
	}
	else if(sortBy!='')
	{
		sortBy='&sort='+sortBy;
	}
	else
	{
		sortBy='&sort=RECENT';
	}
	var urlData="username=" + sn_current_username + "&album=" + albumName + "&page=" + page + "&pageSize=" + sn_pageSize + "&edit=" + edit + '&pageType=' + pageTypeValue+sortBy;
	 $jq(divResultsID).fadeOut("slow");
	 paginator.setCurrentPage(page);
	 $jq.ajax({
	   type: "POST",
	   url: ajaxUrl,
	  data: urlData,// + '&personUUID=' + sn_current_useruuid,
	   success: function(content) {
			$jq(divResultsID).fadeIn("slow");
			$jq(function(){$jq(divResultsID).html(content);});
			paginator.draw(totalPages, paginator.getCurrentPage(), divPaginationID);
if(notifyOnPageLoaded)
	eval(notifyOnPageLoaded+"()")
	   }
	 });
}


function sn_ajax_addFavoriteGame(gameUUID)
{
	 sn_ajax_busy('div#sn_ajax_busy_fav', true, 'Adding to favorites...');
	 showAlertBoxBG();
	 $jq.ajax({
	   type: "POST",
	   url: "/games/act/addFavoriteGame",
	   data: "&gameUUID=" + gameUUID,
	   success: function(msg) {
	   		sn_ajax_callback(msg);
	   		sn_ajax_busy('div#sn_ajax_busy_fav', false, '');
	   }
	 });
}
