var defaultRowCount = 15;

var handlePagination = function(page, datatable) {
    dataTable.getDataSource().sendRequest("mediaId=" + media.id + "&rows=" + page.rowsPerPage, {
        success : dataTable.onDataReturnInitializeTable,
        failure : dataTable.onDataReturnInitializeTable,
        scope  : dataTable
    });
};

YAHOO.util.Event.onDOMReady(function() {
    YAHOO.widget.Chart.SWFURL = "http://yui.yahooapis.com/2.5.2/build/charts/assets/charts.swf";
    var columns = [
        {key:"referrer", label: messages['videoStatistics.embeds'], formatter:"linkFormatter"},
        {key:"count", label: messages['videoStatistics.embeds.views']},
        {key:"lastModified", label: messages['videoStatistics.embeds.lastVisit'], formatter:"date"}
    ];

    // Set up the Paginator instance.
    var myPaginator = new YAHOO.widget.Paginator({
        containers         : ['dt-pag-nav'],
        rowsPerPage        : 15,
        rowsPerPageOptions : [15,50,100,5000],
        template           : messages['videoStatistics.showLast'] + "{RowsPerPageDropdown}" + messages['videoStatistics.embeddedViews'] 
    });

    var datasource = new YAHOO.util.DataSource("/view/queryStatistics/embed?");
    datasource.responseType = YAHOO.util.DataSource.TYPE_JSON;
    datasource.responseSchema = {
        resultsList: "embedStatistics",
        fields: ["referrer", "count", {key: "lastModified", parser: calendarParser}],
        metaFields: {
            paginationRowsPerPage: "rows"
        }};
    dataTable = new YAHOO.widget.DataTable("listTable", columns, datasource,
    {
        initialRequest: "mediaId=" + media.id + "&rows=" + defaultRowCount,
        paginator : myPaginator,
        paginationEventHandler: handlePagination
    });

    var chartDataSource = new YAHOO.util.DataSource("/view/queryStatistics/views?mediaId=" + media.id);
    chartDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
    chartDataSource.responseSchema = {
        resultsList: "viewStatistics",
        fields: ["displayDate", "views", {key: "date", parser: dateParser, formatter: "date"}]};

    var viewsAxis = new YAHOO.widget.NumericAxis();
    
    var dateAxis = new YAHOO.widget.TimeAxis();
    dateAxis.majorTimeUnit = "day";
    dateAxis.labelFunction = dateLabel;

    var myChart = new YAHOO.widget.LineChart("chart", chartDataSource,
    {
        xField: "date",
        yField: "views",
        xAxis: dateAxis,
        yAxis: viewsAxis,
        dataTipFunction: function ( item, index, series )
        {
            var toolTipText = dateLabel(item.date) + "\n" + messages['videoStatistics.views'] + ": " + item.views; 
            return toolTipText;
        }

    });


    myChart.set( "dataTipFunction", getDataTipText );
});

var dateLabel = function(value) {
    return YAHOO.util.Date.format(value);
}

var dateParser = function(value) {
    return new Date(value.time);
}

var calendarParser =  function(value) {
    if(value != null && value.time != null) {
        return new Date(value.timeInMillis);
    }
    else {
        return messages['videoStatistics.unknown']
    }
}

var linkFormatter = function(elCell, oRecord, oColumn, oData) {
    var link = oData;
    var display;
    if(link.length > 60) {
        display = link.substring(0, 60) + "...";
    }
    else {
        display = link;
    }

    if(link != null && link != "") {
        elCell.innerHTML = '<a href="' + link + '">' + display + '</a>';
    }
    else {
        elCell.innerHTML = 'Unknown';
    }
};
YAHOO.widget.DataTable.Formatter.linkFormatter = linkFormatter;