﻿var ReportDownloader = {
    ReportId: null,
    Action: null,
    Fileformat: null,
    FileName: null
};

var EntityDetails = {
    Name: null,
    RecordsGuidArray: null
};

var HomeGridEntityDetails = {
    EntityName: null,
    RecordsGuid: null,
    Action: null,
    FileFormat: null
};

function DownloadReport() {
    var oDataSetName = "ReportSet";
    var columns = "ReportId,ReportNameOnSRS,DefaultFilter,IsCustomReport,IsScheduledReport,Name,DefaultFilter";
    var filter = "ReportId eq guid'" + ReportDownloader.ReportId + "'";
    RetrieveAllReports(oDataSetName, columns, filter, RetriveReports_OnSuccess);
}


function RetrieveAllReports(odataSetName, select, filter, successCallback) {
    var serverUrl = getSUrl();
    var odataUri = serverUrl + Constant.OrgService + "/" + odataSetName + "?";
    if (select)
        odataUri += "$select=" + select + "&";

    if (filter)
        odataUri += "$filter=" + filter;

    $.ajax({
        type: "GET",
        contentType: "application/json; charset=utf-8",
        datatype: "json",
        url: odataUri,
        beforeSend: function (XMLHttpRequest) {
            XMLHttpRequest.setRequestHeader("Accept", "application/json");
        },

        success: function (data, textStatus, XmlHttpRequest) {
            Log('success');
            
            if (successCallback) {
                if (data && data.d && data.d.results)
                    successCallback(data.d.results, textStatus, XmlHttpRequest);
                else if (data && data.d)
                    successCallback(data.d, textStatus, XmlHttpRequest);
                else
                    successCallback(data, textStatus, XmlHttpRequest);
            }
        },

        error: function (XmlHttpRequest, textStatus, errorThrown) {
            Log('error');
            if (XmlHttpRequest && XmlHttpRequest.responseText)
                alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
        }
    });
}

function RetriveReports_OnSuccess(data, textStatus, XmlHttpRequest) {
    if (data && data.length > 0) {
        var reportId = data[0].ReportId.replace('{', '').replace('}', '');
        var isCustom = data[0].IsCustomReport;
        // var isScheduleReport = data[0].IsScheduledReport;
        var reportnameonsrs = data[0].ReportNameOnSRS == null ? '' : data[0].ReportNameOnSRS;
        var currReportName = data[0].Name;
        var defaultFilter = data[0].DefaultFilter;

        //var sb = new StringBuilder();

        //var name = DownloadOptions.primaryEntityName;// + currReportName + +ReportDownloader.Fileformat + ReportDownloader.Action;
        //var sb = "";
        var context = Xrm.Page.context;
        //var name = Xrm.Page.data.entity.getEntityName();
        var SServerUrl = Xrm.Page.context.getClientUrl();

        if (SServerUrl.match(/\/$/)) {
            SServerUrl = SServerUrl.substring(0, SServerUrl.length - 1);
        }
        _downloadReport(reportId, currReportName, isCustom, reportnameonsrs, defaultFilter);
    }
}

function _downloadReport(reportId, reportName, isCustomReport, reportnameonsrs, defaultFilters) {

    //sb.appendLine("Inside Download Report Function");

    var path = '', data = '';
    var xmlHttpRes;
    var reportFilter = GetReportFilterXml(defaultFilters);
    Log(reportFilter);

    //sb.appendLine(reportFilter);

    //createOneClickDoc(SServerUrl, name, sb);

    //Swetha Issue found need to discuss with Arpit. Why reportName variable is declare when it is passed in function parameter
    var reportName = (ReportDownloader.FileName == null || ReportDownloader.FileName == '') ? "Report" : ReportDownloader.FileName;
    //Swetha Issue found need to discuss with Arpit
    //sb.appendLine("Report ID :- " + reportId);
    //sb.appendLine("Report Name :- " + reportName);
    //sb.appendLine("IsCustomReport :- " + isCustomReport);
    //sb.appendLine("ReportName On SSRS:- " + reportnameonsrs);

    //Swetha question for Arpit Iscrm2013 and Iscrm2015 return true when run for crm 2015 then the 2nd if does noy execute
    var isCRM2013 = false; if (parent.Xrm.Page.context.client != undefined) { isCRM2013 = true; }
    var isOnlineCrm = IsOnlineCrm(parent.Xrm.Page.context);

    var isCRM2015 = false; if (parent.Xrm.Page.context.getServerUrl == undefined) { isCRM2015 = true; }

    if (isCRM2015) {
        if (isOnlineCrm) {
            if (isCustomReport) {
                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x;
                var ret = [];

                x = xmlHttpRes.responseText.indexOf("ReportSession=", xmlHttpRes.responseText.indexOf("ReportSession=") + 1);
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

                x = xmlHttpRes.responseText.indexOf("ControlID=", xmlHttpRes.responseText.indexOf("ControlID=") + 1);
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

                if (ret[0] == "") {
                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                    x = xmlHttpRes.responseText.indexOf("ControlID=");
                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
                }
                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId : ret[1] = " + ret[1]);
            } //WORKING
            else //OOB report for crm 2015 online
            {
                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x,
                    ret = [],
                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
                var startPoint = 14;
                var endPoint = responseText.indexOf('&') - 14;
                ret[0] = responseText.substr(startPoint, endPoint); //the session id


                responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
                responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
                var startPoint = 10;
                var endPoint = responseText.indexOf('&') - 10;
                ret[1] = responseText.substr(startPoint, endPoint);  //the control id

                if (ret[0].indexOf("_common/error/errorhandler.aspx") > 0 || ret[1].indexOf("_common/error/errorhandler.aspx") > 0) {
                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);

                    var x,
                        ret = [],
                        responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                    responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
                    var startPoint = 14;
                    var endPoint = responseText.indexOf('&') - 14;
                    ret[0] = responseText.substr(startPoint, endPoint); //the session id


                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
                    responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
                    var startPoint = 10;
                    var endPoint = responseText.indexOf('&') - 10;
                    ret[1] = responseText.substr(startPoint, endPoint);  //the control id
                }

                if (ret[0] == "" && ret[1] == "") {
                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);

                    var x,
                        ret = [],
                        responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                    responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
                    var startPoint = 14;
                    var endPoint = responseText.indexOf('&') - 14;
                    ret[0] = responseText.substr(startPoint, endPoint); //the session id


                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
                    responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
                    var startPoint = 10;
                    var endPoint = responseText.indexOf('&') - 10;
                    ret[1] = responseText.substr(startPoint, endPoint);  //the control id
                }

                if (ret[0] == "" && ret[1] == "") {
                    path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);

                    var x,
                        ret = [],
                        responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                    responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
                    var startPoint = 14;
                    var endPoint = responseText.indexOf('&') - 14;
                    ret[0] = responseText.substr(startPoint, endPoint); //the session id


                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
                    responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
                    var startPoint = 10;
                    var endPoint = responseText.indexOf('&') - 10;
                    ret[1] = responseText.substr(startPoint, endPoint);  //the control id
                }
                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
        }
        else //onPremiseCRM 2015
        {
            if (isCustomReport) {  // custom report crm 2015 onpremise
                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x,
                    ret = [],
                    responceTest = xmlHttpRes.responseText;

                responceTest = responceTest.substr(responceTest.indexOf("ReportSession=", responceTest.indexOf("ReportSession=") + 14)) + 14;
                var startPoint = 14;
                var endPoint = responceTest.indexOf('\\u0026') - 14;
                ret[0] = responceTest.substr(startPoint, endPoint); //the session id


                responceTest = xmlHttpRes.responseText;
                responceTest = responceTest.substr(responceTest.indexOf("ControlID=", responceTest.indexOf("ControlID=") + 14)) + 14;
                var startPoint = 10;
                var endPoint = responceTest.indexOf('\\u0026') - 10;
                ret[1] = responceTest.substr(startPoint, endPoint);  //the control id

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
            else //OOB report crm 2015 on premise
            {
                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;

                xmlHttpRes = Get_xmlHttpRes(path, data);

                if (xmlHttpRes.status == 404) {
                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";//&CRM_FILTER=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                var x;
                var ret = [];

                x = xmlHttpRes.responseText.indexOf("ReportSession=");
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

                x = xmlHttpRes.responseText.indexOf("ControlID=");
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

                if (ret[0] == "") {
                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                    x = xmlHttpRes.responseText.indexOf("ControlID=");
                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
                }

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
        }
    }
    if (isCRM2013 && !isCRM2015) {
        if (isOnlineCrm) {
            if (isCustomReport) {
                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x;
                var ret = [];

                x = xmlHttpRes.responseText.indexOf("ReportSession=", xmlHttpRes.responseText.indexOf("ReportSession=") + 1);
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

                x = xmlHttpRes.responseText.indexOf("ControlID=", xmlHttpRes.responseText.indexOf("ControlID=") + 1);
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

                if (ret[0] == "") {
                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                    x = xmlHttpRes.responseText.indexOf("ControlID=");
                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
                }

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
            else //OOB report
            {
                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x,
                    ret = [],
                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                if (responseText.indexOf("An error has occurred") > 0)
                {
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                var x,
                ret = [],
                responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

                responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
                var startPoint = 14;
                var endPoint = responseText.indexOf('&') - 14;
                ret[0] = responseText.substr(startPoint, endPoint); //the session id


                responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
                responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
                var startPoint = 10;
                var endPoint = responseText.indexOf('&') - 10;
                ret[1] = responseText.substr(startPoint, endPoint);  //the control id

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
        }

        else //onPremiseCRM
        {
            if (isCustomReport) {
                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);

                var x,
                    ret = [],
                    responceTest = xmlHttpRes.responseText;

                responceTest = responceTest.substr(responceTest.indexOf("ReportSession=", responceTest.indexOf("ReportSession=") + 14)) + 14;
                var startPoint = 14;
                var endPoint = responceTest.indexOf('\\u0026') - 14;
                ret[0] = responceTest.substr(startPoint, endPoint); //the session id


                responceTest = xmlHttpRes.responseText;
                responceTest = responceTest.substr(responceTest.indexOf("ControlID=", responceTest.indexOf("ControlID=") + 14)) + 14;
                var startPoint = 10;
                var endPoint = responceTest.indexOf('\\u0026') - 10;
                ret[1] = responceTest.substr(startPoint, endPoint);  //the control id

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
            else //OOB report
            {
                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;

                xmlHttpRes = Get_xmlHttpRes(path, data);

                if (xmlHttpRes.status == 404) {
                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";//&CRM_FILTER=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                    else
                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                    xmlHttpRes = Get_xmlHttpRes(path, data);
                }

                var x;
                var ret = [];

                x = xmlHttpRes.responseText.indexOf("ReportSession=");
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

                x = xmlHttpRes.responseText.indexOf("ControlID=");
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

                if (ret[0] == "") {
                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                    x = xmlHttpRes.responseText.indexOf("ControlID=");
                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
                }

                //sb.appendLine("Report path : =" + path);
                //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
                //sb.appendLine("ControlId: ret[1] = " + ret[1]);
            } //WORKING
        }
    }

    //else //CRM2011
    if (!isCRM2013 && !isCRM2015) {
        if (isCustomReport) {
            path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";

            if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
            else
                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter

            xmlHttpRes = Get_xmlHttpRes(path, data);
            if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);
            }
            if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);
            }

            var x, ret = [];

            x = xmlHttpRes.responseText.indexOf("ReportSession=");
            ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id
            x = xmlHttpRes.responseText.indexOf("ControlID=");
            ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id
            if (ret[0] == "") {
                x = xmlHttpRes.responseText.indexOf("ReportSession=");
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                x = xmlHttpRes.responseText.indexOf("ControlID=");
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
            }

            //sb.appendLine("Report path : =" + path);
            //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
            //sb.appendLine("ControlId: ret[1] = " + ret[1]);
        }
        else {
            path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
            if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
            else
                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter
            xmlHttpRes = Get_xmlHttpRes(path, data);
            if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0 || xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
                else
                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
                xmlHttpRes = Get_xmlHttpRes(path, data);
            }
            //if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0)
            //{
            //    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
            //        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
            //    else
            //        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
            //    xmlHttpRes = Get_xmlHttpRes(path, data);
            //}

            var x, ret = [];

            x = xmlHttpRes.responseText.indexOf("ReportSession=");
            ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id
            x = xmlHttpRes.responseText.indexOf("ControlID=");
            ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id
            if (ret[0] == "") {
                x = xmlHttpRes.responseText.indexOf("ReportSession=");
                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
                x = xmlHttpRes.responseText.indexOf("ControlID=");
                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
            }

            //sb.appendLine("Report path : =" + path);
            //sb.appendLine("ReportSession : ret[0] = " + ret[0]);
            //sb.appendLine("ControlId: ret[1] = " + ret[1]);
        }
    }

    Log("**************", ret, "**************");

    var downloadPath = getSUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + ret[0] +
        "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + ret[1] +
        "&OpType=Export&FileName=" + reportName +
        "&ContentDisposition=OnlyHtmlInline&Format=" + FileFormat[ReportDownloader.Fileformat];
    Log(downloadPath);
    //sb.appendLine("Download Path : " + downloadPath);

    //Downlaod path is generated.
    //Move to next process as per as the download configuration or User selected value

    //WaitForSilverlightLoading();

    PostOpperation(downloadPath);

    //$('#loadingDiv').css('display', 'none');

    //setTimeout(function () {
    //    window.close();
    //}, 4000);
}

//function WaitForSilverlightLoading()
//{
//    setTimeout(silverlightObject != null, 1000);
//    return silverlightObject;
//}

function Get_xmlHttpRes(_path, _data) {
    var xmlHttpReq = new XMLHttpRequest();
    xmlHttpReq.open("POST", _path, false);
    xmlHttpReq.setRequestHeader("Accept", "*/*");
    xmlHttpReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttpReq.send(_data);
    return xmlHttpReq;
}

function GetReportFilterXml(_defaultFilterXml) {
    var _xml = StringToXml(_defaultFilterXml);

    if (parent.Xrm.Page.data == null) {
        //if (DownloadOptions.selectedEntityName != "null")
        //    EntityDetails.Name = DownloadOptions.selectedEntityName;
        //else if (DownloadOptions.primaryEntityName != "null")
            EntityDetails.Name = DownloadOptions.primaryEntityName
        
        //if(DownloadOptions.recordGuid != "null")
            EntityDetails.RecordsGuidArray = DownloadOptions.recordGuid.split(',');
        //else if(DownloadOptions.selectedControlSelectedItemIds != "null")
        //    EntityDetails.RecordsGuidArray = DownloadOptions.selectedControlSelectedItemIds.split(',');
    }
    else {
        EntityDetails.Name = parent.Xrm.Page.data.entity.getEntityName();
        EntityDetails.RecordsGuidArray = [parent.Xrm.Page.data.entity.getId()];
    }

    if (_defaultFilterXml == null || _defaultFilterXml == '' || _defaultFilterXml == undefined)
        return;

    var length = EntityDetails.RecordsGuidArray.length;
    var counter = false;

    //-newly added Pranit for removing condition element from xml
    var flag = false;
    if (parent.Xrm.Page.context.client != undefined || parent.Xrm.Page.context.getServerUrl == undefined)
    {
        if (IsOnlineCrm(parent.Xrm.Page.context)) {
            y = _xml.getElementsByTagName("condition")[0];

            if (_xml.getElementsByTagName("condition").length == 1) {
                _xml.getElementsByTagName("filter")[0].removeChild(y);
                //_xml.documentElement.firstChild.childNodes[0].childNodes[0].childNodes[1].removeChild(y);
            }
        }
    }
    //-newly added Pranit for removing condition element from xml

    if (_xml.getElementsByTagName("filter").length == 0) {
        var _newFilter = _xml.createElement("filter");
        _newFilter.setAttribute("type", "and");
        var e = _xml.getElementsByTagName("entity")[0];
        e.appendChild(_newFilter);

        var _newcondition = _xml.createElement("condition");
        _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
        _newcondition.setAttribute("operator", 'in');
        var e = _xml.getElementsByTagName("filter")[0];
        e.appendChild(_newcondition);
    }

    //-newly added by Pranit for adding condition with new attribute and value element in xml
    if (parent.Xrm.Page.context.client != undefined || parent.Xrm.Page.context.getServerUrl == undefined)
    {
        if (IsOnlineCrm(parent.Xrm.Page.context)) {
            if (_xml.getElementsByTagName("condition").length == 0) {
                var _newcondition = _xml.createElement("condition");
                _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
                _newcondition.setAttribute("operator", 'in');
                var e = _xml.getElementsByTagName("filter")[0];
                e.appendChild(_newcondition);

                for (var i = 0; i < length; i++) {
                    var newel = _xml.createElement("value");
                    newel.setAttribute("uitype", EntityDetails.Name);
                    newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
                    _newcondition.appendChild(newel);
                }
                flag = true;
            }
        }
    }
    //-newly added by Pranit for adding condition with new attribute and value element in xml


    if (_xml.getElementsByTagName("condition").length == 0) {
        var _newcondition = _xml.createElement("condition");
        _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
        _newcondition.setAttribute("operator", 'in');
        var e = _xml.getElementsByTagName("filter")[0];
        e.appendChild(_newcondition);
    }

    else {
        for (var i = 0; i < _xml.getElementsByTagName("condition").length; i++) {
            tem = _xml.getElementsByTagName("condition")[i];


            if (flag == false) {//--newly added by pranit 
                //WORKING in chrome//if (tem.hasAttribute("attribute") && tem.getAttribute("attribute") == EntityDetails.Name + "id")
                if ((tem.getAttribute("attribute") == null)
                    && tem.getAttribute("attribute") == EntityDetails.Name + "id") {
                    y = tem.getAttributeNode("operator");
                    y.nodeValue = "in";

                    for (var i = 0; i < length; i++) {
                        var newel = _xml.createElement("value");
                        newel.setAttribute("uitype", EntityDetails.Name);
                        newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
                        tem.appendChild(newel);
                    }
                    counter = true;
                }
            }
        }

        if (!counter) {
            if (flag == false) {//--newly added
                var _newcondition = _xml.createElement("condition");
                _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
                _newcondition.setAttribute("operator", 'in');
                var e = _xml.getElementsByTagName("filter")[0];
                e.appendChild(_newcondition);

                for (var i = 0; i < length; i++) {
                    var newel = _xml.createElement("value");
                    newel.setAttribute("uitype", EntityDetails.Name);
                    newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
                    _newcondition.appendChild(newel);
                }
            }
        }
    }

    //Cleanup START
    if (_xml.getElementsByTagName("condition").length > 1) {
        for (var e = 0; e < _xml.getElementsByTagName("condition").length; e++) {
            tem = _xml.getElementsByTagName("condition")[e];

            //If condition dont contain "value" attribute AND IF condition dont contain child node value
            if (tem.getAttribute('value') == null && tem.childNodes.length == 0) {
                tem.parentNode.removeChild(tem);
                //tem.remove(); // this statement not working in old IE
            }
        }
    }
    //Cleanup

    if (_xml.xml != undefined && _xml.xml != null)
        return _xml.xml;
    else
        return new XMLSerializer().serializeToString(_xml);
}

function RetriveCompleted(varBody)
{
    var action = ReportDownloader.Action;
    var fileMetadata = getFileMetadata(FileFormat[ReportDownloader.Fileformat]);
    var reportName = (ReportDownloader.FileName == null || ReportDownloader.FileName == '') ? "Report" : ReportDownloader.FileName;

    switch (action)
    {
        case ActionType.ATTACH_EMAIL:
            var emailid;
            var windowObj = window.parent;
            if (window.opener)
                windowObj = window.opener;

            var ownerId = windowObj.Xrm.Page.context.getUserId();
            if (windowObj.Xrm.Page.data)
            {
                var result = ExecuteOdata(_getUrl(windowObj.Xrm.Page.context),
                                   Constant.OrgService,
                                   ConfigEntity.LogicalName + "Set?$select=iotap_name,iotap_emailto,iotap_emailtemplate,iotap_entityname,iotap_subject&$filter=iotap_entityname eq '" + windowObj.Xrm.Page.data.entity.getEntityName() + "'");
                if (result != null)
                {
                    var length = result.length;
                    for (var i = 0; i < length; i++)
                    {
                        if (result[i] != undefined)
                        {
                           
                            var entityName = result[i].iotap_entityname;//windowObj.Xrm.Page.data.entity.getEntityName();
                           
                            var recordId = windowObj.Xrm.Page.data.entity.getId();
                            //var ownerId = windowObj.Xrm.Page.context.getUserId();

                            var regarding = new Object();
                            regarding.Id = recordId.replace('{', '').replace('}', '');
                            regarding.LogicalName = entityName;

                            var subject = (result[i].iotap_subject == null || result[i].iotap_subject == '') ? "Report" : result[i].iotap_subject;

                            var emailTemplate = getEmailTemplate(entityName, regarding.Id, result[i].iotap_emailtemplate);//email-template
                            if (emailTemplate.length > 0)
                            {
                                subject = emailTemplate[0].Subject;
                                var description = emailTemplate[0].Description;
                                emailid = (CreateEntity_odata(getSUrl(), { Subject: subject, Description: description, RegardingObjectId: regarding }, 'Email')).ActivityId;
                            }
                            else
                                emailid = (CreateEntity_odata(getSUrl(), { Subject: subject, RegardingObjectId: regarding }, 'Email')).ActivityId;
                                                       
                            
                            if (result[i].iotap_emailto != null)
                            {
                                if (result[i].iotap_emailto == "owninguser")
                                    result[i].iotap_emailto = "ownerid";
                                var customerObj = windowObj.Xrm.Page.getAttribute(result[i].iotap_emailto);//customerid
                                if (customerObj != null)
                                {
                                    customer = customerObj.getValue();
                                    if (customer != null)//New check
                                    {
                                        var activityPartyTo = new Object();
                                        activityPartyTo.PartyId = {
                                            Id: customer[0].id.replace('{', '').replace('}', ''),
                                            LogicalName: customer[0].entityType
                                        }

                                        activityPartyTo.ActivityId = {
                                            Id: emailid,
                                            LogicalName: "email"
                                        }
                                        activityPartyTo.ParticipationTypeMask = { Value: 2 }; //2 = ToRecipient 
                                        var activityPartyToObj = CreateEntity_odata(getSUrl(), activityPartyTo, 'ActivityParty');
                                    }
                                }
                            }//To: customerId, From: owner,

                            //var activityPartySender = new Object();
                            //activityPartySender.PartyId = {
                            //    Id: ownerId.replace('{', '').replace('}', ''),
                            //    LogicalName: "systemuser"
                            //};

                            //activityPartySender.ActivityId = {
                            //    Id: emailid,
                            //    LogicalName: "email"
                            //}
                            //activityPartySender.ParticipationTypeMask = { Value: 1 }; //1 = Sender 
                            //var activityPartySenderObj = CreateEntity_odata(getSUrl(), activityPartySender, 'ActivityParty');
                           
                        }
                    }
                }
            }
            else
                emailid = (CreateEntity_odata(getSUrl(), { Subject: reportName }, 'Email')).ActivityId;

            var activityPartySender = new Object();
            activityPartySender.PartyId = {
                Id: ownerId.replace('{', '').replace('}', ''),
                LogicalName: "systemuser"
            };

            activityPartySender.ActivityId = {
                Id: emailid,
                LogicalName: "email"
            }
            activityPartySender.ParticipationTypeMask = { Value: 1 }; //1 = Sender 
            var activityPartySenderObj = CreateEntity_odata(getSUrl(), activityPartySender, 'ActivityParty');

            var email = new Array();
            email[0] = new Object();
            email[0].id = emailid;
            email[0].entityType = 'email';

            var post = Object();
            post.Body = varBody;
            post.Subject = "File Attachment";
            post.AttachmentNumber = 1;
            post.FileName = reportName + "." + fileMetadata.Extension;
            post.MimeType = fileMetadata.MimeType;

            post.ObjectId = Object();
            post.ObjectId.LogicalName = "email";
            post.ObjectId.Id = email[0].id;
            post.ObjectTypeCode = "email";

            CreateEntity_odata(getSUrl(), post, "ActivityMimeAttachment");
            //parent.Xrm.Utility.openEntityForm("email", emailid);

            var features = "location=no,menubar=no,status=no,toolbar=no,width=900,height=700";
            window.open(getSUrl() + "/main.aspx?etn=email&pagetype=entityrecord&id=" + emailid, "_blank", features, false);

            break;
        case ActionType.SAVE_NOTES:
            var guidList = EntityDetails.RecordsGuidArray;
            var length = guidList.length;
            for (var i = 0; i < length; i++)
            {
                var post = Object();
                post.DocumentBody = varBody;
                post.Subject = "File Attachment";
                post.FileName = reportName + "." + fileMetadata.Extension;
                post.MimeType = fileMetadata.MimeType;
                post.ObjectId = Object();
                post.ObjectId.LogicalName = EntityDetails.Name;
                post.ObjectId.Id = guidList[i].replace('{', '').replace('}', '');;
                CreateEntity_odata(getSUrl(), post, "Annotation", "");
            }
            alert(Constant.NotesAttached);
            break;
    }
    $('#loadingDiv').css('display', 'none');
    window.close();//
}

function getEmailTemplate(entityName, entityId, templateId)
{
    var soapXml = '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">';
    soapXml += '<s:Body>';
    soapXml += '<Execute xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">';
    soapXml += '<request i:type="b:InstantiateTemplateRequest" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:b="http://schemas.microsoft.com/crm/2011/Contracts">';
    soapXml += '<a:Parameters xmlns:c="http://schemas.datacontract.org/2004/07/System.Collections.Generic">';
    soapXml += '<a:KeyValuePairOfstringanyType>';
    soapXml += '<c:key>TemplateId</c:key>';
    soapXml += '<c:value i:type="d:guid" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/">' + templateId + '</c:value>';//b6c38bb9-2423-471d-8b38-e3b99ed80e7a
    soapXml += '</a:KeyValuePairOfstringanyType>';
    soapXml += '<a:KeyValuePairOfstringanyType>';
    soapXml += '<c:key>ObjectType</c:key>';
    soapXml += '<c:value i:type="d:string" xmlns:d="http://www.w3.org/2001/XMLSchema">' + entityName + '</c:value>';
    soapXml += '</a:KeyValuePairOfstringanyType>';
    soapXml += '<a:KeyValuePairOfstringanyType>';
    soapXml += '<c:key>ObjectId</c:key>';
    soapXml += '<c:value i:type="d:guid" xmlns:d="http://schemas.microsoft.com/2003/10/Serialization/">' + entityId + '</c:value>';//b076b29f-43d7-e311-aabb-00155d003404
    soapXml += '</a:KeyValuePairOfstringanyType>';
    soapXml += '</a:Parameters>';
    soapXml += '<a:RequestId i:nil="true" />';
    soapXml += '<a:RequestName>InstantiateTemplate</a:RequestName>';
    soapXml += '</request>';
    soapXml += '</Execute>';
    soapXml += '</s:Body>';
    soapXml += '</s:Envelope>';

    var xmlhttp;
    if (navigator.appName == "Microsoft Internet Explorer")
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    else
        xmlhttp = new XMLHttpRequest();

    xmlhttp.open("POST", GetGlobalContext().getClientUrl() + "/XRMServices/2011/Organization.svc/web", false);
    xmlhttp.setRequestHeader("Accept", "application/xml, text/xml, */*");
    xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");
    xmlhttp.send(soapXml);

    var resultXml = xmlhttp.responseXML;

    if (navigator.appName == "Microsoft Internet Explorer")
        var xmlText = resultXml.xml || resultXml.activeElement.innerHTML;
    else
        var xmlText = (new XMLSerializer()).serializeToString(resultXml);
    //return xmlText;
    var ResultXml = xmlText;
        try
        {
            xmlDoc = $.parseXML(ResultXml);
        }
        catch (E)
        {
            alert(error_Xml);
            return;
        }
    $xml = $(xmlDoc);
    var XmlChildNodeList, emailTemplates;
    if (navigator.appName == "Netscape" && navigator.vendor == "Google Inc.")
    {
        XmlChildNodeList = $xml.find("Results").find("Entity");
        emailTemplates = ForChrome(XmlChildNodeList);
    }
    else
    {
        XmlChildNodeList = $xml.find("a\\:Results").find("a\\:Entity");
        emailTemplates = ForIEandFireFox(XmlChildNodeList);
    }
    return emailTemplates;
}

function ForChrome(XMLEntityNodes)
{
    var templates = [];
    for (var i = 0; i < XMLEntityNodes.length; i++)
    {
        var KVPSanytype = XMLEntityNodes[i].getElementsByTagName("KeyValuePairOfstringanyType");
        templates[i] = new Object();
        for (var j = 0; j < KVPSanytype.length; j++)
        {
            if (KVPSanytype[j].getElementsByTagName("key")[0].textContent == "subject")
            {
                templates[i].Subject = KVPSanytype[j].getElementsByTagName("value")[0].textContent;
            }
            if (KVPSanytype[j].getElementsByTagName("key")[0].textContent == "description")
            {
                templates[i].Description = KVPSanytype[j].getElementsByTagName("value")[0].textContent;
            }
        }
    }
    return templates;
}

function ForIEandFireFox(XMLEntityNodes)
{
    var templates = [];
    for (var i = 0; i < XMLEntityNodes.length; i++)
    {
        var KVPSanytype = XMLEntityNodes[i].getElementsByTagName("a:KeyValuePairOfstringanyType");
        templates[i] = new Object();
        for (var j = 0; j < KVPSanytype.length; j++)
        {
            if (KVPSanytype[j].getElementsByTagName("c:key")[0].textContent == "subject")
            {
                templates[i].Subject = KVPSanytype[j].getElementsByTagName("c:value")[0].textContent;
            }
            if (KVPSanytype[j].getElementsByTagName("c:key")[0].textContent == "description")
            {
                templates[i].Description = KVPSanytype[j].getElementsByTagName("c:value")[0].textContent;
            }
        }
    }
    return templates;
}

function getFileMetadata(file) {
    switch (file) {
        case 'PDF':
            return { MimeType: "application/pdf", Extension: "pdf" };
        case 'EXCEL':
            return { MimeType: "application/vnd-ms-excel", Extension: "xls" };
        case 'WORD':
            return { MimeType: "application/msword", Extension: "doc" };
        default:
            break;
    }
}

function PostOpperation(_downloadPath) {
    var action = ReportDownloader.Action;
    switch (action) {
        case ActionType.SAVE:
        case ActionType.OPEN:
            window.location.href = _downloadPath;
            $('#loadingDiv').css('display', 'none');
            window.close();//
            break;
        case ActionType.ATTACH_EMAIL:
        case ActionType.SAVE_NOTES:
            CallSilverlight(_downloadPath);
            break;
        default:
            Log(_downloadPath);
            break;
    }
}

function getSUrl() {
    var isOnlineCrm = IsOnlineCrm(parent.Xrm.Page.context);
    var orgName;
    if (Xrm.Page.context.getOrgUniqueName() == undefined)
        orgName = window.parent.Xrm.Page.context.getOrgUniqueName();
    else
        orgName = Xrm.Page.context.getOrgUniqueName();

    var url = window.parent.Xrm.Page.context.getClientUrl();

    if (!isOnlineCrm) {
        if (url.indexOf(orgName) > 0)
            return url;
        else if (window.parent.Xrm.Page.context.getClientUrl() == undefined || window.parent.Xrm.Page.context.getClientUrl() == null || window.parent.Xrm.Page.context.getClientUrl().indexOf(orgName) < 0)
            return window.parent.opener.Xrm.Page.context.getClientUrl();
        else
            return window.parent.Xrm.Page.context.getClientUrl();
    }
    else
        return url;
}

/*
//function FillReportDownloaderObjectFromRibbon(commandProperties, _primaryEntityName, _firstPrimaryItemId, _action, _fileFormat) {
//    var reportId = commandProperties.SourceControlId.split("_");
//    //var action = _action;
//    //var fileFormat = _fileFormat;
//    if (reportId == null) return;

//    ReportDownloader.ReportId = reportId[0];

//    DownloadReportFromRibbon(_primaryEntityName, _firstPrimaryItemId, _action, _fileFormat);
//}

//function DownloadReportFromRibbon(_primaryEntityName, _firstPrimaryItemId, _action, _fileFormat) {

//    var oDataSetName = "ReportSet";
//    var columns = "ReportId,ReportNameOnSRS,DefaultFilter,IsCustomReport,IsScheduledReport,Name,DefaultFilter";
//    if (ReportDownloader.ReportId == null)
//        var filter = "ReportId eq guid'" + _firstPrimaryItemId + "'";
//    else
//        var filter = "ReportId eq guid'" + ReportDownloader.ReportId + "'";

//    HomeGridEntityDetails.EntityName = _primaryEntityName;
//    HomeGridEntityDetails.RecordsGuid = _firstPrimaryItemId;
//    HomeGridEntityDetails.Action = _action;
//    HomeGridEntityDetails.FileFormat = _fileFormat;
//    RetrieveAllReportsRibbon(oDataSetName, columns, filter, _primaryEntityName, RetriveReportsRibbon_OnSuccess);
//}

//function RetrieveAllReportsRibbon(odataSetName, select, filter, _primaryEntityName, successCallback) {
//    var serverUrl = getSUrl();
//    var primaryEntityName = _primaryEntityName;
//    var odataUri = serverUrl + Constant.OrgService + "/" + odataSetName + "?";
//    if (select)
//        odataUri += "$select=" + select + "&";

//    if (filter)
//        odataUri += "$filter=" + filter;

//    $.ajax({
//        type: "GET",
//        contentType: "application/json; charset=utf-8",
//        datatype: "json",
//        url: odataUri,
//        beforeSend: function (XMLHttpRequest) {
//            XMLHttpRequest.setRequestHeader("Accept", "application/json");
//        },

//        success: function (data, textStatus, primaryEntityName, XmlHttpRequest) {
//            Log('success');

//            if (successCallback) {
//                if (data && data.d && data.d.results)
//                    successCallback(data.d.results, textStatus, XmlHttpRequest);
//                else if (data && data.d)
//                    successCallback(data.d, textStatus, XmlHttpRequest);
//                else
//                    successCallback(data, textStatus, XmlHttpRequest);
//            }
//        },

//        error: function (XmlHttpRequest, textStatus, errorThrown) {
//            Log('error');
//            if (XmlHttpRequest && XmlHttpRequest.responseText)
//                alert("Error while retrieval ; Error – " + XmlHttpRequest.responseText);
//        }
//    });
//}

//function RetriveReportsRibbon_OnSuccess(data, textStatus, _primaryEntityName, XmlHttpRequest) {
//    if (data && data.length > 0) {
//        var reportId = data[0].ReportId.replace('{', '').replace('}', '');
//        var isCustom = data[0].IsCustomReport;
//        // var isScheduleReport = data[0].IsScheduledReport;
//        var reportnameonsrs = data[0].ReportNameOnSRS == null ? '' : data[0].ReportNameOnSRS;
//        var currReportName = data[0].Name;
//        var defaultFilter = data[0].DefaultFilter;

//        var sb = new StringBuilder();
//        //var sb = "";
//        var context = Xrm.Page.context;
//        //var name = Xrm.Page.data.entity.getEntityName();
//        var SServerUrl = Xrm.Page.context.getClientUrl();

//        if (SServerUrl.match(/\/$/)) {
//            SServerUrl = SServerUrl.substring(0, SServerUrl.length - 1);
//        }
//        _downloadReportFromRibbon(reportId, currReportName, isCustom, reportnameonsrs, defaultFilter, SServerUrl, sb, name);
//    }
//}

//function _downloadReportFromRibbon(reportId, reportName, isCustomReport, reportnameonsrs, defaultFilters, SServerUrl, sb, name) {
//    var path = '', data = '';
//    var xmlHttpRes;
//    var reportFilter = GetReportFilterXmlFromRibbon(defaultFilters);
//    Log(reportFilter);
//    //sb.appendLine("inside main function");
//    //createOneClickDoc(SServerUrl, name, sb);

//    //Swetha Issue found need to discuss with Arpit. Why reportName variable is declare when it is passed in function parameter
//    var reportName = (ReportDownloader.FileName == null || ReportDownloader.FileName == '') ? "Report" : ReportDownloader.FileName;
//    //Swetha Issue found need to discuss with Arpit


//    //Swetha question for Arpit Iscrm2013 and Iscrm2015 return true when run for crm 2015 then the 2nd if does noy execute
//    var isCRM2013 = false; if (parent.Xrm.Page.context.client != undefined) { isCRM2013 = true; }
//    var isOnlineCrm = IsOnlineCrm(parent.Xrm.Page.context);

//    var isCRM2015 = false; if (parent.Xrm.Page.context.getServerUrl == undefined) { isCRM2015 = true; }

//    if (isCRM2015) {
//        if (isOnlineCrm) {
//            if (isCustomReport) {
//                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
//                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
//                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x;
//                var ret = [];

//                x = xmlHttpRes.responseText.indexOf("ReportSession=", xmlHttpRes.responseText.indexOf("ReportSession=") + 1);
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

//                x = xmlHttpRes.responseText.indexOf("ControlID=", xmlHttpRes.responseText.indexOf("ControlID=") + 1);
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

//                if (ret[0] == "") {
//                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                    x = xmlHttpRes.responseText.indexOf("ControlID=");
//                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//                }
//            } //WORKING
//            else //OOB report for crm 2015 online
//            {
//                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x,
//                    ret = [],
//                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

//                responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
//                var startPoint = 14;
//                var endPoint = responseText.indexOf('&') - 14;
//                ret[0] = responseText.substr(startPoint, endPoint); //the session id


//                responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
//                responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
//                var startPoint = 10;
//                var endPoint = responseText.indexOf('&') - 10;
//                ret[1] = responseText.substr(startPoint, endPoint);  //the control id

//                if (ret[0] == "" && ret[1] == "") {
//                    path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
//                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                    else
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=false&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);

//                    var x,
//                        ret = [],
//                        responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

//                    responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
//                    var startPoint = 14;
//                    var endPoint = responseText.indexOf('&') - 14;
//                    ret[0] = responseText.substr(startPoint, endPoint); //the session id


//                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
//                    responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
//                    var startPoint = 10;
//                    var endPoint = responseText.indexOf('&') - 10;
//                    ret[1] = responseText.substr(startPoint, endPoint);  //the control id
//                }
//            } //WORKING
//        }
//        else //onPremiseCRM 2015
//        {
//            if (isCustomReport) {  // custom report crm 2015 onpremise
//                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
//                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
//                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x,
//                    ret = [],
//                    responceTest = xmlHttpRes.responseText;

//                responceTest = responceTest.substr(responceTest.indexOf("ReportSession=", responceTest.indexOf("ReportSession=") + 14)) + 14;
//                var startPoint = 14;
//                var endPoint = responceTest.indexOf('\\u0026') - 14;
//                ret[0] = responceTest.substr(startPoint, endPoint); //the session id


//                responceTest = xmlHttpRes.responseText;
//                responceTest = responceTest.substr(responceTest.indexOf("ControlID=", responceTest.indexOf("ControlID=") + 14)) + 14;
//                var startPoint = 10;
//                var endPoint = responceTest.indexOf('\\u0026') - 10;
//                ret[1] = responceTest.substr(startPoint, endPoint);  //the control id

//            } //WORKING
//            else //OOB report crm 2015 on premise
//            {
//                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;

//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                if (xmlHttpRes.status == 404) {
//                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";//&CRM_FILTER=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
//                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                    else
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
//                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                    else
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                var x;
//                var ret = [];

//                x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

//                x = xmlHttpRes.responseText.indexOf("ControlID=");
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

//                if (ret[0] == "") {
//                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                    x = xmlHttpRes.responseText.indexOf("ControlID=");
//                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//                }
//            } //WORKING
//        }
//    }
//    if (isCRM2013 && !isCRM2015) {
//        if (isOnlineCrm) {
//            if (isCustomReport) {
//                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
//                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
//                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x;
//                var ret = [];

//                x = xmlHttpRes.responseText.indexOf("ReportSession=", xmlHttpRes.responseText.indexOf("ReportSession=") + 1);
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

//                x = xmlHttpRes.responseText.indexOf("ControlID=", xmlHttpRes.responseText.indexOf("ControlID=") + 1);
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

//                if (ret[0] == "") {
//                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                    x = xmlHttpRes.responseText.indexOf("ControlID=");
//                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//                }
//            } //WORKING
//            else //OOB report
//            {
//                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x,
//                    ret = [],
//                    responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');

//                responseText = responseText.substr(responseText.indexOf("ReportSession=", responseText.indexOf("ReportSession=") + 14)) + 14;
//                var startPoint = 14;
//                var endPoint = responseText.indexOf('&') - 14;
//                ret[0] = responseText.substr(startPoint, endPoint); //the session id


//                responseText = xmlHttpRes.responseText.replace(/\\u0026/g, '&');
//                responseText = responseText.substr(responseText.indexOf("ControlID=", responseText.indexOf("ControlID=") + 14)) + 14;
//                var startPoint = 10;
//                var endPoint = responseText.indexOf('&') - 10;
//                ret[1] = responseText.substr(startPoint, endPoint);  //the control id

//            } //WORKING
//        }

//        else //onPremiseCRM
//        {
//            if (isCustomReport) {
//                path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName()
//                                + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs
//                                + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                var x,
//                    ret = [],
//                    responceTest = xmlHttpRes.responseText;

//                responceTest = responceTest.substr(responceTest.indexOf("ReportSession=", responceTest.indexOf("ReportSession=") + 14)) + 14;
//                var startPoint = 14;
//                var endPoint = responceTest.indexOf('\\u0026') - 14;
//                ret[0] = responceTest.substr(startPoint, endPoint); //the session id


//                responceTest = xmlHttpRes.responseText;
//                responceTest = responceTest.substr(responceTest.indexOf("ControlID=", responceTest.indexOf("ControlID=") + 14)) + 14;
//                var startPoint = 10;
//                var endPoint = responceTest.indexOf('\\u0026') - 10;
//                ret[1] = responceTest.substr(startPoint, endPoint);  //the control id

//            } //WORKING
//            else //OOB report
//            {
//                path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;

//                xmlHttpRes = Get_xmlHttpRes(path, data);

//                if (xmlHttpRes.status == 404) {
//                    path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";//&CRM_FILTER=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
//                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                    else
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
//                    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                    else
//                        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                    xmlHttpRes = Get_xmlHttpRes(path, data);
//                }

//                var x;
//                var ret = [];

//                x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id

//                x = xmlHttpRes.responseText.indexOf("ControlID=");
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id

//                if (ret[0] == "") {
//                    x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                    ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                    x = xmlHttpRes.responseText.indexOf("ControlID=");
//                    ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//                }
//            } //WORKING
//        }
//    }

//    //else //CRM2011
//    if (!isCRM2013 && !isCRM2015) {
//        if (isCustomReport) {
//            path = getSUrl() + "/CRMReports/rsviewer/reportviewer.aspx";

//            if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//            else
//                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter

//            xmlHttpRes = Get_xmlHttpRes(path, data);
//            if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0) {
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);
//            }
//            if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);
//            }

//            var x, ret = [];

//            x = xmlHttpRes.responseText.indexOf("ReportSession=");
//            ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id
//            x = xmlHttpRes.responseText.indexOf("ControlID=");
//            ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id
//            if (ret[0] == "") {
//                x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                x = xmlHttpRes.responseText.indexOf("ControlID=");
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//            }
//        }
//        else {
//            path = getSUrl() + "/CRMReports/rsviewer/quirksreportviewer.aspx";
//            if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false";
//            else
//                data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=" + isCustomReport + "&reportnameonsrs=" + reportnameonsrs + "&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter
//            xmlHttpRes = Get_xmlHttpRes(path, data);
//            if (xmlHttpRes.responseText.indexOf("0x8004832C") > 0 || xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0) {
//                if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//                else
//                    data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_FILTER=" + reportFilter;
//                xmlHttpRes = Get_xmlHttpRes(path, data);
//            }
//            //if (xmlHttpRes.responseText.indexOf("ERRORCODE_ETM = '0x8004A001'") > 0)
//            //{
//            //    if (reportFilter == undefined || reportFilter == null || reportFilter == '')
//            //        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false";
//            //    else
//            //        data = "id=%7B" + reportId + "%7D&uniquename=" + window.parent.Xrm.Page.context.getOrgUniqueName() + "&iscustomreport=true&reportnameonsrs=&reportName=" + reportName + "&isScheduledReport=false&CRM_Filter=" + reportFilter;
//            //    xmlHttpRes = Get_xmlHttpRes(path, data);
//            //}

//            var x, ret = [];

//            x = xmlHttpRes.responseText.indexOf("ReportSession=");
//            ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("&", x) - x - 14); //the session id
//            x = xmlHttpRes.responseText.indexOf("ControlID=");
//            ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("&", x) - x - 10); //the control id
//            if (ret[0] == "") {
//                x = xmlHttpRes.responseText.indexOf("ReportSession=");
//                ret[0] = xmlHttpRes.responseText.substr(x + 14, xmlHttpRes.responseText.indexOf("\\", x) - x - 14); //the session id
//                x = xmlHttpRes.responseText.indexOf("ControlID=");
//                ret[1] = xmlHttpRes.responseText.substr(x + 10, xmlHttpRes.responseText.indexOf("\\", x) - x - 10); //the control id
//            }
//        }
//    }

//    Log("**************", ret, "**************");

//    if (ReportDownloader.Fileformat == undefined || ReportDownloader.Fileformat == null) {
//        var downloadPath = getSUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + ret[0] +
//        "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + ret[1] +
//        "&OpType=Export&FileName=" + reportName +
//        "&ContentDisposition=OnlyHtmlInline&Format=" + HomeGridEntityDetails.FileFormat;
//        Log(downloadPath);
//        PostOpperationRibbon(downloadPath);

//        setTimeout(function () {
//            window.close();
//        }, 3000);
//    }
//    else {
//        var downloadPath = getSUrl() + "/Reserved.ReportViewerWebControl.axd?ReportSession=" + ret[0] +
//        "&Culture=1033&CultureOverrides=True&UICulture=1033&UICultureOverrides=True&ReportStack=1&ControlID=" + ret[1] +
//        "&OpType=Export&FileName=" + reportName +
//        "&ContentDisposition=OnlyHtmlInline&Format=" + FileFormat[ReportDownloader.Fileformat];
//        Log(downloadPath);
//        PostOpperation(downloadPath);

//        setTimeout(function () {
//            window.close();
//        }, 3000);

//    }

//    //Downlaod path is generated.
//    //Move to next process as per as the download configuration or User selected value

//}

//function GetReportFilterXmlFromRibbon(_defaultFilterXml) {
//    var _xml = StringToXml(_defaultFilterXml);

//    if (parent.Xrm.Page.data == null) {
//        EntityDetails.Name = HomeGridEntityDetails.EntityName;
//        EntityDetails.RecordsGuidArray = HomeGridEntityDetails.RecordsGuid;
//    }
//    else {
//        EntityDetails.Name = parent.Xrm.Page.data.entity.getEntityName();
//        EntityDetails.RecordsGuidArray = [parent.Xrm.Page.data.entity.getId()];
//    }

//    if (_defaultFilterXml == null || _defaultFilterXml == '' || _defaultFilterXml == undefined)
//        return;

//    var length = EntityDetails.RecordsGuidArray.length;
//    var counter = false;

//    //-newly added Pranit for removing condition element from xml
//    var flag = false;
//    if (parent.Xrm.Page.context.client != undefined || parent.Xrm.Page.context.getServerUrl == undefined) {
//        if (IsOnlineCrm(parent.Xrm.Page.context)) {
//            y = _xml.getElementsByTagName("condition")[0];

//            if (_xml.getElementsByTagName("condition").length == 1) {
//                _xml.getElementsByTagName("filter")[0].removeChild(y);
//                //_xml.documentElement.firstChild.childNodes[0].childNodes[0].childNodes[1].removeChild(y);
//            }
//        }
//    }
//    //-newly added Pranit for removing condition element from xml

//    if (_xml.getElementsByTagName("filter").length == 0) {
//        var _newFilter = _xml.createElement("filter");
//        _newFilter.setAttribute("type", "and");
//        var e = _xml.getElementsByTagName("entity")[0];
//        e.appendChild(_newFilter);

//        var _newcondition = _xml.createElement("condition");
//        _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
//        _newcondition.setAttribute("operator", 'in');
//        var e = _xml.getElementsByTagName("filter")[0];
//        e.appendChild(_newcondition);
//    }

//    //-newly added by Pranit for adding condition with new attribute and value element in xml
//    if (parent.Xrm.Page.context.client != undefined || parent.Xrm.Page.context.getServerUrl == undefined) {
//        if (IsOnlineCrm(parent.Xrm.Page.context)) {
//            if (_xml.getElementsByTagName("condition").length == 0) {
//                var _newcondition = _xml.createElement("condition");
//                _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
//                _newcondition.setAttribute("operator", 'in');
//                var e = _xml.getElementsByTagName("filter")[0];
//                e.appendChild(_newcondition);

//                for (var i = 0; i < length; i++) {
//                    var newel = _xml.createElement("value");
//                    newel.setAttribute("uitype", EntityDetails.Name);
//                    newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
//                    _newcondition.appendChild(newel);
//                }
//                flag = true;
//            }
//        }
//    }
//    //-newly added by Pranit for adding condition with new attribute and value element in xml


//    if (_xml.getElementsByTagName("condition").length == 0) {
//        var _newcondition = _xml.createElement("condition");
//        _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
//        _newcondition.setAttribute("operator", 'in');
//        var e = _xml.getElementsByTagName("filter")[0];
//        e.appendChild(_newcondition);
//    }

//    else {
//        for (var i = 0; i < _xml.getElementsByTagName("condition").length; i++) {
//            tem = _xml.getElementsByTagName("condition")[i];


//            if (flag == false) {//--newly added by pranit 
//                //WORKING in chrome//if (tem.hasAttribute("attribute") && tem.getAttribute("attribute") == EntityDetails.Name + "id")
//                if ((tem.getAttribute("attribute") == null)
//                    && tem.getAttribute("attribute") == EntityDetails.Name + "id") {
//                    y = tem.getAttributeNode("operator");
//                    y.nodeValue = "in";

//                    for (var i = 0; i < length; i++) {
//                        var newel = _xml.createElement("value");
//                        newel.setAttribute("uitype", EntityDetails.Name);
//                        newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
//                        tem.appendChild(newel);
//                    }
//                    counter = true;
//                }
//            }
//        }

//        if (!counter) {
//            if (flag == false) {//--newly added
//                var _newcondition = _xml.createElement("condition");
//                _newcondition.setAttribute("attribute", EntityDetails.Name + 'id');
//                _newcondition.setAttribute("operator", 'in');
//                var e = _xml.getElementsByTagName("filter")[0];
//                e.appendChild(_newcondition);

//                for (var i = 0; i < length; i++) {
//                    var newel = _xml.createElement("value");
//                    newel.setAttribute("uitype", EntityDetails.Name);
//                    newel.appendChild(_xml.createTextNode(EntityDetails.RecordsGuidArray[i]));
//                    _newcondition.appendChild(newel);
//                }
//            }
//        }
//    }

//    //Cleanup START
//    if (_xml.getElementsByTagName("condition").length > 1) {
//        for (var e = 0; e < _xml.getElementsByTagName("condition").length; e++) {
//            tem = _xml.getElementsByTagName("condition")[e];

//            //If condition dont contain "value" attribute AND IF condition dont contain child node value
//            if (tem.getAttribute('value') == null && tem.childNodes.length == 0) {
//                tem.parentNode.removeChild(tem);
//                //tem.remove(); // this statement not working in old IE
//            }
//        }
//    }
//    //Cleanup

//    if (_xml.xml != undefined && _xml.xml != null)
//        return _xml.xml;
//    else
//        return new XMLSerializer().serializeToString(_xml);
//}

//function PostOpperationRibbon(_downloadPath) {
//    var action = HomeGridEntityDetails.Action;
//    switch (action) {
//        case ActionType.SAVE:
//        case ActionType.OPEN:
//            window.location.href = _downloadPath;
//            break;
//        case ActionType.ATTACH_EMAIL:
//        case ActionType.SAVE_NOTES:
//            CallSilverlight(_downloadPath);
//            break;
//        default:
//            Log(_downloadPath);
//            break;
//    }
//}
*/