/* ---- Language detection -------------------------------- */

function checkLanguage()
{
 	var language	= navigator.language ? navigator.language : navigator.userLanguage;
 	language		= language.substr(0,2);

	switch(language)
	{
		case "fr":
		case "de":
		case "es":
		case "it":
		case "nl":
		case "pt":
		case "ro":
		case "cz":
		case "dk":
			checkLanguageCookie(language);
		break;
	}
}

function checkLanguageCookie(language)
{
	// translate language into site
	switch(language)
	{
		case "en":
			language = 1;
		break;

		case "de":
			language = 2;
		break;

		case "fr":
			language = 3;
		break;

		case "es":
			language = 4;
		break;

		case "it":
			language = 5;
		break;

		case "nl":
			language = 7;
		break;

		case "pt":
			language = 8;
		break;

		case "ro":
			language = 9;
		break;

		case "cz":
			language = 10;
		break;

		case "be":
			language = 11;
		break;

		case "dk":
			language = 12;
		break;
	}

	if( eg_readCookie("language-" + language) == "")
	{
		//show notification
		showLanguageBar(language);
	}
}

function showLanguageBar(language)
{
	var updater = new Ajax.Updater(
		"language-bar",
		"community.php",
		{
			method: 'get',
			parameters: "action=language-notification&lang="+language,
			evalScripts: true
		}
	);
}

function cancelLanguageNotification(language)
{
	eg_setCookie("language-" + language, 1, 365);

	document.getElementById("language-bar").style.display = "none";
}

/* ---- Cookie get and set functions ---------------------- */

function eg_setCookie( 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 eg_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 "";
}

/* ---- Registration Validation --------------------------- */

var hasErrors = false;
var timeout = 400;
var initial = true;
var hasAgreed = false;

var validations = new Array();
validations[0] = false; 	//username
validations[1] = false; 	//email
validations[2] = false; 	//password
validations[3] = false; 	//real name
validations[4] = false; 	//country
//validations[5] = false; 	//t&cs

var errors	= new Array();
errors[0] = "Username";		//username
errors[1] = "Email";		//email
errors[2] = "Password";		//password
errors[3] = "Real Name";	//real name
errors[4] = "Country";		//country
//errors[5] = "Terms & conditions";//terms and conditions


function checkRegistration()
{
	doValidation();
	if(hasErrors)
	{
		return false;
	}
	return true;
}

function preValidate()
{
	//$('agree').checked = false;
	$('finished-initial').style.display = 'block';
	$('finished-ok').style.display = 'none';
	if(
		!
		(
		$('registration-username').value == ''
		&&
		$('registration-email').value == ''
		&&
		$('registration-pass').value == ''
		&&
		$('registration-pass2').value == ''
		)
	)
	{
		if(
			$('registration-username').value > ''
			||
			$('registration-email').value > ''
			||
			(
			$('registration-pass').value > ''
			&&
			$('registration-pass2').value > ''
			)
		)
		{
			checkUsernameAvailability();
			checkEmailAvailability();
			checkPasswords();
			checkName();
			checkCountry();
			//checkTerms();
		}
	}
}

function doValidation()
{
	if(
		!
		(
		$('registration-username').value == ''
		&&
		$('registration-email').value == ''
		&&
		$('registration-pass').value == ''
		&&
		$('registration-pass2').value == ''
		&&
		hasAgreed == false
		)
	)
	{
		setTimeout("reallyDoValidation()",timeout);
	}
}

function reallyDoValidation()
{
	hasErrors = false;
	var errorMsg = "";

	for(i = 0; i < validations.length; i++)
	{
		if(validations[i] == false)
		{
			hasErrors = true;
			errorMsg = errorMsg + "<li>" + errors[i] + "</li>";
		}
	}

	hideElement('finished-initial');
	if(hasErrors)
	{
		showElement('finished-error');
		hideElement('finished-ok');

		errorMsg = "<ul>" + errorMsg + "</ul>";
		$('finished-error-updater').innerHTML = errorMsg;

	}
	else
	{
		showElement('finished-ok');
		hideElement('finished-error');
	}
	repositionFooter();
}

function checkCountry()
{
	country = $('registration-country');
	if(country.options[country.selectedIndex].value > '')
	{
		validations[4] = true;
	}
	else
	{
		validations[4] = false;
	}
	doValidation();
}

function checkTerms()
{
	hasAgreed = true;
	if($('agree').checked)
	{
		validations[5] = true;
	}
	else
	{
		validations[5] = false;
	}
	doValidation();
}

function checkName()
{
	if($('registration-realname').value > '')
	{
		validations[3] = true;
	}
	else
	{
		validations[3] = false;
	}
	doValidation();
}

function checkPasswords()
{
	pass1 = $('registration-pass');
	pass2 = $('registration-pass2');
	var element = "password-checker";

	if(pass1.value > '' && pass2.value > '')
	{
		var fields = new Array();
		fields[0] = "pass";
		fields[1] = "pass2";

		if(pass1.value == pass2.value)
		{
			var params = "&action=password-ok";
		}
		else
		{
			var params = "&action=password-mismatch";
		}

		for(i = 0; i < fields.length; i++)
		{
			if($("registration-" + fields[i]))
			{
				params = params + "&" + fields[i] + "=" + $("registration-" + fields[i]).value;
			}
		}
		var updater = new Ajax.Updater(
			element,
			"update.php",
			{
				method: 'post',
				parameters: params,
				evalScripts: true,
				onComplete: doValidation
			}
		);
	}
	else
	{
		validations[2] = false;
		doValidation();
	}
}

function checkEmailAvailability()
{
	var element = "email-checker";

	if(isValidEmail($("registration-email").value))
	{
		var params = "&action=check-email-availability&email=" + $("registration-email").value;
		var updater = new Ajax.Updater(
			element,
			"update.php",
			{
				method: 'post',
				parameters: params,
				evalScripts: true,
				onComplete: doValidation
			}
		);
	}
	else
	{
		validations[1] = false;
		doValidation();
	}
}

function checkUsernameAvailability()
{
	var element = "username-checker";

	var fields = new Array();
	fields[0] = "username";
	fields[1] = "year";

	if($("registration-" + fields[0]).value > '')
	{
		var params = "&action=check-username-availability";
		for(i = 0; i < fields.length; i++)
		{
			if($("registration-" + fields[i]))
			{
				params = params + "&" + fields[i] + "=" + $("registration-" + fields[i]).value;
			}
		}
		var updater = new Ajax.Updater(
			element,
			"update.php",
			{
				method: 'post',
				parameters: params,
				evalScripts: true,
				onComplete: doValidation
			}
		);
	}
	else
	{
		validations[0] = false;
		doValidation();
	}
}

function showElement(element)
{
	$(element).style.display = 'block';
}

function hideElement(element)
{
	$(element).style.display = 'none';
}

function selectUsername(element)
{
	$('registration-username').value = element;
	checkUsernameAvailability();
}

function isValidEmail(email)
{
	validRegExp = /^[^@]+@[^@]+.[a-z]{2,}$/i;
	if (email.search(validRegExp) == -1)
	{
		return false;
	}
	return true;
}

/* ---- Autocomplete parsers ------------------------------ */

function parseCommunitySearch(param)
{
	if(param.getElementsByTagName('span').length > 0)
	{
		var term = param.getElementsByTagName('span')[0].innerHTML;

		var term = term.replace(/<span _extended="true">/gi, "");
		var term = term.replace(/<span>/gi, "");
		var term = term.replace(/<\/span>/gi, "");

		var term = term.replace("...", "");

		param.getElementsByTagName('span')[0].innerHTML = term;

		var type	= param.getElementsByTagName('span')[0].className;
		var value	= param.getElementsByTagName('span')[1].innerHTML;

		$('community-search-box').value = term;
		if(type == "user")
		{
			document.location = 'user_profile.php?user_id=' + value;
		}
		if(type == "group")
		{
			document.location = 'groups.php?group_id=' + value;
		}
	}
	else
	{
		document.location = 'search.php?q=' + $('community-search-box').value;
	}
}

function parseGameSearch(param)
{
	if(param.id)
	{
		document.location = "game/" + param.id;
	}
	else
	{
		document.location = "search.php?q="+$("searchTerm").value;
	}
}

function toggleNavigation(element, section)
{
	if($(element))
	{
		var images = $(section).getElementsByTagName("img");
		images[0].style.display = "none";
		if($(element).style.display == "block")
		{
			$(element).style.display = "none";
			$(section).className = "";
		}
		else
		{
			$(element).style.display = "block";
			$(section).className = "active";
		}
	}
}

function repositionNewFooter()
{
	if($('nav'))
	{
		var left = $('nav').offsetHeight;
		var qs = new Querystring();
		if(qs.get("platform") > "")
		{
			left = left + 90;
		}
		left = left + 8;
	}
	var padding = 0;
	var main = 0;
	var extra = 0;
	if($('extra'))
	{
		extra = $('extra').offsetHeight;
	}
	if($('extra'))
	{
		main = $('main').offsetHeight;
	}
	if(extra > main && extra > left)
	{
		padding = extra;
	}
	if(main > extra && main > left)
	{
		padding = main;
	}
	if(left > main && left > extra)
	{
		padding = left;
	}
	if( padding > 0 && $("newFooter") )
	{
		$("newFooter").style.top = padding + "px";
		$("newFooter").style.display = 'block';
	}
}

currentSection = "";
var tabs = new Array();
tabs[0] = "home";
tabs[1] = "outnow";
tabs[2] = "comingsoon";

var doSwap = new Array();
doSwap[0] = true;
doSwap[1] = true;
doSwap[2] = true;

function switchHomepage(section)
{
	for(i = 0; i < tabs.length; i++)
	{
		var images = $("tab-"+tabs[i]).getElementsByTagName("img");
		if(section == tabs[i])
		{
			images[0].src = "img/FrontPage/tabs/on-left.gif";
			images[1].src = "img/FrontPage/tabs/on-right.gif";
			$("tab-"+tabs[i]).className = "on";
		}
		else
		{
			images[0].src = "img/FrontPage/tabs/off-left.gif";
			images[1].src = "img/FrontPage/tabs/off-right.gif";
			$("tab-"+tabs[i]).className = "off";
		}
	}

	var updater = new Ajax.Updater(
		"aboveFoldContent",
		"ajax.php",
		{
			method: 'get',
			parameters: "&action=switch-homepage&section=" + section,
			evalScripts: true
		}
	);
}

function underline(element)
{
	$(element).style.textDecoration = "underline";
}

function unUnderline(element)
{
	$(element).style.textDecoration = "none";
}

function swapTab(position, tab, state)
{
	if(doSwap[position] == true)
	{
		$("tab-"+tab).src = "localimg/FrontPage/tabs-"+tab+"-"+state+".gif";
	}
}

function getCookie(c_name)
{
	if(document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(c_name + "=");
		if(c_start!=-1)
		{
			c_start=c_start + c_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if(c_end==-1)
			{
				c_end=document.cookie.length;
			}
			return unescape(document.cookie.substring(c_start,c_end));
		}
	}
	return "";
}

function Querystring(qs) {
	this.params = new Object()
	this.get=Querystring_get
	if (qs == null)
		qs=location.search.substring(1,location.search.length)

	if (qs.length == 0) return

	qs = qs.replace(/\+/g, ' ')
	var args = qs.split('&')

	for (var i=0;i<args.length;i++) {
		var value;
		var pair = args[i].split('=')
		var name = unescape(pair[0])

		if (pair.length == 2)
			value = unescape(pair[1])
		else
			value = name

		this.params[name] = value
	}
}

function Querystring_get(key, default_) {
	// This silly looking line changes UNDEFINED to NULL
	if (default_ == null) default_ = null;

	var value=this.params[key]
	if (value==null) value=default_;

	return value
}

function addClass( node, className ) {
	if(!hasClass(node, className)) {
		node.className = node.className + (node.className ? " " : "") + className;
		return true;
	}
	return false;
};

function removeClass( node, className ) {
	if(hasClass(node, className)) {
		node.className = (' '+node.className+' ').replace(' '+className+' ',' ').replace(/^ | $/,'');
		return true;
	}
	return false;
}

function hasClass( node, value ) {
	return (" "+node.className+" ").match(" "+value+" ") ? true : false;
};

function validateNewsletter()
{
	if(isValidEmail($("newsletter-email").value))
	{
		return true;
	}
	alert("Please enter a valid email address");
	return false;
}

function initAutocompleter()
{
	new Ajax.Autocompleter(
		"searchTerm",
		"game-search-list",
		"community.php",
		{
			frequency: 0.1,
			updateElement: parseGameSearch,
			paramName: "search",
			parameters: "&action=game-search",
			minChars: 3
		}
	);
}
