﻿ // Sample Custom Icon, Color and Formatter for Single View Configuration
var crmColors = {
    darkAmber: "#CD9835",
    lightAmber: "#FFB223",
    darkRed: "#A52121",
    darkBlue: "#4573B1",
    lightBlue: "#7CB6C4",
    darkPurple: "#B07395",
    darkGreen: "#4A962A",
    darkGray: "#708090"
};

//var ok = String.fromCharCode(0xE10B);
//var notOk = String.fromCharCode(0xE10A);
function determineCustomColor(record, entityLogicalName) {
    switch (entityLogicalName) {
    case "fin_fundholding":
        if (record.fin_FundId.Name.indexOf("Tech Fund") >= 0) {
            return crmColors.lightAmber
        }
        if (record.fin_FundId.Name.indexOf("Absolute Return") >= 0) {
            return crmColors.darkGreen
        }
        if (record.fin_FundId.Name.indexOf("Money Market") >= 0) {
            return crmColors.darkGreen
        }
        if (record.fin_FundId.Name.indexOf("European Markets") >= 0) {
            return crmColors.darkBlue
        }
        if (record.fin_FundId.Name.indexOf("Emerging Markets") >= 0) {
            return crmColors.darkRed
        }
        if (record.fin_FundId.Name.indexOf("Asia") >= 0) {
            return crmColors.darkRed
        }
        if (record.fin_FundId.Name.indexOf("Bond") >= 0) {
            return crmColors.lightBlue
        }
        return crmColors.lightBlue;
    case "opportunity":
        switch (record.StateCode.Value) {
        case 0:
            // In Progress
            return (record.StatusCode.Value == 1) ? crmColors.darkBlue : crmColors.darkAmber; // Blue for In Progress, Amber for On Hold
        case 1:
            return crmColors.darkGreen; // Won
        case 2:
            return crmColors.darkGray; // Lost
        }
        return crmColors.darkBlue;
    case "incident":
        if (record.fin_SVColor != null) {
            return record.fin_SVColor
        }; // Use specified color if any
        return crmColors.lightAmber; // Replace with RAG Status later on or calculation on fin_TotalNoofDays
    default:
        return crmColors.darkPurple;
    }
}
function determineCustomIcon(record, entityLogicalName) {
    switch (entityLogicalName) {
    case "opportunity":
        if (record.Name.indexOf("Equity") >= 0) {
            return "AssetMgt/Equity.png"
        }
        if (record.Name.indexOf("Quant") >= 0) {
            return "Banking/AdvisoryRoadAhead.png"
        }
        if (record.Name.indexOf("sample") >= 0) {
            return "AssetMgt/Investment.png"
        }
        return "Temp.png";
    case "fin_fundholding":
        if (record.fin_FundId.Name.indexOf("Tech Fund") >= 0) {
            return "AssetMgt/Equity.png"
        }
        if (record.fin_FundId.Name.indexOf("European Markets Fund") >= 0) {
            return "AssetMgt/AlternativeInvestments.png"
        }
        if (record.fin_FundId.Name.indexOf("Money Market") >= 0) {
            return "Banking/Saving.png"
        }
        if (record.fin_FundId.Name.indexOf("Emerging Markets Fund") >= 0) {
            return "Insurance/PensionDollar.png"
        }
        if (record.fin_FundId.Name.indexOf("Investment Fund") >= 0) {
            return "AssetMgt/Investment.png"
        }
        if (record.fin_FundId.Name.indexOf("Absolute Return") >= 0) {
            return "AssetMgt/FixedIncome.png"
        }
        if (record.fin_FundId.Name.indexOf("Bond") >= 0) {
            return "Banking/Investment.png"
        }
        return "Temp.png";
    case "incident":
        if (record.CaseTypeCode.Value == 1) {
            return "Temp.png"
        } // Question
        if (record.CaseTypeCode.Value == 2) {
            return "Insurance/Fire.png"
        } // Problem
        if (record.CaseTypeCode.Value == 3) {
            return "Insurance/Person.png"
        } // Request - Needs Different Icon
    default:
        return "Temp.png";
    }
}
function determineCustomFormat(record, entityLogicalName, field) {
    //alert(entityLogicalName + "/" + field + ": " + record[field]);
    //alert(record[field].Value);
    var t = record[field];
    switch (entityLogicalName + "/" + field) {
    case "fin_onboarding/fin_KYCCompleted":
        return (record.fin_KYCCompleted) ? "KYC Ok" : "Waiting:KYC";
    case "fin_onboarding/fin_ProductId":
        t = t.Name;
        if (t == null) {
            t = "Unspecified Product"
        }
        var pg = record.fin_ProductGroupId.Name;
        if (pg == null) {
            pg = "Unspecified Product Group"
        }
        return (t.length <= 20) ? "<br />" + pg + " / " + t : "<br /><br />" + t;
    case "opportunity/Name":
        t = t.replace(" (sample)", "").replace(" - ", ":<br />");
        if (record.StateCode.Value == 2) { // Lost Opportunity
            var reason = "Status " + record.StatusCode.Value;
            switch (record.StatusCode.Value) {
            case 4:
                reason = "Investment Canceled";
                break;
            case 5:
                reason = "Out-Sold";
                break;
            case 914950000:
                reason = "Lost on Relationship";
                break;
            case 914950001:
                reason = "Lost Funding";
                break;
            case 914950002:
                reason = "Lost on Price";
                break;
            }
            t += "<br />[" + reason + "]";
        } else { // Won, Open Opportunities
            var interest = (record.fin_FundId.Name != null) ? record.fin_FundId.Name : record.fin_ProductGroupId.Name;
            if (interest != null) {
                t += "<br>[" + interest + "]"
            }
        }
        return (t.length <= 60) ? "<br />" + t : t;
    case "fin_fundholding/fin_FundId":
        return "<br />" + t.Name.replace(" - ", ":<br />").replace(" Fund", "<br />Fund");
    case "incident/Title":
        t = (t == null) ? "" : t.replace(" (sample)", "");
        return (t.length <= 60) ? "<br />" + t : t;
    default:
        return t;
    }
}
function quickButtonClicked(context) {
}
// PM: Unsupported Code for now for Update 7.1 pending Product Group feedback
top.window.quickButtonClicked = quickButtonClicked;
top.window.determineCustomColor = determineCustomColor;
top.window.determineCustomIcon = determineCustomIcon;
top.window.determineCustomFormat = determineCustomFormat;