﻿

var SLGrid_FunctionsUrl = { EditUrl: 1, RemoveUrl: 2, ChangeOrderUrl: 3, SelectNodesUrl: 4 };
var SLGrid_PopupBtns = { HdnValue: 1, BtnOpen: 2 };

var SL_Grids_Data = new Object();
var SL_Grids_Functions = new Object();
var SL_Grids_Popup = new Object();
var SL_Grids_NodeToSelectFor = new Object();

function IsObjEmpty(str) {
    return str == null || str == 'undefined' || str == "";
}
function pageLoad(sender, args) {
    //alert(SL_Columns);

}
//sender - The Silverlight plug-in that invoked the event.
//args - null
//source - Root element of XAML content that was loaded
function SLGrid_Load(sender, args, source) {
    var ControlId = sender.getHost().id.replace("SL_grid_", "");
    var cols = SL_Grids_Data["Columns_" + ControlId];
    var data = SL_Grids_Data["Data_" + ControlId];
    var type = SL_Grids_Data["Type_" + ControlId];
    var objType = SL_Grids_Data["DataObjectType_" + ControlId];
    var nodeToSelectFor = SL_Grids_NodeToSelectFor[ControlId];
    if (!IsObjEmpty(cols)) {
        InitSLGrid(ControlId, cols, data, type, objType); 
    }
    if (!IsObjEmpty(nodeToSelectFor)){
        var control = document.getElementById('SL_grid_' + ControlId);
        control.Content.Page.PassValue(nodeToSelectFor);
    }
}
function InitSLGrid(ControlId, Columns, Data, gridType, dataObjType) {
    var control = document.getElementById('SL_grid_' + ControlId);
    control.Content.Page.GetColumnsFromJScript(Columns, ControlId, gridType);
    SLGrid_PassData(Data, ControlId, dataObjType);
}

function SLGrid_PassData(Data, ControlId, dataObjType) {
    var control = document.getElementById('SL_grid_' + ControlId);
    control.Content.Page.GetDataFromJScript(Data, dataObjType);
}
function SLGrid_PassDeleteAnswer(NodeId, ControlId) {
    var control = document.getElementById('SL_grid_' + ControlId);
    control.Content.Page.ApproveDelete(NodeId);
}
function SLGrid_PassChangeOrderAnswer(NodeID, o_Dir, ControlId) {
    var control = document.getElementById('SL_grid_' + ControlId);
    control.Content.Page.ApproveChangeOrder(NodeID, o_Dir);
}

function SL_ShowPopup(initObj, ControlId) {
    var myJSONText = JSON.stringify(initObj);
    $("#" + SL_Grids_Popup[ControlId][SLGrid_PopupBtns.HdnValue]).val(myJSONText);
    $("#" + SL_Grids_Popup[ControlId][SLGrid_PopupBtns.BtnOpen]).click();
}
function getJsonFromXML(xml) {
    if (ie == 1)
        return JSON.parse(xml.lastChild.text);
    else
        return JSON.parse(xml.lastChild.textContent);
}
function SLGrid_EditNode(ControlId, NodeId) {
    var obj = new Object();
    obj["ControlId"] = ControlId;
    obj["ItemID"] = NodeId;
    $.ajax(
    {
        type: "POST",
        url: SL_Grids_Functions[ControlId][SLGrid_FunctionsUrl.EditUrl],
        data: obj,
        async: false,
        cache: false,
        success: function(data, textStatus) {
            var answer = getJsonFromXML(data);
            if (!IsObjEmpty(answer["popupObj"])) {
                SL_ShowPopup(answer["popupObj"], answer["ControlID"]);
            }
        },
        // textStatus : "timeout", "error", "notmodified" and "parsererror"
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            //alert("edit failed");
        }
    });
}

function SLGrid_DeleteNode(ControlId, NodeId) {
    var obj = new Object();
    obj["ControlId"] = ControlId;
    obj["ItemID"] = NodeId;
    $.ajax(
    {
        type: "POST",
        url: SL_Grids_Functions[ControlId][SLGrid_FunctionsUrl.RemoveUrl],
        data: obj,
        async: false,
        cache: false,
        success: function(data, textStatus) {
            //alert("delete succeeded");
            var answer = getJsonFromXML(data);
            if (!IsObjEmpty(answer["popupObj"]))
                SL_ShowPopup(answer["popupObj"], answer["ControlID"]);
            else if(!IsObjEmpty(answer["Data"]))
                SLGrid_PassData(answer["Data"], answer["ControlID"], answer["DataObjectType"]);
            else if (answer["Success"])
                SLGrid_PassDeleteAnswer(answer["ItemID"], answer["ControlID"]);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            //alert("delete failed");
            //SLGrid_PassDeleteAnswer(false);
        }
    });
}




function SLGrid_ChangeShowOrder(ControlID, NodeId, o_dir) {
    var obj = new Object();
    obj["ControlId"] = ControlID;
    obj["ItemID"] = NodeId;
    obj["ShiftDir"] = o_dir;
    $.ajax(
    {
        type: "POST",
        url: SL_Grids_Functions[ControlID][SLGrid_FunctionsUrl.ChangeOrderUrl],
        data: obj,
        async: false,
        cache: false,
        success: function(data, textStatus) {
            var answer = getJsonFromXML(data);
            if (!IsObjEmpty(answer["popupObj"]))
                SL_ShowPopup(answer["popupObj"], answer["ControlID"]);
            else if(!IsObjEmpty(answer["Data"]))
                SLGrid_PassData(answer["Data"], answer["ControlID"], answer["DataObjectType"]);
            else if (answer["Success"])
                SLGrid_PassChangeOrderAnswer(answer["ItemID"], o_dir, answer["ControlID"]);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
         //   alert("ch ord failed");
            SLGrid_PassChangeOrderAnswer(false);
        }
    });
}

function SLGrid_SelectNodes(ControlID, NodeIds, relatedNodeId) {
    var obj = new Object();
    obj["ControlId"] = ControlID;
    obj["ItemID"] = relatedNodeId;
    obj["SelectedNodeIds"] = NodeIds;
    obj["SessionID"] = SessionId
    $.ajax(
    {
        type: "POST",
        url: SL_Grids_Functions[ControlID][SLGrid_FunctionsUrl.SelectNodesUrl],
        data: obj,
        async: false,
        cache: false,
        success: function(data, textStatus) {
            var answer = getJsonFromXML(data);
            if (!IsObjEmpty(answer["popupObj"]))
                SL_ShowPopup(answer["popupObj"], answer["ControlID"]);
            
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
           // alert("selection failed");
        }
    });

}