﻿
var control;

var lastCriteriasChildRelationsSend = 0;
var lastCriteriasChildRelationsReceived = 0;

var lastRelationsByNameSend = 0;
var lastRelationsByNameReceived = 0;

var lastCriteriasByNameSend = 0;
var lastCriteriasByNameReceived = 0;

var lastSearchSend = 0;
var lastSearchReceived = 0;

function InitXaml(ctrl) {
    control = ctrl;
}

function SendRequest_GetCriteriasChildRelations(id) {
    var current = lastCriteriasChildRelationsSend++;
    WS_Search.GetCriteriasChildRelations(
    id,
    function(arg) {
        if (current < lastCriteriasChildRelationsReceived)
            return;
        lastCriteriasChildRelationsReceived = current;        
        control.content.MyPage.GetCriteriasChildRelationsCompleted(arg);
    },
    function(arg) { OnError('GetCriteriasChildRelations : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); },
    function(arg) { OnTimeOut('GetCriteriasChildRelations : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); });
}

function SendRequest_GetRelationsByName(what, type, mustExist) {
    var current = lastRelationsByNameSend++;
    WS_Search.GetRelationsXMLByName(
    what, type, mustExist,lastRelationsByNameSend,
    function(arg) {
        if (current < lastRelationsByNameReceived)
            return;
        lastRelationsByNameReceived = current;
        control.content.MyPage.GetRelationsByNameCompleted(arg);
    },
    function(arg) { OnError('GetRelationsByName : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); },
    function(arg) { OnTimeOut('GetRelationsByName : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); });
}


function SendRequest_GetCriteriasByName(what, type) {
    var current = lastCriteriasByNameSend++;
    WS_Search.GetCriteriasByName(
    what, type,
    function(arg) {
        if (current < lastCriteriasByNameReceived)
            return;
        lastCriteriasByNameReceived = current;
        control.content.MyPage.GetCriteriasByNameCompleted(arg);
    },
    function(arg) { OnError('GetCriteriasByName : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); },
    function(arg) { OnTimeOut('GetCriteriasByName : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); });
}


function SendRequest_GetSuggestions(criteriasRelationId) {
    var current = lastSearchSend++;
    WS_Search.GetXMLSuggestions(
    criteriasRelationId,
    function(arg) {
        if (current < lastSearchReceived)
            return;

        lastSearchReceived = current;
        control.content.MyPage.GetSuggestionsCompleted(arg);
    },
    function(arg) { OnError('GetSuggestions : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); },
    function(arg) { OnTimeOut('GetSuggestions : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); });
}

function SendRequest_GetFromWikipedia(text) {
    WS_Search.GetFromWikipedia(
    text,
    function(arg) { control.content.MyPage.GetFromWikipediaCompleted(arg); },
    function(arg) { OnError('GetFromWikipedia : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); },
    function(arg) { OnTimeOut('GetFromWikipedia : ' + Sys.Serialization.JavaScriptSerializer.serialize(arg)); });
}


function OnTimeOut(arg) {
    WS_Search.LogError(
    "[Timeout]" + arg,
    null,
    null,
    null);
}

function OnError(arg) {
    WS_Search.LogError(
    "[Error]" + arg,
    null,
    null,
    null);
}

