var Carbon = Class.create(Model, {
    view: ({
        modelView: function() {
            var data = this.object.data;
            if (!("value" in data)) {
                return new Element("span");
            }

            /**
             * @todo complete
             */
            var content = {};
            content.iata       = Page.getInstance().getForm().getIATA("destinationAirport");
            return new Element("div", {id: "carbonContainer"})
                .appendChild(
                    new Element("div").addClassName("carbonInnerContainer")
                    .appendChild(
                        new Element("div").addClassName("header").appendChild(new Element("strong").update("Environmental impact:")).parentNode).parentNode
                    .appendChild(new Element("b").update("Kilometres travelled: ")).parentNode
                    .appendChild(document.createTextNode(data.distance + ' km')).parentNode
                    .appendChild(new Element("br")).parentNode
                    .appendChild(new Element("b").update("Tonnes of CO: ")
                    // AppendChild here
                    ).parentNode
                    .appendChild(document.createTextNode(data.value + ' per person')).parentNode
                    .appendChild(new Element("a", {target: "_blank", href: new Template(data.url).evaluate(content)})
                        .appendChild(new Element("img", {src: '/i/bt.carbon.gif'})).parentNode).parentNode
                ).parentNode;
        }
    }),
    initialize: function() {
        this.data = {};
        new Ajax.Request("/flights/?action=carbon", {
            postBody: $H({
                departure:   $("departureAirport").value,
                destination: $("destinationAirport").value,
                cabin: $("cabin").value,
                trip: ($("tripTypeR").checked ? "1" : "0"),
                passengers: Page.getInstance().getFlights().getData().criteria.passengers
            }).toQueryString(),
            onSuccess: this.process.bind(this)
        });
    },
    process: function (response) {
        this.data = response.responseJSON;
    }
});
