var app = angular.module('mkApp', ['mgcrea.ngStrap','infinite-scroll']);

app.controller('ProductsController', ['$http', function($http) {
  var products = this;
  products.loading = false;
  products.activeFilters = {};
  products.showActiveFilters = false;
  products.catID = "";
  products.currentLang = "";  
  products.iteration = 12;
  products.items = [];
  products.remainingItems = [];

  this.loadStoredData = function(cat,lang){
    products.catID = cat;
    products.currentLang = lang;
    products.loadProducts();
  };
  
  this.loadProducts = function(){
    products.loading = true;
    
    postData = $.param({
      cat: products.catID,
      lang: products.currentLang,
      activeFilters: products.activeFilters
    });

    $http.post('/js/json/products.php?v=1',postData,{headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}}).success(function(data){
      console.log(data);
      products.remainingItems = JSON.parse(JSON.stringify(data.products));
      products.items = [];
      for(i=0;i<products.iteration;i++){
        if(products.remainingItems.length > 0){
          nextProd = products.remainingItems.shift();
          products.items.push(nextProd);
        } else {
          break;
        }
      }
      
      products.filters = data.filters;
      if(data.activeFilters == null || data.activeFilters.length == 0){
        products.showActiveFilters = false;
      } else {
        products.showActiveFilters = true;
      }
      products.allFilters = data.allFilters;
      products.loading = false;
    });
  };

  this.myPagingFunction = function(){
    for(i=0;i<products.iteration;i++){
      if(products.remainingItems.length > 0){
        nextProd = products.remainingItems.shift();
        products.items.push(nextProd);
      } else {
        break;
      }
    }
  }
  
  this.showAll = function(){
    for(i in products.remainingItems){
      products.items.push(products.remainingItems[i]);
    }
    products.remainingItems = [];
  }

  this.doFilter = function() {
    //console.log("active filters");
    //console.log(products.activeFilters);
    products.loadProducts();
  }
  
  this.removeFilter = function(filterID){
    if(filterID == "all"){
      products.activeFilters = {};
      products.showActiveFilters = false;
    } else {
      delete products.activeFilters[filterID];
    }
    products.loadProducts();
  }
  
  this.go = function(url) {
    window.location.href = url;
  };
}])

.filter('partNr', [function() {
    return function(string) {
        if (!angular.isString(string)) {
            return string;
        }
        return string.replace(/[.-\s]/g, '');
    };
}]);