// Author::    henhey
// Copyright:: S2I Hamburg
// Since::   18.06.2007
//

// Öffentliche Methoden
// (die in der Seite aufgerufen werden)
// z.B. showLogin({showBeforeText:true}, '/people/Uschi/forum/show_forum/all');
var loginObj = null;
function showLogin(params, returnUrl, anker){
  window.location.href = '/login'
  //loginObj = new LoginLayer();
  //loginObj.showLogin(params, returnUrl, anker);
}
function login_user(){
  loginObj.login();
}
function cancelLogin(){
  loginObj.closeLogin();
}

function goBackFromWhereWeCame() {
    loginObj.returnToSender();
}

// Login-Klasse
// (Hält Werte und Zustände)
function LoginLayer(){
  
  this.overlay_id = "login_overlay";
  this.loginDiv_id = "login_div";
  this.form_id = "the_login_form";
  this.messagesDiv_id = "messages";
  this.url_loadLoginDiv = "/sessions/ajax_show_login";
  this.url_login = "/sessions/ajax_login";
  this.returnAnker = null;
  this.returnUrl = null;
  
  
  this.showLogin = function(params, returnUrl, anker){    
    
    if(anker) this.returnAnker = anker;
    if(returnUrl) this.returnUrl = returnUrl;
    
    //hideSelectBoxes();
    hideLayerBreaker();
    
    
        // create page overlay
    var documentBody = document.getElementsByTagName("body").item(0);
    
    var overlay = document.createElement("div");
    overlay.setAttribute('id', this.overlay_id);
    overlay.style.display = 'none';
    documentBody.appendChild(overlay);
    
    // create div to load the login-Screen
    var loginDiv = document.createElement("div");
    loginDiv.setAttribute('id', this.loginDiv_id);
    loginDiv.style.display = 'none';
    documentBody.appendChild(loginDiv);
    
    // AJAX-Updater: Load login-snippet
    var options = new Object();
    options.method     = "post";
    options.asynchronous  = true;
    options.evalScripts = true;
        options.onComplete = this.showLogin_onComplete.bind(this);
    
    if(params) options.parameters = params;
    new Ajax.Updater(this.loginDiv_id, this.url_loadLoginDiv, options);
  };
  
  this.showLogin_onComplete = function(request){

    // rezise and fade in overlay
    var arrayPageSize = getPageSize();  //pageWidth,pageHeight,windowWidth,windowHeight
    Element.setHeight(this.overlay_id, arrayPageSize[1]);
    new Effect.Appear(this.overlay_id, { duration: 0.2, from: 0.0, to: 0.8 });
    
    // position and show login-div
    var arrayPageScroll = getPageScroll();
    var xTop = arrayPageScroll[1] + (arrayPageSize[3] / 15);
    Element.setTop(this.loginDiv_id, xTop);
    Element.show(this.loginDiv_id);
  };
  
  this.login = function(){    
    this.clearErrorMessage();
        var options = new Object();
    options.method     = "post";
    options.asynchronous  = true;
    options.parameters = Form.serialize(this.form_id);
    options.onComplete = this.login_onComplete.bind(this);
    new Ajax.Request(this.url_login, options);  
  };
    
  this.login_onComplete = function(request){
    if(request.responseText == "ok"){
      this.returnToSender();
    }
    else {
            setTimeout("loginObj.showErrorMessage('"+request.responseText+"')", 1000);
    }
  };  
  
  this.clearErrorMessage = function(){
        $(this.messagesDiv_id).innerHTML = "";
        Element.hide(this.messagesDiv_id);
    };
    
    this.showErrorMessage = function(message){
        $(this.messagesDiv_id).innerHTML = message;
        Element.show(this.messagesDiv_id);
  };
  
  this.closeLogin = function(){
    Element.hide(this.loginDiv_id);
    new Effect.Fade(this.overlay_id, { duration: 0.2});
        //showSelectBoxes();
        showLayerBreaker();
  };
    
    this.returnToSender = function() {
        if(this.returnUrl){
      var returnUrl = this.returnUrl;
      if(this.returnAnker) returnUrl = this.returnUrl+this.returnAnker; 
      this.returnAnker = null;
      this.returnUrl = null;  
      window.location.href = returnUrl;
    }
    else if(this.returnAnker){
      var newPath = window.location.href + this.returnAnker;
      this.returnAnker = null;
      this.returnUrl = null;  
      window.location.href = newPath;
      window.location.reload();
    }
        else {
        window.location.reload();
    } 
    return;
    }
  
}