function verifyCategory(userId, currentStyle){
	var verificationRequest = createXMLObject();
	
	var inputsArray = new Array('categoryName');
	
	var nameInput = document.getElementById(inputsArray[0]);
	
	var requestURL = 'ajax-index.php?content=games&action=verify-category&name='+escape(nameInput.value);
	
	verificationRequest.onreadystatechange = function() { defaultReturnErrors(verificationRequest, inputsArray, currentStyle); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function swapInput(inputType, inputName){
	var currentInput = document.getElementById(inputName);
	currentInput.type = inputType;
}

function verifyGame(newGame, currentStyle){
	
	var inputsArray = new Array('gameName', 'gameThumbnail', 'gameFile');
	
	var nameInput = document.getElementById(inputsArray[0]);
	var thumbnailInput = document.getElementById(inputsArray[1]);
	var fileInput = document.getElementById(inputsArray[2]);
	
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=games&action=verify-game&name='+escape(nameInput.value)+(newGame == 1 ? '&thumbnail='+escape(thumbnailInput.value)+'&file='+escape(fileInput.value) : '&thumbnail=1&file=1');
	
	verificationRequest.onreadystatechange = function() { defaultReturnErrors(verificationRequest, inputsArray, currentStyle); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function swapGamesPage(nextPage, currentCharacter, currentGameId, currentStyle){
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=side-games&character='+currentCharacter+'&page='+nextPage+'&id='+currentGameId;
	
	verificationRequest.onreadystatechange = function() { changePage(verificationRequest, currentCharacter, nextPage, currentGameId, currentStyle); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function changePage(verificationRequest, currentCharacter, currentPage, currentGameId, currentStyle){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;
			var firstArray = returnedString.split('<-|->');
			
			var pagesNumber = firstArray[1];
			var gamesArray = firstArray[0].split('<|-|>');
			
			insertGamesList(gamesArray, currentStyle);
			
			insertPageNumbers(currentCharacter, currentGameId, pagesNumber, currentPage, currentStyle);
		}
	}
}

function swapGamesCharacter(currentCharacter, currentGameId, currentStyle){
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=side-games&character='+currentCharacter+'&page=1&id='+currentGameId;

	verificationRequest.onreadystatechange = function() { changeCharacter(verificationRequest, currentCharacter, currentGameId, currentStyle); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function changeCharacter(verificationRequest, currentCharacter, currentGameId, currentStyle){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;
			
			var firstArray = returnedString.split('<-|->');
			var pagesNumber = firstArray[1];
			var currentCharacters = firstArray[2];
			var gamesArray = firstArray[0].split('<|-|>');
			
			var currentCharactersArray = currentCharacters.split('');
			
			insertGameCharacters(currentCharactersArray, currentGameId, currentCharacter, currentStyle);
			
			insertGamesList(gamesArray, currentStyle);
			
			insertPageNumbers(currentCharacter, currentGameId, pagesNumber, 1, currentStyle);
		}
	}
}

function swapGamesCharacters(currentCharactersRange, currentGameId, currentStyle){
	var verificationRequest = createXMLObject();
	
	var charactersArray = new Array();
	
	charactersArray['a-m'] = 'abcdefghijklm';
	charactersArray['n-z'] = 'nopqrstuvwxyz';
	charactersArray['0-9'] = '0123456789';
	
	var requestURL = 'ajax-index.php?content=side-games&characters='+charactersArray[currentCharactersRange]+'&page=1&id='+currentGameId;
	
	verificationRequest.onreadystatechange = function() { changeRange(verificationRequest, currentCharactersRange, currentGameId, charactersArray, currentStyle); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function changeRange(verificationRequest, currentCharactersRange, currentGameId, charactersArray, currentStyle){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;

			var firstArray = returnedString.split('<-|->');
			var pagesNumber = firstArray[1];
			var gamesArray = firstArray[0].split('<|-|>');
			
			var rangesArray = new Array('a-m', 'n-z', '0-9');
			
			var charactersRange = document.getElementById('game-characters-range');
			charactersRange.innerHTML = '';
			
			var i = 0;
			for(i = 0; i <= rangesArray.length-1; i++){
				charactersRange.innerHTML += '<li onclick="swapGamesCharacters(\''+rangesArray[i]+'\', \''+currentGameId+'\', \''+currentStyle+'\');" id="swapGamesCharacters-'+rangesArray[i]+'" '+((rangesArray[i] == currentCharactersRange) ? 'class="selectedList"' : 'onmouseover="swapSelected(this.id);" onmouseout="unswapSelected(this.id);"')+'>'+rangesArray[i].toUpperCase()+'</li>';
			}
			
			var currentCharactersArray = charactersArray[currentCharactersRange].split('');
			
			insertGameCharacters(currentCharactersArray, currentGameId, currentCharactersArray[0], currentStyle);
			
			insertGamesList(gamesArray, currentStyle);
			
			insertPageNumbers(currentCharactersArray[0], currentGameId, pagesNumber, 1, currentStyle);
		}
	}
}

function swapSelected(liId){
	var currentElement = document.getElementById(liId);
	
	currentElement.setAttribute("class", "selectedListGrey");
	currentElement.setAttribute("className", "selectedListGrey"); 
}

function unswapSelected(liId){
	var currentElement = document.getElementById(liId);
	
	currentElement.setAttribute("class", "");
	currentElement.setAttribute("className", ""); 
}

function insertGameCharacters(currentCharactersArray, currentGameId, currentCharacter, currentStyle){
	
	var charactersList = document.getElementById('characters-list');
	charactersList.innerHTML = '';
			
	var i = 0;
	for(i = 0; i <= currentCharactersArray.length-1; i++){
		charactersList.innerHTML += '<li onclick="swapGamesCharacter(\''+currentCharactersArray[i]+'\', \''+currentGameId+'\', \''+currentStyle+'\');" id="character-page-'+currentCharactersArray[i]+'" '+((currentCharactersArray[i] == currentCharacter) ? '  class="selectedList"' : ' onmouseover="swapSelected(this.id);" onmouseout="unswapSelected(this.id);"')+'>'+currentCharactersArray[i].toUpperCase()+'</li>'
	}
}

function insertPageNumbers(currentCharacter, currentGameId, pagesNumber, currentPage, currentStyle){
	
	var pagesList = document.getElementById('pages-list');
	pagesList.innerHTML = '';
			
	var i = 1;
			
	for(i = 1; i <= pagesNumber; i++){
		pagesList.innerHTML += '<li onclick="swapGamesPage(\''+i+'\', \''+currentCharacter+'\', \''+currentGameId+'\', \''+currentStyle+'\');" id="number-pages-'+i+'"'+((i == currentPage) ? ' class="selectedList"' : ' onmouseover="swapSelected(this.id);" onmouseout="unswapSelected(this.id);"')+'>'+i+'</li>'
	}
	
	var i = 1;
	for(i = eval(pagesNumber)+1; i <= 20 ; i++){
		pagesList.innerHTML += '<li id="number-pages-'+i+'" class="noPage">'+i+'</li>'
	}
}

function insertGamesList(gamesArray, currentStyle){
	var gamesList = document.getElementById('games-title');
	
	if(gamesArray[0] !== ''){
		gamesList.innerHTML = '';
		var i = 0;
		for(i = 0; i <= gamesArray.length-1; i++){
			if(gamesArray[i] !== ''){
				gamesList.innerHTML += '<div><img src="template/'+currentStyle+'/images/arrow.gif" alt"" /> '+gamesArray[i]+'</div>';
			}
		}			
	}
	else gamesList.innerHTML = '<img src="template/'+currentStyle+'/images/games-list-empty.gif" id="empty-list" alt="" />';
}

function rateGame(gameId, gameRating, u_ip){
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=rate-game&id='+gameId+'&rating='+gameRating+'&uip='+u_ip;
	
	verificationRequest.onreadystatechange = function() { updateRating(verificationRequest); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function updateRating(verificationRequest){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;
			var ratingArray = returnedString.split(';');
			
			var userRatingDivision = document.getElementById('user-rating');
			userRatingDivision.innerHTML = '';
			
			var gameRatingImagesDivision = document.getElementById('rating-images');
			gameRatingImagesDivision.innerHTML = ratingArray[0];
			
			var gameRatingText = document.getElementById('rating-text');
			gameRatingText.innerHTML = ratingArray[1];
		}
	}
}

function ratingHover(currentRating, currentStyle){
	for(var i = 1; i <= currentRating; i++){
		var currentImage = document.getElementById('rating-'+i);
		currentImage.src = 'template/'+currentStyle+'/images/rating-full.gif';
	}
}

function ratingOff(currentStyle){
	for(var i = 1; i <= 5; i++){
		var currentImage = document.getElementById('rating-'+i);
		currentImage.src = 'template/'+currentStyle+'/images/rating-empty.gif';
	}
}

function addToFavorites(gameId, userId){
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=games&action=add-favorite&id='+gameId+'&user-id='+userId;
	
	verificationRequest.onreadystatechange = function() { changeFavoriteText(verificationRequest, gameId, 1); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function removeFromFavorites(gameId, userId){
	var verificationRequest = createXMLObject();
	
	var requestURL = 'ajax-index.php?content=games&action=remove-favorite&id='+gameId+'&user-id='+userId;
	
	verificationRequest.onreadystatechange = function() { changeFavoriteText(verificationRequest, gameId, 1); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function changeFavoriteText(verificationRequest, gameId, changeNumber){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;
			var largeArray = returnedString.split('<-|->');
			
			var timesFavoritedSection = document.getElementById('times-favorited-section');
			var newValue = eval(timesFavoritedSection.innerHTML)+eval(largeArray[1]);
			timesFavoritedSection.innerHTML = newValue <= 0 ? 0 : newValue;
			
			var userActionDivision = document.getElementById('favorites-action');
			userActionDivision.innerHTML = largeArray[0];
		}
	}
}

function loadFlash(filePath, fileWidth, fileHeight){
	var toDisplay = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="'+fileWidth+'" height="'+fileHeight+'">';
	toDisplay += '<param name="movie" value="'+filePath+'">';
	toDisplay += '<param name="quality" value="high">';
	toDisplay += '<param name="menu" value="true">';
	toDisplay += '<embed width="'+fileWidth+'" height="'+fileHeight+'" src="'+filePath+'" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>';
	toDisplay += '</object>';
	document.write(toDisplay);
}

function launchGame(fileWidth, fileHeight, fileId, userIp, creditsLeft){
	if(userIp !== 0){
		var verificationRequest = createXMLObject();
		
		var requestURL = 'ajax-index.php?content=games&action=update-credits&ip='+userIp+'&credits-left='+creditsLeft;
		
		verificationRequest.onreadystatechange = function() { updateCredits(verificationRequest); };
		verificationRequest.open('GET', requestURL, true);
		verificationRequest.send(null);
	}
	
	window.open('files-index.php?content=games&view=file&id='+fileId, '', 'width='+fileWidth+',height='+fileHeight+'resizable=yes,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no');
}

function updateCredits(verificationRequest){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			var returnedString = verificationRequest.responseText;
			var userCredits = document.getElementById('user-credits-left');
			
			var userCreditsLeft = returnedString;
			
			userCredits.innerHTML = userCreditsLeft;
			if(userCreditsLeft == 0){
				var launchGameLink = document.getElementById('game-division');
				launchGameLink.innerHTML = 'You must now register in order to play any more games.';
			}
		}
	}
}

function featureGame(gameId, isChecked){
	var verificationRequest = createXMLObject();
	var requestURL = 'ajax-index.php?content=feature-game&action='+(isChecked ? 1 : 0)+'&game-id='+gameId;
	
	verificationRequest.onreadystatechange = function() { confirmFeaturedGame(verificationRequest); };
	verificationRequest.open('GET', requestURL, true);
	verificationRequest.send(null);
}

function confirmFeaturedGame(verificationRequest){
	if(verificationRequest.readyState == 4){
		if(verificationRequest.status == 200){
			alert(verificationRequest.responseText);
		}
	}
}