﻿/// <reference path="ext-base.js" />
/// <reference path="ext-all.js" />

var requestId = Ext.getUrlParam('id');
if (requestId == undefined)
    requestId = getCookie("guestRequestId");
var updateReport = function() { };
var onCompetitorAdd = function() { };
var onSavedReportAdd = function() { };
var onReportReady = function() { };
var reportTabs = new Array();
var defaultPageSize = 20;
var adRenderer = function() { };
var seRenderer = function() { };
var posRenderer = function() { };
var organicPosRenderer = function() { };
var isKeywordReport;
var reportObjectName;

var taskRunnerMember;
var searchingMask;

var updateReportTask = {
    run: function() { updateReport(); },
    interval: 10000 //10 seconds
};

function findGridComponent(items) {
    for (var i = 0; i < items.length; i++) {

        if (items[i].store) {
            return items[i];
        }
    }

    return null;
}

function AddGridToPdf(reportInfo, grid, title, baseParams) {
    var tableColumns = [];

    for (var i = 0; i < grid.colModel.config.length; i++) {
        var column = grid.colModel.config[i];

        if (column.hidden || column.dataIndex == '') {
            continue;
        }

        tableColumns.push(column.dataIndex + ',' + column.header + ',' + column.width);
    }

    var columnInfo = tableColumns.join(';');

    var sortInfo = '';
    if (grid.store.sortInfo != null) {
        sortInfo = grid.store.sortInfo.field + ' ' + grid.store.sortInfo.direction;
    }

    var tableInfo = title + ',' + sortInfo;

    reportInfo.push(tableInfo + '=' + columnInfo);

    for (var o in grid.store.baseParams) {
        baseParams[o] = grid.store.baseParams[o];
    }
}

function EmailPdf(tabPanelId) {
     var emailPdfForm = new Ext.form.FormPanel({
        url: '',
        region: 'center',
        width: 350,
        border: false,
        monitorValid: true,
        monitorPoll: 250,
        margins: '3 0 3 3',
        cmargins: '3 3 3 3',
        labelWidth: 70,
        bodyStyle: 'background: #EDD4C3; padding-top: 10px; padding-left: 5px;',
        defaults: { width: 240 },
        defaultType: 'textfield',
        items: [{
            fieldLabel: 'Email',
            name: 'email',
            allowBlank: false,
            vtype: 'email'
        }, {
            fieldLabel: 'Comment',
            name: 'comment'
        }, {
            fieldLabel: 'File Name',
            name: 'fileName',
            allowBlank: false,
            value: 'report.pdf'
        }],
        buttons: [{
            text: 'Send',
            handler: function() {
                if (!ValidateForm(emailPdfForm)) {
                    return;
                }
                var email = trimBoth(emailPdfForm.getForm().findField('email').getValue());
                var filename = emailPdfForm.getForm().findField('fileName').getValue();
                var comment = emailPdfForm.getForm().findField('comment').getValue();
                SaveToPdf(tabPanelId, email, filename, comment);
                emailPdfWindow.hide();
            }
        }, {
            text: 'Cancel',
            handler: function() {
                emailPdfWindow.hide();
            }
        }]
    });

    var emailPdfWindow = new Ext.Window({
        title: 'Email Report',
        closable: true,
        width: 350,
        height: 160,
        plain: true,
        layout: 'border',
        modal: true,
        resizable: false,
        items: [emailPdfForm]
    });

    emailPdfWindow.show();
}

function SaveToPdf(tabPanelId, email, txt, comment) {
    var domainsTree = Ext.getCmp('domainsTree');
    var treeNodeId = -1;
    var isMonitoringTab = false;

    if (domainsTree) {
        treeNodeId = domainsTree.getSelectionModel().getSelectedNode().id;
        isMonitoringTab = true;
    }

    var tabPanel = Ext.getCmp(tabPanelId);

    var reportInfo = [];

    var baseParams = {};

    for (var t = 0; t < tabPanel.items.items.length; t++) {
        var tab = tabPanel.items.items[t];

        if (tabPanel.getTabEl(tab).style.display == 'none' ||
            tabPanel.getTabEl(tab).className.trim() != 'x-tab-strip-active') {
            continue;
        }

        var grid = findGridComponent(tab.items.items);

        AddGridToPdf(reportInfo, grid, tab.title, baseParams);
    }

    var baseParamList = [];
    
    for (var o in grid.store.baseParams) {
        baseParamList.push(o + '=' + baseParams[o]);
    }

    if (txt == null) {
        txt = 'report.pdf';
    }

    var urlParams = (email ? 'emailPdf' : 'getPdf') + '=true' +
        '&treeNodeId=' + treeNodeId +
        '&filename=' + escape(txt) +
        (email ? '&emailToSend=' + email : '') +
        '&reportInfo=' + reportInfo.join('|') +
        '&' + baseParamList.join('&') +
        '&gmtOffset=' + escape(new Date().getGMTOffset(true)) +
        '&comment=' + comment + '&isMonitoringTab=' + 
        isMonitoringTab;

    if (!email) {
        window.location.href = 'PdfHandler.ashx?' + urlParams;
    } else {
        Ext.Msg.wait('Sending...', 'Please wait...');
        Ext.Ajax.request({
            url: 'PdfHandler.ashx?' + urlParams,
            success: function(result) {
                if (Ext.decode(result.responseText).success)
                    Ext.Msg.alert('Information', 'Report was successfully sent.');
                else
                    Ext.Msg.alert('Error', 'Cannot send the report.');
            },
            failure: function() { Ext.Msg.alert('Error', 'Cannot send the report.'); }
        });
    }
}

///

var initialized = false;

Ext.onReady(function() {

    var tabsIds = [
        'report-tabs__summaryTab',
        'report-tabs__paidTab',
        'report-tabs__organicTab',
        'report-tabs__competitorTab',
        'report-tabs__adsTab'
    ];

    if (!initialized) {

        for (var i = 0; i < tabsIds.length; i++) {

            Ext.fly(tabsIds[i]).addListener('click', function() {
                for (var j = 0; j < tabsIds.length; j++) {
                    //tabs[j].addClass('x-display-hide');
                    Ext.fly(tabsIds[j]).removeClass('x-tab-strip-active');

                    var content = Ext.fly(tabsIds[j].split('__')[1]);
                    if (content != null) {
                        content.addClass('x-hide-display');
                    }
                }

                Ext.fly(this.toString()).addClass(['x-tab-strip-active']);

                var content = Ext.fly(this.toString().split('__')[1]);
                
                if (content != null) {
                    content.removeClass('x-hide-display');
                }
                
            } .createDelegate(tabsIds[i]));
        }
        
        

        initialized = true;
    }

});
