﻿window.addEvent("domready", function() {
    GetProducts("", null);
    //window.location.hash = "ns";
});

function removeFacet(i) {
    GetProducts(null, i);
}

function GetProducts(f, r) {
    var c = $('ctl00_MainPage_c').value;
    var ns = window.location.hash == 'ns' ? true : false;
    var prodList = $('product-list');
    var filters = $('filters');
    var pagination = $('pages');
    
   
    if (c.length>0) {
        prodList.set('html','');
        
        pagination.set('html','');
        prodList.addClass('loader');

        new Request.JSON({url: "/category/products.aspx", 
            onSuccess: 
                function(responseJSON, responseText) {
                    prodList.removeClass('loader');
            },

            onComplete: 
                function(result){
                    if (result.status=="success") {
                        // pagination 
                        if (result.total.toInt()>0 && result.pages>1) {
                            $('pagination').setStyle('display','block');
                            
                            var oPages = new Element("ul");
                            
                            var iStart = 1;
                            if (result.thispage>5) { iStart = result.thispage-4; }
                            
                            var iEnd = iStart + 9;
                            if (iEnd > result.pages) { iEnd = result.pages; }
                            
                            if (result.pages - iEnd < 5) { iStart = iEnd - 10; }
                            if(iStart<1) {iStart = 1;}
                            
                            for(var ix=iStart;ix<iEnd;ix++) {
                                var oPage = new Element("li");
                                var oHref = new Element('a', {
                                    'href':'?p='+ix
                                }).set('html',ix);
                                oHref.inject(oPage);
                                
                                if (result.thispage!=ix) {
                                    oPage.addClass("link");
                                } else {
                                    oPage.addClass("current");
                                }
                                oPage.inject(oPages);
                            }
                            oPages.inject(pagination);
                        } else {
                            $('pagination').setStyle('display','none');
                        }
                        
                        
                        // products
                        var oUl = new Element("ul");
                        result.products.each(function(product) {
                            var oLi = new Element("li").set('html','<a href="/images/products/1/'+product.image+'" title="' + product.description + '" class="remooz"><img src="/images/products/2/'+product.image+'"/></a><p>' + product.name + '</p>');
                            oLi.inject(oUl);
                        });
                        oUl.inject(prodList);
                        
                        
                        // filters
                        $('controls').setStyle('display','none');
                        
                        if (f!=null || r!=null) {
                            filters.set('html','');
                            if (result.filters!=null && result.total>1) {
                                result.filters.each(function(filter) {
                                    if (filter.answers!=null && filter.answers.length>0) {
                                        $('controls').setStyle('display','block');
                                        
                                        var oDiv = new Element('div', {'class':'filter'});                                    
                                        
                                        var oUl = new Element("ul");
                                        var oLi = new Element("li",{"class":"question"}).set('html',filter.question);
                                        
                                        oLi.inject(oUl);
                                        var iX = 1;
                                        
                                        filter.answers.each(function(answer) {
                                            if (answer!=null) {
                                                if(answer.occurrence.toInt() > 1 && iX < 6) {
                                                    var oLink = new Element("a").set('html',answer.answer + ' (' + answer.occurrence + ')');
                                                    oLink.addEvent("click", submitAnswer.bindWithEvent(oLink, answer.id));

                                                    var oLi = new Element("li");
                                                    oLink.inject(oLi);
                                                    oLi.inject(oUl);
                                                    iX++;
                                                }
                                            }
                                        });
                                        
                                        oUl.inject(oDiv);                                        
                                        
                                        
                                        if (iX>5) {
                                        
                                            var oDivExtraLink = new Element("div", {"class":"more-filters-box"});
                                            var oLink = new Element("a", {"class":"more-link"}).set('html','All ' + filter.question);
                                            oLink.addEvent("click", showFilters.bindWithEvent(oLink, filter.id));                                            
                                            oLink.inject(oDivExtraLink);

                                            var oUlExtras = new Element("ul");
                                            var oLi = new Element("li",{"class":"all-filters"}).set('html','All ' + filter.question);
                                            oLi.addEvent("click", showFilters.bindWithEvent(oLi, filter.id));
                                            oLi.inject(oUlExtras);
                                            var oDivExtras = new Element('div', {"id":"filter-" + filter.id,'class':'more-filters'});
                                            
                                            oLink = new Element("img", {"src":"/images/close.gif", "class":"close-link"});
                                            oLink.addEvent("click", showFilters.bindWithEvent(oLink, filter.id));
                                            oLink.inject(oDivExtras);                                            
                                                                                
                                            filter.answers.each(function(answer) {
                                                // All Filters
                                                if (answer!=null) {
                                                    if (answer.occurrence.toInt() > 1) {
                                                        var oLink = new Element("a").set('html',answer.answer + ' (' + answer.occurrence + ')');
                                                        oLink.addEvent("click", submitAnswer.bindWithEvent(oLink, answer.id));                                            
                                                    
                                                        var oLi = new Element("li");
                                                        oLink.inject(oLi);
                                                        oLi.inject(oUlExtras);
                                                    }
                                                }
                                            });    
                                            
                                            oUlExtras.inject(oDivExtras);
                                            oDivExtras.inject(oDivExtraLink);
                                            oDivExtraLink.inject(oDiv);
                                        }   
                                        
                                        oDiv.inject(filters);
                                        
                                    }
                                });  
                            }
                        }          
                        
                        // current answers
                        if (result.answers!=null && result.answers.length>0) {
                            var iX = 1;
                            var iCount = result.answers.length;
                            $('ctitle').set('html', '<a href="' + c.toLowerCase() + '.htm">' + $('ctl00_MainPage_cd').value + '</a>');
                            
                            result.answers.each(function(facet) {
                                if (iX < iCount) {
                                    $('ctitle').set('html', $('ctitle').get('html') + ' &gt; <a href="#" onclick="removeFacet(' + iX + ')">' + facet.answer + '</a>');
                                } else {
                                    $('ctitle').set('html', $('ctitle').get('html') + ' &gt; ' + facet.answer);
                                }
                                iX ++;
                            });
                        }
                        
                        
                        // Remooz
                        ReMooz.assign("a.remooz",{
                            'origin':'img',
                            'shadow':'onOpenEnd',
                            'resizeFactor':0.7,
                            'cutOut':false,
                            'opacityResize':0.4,
                            'dragging':false,
                            'centered':true
                        });

                             
                        
                    } else {
                        alert('No products found');
                    }
            }
        }).get({'c':c, 'p': $('ctl00_MainPage_p').value, 'f':f, 'r':r});
    }
}

function changePage(e, p) {
    $('ctl00_MainPage_p').value = p;
    GetProducts(null, null);
}
function submitAnswer(e, id) {
    $('ctl00_MainPage_p').value = 1;
    GetProducts(id, null);
}
function showFilters(e,id) {
    var style = $('filter-'+id).getStyle('display')=="block" ? "none" : "block";
    $('filter-'+id).setStyle('display', style);
}