﻿function ShowReviews(shopId)
{
    _uacct = "UA-3456939-1";
    var pageTracker = _gat._getTracker(_uacct);
    KupOfJoe.ReviewsService.GetReviewsForShop(shopId, completeHandlerReviewsForShop);
    pageTracker._trackPageview('/ShopReviews' + shopId);
}
function GetRecentReviews()
{
    _uacct = "UA-3456939-1";
    var pageTracker = _gat._getTracker(_uacct);
    KupOfJoe.ReviewsService.GetRecentReviews(RenderRecentReviews);
    pageTracker._trackPageview('/RecentReviews');
}
function GetRecentReviewsAdmin()
{
    KupOfJoe.ReviewsService.GetRecentReviews(RenderRecentReviewsAdmin);
}
function RenderRecentReviews(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
     var obj = eval(text);
     var calloutList = $('callout_list'); 
     calloutList.empty();
     calloutList.set('html','<br />');
     obj.Result.each(function(review)
     {
        RenderReview(text, review, calloutList);
     });
     
}
function RenderRecentReviewsAdmin(text)
{
    //alert(text);
    this.response.json = JSON.decode(text, this.options.secure);
     var obj = eval(text);
     var calloutList = $('recent_reviews'); 
     calloutList.empty();
     var _header = new Element('label',{'html':'<b>RECENT REVIEWS</b><br /><hr />'});
     _header.inject(calloutList);
     obj.Result.each(function(review)
     {
        //alert(review);
        RenderReview(text, review, calloutList);
     });
}
function RenderReview(text, review, calloutList)
{
    var reviewContainer = new Element('div',{'style':'padding:3px;cursor:pointer;'});
    var shopName = '';
       
    KupOfJoe.ListingsService.GetListingById(review.ShopId, function(text)
    {
        this.response.json = JSON.decode(text, this.options.secure);
        var objShops = eval(text);
        objShops.Result.each(function(shop)
        {
            shopName = shop.Name;
            var timeStamp = new Element('label',{'style':'cursor:pointer;'});
            var reviewMessage = new Element('label');
            if(review.ReviewMessage.length > 45)
            {
                timeStamp.set('html', '<b>' + decodeURI(ConvertSymbols(shopName.toString())) + '</b> | <i>' + review.TimeStamp + '</i> <br />' + decodeURI(ConvertSymbols(review.ReviewMessage)).substr(0,45) + '... <br />');
                timeStamp.inject(calloutList);
                reviewContainer.inject(calloutList);
            }
            else if(review.ReviewMessage != null && review.ReviewMessage != '')
            {
                timeStamp.set('html','<b>' + decodeURI(ConvertSymbols(shopName.toString())) + '</b> | <i>' + review.TimeStamp + '</i> <br />' + decodeURI(ConvertSymbols(review.ReviewMessage)) + '<br />');
                timeStamp.inject(calloutList);
                reviewContainer.inject(calloutList);
            }
            timeStamp.addEvent('mouseover',function()
            {
                timeStamp.setStyle('color','#F69B18');  
            });
            timeStamp.addEvent('mouseout',function()
            {
                timeStamp.setStyle('color','#ffffff');
            });
            timeStamp.addEvent('click',function()
            {
                calloutList.empty();
                var reviewDetails = new Element('div',{'style':'width:95%;height:95%;padding:5px;'});
                //listingDetails.setStyle('opacity','0.5');
                
                var reviewHeader = new Element('label');
                reviewHeader.set('html','<b>' + decodeURI(ConvertSymbols(shopName.toString())) + '</b> | <i>' + review.TimeStamp + '</i><br />');
                
                var reviewMessage = new Element('label');
                reviewMessage.set('html', decodeURI(ConvertSymbols(review.ReviewMessage)) + '<br /><br />');
                
                var backToListings = new Element('label');
                backToListings.setStyle('text-decoration','underline');
                backToListings.setStyle('cursor','pointer');
                backToListings.set('html','Back to Recent Reviews');
                
                reviewHeader.inject(reviewDetails);
                reviewMessage.inject(reviewDetails);
                
                backToListings.addEvent('click',function()
                {
                    KupOfJoe.ReviewsService.GetRecentReviews(RenderRecentReviews);
                });
                backToListings.inject(reviewDetails);
                
                reviewDetails.inject(calloutList);
            });
        });
    });
}
function InsertReview()
{
    KupOfJoe.ReviewsService.InsertReview($('addReviewShops').value, $('TextBoxReview').value, $('rating_stars').value, completeHandlerInsertReview);
    $('TextBoxReview').value = "";
    $('rating_stars').value = "0";
    ResetRatingStars('main');
    _uacct = "UA-3456939-1";
    var pageTracker = _gat._getTracker(_uacct);
    pageTracker._trackPageview('/ReviewInserted');
}
function completeHandlerInsertReview(text)
{
    //KupOfJoe.ReviewsService.GetReviewsForShop($('DropDownListShops').value, completeHandlerReviewsForShop);
    $('review_message_label').set('html','Your review was successfully inserted.  Thank you for your participation.');
}
function PopReviewStates(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListStates = $('DropDownListReviewState');
    _dropDownListStates.addEvent('change',function()
    {
        KupOfJoe.MetaData.GetStateCities(this.get('value'),PopReviewCities);
    });
    obj.Result.each(function(state)
    {
        var _option = new Element('option');
        _option.set('value',state.StateID);
        _option.set('text',state.StateName);
        _option.inject(_dropDownListStates);
    });
}
function PopReviewCities(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListCities = $('DropDownListReviewCity');
    _dropDownListCities.addEvent('change',function()
    {
        //Going to get Shops within this state and generate an alphabet list based on
        //the cities in which those shops are located
        KupOfJoe.ListingsService.GetListingsByCity(this.get('value'),0,0,PopReviewShops);
    });
    _dropDownListCities.empty();
    var _option = new Element('option');
    _option.set('value','0');
    _option.set('text','[Select a City]');
    _option.inject(_dropDownListCities);
    obj.Result.each(function(city)
    {
        var _option = new Element('option');
        _option.set('value',city.CityID);
        _option.set('text',decodeURI(city.Name));
        _option.inject(_dropDownListCities);
    });
}
function PopReviewShops(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListShops = $('DropDownListShops');
    _dropDownListShops.empty();
    var _option = new Element('option');
    _option.set('value','0');
    _option.set('text','[Select a Shop]');
    _option.inject(_dropDownListShops);
    obj.Result.each(function(shop)
    {
        var _option = new Element('option');
        _option.set('value',shop.ID);
        _option.set('text',decodeURI(shop.Name));
        _option.inject(_dropDownListShops);
    });
}
function PopAddReviewStates(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListStates = $('addReviewStates');
    _dropDownListStates.addEvent('change',function()
    {
        KupOfJoe.MetaData.GetStateCities(this.get('value'),PopAddReviewCities);
    });
    obj.Result.each(function(state)
    {
        var _option = new Element('option');
        _option.set('value',state.StateID);
        _option.set('text',state.StateName);
        _option.inject(_dropDownListStates);
    });
}
function PopAddReviewCities(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListCities = $('addReviewCities');
    _dropDownListCities.addEvent('change',function()
    {
        //Going to get Shops within this state and generate an alphabet list based on
        //the cities in which those shops are located
        KupOfJoe.ListingsService.GetListingsByCity(this.get('value'),0,0,PopAddReviewShops);
    });
    _dropDownListCities.empty();
    var _option = new Element('option');
    _option.set('value','0');
    _option.set('text','[Select a City]');
    _option.inject(_dropDownListCities);
    obj.Result.each(function(city)
    {
        var _option = new Element('option');
        _option.set('value',city.CityID);
        _option.set('text',decodeURI(city.Name));
        _option.inject(_dropDownListCities);
    });
}
function PopAddReviewShops(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListShops = $('addReviewShops');
    _dropDownListShops.empty();
    var _option = new Element('option');
    _option.set('value','0');
    _option.set('text','[Select a Shop]');
    _option.inject(_dropDownListShops);
    obj.Result.each(function(shop)
    {
        var _option = new Element('option');
        _option.set('value',shop.ID);
        _option.set('text',decodeURI(shop.Name));
        _option.inject(_dropDownListShops);
    });
}