﻿// JScript File


        var _message;
        var _grid;
        var _pager;

        var _btnSelect;
        var _btnResetSelection;
        var _btnGetSelectedValue;

        var _categories;

        function pageLoad()
        {
            // Getting the reference of the Client Components and attaching the event handlers
            _grid = $find('ContentRater1_grid');
            _grid.add_columnDragStart(columnDragStart);
            _grid.add_columnDropped(columnDropped);
            _grid.add_sort(sorted);
            _grid.add_rowDataBound(rowDataBound);
            _grid.add_selectedIndexChange(selected);
            _grid.add_rowDelete(deleted);


            /*
            We can also load the column collection from the profile service
            if we want to retrive the coluom position from previous visit
            For example (assuming the profile service is already configured in web.cofig
            and is values are already loaded by Sys.Services.ProfileService.load() method

            if (Sys.Services.ProfileService.properties.productGridColumns != null)
            {
                var columns = Sys.Serialization.JavaScriptSerializer.deserialize(Sys.Services.ProfileService.properties.productGridColumns);
                _grid.set_columns(columns);
            }
            */

            _pager = $find('ContentRater1_pager');
            _pager.add_pageChange(pageChanged);
            _pager.set_rowPerPage(5);
            //Getting the reference of the DOM elements
            _message = $get('message');
      
                                            loadProducts();

        }

        function pageUnload()
        {
            //Remove the handlers in page unload-- Good Practice


            _grid.remove_columnDragStart(columnDragStart);
            _grid.remove_columnDropped(columnDropped);
            _grid.remove_sort(sorted);
            _grid.remove_rowDataBound(rowDataBound);
            _grid.remove_selectedIndexChange(selected);
            _grid.remove_rowDelete(deleted);

            _pager.remove_pageChange(pageChanged);
        }

        function columnDragStart(sender, e)
        {
            //alert(e.get_column().headerText);
        }

        function columnDropped(sender, e)
        {
            //We can here also use the built-in profile service
            //to persis the column collection so that in next visit
            //it loads as the same order, For Example
            //Sys.Services.ProfileService.properties.productGridColumns = Sys.Serialization.JavaScriptSerializer.serialize(_grid.get_columns());

            /*
            alert(e.get_column().headerText);
            alert(e.get_oldIndex());
            alert(e.get_newIndex());
            */
        }

        function sorted(sender, e)
        {
            _grid.set_sortColumn(e.get_sortColumn());
            _grid.set_sortOrder(e.get_sortOrder());

            _pager.set_currentPage(1);  // need to reset the current page as sorting has been changed

            loadProducts();
        }

        function rowDataBound(sender, e)
        {
            var product = e.get_dataItem();

            //Since the grid supports Dnd the column index may vary
            //Calling the helper function getColumnIndex() will return the proper index
            //var categoryColumnIndex = _grid.getColumnIndex('Country');

            //var tdCategory = e.get_tableRow().childNodes[categoryColumnIndex];
            //var categoryName = getCategoryName(product.country);
            //tdCategory.innerHTML = categoryName;

            var unitInStockColumnIndex = _grid.getColumnIndex('Rating');
            var tdUnitsInStock = e.get_tableRow().childNodes[unitInStockColumnIndex];
            if (product.rating < 3)
            {
                tdUnitsInStock.style.backgroundColor = '#ff0000';
            }
             if (product.rating == 3)
            {
                tdUnitsInStock.style.backgroundColor = '#fafad2';
            }
                         if (product.rating > 3)
            {
                tdUnitsInStock.style.backgroundColor = '#aee7bf';
            }
        }

        function selected(sender, e)
        {
            alert(String.format('commandName: {0}\ncommandArgument: {1}', e.get_commandName(), e.get_commandArgument()));
            //Here we can do further processing such showing an Edit UI for the selected record, etc.
        }

        function deleted(sender, e)
        {
            alert(String.format('commandName: {0}\ncommandArgument: {1}', e.get_commandName(), e.get_commandArgument()));
            //Here we can Invoke a WS call to delete the record
        }

        function pageChanged(sender, e)
        {
            _pager.set_currentPage(e.get_newPage());

            loadProducts();
        }

        function loadProducts()
        {

            var startIndex = ((_pager.get_currentPage()-1) * _pager.get_rowPerPage());
            var sortOrder = (_grid.get_sortOrder() == Ajax.Controls.GridSortOrder.Descending) ? 'DESC' : 'ASC';

            _message.innerHTML = '<div><img alt=\"\" src=\"Images/indicator.gif\"/>&nbsp;Loading feedbacks...</div>';
            _message.style.display = '';
            var cntId = 0;
            var hidcnt = document.getElementById('HidCnt');
           if ( hidcnt != null)
            cntId = hidcnt.value;
            Feedback.Web.FeedBkSvc.GetRatingDetails( cntId, startIndex,
                                        _pager.get_rowPerPage(),
                                        _grid.get_sortColumn(),
                                        sortOrder,
                                        function(pagedResult)
                                        {
                                            var total = 0;
                                            var products = null;

                                            if (pagedResult != null)
                                            {
                                                total = pagedResult.Total;
                                                products = pagedResult.Rows;
                                            }

                                            _grid.set_dataSource(products);
                                            _grid.dataBind();
                 
                                            _pager.set_rowCount(total);

                                            _message.innerHTML = '';
                                            _message.style.display = 'none';
                                        },
                                        function(exception)
                                        {
                                            _message.innerHTML = '<span style=\"color:#ff0000\">' + exception.get_message() + '</span>';
                                        }
                                    );
        }

        function selectRow()
        {
            _grid.select(_grid.get_selectedIndex() + 1); // Might raise exception if you wants to select beyond the last row.
        }

        function resetSelection()
        {
            _grid.resetSelection();
        }

        function showSelectedValue()
        {
            alert(_grid.get_selectedValue());
        }

        function getCategoryName(id)
        {
            if ((_categories == null) || (_categories.length == 0))
            {
                return '';
            }

            for(var i = 0; i < _categories.length; i++)
            {
                if (_categories[i].ID == id)
                {
                    return _categories[i].Name;
                }
            }

            return '';
        }
