function retrieveSuggestions(selectionInfo,handler){
    var char=selectionInfo["curr_pos"];
    var line=selectionInfo["line_start"];
    var offset=selectionInfo["indexOfCursor"];
    var source=selectionInfo["full_text"];
    engine_suggest(source,offset,line,char,handler);
};
function engine_suggest(source,offset,line,char,handler){
    var request_data={
        source:source,service:"suggestions",offset:offset,linePos:line,charPos:char};
    function errHandler(XMLHttpRequest,textStatus,errorThrown){
        handler(null);
    };
    function success(result){
        if(result==null){
            var data={
                suggestions:[],hint:null};
        }
        else{
            var data={
                suggestions:result.suggestions,hint:result.hint};
        }
        handler(result);
    };
    $.ajax({
        url:serviceUrl,data:request_data,dataType:"json",error:errHandler,success:success,type:"POST",timeout:1000*5,async:true}
    );
};
