﻿/***********************General***************************/
function GeneralServices_GetCountryAreaCode(CountryCode, callback) {
    var params = new Array();

    params[0] = 'CountryCode';
    params[1] = CountryCode;

    var result = HTTPRequest("/Services/GeneralServices.asmx", "", "GetCountryAreaCode", params,
                                                                                                (callback != null ?
                                                                                                 function(result) {
                                                                                                     if (callback != null)
                                                                                                         callback(evalHttpResponseText(result));
                                                                                                 }
                                                                                                 : null)
                             );
    if (callback == null)
        return evalHttpResponseText(result);
}

function GeneralServices_SendLeadContact(PH, email, firstName, lastName, countryCode, LPID, referrer, callback) {
    var params = new Array();

    params.push('PH');
    params.push(PH);

    params.push('email');
    params.push(email);

    params.push('firstName');
    params.push(firstName);

    params.push('lastName');
    params.push(lastName);

    params.push('countryCode');
    params.push(countryCode);

    params.push('LPID');
    params.push(LPID);

    params.push('Referrer');
    params.push(referrer);

    var result = HTTPRequest("/Services/GeneralServices.asmx", "", "SendLeadContact", params,
                                                                                            (callback != null ?
                                                                                             function(result) {
                                                                                                 if (callback != null)
                                                                                                     callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
    if (callback == null)
        return evalHttpResponseText(result);
}

/***********************General***************************/
/***********************Users***************************/
function UserServices_AuthUser(username, password, callback) {
    var params = new Array();
    params[0] = 'userName';
    params[1] = username;

    params[2] = 'password';
    params[3] = password;

    var result = HTTPRequest("/Services/Users.asmx", "", "AuthUser", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined')
            callback(eval(result.text));
        else
            callback(eval(result.textContent));
    }
    );

}

/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

function UserServices_GetUserBalance(sessionID, callback) {
    var params = new Array();
    params[0] = 'sessionID';
    params[1] = sessionID;

    var result = HTTPRequest("/Services/Users.asmx", "", "GetUserBalance", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
    if (callback == null)
        return evalHttpResponseText(result);

}
/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

function UserServices_LogoutUser(sessionID, callback) {
    var params = new Array();
    params[0] = 'sessionID';
    params[1] = sessionID;

    var result = HTTPRequest("/Services/Users.asmx", "", "LogoutUser", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined')
            callback(eval(result.text));
        else
            callback(eval(result.textContent));
    }
    );
}
/***********************Users***************************/
/***********************Trades***************************/


function TradeServices_StopTradeOrder(orderID, offerID, callback) {
    var params = new Array();
    params[0] = 'orderID';
    params[1] = orderID;

    params[2] = 'offerID';
    params[3] = offerID;

    var result = HTTPRequest("/Services/Trade.asmx", "", "StopTradeOrder", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined')
            callback(eval(result.text));
        else
            callback(eval(result.textContent));
    }
    );
}
function TradeServices_ExtendTradeOrder(orderID, offerID, callback) {
    var params = new Array();
    params[0] = 'orderID';
    params[1] = orderID;

    params[2] = 'offerID';
    params[3] = offerID;

    var result = HTTPRequest("/Services/Trade.asmx", "", "ExtendTradeOrder", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined')
            callback(eval(result.text));
        else
            callback(eval(result.textContent));
    }
    );
}
function TradeServices_GetStopTradeOrderPremium(orderID) {
    var params = new Array();
    params[0] = 'orderID';
    params[1] = orderID;

    var result = HTTPRequest("/Services/Trade.asmx", "", "GetStopTradeOrderPremium", params);
    if (result == null)
        return (null);
    else if (typeof (result.textContent) == 'undefined')
        return (eval(result.text));
    else
        return (eval(result.textContent));

}
function TradeServices_GetExtendTradeOrderOptions(orderID, optionID) {
    var params = new Array();
    params[0] = 'orderID';
    params[1] = orderID;

    params[2] = 'optionID';
    params[3] = optionID;

    var result = HTTPRequest("/Services/Trade.asmx", "", "GetExtendTradeOrderOptions", params);
    if (result == null)
        return (null);
    else if (typeof (result.textContent) == 'undefined') {
        return (eval(result.text));
    }
    else {
        return (eval(result.textContent));
    }
}

function TradeServices_GetExtandTradeOrderPremium(orderID, targetOptionID) {
    var params = new Array();
    params[0] = 'orderID';
    params[1] = orderID;

    params[2] = 'targetOptionID';
    params[3] = targetOptionID;

    var result = HTTPRequest("/Services/Trade.asmx", "", "GetExtandTradeOrderPremium", params);
    if (result == null)
        return (null);
    else if (typeof (result.textContent) == 'undefined') {
        return (eval(result.text));
    }
    else {
        return (eval(result.textContent));
    }
}
function TradeServices_GetTradeStartTimes(gameType) {
    var params = new Array();
    params[0] = 'gameType';
    params[1] = gameType;

    var result = HTTPRequest("/Services/Trade.asmx", "", "GetTradeStartTimes", params);
    if (result == null)
        return (null);
    else if (typeof (result.textContent) == 'undefined') {
        return (eval(result.text));
    }
    else {
        return (eval(result.textContent));
    }
}

function TradeServices_GetFilteredTradeStartTimes(gameType, market) {
    var params = new Array();
    params[0] = 'gameType';
    params[1] = gameType;

    params[2] = 'market';
    params[3] = market;

    var result = HTTPRequest("/Services/Trade.asmx", "", "GetFilteredTradeStartTimes", params);
    if (result == null)
        return (null);
    else if (typeof (result.textContent) == 'undefined') {
        return (eval(result.text));
    }
    else {
        return (eval(result.textContent));
    }
}
function TradeServices_AddTripleTradeOrders(sessionID, ar_optionID, ar_isCall, ar_rate, volume, callback) {

    if ((Number(volume) == "NaN") || (Number(volume) <= 0)) {
        ShowMsgbox(getServerResource("TradeRoom_InvalidInvestAmount"));
        return;
    }

    var params = new Array();
    var i = 0;
    params[i++] = 'sessionID';
    params[i++] = sessionID;

    params[i++] = 'optionID';
    params[i++] = ar_optionID.join();

    params[i++] = 'isCall';
    params[i++] = ar_isCall.join();

    params[i++] = 'rate';
    params[i++] = ar_rate.join();

    params[i++] = 'volume';
    params[i++] = volume;

    var result = HTTPRequest("/Services/Trade.asmx", "", "AddTripleTradeOrders", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );

    if (callback == null)
        return evalHttpResponseText(result);
}
var TradeServices_AddBinaryTradeOrder_Running = false;
function TradeServices_AddBinaryTradeOrder(sessionID, optionID, isCall, rate, volume, callback, atCounter) {
    if (!TradeServices_AddBinaryTradeOrder_Running) {
        TradeServices_AddBinaryTradeOrder_Running = true;
        
        if ((Number(volume) == "NaN") || (Number(volume) <= 0)) {
		    TradeServices_AddBinaryTradeOrder_Running=false;
            ShowMsgbox(getServerResource("TradeRoom_InvalidInvestAmount"));
            return;
        }
        var params = new Array();
        var i = 0;
        params[i++] = 'sessionID';
        params[i++] = sessionID;

        params[i++] = 'optionID';
        params[i++] = optionID;

        params[i++] = 'isCall';
        params[i++] = isCall;

        params[i++] = 'rate';
        params[i++] = rate;

        params[i++] = 'volume';
        params[i++] = volume;

        if (atCounter == null)
            atCounter = 0;
        params[i++] = 'atCounter';
        params[i++] = atCounter;
        try {
            var result = HTTPRequest("/Services/Trade.asmx", "", "AddBinaryTradeOrder", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 TradeServices_AddBinaryTradeOrder_Running = false;
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
        }
        catch (ex) {
            TradeServices_AddBinaryTradeOrder_Running = false;
            throw ex;
        }
        if (callback == null) {
            TradeServices_AddBinaryTradeOrder_Running = false;
            return evalHttpResponseText(result);
        }
    }
    else {
        return;
    }
}

var TradeServices_AddTouchTradeOrder_Running = false;
function TradeServices_AddTouchTradeOrder(sessionID, optionID, isUP, rate, volume, callback) {
    if (!TradeServices_AddTouchTradeOrder_Running) {

        TradeServices_AddTouchTradeOrder_Running = true;

        if ((Number(volume) == "NaN") || (Number(volume) <= 0)) {
		     TradeServices_AddTouchTradeOrder_Running=false;
            ShowMsgbox(getServerResource("TradeRoom_InvalidInvestAmount"));
            return;
        }
        var params = new Array();
        var i = 0;
        params[i++] = 'sessionID';
        params[i++] = sessionID;

        params[i++] = 'optionID';
        params[i++] = optionID;

        params[i++] = 'isUP';
        params[i++] = isUP;

        params[i++] = 'isTouch';
        params[i++] = true;

        params[i++] = 'rate';
        params[i++] = rate;

        params[i++] = 'volume';
        params[i++] = volume;

        try {
            var result = HTTPRequest("/Services/Trade.asmx", "", "AddTouchTradeOrder", params,
    (callback != null ? function(result) {
        TradeServices_AddTouchTradeOrder_Running = false;
        callback(evalHttpResponseText(result));
    } : null)
                            );

        }
        catch (ex) {
            TradeServices_AddTouchTradeOrder_Running = false;
            throw ex;
        }
        if (callback == null) {
            TradeServices_AddTouchTradeOrder_Running = false;
            return evalHttpResponseText(result);
        }
    }
    else {
        return;
    }
}

var TradeServices_AddNoTouchTradeOrder_Running = false;
function TradeServices_AddNoTouchTradeOrder(sessionID, optionID, isUP, isTouch, rate, volume, callback) {
    if (!TradeServices_AddNoTouchTradeOrder_Running) {

        TradeServices_AddNoTouchTradeOrder_Running = true;

        if ((Number(volume) == "NaN") || (Number(volume) <= 0)) {
            TradeServices_AddNoTouchTradeOrder_Running = false;
            ShowMsgbox(getServerResource("TradeRoom_InvalidInvestAmount"));
            return;
        }
        var params = new Array();
        var i = 0;
        params[i++] = 'sessionID';
        params[i++] = sessionID;

        params[i++] = 'optionID';
        params[i++] = optionID;

        params[i++] = 'isUP';
        params[i++] = isUP;

        params[i++] = 'isTouch';
        params[i++] = isTouch;

        params[i++] = 'rate';
        params[i++] = rate;

        params[i++] = 'volume';
        params[i++] = volume;
        
        try {
            var result = HTTPRequest("/Services/Trade.asmx", "", "AddTouchTradeOrder", params,
    (callback != null ? function (result) {
        TradeServices_AddNoTouchTradeOrder_Running = false;
        callback(evalHttpResponseText(result));
    } : null)
                            );

        }
        catch (ex) {
            TradeServices_AddNoTouchTradeOrder_Running = false;
            throw ex;
        }
        if (callback == null) {
            TradeServices_AddNoTouchTradeOrder_Running = false;
            return evalHttpResponseText(result);
        }
    }
    else {
        return;
    }
}

var TradeServices_AddRangeTradeOrder_Running = false;
function TradeServices_AddRangeTradeOrder(sessionID, optionID, isIn, strikeHigh, strikeLow, volume, callback) {
    if (!TradeServices_AddRangeTradeOrder_Running) {

        TradeServices_AddRangeTradeOrder_Running = true;

        var params = new Array();
        var i = 0;
        params[i++] = 'sessionID';
        params[i++] = sessionID;

        params[i++] = 'optionID';
        params[i++] = optionID;

        params[i++] = 'isIn';
        params[i++] = isIn;

        params[i++] = 'strikeHigh';
        params[i++] = strikeHigh;

        params[i++] = 'strikeLow';
        params[i++] = strikeLow;

        params[i++] = 'volume';
        params[i++] = volume;
        try {
            var result = HTTPRequest("/Services/Trade.asmx", "", "AddRangeTradeOrder", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 TradeServices_AddRangeTradeOrder_Running = false;
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
        }
        catch (ex) {
            TradeServices_AddRangeTradeOrder_Running = false;
            throw ex;
        }

        if (callback == null) {
            TradeServices_AddRangeTradeOrder_Running = false;
            return evalHttpResponseText(result);
        }

    }
    else {
        return;
    }
}


function TradeServices_CheckOptionsExpiredRate(sessionID, optionIDs, callback) {
    var params = new Array();
    var i = 0;
    params[i++] = 'sessionID';
    params[i++] = sessionID;

    params[i++] = 'optionIDs';
    params[i++] = optionIDs;

    var result = HTTPRequest("/Services/Trade.asmx", "", "CheckOptionsExpiredRate", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined') {
            callback(eval(result.text));
        }
        else {
            callback(eval(result.textContent));
        }
    }
    );
}
/***********************Trades***************************/
/***********************Quotes***************************/
//function QuoteServices_GetOptionPrice(optionID) {
//    var params = new Array();
//    params[0] = 'strRequest';
//    params[1] = optionID;

//    var result = HTTPRequest("/Services/Quotes.asmx", "", "GetOptionPrices", params);
//    if (result == null)
//        return (null);
//    else if (typeof (result.textContent) == 'undefined') {
//        return (eval(result.text));
//    }
//    else {
//        return (eval(result.textContent));
//    }

//}

/*\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*/

function QuoteServices_GetQuotesDic(reqStr, callback) {
    var params = new Array();
    params[0] = 'strRequest';
    params[1] = reqStr;

    var result = HTTPRequest("/Services/Quotes.asmx", "", "GetQuotesDic", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined') {
            callback(eval(result.text));
        }
        else {
            callback(eval(result.textContent));
        }
    }
    );

}

function QuoteServices_GetJoinedPrices(optionsReqStr, assetsReqStr, callback) {
    var params = new Array();
    var i = 0;
    params[i++] = 'sessionID';
    params[i++] = m_session;

    params[i++] = 'optionsStrRequest';
    params[i++] = optionsReqStr;

    params[i++] = 'assetsStrRequest';
    params[i++] = assetsReqStr;



    var result = HTTPRequest("/Services/Quotes.asmx", "", "GetJoinedPrices", params,
    function(result) {
        if (result == null)
            callback(null);
        else if (typeof (result.textContent) == 'undefined') {
            callback(eval(result.text));
        }
        else {
            callback(eval(result.textContent));
        }
    }
    );
}
/***********************Quotes***************************/


function TradeServices_GetFreshOptions(game, callback) {
    var params = new Array();
    var i = 0;
    params[i++] = 'game';
    params[i++] = game;


    var result = HTTPRequest("/Services/Trade.asmx", "", "GetFreshOptions", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
    if (callback == null)
        return evalHttpResponseText(result);
}



function TradeServices_GetExtendAndStopTradeOrderPremium(orderID, targetOptionID) {
    var params = new Array();
    var i = 0;
    params[i++] = 'orderID';
    params[i++] = orderID;

    params[i++] = 'targetOptionID';
    params[i++] = targetOptionID;


    var result = HTTPRequest("/Services/Trade.asmx", "", "GetExtendAndStopTradeOrderPremium", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
    if (callback == null)
        return evalHttpResponseText(result);
}


function TradeServices_GetOpenTrades(callback) {
    var params = new Array();
//    var i = 0;
//    params[i++] = 'orderID';
//    params[i++] = orderID;

//    params[i++] = 'targetOptionID';
//    params[i++] = targetOptionID;


    var result = HTTPRequest("/Services/Trade.asmx", "", "GetOpenTrades", params, (callback != null ?
                                                                                             function(result) {
                                                                                                 callback(evalHttpResponseText(result));
                                                                                             } : null)
                            );
    if (callback == null)
        return evalHttpResponseText(result);
}
