function js_init(){
day_save=14;
cookie_autologin="autologin";
name_username="Anonymous";
webdbname="/nn/forum_profile.nsf";
obj_login=document.getElementById("login_login");
obj_password=document.getElementById("login_password");
obj_save=document.getElementById("login_save");
isAutoLogin=getCookie(cookie_autologin);
if(isAutoLogin=="" || isAutoLogin==null){
	isAutoLogin=obj_save?(obj_save.checked?"true":"false"):"false";
	setCookie(cookie_autologin,isAutoLogin,null);	
}
if(obj_password)obj_password.onkeypress=function(){return onKeyEnter(event);}
}
function js_autologin(){
var save=getCookie("save");
if(save=="true"  &&name_username=="Anonymous" && isAutoLogin=="true"){
	var login=getCookie("username");
	var hashpassword=getCookie("password");
	SendRequest(webdbname+"/autologin?open&requestcode=getpass&un="+encodeURIComponent(login)+"&password="+hashpassword,"",onRequestPassword);
}else{
var s=getCookie("username");
if(obj_login && s)
	obj_login.value=s;
}
}
function js_login(){
setCookie("save",obj_save.checked,adjust(new Date(),0,0,day_save,0,0,0));
if(obj_login.value=="" || obj_login.value=="Логин" || obj_password.value=="") return ;
if(obj_save.checked){	
	SendRequest(webdbname+"/autologin?open&requestcode=hash&value="+encodeURIComponent(obj_password.value),"",onRequestHash);
}else
	SendRequest("/names.nsf?login","&Username="+obj_login.value+"&Password="+obj_password.value,onRequestLogin);
}
function js_logout(){
SendRequest("/names.nsf?logout","",onRequestLogout,true);
}
function onRequestPassword(http_request){
var password=getItemValue(http_request,"realpassword");
if(password!="") 
	SendRequest("/names.nsf?login","&Username="+getCookie("username")+"&Password="+password,onRequestLogin);
}
function onRequestHash(http_request){
setCookie("username",obj_login.value,adjust(new Date(),0,0,day_save,0,0,0));
setCookie("password",getItemValue(http_request,"hash"),adjust(new Date(),0,0,day_save,0,0,0));
SendRequest("/names.nsf?login","&Username="+obj_login.value+"&Password="+obj_password.value,onRequestLogin);
}
function onRequestLogin(http_request){
setCookie(cookie_autologin,"true",null);
if(obj_save){
if(!obj_save.checked){	
	setCookie("username","",new Date());
	setCookie("password","",new Date());
}
document.location=document.location;
}
}
function onRequestLogout(http_request){
//alert(http_request.responseText);
setCookie(cookie_autologin,"false",null);
document.location=document.location;
}
function onKeyEnter(e)
{
var keynum
if(window.event){keynum = e.keyCode}
else if(e.which) {keynum = e.which}
if(keynum==13){
js_login();
return false;
}
return true;
}
 //----------------------------------------------------------------------------------------------------------------
function SendRequest(url,request,func_answer) {
        var http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {http_request.overrideMimeType('text/xml');}
            } else if (window.ActiveXObject) { // IE
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
           }
           if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
       }
       http_request.onreadystatechange = function() { GetServerAnswer(http_request,func_answer); };
       http_request.open("POST", url,true);
       http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
       http_request.send(request);
    }
function getRequestStateText(code) {   
switch (code) {   
case 0: return "Uninitialized."; break;   
case 1: return "Loading..."; break;   
case 2: return "Loaded."; break;   
case 3: return "Interactive..."; break;   
case 4: return "Complete."; break;   
}   
}   
    
function GetServerAnswer(http_request,func_answer) {
//rez=document.getElementById("id_rez");
//rez.innerHTML="["+(++Nlog)+"] ["+getCurTime()+"]: "+" Сервер: "+getRequestStateText(http_request.readyState)+"<br>"+rez.innerHTML;
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
	func_answer(http_request);
            } else {
                alert('There was a problem with the request.');
            }
        }
    }
function getItemValue(http_request,itm_name){
if(window.ActiveXObject){
	xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.loadXML(http_request.responseText);
}
else 
	xmlDoc=http_request.responseXML;
itm=xmlDoc.getElementsByTagName(itm_name)[0];
var s;
if(itm!=null){itm=itm.firstChild;if(itm!=null)s=itm.nodeValue;else s=null}
else s=null;
return s?s:"";
}
function getNameBrowser() {
  var ua = navigator.userAgent.toLowerCase();
  // Определим Internet Explorer
  if (ua.indexOf("msie") != -1 && ua.indexOf("opera") == -1 && ua.indexOf("webtv") == -1) {    return "msie"  }
  // Opera
  if (ua.indexOf("opera") != -1) {    return "opera"  }
  // Gecko = Mozilla + Firefox + Netscape
  if (ua.indexOf("gecko") != -1) {    return "gecko";  }
  // Safari, используется в MAC OS
  if (ua.indexOf("safari") != -1) {    return "safari";  }
  // Konqueror, используется в UNIX-системах
  if (ua.indexOf("konqueror") != -1) {    return "konqueror";  }
  return "unknown";
}

function setCookie(c_name,c_value,date)
{
var cookie = c_name +"=" + c_value + "; ";
if(date!=null)cookie+="expires="+date.toGMTString();
cookie +="; Path=/";
if(getNameBrowser()=="msie"){
	var DOMAIN=document.domain.toLowerCase();
	var isWWW=DOMAIN.indexOf("www.")>=0;
	var domain_array=DOMAIN.replace(/www./i,'').split(".");
	var domain_array_reverse=domain_array;
	domain_array_reverse=domain_array_reverse.reverse();
	var domain1=domain_array_reverse[1]+"."+domain_array_reverse[0];
	var domain2=(domain_array_reverse.length>=3)?domain_array_reverse[2]+"."+domain_array_reverse[1]+"."+domain_array_reverse[0]:"";
	var domain3=(domain_array_reverse.length>=4)?domain_array_reverse[3]+"."+domain_array_reverse[2]+"."+domain_array_reverse[1]+"."+domain_array_reverse[0]:"";
	var domain_level=domain_array_reverse.length-1;
	//alert("1="+domain1+"\n2="+domain2+"\n3="+domain3+"\nisWWW="+isWWW+"\nlevel="+domain_level);
	
	document.cookie=cookie+";domain="+domain1;
	if(domain_level==2)document.cookie=cookie+";domain="+domain2;
	if(isWWW)document.cookie=cookie+";domain="+"www."+domain1;
	if(isWWW)if(domain_level==2)document.cookie=cookie+";domain="+"www."+domain2;
}
else document.cookie = cookie;
}


function getCookie(name) {
		 var cookie = " " + document.cookie;
		 var search = " " + name + "=";
		 var setStr = null;
		 var offset = 0;
		 var end = 0;
		 if (cookie.length > 0) {
		 		 offset = cookie.indexOf(search);
		 		 if (offset != -1) {
		 		 		 offset += search.length;
		 		 		 end = cookie.indexOf(";", offset)
		 		 		 if (end == -1) {
		 		 		 		 end = cookie.length;
		 		 		 }
		 		 		 setStr = unescape(cookie.substring(offset, end));
		 		 }
		 }
		 return(setStr);
}
function adjust(DTT,yr,mn,dy,hr,mi,se) 
{
var m,t,DT=DTT;
DT.setYear(DT.getFullYear() + yr);
m = DT.getMonth() + mn;
if(m != 0) DT.setYear(DT.getFullYear() + Math.floor(m/12));
if(m < 0) {DT.setMonth(12 + (m%12));
} else if(m > 0) {DT.setMonth(m%12);
}t = DT.getTime();
t += (dy * 86400000);
t += (hr * 3600000);
t += (mi * 60000);
t += (se * 1000);
DT.setTime(t);
return DT;
}

