// $Id: lobby.js,v 1.138 2010-08-24 08:04:57 jrixon Exp $

var TableList, TnmtList, MySelns, Detail, FindPlayers;

function getBlockTableXlation() {

	if(document.blockTableXlation) {
		return document.blockTableXlation;
	}

	var blockTableXlationDiv = document.getElementById('block_table_xlation_div');
	if(blockTableXlationDiv) {
		document.blockTableXlation = blockTableXlationDiv.innerHTML;
	} else {
		document.blockTableXlation = 'We are unable to seat you at this time.  Please contact our Customer Support Team for further information.';
	}

	return document.blockTableXlation;
}

function init_lobby () {

	TableList     = TableListLib('TableList');
	TnmtList      = TnmtListLib('TnmtList');
	MySelns       = MySelnsLib('MySelns');
	Detail        = DetailLib('Detail');
	FindPlayers   = FindPlayersLib('FindPlayers');

	if (document.isAir) {
		init_hand_history();
		init_current_league();
	}

	State.loading = true;
	State.pageMem.recovering = true;

	setTimeout(startLobby, 500);
}

function startLobby () {

	// reveal the centre panel
	document.getElementById('load_div').style.display = 'none';
	document.getElementById('lob_wrap').style.display = '';

	// recover page memory or, if none, show default view
	State.loading = false;
	pageMemRecover();
	State.pageMem.recovering = false;

	// re-store page mem, as it won't have happened during page recovery
	pageMemStore();
}

function dispLobbyMenu(menuStr) {

	var parts = menuStr.split(',');
	var menu1 = '', ids, i;
	switch (parts[0]) {
		case 'TableList' :
			menu1 = 'menu1_cash';
			break;
		case 'TnmtList' :
			if (parts[2] == 'R') {
				menu1 = 'menu1_sng';
			} else if (parts[2] == 'S') {
				menu1 = 'menu1_tnmt';
			}
			break;
		case 'MySelns' :
			if (parts[1] == 'my_selns') {
				menu1 = 'menu1_mypoker';
			} else if (parts[1] == 'find_a_player') {
				menu1 = 'menu1_findaplayer';
			}
			break;
		case 'FindPlayers' :
			menu1 = 'menu1_findaplayer';
			break;
		case 'HandHistory':
			menu1 = 'menu1_mypoker';
			break;
		case 'CurrentLeague':
			menu1 = 'menu1_mypoker';
			break;
	}

	ids = ['menu1_cash','menu1_sng','menu1_tnmt','menu1_mypoker','menu1_findaplayer','menu1_mypoker'];
	for (i = 0; i < ids.length; i++) {
		if (ids[i] == menu1) {
			sky.addClass(sky.id(ids[i]), 'selected');
		} else {
			sky.removeClass(sky.id(ids[i]), 'selected');
		}
	}
}

function pageMemStore() {

	if (State.pageMem.recovering || !State.isLobbyPage || document.isAir) {
		return;
	}

	var params = [], objName;

	params.push(State.centre.pub.name);

	for (objName in reqObjs) {
		if (typeof reqObjs[objName].memGetString == 'function') {
			params.push(objName);
			params.push(reqObjs[objName].memGetString());
		}
	}

	set_cookie(document.lob_cookie, params.join('~'), '', '/', '', '');

	DEBUG('Storing LOB_MEM: ' + params.join('~'));
}

function pageMemRecover() {

	var i, centreName = '', centreOk = false, urlSearch, urlArgs, argPairs, argParts, cookie, cookieParams, memObjs = {};

	urlArgs = {};
	cookieParams = [];

	if (!document.isAir) {
		urlSearch = window.location.search.substr(1);
		if (urlSearch != '') {
			argPairs = urlSearch.split('&');
			for (i = 0; i < argPairs.length; i++) {
				argParts = argPairs[i].split('=');
				urlArgs[argParts[0]] = argParts[1];
			}
		}

		cookie = get_cookie(document.lob_cookie);
		if (cookie != null && cookie.length) {
			cookieParams = cookie.split('~');
		}

		DEBUG('Recover LOB_MEM cookie: ' + cookie);
		DEBUG('Recover LOB_MEM url: ' + urlSearch);
	}

	var defaultAction = document.dflt_web_view && document.dflt_web_view == 'T' ? 'TnmtList' : 'TableList';

	var setData = function() { 
		// get centre
		if (urlArgs['listType']) { //&& urlArgs['listParams']) {
			centreName = urlArgs['listType'];
		} else if (cookieParams.length) {
			centreName = cookieParams[0];
		}
	
		// check centre
		if (centreName != '') {
			for (i = 0; i < centralReqObjs.length; i++) {
				if (centreName == centralReqObjs[i]) {
					if (typeof reqObjs[centreName].memRecover == 'function') {
						centreOk = true;
					}
					break;
				}
			}
		}
		if (!centreOk) {
			centreName = defaultAction;
		}
	
		// grab the objects we'll recover
		for (objName in reqObjs) {
			if (typeof reqObjs[objName].memRecover == 'function') {
				memObjs[objName] = {
					cookieStr : '',
					urlStr : ''
				};
			}
		}
	
		// add overrides from url
		if (urlArgs['listType'] && urlArgs['listParams'] && typeof memObjs[centreName] != 'undefined') {
			memObjs[centreName].urlStr = urlArgs['listParams'];
		}
		if (urlArgs['listType'] && urlArgs['listParams']) {
			if (urlArgs['item']) {
				if (centreName == 'TableList') {
					memObjs['Detail'].urlStr = 'S|' + urlArgs['item'];
				} else if (centreName == 'TnmtList') {
					memObjs['Detail'].urlStr = 'T|' + urlArgs['item'];
				}
			} else {
				memObjs['Detail'].urlStr = 'blah';
			}
		}
	
		// add cookie strings
		for (i = 1; i < cookieParams.length; i+=2) {
			objName = cookieParams[i];
			if (typeof memObjs[objName] != 'undefined') {
				memObjs[objName].cookieStr = cookieParams[i + 1];
			}
		}

		if (typeof reqObjs[centreName].memCheck == 'function') {
			if (!reqObjs[centreName].memCheck(memObjs[centreName].cookieStr, memObjs[centreName].urlStr)) {
				urlArgs['listType'] = 'TableList';
				urlArgs['item'] = null;
				urlArgs['listParams'] = null;
				if (centreName != defaultAction) {
					arguments.callee();
				}
			}
		}
	}();


	// recover each object
	for (objName in memObjs) {
		doReq = reqObjs[objName].pub.name == centreName ? true : false;
		reqObjs[objName].memRecover(memObjs[objName].cookieStr, memObjs[objName].urlStr, doReq);
	}

	// let the centre's List know which item, if any, is selected
	if (Detail.pub.itemId != null) {
		State.centre.List.selectItem(null, Detail.pub.itemId);
	}
}

