﻿function AddLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    }
    else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

var BudgetCalculator = new Class(
{
    initialize: function(panelId, associatedSelectId, serviceUrl) {
        if (!panelId || !associatedSelectId) { return false; } //if undefined do nothing
        this.panelElement = $(panelId);
        this.associatedSelect = $(associatedSelectId);
        if (!this.panelElement || !this.associatedSelect) { return false; }
        this.JSONConnection = new Request.JSON({ url: serviceUrl, onSuccess: this.onDataRetrieved.bind(this), onFailure: this.onDataFail.bind(this) });
        this.associatedSelect.addEvent('change', this.retrieveData.bind(this));
        this.retrieveData();
    },
    retrieveData: function() {
        var parameters = new Object();
        parameters.filter = this.associatedSelect.value;
        this.JSONConnection.get(parameters);
    },
    onDataRetrieved: function(data) {
        if ($chk(data)) {

            //var cell = this.panelElement.getElementById("ctl00_MainContent_cell0");

            var cell;
            var rows;
            var tables;
            tables = document.getElementsByTagName("table");
            for (var y = 0; y < tables.length; y++) {
                if (tables[y] != null) {
                    rows = tables[y].getElementsByTagName("tr");
                    for (var i = 0; i < rows.length; i++) {
                        rows[i].style.display = '';
                    }
                }
            }

            for (var x = 0; x < data.bindings.length; ++x) {
                if (data.bindings[x].type == "table") {
                    table = this.panelElement.getElementById("ctl00_MainContent_" + data.bindings[x].tableid);
                    document.getElementById("ctl00_MainContent_" + data.bindings[x].rowid).style.display = 'none';
                }
                if (data.bindings[x].type == "cell") {
                    cell = this.panelElement.getElementById("ctl00_MainContent_" + data.bindings[x].id);
                    cell.innerHTML = data.bindings[x].value;
                }
                if (data.bindings[x].type == "text") {
                    document.getElementById(data.bindings[x].id).innerHTML = data.bindings[x].value;
                }
            }
        }
    },
    onDataFail: function(data) {
    }
});
