﻿/// <reference path="../Base/Ajax_0911/MicrosoftAjaxTemplates.js" />
/// <reference path="../Base/Ajax_0911/Start.js" />

var isAjaxFired = false;    // in ZZV needed to handle slider behavior
var startedWithCompQString = true;
var alertMsg = true;

var MainResult = null;
var PagerInfo = null;
var QueryString = null;

var instanceResultList = null;
var instanceComparisonList = null;

function MainResultAjaxCall(data, errorJumpBackURL) {
    isAjaxFired = true;

    // See Html.RenderPartial("~/Views/Shared/UIControls/ResultNavigation.ascx")
    handleResultNavigation();

    ShowLoading();
    ClearDisplayedErrors();

    $(".emailResultDiv input").attr("disabled", "disabled");    // disable complete SendEmail region
    $(".fieldValid").html("");              // Cleaning earlier (error or ok) responses text from SendEmail ajax calls
    HandleEmailButtonAndLoadingGif(false);  // false = Show button "Liste versenden" and hide "Loading.gif"

    var url = computeAbsoluteAjaxURL("GetResult");    // see GeneralScript.js

    $.ajax({
        type: "POST",
        url: url,               // "GetFilteredResult",
        data: data,             // jsonform, // { filter: jsonform, pageNumber: pageNumber },
        dataType: "json",
        success: function (result) {
            clog(result);
            if (result.Errors == null) {
                //alert("ajax success");
                QueryString = removePrefillAttributesInQueryStr(data.querystr);
                MainResult = result;
                PagerInfo = result.PagerInfo;

                runSetupAndInitializeComparisonOnlyOnce = false;        // resetting
                setUpResultPage("resultList", "comparisonList", 1, true);       // last "true" is "isRecalc" value. When value true -> "no jump to top"!
                if (result.ResultList.length > 0) {
                    $("#NoResultsFound").hide();
                    $(".emailResultDiv input").removeAttr("disabled");  // Enabling complete SendEmail region
                }
                else
                    $("#NoResultsFound").show();
            } else {
                DisplayResultValidationMessage(result);
                HideFakeTariffs();
                HideLoading();
                $(".emailResultDiv input").removeAttr("disabled");      // Enabling complete SendEmail region
            }
            isAjaxFired = false;
            MOTSpecialCase();
        },
        error: function (xhr, textStatus, errorThrown) {
            HideLoading();
            $(".emailResultDiv input").removeAttr("disabled");  // Enabling complete SendEmail region
            isAjaxFired = false;

            //var repURL = errorJumpBackURL.replace(/&amp;/g, '&');
            //window.location = repURL;   // this will return with a URL that has "&" (which works) and not "&amp;" (which looses our query string tokens such as wp=).

            window.location = errorJumpBackURL;   // the above two lines are no longer needed as we now have an HttpModule to rewrite the URL berfore session begin (see project URLRewriter).
        }
    });
}

function MOTSpecialCase() {
    if (typeof handlePaymentMode == 'function')
        handlePaymentMode();
 }

 function removePrefillAttributesInQueryStr(queryStr) {
    if ((queryStr == null) || (queryStr == ''))
        return queryStr;

    var attr = queryStr.split("&");
    
    if (attr.length < 1)
        return queryStr;

    // 'calc', 'c24trjob' and 'testsieger' must be removed for "direct jump to resul site".
    var remove = ['prefill=', 'inD_', 'inP_', 'inA_', 'inPF_', 'inIP_', 'inIPA_', 'calc', 'c24trjob', 'testsieger'];

    var cleanedQueryStr = '';
    for (var i = 0; i < attr.length; i++) 
    {
        var takeIt = true;
        for (var b = 0; b < remove.length; b++)
        {
            if (startsWith(attr[i], remove[b], true)) {
                takeIt = false;
                break;
            }
        }

        if (takeIt) {
            if (cleanedQueryStr.length == 0)
                cleanedQueryStr = attr[i];
            else
                cleanedQueryStr = cleanedQueryStr + '&' + attr[i];
        }
    }
    return cleanedQueryStr;
 }

function getQuerystring(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

function ShowLoading() {
    if ($("#panel_comparison:visible").length > 0) {
        // simulate click on resultList tab
        $("#for_resultList").click();
    }

    if (MainResult != null) {
        if (MainResult.ResultList.length == 0) {
            $("#fakeResultList").show();    // Show the loading.gif
            $("#NoResultsFound").hide();    // Hide "Keine Ergebnisse für Ihre Angaben verfügbar."
        }
    }

    $(".dialogDiv input, .dialogDiv select, .dialogDiv textarea").attr("disabled", "disabled");
    $("#resultList .insuranceButtonDiv .actionButton").hide();
    $("#resultList .insuranceButtonDiv .loading").show();
}

function HideLoading() {
    $("#Data_Progression_PH").click(); // firefox bug fix
    //$("#Data_s_AmountInsured_PH").focus();


    $("#fakeResultList").hide();    // Hide the loading.gif
    $(".dialogDiv input, .dialogDiv select, .dialogDiv textarea").removeAttr("disabled");
    $("#resultList .insuranceButtonDiv .loading").hide();
    $("#resultList .insuranceButtonDiv .actionButton").show();
}

function ShowFakeTariffLoading() {
    $(".dialogDiv input, .dialogDiv select, .dialogDiv textarea").attr("disabled", "disabled");
    $("#fakeResultList .insuranceButtonDiv .actionButton").hide();
    $("#fakeResultList .insuranceButtonDiv .loading").show();
}

function HideFakeTariffs() {
    $("#fakeResultList").hide("slow");
}

function setUpResultPage(resultListID, comparisonListID, showPageNumber, isRecalc) {
    ShowLoading();
    //alert("setup result page");
    ClearDisplayedErrors();
    // alert(pagerInfo.TotalResults);
    // adjusting the comparison list container width
    var comparisonListContainer = $("#comparisonListContainer");
    if ((comparisonListContainer != null) && (typeof (comparisonListContainer) != "undefined")) {
        // Class "comparisonViewport" is in main css set to 420px but defines three columns.
        // 420/3 = 140 -> use 150 to be on the save side
        comparisonListContainer.width(PagerInfo.TotalResults * 150);
    }
    PagerInfo.CurrentPage = showPageNumber;

    BuildPager(".pagerInfo", ".pagerDiv", "setUpResultPage", resultListID, comparisonListID, PagerInfo);

    BindResultAndComparison(resultListID, comparisonListID, showPageNumber);
    //alert("ok");
    SetupAndInitializeComparison(comparisonListID, MainResult.ResultList);
    HideFakeTariffs();
    HideLoading();

    if (!isRecalc) {
        try {
            forceTopFocus("#panel_resultList"); // sets to top of frame
            window.scrollTo(0, 0);              // scrolls our dialog to top
            $(window).scrollTop();
            $("html").scrollTop();
            document.location.href = "#resultAnchor";   // Jump to anchor
            window.location.href = "#resultAnchor";     // Jump to anchor

            if ((/MSIE (7|8)\.0/.test(navigator.userAgent))) {
                window.parent.scrollTo(0, 0); // iframe: Scrolls the page which hosts the iframe with our dialog to top! 
            }
        }
        catch (ex) {
            //  alert ("ResultScripts.js, error in 'setUpResultPage' catched\r\n" + ex.message);
        }
    }
    
    //If CSS buttons are used, this function re-renders the buttons; Calles only if function is present. (Function is conditionally rendered in master page)
    if (typeof refreshCssButtons != "undefined")
        refreshCssButtons();
}


function BuildPager(pagerInfoXpath, pagerDivXpath, funcName, resultListID, comparisonListID, pagerInfo) {

    var pagerLinksDiv = $(pagerDivXpath);
    if (pagerLinksDiv.length > 0) {
        var pagerLinks = "";
        for (var i = 1; i <= pagerInfo.TotalPages; i++) {
            if (i == pagerInfo.CurrentPage)
                pagerLinks += "<span id='currentpage'>" + i + "</span>&nbsp;";
            else
                pagerLinks += "<a href=\"javascript:;\" onclick=\"" + funcName + "('" + resultListID + "', '" + comparisonListID + "', " + i + ", false);return false;\">" + i + "</a>&nbsp;";
        }
        pagerLinksDiv.html("Seite:&nbsp;" + pagerLinks);
    }

    var pagerInfoDiv = $(pagerInfoXpath);
    var pagerDivTop = $(".pagerDivTop");
    
    
    if (pagerInfoDiv.length > 0) {
        if (pagerInfo != null) {
            var pagerInfoDivString = "";
//            if (pagerInfo.TotalResults == 1)
//                pagerInfoDivString = pagerInfo.TotalResults + " passender von " + pagerInfo.totalActiveTariffs + " Tarifvarianten gefunden " + pagerInfo.resetfilterLink;
//            else
            
            pagerInfoDivString = pagerInfo.TotalResults + " passende von " + pagerInfo.totalActiveTariffs + " Tarifvarianten gefunden " + pagerInfo.resetfilterLink;
            pagerInfoDiv.html(pagerInfoDivString);
            pagerDivTop.html("Seite:&nbsp;" + pagerLinks);
        }
    }
}


function BindResultAndComparison(resultListID, comparisonListID, pageNumber) {
    var resultData = MainResult.ResultList;     // All results, but no PagerInfo

    //            (   2      -  1) * 5 = 5
    // showFrom = (pagenumber - 1) * pagerinfo.ResultsPerPage
    // showTo   = from + pagerinfo.ResultsPerPage - 1;    // 5 + 5 - 1 = 9
    //    page   results
    //     1      0,  1,  2, 3, 4
    //     2      5,  6,  7, 8, 9
    //     3     10, 11, 12
    var showFrom = (pageNumber - 1) * PagerInfo.ResultsPerPage;                  // check here for variable results per page based on B2BPartner
    var showTo = showFrom + PagerInfo.ResultsPerPage - 1;
    if (showTo > PagerInfo.TotalResults - 1)
        showTo = PagerInfo.TotalResults - 1;

    var currentDataIndex = (showTo - showFrom) + 1
    var currentData = new Array(currentDataIndex); 
    var n = 0;
    for (var i = showFrom; i <= showTo; i++) {
        currentData[n] = resultData[i];
        n++;
    }

    // Init DataView - http://msdn.microsoft.com/en-us/magazine/ee309508.aspx
    if (instanceResultList == null)
        instanceResultList = new Sys.UI.DataView($get("resultList"));

    instanceResultList.set_data(currentData);       // result list gets only some results, typically 5 or 7
    instanceResultList.refresh();

    if (instanceComparisonList == null) {
        instanceComparisonList = new Sys.UI.DataView($get("comparisonList"));
    }
    instanceComparisonList.set_data(resultData);    // comparison list gets all results
    instanceComparisonList.refresh();

    runSetupAndInitializeComparisonOnlyOnce = false;    // important for the comparisionlist ...

    PagerInfo.logResultError = false;
    
    // Binding the correct (seven) buttons - loop needed for the result list!
    var n = -1;
    for (var i = showFrom; i <= showTo; i++) {
        n++;
        BindActionChoiceButton(n, resultData[i].Result_GUID, resultListID, comparisonListID);
        BindScore(n, resultData[i].Score);
        BindHoverDiv(n, resultData[i].CriteriaOverlayData, resultListID, resultData[i].CriteriaOverlayHtml);
        BindImageHover(resultData[i]);
    }

    RemoveActionButtons();
    RebindResultTooltips(resultListID);
}

function BindActionChoiceButton(i, actionGuid, resultListID, comparisonListID) {
    var fxn = function () {
        var main = "";
        if ((QueryString) && (QueryString != ""))
            main = 'ActionChoice?result=' + actionGuid + "&" + QueryString;
        else
            main = 'ActionChoice?result=' + actionGuid;

        var pathWithoutQueryString = location.href.split("?")[0];
        var pathArrayWithout_resultAnchor = pathWithoutQueryString.split("#")[0];
        var pathArray = pathArrayWithout_resultAnchor.split("/");
        var pathWithoutPageName = pathArray[0] + "//" + pathArray[2] + "/" + pathArray[3] + "/" + pathArray[4];
        var pageName = location.pathname.split("/")[3];
        if (typeof (pageName) == 'undefined')
            location.href = pathWithoutPageName + "/" + main;
        else
            location.href = main;
        return false;
    } 
    $("#" + resultListID + " #Result" + i + " .insuranceButtonDiv input").bind("click", fxn);
    $("#" + comparisonListID + " #Result" + i + " .actionButtonWrapper input").bind("click", fxn);
}

function BindScore(i, score) {
    function GetClasses(score) {
        var classes = new Array();
        classes[0] = (score >= 2 ? "full" : (score >= 1 ? "half" : ""));
        classes[1] = (score >= 4 ? "full" : (score >= 3 ? "half" : ""));
        classes[2] = (score >= 6 ? "full" : (score >= 5 ? "half" : ""));
        classes[3] = (score >= 8 ? "full" : (score >= 7 ? "half" : ""));
        classes[4] = (score >= 10 ? "full" : (score >= 9 ? "half" : ""));
        return classes;
    }

    var classes = GetClasses(score);
    var scoreHtml = //"Score: " + Score +
        "<span class=\"" + classes[0] + "\"></span>"
        + "<span class=\"" + classes[1] + "\"></span>"
        + "<span class=\"" + classes[2] + "\"></span>"
        + "<span class=\"" + classes[3] + "\"></span>"
        + "<span class=\"" + classes[4] + "\"></span>";
    $("#Result" + i + " .starBox").html(scoreHtml);
}

function BindHoverDiv(i, statData, resultListID, overlayHtml) {
    ////bind stats to hoverDivWrappers
    //var stats = "";
    //for (var j = 0; j < statData.length; j++) {
    //    stats += //
    //        "<tr" + (j == statData.length - 1 ? " class=\"lastRow\"" : "") + ">"
    //            + "<td class=\"critText\">" + statData[j].DisplayedName + ": " + statData[j].DisplayedValue + "</td>"
    //            + "<td class=\"critVal\">" + statData[j].Score + " von " + statData[j].PerfectScore + "</td>"
    //        + "</tr>";
    //}
    //$("#" + resultListID + " #Result" + i + " .hoverDivWrapper fieldset.stats table tbody").html(stats);


    if (!overlayHtml) {
        overlayHtml = "No details available.";
    }

    //bind html to hoverDivWrapper
    $("#resultList #Result" + i + " .hoverDivWrapper").html(overlayHtml);

    //bind hoverDivWrapper to hoverControls
    var hoverDivWrapperID = "#resultList #Result" + i + " .hoverDivWrapper";
    $("#" + resultListID + " #Result" + i + " .jtooltip_hoverDiv, #" + resultListID + " #Result" + i + " .jtooltip_hoverDivRight").attr("rel", hoverDivWrapperID);
}

this.imagePreview = function () {
    /* CONFIG */

    xOffset = 10;
    yOffset = 30;


    /* END CONFIG */
    $("a.preview").hover(function (e) {
        $("body").append("<p id='preview'><img src='" + $(this).attr('src') + "' /></p>");
        $("#preview")
			.css("top", (e.pageY - xOffset) + "px")
			.css("left", (e.pageX + yOffset) + "px")
			.fadeIn("fast");
    },
	function () {
	    $("#preview").remove();
	});
    $("a.preview").mousemove(function (e) {
        $("#preview")
			.css("top", (e.pageY - xOffset) + "px")
			.css("left", (e.pageX + yOffset) + "px");
    });
};

function BindImageHover(oneResultData) {
    imagePreview();
    if ((oneResultData.ResultImage1_ID != null) && (oneResultData.ResultImage1_ID != '')) {
        //$("#" + oneResultData.ResultImage1_ID).hover(hoverIn, hoverOut);
        $("#" + oneResultData.ResultImage1_ID).parent().css("display", "block");
        //$("#" + oneResultData.ResultImage1_ID).parent().css('display', 'block');    // make the wrapper div visible
    }

    if ((oneResultData.ResultImage2_ID != null) && (oneResultData.ResultImage2_ID != '')) {
        //$("#" + oneResultData.ResultImage2_ID).hover(hoverIn, hoverOut);
        $("#" + oneResultData.ResultImage2_ID).parent().css("display", "block");
        //$("#" + oneResultData.ResultImage2_ID).parent().css('display', 'block');    // make the wrapper div visible
    }

    if ((oneResultData.ResultImage3_ID != null) && (oneResultData.ResultImage3_ID != '')) {
        //$("#" + oneResultData.ResultImage3_ID).hover(hoverIn, hoverOut);
        $("#" + oneResultData.ResultImage3_ID).parent().css("display", "block");
        //$("#" + oneResultData.ResultImage3_ID).parent().css('display', 'block');    // make the wrapper div visible
    }
}

var isResultImageAnimationRunning = false;
function hoverIn() { 
    if (isResultImageAnimationRunning)
        return;
    isResultImageAnimationRunning = true;
    changeResultImageSize(this, 2);
}
function hoverOut() {
    changeResultImageSize(this, 1);
   
}

function changeResultImageSize(sender, factor) {
    var hiddenFieldWidth = $("#" + sender.id + "_hiddenWidth");
    if (typeof (hiddenFieldWidth) == 'undefiend')
        return;
    var hiddenFieldWidthValue = parseInt(hiddenFieldWidth.val());


    var hiddenFieldHeight = $("#" + sender.id + "_hiddenHeight");
    if (typeof (hiddenFieldHeight) == 'undefiend')
        return;
    var hiddenFieldHeightValue = parseInt(hiddenFieldHeight.val());

    //$(sender).css("width" , hiddenFieldWidthValue  * factor + "px");
    //$(sender).css("height", hiddenFieldHeightValue * factor + "px");

    $(sender).animate({
        width:  hiddenFieldWidthValue  * factor,
        height: hiddenFieldHeightValue * factor
    }, 800, function () {
        // Animation complete.
        isResultImageAnimationRunning = false;
    });

}

var currentView = "";
function Navigate(sender, setCssOnClick) {
    var senderID = $(sender).attr("id");

    if (setCssOnClick) {
        $("ul.resultNav li").removeClass("imageComparisonCurrent");            // remove the image comparison class so that we can switch it to the tab which is now lo longer current
        $("ul.resultNav li").removeClass("imageComparisonIdle");            // remove the image comparison class so that we can switch it to the tab which is now lo longer current
        $("ul.resultNav li").removeClass("imageResultCurrent");                // remove the image comparison class so that we can switch it to the tab which is now lo longer current
        $("ul.resultNav li").removeClass("imageResultIdle");                // remove the image comparison class so that we can switch it to the tab which is now lo longer current

        if (setCssOnClick == "resultlist") {
            // result was clicked so it will become current after this click!
            $("#li_result").addClass("imageResultCurrent");
            $("#li_comparison").addClass("imageComparisonIdle");
        }
        else {
            // comparison was clicked so it will become idle after this click!
            $("#li_result").addClass("imageResultIdle");
            $("#li_comparison").addClass("imageComparisonCurrent");
        }
    }

    $("ul.resultNav li").removeClass("current");
    $("ul.resultNav li a#" + senderID).parent().addClass("current");

    if (senderID == "for_resultList") {

        if (currentView == "resultList")
            return;
        currentView = "resultList";

        $("#panel_resultList").fadeIn();
        $("#panel_comparison").hide();
        setUpResultPage('resultList', 'comparisonList', PagerInfo.CurrentPage, true); 
        ResetComparison();
    } else if (senderID == "for_comparison") {
        
        if (currentView == "comparisonList")
            return;
        currentView = "comparisonList";

        SetupAndInitializeComparison("comparisonList", MainResult.ResultList);
        runSetupAndInitializeComparisonOnlyOnce = false;

        // Binding ALL buttons - loop needed for the comparison list!
        var resultData = MainResult.ResultList; // All results, but no PagerInfo
        for (var i = 0; i < resultData.length; i++) {
            BindActionChoiceButton(i, resultData[i].Result_GUID, "resultList", "comparisonList");
            BindScore(i, resultData[i].Score);
            BindHoverDiv(i, resultData[i].CriteriaOverlayData, "resultList", resultData[i].CriteriaOverlayHtml);
        }
        
        $("#panel_comparison").fadeIn();
        $("#panel_resultList").hide();
    }

    //If CSS buttons are used, this function re-renders the buttons; Calles only if function is present. (Function is conditionally rendered in master page)
    if (typeof refreshCssButtons != "undefined") {
        refreshCssButtons();
    }

}

function RebindResultTooltips(resultListID) {
    var topVal = $(".hoverDivWrapper").first().height() / -2;

    $("#" + resultListID + " .jtooltip_hoverDiv").tooltip({
        delay: 0,
        track: true,
        /*fade: 3000,*/
        opacity: 1,
        top: topVal,
        left: -15,
        positionLeft: true,
        fixPNG: true,
        showURL: false,
        bodyHandler: function () {
            var title = $(this).attr("rel");
            return $(title).html();
        }
    });
    $("#" + resultListID + " .jtooltip_hoverDivRight").tooltip({
        delay: 0,
        track: true,
        /*fade: 250,*/
        opacity: 1,
        top: topVal,
        left: 15,
        fixPNG: true,
        showURL: false,
        bodyHandler: function () {
            var title = $(this).attr("rel");
            return $(title).html();
        }
    });
}

//should be called after BindResultAndComparison
var runSetupAndInitializeComparisonOnlyOnce = false;
function SetupAndInitializeComparison(comparisonListID, resultData) {
    if (runSetupAndInitializeComparisonOnlyOnce)
        return;
    runSetupAndInitializeComparisonOnlyOnce = true;
    
    if (resultData.length > 0 && resultData[0].CriteriaComparisonData.length > 0) {
        $(".comparisonHeader .criteriaSection").html("");
        var criteriaGroupCount = resultData[0].CriteriaComparisonData.length;
        for (var i = 0; i < resultData[0].CriteriaComparisonData.length; i++) {
            var criteriaInThisGroupCount = resultData[0].CriteriaComparisonData[i].CompHeaderCriteria.length;
            var className = resultData[0].CriteriaComparisonData[i].HeaderClassName;

            //setup ComparisonHeader
            var criteriaSectionLocation = ".comparisonHeader .criteriaSection";
            if (criteriaGroupCount > 1) {
                $(criteriaSectionLocation).append(
                    "<div class=\"" + className + "\">"
                        + "<span class=\"section_min section_toggler\" onclick=\"ToggleBar('" + className + "');\">"
                            + "<img src=\"/Resources/Images/Button/comparison_minimizeGroup.gif\">"
                        + "</span>"
                        + "<span class=\"section_max section_toggler\" onclick=\"ToggleBar('" + className + "');\" style=\"display: none;\">"
                            + "<img src=\"/Resources/Images/Button/comparison_maximizeGroup.gif\">"
                        + "</span>"
                        + "<span class=\"criteriaHeader\">"
                            + resultData[0].CriteriaComparisonData[i].DisplayedHeaderName
                        + "</span>"
                    + "</div>"
                );
                criteriaSectionLocation += " ." + className;
            }
            for (var k = 0; k < criteriaInThisGroupCount; k++) {
                $(criteriaSectionLocation).append(
                    "<div class=\"criteriaDiv\">" + resultData[0].CriteriaComparisonData[i].CompHeaderCriteria[k].DisplayedName + "</div>"
                );
            }

            // Now, for the PDF Links we need one more row/cell in the DisplayedName Column. "Bedingungen"
            if (i + 1 == resultData[0].CriteriaComparisonData.length) {
                $(criteriaSectionLocation).append(
                    "<div class=\"criteriaDivBedingung\">Bedingungen<br /><br /></div>"
                );
            }
            //


            //setup ResultComparisonColumns
            for (var j = 0; j < resultData.length; j++) {
                var thisCriteriaSectionLocation = "#" + comparisonListID + " #Result" + j + " .criteriaSection";
                if (criteriaGroupCount > 1) {
                    $(thisCriteriaSectionLocation).append(
                        "<div class=\"" + className + "\">&nbsp;</div>"
                    );
                    thisCriteriaSectionLocation += " ." + className;
                }
                for (var l = 0; l < criteriaInThisGroupCount; l++) {
                    var condText = "";
                    if (resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].ExtraInformation != "") {
                        condText = //
                            "<div class=\"infoIndicator\">"
                                + "<span>Hinweis</span>"
                            + "</div>"
                            + "<div class=\"infoText\">"
                                + resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].ExtraInformation
                            + "</div>";
                        //$(thisCriteriaSectionLocation).addClass("jtooltip_hover");
                        $(thisCriteriaSectionLocation).append(
                            "<div class=\"criteriaDiv jtooltip_hover\">"
                                + resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].DisplayedValue
                                + condText
                                + "<span style=\"display: none;\" class=\"SingleCriteria\">" + resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].Comparator + "</span>"
                            + "</div>"
                        );
                    } else {
                        $(thisCriteriaSectionLocation).append(
                            "<div class=\"criteriaDiv\">"
                                + resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].DisplayedValue
                                + condText
                                + "<span style=\"display: none;\" class=\"SingleCriteria\">" + resultData[j].CriteriaComparisonData[i].CompHeaderCriteria[l].Comparator + "</span>"
                            + "</div>"
                        );
                    }
                }

                //
                // now set the PDF Links for each result (resultData[j])
                if (i + 1 == resultData[0].CriteriaComparisonData.length) {
                    var pdfLinksDiv = "<div class=\"criteriaDivLinks\">";
                    //pdfLinksDiv = pdfLinksDiv + "<a href=\"" + resultData[j].pdfURL1 + "\" target='_blank' title='" + resultData[j].tooltipURL1 + "'>" + resultData[j].textURL1 + "</a><br /><br />";
                    pdfLinksDiv = pdfLinksDiv + "<a target=\"_blank\" title=\"" + resultData[j].tooltipURL1 + "\" href=\"" + resultData[j].pdfURL1 + "\" onclick=\"window.open(this.href, 'popup', 'width=580,height=360,scrollbars=yes,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10'); return false;\" id=\"ViewPDF\">" + resultData[j].textURL1 + "</a><br /><br />";

                    if (resultData[j].pdfURL2 != null)
                        pdfLinksDiv = pdfLinksDiv + "<a target=\"_blank\" title=\"" + resultData[j].tooltipURL2 + "\" href=\"" + resultData[j].pdfURL2 + "\" onclick=\"window.open(this.href, 'popup', 'width=580,height=360,scrollbars=yes,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10'); return false;\" id=\"ViewPDF\">" + resultData[j].textURL2 + "</a><br /><br />";
                    else
                        pdfLinksDiv = pdfLinksDiv + "<br /><br />";
                    if (resultData[j].pdfURL3 != null)
                        pdfLinksDiv = pdfLinksDiv + "<a target=\"_blank\" title=\"" + resultData[j].tooltipURL3 + "\" href=\"" + resultData[j].pdfURL3 + "\" onclick=\"window.open(this.href, 'popup', 'width=580,height=360,scrollbars=yes,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10'); return false;\" id=\"ViewPDF\">" + resultData[j].textURL3 + "</a><br /><br />";
                    else
                        pdfLinksDiv = pdfLinksDiv + "<br /><br />";
                    if (resultData[j].pdfURL4 != null)
                        pdfLinksDiv = pdfLinksDiv + "<a target=\"_blank\" title=\"" + resultData[j].tooltipURL4 + "\" href=\"" + resultData[j].pdfURL4 + "\" onclick=\"window.open(this.href, 'popup', 'width=580,height=360,scrollbars=yes,toolbar=no,status=no,resizable=yes,menubar=no,location=no,directories=no,top=10,left=10'); return false;\" id=\"ViewPDF\">" + resultData[j].textURL4 + "</a><br /><br />";
                    else
                        pdfLinksDiv = pdfLinksDiv + "<br /><br />";

                    pdfLinksDiv = pdfLinksDiv + "<br /></div>";
                    $(thisCriteriaSectionLocation).append(pdfLinksDiv);
                }
                // end of PDF Links
            }
        }
    }
    InitializeComparison();
    if (startedWithCompQString == true && getQuerystring("comp", "false") == "true") {
        HideFakeTariffs();
        Navigate($("#for_comparison"), false);
        startedWithCompQString = false;
    }
    else {
        Navigate($("#for_resultList"), false);
    }
}

function SendEmail(productname) {
    $(".emailResultDiv input").attr("disabled", "disabled");
    $(".fieldValid").html("");              // Cleaning earlier (error or ok) responses text from SendEmail ajax calls
    HandleEmailButtonAndLoadingGif(true);   // true = Hide button "Liste versenden" and show "Loading.gif"

    var url = "SendEmail";
    if ((productname != null) && (productname.toLowerCase() != "")) {
        var lowerURL = document.URL.toLowerCase();
        if ((lowerURL.indexOf("/input1") == -1) && (lowerURL.indexOf("/result") == -1)) // Add productname only when URL does not ends with /Input1 or /Result (case for rhv)
            url = productname.toLowerCase() + "/SendEmail";
    }
   
    $.ajax({
        type: "POST",
        url: url,   // "SendEmail" or for example "rhv/SendEmail"
        data: { Email: $("#Data_Email").val() },
        success: function (result) {
            $(".emailResultDiv input").removeAttr("disabled");

            DisplaySendEmailValidationMessage(".fieldValid", result);
            HandleEmailButtonAndLoadingGif(false);  // false = Show button "Liste versenden" and hide "Loading.gif"
        },
        error: function (xhr, textStatus, errorThrown) {
            $(".emailResultDiv input").removeAttr("disabled");
            HandleEmailButtonAndLoadingGif(false);  // false = Show button "Liste versenden" and hide "Loading.gif"
        },
        dataType: "json"
    });
}

function HandleEmailButtonAndLoadingGif(show) {
    if (show) {
        $("#sendEmailButton").css('display', 'none');       // Hide button "Liste versenden"
        $("#sendEmailLoadingGif").css('display', 'block');  // Show "Loading.gif"
    }
    else {
        $("#sendEmailButton").css('display', 'block');      // Hide button "Liste versenden"
        $("#sendEmailLoadingGif").css('display', 'none');   // Show "Loading.gif"
    }
}

function DisplayResultValidationMessage(validationdata) {
    var currentresult; 
    var targetValidationElement;
    for(var i = 0; i < validationdata.Errors.length; i++)
    {
        currentresult = validationdata.Errors[i];
        if (validationdata) {
            targetValidationElement = $("#" + currentresult.ElementID);
            targetValidationElement.html(currentresult.ErrorMessage);
        }
    }

    if (validationdata.Errors.length > 0)
        $("#valSummary").css('display', 'block');   // Show error summary
}

function DisplaySendEmailValidationMessage(outputXpath, resultData) {
    var outputDiv = $(outputXpath);
    if (outputDiv.length > 0) {
        outputDiv.removeClass("successText field-validation-error");
        outputDiv.html(resultData.Message)
        if (!resultData.IsValid) {
            outputDiv.addClass("field-validation-error");
        } else {
            outputDiv.addClass("successText");
            if (!resultData.Message)
                outputDiv.html("Ihr Ergebnis wurde an die von Ihnen angegebene E-Mail-Adresse gesendet.")
        }
    }
}

function ClearDisplayedErrors() {
    $("#valSummary").css('display', 'none');   // Hide error summary
    $(".resultValidationMessage").html("");
    
}

function RemoveActionButtons() {
    // resultlist
    $(".insuranceButtonDiv .NoAction").each(function () {
        clog(this);
        var value = $(this).val();
        if (value == "true") {
            $(this).parent().html("Angebot/Abschluss<br/>nicht möglich");
        }
    });

    // comparison list
    $(".actionButtonWrapper .NoAction").each(function () {
        clog(this);
        var value = $(this).val();
        if (value == "true") {
            $(this).parent().html("<div style=\"padding-top: 10px;\">Angebot/Abschluss<br/>nicht möglich</div>");
        }
    });
}

function checkEnterResultPage(e) {
    if (e.which == 13) {
        $("#SendResultEmail").click();
        return false;
    }
    avoidJSInjection(this);
    return true;
}

