var nickname;
var password;
var remember;
var email;
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
var pageParams = getParams();

var error_nickname = {"en": "Invalid nickname", "fr": "Pseudo incorrect", "nl": "Ongeldige gebruikersnaam"};
var error_password = {"en": "Invalid password", "fr": "Mot de passe incorrect", "nl": "Ongeldig wachtwoord"};
var error_email = {"en": "Invalid email address", "fr": "Adresse e-mail incorrecte", "nl": "Ongeldig e-mail adres"};
var welcome = {"en": "Welcome", "fr": "Bienvenu", "nl": "Welkom"};

var map1;
var map2;
var playNow;


function showPage(url)
{
	var contentHolder = $("#content");
	var contentFrame = $("#content iframe");
	
	if(contentFrame.length ==0)
	{		
		contentHolder.empty();
		contentHolder.append('<iframe name="contentFrame" width="100%" id="contentFrame"></iframe>');
		contentFrame = $("#contentFrame");
		
		$("#banner").remove();
		
	}
		contentFrame.attr('src',url+".en");
		contentFrame.load(function()
		{
			
		});
}


var defaultWebLaunchHandler = function(event)
{	
	launch_web(event.data.country, event.data.language, event.data.registration,'');
}

var loggedinWebLaunchHandler = function(event)
{
	launch_web('','','',event.data.worldurl);
}


function handleError(XHRobj,errtype,errObj) {
	alert("Error: "+errObj.number
		+"\nType: "+errObj.name
		+"\nDescription: "+errObj.description
		+"\nSource Object Id: "+errObj.srcElement.instanceId
	);
}
function getExternalVariables()
{
    var rval = new Object;
    var bb = document.getElementById( "blackbox" );

    rval.blackbox = "";

    if ( bb != undefined && bb.value != "" ) {
        rval.blackbox = bb.value;
    }

    if ( pageParams != undefined && pageParams["code"] != undefined)
    {
       rval.code = pageParams["code"];
    }

    return rval;
}

$(document).ready(function() {
	var rval = getExternalVariables();
	//call the function in the each html for initialize the language spesific sttings 
	try{
		initPageSettings();
	}catch(e){};
	
	if(useflXHR==true)
	{
		jQuery.ajaxSetup({transport:'flXHRproxy',error:handleError});
		jQuery.flXHRproxy.registerOptions(ajaxGatewayUrl,{xmlResponseText:false,loadPolicyURL:loadPolicyURL});
	}
	
	
	if(getCookie('userlogged') != undefined && getCookie('userlogged') == '1')
	{
		$("#login span.loader").html('').append('<img src="assets/images/ajax-loader.gif" alt="Loading" />');
			
					$.ajax({url:ajaxGatewayUrl,
					type: method,
					data:{action:"getloggedinfo",lang:selectedLanguage, bb: rval.blackbox},
					cache:false,
					success:function(data)
					{
						$("#login span.loader").html('');
						if(data.ok == true)
						{
							dologgedinActions(data);							
						}else
						{
							try{
								initUnloginPageSettings();
							}catch(e){}
							
							//alert(getCookie('userlogged'));
							/*
							$("#login span.rpx").hide();
							$("#login span.error").html('');
							$("#login span.error").append(data.message + ' <img src="assets/images/close.gif" alt="Close" />');
							*/
						}	    		
						
					},
					error:function()
					{
						$("#login span.loader").html('');
					},					
					dataType:dataType
			}); //end of ajax
		
	}
	else
	{
		try{
			initUnloginPageSettings();
		}catch(e){}
	}
	
	nickname = $("#login_nickname");
	password = $("#login_password");
	remember = $("#login_remember");
	email = $("#forgotpassword_email");
	
	addFieldToggleListener(nickname);
	addFieldToggleListener(password);
	addFieldToggleListener(email);
	
	map1 = $("#map1");
	map2 = $("#map2");
	playNow = $("#enterworld a");
	
	map1.bind('click',{country:selectedCountry,language:selectedLanguage,registration:'registration'},defaultWebLaunchHandler);
	map2.bind('click',{country:selectedCountry,language:selectedLanguage,registration:'registration'},defaultWebLaunchHandler);
	playNow.bind('click',{country:selectedCountry,language:selectedLanguage,registration:''},defaultWebLaunchHandler);
	
	
	/* Click Listener */
	$('#goto_forgotpassword').click(function() { forgotPasswordToggle(); });
	$('#goto_login').click(function() { forgotPasswordToggle(); });
	$("#login span.error").click(function() { displayRpx(); }); //Hide error message
	$("#forgotpassword span.error").click(function() { displayInfos(); }); //Hide error message
	$("#forgotpassword span.success").click(function() { displayInfos(); }); //Hide success message
	
	var cookieNick = getCookie("taatu_user_nickname");
	var cookieInfo= getCookie("taatu_user_info");
	
	if(cookieNick != undefined && cookieNick != '' && cookieInfo != undefined && cookieInfo != '')
	{
		nickname.val(cookieNick);
		password.val(cookieInfo.substr(5,8));
		
	}
			
	/* Login */
	$("#submit_login").click(function(){
		var hasError = false;
		var error_messsage = '';
		var url = $("#login form").attr('action');
		
		$("#login span.error").html('');
		
/*
		if(nickname.val() == '' || nickname.val() == nickname.mask) {
			error_messsage += error_nickname[selectedLanguage] + '. ';
			hasError = true;
		}
		
		if(password.val() == '' || password.val() == password.mask) {
			error_messsage += error_password[selectedLanguage] + '. ';
			hasError = true;
		}
*/
		
		if(hasError == false) {
			$("#login span.loader").html('').append('<img src="assets/images/ajax-loader.gif" alt="Loading" />');
			var rval = getExternalVariables();
			$.ajax({url:ajaxGatewayUrl,
					type: method,
					data:{action:"login", nickname: nickname.val(), password: password.val(), remember: remember.is(':checked'),lang:selectedLanguage,country:selectedCountry, bb:rval.blackbox },
					cache:false,
					success: function(data)
					{
						//alert("error:handleError");
						$("#login span.loader").html('');
						nickname.val('');
						nickname.blur();
						password.val('');
						password.blur();
						if(data.ok == false) 
						{
						
							$("#login span.rpx").hide();
							$("#login span.error").html('');
							$("#login span.error").append(data.message + ' <img src="assets/images/close.gif" alt="Close" />');
						} else 
						{
							dologgedinActions(data);
													
						}	
					},
				
					error:function()
					{
						//alert("error:error");
						//TODO display error taatu down
						$("#login span.loader").html('');
					},				
					
					dataType:dataType
			}); //end of ajax
					
			
				
		} else {
			error_messsage += '<img src="assets/images/close.gif" alt="Close" />';
			$("#login span.rpx").hide();
			$("#login span.error").html('');
			$("#login span.error").append(error_messsage);	
		}
		
		return false;
	});
	
	/* Forgot Password */
	$("#submit_forgotpassword").click(function(){
		var hasError = false;
		var error_messsage = '';
		//var url = $("#forgotpassword form").attr('action');
		
		if(!emailReg.test(email.val())) {
			error_messsage += error_email[selectedLanguage] + '. ';
			hasError = true;
		}
		
		if(hasError == false)
		{
			$("#forgotpassword span.loader").html('').append('<img src="assets/images/ajax-loader.gif" alt="Loading" />');
			
			$.ajax({url:ajaxGatewayUrl,
					type: method,
					data:{action:"forgotpassword",email: email.val(), lang: selectedLanguage },
					cache:false,
					success:function(data)
					{
						$("#forgotpassword span.infos").hide();
						$("#forgotpassword span.error").hide('');
						$("#forgotpassword span.success").hide();
						$("#forgotpassword span.loader").html('');
						$("#forgotpassword span.error").html('');
						$("#forgotpassword span.success").html('');
						email.val('');
						email.blur();
						if(data.ok != true) {
							$("#forgotpassword span.error").append(data.message + ' <img src="assets/images/close.gif" alt="Close" />');
							$("#forgotpassword span.error").show('');
						} else {
							$("#forgotpassword span.success").append(data.message + ' <img src="assets/images/close.gif" alt="Close" />');	
							$("#forgotpassword span.success").show('');
						}
					},
					dataType:dataType
			});
						
		} 
		else 
		{
			error_messsage += '<img src="assets/images/close.gif" alt="Close" />';
			$("#forgotpassword span.infos").hide();
			$("#forgotpassword span.error").hide('');
			$("#forgotpassword span.success").hide();
			$("#forgotpassword span.error").html('');
			$("#forgotpassword span.success").html('');
			$("#forgotpassword span.error").append(error_messsage);	
			$("#forgotpassword span.error").show('');
		}
		
		return false;
	});
	
	/* Hide */
	$("#login span.loader").html('');
	$("#login span.error").html('');
	$("#forgotpassword span.loader").html('');
	$("#forgotpassword span.error").html('');
	$("#forgotpassword span.success").html('');
});

function displayInfos() {
	$("#forgotpassword span.infos").show();
	$("#forgotpassword span.error").html('');
	$("#forgotpassword span.success").html('');
}

function displayRpx() {
	$("#login span.rpx").show();
	$("#login span.error").html('');
}

function addFieldToggleListener(field) {
	field.mask = field.val();
	field.focus(function() {
		if (field.val() == field.mask) { field.val(''); field.removeClass('low'); }
	});
	field.blur(function() {
		if (field.val() == '') { field.val(field.mask); field.addClass('low'); }
	});
}

function doSignOut()
{
	//alert("DDDSSD")
	
	
	$.ajax({
		url: ajaxGatewayUrl,
		data: {
			action: "signout"
		},
		type: method,
		cache: false,
		success: function(data){
			if (data.ok == true) {
				/*for (var i = 0; i<popups.length; i++ )
			 {
			 popups[i].close();
			 }*/
				window.location = "index.html";
				
			}
			
		},
		dataType: dataType
	});
}


function dologgedinActions(data)
{	
	map1.unbind('click',defaultWebLaunchHandler);
	map2.unbind('click',defaultWebLaunchHandler);
	playNow.unbind('click',defaultWebLaunchHandler);
	nickname = null;
	password = null;
	remember = null;
	email = null;
	
	$("#login").remove();
	$("#logged").remove();
	$("#forgotpassword").remove();
								
	$("#nav").prepend(unescape(data.element.content));
								
	changeButtonToPlay();
	updateLoggedInInteraction(data);
	activateKeepAlive();
	//page level function for handle the page specific settings
	try{
		initLoggedinPageSettings(data);
	}catch(e){}
	
	
}


function updateLoggedInInteraction(data)
{
	//$('#sign_out').click(function() { doSignOut(); });
	playNow = $("#enterworld a");
	map1.bind('click',data.data,loggedinWebLaunchHandler);
	map2.bind('click',data.data,loggedinWebLaunchHandler);
	//playNow.bind('click',data.data,loggedinWebLaunchHandler);
	
}

function activateKeepAlive()
{
	window.setInterval(function()
	{
		keepAlive();
	}, 1000*60*10)
}

function keepAlive()
{
	
	$.ajax({
		url: ajaxGatewayUrl,
		data: {
			action: "keepalive",
			lang:selectedLanguage
		},
		type: method,
		cache: false,
		success: function(data)
		{
			if (data.ok == true) 
			{
								
			}else
			{
				window.location = "index.html";
			}			
		},
		dataType: dataType
	});
	
}

function forgotPasswordToggle() {
	$("#forgotpassword").toggle();
	$("#forgotpassword span.infos").show();
	$("#forgotpassword span.loader").html('');
	$("#forgotpassword span.error").html('');
	$("#forgotpassword span.success").html('');
	
	$("#login").toggle();
	$("#login span.rpx").show();
	$("#login span.loader").html('');
	$("#login span.error").html('');
}