﻿// JScript File
function injectHTMLWithLoadingMessage(messagedata)
{
    // Sanity Checks
    if (!messagedata || !messagedata.control)
    {
        alert('Inject Sanity Check Failed');
        return;
    }
    
    var newid = ConvertToJSID(messagedata.control);

    // remove if another inject is on stage.
    var divContainer = $get(newid);
    if (divContainer) divContainer.parentNode.removeChild(divContainer);

    // Generic message
    if (!messagedata.loadingMessage)
        messagedata.loadingMessage = "Loading... Please wait"; 
        
    // Create Container
    divContainer = document.createElement("div");
    divContainer.id = newid;
    divContainer.style.position = 'absolute';
    
    // Set Position if available
    if (messagedata.left) divContainer.style.left = messagedata.left + 'px';
    if (messagedata.top) divContainer.style.top = (findScrollTop() + messagedata.top) + 'px';

    // No position set
    // So make one up
    if (!messagedata.left && !messagedata.right && !messagedata.center)
    {
        divContainer.style.top = '100px';
        divContainer.style.left = '100px'
    }
    
    // Create Loading Message
    var divLoading = document.createElement("div");
    divLoading.className = "injectLoadingMessage";
    divLoading.innerHTML = messagedata.loadingMessage;
    divContainer.appendChild(divLoading);
    
    document.getElementsByTagName("body")[0].appendChild(divContainer);
    
    // center current
    if (messagedata.center)
        centerObject(divContainer);
        
    // So the control knows the ID of the container.
    // Need this so the control can remove itself
    messagedata.container = divContainer.id;
    
    webcalls.Render(messagedata, onInjectWithMessageSuccess, onInjectWithMessageSuccess, onInjectWithMessageSuccess);
    return divContainer;
    
}

function injectHTML(html, left, top)
{
    var div = document.createElement("div");
    div.innerHTML = html;
    div.style.position = 'absolute';
    div.style.top = top + 'px';
    div.style.left = left + 'px';
    document.getElementsByTagName("body")[0].appendChild(div);
}


function onInjectWithMessageSuccess(result, usercontext, methodname)
{
    try
    {
        if (result && result.data && result.data.onComplete)
            eval(result.data.onComplete+"(" + JSON.stringify(result.data) + ")");
                    
        var hc = $get(result.container);
        
        if (!result.success)
        {
            if (result && result.data && result.data.onFailure)
                eval(result.data.onFailure+"(" + JSON.stringify(result.data) + ")");
                    
            hc.parentNode.removeChild(hc)
            return;
        }
        else    
            if (hc)
            {
                hc.innerHTML = result.content;
                if (result.javascript.length > 0)
                    injectJavascript(result.javascript);
                
                if (result.data.center)
                    centerObject(hc);
                    
               if (result && result.data && result.data.onSuccess)
                    eval(result.data.onSuccess+"(" + JSON.stringify(result.data) + ")");
            }
    }
    catch(e)
    {
        alert('oops');
    }
}

function CloseInjectedHTML(divContainer, divSelf)
{
    var pContainer = $get(divContainer);
    if (!pContainer)
    {
        // Cant find container so try manually
        var pFriend = $get(divSelf);
        if (pFriend)
            pContainer = pFriend.parentNode;
    }
    
    if (pContainer)
        pContainer.parentNode.removeChild(pContainer);
}

function injectJavascript(script_filename) 
{
    script_filename += "?t=" + Date.UTC() + getRandomNumber(10000);
    var html_doc = document.getElementsByTagName('head').item(0);
    var js = document.createElement('script');
    js.setAttribute('language', 'javascript');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('src', script_filename);
    html_doc.appendChild(js);
    return false;
}
        