function fb_login()
{
	FB.Connect.requireSession();
    FB.Facebook.get_sessionState().waitUntilReady(function()
    {
		callback = {
			success: function(o){
				var response = o.responseText;
				try
				{
					response = YAHOO.lang.JSON.parse(response); 
				}
				catch(e){}
				
				if (response.error) {
					if(response.error == 1)
					{
						openConnectWithFacebook();
					}
					else
					{
						alert("Fehler in fb_login()");
					}
				}
				else
				{
					changeLoginState(response);			
				}	
			},
			failure: function(o)
			{
				alert("Fehler in fb_login()");
			}
		}
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrFacebookLogin.php", callback);
	});	
}

//CONNECT WITH FACEBOOK
function openConnectWithFacebook()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				if(!connectWithFacebookDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "connectWithFacebookDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"450px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					connectWithFacebookDialog = panel;
					connectWithFacebookDialog.setHeader("Connect with Facebook");
				}
				connectWithFacebookDialog.setBody(o.responseText);
				
				connectWithFacebookDialog.render();
				connectWithFacebookDialog.show();		
			}
			else
			{
				alert("Fehler 1 in connectWithFacebookDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler 2 in connectWithFacebookDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrConnectWithFacebookDialog.php", callback); 		
}

function submitConnectWithFacebookRequest(state)
{
	if(state==1)
	{
		var form = document.getElementById("connectWithFacebook1Form");
		var error = new Array();
		
		if(isEmpty(trim(form.username.value)))
		{
			error.push("Bitte gib einen Benutzernamen ein!");
		}
		if(isEmpty(error))
		{
			YAHOO.util.Connect.setForm(form);
			
			var callback =
			{
				success: callbackConnectWithFacebook1,
				failure: function(o)
				{
					alert("Error in submitRegisterRequest()");
				}
			};
			
			YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrRegister.php", callback); 
		}
		else
		{
			$("connectWithFacebook1Error").innerHTML = error.join("<br>");
			$("connectWithFacebook1Error").style.display = "";
		}					
	}
	if(state==2)
	{
		var form = document.getElementById("connectWithFacebook2Form");
		var error = new Array();
		
		if(isEmpty(trim(form.username.value)))
		{
			error.push("Bitte gib deinen Benutzernamen ein!");
		}
		if(isEmpty(trim(form.password.value)))
		{
			error.push("Bitte gib dein Passwort ein!");
		}
		if(isEmpty(error))
		{
			YAHOO.util.Connect.setForm(form);
			
			var callback =
			{
				success: callbackConnectWithFacebook2,
				failure: function(o)
				{
					alert("Error in submitLoginRequest()");
				}
			};
			
			YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrLogin.php", callback); 
		}
		else
		{
			$("connectWithFacebook2Error").innerHTML = error.join("<br>");
			$("connectWithFacebook2Error").style.display = "";
		}			
	}
}

function callbackConnectWithFacebook1(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("connectWithFacebook1Error").innerHTML = response.error;
		$("connectWithFacebook1Error").style.display = "";		
	}
	else
	{
		changeLoginState(response);
		connectWithFacebookDialog.hide();
	}
}

function callbackConnectWithFacebook2(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("connectWithFacebook2Error").innerHTML = response.error;
		$("connectWithFacebook2Error").style.display = "";		
	}
	else
	{
		changeLoginState(response);
		connectWithFacebookDialog.hide();
	}
}

function changeLoginState(html)
{
	//getRecentOpinions(1,null,true);
	//mapRefreshPlaces();
	$("loginControl").innerHTML = html;
}

//LOGOUT

function logout()
{
	FB.Connect.logout();
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				//target div
				changeLoginState(o.responseText);
			}
			else
			{
				alert("Fehler in logout()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in logout()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrLogout.php", callback); 	
}

//LOGIN

function openLoginDialog()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				
				if(!loginDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "loginDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"200px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					loginDialog = panel;
					loginDialog.setHeader("Login");
				}
				loginDialog.setBody(o.responseText);
				
				loginDialog.render();
				loginDialog.show();		
			}
			else
			{
				alert("Fehler in openLoginDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in openLoginDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrLoginDialog.php", callback); 		
}

function submitLoginRequest()
{
	var form = document.getElementById("loginForm");
	var error = new Array();
	
	if(isEmpty(trim(form.username.value)))
	{
		error.push("Bitte gib deinen Benutzernamen ein!");
	}
	if(isEmpty(trim(form.password.value)))
	{
		error.push("Bitte gib dein Passwort ein!");
	}
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackLogin,
			failure: function(o)
			{
				alert("Error in submitLoginRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrLogin.php", callback); 
	}
	else
	{
		$("loginError").innerHTML = error.join("<br>");
		$("loginError").style.display = "";
	}	
}

function submitSuperuserLoginRequest()
{
	var form = document.getElementById("superuserLoginForm");
	var error = new Array();
	
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackLogin,
			failure: function(o)
			{
				alert("Error in submitSuperuserLoginRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrSuperuserLogin.php", callback); 
	}
	else
	{
		$("superuserLoginError").innerHTML = error.toString();
		$("superuserLoginError").style.display = "";
	}	
}

function callbackLogin(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("loginError").innerHTML = response.error;
		$("loginError").style.display = "";		
	}
	else
	{
		changeLoginState(response);
		loginDialog.hide();
	}
}

//REGISTER
function openRegisterDialog()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				if(!registerDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "registerDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"450px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					registerDialog = panel;
					registerDialog.setHeader("Registieren");
				}
				registerDialog.setBody(o.responseText);
				
				registerDialog.render();
				registerDialog.show();		
			}
			else
			{
				alert("Fehler in openRegisterDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in openRegisterDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrRegisterDialog.php", callback); 		
}

function submitRegisterRequest()
{
	var form = document.getElementById("registerForm");
	var error = new Array();
	
	if(isEmpty(trim(form.email.value)))
	{
		error.push("Bitte gib eine E-Mail Adresse ein!");
	}
	if(isEmpty(trim(form.username.value)))
	{
		error.push("Bitte gib einen Benutzernamen ein!");
	}
	if(isEmpty(trim(form.password.value)))
	{
		error.push("Bitte gib ein Passwort ein!");
	}
	if(form.password2.value!=form.password.value)
	{
		error.push("Die beiden Passw&ouml;rter stimmen nicht &uuml;berein!");
	}
	if(!form.agb.checked)
	{
		error.push("Bitte stimme den AGB zu!");
	}
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackRegister,
			failure: function(o)
			{
				alert("Error in submitRegisterRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrRegister.php", callback); 
	}
	else
	{
		$("registerError").innerHTML = error.join("<br>");
		$("registerError").style.display = "";
	}	
}

function callbackRegister(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("registerError").innerHTML = response.error;
		$("registerError").style.display = "";		
	}
	else
	{
		registerDialog.setBody("Es wurde eine E-Mail mit dem Aktivierungslink an " + response.email + " gesendet.<br><br>Bitte best&auml;tige damit deine Registierung.");
	}
}

//CHANGE PASSWORD
function openChangePasswordDialog()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				if(!changePasswordDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "changePasswordDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"255px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					changePasswordDialog = panel;
					changePasswordDialog.setHeader("Passwort &auml;ndern");
				}
				changePasswordDialog.setBody(o.responseText);
				
				changePasswordDialog.render();
				changePasswordDialog.show();		
			}
			else
			{
				alert("Fehler in openChangePasswordDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in openChangePasswordDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrChangePasswordDialog.php", callback); 		
}

function submitChangePasswordRequest()
{
	var form = document.getElementById("changePasswordForm");
	var error = new Array();
	
	if(isEmpty(trim(form.oldPassword.value)))
	{
		error.push("Bitte gib dein aktuelles Passwort ein!");
	}
	if(isEmpty(trim(form.password.value)))
	{
		error.push("Bitte gib ein neues Passwort ein!");
	}
	if(form.password2.value!=form.password.value)
	{
		error.push("Die beiden neuen Passw&ouml;rter stimmen nicht &uuml;berein!");
	}
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackChangePassword,
			failure: function(o)
			{
				alert("Error in submitChangePasswordRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrChangePassword.php", callback); 
	}
	else
	{
		$("changePasswordError").innerHTML = error.join("<br>");
		$("changePasswordError").style.display = "";
	}	
}

function callbackChangePassword(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("changePasswordError").innerHTML = response.error;
		$("changePasswordError").style.display = "";		
	}
	else
	{
		changePasswordDialog.setBody(response);
	}
}

//FORGOT USERNAME
function openForgotUsernameDialog()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				if(!forgotUsernameDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "forgotUsernameDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"255px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					forgotUsernameDialog = panel;
					forgotUsernameDialog.setHeader("Benutzername vergessen");
				}
				forgotUsernameDialog.setBody(o.responseText);
				
				forgotUsernameDialog.render();
				forgotUsernameDialog.show();		
			}
			else
			{
				alert("Fehler in openForgotUsernameDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in openForgotUsernameDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrForgotUsernameDialog.php", callback); 		
}

function submitForgotUsernameRequest()
{
	var form = document.getElementById("forgotUsernameForm");
	var error = new Array();
	
	if(isEmpty(trim(form.email.value)))
	{
		error.push("Bitte gib deine E-Mail Adresse ein!");
	}
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackForgotUsername,
			failure: function(o)
			{
				alert("Error in submitForgotUsernameRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrForgotUsername.php", callback); 
	}
	else
	{
		$("forgotUsernameError").innerHTML = error.join("<br>");
		$("forgotUsernameError").style.display = "";
	}	
}

function callbackForgotUsername(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("forgotUsernameError").innerHTML = response.error;
		$("forgotUsernameError").style.display = "";		
	}
	else
	{
		forgotUsernameDialog.setBody("Dein Benutzername wurde an " + response.email + " gesendet.");
	}
}

//FORGOT USERNAME
function openForgotPasswordDialog()
{
	var callback =
	{
		success: function(o)
		{			
			if(!isEmpty(o.responseText))
			{
				if(!forgotPasswordDialog)
				{			
					panelDiv = document.createElement("div");
					panelDiv.id = "forgotPasswordDialog";
					document.body.appendChild(panelDiv);
					var panel = new YAHOO.widget.Panel(panelDiv,
						{ fixedcenter: true, 
						constraintoviewport: true, 
						visible:false,
						modal: true, 
						width:"250px", 
						draggable:true } );
					
					overlayManager.register(panel);
				
					forgotPasswordDialog = panel;
					forgotPasswordDialog.setHeader("Password vergessen");
				}
				forgotPasswordDialog.setBody(o.responseText);
				
				forgotPasswordDialog.render();
				forgotPasswordDialog.show();		
			}
			else
			{
				alert("Fehler in openForgotPasswordDialog()");
			}
		},
		failure: function(o)
		{
			alert("Fehler in openForgotPasswordDialog()");
		}
	}
	YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrForgotPasswordDialog.php", callback); 		
}

function submitForgotPasswordRequest()
{
	var form = document.getElementById("forgotPasswordForm");
	var error = new Array();
	
	if(isEmpty(trim(form.username.value)))
	{
		error.push("Bitte gib deinen Benutzernamen ein!");
	}
	if(isEmpty(error))
	{
		YAHOO.util.Connect.setForm(form);
		
		var callback =
		{
			success: callbackForgotPassword,
			failure: function(o)
			{
				alert("Error in submitForgotPasswordRequest()");
			}
		};
		
		YAHOO.util.Connect.asyncRequest('POST', "mod/login/xhrForgotPassword.php", callback); 
	}
	else
	{
		$("forgotPasswordError").innerHTML = error.join("<br>");
		$("forgotPasswordError").style.display = "";
	}	
}

function callbackForgotPassword(o)
{
	var response = o.responseText;
	try
	{
		response = YAHOO.lang.JSON.parse(response); 
	}
	catch(e){}
	
	if(response.error)
	{
		$("forgotPasswordError").innerHTML = response.error;
		$("forgotPasswordError").style.display = "";		
	}
	else
	{
		forgotPasswordDialog.setBody("Dein neues Passwort wurde an deine E-Mail Adresse gesendet.");
	}
}