var menuElements = [ 'CC', 'WT', 'MC', 'EP', 'NT', 'CP', 'MB', 'EC', 'IC', 'FP', 'IN', 'BC', 'SA' ];
var menuFlashPlayer;
var pageLoaded = false;
var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);

function fixPNG() {}

/**
 * Przechwytujemy obiekt lewego menu przy inicjacji strony
 */
function init () {
	var isIE = navigator.appName.indexOf("Microsoft") != -1;
	menuFlashPlayer = isIE ? window['flashLeftMenu'] : document['flashLeftMenu'];
	
	if (version >= 5.5 && document.body.filters) {
		fixPNG();
	}
	makePngVisible();
	
	pageLoaded = true;
	
	if (typeof menuFlashPlayer == 'object') {
		menuFlashPlayer.SetVariable("/:isLoaded", 1);
	}
	
	// if we are in lobby, scale menu to default size on startup
	if (isLobby) {
		hideMenu ();
	}
}

/**
 * Ukrywa rozwiniete elementy flashowego menu
 */
function hideMenu () {
	if (pageLoaded && document.getElementById('flashLeftMenu')) {
		document.getElementById('flashLeftMenu').width = 165;
		document.getElementById('flashLeftMenu').height = 260;
	}
}

/**
 * Odkrywa rozwiniete elementy flashowego menu
 */
function showMenu () {
	if (pageLoaded) {
		document.getElementById('flashLeftMenu').width = 800;
		document.getElementById('flashLeftMenu').height = 460;
	}
}

/**
 * Zamyka flashowe menu
 */
function closeMenu () {
	if (pageLoaded && menuFlashPlayer) {
		menuFlashPlayer.TCallFrame('/', 1);
	}
}
	
/**
 * Zmiana aktywnego elementu lewego menu i pokazanie odpowiedniego kontenera z treścią dla danej pozycji.
 * 
 * @param string	id			Id elementu
 * @param boolean	isDeposit	Flaga oznaczająca, że jesteśmy w depozytach
 */
function changeTo (id, isDeposit) {
	var prefix = isDeposit ? 'd' : 'w';
	
	for (var i = 0, j = menuElements.length; i < j; i++)
		if ($(menuElements[i]))
			Element.hide (menuElements[i]);
			
	if ($(id)) {
		Element.show (id);
	
		try {
			menuFlashPlayer.SetVariable("/:pressedId", prefix+id);
			menuFlashPlayer.TCallFrame('/', 1);
		} catch (e) {
			exceptionAlert ('Flash Player Error.', e);
		}
	}
}

/**
 * Pokazuje wait-diva po czym przekierowuje na wskazany adres
 * 
 * @param String location Adres docelowy
 */
function goTo (location) {
	Wait.show ();
	window.location = location;
}

/**
 * Prosta funkcja podmieniająca pola formularza
 * 
 * @param string sel	Aktualna wartość pola state
 */
function changeState (sel) {
	if (sel.value == 'US') {
		Element.show ('state1');
		Element.hide ('state2');
	}
	
	else {
		Element.hide ('state1');
		Element.show ('state2');
	}
}

/**
 * Odkrywamy wszystkie PNG
 */
function makePngVisible () {
	for (var i = 0; i < document.images.length; i++) {
		var img = document.images[i];
		var imgName = img.src.toUpperCase ();
		if (imgName.substring (imgName.length-3, imgName.length) == "PNG") {
			img.style.visibility = 'visible';
		}
	}
}

/**
 * Zada potwierdzenia operacji i submituje formularz
 */
function savedAccountQuery (query) {
	if (confirm (query)) { 
		$('saForm').action='/cashier/unregisterAccount'; 
		$('saForm').submit (); 
	} 
	
	return false;
}

/**
 * Podmienia graniczne wartosci kwot, odkrywa/ukrywa pole CVV2, pokazuje komunikat o niewystarczajacym stanie konta
 * 
 * @param integer requestId	ID metody platnosci
 */
function savedAccountChangeAmount (requestId) {
	var methodId = map[requestId];
	var amount = amounts[methodId];
	
	try {
		// domyslnie pokazujemy caly formularz
		Element.show ('savedAccountAmount');
		Element.hide ('savedAccountSorry');
		
		Element.update ('minAmount', amount.minimum);
		Element.update ('minAmount2', '$'+amount.minimum);
		Element.update ('maxAmount', amount.maximum);
			
		// jesli za maly amount, to wyswietlamy odpowiedni komunikat
		if (amount.minimum > withdrawableBalance) {
			Element.hide ('savedAccountAmount');
			Element.show ('savedAccountSorry');
		}
		
		if (methodId == 3)
			Element.show ('cvv2con');
		else
			Element.hide ('cvv2con');
	}
	
	catch (e) {
		exceptionAlert ('savedAccountChangeAmount Error.', e);
	}
}


// otwiera cashiera w nowym oknie (doughflow)
function cashierOpen () {
	window.open ('/cashier/open', 'cashier', 'toolbar=0,location=0,direction=0,status=0,menubar=0,scrollbars=0,width=800,height=600,left=100,top=100');
}

function showWaitDiv () {
	Wait.show ('container', { blendColor: '#000', msg: null });
}

Event.observe (window, 'load', init);
