// Rollover state for the navigation buttons
function rollover(nid,on) {
	if(nid != "" && nid != null) {
		var item = document.getElementById(nid);
		
		if(on) {
			var toggle = item.src.indexOf("_off.");
			if(toggle > -1)
				item.src = item.src.substring(0,toggle) + "_on" + item.src.substring(item.src.length-4);
		} else {
			var toggle = item.src.indexOf("_on.");
			if(toggle > -1)
				item.src = item.src.substring(0,toggle) + "_off" + item.src.substring(item.src.length-4);
		}
	}
}

// logout function
function logOut() {
	var f = document.userActions;
	f.mode.value = "logout";
	f.submit();
}

// Link Remember Me Text
function toggleRememberMe() {
	var f = document.loginForm;
	f.RememberMe.checked = (f.RememberMe.checked) ? false : true;
}

// Validate login form
function validateLogin() {
	var f = document.loginForm;
	var valid = true;
	var target = "";
	var msg = "Please correct the following error(s) found in the form below.\n\n";
	
	if(isBlank(f.UserName.value)) {
		if(valid) target = f.UserName;
		valid = false;
		msg += "Username must have a value\n";
	}
	
	if(!isBlank(f.UserName.value) && !allowedChars(f.UserName.value,"username")) {
		if(valid) target = f.UserName;
		valid = false;
		msg += "Username must only contain letters, numbers, hyphen, or underscore characters\n";
	}
	
	if(isBlank(f.Password.value)) {
		if(valid) target = f.Password;
		valid = false;
		msg += "Passord must have a value\n";
	}
	
	/*if(!isBlank(f.Password.value) && !allowedChars(f.Password.value,"password")) { 
		if(valid) target = f.Password;
		valid = false;
		msg += "Password must only contain alphanumeric characters\n";
	}*/
	
	if(!valid) {
		alert(msg);
		target.focus();
		return false;
	}
	
	if(!hasBeenClicked())
		return valid;
	else
		return false;
}

// Check for a null or "all spaces" value
function isBlank(value) {
	if(value.length == 0)
		return true;
	
	var spaces = 0;
	for(var i = 0; i < value.length; i++) {
		var c = value.charAt(i);
		if(c == " ")
			spaces++;
	}
	
	if(spaces == value.length)
		return true;
	
	return false;
}

// Check for allowed characters in a form
function allowedChars(value,type) {
	var allowed = /[a-zA-Z0-9]/;
	
	//overwrite default set if necessary
	if(type == "username") {
		allowed = /[a-zA-Z0-9_-]/;
	}
	
	var len = value.length;
	for(var i = 0; i < value.length; i++) {
		var c = value.charAt(i);
		if(!allowed.test(c))
			return false;
	}
	
	return true;
}

// Validate the Age form
function validateAgeForm() {
	if(!hasBeenClicked())
		return true;
	else
		return false;
}

// Cancel Registration Process
function cancelRegistration() {
	var f = document.registrationForm;
	f.mode.value = "cancel_reg";
	f.submit();
}

// Cancel Account Update Process
function cancelAccoutUpdate() {
	var f = document.accountForm;
	f.mode.value = "cancel_acct";
	f.submit();
}

// toggle the leaderboard by game
function filterBoardbyGame(game) {
	var query = document.location.search.substring(1);
	
	// query string exists with a game argument
	if(query != "" && query.indexOf("game=") > -1) {
		var pairs = query.split("&");
		var new_query = "";
		
		// look for game argument
		for(var i = 0; i < pairs.length; i++) {
			if(pairs[i].indexOf("game=") > -1) {
				pairs[i] = "game=" + game;
				
				// only add the game argument if there is a value
				if(game != "")
					new_query += "&" + pairs[i];
			} else {
				new_query += "&" + pairs[i];
			}
		}
		
		new_query = ((new_query != "") ? "?" : "") + new_query.substring(1);
		document.location.href = "Leaderboards.php" + new_query;
	
	// query string exists without the game argument
	} else if(query != "" && query.indexOf("game=") == -1) {
		document.location.href = document.location.href + "&game=" + game;
	
	// query string doesn't exist
	} else {
		document.location.href = document.location.href + "?game=" + game;
	}
}

// toggle the leaderboard by time span
function filterBoardbySpan(span) {
	document.getElementById('today').style.visibility = "hidden";
	document.getElementById('last7days').style.visibility = "hidden";
	document.getElementById('last30days').style.visibility = "hidden";
	document.getElementById('alltime').style.visibility = "hidden";
	document.getElementById('today').style.display = "none";
	document.getElementById('last7days').style.display = "none";
	document.getElementById('last30days').style.display = "none";
	document.getElementById('alltime').style.display = "none";
	document.getElementById('tab_today').src = document.getElementById('tab_today').src.replace(/_on/gi, "_off");
	document.getElementById('tab_last7days').src = document.getElementById('tab_last7days').src.replace(/_on/gi, "_off");
	document.getElementById('tab_last30days').src = document.getElementById('tab_last30days').src.replace(/_on/gi, "_off");
	document.getElementById('tab_alltime').src = document.getElementById('tab_alltime').src.replace(/_on/gi, "_off");
	document.getElementById('tab_today').src = document.getElementById('tab_today').src.replace(/_active/gi, "_off");
	document.getElementById('tab_last7days').src = document.getElementById('tab_last7days').src.replace(/_active/gi, "_off");
	document.getElementById('tab_last30days').src = document.getElementById('tab_last30days').src.replace(/_active/gi, "_off");
	document.getElementById('tab_alltime').src = document.getElementById('tab_alltime').src.replace(/_active/gi, "_off");
	
	/*document.getElementById('today').onmouseout = function(){rollover('tab_today',0);};
	document.getElementById('last7days').onmouseout = function(){rollover('tab_last7days',0);};
	document.getElementById('last30days').onmouseout = function(){rollover('tab_last30days',0);};
	document.getElementById('alltime').onmouseout = function(){rollover('tab_alltime',0);};
	document.getElementById('today').onmouseover = function(){rollover('tab_today',1);};
	document.getElementById('last7days').onmouseover = function(){rollover('tab_last7days',1);};
	document.getElementById('last30days').onmouseover = function(){rollover('tab_last30days',1);};
	document.getElementById('alltime').onmouseover = function(){rollover('tab_alltime',1);};*/
	/*document.getElementById('link_'+span).onmouseout = function(){};
	document.getElementById('link_'+span).onmouseover = function(){};*/
	
	document.getElementById(span).style.visibility = "visible";
	document.getElementById(span).style.display = "block";
	document.getElementById('tab_'+span).src = document.getElementById('tab_'+span).src.replace(/_off/gi, "_active")
	/*
	var query = document.location.search.substring(1);
	
	// query string exists with a span argument
	if(query != "" && query.indexOf("span=") > -1) {
		var pairs = query.split("&");
		var new_query = "";
		
		// look for span argument
		for(var i = 0; i < pairs.length; i++) {
			if(pairs[i].indexOf("span=") > -1) {
				pairs[i] = "span=" + span;
				
				// only add the span argument if there is a value
				if(span != "")
					new_query += "&" + pairs[i];
			} else {
				new_query += "&" + pairs[i];
			}
		}
		
		new_query = ((new_query != "") ? "?" : "") + new_query.substring(1);
		document.location.href = "Leaderboards.php" + new_query;
	
	// query string exists without the span argument
	} else if(query != "" && query.indexOf("span=") == -1) {
		document.location.href = document.location.href + "&span=" + span;
	
	// query string doesn't exist
	} else {
		document.location.href = document.location.href + "?span=" + span;
	}*/
}

// point ticker definitions
var lucky_count = 0;
var lucky_interval;
var old_lucky = 0;
var current_lucky = 0;
var lucky_tickers = new Array(); // an array of jQuery objects

var unlucky_count = 0;
var unlucky_interval;
var old_unlucky = 0;
var current_unlucky = 0;
var unlucky_tickers = new Array(); // an array of jQuery objects

// rotate the lucky divs
function lucky_rotate() {

	// move the last 3 lucky divs out of the display box (in case if they get stuck)
	if(old_lucky >= 3) {
		for(var i = (old_lucky - 1); i >= (old_lucky - 3); i--) {
			if($("#mostlucky-div .ticker-item:eq(" + i + ")")) {
				$("#mostlucky-div .ticker-item:eq(" + i + ")").css("top", "20px");
			}
		}
	}

	current_lucky = ((old_lucky + 1) >= $("#mostlucky-div .ticker-item").size()) ? 0 : old_lucky + 1;
	if($("#mostlucky-div .ticker-item:eq(" + current_lucky + ")")) {
		// move the old lucky div out of the display box
		$("#mostlucky-div .ticker-item:eq(" + old_lucky + ")").animate({top: -55},"slow", function() {
			$(this).css("top", "20px");
		});
		
		// move the current lucky div into the display box
		$("#mostlucky-div .ticker-item:eq(" + current_lucky + ")").animate({top: 3},"slow");
		old_lucky = current_lucky;
	} else {
		clearInterval(lucky_interval);
	}
}

// rotate the unlucky divs
function unlucky_rotate() {

	// move the last 3 unlucky divs out of the display box (in case if they get stuck)
	if(old_unlucky >= 3) {
		for(var i = (old_unlucky - 1); i >= (old_unlucky - 3); i--) {
			if($("#mostunlucky-div .ticker-item:eq(" + i + ")")) {
				$("#mostunlucky-div .ticker-item:eq(" + i + ")").css("top", "20px");
			}
		}
	}
	
	current_unlucky = ((old_unlucky + 1) >= $("#mostunlucky-div .ticker-item").size()) ? 0 : old_unlucky + 1;
	if($("#mostunlucky-div .ticker-item:eq(" + current_unlucky + ")")) {
		// move the old unlucky div out of the display box
		$("#mostunlucky-div .ticker-item:eq(" + old_unlucky + ")").animate({top: -55},"slow", function() {
			$(this).css("top", "20px");
		});
		
		// move the current unlucky div into the display box
		$("#mostunlucky-div .ticker-item:eq(" + current_unlucky + ")").animate({top: 3},"slow");
		old_unlucky = current_unlucky;
	} else {
		clearInterval(unlucky_interval);
	}
}

// toggle a debug div's visibility
function toggleDebugSection(id) {
	var elem = document.getElementById(id);
	
	if(elem.style.display == "none")
		elem.style.display = "block";
	else
		elem.style.display = "none";
}

// perform a debug dump
function dumpDebug(id) {
	var f = document.debugForm;
	f.id.value = id;
	f.submit();
}

//simple check for multiple clicks
var clicked = false;
function hasBeenClicked() {
	if(!clicked) {
		clicked = true;
		return false;
	} else {
		return true;
	}
}