function create(widgetId, requestParameters, catalog)
{
    var theParams = {"widgetId":widgetId, "catalog":catalog,
        "objectNotation":JSON.stringify(requestParameters)};
    var result = JSON.parse(
        $.ajax({
            url: "create",
            global: false,
            type: "POST",
            dataType: "json",
            async:false,
            data:theParams
        }
    ).responseText);
    return result;
}

function read(widgetId, pk, catalog)
{
    var theParams = {"widgetId":widgetId, "pk":pk, "catalog":catalog};
    var result = JSON.parse(
        $.ajax({
            url: "read",
            global: false,
            type: "GET",
            dataType: "json",
            async:false,
            data:theParams
        }
    ).responseText);
    return result;
}

function readList(widgetId, readBy, requestParameters)
{
    var theParams = {"widgetId":widgetId, "readBy":readBy,
        "additionalParams":JSON.stringify(requestParameters)};
    var result = JSON.parse(
        $.ajax({
            url: "readlist",
            global: false,
            type: "GET",
            dataType: "json",
            async:false,
            data:theParams
        }
    ).responseText);
    return result;
}

function update(widgetId, requestParameters, catalog)
{
    var theParams = {"widgetId":widgetId,
        "objectNotation":JSON.stringify(requestParameters), "catalog":catalog};
    var result = JSON.parse(
        $.ajax({
            url: "update",
            global: false,
            type: "POST",
            dataType: "json",
            async:false,
            data:theParams
        }
    ).responseText);
    return result;
}

function deleteRecord(widgetId, pk, catalog)
{
    var theParams = {"widgetId":widgetId, "pk":pk, "catalog":catalog};
    var result = JSON.parse(
        $.ajax({
            url: "delete",
            global: false,
            type: "GET",
            dataType: "json",
            async:false,
            data:theParams
        }
    ).responseText);
    return result;
}

function callServer(serviceName, requestParameters, method)
{
    var result = JSON.parse(
        $.ajax({
            url: serviceName,
            global: false,
            type: method,
            dataType: "json",
            async:false,
            data:requestParameters
        }
    ).responseText);
    return result;
}

function callServer(serviceName, requestParameters, method, returnType)
{
    var result = JSON.parse(
        $.ajax({
            url: serviceName,
            global: false,
            type: method,
            dataType: returnType,
            async:false,
            data:requestParameters
        }
    ).responseText);
    return result;
}

function replaceAll(txt, replace, with_this)
{
    return txt.replace(new RegExp(replace, 'g'), with_this);
}

function scrubWordChars(str)
{
    var myReplacements = new Array();
    var myCode, intReplacement;
    myReplacements[8216] = 39;
    myReplacements[8217] = 39;
    myReplacements[8220] = 34;
    myReplacements[8221] = 34;
    myReplacements[8212] = 45;
    for(c=0; c<str.length; c++) {
        var myCode = str.charCodeAt(c);
        if(myReplacements[myCode] != undefined) {
            intReplacement = myReplacements[myCode];
            str = str.substr(0,c) + String.fromCharCode(intReplacement)
                + str.substr(c+1);
        }
    }
    return str;
}

function getNewId()
{
    var newId = JSON.parse($.ajax({
              url: "newid",
              global: false,
              type: "GET",
              dataType: "json",
              async:false
           }
        ).responseText).newId;
    return newId;
}

function getServerTime()
{
    var currentServerTime = JSON.parse($.ajax({
              url: "currentdate",
              global: false,
              type: "GET",
              dataType: "json",
              async:false
           }
        ).responseText).currentServerTime;
    return currentServerTime;
}

//Object.prototype.merge =  function (ob)
//{
//    var o = this;
//    var i = 0;
//    for (var z in ob) {
//        if (ob.hasOwnProperty(z)) {
//            o[z] = ob[z];
//        }
//    }
//    return o;
//};

function getParameter(name)
{
    var name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if(results == null)
    {
        return "";
    }
    else
    {
        return decodeURIComponent(results[1].replace(/\+/g, " "));
    }
}

