﻿function showResults(selXml) {
    var mf = mainframe.viewerFrame.mapFrame;
    var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	
    var args = '{"a":"' + appName + '","sessionId":"' + sessionId + '","mapName":"' + mapName + '","selection":"' + encodeURIComponent(selXml) + '"}';
    var selResultsJson = calWebService('../mapguide/KaliopaFDOService/Service.asmx/GetSelectionResults', args);
    var fields = ['Id', 'LayerName', 'LayerDescription', 'LayerReports', 'FeatIds', 'FeatIdsCount','LayerIdProperty', 'LayerReportsFormatted'];
    var ds = new Ext.data.Store({
        data: selResultsJson,
        reader: new Ext.data.JsonReader({
            root: 'd.rows',
            totalProperty: 'd.totalRows',
            idProperty: 'Id'
        }, fields)
    });
    showSelectionReports(appName, mapName, sessionId, ds);
}

function showSelectionVariantResults(geom, variant) {
    var mf = mainframe.viewerFrame.mapFrame;
    var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	
    var args = '{"a":"' + appName + '","sessionId":"' + sessionId + '","mapName":"' + mapName + '","geom":"' + encodeURIComponent(geom) + '","variant":"' + variant + '"}';
    var selResultsJson = calWebService('../mapguide/KaliopaFDOService/Service.asmx/GetSelectionVariantResults', args);
    var fields = ['Id', 'LayerName', 'LayerDescription', 'LayerReports', 'FeatIds', 'FeatIdsCount','LayerIdProperty', 'LayerReportsFormatted'];
    var ds = new Ext.data.Store({
        data: selResultsJson,
        reader: new Ext.data.JsonReader({
            root: 'd.rows',
            totalProperty: 'd.totalRows',
            idProperty: 'Id'
        }, fields)
    });
    showSelectionReports(appName, mapName, sessionId, ds);
}

function showSelectionReports(a, mapName, sessionId, ds) {	
    var gridResults = getResultsGrid(ds, a, mapName, sessionId);
	var tb = new Ext.Toolbar({
    items: [
        {
            xtype: 'button',
            text: 'Odpri na novi strani',
			iconCls: 'icon-tree-post',
			handler: repsOnNewPage
        },
        {xtype: 'tbspacer'},		
		{
            xtype: 'button',
            text: 'Excel',
			iconCls: 'icon-page-excel',
			handler: repsExcel
        },
		{
            xtype: 'button',
            text: 'Word',
			iconCls: 'icon-page-word',
			handler: repsWord
        },
		{xtype: 'tbspacer'},
		{
            xtype: 'button',
            text: 'Shrani karto',
			iconCls: 'icon-picture-save',
			handler: saveToImage
        },
		{
            xtype: 'button',
            text: 'Analiza količin',
			iconCls: 'icon-chart',
			handler: analizaKolicin
        }
    ]
	});
	reportTabPanel.removeAll();
    var layerResults = reportTabPanel.add({
        title: '<div style="color: blue">Seznam izbranih elementov</div>',
        iconCls: 'tabs',
		layout: 'fit',
        items: gridResults,
        closable: false,
		tbar: tb
    });
	doLay();	
	reportWindow.show();	
    reportWindow.add(reportTabPanel);
	reportTabPanel.setActiveTab(layerResults);
	//gridResults.doLayout();
	reportTabPanel.doLayout();
	reportWindow.doLayout();
}

function repsOnNewPage()
{
	var grid = reportTabPanel.items.first().items.first();
	if (grid == null) return;
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var p = mf.GetVisiblePodloge();
	var t = mf.GetVisiblePodlogeTransparency();
	var w = mf.mapDevW;
	var h = mf.mapDevH;
	var s = mf.curScale;
	var paramss = new Array(
                        "a", appName,
                        "SESSION", sessionId,
                        "MAPNAME", mapName,
                        "WEBLAYOUT", mf.parent.webLayout,
						"selection", "",
						"p", p,
						"t", t,
						"w", w,
						"h", h,
						"s", s,
                        "SEQ", Math.random());
	var layerIndex = 0;
	grid.store.each(function(record) {
		var lName = record.data.LayerName;
		var featIds = record.data.FeatIds;
		var layReps = record.data.LayerReports;		
		paramss.push("LAYERNAME" + layerIndex);
		paramss.push(lName);
		paramss.push("FEATIDS" + layerIndex);
		paramss.push(featIds);
		paramss.push("LAYERREPORTS" + layerIndex);		
		paramss.push(layReps);
		layerIndex++;
	});	
    var pageUrl = "../KaliopaFDOService/MultiGrid_Show.aspx";
    mf.parent.formFrame.Submit(pageUrl, paramss, "_blank");
}
function repsExcel()
{
	var grid = reportTabPanel.items.first().items.first();
	if (grid == null) return;
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var webLayout = mf.parent.webLayout;
	var p = mf.GetVisiblePodloge();
	var t = mf.GetVisiblePodlogeTransparency();
	var w = mf.mapDevW;
	var h = mf.mapDevH;
	var s = mf.curScale;
	var selection = "";
	var paramss = new Array(
				"a", appName,
				"SESSION", sessionId,
				"MAPNAME", mapName,
				"WEBLAYOUT", webLayout,
				"p", p,
				"t", t,
				"w", w,
				"h", h,
				"s", s,
				"SELECTION", selection,
				"SEQ", Math.random());
	var layerIndex = 0;
	grid.store.each(function(record) {
		var lName = record.data.LayerName;
		var featIds = record.data.FeatIds;
		var layReps = record.data.LayerReports;		
		paramss.push("LAYERNAME" + layerIndex);
		paramss.push(lName);
		paramss.push("FEATIDS" + layerIndex);
		paramss.push(featIds);
		paramss.push("LAYERREPORTS" + layerIndex);		
		paramss.push(layReps);
		layerIndex++;
	});	
	var pageUrl = "../KaliopaFDOService/Export_XLS.aspx";
	mf.parent.formFrame.Submit(pageUrl, paramss, "_self");
}
function repsWord()
{
	var grid = reportTabPanel.items.first().items.first();
	if (grid == null) return;
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var webLayout = mf.parent.webLayout;
	var p = mf.GetVisiblePodloge();
	var t = mf.GetVisiblePodlogeTransparency();
	var w = mf.mapDevW;
	var h = mf.mapDevH;
	var s = mf.curScale;
	var selection = "";
	var paramss = new Array(
				"a", appName,
				"SESSION", sessionId,
				"MAPNAME", mapName,
				"WEBLAYOUT", webLayout,
				"p", p,
				"t", t,
				"w", w,
				"h", h,
				"s", s,
				"SELECTION", selection,
				"SEQ", Math.random());
	var layerIndex = 0;
	grid.store.each(function(record) {
		var lName = record.data.LayerName;
		var featIds = record.data.FeatIds;
		var layReps = record.data.LayerReports;		
		paramss.push("LAYERNAME" + layerIndex);
		paramss.push(lName);
		paramss.push("FEATIDS" + layerIndex);
		paramss.push(featIds);
		paramss.push("LAYERREPORTS" + layerIndex);		
		paramss.push(layReps);
		layerIndex++;
	});	
	var pageUrl = "../KaliopaFDOService/Export_DOC.aspx";
	mf.parent.formFrame.Submit(pageUrl, paramss, "_self");
}
function saveToImage()
{
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var webLayout = mf.parent.webLayout;
	var p = mf.GetVisiblePodloge();
	var t = mf.GetVisiblePodlogeTransparency();
	var w = mf.mapDevW;
	var h = mf.mapDevH;
	var s = mf.curScale;
	var paramss = new Array(
				"SESSION", sessionId,
				"WEBLAYOUT", webLayout,
				"a", appName,
				"p", p,
				"t", t,
				"w", w,
				"h", h,
				"s", s,
				"qm", 1,
				"SEQ", Math.random());
	var pageUrl = "../gis/mojipodatki/PrintDisplay.ashx";
	mf.parent.formFrame.Submit(pageUrl, paramss, "_self");
}

function analizaKolicin()
{
	var grid = reportTabPanel.items.first().items.first();
	if (grid == null) return;
	var TabExists = reportTabPanel.getItem("tabAnalizaKolicin");
    if (TabExists != null) {
        reportTabPanel.setActiveTab(TabExists);
        return;
    }
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var webLayout = mf.parent.webLayout;
	var p = mf.GetVisiblePodloge();
	var t = mf.GetVisiblePodlogeTransparency();
	var w = mf.mapDevW;
	var h = mf.mapDevH;
	var s = mf.curScale;
	var selection = "";
	var paramss = new Array(
				"a", appName,
				"SESSION", sessionId,
				"MAPNAME", mapName,
				"WEBLAYOUT", webLayout,
				"p", p,
				"t", t,
				"w", w,
				"h", h,
				"s", s,
				"SELECTION", selection,
				"SEQ", Math.random());
	var layerIndex = 0;
	grid.store.each(function(record) {
		var lName = record.data.LayerName;
		var featIds = record.data.FeatIds;
		var layReps = record.data.LayerReports;		
		paramss.push("LAYERNAME" + layerIndex);
		paramss.push(lName);
		paramss.push("FEATIDS" + layerIndex);
		paramss.push(featIds);
		paramss.push("LAYERREPORTS" + layerIndex);		
		paramss.push(layReps);
		layerIndex++;
	});	
	var pageUrl = "../KaliopaFDOService/AnalizaKolicin.aspx";
	var pnlAnalizaKolicin = new Ext.Panel({
		id: 'analizaKolicinPanel',
		html: '<div style="width:100%; height:100%" id="analizaKolicinDiv" >'+
			  '<iframe id="analizaKolicinDivFrame" name="analizaKolicinDivFrame" frameborder="no" allowtransparency="true"'+
              ' style="border: 0" src="" width="100%"'+
              ' height="100%"></iframe>'+
			  '</div>',
		layout: 'fit'        
    });
    var tabAnalizaKolicin = reportTabPanel.add({
        id: "tabAnalizaKolicin",
        title: "Analiza količin",
        split: true,
        closable: true,
        layout: 'fit',      
        items: pnlAnalizaKolicin
    });
    reportTabPanel.setActiveTab(tabAnalizaKolicin);
    //reportTabPanel.doLayout();
	//pnlAnalizaKolicin.doLayout();
	mf.parent.formFrame.Submit(pageUrl, paramss, "analizaKolicinDivFrame");
	//pnlAnalizaKolicin.doLayout();
}

function showReports(a, mapName, sessionId, layerName, layerDescription, layerReports, featIds, ds, lastQ, layerReportsFormatted) {
	if (ds.data.items[0].data.LayerName == "Google") ds.removeAt(0);
	var reportsSplit = layerReports.split(",");
	var reportsSplitFormatted = layerReportsFormatted.split("<br/>");
    reportTabPanel.removeAll(false);
	
    var gridResults = getResultsGrid(ds, a, mapName, sessionId);
	var tb = new Ext.Toolbar({
    items: [
        {
            xtype: 'button',
            text: 'Odpri na novi strani',
			iconCls: 'icon-tree-post',
			handler: repsOnNewPage
        },
        {xtype: 'tbspacer'},		
		{
            xtype: 'button',
            text: 'Excel',
			iconCls: 'icon-page-excel',
			handler: repsExcel
        },
		{
            xtype: 'button',
            text: 'Word',
			iconCls: 'icon-page-word',
			handler: repsWord
        },
		{xtype: 'tbspacer'},
		{
            xtype: 'button',
            text: 'Shrani karto',
			iconCls: 'icon-picture-save',
			handler: saveToImage
        }
    ]
	});
    var layerResults = reportTabPanel.add({
        title: '<div style="color: blue">Rezultati (' + lastQ + ')</div>',
        iconCls: 'tabs',
        items: gridResults,
        layout: 'fit',
        closable: false,
		tbar: tb
    });
	
    var accordPanels = [];
    var firstPanel = true;
	var collapseGrid = false;
	if (reportsSplit.length>1) collapseGrid = true;
    for (i = 0; i < reportsSplit.length; i++) {
		try {
			var reportName = reportsSplit[i];
			var reportNameFormatted = reportsSplitFormatted[i];
			var reportFields = getReportFields(a, sessionId, mapName, layerName, reportName);
			var rowActions = getRowActions();
			var columns = getLayerGridColumns(reportFields, rowActions);
			var tooltips = getLayerGridTooltips(reportFields);
			var gridFilters = getReportFilters(reportFields);
			var filters = new Ext.ux.grid.GridFilters({
			local: true,
			filters:gridFilters
			});

			var reportStore = getReportData(a, sessionId, mapName, layerName, reportName, featIds, reportFields, firstPanel);
			reportStore.setDefaultSort( columns[2].dataIndex, 'ASC' );
			
			var grid = getReportGrid(reportName, reportStore, columns, tooltips, filters, rowActions, collapseGrid, reportNameFormatted)
			accordPanels.push(grid);
		} catch (err) { }   
    }		  
	var tabResultLayout = 'accordion';
	var tabResultItems = accordPanels;
	if (reportsSplit.length==1){
		tabResultLayout = 'fit';
		tabResultItems = grid;
	}	
	var tabResult = reportTabPanel.add({
        id: layerName,
        title: layerDescription,
        split: true,
        closable: true,
        layout: tabResultLayout,
		items: tabResultItems
    }); 
	doLay();
	reportWindow.show();
    reportWindow.add(reportTabPanel);	
	reportTabPanel.setActiveTab(tabResult);
	reportWindow.doLayout();
}

function showReportData(layerName, layerDescription, layerReports, layerReportsFormatted, featIds) {
	var a = appName;
	var mf = mainframe.viewerFrame.mapFrame;
	var sessionId = mf.GetSessionId();
    var mapName = mf.GetMapName();
	var webLayout = mf.parent.webLayout;
	var reportsSplit = layerReports.split(",");
	var reportsSplitFormatted = layerReportsFormatted.split("<br/>");
    reportTabPanel.removeAll(false);
	
    var accordPanels = [];
    var firstPanel = true;
	var collapseGrid = false;
	if (reportsSplit.length>1) collapseGrid = true;
    for (i = 0; i < reportsSplit.length; i++) {
		try {
			var reportName = reportsSplit[i];
			var reportNameFormatted = reportsSplitFormatted[i];
			var reportFields = getReportFields(a, sessionId, mapName, layerName, reportName);
			var rowActions = getRowActions();
			var columns = getLayerGridColumns(reportFields, rowActions);
			var tooltips = getLayerGridTooltips(reportFields);
			var gridFilters = getReportFilters(reportFields);
			var filters = new Ext.ux.grid.GridFilters({
			local: true,
			filters:gridFilters
			});

			var reportStore = getReportData(a, sessionId, mapName, layerName, reportName, featIds, reportFields, firstPanel);
			reportStore.setDefaultSort( columns[2].dataIndex, 'ASC' );
			
			var grid = getReportGrid(reportName, reportStore, columns, tooltips, filters, rowActions, collapseGrid, reportNameFormatted)
			accordPanels.push(grid);
		} catch (err) { }   
    }		  
	var tabResultLayout = 'accordion';
	var tabResultItems = accordPanels;
	if (reportsSplit.length==1){
		tabResultLayout = 'fit';
		tabResultItems = grid;
	}	
	var tabResult = reportTabPanel.add({
        id: layerName,
        title: layerDescription,
        closable: false,
        layout: tabResultLayout,
		items: tabResultItems,
		split: true
    }); 
	doLay();
	reportWindow.show();
    reportWindow.add(reportTabPanel);	
	reportTabPanel.setActiveTab(tabResult);
	reportWindow.doLayout();
}

function showSimpleReportData(reportName) {
    reportTabPanel.removeAll(false);
	var reportFields = getSimpleReportFields(appName, reportName);
	var columns = getSimpleGridColumns(reportFields);
	var tooltips = getLayerGridTooltips(reportFields);
	var gridFilters = getReportFilters(reportFields);
	var filters = new Ext.ux.grid.GridFilters({
	local: true,
	filters:gridFilters
	});

	var reportStore = getSimpleReportData(appName, reportName, reportFields);
	reportStore.setDefaultSort( columns[2].dataIndex, 'ASC' );	
	var grid = getSimpleReportGrid(reportName, reportStore, columns, tooltips, filters);
	doLay();
	reportWindow.show();
    reportWindow.add(grid);	
	reportWindow.doLayout();
}

function showWindow(url, params) {	
    var pnl = new Ext.Panel({
		id: 'windowPanel',
        contentEl: 'windowDiv',
		layout: 'fit'        
    });
	doLay1();
	reportWindow1.show();	
    reportWindow1.add(pnl);
	reportWindow1.doLayout();
	top.frames["mainframe"].frames["viewerFrame"].frames["formFrame"].Submit(url, params, "windowFrame");
	//reportWindow.doLayout();
}

function doLay()
{
	if (reportWindow1!=null) reportWindow1.hide();
	var h = Ext.isIE? document.body.clientHeight: window.innerHeight;
	var w = document.body.clientWidth - 147;
	var posX = 70;
	if (!leftPanel.collapsed){
		posX = 45 + leftPanel.width;
		w = w - leftPanel.width + 22;
	}
	if (!rightPanel.collapsed)
		w = w - rightPanel.width + 22;
	var posY = h-30-h/3;
	reportWindow.setSize(w, h/3);
	reportWindow.setPosition(posX, posY);
}  

function doLay1()
{
	if (reportWindow!=null) reportWindow.hide();
	var h = Ext.isIE? document.body.clientHeight: window.innerHeight;
	var w = document.body.clientWidth - 147;
	var posX = 70;
	if (!leftPanel.collapsed){
		posX = 45 + leftPanel.width;
		w = w - leftPanel.width + 22;
	}
	if (!rightPanel.collapsed)
		w = w - rightPanel.width + 22;
	var posY = h-30-h/3;
	reportWindow1.setSize(w, h/3);
	reportWindow1.setPosition(posX, posY);
}                   