﻿function setPass()
{
    var temp = document.getElementById('temppassword');
    if ( temp.value.length > 0 )
    {
        document.getElementById('passwd').value =  hex_md5(temp.value);
    }
}

function GetCookieVal(offset)
{   
    var endstr = document.cookie.indexOf (";", offset);if (endstr == -1)endstr = document.cookie.length;
    return decodeURIComponent(document.cookie.substring(offset, endstr)); 
}
function SetCookie(name, value)
{
    var expdate = new Date();
    var argv = SetCookie.arguments;
    var argc = SetCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
    if(expires!=null) expdate.setTime(expdate.getTime() + ( expires * 1000 ));
    document.cookie = name + "=" + escape (value) +((expires == null) ? "" : ("; expires="+ expdate.toGMTString()))
    +((path == null) ? "" : ("; path=" + path)) +((domain == null) ? "" : ("; domain=" + domain))
    +((secure == true) ? "; secure" : "");
}
function DelCookie(name)
{
    var exp = new Date();
    exp.setTime (exp.getTime() - 1);
    var cval = GetCookie (name);
    document.cookie = name + "=" + cval + "; expires="+ exp.toGMTString();
}
function GetCookie(name)
{
   var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen)
    {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
    return GetCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break;
    }
    return ""; 
}
function check()
{
    setPass();
    var uname=document.getElementById("tempuname").value;    
    document.getElementById("pErr").innerHTML="";
    if(uname=="" || uname.length>32)
    {
        document.getElementById("pErr").innerHTML = "<font size=2 color=red>用户名或密码错</font>";
		document.getElementById("tempuname").focus();
	    return false;
    }
    document.getElementById("trueUname").value = uname;
    
    var passwd=document.getElementById("temppassword").value;
    if(passwd=="" || passwd.length>32)
    {
        document.getElementById("pErr").innerHTML = "<font size=2 color=red>用户名或密码错</font>";
		document.getElementById("temppassword").focus();
	    return false;
    }
    return true;
}
function on_init_url()
{
    var url1 = window.top.location;
    var url2 = document.location;
    if(url1 != url2)
    {
        window.top.location = url2;
    }
}






function Key(e)
{
    var kCode = (typeof(event) != "undefined")?event.keyCode:e.keyCode;
    if ( kCode == 13 && doPost)
    {
        if ( check() )
        {
            document.getElementById("form1").submit();
        }
    }else if ( kCode == 13 )
    {
        MakeSure(selectedIndex);
    }
    
}


var uname = "";
var timeOut = 300;
var lastKeyUpDateTime = new Date();
function InputUserName(e,inputObj)
{
   var kCode = (typeof(event) != "undefined")?event.keyCode:e.keyCode;   
   
   if (  kCode != 13 )
   {
        document.getElementById("trueUname").value = inputObj.value;
   }else
   {
        return;
   }
   //kecode up = 38  down = 40 space = 32
   resize();   
   /*
   if ( kCode == 32 || inputObj.value.length == 0 )
   {
        DivHide();
        return;
   }*/
   
   if ( inputObj.value.length == 0 )
   {
        menHuList = new Array();
        filledMenHu = new Array();
        DivHide();
        return;
   }
   
   
   var lastChar = inputObj.value.substring(inputObj.value.length - 1);
   if ( lastChar != "　"　&& lastChar != " " )
   {
   }else
   {
        DivHide();
        return;
   }
   if ( kCode != 40 && kCode != 38)
   {
       uname = inputObj.value.split(".")[0];
       lastKeyUpDateTime = new Date();
       setTimeout("init()",timeOut);
   }else
   {
       UpAndDown(e);
   }
   
}

function init()
{
       if ( uname.length == 0 )
       {
            DivHide();
            return;
       }
       
       
        var dateDiff = new Date() - lastKeyUpDateTime;
        if ( dateDiff < timeOut )  
        {
            return;
        }
        
       GetMenHu(uname);
       FillDiv();
       uname = "";
       
       if ( filledMenHu.length > 0 && filledMenHu[0].Name.length != 0)
       {
            DivShow();
       }else
       {
            DivHide();
       }
}

function UpAndDown(e)
{
    var kCode = (typeof(event) != "undefined")?event.keyCode:e.keyCode;
    
    if ( kCode != 40 && kCode != 38)    
    {
        return;
    }
    
    if ( doPost )
    {//如果列表已经关闭了 就不处理了
        return;
    }
    
    
    if ( filledMenHu.length == 0 )
    {
        return;
    }
    
    if ( selectedIndex == -1 )
    {
        //重新填充后
        if ( kCode == 38 )
        {
            Select(filledMenHu[filledMenHu.length - 1].ShowIndex);
        }else if ( kCode == 40 )
        {
            Select(filledMenHu[0].ShowIndex);
        }
        return;
    }
    var index = 0;
    
    var filledMenHuIndex = 0;
    for( var i = 0 ; i < filledMenHu.length; i++ )
    {
        if ( filledMenHu[i].ShowIndex == selectedIndex)
        {
            filledMenHuIndex = i;
            break;
        }
    }
            
    if ( kCode == 38 )
    {
        if ( filledMenHuIndex -  1 < 0 )
        {
            index = filledMenHu[filledMenHu.length - 1].ShowIndex;
        }else
        {
            index = filledMenHu[filledMenHuIndex - 1].ShowIndex;
        }
    }else if ( kCode == 40 )
    {
        if ( filledMenHuIndex +  1 >= filledMenHu.length )
        {
            index = filledMenHu[0].ShowIndex;
        }else
        {
            index = filledMenHu[filledMenHuIndex + 1].ShowIndex;
        }
    }
    Select(index);
}

//GetMenHu
var menHuList = new Array();
function MenHu()
{
    this.Crealm = "";
    this.Name = "";
    this.ShowIndex = 0;
}

function GetMenHu(uname)
{
    //ajax
    //res
    
    if ( uname.length == 0 )
    {
        menHuList = new Array();
        return;
    }
    var queryUrl = "GetMenHu.aspx?username=" + encodeURIComponent(uname) + "&ran=" + new Date();
    var res = GetXMLHttpReq(queryUrl,"");
    
    menHuList = new Array();
    if ( res.length == 0 )
    {
        return;
    }
    var resArray = res.split("|$|")
    for(var i = 0 ; i < resArray.length; i++)
    {
        var tempArray = resArray[i].split("#$#");
        var menHu = new MenHu();
        if ( tempArray.length > 1 )
        {
            menHu.Crealm = tempArray[1];
        }
        menHu.Name = tempArray[0];        
        menHu.ShowIndex = i;
        menHuList.push(menHu);
    }
}

// fill div
var filledMenHu = new Array();
function FillDiv()
{
    filledMenHu = new Array();
    
    if ( menHuList.length == 0 )
    {
        DivHide();
        return;
    }
    
    
    var inputObj = document.getElementById("tempuname");
    var unamePer = inputObj.value;
    
    var menHuListDiv = document.getElementById("menhulist");
    
    var html = "";
    
    var mm = "";
    var un = "";
    var inputDot = false;
    if ( inputObj.value.indexOf(".") >= 0 )
    {
        mm = inputObj.value.split(".")[1];
        un =  inputObj.value.split(".")[0];
        inputDot = true;
    }else
    {
        un = inputObj.value;
    }
    
    if ( un.length == 0 )
    {
        DivHide();
        return;
    }
    
    if ( !inputDot )
    {
        for(var i = 0 ; i < menHuList.length ; i++)
        {
            filledMenHu.push(menHuList[i]);
            html += "<div id='list_" + i + "' onmouseover='Select(" + i + ")' onclick='MakeSure(" + i + ")'>&nbsp;" + unamePer + "." + menHuList[i].Name + "</div>";
        }
    }else
    {
        for(var i = 0 ; i < menHuList.length ; i++)
        {
            if ( menHuList[i].Name.indexOf(mm) >= 0 )
            {
                filledMenHu.push(menHuList[i]);
                html += "<div id='list_" + i + "' onmouseover='Select(" + i + ")' onclick='MakeSure(" + i + ")'>&nbsp;" + un + "." + menHuList[i].Name + "</div>";
            }
        }
    } 
    selectedIndex = -1;
    if ( filledMenHu.length == 0 || ( filledMenHu.length == 1 && mm == filledMenHu[0].Name) )
    {
        DivHide();
        return;
    }
    menHuListDiv.innerHTML = html;
}

//select div
var selectedIndex = -1;
function Select(index)
{
    var count = filledMenHu.length;
    
    for(var i = 0 ; i < count ; i++)
    {
        var div = document.getElementById("list_" + filledMenHu[i].ShowIndex);
        if ( filledMenHu[i].ShowIndex == index )
        {
            div.className = "onselect";
        }else
        {
            div.className = "";
        }
    }
    selectedIndex = index;
}

//MakeSure
function MakeSure(index)
{
    //选择  并赋值
    if ( index > -1 )
    {
        Select(index);
        var menHu = menHuList[index];
        var inputObj = document.getElementById("tempuname");
        var trueUname = document.getElementById("trueUname");
        trueUname.value = inputObj.value.split(".")[0] + "." + menHu.Crealm;
        inputObj.value = inputObj.value.split(".")[0] + "." + menHu.Name;
    }
    DivHide();
}

//DivHide
var doPost = true;
function DivHide()
{
    var helper = document.getElementById("helper");
    helper.style.display = "none";
    doPost = true;
}

function DivShow()
{
    if (filledMenHu.length == 0 )
    {
        return;
    }

    var helper = document.getElementById("helper");
    helper.style.display = "";
    doPost = false;
}


////////////////////////////////////////////////////////////////////
window.onresize = resize;
function resize()
{
   var inputObj = document.getElementById("tempuname");
   var helperObj = document.getElementById("helper");
   if ( typeof(inputObj) == "undefined" || typeof(helperObj) == "undefined" )
   {
        return;
   }
   helperObj.style.position = "absolute"; 
   var xy = getAbsolutePos(inputObj) 
   helperObj.style.top = (xy.y + inputObj.offsetHeight) + "px"; 
   helperObj.style.left = xy.x + "px";   
}

function getAbsolutePos(el){
        var sl = 0, st = 0;        
         if (el.scrollLeft && el.scrollTop){
                sl = el.scrollLeft;
                   st = el.scrollTop;
        }
        var r = { x: el.offsetLeft - sl, y: el.offsetTop - st };
        if(el.offsetParent)
        {
           var tmp = getAbsolutePos(el.offsetParent);
           r.x += tmp.x;
           r.y += tmp.y;
        }
        return r;
}

//////////////////////////////////////////////////
String.prototype.Trim = function() 
{ 
return this.replace(/(^\s*)|(\s*$)/g, ""); 
} 

String.prototype.LTrim = function() 
{ 
return this.replace(/(^\s*)/g, ""); 
} 

String.prototype.RTrim = function() 
{ 
return this.replace(/(\s*$)/g, ""); 
} 
