﻿function completeHandler(text)
    {
        var _informationLabel = $('InformationLabel');
        var searchResults = $('search_results');
        this.response.json = JSON.decode(text, this.options.secure); 
        var obj = eval(text);
        //var _ul = new Element('ul',{'class': 'searchResults'});
        //_ul.set('id','result_list');
        //var alt = false;
        //$('shop_details').setStyle('display','none');
        
        if(obj.Result != null && obj.Result.length > 0)
        {
            var _results = $('searchResults');
            if(_results != null)
            {
                try
                {
                    _results.destroy();
                }
                catch (err)
                {
                    alert(err);
                }
            }
            var _div = new Element('div',{'class':'result_list_container'});
            _div.set('id','searchResults');
            
            //var fxSlideFeature = new Fx.Slide('featureWrapper', {duration: 1000}); 
            
            obj.Result.each(function(shop)
            {
                if(shop.Name != "Count")
                {
                    RenderShop(shop, _div);
                }
            });
            _div.inject(searchResults);
            //ExpandContainer('375','900');
            obj.Result.each(function(shop)
            {
                if(shop.Name == "Count")
                {
                    CreatePager(shop.ID, _div);
                }
            });
            
        }
        else
        {
            var _noResults = new Element('span',{'class':'no_results'});
            _noResults.set('html','<hr />There are currently no coffe shops found in your search.');
            _noResults.inject(_div);
        }
        if(_informationLabel != null)
        {
            _informationLabel.destroy();
        }
        
    }
    function CreatePager(_totalCount, _results)
    {
        var searchResults = $('detail_search');
        //this.response.json = JSON.decode(text, this.options.secure); 
        //var obj = eval(text);
        //var _results = $('searchResults');
        //if(_results != null)
        //{
          var _pager = new Element('div');
          var _pagerBottom = new Element('div');
          var _pageFromToTop = new Element('label');
          var _pageFromToBottom = new Element('label');
          var _pageSize = 5;
          var _pageStart = 1;
            var _count = _totalCount / _pageSize;
            for(counter=1;counter<=_count;counter++)
            {
                if(counter > 1)
                {
                    _pageStart = _pageStart + _pageSize;
                }
                //_newHtml = _pager.get('html') + counter + ' | ';
                var _pageLink = new Element('span',{'id':'page_top_' + counter,'value':_pageStart,'class':'pager_link'});
                var _pageLinkBottom = new Element('span',{'id':'page_bottom_' + counter,'value':_pageStart,'class':'pager_link'});
                
                var _pageNumSep = new Element('label');
                _pageNumSep.set('html','&nbsp;|&nbsp;');
                _pageLink.set('html',counter);
                
//                _pageLink.addEvent('mouseover',function()
//                {
//                    this.setStyle('backgroundColor','#CC6600');
//                });
//                _pageLink.addEvent('mouseout',function()
//                {
//                    this.setStyle('backgroundColor','#ffffff');
//                });
                _pageLink.inject(_pager);
                _pageLink.addEvent('click', function()
                {
                    //alert(this.get('value'));
                    //setTimeout("KupOfJoe.ListingsService.GetFilteredListingsCount($('TextBoxName').value, $('DropDownListCity').value, $('TextBoxZip').value, completeHandlerListingCount)",100);
                    var _totalShops = 0;
                    this.setStyle('backgroundColor','#C2C0C0');
                    //var _fxResults = new Fx.Slide($('searchResults'),{duration:1000});
                    var _to = this.get('value') + _pageSize;
                    _pageFromToTop.set('html', this.get('value') + ' - ' + _to);
                    KupOfJoe.ListingsService.GetFilteredListings($('searchName').value, $('searchCity').value, '',this.get('value'),_pageSize, _totalShops, completeHandler);
                    //_fxResults.toggle();
                    _pageLink.setStyle('text-decoration','underline');
                });
                
                _pageNumSep.inject(_pager);
                
                //bottom pager
                var _pageNumBottomSep = new Element('label');
                _pageNumBottomSep.set('html','&nbsp;|&nbsp;');
                _pageLinkBottom.set('html',counter);
//                _pageLinkBottom.addEvent('mouseover',function()
//                {
//                    this.setStyle('backgroundColor','#CC6600');
//                });
//                _pageLinkBottom.addEvent('mouseout',function()
//                {
//                    this.setStyle('backgroundColor','#ffffff');
//                });
                _pageLinkBottom.addEvent('click', function()
                {
                    var _totalShops = 0;
                    this.setStyle('backgroundColor','#C2C0C0');
                    KupOfJoe.ListingsService.GetFilteredListings($('searchName').value, $('searchCity').value, '',this.get('value'),_pageSize, _totalShops, completeHandler);
                    _pageLinkBottom.setStyle('text-decoration','underline');
                });
                _pageLinkBottom.inject(_pagerBottom);
                _pageNumBottomSep.inject(_pagerBottom);
                
            }
            _pageFromToTop.inject(_pager);
            var _sep = new Element('hr');
            _sep.inject(_pager);
            
            
            _pager.inject(_results,'top');
            _pagerBottom.inject(_results,'bottom');
            
        //}
    }
function AllListingsCompleteHandler(text)
    {
        this.response.json = JSON.decode(text, this.options.secure); 
        var obj = eval(text);
        var _coffeeShopListings = new Element('div',{'class':'result_list_container'});
            _coffeeShopListings.set('id','searchResults');
        //var _coffeeShopListings = $('sub_level');
        if(obj.Result != null && obj.Result.length > 0)
        {
            BlankExistingElements();
            var _results = $('searchResults');
            if(_results != null)
            {
                try
                {
                    _results.destroy();
                }
                catch (err)
                {
                    alert(err);
                }
            }
            _coffeeShopListings.set('html','');
            _coffeeShopListings.empty();
            _coffeeShopListings.setStyles({
            display: 'block',
            height: 600
            });
            
            obj.Result.each(function(shop)
            {
                RenderShop(shop, _coffeeShopListings);
            });
            _coffeeShopListings.inject(_results);
            obj.Result.each(function(shop)
            {
                if(shop.Name == "Count")
                {
                    CreatePager(shop.ID, _results);
                }
            });
        }
        else
        {
            var _noResults = new Element('span',{'class':'no_results'});
            _noResults.set('html','<hr />There are currently no coffe shops found in your search.');
            _noResults.inject(_div);
        }
        var mySlide = new Fx.Slide(_coffeeShopListings, {mode : 'vertical'}).hide().toggle().chain(function(){
            this.show().slideIn('vertical');
            });
        
    }
    function completeHandlerHelloWorld(text)
    {
        alert(text);
        this.response.json = JSON.decode(text, this.options.secure); 
    }
    function completeHandlerCities(text)
    {
        this.response.json = JSON.decode(text, this.options.secure);
        var obj = eval(text);
        var _dropDownListCities = $('searchCity');
        _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 completeHandlerReviewCities(text)
    {
        this.response.json = JSON.decode(text, this.options.secure);
        var obj = eval(text);
        var _dropDownListCities = $('DropDownListReviewCity');
        _dropDownListCities.addEvent('change',function()
        {
            //alert(this.get('value'));
            //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,completeHandlerShops);
        });
        _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 completeHandlerStates(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListStates = $('searchState');
    _dropDownListStates.addEvent('change',function()
    {
        KupOfJoe.MetaData.GetStateCities(this.get('value'),completeHandlerCities);
    });
    obj.Result.each(function(state)
    {
        var _option = new Element('option');
        _option.set('value',state.StateID);
        _option.set('text',state.StateName);
        _option.inject(_dropDownListStates);
    });
}
    function completeHandlerShops(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 completeHandlerFeaturedShop(text)
    {
        //alert(text);
        var _featuredShopHeaderContainer = $('featured_shop');
        var _photoContainer = $('feature_one');
        var _reviewsContainer = $('feature_two');
        var _generalInfo = $('feature_three');
        var _contactContainer = $('feature_four');
        this.response.json = JSON.decode(text, this.options.secure); 
        var obj = eval(text);
        if(obj.Result != null && obj.Result.length > 0)
        {
            obj.Result.each(function(shop)
            {
                //alert(shop.Reviews.length);
                var _header = new Element('span',{'class':'featured_shop_header'});
                _header.set('html',shop.Name);
                _header.inject(_featuredShopHeaderContainer,'top');
                
                var _shopInfo = new Element('span');
                _shopInfo.set('html','<br />' + shop.Address + '<br />' + decodeURI(shop.CityInfo.Name) + '&nbsp;' + shop.StateInfo.StateAbbr + '&nbsp;&nbsp;' + shop.Zip);
                _shopInfo.inject(_generalInfo);
                
                var _photoGallery = new Element('img',{'src':shop.PhotoGallery[0].Src,'width':'175','height':'135','id':'main_photo_child'});
                _photoContainer.set('html','<br />');
                _photoGallery.inject(_photoContainer,'bottom');
                
                if(shop.Reviews != null && shop.Reviews.length > 0)
                {
                    shop.Reviews.each(function(review)
                    {
                    var _spanReview = new Element('span');
                    var _reviewRating = new Element('span');
                    for(i=0;i<=review.Rating-1;i++)
                    {
                        var _filledStar = new Element('img',{'src':'app_themes/main/images/FilledStar.png'});
                        _filledStar.inject(_reviewRating);
                    }
                    _spanReview.setStyle('align','left');
                    try
                    {
                    _spanReview.set('html','<hr />' + decodeURI(review.ReviewMessage.substring(0,50)));
                    }
                    catch(URIError)
                    {
                    }
                    _reviewsContainer.setStyle('padding','3');
                    _reviewsContainer.setStyle('text-align','left');
                    _reviewsContainer.setStyle('overflow','hidden');
                    
                    _spanReview.inject(_reviewsContainer);
                    _reviewRating.inject(_reviewsContainer);
                    });
                }
                
                if(shop.Phone != "")
                {
                var _phone = new Element('span');
                _phone.set('html','<br />' + shop.Phone);
                _phone.inject(_contactContainer);
                }
                if(shop.Email != "")
                {
                var _email = new Element('span');
                _email.set('html','<br />' + shop.Email);
                _email.inject(_contactContainer);
                }
                if(shop.Website != "")
                {
                var _website = new Element('span');
                _website.set('html','<br />' + shop.Website);
                _website.inject(_contactContainer);
                }
            });
        }
    }
function completeHandlerReviewsForShop(reviews)
{
    var searchResults = $('shop_reviews');
    this.response.json = JSON.decode(reviews, this.options.secure); 
    var obj = eval(reviews);
//    if($('searchResults') != null)
//    {
//        searchResults.removeChild($('searchResults'));
//    }
    if($('shopReviews') != null)
    {
        searchResults.removeChild($('shopReviews'));
    }
    var _div = new Element('div',{'class':'result_list_container'});
    _div.set('id','shopReviews');
    if(obj.Result != null && obj.Result.length > 0)
    {
        obj.Result.each(function(review)
        {
            if(review)
            {
            var _reviewheader = new Element('span',{'class':'result_list_header'});
            var _review = new Element('span',{'class':'result_list_review'});
            var _reviewRating = new Element('span');
            for(i=0;i<=review.Rating-1;i++)
            {
                var _filledStar = new Element('img',{'src':'app_themes/main/images/FilledStar.png'});
                _filledStar.inject(_reviewRating);
            }
            
            _reviewheader.set('html',review.TimeStamp);
            if(review.ReviewMessage != null)
            {
                try
                {
                _review.set('html','<hr class="search_result_hr"/>' + decodeURI(review.ReviewMessage));
                }
                catch(_err)
                {
                _review.set('html','<hr class="search_result_hr" />' + review.ReviewMessage);
                }
            }
            
            _reviewRating.inject(_reviewheader);
            _reviewheader.inject(_div);
            _review.inject(_div);
            }
        });
        _div.inject(searchResults);
    }
    else
    {
        var firstReviewMessageContainer = new Element('div');
        firstReviewMessageContainer.setStyle('text-align','center');
        var firstReviewer = new Element('label',{'html':'<br /><br /><b>There is currently no reviews.  <br />Be the first to review this coffee shop!</b><br /><br />'});
        var addReviewControls = $('add_review_controls');
        if (addReviewControls != null)
        {
            firstReviewMessageContainer.empty();
            $('review_controls').setStyle('display','none');
            var reviewSelected = $('DropDownListReviewState').getSelected();
            var reviewCity = $('DropDownListReviewCity').getSelected();
            var reviewShop = $('DropDownListShops').getSelected();
            //alert(reviewSelected.get('value'));
            
            KupOfJoe.MetaData.GetStateCities(reviewSelected.get('value'),PopAddReviewCities);
            KupOfJoe.ListingsService.GetListingsByCity(reviewCity.get('value'),0,0,PopAddReviewShops);
            
            $('addReviewStates').value = reviewSelected.get('value');
            (function()
                {$('addReviewCities').value = reviewCity.get('value');}).delay(500);
            (function()
                {$('addReviewShops').value = reviewShop.get('value');}).delay(500);
            //$('addReviewShops').value = '';
            
            firstReviewer.inject(firstReviewMessageContainer);
            firstReviewMessageContainer.inject(addReviewControls, 'top');
            addReviewControls.setStyle('display','block');
        }
    }
}
function completeHandlerForDetailInsertReview(text)
{
    //alert($('add_review').value);
    KupOfJoe.ReviewsService.GetReviewsForShop($('add_review').value, completeHandlerForDetailShopReviews);
}

function completeHandlerForDetailShopReviews(reviews)
{
    this.response.json = JSON.decode(reviews, this.options.secure); 
    var obj = eval(reviews);
    //DETAILS REVIEWS
    var _divReviewsHeader = new Element('span',{'html':'REVIEWS<hr />'});
    var _divReviews = $('review_info');
    //new Element('div',{'id':'review_info','class':'shop_details_reviews'});
    _divReviews.empty();
    _divReviewsHeader.inject(_divReviews);
    //alert(obj.Result.length);
    obj.Result.each(function(review)
    {
        var _reviewheader = new Element('span',{'class':'result_list_header'});
        var _reviewRating = new Element('span');
        for(i=0;i<=review.Rating-1;i++)
        {
            var _filledStar = new Element('img',{'src':'app_themes/main/images/FilledStar.png'});
            _filledStar.inject(_reviewRating);
        }
        var _review = new Element('span',{'class':'result_list_review'});
        _reviewheader.set('html',review.TimeStamp);
        
        _review.set('html','<hr />' + decodeURI(review.ReviewMessage));
        
        _reviewRating.inject(_reviewheader);
        _reviewheader.inject(_divReviews);
        _review.inject(_divReviews);
    });
    //DETAILS REVIEWS
}
function completeShopDetailsHandlerStates(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListStates = $('state_address');
    obj.Result.each(function(state)
    {
        var _option = new Element('option');
        _option.set('value',state.StateID);
        _option.set('text',state.StateName);
        _option.inject(_dropDownListStates);
    });
}

function completeHandlerAddShopStates(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListStates = $('addshop_states');
    _dropDownListStates.addEvent('change',function()
    {
        KupOfJoe.MetaData.GetStateCities(this.get('value'),completeHandlerAddShopCities);
    });
    obj.Result.each(function(state)
    {
        var _option = new Element('option');
        _option.set('value',state.StateID);
        _option.set('text',state.StateName);
        _option.inject(_dropDownListStates);
        
    });
}
function completeHandlerAddShopCities(text)
    {
        this.response.json = JSON.decode(text, this.options.secure);
        var obj = eval(text);
        var _dropDownListCities = $('addshop_cities');
        if(_dropDownListCities)
        {
        _dropDownListCities.empty();
        }
        if(obj.Result.length > 0)
        {
            if(_dropDownListCities == null)
            {
                _dropDownListCities = new Element('select',{'id':'addshop_cities'});
                 var _newCity = $('addshop_city');
                _dropDownListCities.replaces(_newCity);
                
            }
            _dropDownListCities.setStyle('visibility','visible');
            //_newCity.setStyle('visibility','hidden');
            var _option = new Element('option');
            _option.set('value','0');
            _option.set('text','[Select a City]');
            _option.inject(_dropDownListCities);
            
            var _option = new Element('option');
            _option.set('value','1');
            _option.set('text','[Add New 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);
            });
            _dropDownListCities.focus();
            _dropDownListCities.addEvent('change',function()
            {
                if(this.get('value') == 1)
                {
                    var _newCity = new Element('input',{'id':'addshop_city'});
                    var _dropDownListCitiesParent = _dropDownListCities.getParent();
                    _newCity.replaces(_dropDownListCities);
                    _newCity.focus();
                }
            });
        }
        else
        {
            var _existingCity = $('addshop_city');
            if(_existingCity == null)
            {
            var _newCity = new Element('input',{'id':'addshop_city'});
            var _dropDownListCitiesParent = _dropDownListCities.getParent();
            _newCity.replaces(_dropDownListCities);
            _newCity.focus();
            }
        }
    }
function completeHandlerInternetTypes(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListInternetTypes = $('addshop_internet_type');
    obj.Result.each(function(internetType)
    {
        var _option = new Element('option');
        _option.set('value',internetType.ID);
        _option.set('text',internetType.Name);
        _option.inject(_dropDownListInternetTypes);
    });
}

function completeHandlerSeatingTypes(text)
{
    this.response.json = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _dropDownListSeatingTypes = $('addshop_seating_type');
    obj.Result.each(function(seatingType)
    {
        var _option = new Element('option');
        _option.set('value',seatingType.ID);
        _option.set('text',seatingType.Name);
        _option.inject(_dropDownListSeatingTypes);
    });
}
function completeHandlerRelatedLinks(text)
{
     this.response.text = JSON.decode(text, this.options.secure);
     var obj = eval(text);
     obj.Result.each(function(relatedLink)
     {
         var _relatedBuzz = $('detail_relatedbuzz');
         //var _relatedItem = new Element('span');
         var _link = new Element('a',{'href':relatedLink.Link, 'html':relatedLink.Name, 'target':'_blank'});
         _link.inject(_relatedBuzz);
     });
}
function completeHandlerMetaKeywords(text)
{
    this.response.text = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    var _head = $('koj_head');
    var _meta = new Element('meta',{'name':'Keywords'});
    var _keywords = '';
    obj.Result.each(function(keyword)
    {
        _keywords = keyword.Keyword + ',' + _keywords;
    });
    _meta.set('content',_keywords.substr(0,_keywords.length - 1));
    _meta.inject(_head);
}
function completeHandlerForSearchResultInsertReview(text)
{
    //alert($('add_review').value);
    //KupOfJoe.ReviewsService.GetReviewsForShop($('add_review').value, completeHandlerForDetailShopReviews);
}
function completeInsertShopHandler(text)
{

}

function completeHandlerInsertMember(text)
{
    this.response.text = JSON.decode(text, this.options.secure);
    var obj = eval(text);
    if(obj)
    {
         var _username = $('registerUsername');
         var _password = $('registerPassword');
         var _email = $('registerEmail');
         
         
        var _registerContainer = $('detail_register');
        var _success = new Element('span',{'class':'message_content'});
        _registerContainer.setStyle('text-align','center');
        
        _success.set('html','Thank you for registering with KupOfJoe.com.  You will now be able to add shops and much more to come.');
        _success.inject(_registerContainer,'top');
        
        _username.value = '';
        _password.value = '';
        _email.value = '';
    }
}