﻿var redirecting = false;
var searchBoxClientId;
var autoCompleteExtenderId;
var dynamicSearchEnabled = true;;

function initializePageScript(searchBoxClientId, autoCompleteExtenderId)
{
    this.searchBoxClientId = searchBoxClientId;
    this.autoCompleteExtenderId = autoCompleteExtenderId;
}

function autoCompleteItemSelected(source, eventArgs)
{
    var entityName = eventArgs.get_text();
    FutureSelf.SearchService.GetEntityDetailsUrl(entityName, FoundEntityDetailsUrl);
    redirecting = true;
}

function FoundEntityDetailsUrl(result)
{
    window.location = result;
    redirecting = false;
}

function trapEnter(e)
{
    e = e || window.event;
    var code = e.keyCode || e.which;                    
    if(code == 13)
    {
        if (redirecting)
        {
            cancelEvent(e);
            return false;
        }
    }
    return true;
}

function cancelEvent(e)
{
    e = e ? e : window.event;
    if(e.stopPropagation)
        e.stopPropagation();
    if(e.preventDefault)
        e.preventDefault();
    e.cancelBubble = true;
    e.cancel = true;
    e.returnValue = false;
    return false;
}

function getListElement()
{
    var autoCompleteExtender = $find(autoCompleteExtenderId);
    var listElement = autoCompleteExtender._completionListElement;
    return listElement;
}

function autoCompleteListShown(object, args)
{    
    if (!dynamicSearchEnabled)
    {
        var list = getListElement();
        list.style.display = "none";
        return;
    }
    
    document.body.onresize = resetPosition;
    
    resetPosition();
}

function resetPosition()
{                    
    var textBox = $get(searchBoxClientId);            
    var textBoxScreenLocation =  $common.getLocation(textBox);
    var textBoxSize = $common.getSize(textBox);
    
    var commonParent = document.body;
    var commonParentScreenLocation = $common.getLocation(commonParent);
    
    var list = getListElement();
    list.parentNode.removeChild(list);
    commonParent.appendChild(list);

    var relativeLocation = new Sys.UI.Point(
        textBoxScreenLocation.x - commonParentScreenLocation.x, 
        textBoxScreenLocation.y - commonParentScreenLocation.y + textBoxSize.height);
    $common.setLocation(list, relativeLocation);
}

function autoCompleteListHiding(object, args)  
{
    document.body.onresize = null;
}

function disableDynamicSearch()
{
    dynamicSearchEnabled = false;
}

