﻿/* REPORT GRID UTIL FUNCTIONS */
function getReportFields(appName, sessionId, mapName, layerName, reportName) {
    var args = '{"a":"' + appName + '","sessionId":"' + sessionId + '","mapName":"' + mapName + '","layerName":"' + layerName + '","reportName":"' + reportName + '"}';
    var layerRepsJSON = calWebService('../mapguide/KaliopaFDOService/Service.asmx/GetLayerReportFields', args);
    var fields = [
		{ name: 'DataIndex' },
		{ name: 'Header' },
		{ name: 'Editable' },
		{ name: 'Hideable' },
		{ name: 'DataType' },
		{ name: 'Xtype' },
		{ name: 'Hidden' }
	];
    var storeReportFields = new Ext.data.Store({
        data: layerRepsJSON,
        reader: new Ext.data.JsonReader({
            root: 'd.rows',
            totalProperty: 'd.totalRows',
            idProperty: 'Id'
        }, fields)
    });
    return storeReportFields;
}

function getSimpleReportFields(appName, reportName) {
    var args = '{"a":"' + appName + '","reportName":"' + reportName + '"}';
    var layerRepsJSON = calWebService('../mapguide/KaliopaFDOService/Service.asmx/GetSimpleReportFields', args);
    var fields = [
		{ name: 'DataIndex' },
		{ name: 'Header' },
		{ name: 'Editable' },
		{ name: 'Hideable' },
		{ name: 'DataType' },
		{ name: 'Xtype' },
		{ name: 'Hidden' }
	];
    var storeReportFields = new Ext.data.Store({
        data: layerRepsJSON,
        reader: new Ext.data.JsonReader({
            root: 'd.rows',
            totalProperty: 'd.totalRows',
            idProperty: 'Id'
        }, fields)
    });
    return storeReportFields;
}

function getLayerReportFields(reportFields) {
    var result = [];
    reportFields.each(function(r) {
        this_field = [];
        this_field['name'] = r.data.DataIndex;
        result.push(this_field);
    })
    return result;
}

function getLayerGridColumns(reportFields, rowActions) {    
    var result = [];
    result.push(new Ext.grid.RowNumberer());
	result.push(rowActions);	
    reportFields.each(function(r) {
        this_field = [];
        this_field['header'] = '<b>' + r.data.Header + '</b>';
        this_field['dataIndex'] = r.data.DataIndex;
        this_field['editable'] = r.data.Editable;
		this_field['xtype'] = r.data.Xtype;
		this_field['hidden'] = r.data.Hidden;
		if (r.data.Xtype=='numbercolumn')
			this_field['renderer'] = Ext.util.Format.numberRenderer('0.000,00');
        result.push(this_field);
    })
    return result;
}

function getSimpleGridColumns(reportFields) {    
    var result = [];
    result.push(new Ext.grid.RowNumberer());
    reportFields.each(function(r) {
		alert(r.data.DataIndex);
        this_field = [];
        this_field['header'] = '<b>' + r.data.Header + '</b>';
        this_field['dataIndex'] = r.data.DataIndex;
        this_field['editable'] = r.data.Editable;
		this_field['xtype'] = r.data.Xtype;
		this_field['hidden'] = r.data.Hidden;
		if (r.data.Xtype=='numbercolumn')
			this_field['renderer'] = Ext.util.Format.numberRenderer('0.000,00');
        result.push(this_field);
    })
    return result;
}

function getLayerGridTooltips(reportFields) {    
    var result = [];
    var rowTemplate = '';
    reportFields.each(function(r) {
        this_field = [];
        this_field['field'] = r.data.DataIndex;
        this_field['tpl'] = '' + r.data.Header + ':<br/><b>{' + r.data.DataIndex + '}</b>';
        result.push(this_field);
        rowTemplate = rowTemplate + r.data.Header + ': <b>{' + r.data.DataIndex + "}</b><br/>";
    })
    row_field = [];
    row_field['field'] = "";
    row_field['tpl'] = rowTemplate;
    result.push(row_field);
    return result;
}

function getReportFilters(reportFields)
{
    var result = [];
    reportFields.each(function(r) {
        this_field = [];
		this_field['type'] = r.data.DataType;
        this_field['dataIndex'] = r.data.DataIndex;        
        result.push(this_field);
    });	
    return result;
}

function getReportData(appName, sessionId, mapName, layerName, reportName, featIds, reportFields, doLoad) {
    var args = '{params:{a:"'+appName+'",sessionId:"'+sessionId+'",mapName:"'+mapName+'",layerName:"'+layerName+'",reportName:"'+reportName+'",featIds:"'+featIds+'"}}';
	var jsonArgs = {'a':appName,'sessionId':sessionId,'mapName':mapName,'layerName':layerName,'reportName':reportName,'featIds':featIds};
	//var args = '{"a":"' + appName + '","sessionId":"' + sessionId + '","mapName":"' + mapName + '","layerName":"' + layerName + '","reportName":"' + reportName + '","featIds":"' + featIds + '"}';
	//var reportDataJSON = calWebService('../mapguide/KaliopaFDOService/Service.asmx/GetReportData', args);
	//reportDataJSON = eval("(" + reportDataJSON.d + ')');
	var fields = getLayerReportFields(reportFields);
	var reportData = new Ext.data.GroupingStore({
		remoteSort: false,
		proxy: new Ext.data.HttpProxy({
			url: '../mapguide/KaliopaFDOService/Service.asmx/GetReportData'
	        ,method: 'post'
			,jsonData: jsonArgs
			,headers: { 'Content-Type': 'application/json;charset=utf-8' }
		}),
		reader: new Ext.data.JsonReader({
			idProperty: 'row_id',
			root: 'd.rows',
			totalProperty: 'd.totalRows',
			fields: fields
		})
	});		
	//reportData.load(/*{params:{a:'"'+appName+'"',sessionId:'"'+sessionId+'"',mapName:'"'+mapName+'"',layerName:'"'+layerName+'"',reportName:'"'+reportName+'"',featIds:'"'+featIds+'"'}}*/);	
	 if (doLoad){
		  reportData.load({ params: { start: 0, limit: 500} });
	 }
	return reportData;
}

function getSimpleReportData(appName,reportName,reportFields) {
	var jsonArgs = {'a':appName,'reportName':reportName};
	var fields = getLayerReportFields(reportFields);
	var reportData = new Ext.data.GroupingStore({
		remoteSort: false,
		proxy: new Ext.data.HttpProxy({
			url: '../mapguide/KaliopaFDOService/Service.asmx/GetSimpleReportData'
	        ,method: 'post'
			,jsonData: jsonArgs
			,headers: { 'Content-Type': 'application/json;charset=utf-8' }
		}),
		reader: new Ext.data.JsonReader({
			idProperty: 'row_id',
			root: 'd.rows',
			totalProperty: 'd.totalRows',
			fields: fields
		})
	});		
	reportData.load({ params: { start: 0, limit: 500} });	 
	return reportData;
}


function showAttachments(reportFields) {
	var result = false;
    reportFields.each(function(r) {
        if (r.data.DataIndex.toLowerCase()=="priponke"){
			result = true;
		}
	});
    return result;
}

/*ASP.NET WEB SERVICE UTILS*/
function calWebService(url, postData) {
	var xmlhttp = null;
	if (window.XMLHttpRequest)
		xmlhttp = new XMLHttpRequest();
	else if (window.ActiveXObject) {
		if (new ActiveXObject("Microsoft.XMLHTTP"))
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		else
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	url = url + "?rnd=" + Math.random(); // to be ensure non-cached version
	xmlhttp.open("POST", url, false);
	xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8");
	xmlhttp.send(postData);
	var responseText = xmlhttp.responseText;
	var jsonData;
	jsonData = eval("(" + responseText + ')');
	return jsonData;
}

/*Query string Utils*/
function queryStr(ji) {
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	for (i = 0; i < gy.length; i++) {
		ft = gy[i].split("=");
		if (ft[0] == ji) {
			return ft[1];
		}
	}
}

var dialogwindow;

function showDialogWindow(title, width, height, src){
	dialogwindow = new Ext.Window({
	id: 'dialogwindow',
    title: title,
	width: width,
	height: height,
	deferredRender: false,
	collapsible: false,
	plain: true,
	layout: 'fit',
	maximizable: false,
	animCollapse:false,
	renderTo: Ext.getBody(), 
	modal: true,
	animCollapse: false,
	shadow: false,
	resizable: false,
	html: '<div id="dialogwindowdiv" style="width:100%; height:100%;"><iframe id="dialogwindowframe" name="dialogwindowframe" src="' + src + '" height="100%" style="border:0; background-color: red" frameborder="no" width="100%" scrolling="no"></iframe></div>'
	});
	dialogwindow.show();
	dialogwindow.center();
};

function hideDialogWindow(){
	dialogwindow.close();
};