var reg_dlg_created = false;
var login_dlg_created = false;
var restore_dlg_created = false;

function startRegistration()  {
   if (!reg_dlg_created) {
      var bg_css;
      if ($.browser.msie)   {
         bg_css = {background:"black", filter:"alpha(opacity=50)" };
      }  else  {
         bg_css = { background:"url(images/overlay-bg.png)" };
      }
      $("#dlg-registration").dialog(
         { 
            width:473, height:360, 
            modal:true,
            bgiframe:true,
//            position:["center", 200], 
            position:["center", "center"], 
            overlay: bg_css,
            close:regCancel
      });

      reg_dlg_created = true;
   }
   $("#dlg-registration").dialog("open");
//   $("#dlg-registration .error").addClass("none");
   $("#dlg-reg-content .error").show().hide();
   $("#dlg-registration .dlg-content").removeClass("none");
   $("#reg-login").focus();
}

function startLogin()  {
   if (!login_dlg_created) {
      var bg_css;
      if ($.browser.msie)   {
         bg_css = {background:"black", filter:"alpha(opacity=50)" };
      }  else  {
         bg_css = { background:"url(images/overlay-bg.png)" };
      }
      $("#dlg-login").dialog(
         { 
            width:473, height:278, 
            modal:true,
            bgiframe:true,
//            position:["center", 220], 
            position:["center", "center"], 
            overlay: bg_css,
            close:loginCancel
      });

      login_dlg_created = true;
   }
   $("#dlg-login").dialog("open");
   $("#dlg-login .error").show().hide();
   $("#dlg-login .dlg-content").removeClass("none");
   $("#log-login").focus();
}

function assureCorrectErrorCode(err_code) {
   if ("undefined" == typeof(err_code)) return 3;
   switch(Number(err_code))  {
      case 1:
      case 2:
         return Number(err_code);
         break;
      default:
         return 3;
         break;
   }
}

function regOK()  {
   var login = $("#reg-login").attr("value");
   var password = $("#reg-password").attr("value");
   var password2 = $("#reg-password2").attr("value");
   var email = $("#reg-email").attr("value");
   
   $.post(HOME + "/auth.php?command=register&" + Math.random(), {login:login, password:password, password2:password2, email:email}, function(xml, textStatus)   {
      try  {
         var response = $("response", xml);
         if (0 == response.length) throw {message:"invalid response"};
         if ("error" == response.attr("status")) throw {message: response.attr("message")};
         if ("ok" != response.attr("status")) throw {message: "unknown response"};

//         alert("ok");
         reloadPage();
      } catch(e)   {
         //alert("An error during registration: " + e.message);
         var err_code = assureCorrectErrorCode(response.attr("error-code"));
         $("#dlg-registration .error").hide();
         $("#dlg-registration .err-" + err_code).text(e.message).show();
      }
      
   });
}

function regClose()  {
   $("#dlg-registration").dialog("close");
   return false;
}

function regCancel()  {   
   $("#dlg-registration .dlg-content").addClass("none");
}

function loginOK()  {
   var login = $("#log-login").attr("value");
   var password = $("#log-password").attr("value");
   $.post(HOME + "/auth.php?command=login&" + Math.random(), {login:login, password:password}, function(xml, textStatus)   {

      try  {
         var response = $("response", xml);
         if (0 == response.length) throw {message:"invalid response"};
         if ("error" == response.attr("status")) throw {message: response.attr("message")};
         if ("ok" != response.attr("status")) throw {message: "unknown response"};

//         alert("ok");
         reloadPage();
      } catch(e)   {
         //alert("An error during registration: " + e.message);
         var err_code = assureCorrectErrorCode(response.attr("error-code"));
         $("#dlg-login .error").hide();
         $("#dlg-login .err-" + err_code).text(e.message).show("fast");
      }
      
   });
}

function loginClose()  {
   $("#dlg-login").dialog("close");
   return false;
}

function loginCancel()  {   
   $("#dlg-login .dlg-content").addClass("none");
}

function switchRegLogin(ind)  {
   switch(ind) {
      case 0:
         loginClose();
         startRegistration();
         break;
      case 1:
         regClose();
         startLogin();
         break;
      case 2:
         loginClose();
         restorePassword();
         break;
   }
}

function logout()  {
   $.post(HOME + "/auth.php?command=logout&" + Math.random(), {}, function(xml, textStatus)   {
      try  {
         var response = $("response", xml);
         if (0 == response.length) throw {message:"invalid response"};
         if ("error" == response.attr("status")) throw {message: response.attr("message")};
         if ("ok" != response.attr("status")) throw {message: "unknown response"};

//         alert("ok");
         reloadPage();
      } catch(e)   {
         alert("An error: " + e.message);
      }
      
   });
}

function restorePassword()  {
   if (!restore_dlg_created) {
      var bg_css;
      if ($.browser.msie)   {
         bg_css = {background:"black", filter:"alpha(opacity=50)" };
      }  else  {
         bg_css = { background:"url(images/overlay-bg.png)" };
      }
      $("#dlg-restore").dialog(
         { 
            width:473, height:278, 
            modal:true,
            bgiframe:true,
//            position:["center", 220], 
            position:["center", "center"], 
            overlay: bg_css,
            close:restoreCancel
      });

      restore_dlg_created = true;
   }
   $("#dlg-restore").dialog("open");
   $("#dlg-restore .error").show().hide();
   $("#dlg-restore .dlg-content").removeClass("none");
   $("#restore-email").focus();
}

function restoreOK()  {
   var email = $("#restore-email").attr("value");
   $.post(HOME + "/auth.php?command=restorepassword&" + Math.random(), {email:email}, function(xml, textStatus)   {

      try  {
         var response = $("response", xml);
         if (0 == response.length) throw {message:"invalid response"};
         if ("error" == response.attr("status")) throw {message: response.attr("message")};
         if ("ok" != response.attr("status")) throw {message: "unknown response"};
         var message = response.attr("message");
         if ("undefined" == typeof(message) || "" == message)  {
            message = "Check your e-mail for the further instructions.";
         }

         alert(message);
         restoreClose();
      } catch(e)   {
         //alert("An error during registration: " + e.message);
         $("#dlg-restore .error").hide();
         $("#dlg-restore .error").text(e.message).show("fast");
      }
      
   });
}

function restoreClose()  {
   $("#dlg-restore").dialog("close");
   return false;
}

function restoreCancel()  {   
   $("#dlg-restore .dlg-content").addClass("none");
}