﻿/* general */
var COLLAPSE_MODE_CLASS = "collapse";
var EXPAND_MODE_CLASS = "expand";
var SIDEBAR_CONTROL_ID = "sideBarControl";
var CONTROL_STATE_KEY = "statekey";
var CONTROL_STATE_EXPIRATION = "stateExpiration";


$(document).ready(function() {
    var SideBar = $("#DvRightContent");
    SideBar.find(".expandable").each(function() {
        var btn = $(this)
        if (btn.hasClass(COLLAPSE_MODE_CLASS)) {
            btn.toggle(function() { ShowHideContent(btn, false) }, function() { ShowHideContent(btn, true) });
        }
        else btn.toggle(function() { ShowHideContent(btn, true) }, function() { ShowHideContent(btn, false) });
    });
    getTradesPercentages();

});

function ShowHideContent(btn, shouldShow) {

    if (shouldShow) {
        btn.parent().next().next().show();
        btn.removeClass(EXPAND_MODE_CLASS)
        btn.addClass(COLLAPSE_MODE_CLASS);
        SetStateCookie(btn.attr(CONTROL_STATE_KEY), '1', btn.attr(CONTROL_STATE_EXPIRATION));
    }
    else {
        btn.parent().next().next().hide();
        btn.removeClass(COLLAPSE_MODE_CLASS)
        btn.addClass(EXPAND_MODE_CLASS);
        SetStateCookie(btn.attr(CONTROL_STATE_KEY), '0', btn.attr(CONTROL_STATE_EXPIRATION));
    }

}
function SetStateCookie(name, value, stateExpiration) {

    var expirationDays = !IsNullOrUndefined(stateExpiration) ? parseInt(stateExpiration, 10) : 7;
    var expirationDate = new Date.today().setTimezone('GMT').addDays(expirationDays);
    if (!IsNullOrUndefined(name) && name != '') {
        var cookieValue = $.cookie(name);
        $.cookie(name, value, { expires: expirationDate, path: '/', domain: null, secure: false });

    }
}

/* general */

/* my open trades */

var userView = null;
var openTradesIds = new Array();
var openTradesWrapper = null;

function GetOpenTrades() {

    GetOpenTrades(false);
}
function GetOpenTrades(isRefresh) {

    var openTradesWrapper = $("#openTradesWrapper");
    if (openTradesWrapper.length > 0) {
        $("#NoOpenTrades").hide();
        if (!isRefresh) {
            openTradesWrapper.hide();
            $("#openTradesLoader").show();
        }
        TradingService.GetUserOpenTrades(OpenTradesCallBack)
    }
}
var PreviousOpenTradesCount = -1;
function OpenTradesCallBack(result) {
    isUpdate = true;
    
    if (userView == null) {
        userView = $create(Sys.UI.DataView, {}, {}, {}, $get("openTradesTmplt"));
        setTimeout("RefreshMyTradesInterval()", 15000);
        isUpdate = false;
    }
    userView.set_data(result);

    openTradesWrapper = $("#OpenTrades").show();
    openTradesWrapper.find(".open_content").each(function() {
        var outcome = $(this).find(".outcome");
        var outcomeText = outcome.html();
        if (outcomeText.indexOf("Out") >= 0) {
            setOpenTradeLose(outcome);
        } else if (outcomeText.indexOf("In") >= 0) {
            setOpenTradeWin(outcome);
        }
        else{
            setOpenTradeTie(outcome);
        }
    });
    
    
    if (result.length > 0) {
        $("#openTradesWrapper").show();
    }
    else $("#NoOpenTrades").show();

    if (result.length != PreviousOpenTradesCount && PreviousOpenTradesCount >= 0) {
        RefreshBalance();
    }
    PreviousOpenTradesCount = result.length;
    RefreshBalanceThreshold();
    
    $("#openTradesLoader").hide();
}
function RefreshMyTradesInterval() {
    setTimeout("RefreshMyTradesInterval()", 15000);
    RefreshMyTrades();
}
function RefreshMyTrades() {
    GetOpenTrades(true);
}

function setOpenTradeWin(outcomeSpan){
    outcomeSpan.removeClass("open1").removeClass("open3").addClass("open5");
}
function setOpenTradeLose(outcomeSpan){
    outcomeSpan.removeClass("open1").removeClass("open5").addClass("open3");
}
function setOpenTradeTie(outcomeSpan){
    outcomeSpan.removeClass("open5").removeClass("open3").addClass("open1");
}

/* end open trades */


/* Today Trade*/
var SLIDER_LEFT_GREEN_CLASS = "slide_left_green";
var SLIDER_LEFT_RED_CLASS = "slide_left_red";
var SLIDER_RIGHT_GREEN_CLASS = "slide_right_green";
var SLIDER_RIGHT_RED_CLASS = "slide_right_red";
var SLIDER_RIGHT_BODY_CLASS = "slide_red";
var SLIDER_LEFT_BODY_CLASS = "slide_green";
var SLIDER_NO_BODY_CLASS = "slide_zero";
var SLIDER_SEPERATOR_CLASS = "slide_white";


function getTradesPercentages() {

    GeneralWebServices.GetTransactionsPercentage(function(result) {
        var UpdateIntervals = $("#sliderWrapper").attr("update");
        var sliderLeftEdge = $("#slideLeftEdge");
        var sliderRightEdge = $("#slideRightEdge");
        var sliderRightBody = $("#slideRightBody");
        var sliderLeftBody = $("#slideLeftBody");
        var sliderSeperator = $("#sliderSeperator");
        var seperatorValue = (result.Call > 0 && result.Put > 0) ? 1 : 0;
        setPartStyle(result.Call, sliderLeftEdge, 'edge', true);
        setPartStyle(result.Call, sliderLeftBody, 'body', true);
        setPartStyle(seperatorValue, sliderSeperator, 'seperator', false);
        setPartStyle(result.Put, sliderRightBody, 'body', false);
        setPartStyle(result.Put, sliderRightEdge, 'edge', false);
        setTimeout("getTradesPercentages()", UpdateIntervals);
    });
}
function setPartStyle(value, part, partType, isLeft) {

    var sliderBodyWidth = 126;
    var percent = value + '%';
    var width = Math.round(sliderBodyWidth * (value / 100)) + 'px';
    var EdgeStyle = SLIDER_LEFT_GREEN_CLASS;
    var BodyStyle = SLIDER_LEFT_BODY_CLASS;
    if (value > 0) {
        if (!isLeft) EdgeStyle = SLIDER_RIGHT_RED_CLASS;
        if (!isLeft) BodyStyle = SLIDER_RIGHT_BODY_CLASS;
    }
    else {
        if (!isLeft) EdgeStyle = SLIDER_RIGHT_GREEN_CLASS;
        else EdgeStyle = SLIDER_LEFT_RED_CLASS;
        BodyStyle = SLIDER_NO_BODY_CLASS;
    }
    switch (partType) {

        case 'edge':
            part.attr("class", EdgeStyle);
            break;
        case 'body':
            part.attr("class", BodyStyle).css('width', width);
            part.find("span").html(percent)
            break;
        case 'seperator':
            BodyStyle = (value > 0) ? SLIDER_SEPERATOR_CLASS : SLIDER_NO_BODY_CLASS;
            part.attr("class", BodyStyle);
            break;
    }
}

/* End Today Trade*/