/**
 * @file showtimes.js
 **/

YAHOO.util.Event.addListener(window,"load",function(){
 tableGen_init = function() {

var lang   = YAHOO.lang,
util   = YAHOO.util,
widget = YAHOO.widget,
ua     = YAHOO.env.ua,    
Dom    = util.Dom,
Ev     = util.Event,
DT     = widget.DataTable;


//// Data Source Configuration //// 
YAHOO.namespace('Solutionset.dataSource.generator.widget');
YAHOO.Solutionset.dataSource.generator.widget = new YAHOO.util.XHRDataSource('/ajax/shows');
YAHOO.Solutionset.dataSource.generator.widget.connMethodPost = true;
YAHOO.Solutionset.dataSource.generator.widget.maxCacheEntries = 0;
YAHOO.Solutionset.dataSource.generator.widget.responseType = YAHOO.util.DataSource.TYPE_JSON;
YAHOO.Solutionset.dataSource.generator.widget.responseSchema = {
resultsList : '.Shows',
fields : ['State',
          'City',
          'Date',
          'Time',
          'Timezone',
          'Station',
          'Url',
          'Channel']
};


//// Custom Formatter for Channel Link ////
this.formatChannelUrl= function(elCell, oRecord, oColumn, oData){
    if(oData!='')
    { 
         elCell.innerHTML = '<a href="' + oRecord.getData("Url") + '" target="_blank">' + oData + '</a>';  
    }
    else
    {
        elCell.innerHTML = 'TBD';
    }
};

//// Custom Formatter for Channel Number ////
this.formatChannel = function(elCell, oRecord, oColumn, oData){
    if(oData!='')
    { 
         elCell.innerHTML = YAHOO.util.Number.format(oData);  
    }
    else
    {
        elCell.innerHTML = 'TBD';
    }
};

//// Custom Formatter for Time ////
this.formatTime= function(elCell, oRecord, oColumn, oData){     
     if(oData.indexOf(':')!=-1)
     {         
         var timeData = oData.split(':');
         var hours = parseInt(timeData[0],10);
         var minutes = timeData[1];
         var meridian = (hours>11) ? 'PM':'AM';
         var hoursText = (hours>12) ? (hours-12):hours;
         if(hoursText==0) hoursText = 12; 
         elCell.innerHTML = hoursText+':'+minutes+' '+meridian;
    }
    else
    {
        elCell.innerHTML = 'TBD';
    }
};


//// Custom Formatter for Date ////
this.formatDate= function(elCell, oRecord, oColumn, oData){
     
     if(oData.indexOf('-')!=-1)
     {
         var dateData = oData.split('-');
         var year  = parseInt(dateData[0],10);
         var month = parseInt(dateData[1],10);
         var days  = parseInt(dateData[2],10);

         var showDate = new Date(year,(month-1),days);
         elCell.innerHTML = YAHOO.util.Date.format(showDate,'%m/%d/%y','en');     
     }
     else
     {
         elCell.innerHTML = oData;
     }
};


//// Data Table Configuration //// 
YAHOO.namespace('Solutionset.dataTable.generator.widget');

var myColumnDefs = [
{
key : 'State',
label : 'State',
width  : 28,
sortable : true
},
{
key : 'City', 
label : 'City',
width: 95,
sortable : true
},
{
key : 'Date', 
label : 'Date',
formatter : this.formatDate,
width : 60,
sortable:true
},
{
key : 'Time',
label : 'Time',
formatter : this.formatTime,
width : 50,
sortable : true
},
{
key : 'Timezone',
label : 'Time Zone',
width : 50,
sortable : true
},
{
key : 'Station', 
label : 'Station',
formatter : this.formatChannelUrl,
width : 45,
sortable : true
},
{
key : 'Channel', 
label : 'Channel',
formatter: this.formatChannel,
width : 40,
sortable : true
}
];

var myConfigs = {
paginator: new YAHOO.widget.Paginator({rowsPerPage:20}),
initialRequest : ''
};

YAHOO.Solutionset.dataTable.generator.widget = new YAHOO.widget.DataTable('showsDTContainer', myColumnDefs, YAHOO.Solutionset.dataSource.generator.widget, myConfigs );

return {
    oDS: YAHOO.Solutionset.dataSource.generator.widget,
    oDT: YAHOO.Solutionset.dataTable.generator.widget
};
}();
});