var loading_result_details = '<center><img src="loading.gif" /><h4>Die Markendetails werden geladen.</h4></center>';
var loading_result_list = '<center><img src="loading.gif" /><h4>Die Übersicht der Ergebnisse wird geladen.</h4></center>';

var inquiryresult_help = '<table id="result_details" class="listing"><tr><th>Was ist zu beachten?</th></tr>' +
                         '<tr><td><p>Die Nutzung von Namen (und Domains) kann durch registrierte Marken untersagt werden. Pr&uuml;fen Sie, ob Marken zu Ihrem Wunschnamen (Domain) bestehen. Auch &auml;hnliche Namen sind durch Marken gesch&uuml;tzt.</p>' + 
                         '<p>Sie k&ouml;nnen Namen h&auml;ufig trotzdem nutzen, auch wenn Marken existieren. Sie m&uuml;ssen pr&uuml;fen, f&uuml;r welchen Schutzbereich diese Marken registriert sind. Das sehen Sie in den Markendetaildaten anhand der Klassenbeschreibungen. Klicken Sie daf&uuml;r auf den Markennamen in der Liste.</p>' +
                         '<p>Die Einsch&auml;tzung der rechtlichen Risiken kann schwierig sein. Daher empfehlen wir die Beauftragung eines Kurzgutachtens. Unsere Kurzgutachten werden durch einen Fachanwalt für gewerbliche Schutzrechte der Kanzlei A/S/G Rechtsanw&auml;lte GmbH f&uuml;r nur 99,- &euro;<sup>*</sup> inklusive einer Marken-&Auml;hnlichkeitsrecherche erstellt.</p>' + 
                         '<p>Sicherheit f&uuml;r die Namensnutzung erlangen Sie mit dem Aufbau eigener Schutzrechte. Dies k&ouml;nnen Sie &uuml;ber eine Markenanmeldung erreichen.</p></td></tr>' +
                         '<tr><th>Preisnachlass bei Folgeprodukten</th></tr>' +
                         '<td><p>Ausgehend von Markenrecherchen zu allen anderen Produkten werden netto 9,- &euro;<sup>*</sup>, ausgehend vom Kurzgutachten zur Markenanmeldung werden netto 80,- &euro;<sup>*</sup> Preisnachlass gew&auml;hrt.</p><p>Um Aufbauprodukte zu nutzen, ist in der linken Spalte eine &Uuml;bersicht angegeben. Klicken Sie bitte auf die Produktnamen.</p></td></tr></table>';

function requestResultListIfReady() {
    d = doSimpleXMLHttpRequest('tlxinquiryresult_has_result', {} );
    d.addCallback(handleResultListIfReadyResponse);
}

function handleResultListIfReadyResponse(res) {
    logDebug(res.responseText);
    var r = res.responseText;
    resultObj = evalJSON(r);
    if (resultObj.is_ready==1) {
        logDebug('is_ready == 1');
        window.location.href = window.location.href;
    } else {
        logDebug('is_ready == 0');
        callLater(5, requestResultListIfReady);
    };
};

function requestResultList(b_start) {
    getElement('resultList').innerHTML = loading_result_list;
    d = doSimpleXMLHttpRequest('tlxinquiryresult_list_preprocess', {'b_start':b_start} );
    d.addCallback(handleResultListResponse);
}

function handleResultListResponse (res) {
    hideElement("resultList");
    getElement("resultList").innerHTML = res.responseText;
    appear("resultList");
}

function requestResultHelp(sender) {
    hideElement("resultDetails");
    getElement("resultDetails").innerHTML = inquiryresult_help;
    appear("resultDetails", {'queue': 'break'});
}

function requestResultDetails(sender, mid, mna) {
    hideElement("resultDetails");
    getElement("resultDetails").innerHTML = loading_result_details;
    appear("resultDetails", {'queue': 'break'});
    d = doSimpleXMLHttpRequest('tlxinquiryresult_details', {'mid':mid, 'mna':mna} );
    d.addCallback(handleResultDetailsResponse);
}

function handleResultDetailsResponse (res) {
    getElement("resultDetails").innerHTML = res.responseText;
    appear("resultDetails", {'queue': 'break'});
}

function requestSetClassFilter(meta_type, force) {
    if (meta_type=='TLXMarkenmonitoring') {
        opts = {
            'result_filter_classes': getElement('filter_edit').value,
            'result_filter_what':    getElement('result_filter_what').value,
            'result_filter_date':    getElement('result_filter_date').value,
            'result_filter_dateop':  getElement('result_filter_dateop').value
        };
        url = 'tlxinquiryresult_mmfilteroptions';
    } else {
        opts = {'class_filter':getElement('filter_edit').value };
        url  = 'setResultListClassFilter';
    }
    d = doSimpleXMLHttpRequest(url, opts );
    if ((force==true) || (getElement('result_filter_what').value != 'N')) {
        hideElement("resultDetails");
        getElement('resultList').innerHTML = loading_result_list;
        d.addCallback(handleSetClassFilterResponse);
    } else {
        d.addCallback(handleSetClassFilterResponseLite);
    };
}

function handleSetClassFilterResponse (res) {
    requestPortletSimpleFilter();
    requestResultList(0);
}

function handleSetClassFilterResponseLite (res) {
    requestPortletSimpleFilter();
}

function requestPortletSimpleFilter() {
    d = doSimpleXMLHttpRequest('tlxinquiryresult_portlet_simplefilter');
    d.addCallback(handlePortletSimpleFilterResponse);
}

function handlePortletSimpleFilterResponse(res) {
    getElement("portlet_simplefilter").innerHTML = res.responseText;
    hideElement('help_klassenfilter');
    addElementClass(getElement('help_klassenfilter'), "invisible");
    hideElement('mm_help_auswahl');
    addElementClass(getElement('mm_help_auswahl'), "invisible");
    hideElement('mm_help_zeitraum');
    addElementClass(getElement('mm_help_zeitraum'), "invisible");
}

function setResultListSelection(mark_id, importance) {
    d = doSimpleXMLHttpRequest('setResultListSelection', {'mark_id': mark_id, 'importance': importance} );
    d.addCallback(handleSetResultListSelectionResponse);
}

function handleSetResultListSelectionResponse(res) {
    mark_id = res.responseText;
    try {
        getElement('pro_' + mark_id + '-1').checked = true;
        getElement('pro_' + mark_id + '1').checked = false;
        getElement('pro_' + mark_id + '2').checked = false;
        getElement('pro_' + mark_id + '3').checked = false;
    }
    catch (e) {}
};

function showTooltip(tooltipStatus, thisHelpTxt) {
    switch(tooltipStatus) {
        case "show":
            hideElement("tooltip");
            getElement('tooltip').innerHTML = '<dt class="portletHeader">Hilfe</dt><dd class="portletItem odd""><div class="help>"' + 
                                              thisHelpTxt + 
                                              '</div></dd>';
            // blindDown("tooltip", {'queue': 'break'});
            appear("tooltip", {'queue': 'break'});
            break;
        case "hide":
            blindUp("tooltip", {'queue': 'break'});
            break;
    }
}

function sth() {
    showTooltip('hide');
}

function requestResultPDF() {
    opts = formContents(getElement('portlet_pdf'));
    logDebug(serializeJSON(opts));
    d = doSimpleXMLHttpRequest('tlxinquiryresult_pdf', opts);
    d.addCallback(handlePDFResponse);
};

function handlePDFResponse(res) {
    logDebug('handlePDFResponse');
    var r = evalJSON(res.responseText);
    logDebug(serializeJSON(r));
    var Status = r.Status;
    var Message = r.Message;
    
    if (Status == 'success') {
        hideElement('pdf_failure');
        getElement('pdf_success').innerHTML = Message;
        blindDown('pdf_success');
    }
    else {
        hideElement('pdf_success');
        getElement('pdf_failure').innerHTML = Message;
        blindDown('pdf_failure');
    }
};

function requestCSVExport(report_type) {
    getElement('resultDetails').innerHTML = '';
    getElement('resultList').innerHTML = '<center><img src="loading.gif" /><h4>Ihr Bericht wird nun generiert.</h4></center>';
    if (report_type == 'custom') {
        d = doSimpleXMLHttpRequest('createCustomCSVExport');
    }
    else {
        d = doSimpleXMLHttpRequest('createStandardCSVExport');
    }; 
    d.addCallback(handleCSVExportResponse);
    
};

function handleCSVExportResponse(res) {
    // logDebug(res.responseText);
    var r = res.responseText;
    // logDebug(r);
    resultObj = evalJSON(r);
    // logDebug('evaluated JSON string');
    if (resultObj.Status == 'failure') {
        var msg = resultObj.Message;
        getElement('resultList').innerHTML = '<div class="error">' + msg + '</div>';
    }
    else {
        getElement('resultList').innerHTML = '<div class="error"><p>Der CSV-Export wurde generiert.</p><p><a href="'
                                             + resultObj.Url+
                                             '">Download ('
                                             + resultObj.Bytesize +
                                             ')</a></p></div>';
    }
};
