﻿
 var timeoutid;
 var whosendvalue;
 var whoget;
 var whosendref = null;
 var whogetref = null;
 var toppos;
 var leftpos;
 var callBackFrameUrl="SearchAutoComplete.asmx";
 var toppos = 0;
 var leftpos = 0;
 
 
function findPos(obj) {
    var curleft = curtop = 0;
    if (obj.offsetParent) {
        do {
            curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return [curleft,curtop];
}

 function setwhosendref(whsid) {
    if(whosendref==null) {
        //var offset=WebForm_GetElementPosition(whsid) //Получение координат текстового поля
        var a=findPos(whsid);
        toppos=(a[1]+18)+'px';
        leftpos=(a[0]-213)+'px';
    }
 }
 function setwhogetref(whgid) {
    //alert(whgid);
    if(whogetref==null) {
        whogetref = document.getElementById(whgid);
        //whogetref.style.top = toppos;
        //whogetref.style.left = leftpos;
    }
 }
 function callservertimed(whosendvaluecall, whogetcall) 
     {
        whosendvalue = whosendvaluecall;
        whoget = whogetcall;
        clearTimeout (timeoutid);
        timeoutid = setTimeout("CallServer2(whosendvalue,whoget); dis(whosendvalue,whoget);", 300);
     }
     
 function dis(whosendvaluecall, whogetcall) 
 {
    //alert(whogetcall);
    var labelelement = document.getElementById(whogetcall);
    labelelement.style.display='block'; //Отображение списка на экране
    //labelelement.style.top = toppos;
    //labelelement.style.left = leftpos;
 }
 
 function TextKeyDown(WhoSend,WhoGet,event) //Обработка нажатий кнопок
    {
        //setwhosendref(WhoSend);
        //setwhogetref(WhoGet);
        
        var e=event;
        if(e.keyCode==13)
        {
            //e.returnValue =false;
            //return false;
        }
        else if(e.keyCode==27)
        {
            whogetref.style.display='none'
            e.returnValue =false;
        }
    }
    function SendData(WhoSend,WhoGet,event) //Отправка данных на сервер и проверка нажатых клавиш в текстовом поле
    {
        //setwhosendref(WhoSend);
        //setwhogetref(WhoGet);
        
        if (WhoSend.value.length<1){return false;}//Ничего не делать, если введено меньше х символов
        var objGet=whogetref;
    
        var e=event;
        if (e.keyCode==40) //Нажата стрелка вниз
        {
            if (objGet.selectedIndex<objGet.options.length-1)
                objGet.selectedIndex++;
            else 
                objGet.selectedIndex=0;
            return false;
        }else if (e.keyCode==38) //Нажата стрелка вверх
        {
            if (objGet.selectedIndex>0)
                objGet.selectedIndex--;
            else 
                objGet.selectedIndex=objGet.options.length-1;
            return false;
        }else if (e.keyCode==13) //Нажат ввод
        {
            //ReturnValueToTextBoxs(objGet,WhoSend)
            return false;
        }else if (e.keyCode==27) //Нажат Escape
        {
            objGet.style.display='none';
            return false;
        }
        callservertimed(WhoSend.value,WhoGet);
    }
    
    
    function ReceiveServerData(args, context) //Поучение данных с сервера
    {
        if (args.length=0){return false;} //Ничего не делаем, если ничего не получено
        var objGet=whogetref;
        objGet.innerHTML ='';
        objGet.innerHTML = args;
    } 
           
    function ReturnValueToTextBoxs(SelectObj,TextObj)//Заполняем текстовое поле
    {
    }
    
    function fixffoxbutton(elemargcleintid) {
        var b = document.getElementById(elemargcleintid);
        if (b && typeof(b.click) == 'undefined') {
            b.click = function() { 
                var result = true;
                if (b.onclick) result = b.onclick();
                if (typeof(result) == 'undefined' || result) {
                    eval(b.getAttribute('href'));
                }
            }
        }
    }
    /////////////////////////////////////////////
    /////////////////////////////////////////////
    
 /*start method that calls a WCF service */

function CallServer(whosent, whoget) {
        alert(whosent);
        //whogetref=whoget;
        //whosendref=whosent;
        // Service url
        var url = "SearchAutoComplete.asmx";
        // Service params
        var params = "prefixText=" + escape(whosent);
        
        //target Object, object that will be available in the callback method, e.g. "myDivID".
        var targetObject = "txtsword";
        AJAX.init("GET", url, ReceiveServerData, params, targetObject);
}

/* End of Web Service call */


//start of service xml call
function CallServer2(whosent, whoget) {
    //Build url with params
    //var url = "SearchAutoComplete.asmx/GetCompletionList";
    var url = "SearchAutoComplete.asmx/GetCompletionList";
    var params = "prefixText=" + escape(whosent)+"&count=100";
    AJAX.init("POST", url, onEverythingCompleted, params, whoget, "XML");

}

function onEverythingCompleted(res, targetObject){//targetObject==Label1
    //alert(res.xml);
    //var xmlString = (new XMLSerializer()).serializeToString(res);
    //alert(res.documentElement.childNodes[0].text);
    //!!!!!!!!!!!!alert(res.documentElement.childNodes[0].data);
    //alert(xmlString);
    if(res.documentElement.childNodes[0]) {
        document.getElementById(targetObject).innerHTML = res.documentElement.childNodes[0].data;
    }
}

//end of xml call

 

  

/*--------start Ajaxlib.js-----------*/
/* Written by Shay Jacoby (s-online.co.il) */
AJAX = {
xmlHttp:'', 
targetObject:null,
outputFormat:'XML',
init : function(methodType, url, callback, params, targetObject, outputFormat){ 
AJAX.xmlHttp=AJAX.getXmlHttpObject();
if (AJAX.xmlHttp==null){
    alert ("Your browser does not support AJAX!");
    return;
} 
if (methodType=="GET" && params!=null){
    url = url + "?" + params;
}
if (outputFormat!=null)
    AJAX.outputFormat = outputFormat;
AJAX.targetObject = targetObject;
AJAX.xmlHttp.open(methodType,url,true);
if (methodType=="POST" && params!=null){
    if (outputFormat=="JSON"){
        AJAX.xmlHttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
        //Convert params to Json format
        params = AJAX.toJsonParams( params );
    }
    else {
        AJAX.xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        AJAX.xmlHttp.setRequestHeader("Content-length", params.length);
        AJAX.xmlHttp.setRequestHeader("Connection", "close");
    }  
}
//not tested:
//AJAX.xmlHttp.setRequestHeader("Pragma", "no-cache");
//AJAX.xmlHttp.setRequestHeader("Cache-Control", "no-cache");
AJAX.xmlHttp.onreadystatechange=function(){AJAX.stateChanged(callback)};
AJAX.xmlHttp.send(params);
},
stateChanged : function(callback){
    // Returns the status of the request:
    // 0 uninitialized, 1 loading, 2 loaded, 3 interactive, 4 complete 
    if (AJAX.xmlHttp.readyState==4){
        //purposes we are only interested in OK (200) response.
        if (AJAX.xmlHttp.status == 200){
            switch(AJAX.outputFormat){
                case "JSON":
                    if (callback) callback(AJAX.xmlHttp.responseText, AJAX.targetObject);
                    break;
                case "XML":
                    if (callback) callback(AJAX.xmlHttp.responseXML, AJAX.targetObject);
                    break;
            }
        } 
        else {
            // there was a problem with the request, for example the response may 
            // be a 404 (Not Found) or 500 (Internal Server Error) response codes.
            alert('ERROR: ' + AJAX.xmlHttp.statusText + ' (' + AJAX.xmlHttp.status + ')');
            return;
        }
    }
},
//method: Convert parameters to Json Format e.g. {"param1":"param1Value", "param2":"param2Value"}
toJsonParams : function(qStr){
    if (qStr==null || qStr.length==0)
        return "{''}";
    var output = "{";
    var params = qStr.split("&");
    for (i=0;i<params.length;i++) {
        var prmArr = params[i].split("=");
        output += "\""  + prmArr[0] +  "\"";
        output += ":";
        output += "\""  + prmArr[1] +  "\",";
    }
     if (output.indexOf(',' > 0))
        output = output.slice(0, -1);
    output += "}";
    return output;
},
getXmlHttpObject : function(){
    AJAX.xmlHttp=null;
    try {
        // Firefox, Opera 8.0+, Safari, IE7
        AJAX.xmlHttp=new XMLHttpRequest();
    }
    catch (e){
        // Internet Explorer
        try{
            AJAX.xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e){
            AJAX.xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return AJAX.xmlHttp;
    }
}
/*--------End Ajaxlib.js-----------*/
