passport = "http://my.gamexp.ru/passport";
imgdir = "http://www.gamexp.ru/auth/img"

function auth_passportpart(action){
  if(action != 'logout' && action != 'login' && getURLParam('REFER_ID') > 0){
    window.user = {"auth":0, "login":"","pass":""};
    bar_loginform();
    return;
  }
  if(action != 'login' && action != 'logout' && window.ajaxcomplete){
    return;
  }
  if(action == 'login'){
    if(!window.user){
      window.user = {"error": false};
    }
    else{
      window.user.error = false;
    }
    var regexp = /[^-\w\d_@\.]+/igm;
    login = $("input[name='USER_LOGIN']").val();
    login = login.replace(regexp, "");
    pass = $("input[name='USER_PASSWORD']").val();
    pass = pass.replace(regexp, "");
    //alert(login + " " + pass);
    //remember = $("input[name='USER_REMEMBER']").is(':checked');
    remember = $("#auth_remember").val();
    if(remember == 1){
      remember = true;
    }
    else{
      remember = false;
    }
    //alert(login+pass+remember);
    window.sent = {"login":login,"pass":pass, "remember":remember};
    if(login.length == 0){
      window.user.error = "nologin";
    }
    else if(pass.length == 0){
      window.user.error = "nopass";
    }
    else if(login.length<3 || pass.length<6 || login.length>50 || pass.length>50){
      window.user.error = "lessthan6";
    }
    if(window.user.error){
      bar_loginform();
      return;
    }
  }
  if(action == 'logout'){
    window.sent = {"login":"","pass":"", "remember":0};
  }
  data = {
    type: "GET",
    url: "http://my.gamexp.ru/passport/auth.php",
    dataType: "script",
    timeout: 1500,
    cache: false,
    beforeSend: callback_wait(action),
    error: function(){
      //alert("error");
      bar_error();
    },
    success: function(){
    },
    complete: function(){
      window.ajaxcomplete = 1;
      if(!window.user){
        window.user = {'auth': 0};
      }
      if(window.user['auth'] == 1){
	if(getURLParam("sid") && (CONST_PID == 39 || CONST_PID == 34 || CONST_PID == 2)){
	  window.ext_auth = 'mailrurz';
	  bar_hellouser(window.user);
          if(isdefined("window", "CONST_RELOAD") && CONST_RELOAD == true){
            window.location = window.location;
          }
	}
	else{
          auth_localpart();
	}
      }
      else if(action == 'logout'){
        auth_localpart();
      }
      else{
        bar_loginform();
      }
    },
    delay: function(){
      bar_error();
    }
  };
  if(action == 'login'){
    data.data = {'login':window.sent.login, 
		 'pass':md5(window.sent.pass), 
		 'remember':window.sent.remember,
		 'url':window.location.href, 
		 'pid':CONST_PID};
  }
  else if(action == 'logout'){
    data.data = {'action':'logout'};
  }
  else if(action != 'logout' && getURLParam("sid") && (CONST_PID == 39 || CONST_PID == 34 || CONST_PID == 2)){//mailrurz
    data.data = {'sid':getURLParam("sid")};
    data.url = "/auth/checkmailru.php";
    window.ext_auth = 'mailrurz';
  }
  else{
    data.data = {'pid':CONST_PID};
  }
  $.ajax(data);
  $('.authorizing').css("z-index", 1000);
  $('.authorizing').css("width", "100%");
}
function auth_localpart(){
  if(isdefined("window", "ext_auth")){
    //alert(window.user.login);
    window.ext_auth = 'mailrurz';
    bar_hellouser(window.user);
    if(isdefined("window", "CONST_RELOAD") && CONST_RELOAD == true){
      window.location = window.location;
    }
    return;
  }
  data = {
    type: "GET",
    url: "/auth/checktoken.php",
    data: {'token': window.user['token'], 'id': window.user['id']},
    dataType: "script",
    timeout: 1500,
    cache: false,
    complete: function(){
      if(window.user.auth == true || window.user.authcheck == true ){
        bar_hellouser(window.user);
        if(CONST_PID == '46' && window.user.csid != undefined){
          window.location = '/form/index.html?CSID=' + window.user.csid;
        }
        if(isdefined("window", "CONST_RELOAD") && CONST_RELOAD == true){
          window.location = window.location;
        }
	jqauth_complete_events(true, window.user);
      }
      else{
        bar_loginform();
	if(isdefined("window", "CONST_RELOAD") && CONST_RELOAD == true){
          window.location = window.location;
        }
	jqauth_complete_events(false, window.user);
      }
    }
  };
  if(CONST_PID == 5){
    data.url = "/auth/checktoken.jsp";
    data.data.format = "ini";
  }
  if(CONST_PID == 3){
    data.url = "/cgi-bin/auth/checktoken.pl";
    data.data.format = "ini";
  }
  if(CONST_PID == 46){
    data.url = "/form/auth/checktoken.pl";
    data.data.format = "ini";
  }
  $.ajax(data);
}
function callback_wait(action){
  bar_clear();
  $("#bar_center").html(translate_messages('loading'));
  if(action == 'auth'){
    setTimeout("timeout_bar_error()", 5000);
  }
}
function bar_loginform(){
  if(window.user["auth"] == true && typeof window.user.login != 'undefined'){
    bar_hellouser(window.user);
    return;
  }
  if(!window.sent) {
    window.sent = {"login":"", "pass":"", "remember":false};
  }
  html = "";
  error = false;
  if(window.user.error){
    error = translate_messages(window.user.error);
  }
  html += "<form onsubmit='auth_passportpart(\"login\");return false;'>";
  html += "<input name='AUTH_FORM' value='Y' type='hidden'>";
  html += "<input name='TYPE' value='AUTH' type='hidden'>";
  //html += "<input name='USER_REMEMBER' value='10' type='hidden'>";
  html += "<input name='backurl' value='"+window.location.href+"' type='hidden'>";
  html += "<img src='"+imgdir+"/login.gif'><span class='auth_input'><input name='USER_LOGIN' type='text' value='"+window.sent.login+"' class='auth_input'></span>";
  html += "<img src='"+imgdir+"/password.gif'><span class='auth_input_right'><input name='USER_PASSWORD' type='password' value='"+window.sent.pass+"' class='auth_input_right'></span>";
  html += "<a class='auth_enter' href='' onclick='auth_passportpart(\"login\"); return false;'></a>";
  if(window.sent.remember){
    checked = "1";
    img = "Line_Button_SavePass_Pressed.jpg";
  }
  else{
    checked = "0";
    img = "Line_Button_SavePass_Standard.jpg";
  }
  html += "<input type='hidden' name='USER_REMEMBER' id='auth_remember' value='"+checked+"'>";
  html += "<div class='auth_2lines'><img src='"+imgdir+"/"+img+"' id='auth_remember_img' onclick='auth_remember_click();'><br>";
  html += "<a href='http://my.gamexp.ru/forgotpwd.php' title='"+translate_messages('form_pass_recovery')+"'>";
  html += "<img src='"+imgdir+"/Line_Button_FogotPass_Standard.jpg'></a></div>";
  if(CONST_PID == 46){
    registration_url = 'http://my.gamexp.ru/help/projects.php';
  }
  else if(CONST_PID == 25){
    registration_url = '/community/reg.php';
  }
  else{
    registration_url = '/reg.php';
  }
  html += "<a href='"+registration_url+"' title='"+translate_messages('form_register')+"' class='auth_reg'></a>";
  html += "<input type='submit' style='display:none;'>";
  html += "";
  html += "</form>";
  bar_clear();
  $("#bar_center").html(html);
  if(error){
    //alert(error);
    bar_display_error(error);
  }
}
function bar_hellouser(user){
  html = "";
  html += "<span class='auth_text'>"+translate_messages('hello')+", " + user['login'] + "!&nbsp;</span>";
  if(CONST_PID == 46){
    html += "<a href='/form/index.html?Action=Logout' class='auth_exit'></a>";
  }
  else{
    html += "<a href='' onclick='auth_passportpart(\"logout\"); return false;' class='auth_exit'></a>";
  }
  bar_clear();
  $("#bar_center").html(html);
  html = "";
  if(window.user.group > 0){
    //title = {11:"Member", 12:"Silver Member", 13:"Gold Member", 14:"Platinum Member", 15:"Diamond Member"};
    html += "<a href='http://shop.nikitaonline.ru/personal/gamexpclub.php' target='_blank'>";
    html += "<img class='gamexpclub' src='"+ imgdir+"/card"+ window.user.group + ".jpg' title='GameXP Club Member'>";
    html += "</a>";
  }
  if(typeof window.user.balance == 'undefined' || window.user.balance != 'N/A'){
    user_balance();//only after we got him authorized: send request to get his balance
    balance = 'N/A';
  }
  else{
    balance = window.user.balance;
  }
  html += "<span class='auth_text' title='"+translate_messages("user_balance")+"'><a href='http://shop.nikitaonline.ru/gamexp.php' id='bar_balance'>"+balance+"</a></span>";
  $("#bar_left_inside").html(html);
}
function bar_balance(balance){
  $("#bar_balance").html(balance);
}
function user_balance(){
  user_balance_get();
}
function user_balance_get(){
  if(typeof window.user.balance != 'undefined'){
    return;
  }
  if(CONST_PID == 46){
    window.user.balance = 'N/A ';//' ' for i cheat
    return;
  }
  data = {
    type: "GET",
    url: "/auth/balance.php",
    data: {},
    dataType: "script",
    timeout: 1500,
    cache: false,
    complete: function(){
      if(typeof window.user.balance != 'undefined'){
        bar_balance(window.user.balance);
      }
      else{
        bar_balance('N/A');
      }
    }
  };
  $.ajax(data);
  setTimeout("user_balance_get();", 60000);
}
function timeout_bar_error(){
  if(!window.ajaxcomplete){
    bar_error();
  }
}
function bar_error(){
  bar_clear();
  html =  "<span class='auth_text'>";
  html += translate_messages("loading_error");
  html += "</div>";
  $("#bar_center").html(html);
  setTimeout("auth_passportpart('auth');", 60000);
}
function bar_clear(){
  htmlc = "";
  htmlc += "<div class='auth_center'>";
  htmlc += "<a name='jqauth'></a>";
  htmlc += "<div id='bar_left'><a href='http://www.gamexp.ru/' target='_blank'><img class='gamexp' src='"+imgdir+"/Line_Logo_GameXP.jpg'></a>";
  htmlc += "<div id='bar_left_inside'></div>";
  htmlc += "</div>";
  htmlc += "<img src='"+imgdir+"/Line_BaseLine_Separator.gif' id='line_l'>";
  htmlc += "<div id='bar_center'>"+translate_messages('loading')+"...</div>";
  htmlc += "<div id='bar_right'>";
  htmlc += "<a href='http://www.gamexp.ru/settings.php' target='_blank' class='security' title='"+translate_messages('security')+"'><img src='http://www.gamexp.ru/img/0.gif'></a>&nbsp;";
  htmlc += bar_select_project();
  htmlc += "</div>";
  htmlc += "<img src='"+imgdir+"/Line_BaseLine_Separator.gif' id='line_r'>";
  htmlc += "</div>";
  $("#bar").html(htmlc);
  $("#autherror").css("display","none");
  if(!window.init_events){
    initEvents();
  }
}
function bar_select_project(){
  projects = {
	      "http://www.gamexp.ru":{"name":translate_messages('project_gxp'), "pid":38}, 
	      "http://www.4sonline.ru":{"name":translate_messages('project_4s'), "pid":41}, 
	      "http://www.rzonline.ru":{"name":translate_messages('project_rz'), "pid":34}, 
	      "http://www.sphereonline.ru":{"name":translate_messages('project_sp'), "pid":9},
	      "http://sphere.nikitaonline.ru":{"name":translate_messages('project_s1'), "pid":12},
	      "http://www.s2arena.ru":{"name":translate_messages('project_s2a'), "pid":33},
	      "http://www.webracing.ru":{"name":translate_messages('project_wr'), "pid":25},
	      "http://game.dom3.ru":{"name":translate_messages('project_d3'), "pid":3},
	      "http://www.dragononline.ru":{"name":translate_messages('project_dk'), "pid":42},
	      "http://forum.gamexp.ru":{"name":translate_messages('project_forum'), "pid":39},
	      "http://shop.nikitaonline.ru":{"name":translate_messages('project_shop'), "pid":2},
	      "http://support.nikitaonline.ru":{"name":translate_messages('project_support'), "pid":46}
	      };
  select = "";
  for(var i in projects){
    if(projects[i].pid == CONST_PID){
      selected = "selected";
    }
    else{
      selected = "";
    }
    select += "<option value='"+i+"' "+selected+">"+projects[i].name+"</option>";
  }
  select = "<select id='bar_projects'>" + select + "</select>";
  return select;
}
function bar_display_error(error){
  error = "<div class='autherror_back'></div><div class='autherror_text'><div>"+translate_messages('error')+": <span class='autherror_light'>"+error+"</span></div></div>";
  $("#autherror").html(error);
  $("#autherror").css("display", "block");
}
function auth_remember_click(){
  itis = $("#auth_remember").val();
  willbe = (itis == 1) ? 0:1;
  img = (willbe == 1) ? "Line_Button_SavePass_Pressed.jpg" : "Line_Button_SavePass_Standard.jpg";
  title = (willbe == 1) ? translate_messages('remember_auth'):translate_messages('dont_remember_auth');
  $("#auth_remember").val(willbe);
  $("#auth_remember_img").attr("src", imgdir + "/" +img);
  $("#auth_remember_img").attr("title", translate_messages('click_to') . title);
  return false;
}

function auth_automated(login, password){
  $("input[name='USER_LOGIN']").val(login);
  $("input[name='USER_PASSWORD']").val(password);
  $("input[name='USER_REMEMBER']").checked = true;
  auth_passportpart("login");
}


function jqauth_complete_events(auth_status, user){
  if(typeof on_auth_complete == 'function') {
    on_auth_complete();//local function defined in the page body
  }
  if(auth_status == false){
    $(".jqswitch_id.true").css("display","none");
    $(".jqswitch_id.false").css("display","inline");
    $(".jqswitch_auth.true").css("display","none");
    $(".jqswitch_auth.false").css("display","inline");
    $(".jqswitch_shop.true").css("display","none");
    $(".jqswitch_shop.false").css("display","");
	$("#bar").removeClass('true');
  }
  else{
    id = window.user.id;
    login = window.user.login;
    color = 'green';
    $(".jqswitch_id.false").css("display","none");
    $(".jqswitch_id.true").css("display","inline");
    $(".jqswitch_id.true").text(id);
    $(".jqswitch_login.false").css("display","none");
    $(".jqswitch_login.true").css("display","inline");
    $(".jqswitch_login.true").text(login);
    $(".jqswitch_auth.true").css("display","inline");
    $(".jqswitch_auth.false").css("display","none");
    $(".jqswitch_shop.true").css("display","");
    $(".jqswitch_shop.false").css("display","none");
	$("#bar").addClass('true');
  }
}

function isdefined(object, variable){
  return (typeof(eval(object)[variable]) != 'undefined');
}

function initEvents(){
  $("#bar_projects").change( function() {
    $("#bar_projects option:selected").each(function () {
        url = $(this).val();
    });
    window.location = url;
  });
  if(!isdefined("window", "user")){
    window.user = {"auth":false, "id":translate_messages('your_id'), "login":translate_messages('your_login')};
  }
  jqauth_complete_events(window.user.auth, window.user);
};

function translate_messages(mess){
  if(isdefined("allmess", mess)){
    return window.allmess[mess];
  }
  else{
    return mess;
  }
}