﻿Ext.namespace("TwentyFour.Scripts.Weather");

function goBack(location)
{
    manager = new TwentyFour.Scripts.Weather.ForecastManager();
    manager.renderForecast("airportdelays",location);
}

TwentyFour.Scripts.Weather.AirportDelayManager = function()
{
    var _renderToLocation;
    var _country;

     function airportDelayCallBack(response)
     {   
        var panel = $(_renderToLocation);
        
        if (response.error === null && response.value != null)
        {
            var data = response.value;
            var airportDelayTemplate = new Ext.XTemplate(
            '<table cellpadding="2" cellspacing="2" border="0" class="forecastTable">\
                <tr><td class="forecastHeading" colspan="3">Airport Delays</td>\
                <td class="forecastHeading" colspan="2" style="text-align:right;"><button class="btns" onclick="goBack(\'' + _renderToLocation + '\');">BACK</button></td>\
                </tr>\
                <tpl for="forecast24Hour">\
                    <tr>\
                        <td class="forecastHeading">&nbsp;</td>\
                        <td colspan="{\DayColSpan1}" class="forecastHeading">{\DayName1}</td>\
                        <tpl if="DayColSpan2 &gt; 0">\
                            <td colspan="{\DayColSpan2}" class="forecastHeading">{\DayName2}</td>\
                        </tpl>\
                    </tr>\
                    <tr>\
                        <td class="forecastSubHeading" rowspan="2" style="width:20%">&nbsp;</td>\
                        <tpl for="Forecast">\
                            <td class="forecastSubHeading" style="width:20%">{DaySegment}</td>\
                        </tpl>\
                    </tr>\
                    <tr>\
                        <tpl for="Forecast">\
                           <td class="forecastDataItem"><img src="Images/Icons/Airport/{IconName}.gif" /><br />{Description}</td>\
                        </tpl>\
                    </tr>\
                    <tr>\
                        <td class="forecastDataLabel">Delays</td>\
                        <tpl for="Forecast">\
                            <td class="forecastDataItem">{Delay}</td>\
                        </tpl>\
                    </tr>\
                    <tr>\
                        <td class="forecastDataLabel">Reason</td>\
                        <tpl for="Forecast">\
                            <td class="forecastDataItem">{PrimaryDelayReason}</td>\
                        </tpl>\
                    </tr>\
                </tpl>\
            </table>'
            );
            
            airportDelayTemplate.overwrite(panel, data);
         }
         else
            panel.update('No Airport Delay Data available for this airport.<br/><br/>Click <a href="javascript:void(0);" onclick="goBack(\'' + _renderToLocation + '\');">here</a> to select a different airport.');
    }
    
    function airportListCallBack(response)
    {   
        var panel = $(_renderToLocation);
        if (response.error === null && response.value != null)
        {
            var data = response.value;
            var airportsTemplate = new Ext.XTemplate(
            '<ul style="vertical-align:middle;">\
                <tpl for="Airports">\
                    <li style="padding-bottom:10px;"><img src="Images/bullet_blue.png" style="vertical-align:text-bottom;"/><a href="javascript:void(0);" onclick="updateAirportInfo(\'{Second}\',\'{First}\',\'' + _renderToLocation + '\');">{First}</a></li>\
                </tpl>\
            </ul>');
            airportsTemplate.overwrite(panel, data);
         }
         else
         {
            if (response.error.Type == "ConnectFailure")
            {
                panel.update('A problem has occured during the load of the airport lists.<br/>Please click <a href="javascript:void(0);" onclick="goBack(\'' + _renderToLocation + '\');">here</a> to try again.');
            }
            else
                panel.update('No airport delay information available');
         }
    }
    
    return {
        
        showGrid : function(cityId, renderLocation){ 
            _renderToLocation = renderLocation;
            $(_renderToLocation).update('<img src="Images/loading.gif"/>&nbsp;loading...');
            TwentyFour.Weather.Web.Ajax.GetAirportDelayReport(cityId, airportDelayCallBack);
        },

        showAirportList : function(renderLocation, country){
            _renderToLocation = renderLocation;
            _country : country;
            $(_renderToLocation).update('<img src="Images/loading.gif"/>&nbsp;loading...');
            TwentyFour.Weather.Web.Ajax.GetAirports(country, airportListCallBack);
        }
    };
};