app.service('shareService', function() {
    var packedData = [];
    var shopIndexKey = 0;
    var shopRegister = function(strShopId) {
        shopIndexKey = parseInt(strShopId);
        packedData[shopIndexKey] = [];
    };
    var addData = function(keyName, newObj) {
        packedData[shopIndexKey][keyName] = newObj;
    };
    var getData = function(keyName) {
        return (typeof packedData[shopIndexKey][keyName] !== 'undefined') ? packedData[shopIndexKey][keyName] : false;
    };
    var getDataAll = function() {
        return packedData;
    };
    return {
        register: shopRegister,
        add: addData,
        get: getData,
        getAll: getDataAll
    };
});
app.controller('homeController', function($scope, $rootScope, $location, $route, $timeout, $window, $routeParams, UiFlexImage, PathViewManager, $fallback, share, shareService, $http) {
    var vm = this;
    UiCustomerBox.listen.me(function(customerData) {
        if (customerData == null) {
            /* Code */
        } else {
            /* Code */
        }
    });
    var $GET = function(endPoint, dataSend, callback) {
        $http.get('https://infosat.getappeasy.com/store/api/v1/' + endPoint, {
            params: dataSend
        }).then(function(e) {
            callback(e.data);
        });
    };
    /* register share data */
    shareService.register(CUR_THEME.shop_id());
    // template params
    var baseTemplate = CUR_THEME.file_url() + "templates/";
    vm.icnPath = CUR_THEME.file_url() + '../../assets/';
    vm.imgPath = CUR_THEME.file_url() + 'images/';
    vm.pdfPath = CUR_THEME.file_url() + 'file_pdf/';
    vm.tplPath = CUR_THEME.file_url() + "templates/tpl/";
    vm.phpPath = CUR_THEME.file_url() + "php/";
    vm.phpPathsend = CUR_THEME.file_url() + "sendgrid/";
    vm.sendGridPath = _ui_share_host + '../sendgrid/',
        vm.tplHome = function(path, tplName) {
            var templateHtml = "";
            if (tplName.indexOf('.html') >= 0) {
                templateHtml = tplName.split('.html')[0];
            } else {
                templateHtml = tplName;
            }
            return baseTemplate + path + '/' + templateHtml + '.html';
        };
    vm.thirdPartyApi = 'extensions/devsource/dev.sugarfree/dealer/api.php'; // bidyang
    /* Default Page Params */
    vm.pageName = 'home';
    vm.routeParams = {};
    /* Route Pages Params */
    /* Route Pages Params */
    /* Route Pages Params */
    $rootScope.$on('$routeChangeStart', function(event, current, prev, $route) {
        //$('html').addClass('noscroll noscroll-long');
        var virtualCart = $("#root-virtual-cart");
        var virtualCartTypeA = $("#root-virtual-cart-type-a");
        var shop_id = CUR_THEME.shop_id();
        if (virtualCart) {
            virtualCart.css("display", "block");
            if (shop_id == 718) {
                $('.component-bar').css("display", "block");
            }
        }
        if (virtualCartTypeA) {
            virtualCartTypeA.css("display", "block");
        }
        angular.element('.load-effect').addClass('is-active');
        vm.pageName = current.$$route.page;
        vm.routeParams = $routeParams;
        switch (vm.pageName) {
            case 'home':
                if (shop_id == 762) {
                    $location.url('').replace();
                }
                break;
            case 'product-detail':
                break;
            case 'category-lists':
                break;
            case 'album':
                break;
            case 'album-detail':
                break;
            case 'viewcart':
                virtualCart.css("display", "none");
                virtualCartTypeA.css("display", "none");
                if (shop_id == 718) {
                    $('.component-bar').css("display", "none");
                }
            case 'sub-category':
                var dataSend = {};
                angular.forEach($location.search(), function(v, k) {
                    dataSend[k] = v;
                });
                if (typeof dataSend.category !== 'undefined') {
                    vm.pageCategory = dataSend.category;
                    vm.getCategoryDetail(dataSend.category);
                    vm.getCategoryRoot(dataSend.category);
                }
                break;
            default:
                // default action
                break;
        }
    });
    $rootScope.$on('$routeChangeSuccess', function(event, current, prev) {
        vm.pageName = current.$$route.page;
        $('html,body').animate({
            scrollTop: 0
        }, 'slow');
        if (vm.pageName !== 'product-detail') {
            var clearLoading1 = setTimeout(function() {
                angular.element('.load-effect').addClass('de-active');
                clearTimeout(clearLoading1);
            }, 500);
            var clearLoading2 = setTimeout(function() {
                angular.element('.load-effect').addClass('loaded');
                angular.element('.load-effect').removeClass('is-active de-active');
                angular.element('.load-effect').removeClass('loaded');
                clearTimeout(clearLoading2);
            }, 1500);
        }
        if (vm.pageName == 'home') {
            vm.headerComponentId = "001";
        } else {
            vm.headerComponentId = "002";
        }
        if (vm.activateMenuCheck) {
            vm.activateMobileMenu('rec15300114', 't228');
        }
        switch (vm.pageName) {
            case 'home':
                break;
            default:
                break;
        }
        /* Manage Fallback by Falback.js */
        $fallback.init();
        /* Pixel */
        $pixelScript.watch();
        if (CUR_THEME.shop_id() == "635") {
            /* page cart style (lightmax) */
            /*vm.pageCart.get();*/
        }
        /*vm.pageCart.get();*/
    });
    /* Start Event Broadcast */
    /* Start Event Broadcast */
    /* Start Event Broadcast */
    $rootScope.$on('makeCarouselBroadcast', function(event, args) {
        var dataReceive = args;
        var elementName = dataReceive.element_name;
        var option = dataReceive.element_option;
        if ($(elementName).hasClass('slick-initialized') || $(elementName).hasClass('slick-slider')) {
            var a = $(elementName).slick('unslick');
            if (a) {
                $timeout(function() {
                    $(elementName).not('.slick-initialized').slick(option);
                }, 500);
            }
        } else {
            $timeout(function() {
                $(elementName).not('.slick-initialized').slick(option);
            }, 500);
        }
    });
    /* End Event Broadcast */
    /* End Event Broadcast */
    /* End Event Broadcast */
    /* Route Pages Application Params */
    /* Route Pages Application Params */
    /* Route Pages Application Params */
    $rootScope.$on('$routeChangeStart', function(event, current, prev, $route) {
        angular.element('.load-effect').addClass('is-active');
        vm.pageName = current.$$route.page;
        vm.routeParams = $routeParams;
        var page = vm.getPageName(vm.pageName);
        switch (page) {
            case 'app':
                console.log("ON application")
                vm.setHideMenuFooter();
                break;
            default:
                console.log("NOT application")
                break;
        }
    });
    vm.trumpComponentCarts = function() {
        var controlCart = share.getTrumpComponentCarts();
        var component_carts = $('.cover-cards').hasClass('active');
        if (!component_carts) {
            var component_icon_cart = $("div").hasClass('cover-icon-carts');
            if (component_icon_cart) {
                controlCart.cart();
            }
        } else {
            var component_icon_cart = $("div").hasClass('cover-icon-carts');
            if (component_icon_cart) {
                controlCart.load();
            }
        }
    };
    vm.getPageName = function(pageName) {
        var page = pageName;
        var data = page.split("-");
        var dataReturn = data[0];
        return dataReturn;
    };
    vm.applicationState = true;
    vm.setHideMenuFooter = function() {
        vm.applicationState = false;
    };
    /* Route Pages Application Params */
    /* Route Pages Application Params */
    /* Route Pages Application Params */
    /* Fetch Base Shop Data */
    vm.shopSettings = false;
    vm.getShopBaseSettings = function() {
        vm.shopSettings = false;
        if (shareService.get('shop/current') !== false) {
            vm.shopSettings = shareService.get('shop/current');
            console.log('shop/current: shopSettings : exist', vm.shopSettings);
            return;
        } else {
            GAEAPI.get('shop/current', {}).then(function(e) {
                if (e.ok == 1) {
                    vm.shopSettings = e.data;
                    shareService.add('shop/current', e.data);
                } else {
                    vm.shopSettings = false;
                }
                console.log('shop/current: shopSettings', e);
            });
        }
    };
    vm.getShopBaseSettings();
    /**
     * view current routeParams
     * @return none
     * @return object
     */
    vm._isLogout = function() {
        var dataSend = {};
        GAEAPI.get('customer/logout', dataSend).then(function(output) {
            if (output.ok == 1) {
                UiCustomerBox.apiGetCustomerData(function() {});
            }
        });
    };
    vm._viewRouteParams = function() {
        return $routeParams;
    };
    /**
     * Check if object array available for "website application" or "Mobile application"
     * @params object array
     * return true | false (default)
     */
    vm._showWeb = function(objArray) {
        var r = false;
        for (var i = 0; i < objArray.length; i++) {
            if (objArray[i].badge_id == 18) {
                r = true;
                break;
            }
        }
        return r;
    };
    vm._showApp = function(objArray) {
        var r = false;
        for (var i = 0; i < objArray.length; i++) {
            if (objArray[i].badge_id == 19) {
                r = true;
                break;
            }
        }
        return r;
    };
    /**
     * get shop setting
     */
    vm.shopDetail = [];
    vm.shopFacebook = '';
    vm.shopGoogle = '';
    vm.shopTwitter = '';
    vm.shopInstagram = '';
    vm.shopYoutube = '';
    vm.shopLine = '';
    vm.getShopDetail = function() {
        var dataSend = {};
        GAEAPI.get('shop/current', dataSend, $scope).then(function(res) {
            console.debug("shop/current ----", res);
            if (res.ok == 1) {
                vm.shopDetail = res.data;
                if (vm.shopDetail.shop_extend_data) {
                    angular.forEach(vm.shopDetail.shop_extend_data, function(v, k) {
                        if (k == 'facebook_url' && v != '') {
                            vm.shopFacebook = v;
                        }
                        if (k == 'google_url' && v != '') {
                            vm.shopGoogle = v;
                        }
                        if (k == 'twitter_url' && v != '') {
                            vm.shopTwitter = v;
                        }
                        if (k == 'instagram_url' && v != '') {
                            vm.shopInstagram = v;
                        }
                        if (k == 'youtube_url' && v != '') {
                            vm.shopYoutube = v;
                        }
                        if (k == 'line_id' && v != '') {
                            vm.shopLineTxt = v;
                            if (v.substring(0, 1) == '@') {
                                vm.shopLine = 'http://line.me/ti/p/%40' + v.substring(1);
                            } else {
                                vm.shopLine = 'http://line.me/ti/p/~' + v;
                            }
                        }
                    });
                };
            } else {
                vm.shopDetail = [];
            }
        });
    };
    /*galleryList*/
    vm.galleryList = [];
    vm.getGalleryList = function() {
        var dataSend = {
            'cur_page': 1,
            'per_page': 100,
            'txt_sortby': 'gallery_create_time_DESC',
        };
        GAEAPI.get('gallery/lists', dataSend, $scope).then(function(res) {
            if (res.ok == 1) {
                vm.galleryList = res.data.dataList;
                console.log("gallery :", vm.galleryList);
            }
        });
    };
    vm.getGalleryList();
    /*
     * make date by momentjs
     * @params dateStr (string)
     * @return string
     */
    vm._makeDate = function(dateStr) {
        return (dateStr != "") ? moment(parseInt(dateStr) * 1000).format('LL') : "";
    };
    /*
     * 
     * when click on mobile menu
     * @params element id (string)
     * @params class prefix name (string)
     * @return event
     */
    vm.activateMenuCheck = false;
    vm.activateMobileMenu = function(idParent, prefixClass) {
        if (!vm.activateMenuCheck) {
            angular.element('#' + idParent + ' .' + prefixClass + '__mobile').addClass(prefixClass + '_opened');
            angular.element('#' + idParent + ' .' + prefixClass + '__positionfixed').removeClass(prefixClass + '__hidden');
            angular.element('#' + idParent + ' .' + prefixClass + '__positionfixed').removeClass(prefixClass + '__beforeready');
            vm.activateMenuCheck = true;
        } else {
            angular.element('#' + idParent + ' .' + prefixClass + '__mobile').removeClass(prefixClass + '_opened');
            angular.element('#' + idParent + ' .' + prefixClass + '__positionfixed').addClass(prefixClass + '__hidden');
            angular.element('#' + idParent + ' .' + prefixClass + '__positionfixed').addClass(prefixClass + '__beforeready');
            vm.activateMenuCheck = false;
        }
    };
    vm.windowOpneBlank = function(url) {
        if (url != '') {
            window.open(url, '_blank');
        }
    };
    vm.pageGo = function(where, and) {
        // alert(where+ and);
        vm.mobileClose();
        setTimeout(function() {
            window.location.href = where + and;
        }, 500);
    }
    vm.mobileOpen = function() {
        if (!$('.menyTopMobileDrop').hasClass('active')) {
            $('.menyTopMobileDrop').addClass('active');
            /* $('body').css('position','fixed'); */
            $('body').css('overflow', 'hidden');
        }
    }
    vm.mobileClose = function() {
        if ($('.menyTopMobileDrop').hasClass('active')) {
            $('.menyTopMobileDrop').removeClass('active');
            $('body').css('position', 'relative');
            $('body').css('overflow', 'auto');
        }
    }
    vm.unactiveMobileMenu = function() {
        $('body').css('position', 'relative');
        $('body').css('overflow', 'auto');
        if (angular.element('._compoment_header').hasClass('mobile_open_active')) {
            angular.element('._compoment_header').removeClass('mobile_open_active');
            angular.element('.close').removeClass('active_x');
            angular.element('.section').removeClass('active_y');
            angular.element('._compoment_header .mobile').removeClass('active');
        }
    };
    /**
     * Blog
     * Get current blog id for blog-detail page
     * @params none
     * @return blog_id
     */
    vm._blogId = function() {
        return $routeParams.blog_id || 0;
    };
    vm._branchId = function() {
        return $routeParams.branch_id || 0;
    };
    vm._promotionid = function() {
        console.log('promotion_id_title', $routeParams);
        return $routeParams.promotion_id || 0;
    };
    vm.f = function() {
        console.log('_resultid', $routeParams);
        return $routeParams.result_id || 0;
    };
    /**
     * Blog
     * Get Blog type list for blog page
     * @params none
     * @return array
     */
    vm._blog_type_list = false;
    vm._blog_type_list_load = false;
    vm._get_blog_type_list = function() {
        vm._clear_blog_type_list();
        GAEAPI.get('blog/lists', {
            'cur_page': 1,
            'per_page': 20,
            'txt_sortby': 'blog_title_a-z'
        }).then(function(res) {
            vm._blog_type_list_load = true;
            if (res.ok === 1) {
                vm._blog_type_list = res.data.dataList;
            }
        });
    };
    vm._clear_blog_type_list = function() {};
    vm._get_blog_type_list();
    /**
     * Page
     * Get page list array
     * @params none
     * @return array
     */
    vm._page_lists = [];
    vm._page_lists_load = false;
    vm._get_page_lists = function() {
        vm._clear_page_lists();
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
            'txt_sortby': 'page_oldest_create'
        };
        GAEAPI.get('page/lists', dataSend).then(function(res) {
            vm._page_lists_load = true;
            if (res.ok === 1) {
                vm._page_lists = res.data.dataList;
                angular.forEach($scope._page_lists, function(item, key) {
                    if (item.page_search_url == "") {
                        item.page_search_url = item.page_id;
                    }
                });
            }
        });
    };
    vm._clear_page_lists = function() {
        vm._page_lists = false;
        vm._page_lists_load = false;
    };
    vm._get_page_lists();
    vm._page_category = false;
    vm._page_category_load = false;
    vm._get_page_category = function() {
        vm._clear_page_lists();
        var txtSortBy = 'referral_name_a-z';
        if (CUR_THEME.shop_id() == 635) {
            txtSortBy = 'referral_sort_index_asc_name_asc';
        }
        if (CUR_THEME.shop_id() == 541) {
            txtSortBy = 'referral_sort_index_asc_name_asc';
        }
        if (CUR_THEME.shop_id() == 647) {
            txtSortBy = 'referral_sort_index_asc_name_asc';
        }
        if (CUR_THEME.shop_id() == 477) {
            txtSortBy = 'referral_sort_index_asc_name_asc';
        }
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_sortby': txtSortBy,
        };
        if (CUR_THEME.shop_id() == 646) {
            vm._page_category_load = true;
            vm._page_category = window.referralMap.data;
            console.log("map : from cache php", vm._page_category);
            return;
        }
        GAEAPI.get('referral/map', dataSend).then(function(res) {
            vm._page_category_load = true;
            if (res.ok === 1) {
                vm._page_category = res.data;
                console.log("map : ", vm._page_category);
                shareService.add('referralMap', res.data);
            }
        });
    };
    vm._clear_page_category = function() {
        vm._page_category = false;
        vm._page_category_load = false;
    };
    vm._get_page_category();
    vm.category_ = false;
    vm.get_category_ = function() {
        var txt_filter_json = {
            'badge_id_array': [18, 16]
        };
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('referral/map', dataSend, $scope).then(function(res) {
            if (res.ok === 1) {
                vm.category_ = res.data;
                if (CUR_THEME.shop_id() == 741) {
                    for (var i = 0; i < vm.category_.length; i++) {
                        vm.get_product_dacseediver(vm.category_[i].referral_id);
                    }
                }
            }
        });
    };
    vm.get_category_();
    /* dacsee catmaplist */
    vm.category_dacseediver = false;
    vm.get_category_dacseediver = function() {
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_parent_id': 10249,
            'txt_sortby': 'referral_name_a-z',
        };
        GAEAPI.get('referral/map', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.category_dacseediver = res.data;
            }
        });
    };
    vm.category_dacseetour = false;
    vm.get_category_dacseetour = function() {
        // var txt_filter_json = {
        //     'badge_id_array': [18]
        // };
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_parent_id': 10250,
            'txt_sortby': 'referral_name_a-z',
            // 'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('referral/map', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.category_dacseetour = res.data;
            }
        });
    };
    vm.product_dacseediver = [];
    vm.get_product_dacseediver = function(refid) {
        console.log("get_product_dacseediver : ", refid);
        vm.product_dacseediver[refid] = [];
        var txt_filter_json = {
            "referral_id_array": [refid],
            "badge_id_array": [16, 18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 6,
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        console.log("get_product_dacseediver : dataSend : ", dataSend);
        GAEAPI.get('product/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.product_dacseediver[refid] = res.data.dataList;
                console.log("uweywujssdhsd : ", vm.product_dacseediver[refid]);
            }
        });
        // return vm.product_dacseediver;
    };
    vm.productcat_evo = false;
    vm.get_productcat_evo = function() {
        var txt_filter_json = {
            'badge_id_array': [18],
            'referral_id_array': [11646]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 4,
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('product/lists', dataSend, $scope).then(function(res) {
            if (res.ok === 1) {
                vm.productcat_evo = res.data.dataList;
            }
        });
    };
    vm.blog_vito_one = [];
    vm.get_blog_vito_one = function() {
        var txt_filter_json = {
            "blog_id_array": [337],
            "badge_id_array": [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 6,
            'txt_filter_json': JSON.stringify(txt_filter_json),
            // 'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('post/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.blog_vito_one = res.data.dataList;
            }
        });
    };
    vm.dataPostLists = [];
    vm.getPostListsSet = function(cur_page, per_page, txt_sortby) {
        var txt_filter_json = {
            'badge_id_array': [18]
        }
        var dataSend = {
            'cur_page': cur_page,
            'per_page': per_page,
            'txt_sortby': txt_sortby,
            'txt_filter_json': JSON.stringify(txt_filter_json)
        };
        console.log("getPostListsSet : dataSend : ", dataSend);
        GAEAPI.get('post/lists', dataSend, $scope).then(function(output) {
            console.log("getPostListsSet : output : ", output);
            if (output.ok == 1) {
                vm.dataPostLists = output.data.dataList;
            }
        });
    }
    // vm._makeDate = function(dateStr) {
    //         return (dateStr != "") ? moment(parseInt(dateStr) * 1000).format('LL') : "";
    //     };
    vm.blog_vito_two = [];
    vm.get_blog_vito_two = function() {
        var txt_filter_json = {
            "blog_id_array": [338],
            "badge_id_array": [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 6,
            'txt_filter_json': JSON.stringify(txt_filter_json),
            // 'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('post/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.blog_vito_two = res.data.dataList;
            }
        });
    };
    vm.blog_dacseetour = [];
    vm.get_blog_dacseetour = function() {
        var txt_filter_json = {
            "blog_id_array": [336],
            "badge_id_array": [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 6,
            'txt_filter_json': JSON.stringify(txt_filter_json),
            // 'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('post/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.blog_dacseetour = res.data.dataList;
            }
        });
    };
    vm.category_All18 = false;
    vm.get_category_All18 = function() {
        var txt_filter_json = {
            'badge_id_array': [18]
        };
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
            'txt_filter_json': JSON.stringify(txt_filter_json)
        };
        GAEAPI.get('referral/map', dataSend, $scope).then(function(res) {
            if (res.ok === 1) {
                vm.category_All18 = res.data;
                console.log("get_category_All18 : ", vm.category_All18, res.data);
            }
        });
    };
    vm.get_category_All18();
    /*
     * Click menu in header component
     * @params pathString (string)
     * @return event
     */
    vm.unViewMobile = function() {
        $('body').css('position', 'relative');
        $('body').css('overflow', 'auto');
        if (angular.element('._compoment_header').hasClass('mobile_open_active')) {
            angular.element('._compoment_header').removeClass('mobile_open_active');
        }
        if (angular.element('.menu-on-mobile-active').hasClass('active')) {
            angular.element('.menu-on-mobile-active').removeClass('active');
        }
        if (angular.element('.container_second_mobile .onActive').hasClass('active')) {
            angular.element('.container_second_mobile .onActive').removeClass('active');
        }
        if (angular.element('.section-mobile-set').hasClass('active')) {
            angular.element('.section-mobile-set').removeClass('active');
            angular.element('.close').removeClass('active');
        }
    };
    vm.viewMenuFromParent = function(pathString) {
        if (angular.element('._compoment_header').hasClass('mobile_open_active')) {
            vm.unViewMobile();
            $timeout(function() {
                if (pathString.indexOf("?") === -1 && pathString.indexOf("&") === -1) {
                    $location.path(pathString).search({});
                } else {
                    window.location.href = pathString;
                }
            }, 700);
        } else {
            if (pathString.indexOf("?") === -1 && pathString.indexOf("&") === -1) {
                $location.path(pathString).search({});
            } else {
                window.location.href = pathString;
            }
        }
        if (angular.element('.menu-on-mobile-active').hasClass('active')) {
            vm.unViewMobile();
            $timeout(function() {
                if (pathString.indexOf("?") === -1 && pathString.indexOf("&") === -1) {
                    $location.path(pathString).search({});
                } else {
                    window.location.href = pathString;
                }
            }, 700);
        }
        if (angular.element('.onActive').hasClass('active')) {
            vm.unViewMobile();
            $timeout(function() {
                if (pathString.indexOf("?") === -1 && pathString.indexOf("&") === -1) {
                    $location.path(pathString).search({});
                } else {
                    window.location.href = pathString;
                }
            }, 700);
        }
    };
    vm.headerComponentId = "001";
    /* Customer Status */
    vm._getMe = {};
    vm._isLogin = function() {
        if (UiCustomerBox.delegate.get.isLogin()) {
            vm._getMe = UiCustomerBox.delegate.get.me();
        }
        return UiCustomerBox.delegate.get.isLogin();
    };
    vm._getLogin = function() {
        vm.unViewMobile();
        return UiCustomerBox.delegate.modal.openLoginForm();
    };
    vm._getSearch = function(txt) {
        vm.unViewMobile();
        return UiSearchBox.delegate.modal.open(txt);
    };
    vm._getInfo = function() {
        vm.unViewMobile();
        /*return UiCustomerBox.delegate.modal.open();*/
        return window.location.href = GURL.base_url() + "login/profile";
    };
    vm._getLogout = function() {
        vm.unViewMobile();
        return UiCustomerBox.delegate.doLogOut();
    };
    vm._cartTotal = function() {
        return UiCart.delegate.get.totalAmount() || 0;
    };
    vm._cartTotalPrice = function() {
        var cart_total_product_price = 0;
        if (UiCart.delegate.get.cartData()) {
            if (UiCart.delegate.get.cartData().cart_total_product_price !== undefined) {
                cart_total_product_price = UiCart.delegate.get.cartData().cart_total_product_price;
                return cart_total_product_price || 0;
            }
        }
        return UiCart.delegate.get.totalPrice() || 0;
    };
    vm._modalOpen = function(elementType, enableGuess, skipToCheckout) {
        return UiCart.delegate.modal.open();
        /*UiCustomerBox.get.isLogin()==false && UiCustomerBox.modal.openLoginForm(); UiCustomerBox.get.isLogin()==true && UiCustomerBox.modal.open();*/
        /*if (typeof UiCustomerBox === 'undefined' || UiCustomerBox == undefined) {
         return;
         }
         var delayTrigger = 100;
         vm.unViewMobile();
         var modalOpenTimer = setTimeout(function () {
         return UiCart.delegate.modal.open();
         clearTimeout(modalOpenTimer);
         if (!UiCustomerBox.delegate.get.isLogin()) {
         return UiCustomerBox.delegate.modal.openLoginForm();
         } else if (UiCustomerBox.delegate.get.isLogin()) {
         return UiCart.delegate.modal.open();
         }
         }, delayTrigger);*/
    };
    /*vm._cartTotalPrice = function () {
        return UiCart.delegate.get.totalPrice() || 0;
    };*/
    /**
     * Post list
     * Get post list array
     * @params none
     * @return array
     */
    vm._homeNews = [];
    vm.getHomeNews = function() {
        vm._homeNews = [];
        var d = {
            "cur_page": 1,
            "per_page": 20,
            "txt_sortby": "post_create_time_DESC"
        };
        GAEAPI.get('post/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._homeNews = e.data.dataList;
            }
        });
    };
    vm.getHomeNews();
    vm._postData = [];
    vm.getPostLists = function(linit) {
        vm._postData = [];
        var d = {
            "cur_page": 1,
            "per_page": linit,
            "txt_sortby": "post_update_time_DESC"
        };
        GAEAPI.get('post/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._postData = e.data.dataList;
            }
        });
    };
    /* zomm camera only */
    vm._homeNews_z1 = [];
    vm.getHomeNews_z1 = function(id) {
        vm._homeNews_z1 = [];
        var txt_filter_json = {
            'blog_id_array': [id]
        };
        var d = {
            "cur_page": 1,
            "per_page": 20,
            "txt_sortby": "post_create_time_DESC",
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        console.log('TESTESTEST', d);
        GAEAPI.get('post/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._homeNews_z1 = e.data.dataList;
            }
        });
    };
    vm._homeNews_z2 = [];
    vm.getHomeNews_z2 = function(id) {
        vm._homeNews_z2 = [];
        var txt_filter_json = {
            'blog_id_array': [id]
        };
        var d = {
            "cur_page": 1,
            "per_page": 20,
            "txt_sortby": "post_create_time_DESC",
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        console.log('TESTESTEST', d);
        GAEAPI.get('post/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._homeNews_z2 = e.data.dataList;
            }
        });
    };
    vm._homeFeatureNews = [];
    vm.getHomeNewsFeature = function() {
        vm._homeFeatureNews = [];
        var txt_filter_json = {
            'badge_id_array': [18, 16]
        };
        var d = {
            "cur_page": 1,
            "per_page": 20,
            "txt_sortby": "post_create_time_DESC",
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('post/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._homeFeatureNews = e.data.dataList;
            }
        });
    };
    vm.getHomeNewsFeature();
    /**
     * Brand Lists
     * Get Brand list array
     * @params none
     * @return array
     */
    vm._brandList = [];
    vm.getBrandList = function() {
        vm._brandList = [];
        var d = {
            "txt_referral_type_id": 12,
            "cur_page": 1,
            "per_page": 30
        };
        GAEAPI.get('referral/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._brandList = e.data.dataList;
            }
        });
    };
    vm.getBrandList();
    vm._CatList = [];
    vm.getCatList = function() {
        vm._CatList = [];
        var d = {
            "txt_referral_type_id": 11,
            "cur_page": 1,
            "per_page": 30
        };
        GAEAPI.get('referral/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm._CatList = e.data.dataList;
            }
        });
    };
    vm.FeatureCatList = [];
    vm.getFeatureCatList = function() {
        vm.FeatureCatList = [];
        var txt_filter_json = {
            'badge_id_array': [16]
        };
        var d = {
            "txt_referral_type_id": 11,
            "cur_page": 1,
            "per_page": 30,
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('referral/lists', d).then(function(e) {
            if (e.ok === 1) {
                vm.FeatureCatList = e.data.dataList;
            }
        });
    };
    vm.getFeatureCatList();
    vm.dataReferralists = [];
    vm.getReferralists = function(txt_referral_type_id, cur_page, per_page, badge_id_array) {
        var txt_filter_json = {
            'badge_id_array': badge_id_array
        };
        var dataSend = {
            "txt_referral_type_id": txt_referral_type_id,
            "cur_page": cur_page,
            "per_page": per_page,
            'txt_filter_json': JSON.stringify(txt_filter_json),
        };
        GAEAPI.get('referral/lists', dataSend).then(function(output) {
            if (output.ok == 1) {
                console.log("getReferralists : output : ", output);
                vm.dataReferralists = output.data.dataList;
            }
        });
    };
    /* 
     sent email register partner 
     @parmams $event (from html)
     @return none
     */
    vm.registerPartner = function($event) {
        var submit = true;
        // $($event.currentTarget).closest('form').find('.required').each(function () {
        //     if ($(this).val() == '') {
        //         $(this).closest('.form-group').find('.error').addClass('active');
        //         submit = false;
        //     } else {
        //         $(this).closest('.form-group').find('.error').removeClass('active');
        //     }
        // });
        // $($event.currentTarget).closest('form').find('.required').each(function () {
        //     if ($(this).val() == '') {
        //         $('html,body').animate({
        //             scrollTop: $(this).offset().top - 160
        //         }, 'slow');
        //         submit = false;
        //         return false;
        //     }
        // });
        // $($event.currentTarget).closest('form').find('#email').each(function () {
        //     if(vm.isEmail($(this).val()) || $(this).val() == ''){
        //         console.log($(this).val());
        //         $(this).closest('.form-group').find('.error1').removeClass('active');
        //     } else {
        //         $(this).closest('.form-group').find('.error1').addClass('active');
        //         console.log($(this).val());
        //         submit = false;
        //     }
        // }); 
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $(this).closest('.form_block').find('.after').addClass('error');
                $(this).closest('.form_block').find('.round').addClass('error');
            } else {
                $(this).closest('.form-group').find('span').removeClass('error');
            }
        });
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $('html,body').animate({
                    scrollTop: $(this).offset().top - 160
                }, 'slow');
                submit = false;
                return false;
            }
        });
        // if(!(vm.isEmail($('#contact_form input[name="email"]').val()))){
        //     $("[name='email']").addClass('error');
        // }else{
        //     $("[name='email']").removeClass('error');
        // }
        var isPass = false;
        if (vm.isEmail($('#register_partner input[name="email"]').val())) {
            isPass = true;
        }
        // if(!(parseInt($('#register_partner input[name=age]').val()) > 0)){
        //     $("[name='age']").addClass('error');
        // }else{
        //     $("[name='age']").removeClass('error');
        // }
        // if(!(parseInt($('#register_partner input[name=phone]').val()) > 0)){
        //     $("[name='phone']").addClass('error');
        // }else{
        //     $("[name='phone']").removeClass('error');
        // }
        if (!(vm.isEmail($('#register_partner input[name="email"]').val()))) {
            $("[name='email']").addClass('error');
        } else {
            $("[name='email']").removeClass('error');
        }
        var formData = new FormData($($event.currentTarget).closest('form')[0]);
        if (CUR_THEME.shop_id() == 552) {
            formData.append('input_owner_name', 'duckypackprint');
            formData.append('input_owner_contact', 'dkpackprint@gmail.com,web.getappeasy@gmail.com');
        } else {
            return;
        }
        if (submit && isPass) {
            $.ajax({
                url: vm.sendGridPath + 'send-email-register-partner.php',
                method: 'POST',
                data: formData,
                dataType: "json",
                cache: false,
                contentType: false,
                processData: false,
                success: function(data, textStatus, jqXHR) {
                    console.log("registerPartner", data);
                    if (data == 1) {
                        window.location.href = 'register-partner-done';
                    } else {
                        alert("error");
                    }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log('ERRORS: ' + textStatus);
                }
            });
        } else {
            console.log("registerPartner", submit);
        }
    };
    vm.sent_datajoin = false;
    vm.joinus = function($event) {
        var submit = true;
        console.log("joinus : event : ", $event);
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $('html,body').animate({
                    scrollTop: $(this).offset().top - 160
                }, 'slow');
                submit = false;
                return false;
            }
        });
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $(this).closest('.form_block').find('.after').addClass('error');
                $(this).closest('.form_block').find('.round').addClass('error');
                submit = false;
            } else {
                $(this).closest('.form-group').find('span').removeClass('error');
            }
        });
        if (!vm.isEmail($('input[name="email"]').val())) {
            $('input[name="email"]').addClass("error");
            submit = false;
        }
        if (!vm.isMobile($('input[name="phone"]').val())) {
            $('input[name="phone"]').addClass("error");
            submit = false;
        }
        var formData = new FormData($($event.currentTarget).closest('form')[0]);
        if (submit) {
            $.ajax({
                url: vm.sendGridPath + 'send-email-joinus.php',
                method: 'POST',
                data: formData,
                cache: false,
                contentType: false,
                processData: false,
                success: function(data, textStatus, jqXHR) {
                    console.log("asayshajshajshajsahsajsa :", data, textStatus, jqXHR);
                    if (data == 1) {
                        // window.location.href = 'register-done';
                        vm.sent_datajoin = true;
                        $('.register-join-us').css('display', 'none');
                    } else {
                        alert('กรุณติดต่อเจ้าหน้าที่');
                    }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log('ERRORS: ' + textStatus);
                }
            });
        }
    };
    vm.isMobile = function(inputString) {
        var re = /^(([0-9]{8,10}))$/;
        return re.test(inputString);
    };
    vm.isEmail = function(inputString) {
        var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(inputString);
    };
    vm._web_home = false;
    vm.minibanner_image = [];
    vm.topbanner_image = [];
    vm.mainbanner_image = [];
    vm.secondary_image = [];
    vm.getDataBadgeId = function(badge_id, badge_array, callback) {
        var state = false;
        for (var i = 0; i < badge_array.length; i++) {
            if (badge_array[i].badge_id == badge_id) {
                state = true;
                break;
            }
        }
        callback(state);
    };
    vm.getSortBanner = function(banner_array, callback) {
        var original = banner_array;
        var desktop = [];
        var mobile = [];
        for (var i = 0; i < banner_array.length; i++) {
            vm.getDataBadgeId(18, banner_array[i].banner_badge, function(state) {
                if (state) {
                    desktop.push(banner_array[i]);
                }
            });
            vm.getDataBadgeId(19, banner_array[i].banner_badge, function(state) {
                if (state) {
                    mobile.push(banner_array[i]);
                }
            });
        }
        callback(original, desktop, mobile);
    }
    vm._get_web_home = function() {
        vm._web_home = false;
        GAEAPI.get('web/home', {}).then(function(res) {
            if (res.ok === 1) {
                vm._web_home = res.data;
                vm.getSortBanner(vm._web_home.mini_banner.banner_array, function(original, desktop, mobile) {
                    vm.minibanner_image = original;
                    vm.minibanner_image_mobile = mobile;
                    vm.minibanner_image_desktop = desktop;
                });
                vm.topbanner_image = vm._web_home.top_page_banner.banner_array;
                vm.bottombanner_image = vm._web_home.bottom_page_banner.banner_array;
                vm.mainbanner_image = vm._web_home.main_banner_master.banner_array;
                vm.secondary_image = vm._web_home.secondary_carousel.banner_array;
                vm.mainbanner_image_nm = vm._web_home.main_banner.banner_array;
                vm._web_home = true;
            }
        });
    };
    vm._get_web_home();
    vm.showBadgeId = function(badgeid, objArray) {
        var dataReturn = false;
        for (var i = 0; i < objArray.length; i++) {
            if (objArray[i].badge_id == badgeid) {
                dataReturn = true;
                break;
            }
        }
        return dataReturn;
    };
    vm._page_contact = [];
    vm._get_page_contact = function() {
        GAEAPI.get('shop/current', {}).then(function(res) {
            if (res.ok === 1) {
                var datetime = new Date();
                var year = datetime.getFullYear();
                vm.copyRightTxt = '© ' + year + ' ' + res.data.shop_name;
                vm._page_contact = res.data.shop_extend_data;
                vm.address_page = res.data.shop_extend_data.contact_address;
                console.log('shop/current : address :', vm.address);
                vm.tel_page = res.data.shop_extend_data.phone;
                if (vm.tel_page !== '' && typeof vm.tel_page !== 'undefined') {
                    vm.tel_page_split = vm.tel_page.split(",");
                    vm.tel1_page = '';
                    vm.tel2_page = '';
                    if (vm.tel_page_split.length > 0) {
                        vm.tel1_page = vm.tel_page_split[0];
                    }
                    if (vm.tel_page_split.length > 1) {
                        vm.tel2_page = vm.tel_page_split[1];
                    }
                }
            }
        });
    };
    vm._get_page_contact();
    vm.displayTelCode = function(telString) {
        if (telString.indexOf("-")) {
            var a = telString.split("-");
            var b = a.join("").trim();
        } else {
            var b = telString.trim();
        }
        return b.substr(1, b.length);
    };
    vm.cut_0 = function(tel) {
        vm.tel_cut = tel.substring(1);
        return vm.tel_cut;
    };
    /*--New version--Contact start*/
    vm.datacontact = [];
    vm.getdatacontact = function() {
        GAEAPI.get('shop/current', {}).then(function(res) {
            if (res.ok === 1) {
                vm.datacontact = res.data;
                console.log("shop/current: datacontact", vm.datacontact);
                vm.getsubAddress(vm.datacontact.shop_extend_data.address);
                vm.getsubPhone(vm.datacontact.shop_extend_data.phone);
                vm.getsubEmail(vm.datacontact.shop_extend_data.mail);
            }
        });
    };
    vm.getdatacontact();
    vm.getsubAddress = function(Address) {
        vm.address_page = Address;
        console.log('address_page', vm.address_page);
        if (vm.address_page !== '' && typeof vm.address_page !== 'undefined') {
            vm.address_page_split = vm.address_page.split("_");
            console.log('address_page_split', vm.address_page_split);
            vm.address1_page = '';
            vm.address2_page = '';
            if (vm.address_page_split.length > 0) {
                vm.address1_page = vm.address_page_split[0];
            }
            if (vm.address_page_split.length > 1) {
                vm.address2_page = vm.address_page_split[1];
            }
        }
    };
    vm.getsubPhone = function(Phone) {
        vm.phone_page = Phone;
        console.log('phone_page', vm.phone_page);
        if (vm.phone_page !== '' && typeof vm.phone_page !== 'undefined') {
            vm.phone_page_split = vm.phone_page.split(",");
            console.log('phone_page_split', vm.phone_page_split);
            vm.phone1_page = '';
            vm.phone2_page = '';
            if (vm.phone_page_split.length > 0) {
                vm.phone1_page_sub = vm.phone_page_split[0].substring(1);
                vm.phone1_page = vm.phone_page_split[0];
            }
            if (vm.phone_page_split.length > 1) {
                vm.phone2_page_sub = vm.phone_page_split[1].substring(1);
                vm.phone2_page = vm.phone_page_split[1];
            }
        }
    };
    vm.getsubEmail = function(Email) {
        vm.mail_page = Email;
        console.log('mail_page', vm.mail_page);
        if (vm.mail_page !== '' && typeof vm.mail_page !== 'undefined') {
            vm.mail_page_split = vm.mail_page.split(",");
            console.log('mail_page_split', vm.mail_page_split);
            vm.mail1_page = '';
            vm.mail2_page = '';
            if (vm.mail_page_split.length > 0) {
                vm.mail1_page_sub = vm.mail_page_split[0].substring(1);
                vm.mail1_page = vm.mail_page_split[0];
            }
            if (vm.mail_page_split.length > 1) {
                vm.mail2_page_sub = vm.mail_page_split[1].substring(1);
                vm.mail2_page = vm.mail_page_split[1];
            }
        }
    };
    /*--New version--Contact end*/
    vm._shop_video = [];
    vm._video_link = [];
    vm._get_shop_video = function() {
        GAEAPI.get('shop/current', {}).then(function(res) {
            if (res.ok === 1) {
                vm._shop_video = res.data.shop_video_image;
                vm.video_link = res.data.shop_video_link;
                vm.video_em = res.data.shop_video_embed_code;
            }
        });
    };
    vm._get_shop_video();
    /* send email to job */
    vm.complain = function($event) {
        var submit = true;
        /*$($event.currentTarget).closest('form').find('.required').each(function() {
         if ($(this).hasClass('is-check')) {
         if (!$(this).find('input').is(':checked')) {
         $(this).find('.error').addClass('active');
         submit = false;
         } else {
         $(this).find('.error').removeClass('active');
         }
         } else {
         if ($(this).val() == '') {
         $(this).closest('.form-group').find('.error').addClass('active');
         submit = false;
         } else {
         $(this).closest('.form-group').find('.error').removeClass('active');
         }
         }
         });
         $($event.currentTarget).closest('form').find('.required').each(function() {
         if ($(this).hasClass('is-check')) {
         if (!$(this).find('input').is(':checked')) {
         $('html,body').animate({
         scrollTop: $(this).offset().top - 100
         }, 'slow');
         submit = false;
         return false;
         }
         } else {
         if ($(this).val() == '') {
         $('html,body').animate({
         scrollTop: $(this).offset().top - 160
         }, 'slow');
         submit = false;
         return false;
         }
         }
         });*/
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $(this).closest('.form_block').find('.after').addClass('error');
                $(this).closest('.form_block').find('.round').addClass('error');
                $(this).closest('.form_block_control').find('.round').addClass('error');
                $(this).closest('.form_block_control .select').find('.after').addClass('error');
            } else {
                $(this).closest('.form-group').find('span').removeClass('error');
            }
        });
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $('html,body').animate({
                    scrollTop: $(this).offset().top - 160
                }, 'slow');
                submit = false;
                return false;
            }
        });
        var isPass = false;
        if (parseInt($('#complainForm input[name=phone]').val()) > 0 && parseInt($('#complainForm input[name=age]').val()) > 0 && vm.isEmail($('#complainForm input[name="email"]').val())) {
            isPass = true;
        }
        if (!(parseInt($('#complainForm input[name=age]').val()) > 0)) {
            $("[name='age']").addClass('error');
        } else {
            $("[name='age']").removeClass('error');
        }
        if (!(parseInt($('#complainForm input[name=phone]').val()) > 0)) {
            $("[name='phone']").addClass('error');
        } else {
            $("[name='phone']").removeClass('error');
        }
        if (!(vm.isEmail($('#complainForm input[name="email"]').val()))) {
            $("[name='email']").addClass('error');
        } else {
            $("[name='email']").removeClass('error');
        }
        var formData = new FormData($($event.currentTarget).closest('form')[0]);
        if (CUR_THEME.shop_id() == 552) {
            formData.append('input_owner_name', 'duckypackprint');
            formData.append('input_owner_contact', 'dkpackprint@gmail.com,web.getappeasy@gmail.com');
        } else {
            return;
        }
        if (submit && isPass) {
            $.ajax({
                url: vm.sendGridPath + 'send-email-job.php',
                method: 'POST',
                data: formData,
                dataType: "json",
                cache: false,
                contentType: false,
                processData: false,
                success: function(data, textStatus, jqXHR) {
                    console.log('data:dfjdkfdjd', data);
                    // console.log('textStatus: ',textStatus);
                    // console.log('jqXHR: ',jqXHR);
                    if (data == 1) {
                        window.location.href = 'job-done';
                    } else {
                        alert("error");
                    }
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log('textStatus: ', textStatus);
                    console.log('jqXHR: ', jqXHR);
                    console.log('ERRORS: ' + errorThrown);
                    alert("กรุณาลองใหม่อีกครั้ง");
                    return;
                }
            });
        } else {
            alert("ตรวจสอบอายุและเบอร์โทร(ตัวเลขเท่านั้น) หรือ อีเมลให้ถูกต้อง");
        }
    };
    /* Product list ? */
    vm.productList = [];
    vm.getProductList = function() {
        var txt_filter_json = {
            'badge_id_array': [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 4,
            'txt_sortby': 'product_lastest_create',
            'txt_filter_json': JSON.stringify(txt_filter_json)
        };
        GAEAPI.get('product/lists', dataSend).then(function(e) {
            if (e.ok === 1) {
                vm.productList = e.data.dataList;
            }
        });
    };
    vm.changeTabContent = function($event, dataIn) {
        var this_ = $($event.currentTarget);
        vm.badge_pl = dataIn;
        if (this_.hasClass('active')) {
            return false;
        } else {
            if (dataIn == 72) {
                this_.closest('section').find('.-tab ul .active1').addClass('active');
                this_.closest('section').find('.-tab ul .active2').removeClass('active');
                this_.closest('section').find('.-tab ul .active3').removeClass('active');
            } else if (dataIn == 74) {
                this_.closest('section').find('.-tab ul .active2').addClass('active');
                this_.closest('section').find('.-tab ul .active1').removeClass('active');
                this_.closest('section').find('.-tab ul .active3').removeClass('active');
            } else {
                this_.closest('section').find('.-tab ul .active3').addClass('active');
                this_.closest('section').find('.-tab ul .active1').removeClass('active');
                this_.closest('section').find('.-tab ul .active2').removeClass('active');
            }
            this_.closest('section').find('.-tab ul li a').removeClass('active');
            this_.addClass('active');
            // this_.addClass('active');
            this_.closest('section').find('.-content').removeClass('opacity');
            $timeout(function() {
                this_.closest('section').find('.-content').removeClass('active');
                if (dataIn == 'all') {
                    this_.closest('section').find('.-content').addClass('active');
                } else {
                    this_.closest('section').find('.-content[data-id=' + dataIn + ']').addClass('active');
                }
            }, 350);
            $timeout(function() {
                if (dataIn == 'all') {
                    this_.closest('section').find('.-content').addClass('opacity');
                } else {
                    this_.closest('section').find('.-content[data-id=' + dataIn + ']').addClass('opacity');
                }
            }, 450);
        }
    };
    vm.changeTabContent2 = function($event, dataIn) {
        var this_ = $($event.currentTarget);
        vm.badge_pl = dataIn;
        if (this_.hasClass('active')) {
            return false;
        } else {
            if (dataIn != "") {
                this_.closest('section').find('.-tab ul .active1').addClass('active');
                this_.closest('section').find('.-tab ul .active2').removeClass('active');
                this_.closest('section').find('.-tab ul .active3').removeClass('active');
            }
            this_.closest('section').find('.-tab ul li a').removeClass('active');
            this_.addClass('active');
            // this_.addClass('active');
            this_.closest('section').find('.-content').removeClass('opacity');
            $timeout(function() {
                this_.closest('section').find('.-content').removeClass('active');
                if (dataIn == 'all') {
                    this_.closest('section').find('.-content').addClass('active');
                } else {
                    this_.closest('section.feature').find('.-content[data-id=' + dataIn + ']').addClass('active');
                }
            }, 350);
            $timeout(function() {
                if (dataIn == 'all') {
                    this_.closest('section').find('.-content').addClass('opacity');
                } else {
                    this_.closest('section').find('.-content[data-id=' + dataIn + ']').addClass('opacity');
                }
            }, 450);
        }
    };
    vm.checkSeo = function() {
        return (GURL.isHtml5Mode()) ? true : false;
    };
    vm.titleUrl = function(str) {
        var s = str.replace(/[^a-zA-Zก-๙0-9 ]/g, "").split(" ").join("-").replace("--", "-");
        return s;
    };
    vm._productFeatureList = [];
    vm._getProductFeature = function(limis, sortby) {
        var jsonFilter = {
            'badge_id_array': [16, 18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': limis,
            'txt_sortby': sortby,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('product/lists', dataSend, $scope).then(function(e) {
            console.log("_getProductFeature : e ", e);
            if (e.ok == 1) {
                vm._productFeatureList = e.data.dataList;
            }
        });
    };
    vm._productList = [];
    vm._getProductList = function(sort) {
        var jsonFilter = {
            'badge_id_array': [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 100,
            'txt_sortby': sort,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('product/lists', dataSend).then(function(e) {
            if (e.ok == 1) {
                vm._productList = e.data.dataList;
            }
        });
    };
    vm._productListAll = [];
    vm._getProductListAll = function() {
        var jsonFilter = {
            'badge_id_array': [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 100,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('product/lists', dataSend).then(function(e) {
            if (e.ok == 1) {
                for (var i = 0; i < e.data.dataList.length; i++) {
                    if (e.data.dataList[i].product_discount.length != 0) {
                        vm._productListAll.push(e.data.dataList[i]);
                    }
                }
                console.log("spdosdpsidpsdisodi :", vm._productListAll);
            }
        });
    };
    // vm._getProductListAll();
    vm.getTimeNow = [];
    vm._getTimeNow = function() {
        var d = new Date();
        var n = d.toDateString();
        vm.getTimeNow = n.split(" ");
        /*console.log('getTimeNow',vm.getTimeNow);*/
    };
    vm._makeDatenow = function() {
        var d = new Date();
        return (d != "") ? moment(d).format('LL') : "";
    };
    // vm._makeDatenow();
    /* Build String title url */
    vm.buildTitleUrl = function(str) {
        var s = str.replace(/[^a-zA-Zก-๙0-9 ]/g, "").split(" ").join("-").replace("--", "-");
        return s;
    };
    vm.viewLink = function(i) {
        var a = i;
        if (a.indexOf('http') == -1) {
            return 'http://' + i;
        }
        return i;
    };
    vm.album_lists = false;
    vm.album_detail_lists = false;
    vm._getAlbumList = function(per_page, txt_sortby) {
        vm.album_lists = false;
        var dataSend = {
            'cur_page': 1,
            'per_page': per_page,
            'txt_sortby': txt_sortby
        };
        GAEAPI.get('image_group/lists', dataSend).then(function(e) {
            if (e.ok === 1) {
                vm.album_lists = e.data.dataList;
            }
        });
        console.log('album_lists_data', vm.album_lists);
    };
    vm.getRandomNumber = function(start, end) {
        return Math.floor(Math.random() * end) + start;
    };
    vm.windowsWidth = function() {
        return $(window).width();
    };
    vm.windowsHeight = function() {
        return $(window).height();
    };
    /* Optimize image size by device pixel 
     * @params {size} (integer) prefer size
     * @params {image_url} (string) original image source link
     * @params {image_width} (string) original image width
     * @return string
     */
    vm.viewOptimizeImage = function(size, image_url, image_width) {
        if (window.devicePixelRatio >= 2 || parseInt(image_width) <= size) {
            return image_url;
        }
        var a = image_url.split("/"),
            b = a[a.length - 1];
        a[a.length - 1] = 't' + size + '_' + b;
        return a.join("/");
    };
    vm.calendar_img = [];
    vm.dataImageLists = [];
    vm.dataImageListsLoad = false;
    vm.getcalendar_img = function(image_group_id_array, cur_page, per_page) {
        var jsonFilter = {
            'image_group_id_array': [image_group_id_array]
        };
        var dataSend = {
            'cur_page': cur_page,
            'per_page': per_page,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend).then(function(output) {
            vm.dataImageListsLoad = true;
            if (output.ok == 1) {
                vm.dataImageLists = output.data.dataList;
                vm.calendar_img = output.data.dataList[0];
            }
        });
    };
    vm.img_byalbum_id_main = function() {
        var getFunction = {
            imageUrl: function(size, image_url) {
                var url = image_url.split("/"),
                    length_url = url[url.length - 1];
                url[url.length - 1] = size + '_' + length_url;
                return url.join("/");
            },
            resizeImageUrl: function(output, callback) {
                var _self = this;
                for (var i = 0; i <= output.length; i++) {
                    if (i < output.length) {
                        output[i].image_url = _self.imageUrl('t300', output[i].image_url);
                    } else {
                        callback(output);
                    }
                }
            }
        }
        return getFunction;
    };
    vm.img_byalbum_id = [];
    vm.get_img_byalbum_id = function(albumid) {
        var jsonFilter = {
            'image_group_id_array': [albumid]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend, $scope).then(function(res) {
            if (res.ok === 1) {
                vm.img_byalbum_id_main().resizeImageUrl(res.data.dataList, function(output) {
                    vm.img_byalbum_id = output;
                });
            }
        });
    };
    /* referal result in ttc custom */
    /* fet album iambeauty */
    vm.iambeauty_img = [];
    vm.getiambeauty_img = function() {
        var jsonFilter = {
            'image_group_id_array': [685]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 100,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.iambeauty_img = res.data.dataList[0];
            }
        });
    };
    vm._custom_ref_ttc_data = [];
    vm._custom_ref_ttc = function(id) {
        console.log("_custom_ref_ttc : id : ", id);
        vm._custom_ref_ttc_data = [];
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_parent_id': id,
            'txt_sortby': 'referral_oldest_create',
        };
        GAEAPI.get('referral/map', dataSend).then(function(res) {
            vm._page_category_load = true;
            if (res.ok === 1) {
                // vm._custom_ref_ttc_data = res.data;
                vm._custom_ref_ttc_data = (res.ok == 1) ? res.data : [];
                var temp_ttc = [];
                for (var i = 0; i < res.data.length; i++) {
                    temp_ttc.push(res.data[i].referral_id);
                }
                ref_tcc_productArray = res.data;
                getproductForRef(0, function() {
                    // alert("complete!");
                    console.log("getproductForRef : ref_tcc_productArray: ", ref_tcc_productArray);
                });
            }
        });
    };
    var ref_tcc_productArray = [];
    function getproductForRef(index, callback) {
        if (ref_tcc_productArray.length <= index) {
            if (callback) {
                callback();
            }
            return;
        }
        var albumData = ref_tcc_productArray[index];
        var image_group_id = albumData.referral_id;
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_parent_id': image_group_id,
            'txt_sortby': 'referral_oldest_create',
            // 'txt_filter_json': JSON.stringify({"referral_id_array_in": [image_group_id]})
        };
        console.log("referral/map : dataSend : ", dataSend);
        GAEAPI.get('referral/map', dataSend, $scope).then(function(res) {
            console.log("map/lists : res : ", res);
            if (res.ok == 1) {
                albumData.category_array = res.data;
                // vm._custom_ref_ttc_data = res.data;
                // vm._custom_ref_ttc_data = (res.ok == 1) ? res.data : [];
            }
            ref_tcc_productArray_last = res.data;
            getproductForRef_last(0, function() {
                // alert("complete!");
                console.log("getproductForRef_last : ref_tcc_productArray_last: ", ref_tcc_productArray_last);
                getproductForRef((index + 1), callback);
            });
            vm._custom_ref_ttc_data = ref_tcc_productArray;
            // getproductForRef((index + 1), callback);
        });
    }
    var ref_tcc_productArray_last = [];
    function getproductForRef_last(index, callback) {
        if (ref_tcc_productArray_last.length <= index) {
            if (callback) {
                callback();
            }
            return;
        }
        var albumData_last = ref_tcc_productArray_last[index];
        // console.log("makeCarouselBroadcastsds :",albumData_last);
        var image_group_last = albumData_last.referral_id;
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
            'txt_sortby': 'product_oldest_create',
            'txt_filter_json': JSON.stringify({
                "referral_id_array_in": [image_group_last]
            })
        };
        console.log("product/lists : dataSend : ", dataSend);
        GAEAPI.get('product/lists', dataSend, $scope).then(function(res) {
            console.log("image/lists : res : ", res);
            if (res.ok == 1) {
                albumData_last.product_array = res.data.dataList;
            }
            // vm._custom_ref_ttc_data = ref_tcc_productArray_last;
            getproductForRef_last((index + 1), callback);
        });
    }
    vm.setdispay = function(imgid) {
        document.getElementById(imgid).style.display = 'block';
        $('body').css('overflow', 'hidden');
    };
    vm.containerwidth = function(a) {
        return angular.element(a).width();
    };
    /* Event when windows is loaded*/
    $scope.windowLoaded = false;
    angular.element($window).bind('load', function() {
        $scope.windowLoaded = true;
    });
    /* get product list by badge */
    vm.productListByBadge = [];
    vm.getProductListByBadge = function(badgeId) {
        vm.productListByBadge[badgeId] = [];
        var dataSend = {
            'cur_page': 1,
            'per_page': 16,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
            'txt_filter_json': JSON.stringify({
                'badge_id_array': [18, badgeId]
            })
        };
        GAEAPI.get('product/lists', dataSend, $scope).then(function(e) {
            console.log("getProductListByBadge", dataSend, e);
            if (e.ok === 1 && e.data.dataList.length > 0) {
                vm.productListByBadge[badgeId] = e.data.dataList;
                console.log("id_bade_product :", vm.productListByBadge[72]);
            }
        });
    };
    /* shop branch */
    vm._branch_lists = false;
    vm._branch_lists_load = false;
    vm._get_branch_lists = function() {
        vm._clear_page_lists();
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
        };
        GAEAPI.get('shop_branch/lists', dataSend).then(function(res) {
            vm._branch_lists_load = true;
            if (res.ok === 1) {
                vm._branch_lists = res.data.dataList;
            }
        });
    };
    vm._get_branch_lists();
    vm._promotion_lists = false;
    vm._promotion_lists_load = false;
    vm._get_promotion_lists = function() {
        vm._clear_page_lists();
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
        };
        GAEAPI.get('promotion/lists', dataSend).then(function(res) {
            vm._promotion_lists_load = true;
            if (res.ok === 1) {
                vm._promotion_lists = res.data.dataList;
            }
        });
    };
    vm._get_promotion_lists();
    vm.dataPromotionLists = [];
    vm.getPromotionLists = function(cur_page, per_page, txt_badge_id, txt_sortby, type_number) {
        var dataSend = {
            "cur_page": cur_page,
            "per_page": per_page,
            "txt_badge_id": txt_badge_id,
            "txt_sortby": txt_sortby,
            "txt_type_number": type_number
        };
        console.log("getPromotionLists : dataSend : ", dataSend);
        GAEAPI.get('promotion/lists', dataSend, $scope).then(function(output) {
            console.log("getPromotionLists : output : ", output);
            if (output.ok == 1) {
                vm.dataPromotionLists = output.data.dataList;
            }
        });
    };
    /*   vm.promotion_listState = {
           load: false,
           done: false
       };
       vm.get_promotion_lists5 = function(){
               vm.promotion_listState = {
                   load: true,
                   done: false
               };
               var dataSend = {
                   'cur_page': 1,
                   'per_page': 20,
                   'txt_sortby': 'promotion_lastest_create',
                   'txt_badge_id': 18,
                   'txt_filter_json': JSON.stringify({
                       'type_number': 7
                   })
               };
               $GET('promotion/lists', dataSend, function(e) {
                   if (e.ok == 1 && e.data.dataList.length > 0) {
                     
                           vm.promotion_list = e.data.dataList;
                      
                   }
                   vm.promotion_listState = {
                       load: false,
                       done: true
                   };
                   console.log("promotion list : type 5", vm.promotion_list);
               });
              
       }; */
    vm._promotion_lists_type7 = false;
    vm._promotion_lists_load_7 = false;
    vm._get_promotion_lists_type7 = function() {
        // vm._clear_page_lists();
        var dataSend = {
            'cur_page': 1,
            'per_page': 20,
            'txt_badge_id': 18,
            'txt_filter_json': JSON.stringify({
                'type_number': 7
            })
        };
        GAEAPI.get('promotion/lists', dataSend).then(function(res) {
            vm._promotion_lists_load_7 = true;
            if (res.ok === 1) {
                vm._promotion_lists_type7 = res.data.dataList;
            }
        });
    };
    vm._get_promotion_lists_type7();
    vm.displayImage = function(image_url, prefix) {
        return (typeof image_url !== 'undefined') ? GAEAPI.getGaeImageUrl(image_url, prefix) : '';
    }
    vm.newLoginregister = function(name) {
        /* window.location.href = GURL.base_url() + name; */
        $location.url(name).replace();
    };
    vm.categoryList = [];
    vm.categoryListFail = false;
    vm.getCategoryList = function() {
        if (typeof window.referralMap !== 'undefined' && parseInt(CUR_THEME.shop_id()) == 646) {
            vm.categoryListFail = false;
            vm.categoryList = window.referralMap.data;
            return;
        }
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
            "txt_filter_json": JSON.stringify({
                "badge_id_array": [18]
            })
        };
        GAEAPI.get('referral/map', dataSend, $scope).then(function(res) {
            if (res.ok == 1) {
                console.log("getCategoryList referral/map : ", res);
                if (res.data.length > 0) {
                    vm.categoryListFail = false;
                    vm.categoryList = res.data;
                } else {
                    vm.categoryListFail = true;
                }
            } else {
                vm.categoryListFail = true;
            }
        });
    };
    vm.getCategoryList();
    vm.categoryDetail = [];
    vm.categoryDetailFail = false;
    vm.getCategoryDetail = function(catID) {
        var dataSend = {
            'txt_referral_id': catID,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
        };
        GAEAPI.get('referral/id_map', dataSend, $scope).then(function(res) {
            if (res.ok == 1) {
                vm.categoryDetailFail = false;
                vm.categoryDetail = res.data;
            } else {
                vm.categoryDetailFail = true;
                $window.location.href = 'home';
            }
        });
    }
    vm.categoryRoot = [];
    vm.categoryRootFail = false;
    vm.getCategoryRoot = function(catID) {
        var dataSend = {
            'txt_referral_id': catID,
            'txt_is_lookup': 0,
        };
        GAEAPI.get('referral/relation', dataSend, $scope).then(function(res) {
            if (res.ok == 1) {
                vm.categoryRootFail = false;
                vm.categoryRoot = res.data;
            } else {
                vm.categoryRootFail = true;
                $window.location.href = '#/';
            }
        });
    }
    vm.categoryList_gygy = [];
    vm.categoryListFail_gygy = false;
    vm.getCategoryList_gygy = function() {
        var dataSend = {
            'txt_referral_type_id': 11,
            'txt_sortby': 'referral_sort_index_asc_name_asc',
        };
        GAEAPI.get('referral/map', dataSend, $scope).then(function(res) {
            if (res.ok == 1) {
                if (res.data.length > 0) {
                    vm.categoryListFail_gygy = false;
                    vm.categoryList_gygy = res.data;
                } else {
                    vm.categoryListFail_gygy = true;
                }
            } else {
                vm.categoryListFail_gygy = true;
            }
        });
    };
    /*  collection list  */
    vm._collectionlist = [];
    vm._getCollectionList = function() {
        var dataSend = {
            'cur_page': 1,
            'per_page': 10
        };
        GAEAPI.get('collection/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm._collectionlist = res.data.dataList;
            }
        });
    };
    /*  vito video home page */
    vm._homevideolist = [];
    vm._getHomeVideoList = function() {
        var j = {
            'badge_id_array': [18]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': 3,
            'txt_filter_json': JSON.stringify(j)
        };
        GAEAPI.get('video/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm._homevideolist = res.data.dataList;
            }
        });
    };
    /* album custom flash mall */
    vm.album_img1 = [];
    vm.gethomealbum_img1 = function(id, limit) {
        var jsonFilter = {
            'image_group_id_array': [id]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': limit,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.album_img1 = res.data.dataList;
            }
        });
    };
    vm.album_img2 = [];
    vm.gethomealbum_img2 = function(id, limit) {
        var jsonFilter = {
            'image_group_id_array': [id]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': limit,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.album_img2 = res.data.dataList;
            }
        });
    };
    vm.album_img3 = [];
    vm.gethomealbum_img3 = function(id, limit) {
        var jsonFilter = {
            'image_group_id_array': [id]
        };
        var dataSend = {
            'cur_page': 1,
            'per_page': limit,
            'txt_filter_json': JSON.stringify(jsonFilter)
        };
        GAEAPI.get('image/lists', dataSend).then(function(res) {
            if (res.ok === 1) {
                vm.album_img3 = res.data.dataList[0];
            }
        });
    };
    /* flash mall */
    vm.set_alert = function(mme) {
        $(".yyy_" + mme).css("display", "block");
    };
    vm.slick = function(elem, xs, sm, md, lg) {
        var carousel = $(elem);
        carousel.css('height', '0');
        carousel.css('opacity', '0');
        var getinlg = parseInt(lg);
        var getinmd = parseInt(md);
        var getinsm = parseInt(sm);
        var getinxs = parseInt(xs);
        setTimeout(function() {
            var is_dark;
            carousel.not('.slick-initialized').slick({
                dots: false,
                arrows: false,
                animate: false,
                autoplay: true,
                centerMode: false,
                variableWidth: false,
                autoplaySpeed: 8000,
                slidesToShow: getinlg,
                slidesToScroll: 1,
                infinite: true,
                speed: 600,
                responsive: [{
                    breakpoint: 1200,
                    settings: {
                        slidesToShow: getinmd,
                    }
                }, {
                    breakpoint: 991,
                    settings: {
                        slidesToShow: getinsm,
                    }
                }, {
                    breakpoint: 767,
                    settings: {
                        slidesToShow: getinxs,
                    }
                }]
            }).closest('section').addClass('active');
            carousel.css('height', 'auto');
            carousel.css('opacity', '1');
        }, 1000);
    };
    vm.mkCarousel = function(elem) {
        $('.featureproduct_home .recommend').css('height', '0');
        $('.featureproduct_home .recommend').css('opacity', '0');
        // console.log("mkCarousel : ", $scope._slidestoshowlarge, $scope._slidestoshowmedium, $scope._slidestoshowsmall, $scope._slidestoshowextrasmall);
        setTimeout(function() {
            var carousel = $(elem + '[data-id=' + vm._key() + ']');
            var is_dark;
            carousel.not('.slick-initialized').slick({
                dots: false,
                arrows: true,
                autoplay: true,
                autoplaySpeed: 4000,
                slidesToShow: 4,
                slidesToScroll: 1,
                infinite: true,
                speed: 600,
                prevArrow: '
',
                nextArrow: '
',
                responsive: [{
                    breakpoint: 1200,
                    settings: {
                        slidesToShow: 4,
                    }
                }, {
                    breakpoint: 991,
                    settings: {
                        slidesToShow: 3,
                    }
                }, {
                    breakpoint: 767,
                    settings: {
                        slidesToShow: 2,
                    }
                }, {
                    breakpoint: 500,
                    settings: {
                        slidesToShow: 1,
                    }
                }]
            }).closest('section').addClass('active');
            $('.featureproduct_home .recommend').css('height', 'auto');
            $('.featureproduct_home .recommend').css('opacity', '1');
        }, 1500);
    };
    vm._uniqueKey = '';
    vm._key = function() {
        if (vm._uniqueKey === '') {
            vm._uniqueKey = Math.floor((Math.random() * 9999) + 1000);
            return vm._uniqueKey;
        } else {
            return vm._uniqueKey;
        }
    };
    /*---------------------- dealer special -----------------------*/
    vm.viewUrlSearch = function(paramsName) {
        if (paramsName === 'search_type') {
            return $location.search().search_type || '';
        }
        if (paramsName === 'size_width') {
            return $location.search().size_width || '';
        }
        if (paramsName === 'size_series') {
            return $location.search().size_series || '';
        }
        if (paramsName === 'size_diameter') {
            return $location.search().size_diameter || '';
        }
        if (paramsName === 'car_name') {
            return $location.search().car_name || '';
        }
        if (paramsName === 'car_series') {
            return $location.search().car_series || '';
        }
        if (paramsName === 'car_model') {
            return $location.search().car_model || '';
        }
        if (paramsName === 'model') {
            return $location.search().model || '';
        }
        if (paramsName === 'q') {
            return $location.search().q || '';
        }
        if (paramsName === 'page') {
            return $location.search().page || '';
        }
        return '';
    };
    vm.dealerListsAll = [];
    vm.dealerListsAll_Done = false;
    vm.filterColData = vm._viewRouteParams().col1 || 'all';
    vm.filterCol2Data = vm._viewRouteParams().col2 || 'all';
    vm.temp_dealerListsAll = [];
    vm.getDealerListsAll = function(page, row1, row2) {
        console.log('getDealerListsAll : start', row1, row2);
        vm.dealerListsAll_Done = false;
        /*  vm.pagination_dealer = {};
         vm.pagination_dealer.cur_page = 0;
         vm.pagination_dealer.per_page = 0;
         vm.pagination_dealer.result_rows = 0;
         vm.pagination_dealer.total_rows = 0;
         vm.pagination_dealer.max_page = 0;
         vm.pagination_dealer.prev_page = 0;
         vm.pagination_dealer.next_page = 0;
         vm.pagination_dealer.page_array = []; */
        vm.dealerListsAll = [];
        vm.temp_dealerListsAll = [];
        var dataSend = {
            'type': 'dealer_lists_all_mol',
            'shop_id': 722,
            'per_page': 100,
            'page': (page != undefined && page != "") ? page : 1,
            'q': ''
        };
        if (vm.viewUrlSearch('q') != '') {
            dataSend.q = vm.viewUrlSearch('q');
        }
        GAEAPI.directNativeAjax(vm.thirdPartyApi, {
            params: dataSend
        }).then(function(res) {
            $scope.$apply(function() {
                console.log('getDealerListsAll', dataSend, res);
                // vm.dealerListsAll_Done = true;
                if (res.data.data_lists.length > 0) {
                    vm.dealerListsAll_Done = true;
                    vm.dealerListsAll = res.data.data_lists;
                    if (row1 != undefined && row2 != undefined) {
                        for (var i = 0; i <= vm.dealerListsAll.length; i++) {
                            if (row2 == vm.dealerListsAll[i].dealer_service_array[0].service_title && row1 == vm.dealerListsAll[i].dealer_service_array[1].service_title) {
                                vm.temp_dealerListsAll.push(vm.dealerListsAll[i]);
                            }
                        }
                        vm.dealerListsAll_Done = true;
                    } else {
                        vm.temp_dealerListsAll = res.data.data_lists;
                        vm.dealerListsAll_Done = true;
                    }
                    /* console.log("sdjsjfhdjfhd :", vm.temp_dealerListsAll); */
                }
            });
        });
    };
    vm.promotionLinkByType = function(dataObject) {
        console.log("promotionLinkByType", dataObject);
        if (dataObject.promotion_type_number == 7) {
            if (dataObject.promotion_pdf.length) {
                // window.location.href = dataObject.promotion_pdf[0].file_url;
                window.open(dataObject.promotion_pdf[0].file_url, '_blank');
                return;
            } else if (dataObject.promotion_image.length) {
                window.open(dataObject.promotion_image[0].image_url, '_blank');
                // window.location.href = dataObject.promotion_image[0].image_url;
                return;
            }
        }
    };
    vm.changefilterCol2Data_test = function(index1, index2) {
        // alert(index1,index2)
        if (CUR_THEME.shop_id() == 722) {
            if (index1 == 'all' || index2 == 'all') {
                $('.red_fill').css('opacity', '1');
            } else {
                $('.red_fill').css('opacity', '0');
                vm.getDealerListsAll('', index1, index2);
            }
        }
    };
    vm.changefilterCol2Data_test();
    /*   deal list  */
    vm.data_deal_list = [];
    vm.all_data_deal_list = [];
    vm.getDataDeal = function() {
        vm.data_deal_list = [];
        var j = {
            'badge_id_array': [18]
        };
        var d = {
            'cur_page': 1,
            'per_page': 12,
            'txt_filter_json': JSON.stringify(j)
        };
        GAEAPI.get('deal/lists', d).then(function(e) {
            if (e.ok == 1) {
                vm.data_deal_list = e.data.dataList;
                console.log("dealsLists 1:", vm.data_deal_list);
                var date_now = new Date();
                var date_dif_start = [];
                var date_dif_end = [];
                var time_year = [];
                var time_mount = [];
                var time_date = [];
                var time_hr = [];
                var time_mi = [];
                var time_se = [];
                var time_year_end = [];
                var time_mount_end = [];
                var time_date_end = [];
                var time_hr_end = [];
                var time_mi_end = [];
                var time_se_end = [];
                var timeDifference_start = [];
                var timeDifference_end = [];
                for (var i = 0; i < vm.data_deal_list.length; i++) {
                    time_year[i] = GAEAPI.time.dateFormat("YYYY", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_mount[i] = GAEAPI.time.dateFormat("M", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_date[i] = GAEAPI.time.dateFormat("D", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_hr[i] = GAEAPI.time.dateFormat("H", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_mi[i] = GAEAPI.time.dateFormat("m", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_se[i] = GAEAPI.time.dateFormat("s", vm.data_deal_list[i].product_lifetime.lifetime_start_time);
                    time_year_end[i] = GAEAPI.time.dateFormat("YYYY", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    time_mount_end[i] = GAEAPI.time.dateFormat("M", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    time_date_end[i] = GAEAPI.time.dateFormat("D", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    time_hr_end[i] = GAEAPI.time.dateFormat("H", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    time_mi_end[i] = GAEAPI.time.dateFormat("m", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    time_se_end[i] = GAEAPI.time.dateFormat("s", vm.data_deal_list[i].product_lifetime.lifetime_end_time);
                    date_dif_start[i] = new Date(time_year[i], time_mount[i] - 1, time_date[i], time_hr[i], time_mi[i], time_se[i], 0);
                    date_dif_end[i] = new Date(time_year_end[i], time_mount_end[i] - 1, time_date_end[i], time_hr_end[i], time_mi_end[i], time_se_end[i], 0);
                    timeDifference_start[i] = date_now.getTime() - date_dif_start[i].getTime();
                    timeDifference_end[i] = date_dif_end[i].getTime() - date_now.getTime();
                    console.log("hr : mi : se =", time_hr_end[i], time_mi_end[i], time_se_end[i]);
                    console.log("dealtestrew1 :", timeDifference_start[i]);
                    console.log("hr : dealtestrew2 :", timeDifference_end[i]);
                    if (timeDifference_start[i] > 0 && timeDifference_end[i] > 2000) {
                        vm.all_data_deal_list.push(vm.data_deal_list[i]);
                    }
                }
                // $scope.timeCountStart2($scope.all_data);
                console.log("dealsLists", vm.all_data_deal_list);
            }
        });
    };
    vm.getDataDeal();
    vm.Path_change = function() {
        // alert(" 1 :" +vm.filterColData +" and " + vm.filterCol2Data);
        var path = {
            col1: vm.filterColData,
            /* parent category of this category */
            col2: vm.filterCol2Data,
            /* product in this category/filter cat */
        };
        var strHref_mol = 'distributor';
        if (typeof path.col1 !== 'undefined' && path.col1 !== "") {
            strHref_mol += '?col1=' + path.col1;
        }
        if (typeof path.col2 !== 'undefined' && path.col2 !== "") {
            strHref_mol += '&col2=' + path.col2;
        }
        if (path.col2 == 'all' || path.col1 == 'all') {
            return;
        } else {
            // alert(strHref_mol);
            window.location.href = strHref_mol;
            // vm.getDealerListsAll();
            //  $location.url(strHref).replace();
            // $scope.$apply();
        }
        // $location.url(strHref).replace();
        // $scope.$apply();
    };
    vm.loadView = function(strPath) {
        return strPath;
    };
    /* CART PAGE Function */
    /* CART PAGE Function */
    /* CART PAGE Function */
    vm.cartPromotionId = 0;
    vm.state = false;
    vm.pageCartData = false;
    vm.timerCart = 0;
    vm.cartTotalItems = 0;
    vm.cartTotalDiscount = 0;
    vm.cartGetTime = 0;
    vm.cartUpdateTimer = {
        total: 0,
        up: 0,
        down: 0,
        kill: 0
    };
    vm.cartCurrentPromotionData = false;
    vm.pageCart = {
        _get: function(isCallback) {
            var self = this;
            vm.state = false;
            console.log("pageCartData : start (0) ");
            GAEAPI.get('cart/current', {}).then(function(e) {
                console.log("pageCartData : start (1) ", e);
                vm.cartGetTime = $timeout(function() {
                    $timeout.cancel(vm.cartGetTime);
                    console.log("pageCartData : start (1-$timeout-after) ", e);
                    vm.pageCartData = e.data;
                    vm.state = true;
                    if (e.ok === 1) {
                        if (e.data.cart_row_array.length > 0) {
                            self.calculateTotal();
                            self.getPromotion();
                        }
                        if (isCallback != undefined && typeof isCallback !== 'undefined') {
                            isCallback(e);
                        }
                    } else {}
                }, 100);
            });
        },
        calculateTotal: function() {
            var self = this;
            var t = 0;
            if (vm.pageCartData) {
                for (var i = 0; i < vm.pageCartData.cart_row_array.length; i++) {
                    t = t + parseInt(vm.pageCartData.cart_row_array[i].amount);
                }
                vm.cartTotalItems = t;
                vm.cartTotalDiscount = parseInt(vm.pageCartData.cart_total_order_discount);
                self.savePromotionTextAnimate();
            }
        },
        calculateDiscountTotal: function() {
            /* dont use */
            /* dont use */
            /* dont use */
            var t = 0;
            if (vm.pageCartData) {
                if (!vm.pageCartData.cart_promotion.length) {
                    vm.cartTotalDiscount = 0;
                    return;
                }
                var promotionDataDiscount = vm.pageCartData.cart_promotion[0].discount_data;
                if (promotionDataDiscount.length > 0) {
                    if (parseInt(promotionDataDiscount[0].discount_price) > 0) {
                        vm.cartTotalDiscount = parseInt(promotionDataDiscount[0].discount_price);
                    }
                }
            }
        },
        get: function() {
            /* redirect to this function instead */
            return this._get();
            /* dont use */
            /* dont use */
            /* dont use */
            console.log("pageCartData : start");
            var self = this;
            var tttt = setInterval(function() {
                if (UiCart.delegate.get.cartData() != undefined && UiCart.delegate.get.cartData() != null) {
                    clearInterval(tttt);
                    var test = false;
                    if (test) {
                        UiCart.delegate.product.add(81290, 50, function() {
                            var t = setInterval(function() {
                                if (!UiCart.delegate.product.isProgress(81290)) {
                                    clearInterval(t);
                                    $scope.$apply(function() {
                                        vm.pageCartData = UiCart.delegate.get.cartData();
                                        vm.state = true;
                                    });
                                    console.log("pageCartData 2", vm.pageCartData);
                                    self.getPromotion();
                                }
                            }, 500);
                        });
                    } else {
                        $scope.$apply(function() {
                            vm.pageCartData = UiCart.delegate.get.cartData();
                            vm.state = true;
                            console.log("pageCartData 2", vm.pageCartData);
                            self.getPromotion();
                        });
                    }
                } else {
                    console.log("pageCartData : still loading...", UiCart.delegate.get.cartData());
                }
            }, 500);
        },
        qtyUp: function(productId, idx) {
            var _new_qtn = idx + 1;
            /* call api to update */
            this.updateApiQty(productId, _new_qtn);
        },
        updateApiQty: function(productId, qty) {
            var self = this;
            var dataSend = {
                'txt_product_id': parseInt(productId),
                'txt_amount': parseInt(qty),
                'txt_cart_id': parseInt(vm.pageCartData.cart_id)
            };
            vm.state = false;
            GAEAPI.post('cart/product_update', dataSend).then(function(e) {
                console.log("pageCart : update", dataSend, e);
                $timeout(function() {
                    vm.pageCartData = e.data;
                    vm.state = true;
                    self.calculateTotal();
                }, 100);
            });
        },
        qtuDown: function(productId, idx) {
            var _new_qtn = idx - 1;
            if (_new_qtn >= 1) {
                /* call api to update */
                this.updateApiQty(productId, _new_qtn);
            }
        },
        killProduct: function(productId, idx) {
            this.updateApiQty(productId, 0);
        },
        checkoutProduct: function() {
            if (!vm.pageCartData) {
                return;
            }
            if (vm.pageCartData.cart_row_array.length <= 0) {
                return;
            }
            var self = this;
            var strRetrun = 'checkout?pdata=';
            var strArray = [];
            var data_all = vm.pageCartData.cart_row_array;
            for (var i = 0; i < data_all.length; i++) {
                strArray.push(data_all[i].object_id + '-' + data_all[i].amount);
            }
            window.location.href = strRetrun + strArray.join(',') + self.getPromotionLink();
        },
        getPromotion: function() {
            var getPromotionId = function(id, callback) {
                var dataSend = {
                    'txt_promotion_id': id
                };
                var requestUrl = GURL.base_api_url() + 'promotion/id';
                requestUrl += "?txt_promotion_id=" + id;
                GAEAPI.get('promotion/id', dataSend).then(function(e) {
                    if (typeof callback != undefined) {
                        callback(e);
                    }
                });
            };
            var showWeb = function(objArray) {
                var r = false;
                for (var i = 0; i < objArray.length; i++) {
                    if (parseInt(objArray[i].badge_id) === 18) {
                        r = true;
                        break;
                    }
                }
                return r;
            };
            var checkPromo = function(buy, sub) {
                if (buy.length && sub.length) {
                    return true;
                }
                return false;
            };
            var dataSend = {
                'cur_page': 1,
                'per_page': 1,
                'txt_filter_json': JSON.stringify({
                    "type_number": 6
                })
            };
            var self = this;
            var requestUrl = GURL.base_api_url() + 'promotion/lists';
            requestUrl += "?cur_page=1";
            requestUrl += "&per_page=1";
            requestUrl += "&txt_filter_json=" + JSON.stringify({
                "type_number": 6
            });
            console.log("pageCartData : promotion start (0) ");
            vm.cartCurrentPromotionData = false;
            GAEAPI.get('promotion/lists', dataSend).then(function(responseList) {
                console.log("pageCartData : promotion list (1) ", responseList);
                if (responseList.ok == 1 && responseList.data.dataList.length > 0) {
                    getPromotionId(responseList.data.dataList[0].promotion_id, function(e) {
                        console.log("pageCartData : promotion id (2) ", e);
                        if (e.ok != 1 && !showWeb(e.data.promotion_badge)) {
                            vm.state = true;
                            return false;
                        }
                        /* continue promotion */
                        self.savePromotion(e.data);
                    });
                }
            });
        },
        savePromotion: function(data) {
            var self = this;
            /* check if no promotion -> add current promotion */
            vm.promoTimF = 0;
            vm.promoTimS = 0;
            vm.cartCurrentPromotionData = data; /* e.data */
            if (vm.cartPromotionId == 0) {
                var dataSend = {
                    'txt_promotion_id': parseInt(data.promotion_id),
                    'txt_cart_id': parseInt(vm.pageCartData.cart_id)
                };
                GAEAPI.post('cart/cart_promotion_save', dataSend).then(function(e) {
                    vm.promoTimF = $timeout(function() {
                        console.log("pageCartData : savePromotion (3)", e);
                        vm.state = false;
                        if (e.ok == 1) {
                            vm.pageCartData = false;
                            vm.cartPromotionId = data.promotion_id;
                            var dataCartAfterPromoSave = {};
                            if (e.data.length > 0) {
                                dataCartAfterPromoSave.txt_cart_id = dataSend.cart_id;
                            }
                            GAEAPI.get('cart/current', dataCartAfterPromoSave).then(function(c) {
                                vm.promoTimS = $timeout(function() {
                                    vm.pageCartData = c.data;
                                    vm.state = true;
                                    console.log("pageCartData : cart/current (4)", c);
                                    self.calculateTotal();
                                }, 100);
                            });
                        } else {
                            vm.cartPromotionId = 0;
                            vm.state = true;
                        }
                    }, 100);
                });
            } else {
                self.calculateTotal();
            }
        },
        getPromotionLink: function() {
            var str = "";
            if (vm.cartPromotionId != 0 && vm.pageCartData) {
                str += "&cart_id=" + vm.pageCartData.cart_id + '&promotion_id=' + vm.cartPromotionId;
            }
            return str;
        },
        savePromotionTextAnimate: function() {
            console.log("savePromotionTextAnimate", vm.cartCurrentPromotionData);
            var buildPriceDistance = function(subTotalPrice, promotionPrice) {
                return parseInt(subTotalPrice) - parseInt(promotionPrice)
            };
            var buildHeadPromotionText = function(discountObj) {
                if (parseInt(discountObj.percent) > 0) {
                    return discountObj.percent + "% discount.";
                }
                return discountObj.price + 'THB discount.';
            };
            if (vm.cartCurrentPromotionData) {
                console.log("savePromotionTextAnimate : pass 0");
                /* check if buy condition exist */
                if (vm.cartCurrentPromotionData.promotion_row_display.buy.order.length > 0) {
                    console.log("savePromotionTextAnimate : pass 1");
                    /* check if sub condition exist */
                    if (vm.cartCurrentPromotionData.promotion_row_display.sub.order.length > 0) {
                        console.log("savePromotionTextAnimate : pass 2");
                        var orderObj = vm.cartCurrentPromotionData.promotion_row_display.buy.order[0];
                        var discountObj = vm.cartCurrentPromotionData.promotion_row_display.sub.order[0];
                        var priceToStartDiscount = parseFloat(orderObj.price);
                        var priceDistanceCheck = buildPriceDistance(vm.pageCartData.cart_subtotal_price, priceToStartDiscount);
                        var textDiscount = buildHeadPromotionText(discountObj);
                        var percentDistance = 0;
                        vm.cartPromoPriceFinal = priceToStartDiscount;
                        console.log("savePromotionTextAnimate : cartPromoPriceFinal", vm.cartPromoPriceFinal);
                        if (priceDistanceCheck >= 0) {
                            /* promotion active */
                            vm.cartPromoNumber = 0;
                            vm.cartPromoText = 'You get ' + textDiscount;
                            percentDistance = 100;
                        } else {
                            /* promotion not active */
                            vm.cartPromoNumber = priceDistanceCheck;
                            vm.cartPromoText = ' away from ' + textDiscount;
                            percentDistance = parseInt(vm.pageCartData.cart_subtotal_price) * 100 / parseInt(orderObj.price);
                        }
                        var _s = $timeout(function() {
                            $('.promotionTextDisplay').show();
                            $timeout.cancel(_s);
                            var _ss = $timeout(function() {
                                $timeout.cancel(_ss);
                                if (vm.cartPromoNumber >= 0) {
                                    $('.progress-promo-percent').css('width', percentDistance + '%');
                                } else {
                                    $('.progress-promo-percent').css('width', percentDistance + '%');
                                }
                            }, 1000);
                        }, 500);
                    }
                }
            }
        },
        numberPositive: function(n) {
            return Math.abs(n);
        }
    };
    vm.home_about_data = false;
    vm.get_about = function() {
        if (!vm.home_about_data) {
            GAEAPI.get('shop/current', {}, $scope).then(function(e) {
                if (e.ok === 1) {
                    vm.home_about_data = e.data.shop_aboutus;
                }
            });
        }
    }
    vm.get_about();
    vm.form_submit = function($event) {
        var submit = true;
        $($event.currentTarget).closest('form').find('[required]').each(function() {
            if ($(this).val() == '') {
                $(this).closest('.form_block').find('.after').addClass('error');
                $(this).closest('.form_block').find('.round').addClass('error');
                submit = false;
            } else {
                $(this).closest('.form-group').find('span').removeClass('error');
            }
        });
        var isPass = false;
        if (submit) {
            console.log("sjfuksdfhrusygfkusrh : ", $('#contact_form input[name="qtyoil"]').val());
            // var printContents = document.getElementById('contact_form').innerHTML;
            // var popupWin = window.open('', '_blank', 'width=300,height=300');
            // popupWin.document.open();
            // popupWin.document.write('
',
        nextArrow: '
'
    }];
    vm.getCarousel = function() {
        var getFunction = {
            consoleLog: function(function_name, data_name, data) {
                if (vm.component.show) {
                    console.log(vm.component.name, ' : ', function_name, ' : ', data_name, ' : ', data);
                }
            },
            getFunctionCarousel: function(callback) {
                var _self = this;
                callback(_self);
            },
            setCarousels: function(carousel, callback) {
                var _self = this;
                callback(carousel);
            },
            pushObjectCarousel: function(callback) {
                var _self = this;
                var objectArray = {
                    speed: 600,
                    dots: false,
                    arrows: false,
                    infinite: false,
                    autoplay: false,
                    focusOnSelect: false,
                    adaptiveHeight: false,
                    autoplaySpeed: 4000,
                    slidesToScroll: 1,
                    centerMode: false,
                    centerPadding: '0px',
                    prevArrow: '
',
                    nextArrow: '
'
                };
                vm.carousels.push(objectArray);
                var res_index = (vm.carousels.length != 0) ? vm.carousels.length - 1 : 0;
                callback(res_index);
            },
            setSpeed: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.speed = state;
                });
            },
            setDots: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.dots = state;
                });
            },
            setArrows: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.arrows = state;
                });
            },
            setInfinite: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.infinite = state;
                });
            },
            setAutoplay: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.autoplay = state;
                });
            },
            setAdaptiveHeight: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.adaptiveHeight = state;
                });
            },
            setAutoplaySpeed: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.autoplaySpeed = state;
                });
            },
            setCenterMode: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.centerMode = state;
                });
            },
            setCenterPadding: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.centerPadding = state;
                });
            },
            setFocusOnSelect: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.focusOnSelect = state;
                });
            },
            setSlidesToScroll: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.slidesToScroll = state;
                });
            },
            setPrevArrow: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.prevArrow = state;
                });
            },
            setNextArrow: function(index, state) {
                var _self = this;
                _self.setCarousels(vm.carousels[index], function(res_carousel) {
                    res_carousel.nextArrow = state;
                });
            },
            getCarousel: function(carousel, callback) {
                var _self = this;
                var carousel_id = 0;
                if (carousel == 0) {
                    carousel_id = Math.floor((Math.random() * 9999) + 1000);
                }
                callback(carousel_id);
            },
            carousel: function(cover, carousel, xs, sm, md, lg) {
                var _self = this;
                var carousels = $(carousel);
                $(cover).css('height', '0');
                $(cover).css('opacity', '0');
                $(carousel).css('opacity', '0');
                var _xs = parseInt(xs);
                var _sm = parseInt(sm);
                var _md = parseInt(md);
                var _lg = parseInt(lg);
                setTimeout(function() {
                    carousels.not('.slick-initialized').slick({
                        speed: vm.carousels[0].speed,
                        dots: vm.carousels[0].dots,
                        arrows: vm.carousels[0].arrows,
                        infinite: vm.carousels[0].infinite,
                        autoplay: vm.carousels[0].autoplay,
                        slidesToScroll: vm.carousels[0].slidesToScroll,
                        slidesToShow: _lg,
                        autoplaySpeed: vm.carousels[0].autoplaySpeed,
                        adaptiveHeight: vm.carousels[0].adaptiveHeight,
                        prevArrow: vm.carousels[0].prevArrow,
                        nextArrow: vm.carousels[0].nextArrow,
                        responsive: [{
                            breakpoint: 1200,
                            settings: {
                                slidesToShow: _md,
                            }
                        }, {
                            breakpoint: 991,
                            settings: {
                                slidesToShow: _sm,
                            }
                        }, {
                            breakpoint: 767,
                            settings: {
                                slidesToShow: _xs,
                            }
                        }],
                    }).closest('section').addClass('active');
                    $(cover).css('height', 'auto');
                    $(cover).css('opacity', '1');
                    $(carousel).css('opacity', '1');
                }, 500);
            },
            carouselIndex: function(index, cover, carousel, xs, sm, md, lg) {
                var _self = this;
                var carousels = $(carousel);
                $(cover).css('height', '0');
                $(cover).css('opacity', '0');
                $(carousel).css('opacity', '0');
                var _xs = parseInt(xs);
                var _sm = parseInt(sm);
                var _md = parseInt(md);
                var _lg = parseInt(lg);
                var slick_array = {};
                slick_array.slidesToShow = _lg;
                slick_array.arrows = vm.carousels[index].arrows;
                if (vm.carousels[index].dots) {
                    slick_array.dots = vm.carousels[index].dots;
                }
                if (vm.carousels[index].speed != 0) {
                    slick_array.speed = vm.carousels[index].speed;
                }
                if (vm.carousels[index].autoplay) {
                    slick_array.arrows = vm.carousels[index].arrows;
                }
                if (vm.carousels[index].infinite) {
                    slick_array.infinite = vm.carousels[index].infinite;
                }
                if (vm.carousels[index].prevArrow != '') {
                    slick_array.prevArrow = vm.carousels[index].prevArrow;
                }
                if (vm.carousels[index].nextArrow != '') {
                    slick_array.nextArrow = vm.carousels[index].nextArrow;
                }
                if (vm.carousels[index].centerMode) {
                    slick_array.centerMode = vm.carousels[index].centerMode;
                }
                if (vm.carousels[index].centerPadding != '0' && vm.carousels[index].centerPadding != '') {
                    slick_array.centerPadding = vm.carousels[index].centerPadding;
                }
                if (vm.carousels[index].focusOnSelect) {
                    slick_array.focusOnSelect = vm.carousels[index].focusOnSelect;
                }
                if (vm.carousels[index].autoplaySpeed != 0) {
                    slick_array.autoplaySpeed = vm.carousels[index].autoplaySpeed;
                }
                if (vm.carousels[index].adaptiveHeight) {
                    slick_array.adaptiveHeight = vm.carousels[index].adaptiveHeight;
                }
                if (vm.carousels[index].slidesToScroll != 0) {
                    slick_array.slidesToScroll = vm.carousels[index].slidesToScroll;
                }
                slick_array.responsive = [{
                    breakpoint: 1200,
                    settings: {
                        slidesToShow: _md,
                    }
                }, {
                    breakpoint: 991,
                    settings: {
                        slidesToShow: _sm,
                    }
                }, {
                    breakpoint: 767,
                    settings: {
                        slidesToShow: _xs,
                    }
                }];
                if (vm.carousels[index].centerPadding != '0' && vm.carousels[index].centerPadding != '') {
                    slick_array.centerPadding = vm.carousels[index].centerPadding;
                    slick_array.responsive[2].settings.centerPadding = '0px'
                }
                setTimeout(function() {
                    carousels.not('.slick-initialized').slick(slick_array).closest('section').addClass('active');
                    $(cover).css('height', 'auto');
                    $(cover).css('opacity', '1');
                    $(carousel).css('opacity', '1');
                }, 1000);
            }
        }
        return getFunction;
    };
    /* main function */
    vm.api = function() {
        var getFunction = {
            consoleLog: function(function_name, data_name, data) {
                if (vm.component.show) {
                    console.log(vm.component.name, ' : ', function_name, ' : ', data_name, ' : ', data);
                }
            },
            getRouteParams: function(callback) {
                var _self = this;
                var res_params = $routeParams;
                var res_state = _self.stateData(true, false);
                _self.consoleLog("getRouteParams", "res_params", res_params);
                _self.consoleLog("getRouteParams", "res_state", res_state);
                callback(_self, res_params, res_state);
            },
            formatDataSend: function(data, callback) {
                var _self = this;
                _self.consoleLog("formatDataSend", "data", data);
                callback(data);
            },
            stateData: function(load, done) {
                var _self = this;
                var state = {
                    load: load,
                    done: done
                };
                _self.consoleLog("stateData", "state", state);
                return state;
            },
            dataSend: function(api, data_send, callback) {
                var _self = this;
                _self.consoleLog("dataSend", "api", api);
                _self.consoleLog("dataSend", "data_send", data_send);
                callback(api, data_send);
            },
            getApiOk: function(res_api, callback) {
                var _self = this;
                var res_ok = false;
                if (res_api.ok == 1) {
                    res_ok = true;
                }
                _self.consoleLog("getApiOk", "res_ok", res_ok);
                callback(res_ok);
            },
            getApi: function(api, dataSend, callback) {
                var _self = this;
                var res_state = _self.stateData(true, false);
                GAEAPI.get(api, dataSend, $scope).then(function(res_api) {
                    _self.getApiOk(res_api, function(res_ok) {
                        _self.consoleLog("getApi", "res_api", res_api);
                        _self.consoleLog("getApi", "res_ok", res_ok);
                        res_state = _self.stateData(false, true);
                        _self.consoleLog("getApi", "res_state", res_state);
                        callback(res_ok, res_api, res_state);
                    })
                });
            },
            getDataBadgeId: function(badge_id, badge_array, callback) {
                var _self = this;
                var state = false;
                for (var i = 0; i < badge_array.length; i++) {
                    if (badge_array[i].badge_id == badge_id) {
                        state = true;
                        break;
                    }
                }
                _self.consoleLog("getDataBadgeId", "state", state);
                callback(state);
            },
            getDate: function(locale, format, lifetime, callback) {
                var _self = this;
                locale = (locale == '') ? 'en' : locale;
                format = (format == '') ? 'LL' : format;
                lifetime = (lifetime != "-1" && lifetime != "") ? lifetime : "";
                if (lifetime != "") {
                    moment.locale(locale);
                    lifetime = moment.unix(parseInt(lifetime)).format(format);
                }
                _self.consoleLog("getDate", "lifetime", lifetime);
                callback(lifetime);
            },
            getProductDealId: function(product, callback) {
                var _self = this;
                product.product_id = (product.product_deal_id != "0") ? product.product_deal_id : product.product_id;
                _self.consoleLog("getProductDealId", "product", product);
                callback(product);
            },
            getNameUrl: function(name, callback) {
                var _self = this;
                name = name.replace(/[^a-zA-Zก-๙0-9 ]/g, "").split(" ").join("-").replace("--", "-");
                _self.consoleLog("getNameUrl", "name", name);
                callback(name);
            },
            getSortBanner: function(banner_array, callback) {
                var _self = this;
                var original = banner_array;
                var desktop = [];
                var mobile = [];
                for (var i = 0; i < banner_array.length; i++) {
                    _self.getDataBadgeId(18, banner_array[i].banner_badge, function(state) {
                        if (state) {
                            desktop.push(banner_array[i]);
                        }
                    });
                    _self.getDataBadgeId(19, banner_array[i].banner_badge, function(state) {
                        if (state) {
                            mobile.push(banner_array[i]);
                        }
                    });
                }
                _self.consoleLog("getSortBanner", "original", original);
                _self.consoleLog("getSortBanner", "desktop", desktop);
                _self.consoleLog("getSortBanner", "mobile", mobile);
                callback(original, desktop, mobile);
            },
            main: function() {
                var _self = this;
            }
        }
        return getFunction;
    };
    /* main function */
    /* gallery */
    /*// vm.newLogin = function(){
    //     window.location.href=GURL.base_url()+'login';
    //     //window.location.href='login';
    // };*/
    /* custom call api by shop name */
    switch (CUR_THEME.shop_id()) {
        case "477": // thaitens
            vm.getPostLists(5);
            vm._getProductFeature(4, 'badge_sort_index_asc');
            break;
        case "645": // ttc
            vm.getcalendar_img(880, 1, 1);
            vm._custom_ref_ttc(6095);
            break;
        case "552": // ducky
            vm._getProductFeature(20, 'product_lastest_create');
            break;
        case "477": // thaitens
            vm._getProductFeature(20, 'product_lastest_create');
            break;
        case "609": // thenine
            vm.getProductList();
            break;
        case "676": // flashmall
            vm.getProductListByBadge(16);
            vm.getProductListByBadge(72);
            vm.getProductListByBadge(74);
            vm.getProductListByBadge(75);
            vm.gethomealbum_img1(595, 1);
            vm.gethomealbum_img2(596, 1);
            vm.gethomealbum_img3(597, 1);
            break;
        case "758": // khongfak
            vm.getProductListByBadge(72);
            vm.getProductListByBadge(74);
            vm.getProductListByBadge(75);
            break;
        case "688": // gae_demo7251
            break;
        case "635": // lightmax
            vm.data_control = {
                mini_banner: {
                    mobile: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    },
                    desktop: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    }
                },
                secondary_carousel: {
                    mobile: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    },
                    desktop: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    }
                }
            };
            vm.control = function() {
                var getFunction = {
                    consoleLog: function(function_name, data_name, data) {
                        if (vm.component.show) {
                            console.log(vm.component.name, ' : ', function_name, ' : ', data_name, ' : ', data);
                        }
                    },
                    popupImg: function(state, img_link) {
                        var _self = this;
                        _self.consoleLog("popupImg", "state", state);
                        vm.data_control.secondary_carousel.mobile.popup = false;
                        vm.data_control.secondary_carousel.desktop.popup = false;
                    },
                    getUrl: function(state, url) {
                        var _self = this;
                        _self.consoleLog("getUrl", "state", state);
                        _self.consoleLog("getUrl", "url", url);
                        if (url != '') {
                            window.open(url, '_blank');
                        }
                    },
                    main: function() {
                        var _self = this;
                    }
                }
                return getFunction;
            };
            vm.data_api = {
                web_home: {
                    data_send: {},
                    api: "web/home",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                vm.data_api.web_home.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.web_home, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                            _self.consoleLog("getApiData", "res_data", res_data);
                            _self.getSortBanner(res_data.data_array.main_banner_master.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.main_banner_master.banner_array = res_original;
                                res_data.data_array.main_banner_master.banner_mobile_array = res_mobile;
                                res_data.data_array.main_banner_master.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.secondary_carousel.banner_array, function(res_original, res_desktop, res_mobile) {
                                _self.consoleLog("getApiData", "res_original", res_original);
                                _self.consoleLog("getApiData", "res_desktop", res_desktop);
                                _self.consoleLog("getApiData", "res_mobile", res_original);
                                res_data.data_array.secondary_carousel.banner_array = res_original;
                                res_data.data_array.secondary_carousel.banner_mobile_array = res_original;
                                angular.forEach(res_original, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.secondary_carousel.mobile.popup = true;
                                        vm.data_control.secondary_carousel.mobile.url_link = item.banner_link_url;
                                        vm.data_control.secondary_carousel.mobile.img_url = item.banner_image[0].image_url;
                                    }
                                });
                                res_data.data_array.secondary_carousel.banner_desktop_array = res_original;
                                angular.forEach(res_original, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.secondary_carousel.desktop.popup = true;
                                        vm.data_control.secondary_carousel.desktop.url_link = item.banner_link_url;
                                        vm.data_control.secondary_carousel.desktop.img_url = item.banner_image[0].image_url;
                                    }
                                });
                            });
                            _self.getSortBanner(res_data.data_array.top_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.top_page_banner.banner_array = res_original;
                                res_data.data_array.top_page_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.top_page_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.bottom_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.bottom_page_banner.banner_array = res_original;
                                res_data.data_array.bottom_page_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.bottom_page_banner.banner_desktop_array = res_desktop;
                            });
                        });
                    });
                });
            });
            vm.category_map_6113 = [];
            vm.category_map_state_6113 = vm.getApi().state(true, false);
            var txt_filter_json = {};
            var dataSend = {
                'txt_referral_type_id': 11,
                'txt_parent_id': 6113,
                'txt_sortby': 'referral_sort_index_asc_name_asc',
                'txt_filter_json': JSON.stringify(txt_filter_json)
            };
            vm.getApi().GAEAPI(0, 'referral/map', dataSend, function(index, output) {
                vm.category_map_6113 = output.data;
                vm.category_map_state_6113 = vm.getApi().state(false, true);
            });
            vm.category_id_6166 = [];
            vm.category_id_state_6166 = vm.getApi().state(true, false);
            var txt_filter_json = {};
            var dataSend = {
                'txt_referral_id': 6166,
                'txt_filter_json': JSON.stringify(txt_filter_json)
            };
            vm.getApi().GAEAPI(0, 'referral/id', dataSend, function(index, output) {
                vm.category_id_6166 = output.data;
                vm.category_id_state_6166 = vm.getApi().state(false, true);
            });
            vm.review = [];
            vm.data_api = {
                review: [{
                    page_url: "custom/main_recommend",
                    data_send: {
                        txt_gallery_id: '266'
                    },
                    api: "gallery/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }, {
                    page_url: "custom/main_service",
                    data_send: {
                        txt_gallery_id: '267'
                    },
                    api: "gallery/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }, {
                    page_url: "blog/355-เกร็ดความรู้?id=355",
                    data_send: {
                        txt_blog_id: '355'
                    },
                    api: "blog/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }]
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                angular.forEach(vm.data_api.review, function(review, index_review) {
                    review.data_array_state = res_state;
                    _self.formatDataSend(review, function(res_data) {
                        _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                            _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                                res_data.ok = res_ok;
                                res_data.data_array = res_api.data;
                                if (res_data.api == "gallery/id") {
                                    if (res_data.data_array.gallery_name != undefined) {
                                        _self.getNameUrl(res_data.data_array.gallery_name, function(res_title) {
                                            res_data.data_array.gallery_name_url = res_title;
                                        });
                                        res_data.data_array_state = res_state;
                                    }
                                } else if (res_data.api == "blog/id") {
                                    if (res_data.data_array.blog_name != undefined) {
                                        _self.getNameUrl(res_data.data_array.blog_name, function(res_title) {
                                            res_data.data_array.blog_name_url = res_title;
                                        });
                                        res_data.data_array_state = res_state;
                                    }
                                }
                                _self.consoleLog("getApiData", "res_data", res_data);
                            });
                        });
                    });
                });
            });
            break;
        case "718": // seselectpure
            vm.gethomealbum_img1(914, 12);
            break;
        case "713": // gygy
            vm.getCategoryList_gygy();
            break;
        case "643":
            vm.data_control = {
                popup: {
                    mobile: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    },
                    desktop: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    }
                }
            }
            vm.control = function() {
                var getFunction = {
                    consoleLog: function(function_name, data_name, data) {
                        if (vm.component.show) {
                            console.log(vm.component.name, ' : ', function_name, ' : ', data_name, ' : ', data);
                        }
                    },
                    popupImg: function(state, img_link) {
                        var _self = this;
                        _self.consoleLog("popupImg", "state", state);
                        vm.data_control.popup.mobile.popup = false;
                        vm.data_control.popup.desktop.popup = false;
                    },
                    getUrl: function(state, url) {
                        var _self = this;
                        _self.consoleLog("getUrl", "state", state);
                        _self.consoleLog("getUrl", "url", url);
                        if (url != '') {
                            window.open(url, '_blank');
                        }
                    },
                    main: function() {
                        var _self = this;
                    }
                }
                return getFunction;
            };
            vm.data_api = {
                web_home: {
                    data_send: {},
                    api: "web/home",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                vm.data_api.web_home.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.web_home, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                            _self.consoleLog("getApiData", "res_data", res_data);
                            _self.getSortBanner(res_data.data_array.main_banner_master.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.main_banner_master.banner_array = res_original;
                                res_data.data_array.main_banner_master.banner_mobile_array = res_mobile;
                                res_data.data_array.main_banner_master.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.mini_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.mini_banner.banner_array = res_original;
                                res_data.data_array.mini_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.mini_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.top_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.top_page_banner.banner_array = res_original;
                                res_data.data_array.top_page_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.top_page_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.bottom_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.bottom_page_banner.banner_array = res_original;
                                res_data.data_array.bottom_page_banner.banner_mobile_array = res_mobile;
                                angular.forEach(res_mobile, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.popup.mobile.popup = true;
                                        vm.data_control.popup.mobile.url_link = item.banner_link_url;
                                        vm.data_control.popup.mobile.img_url = item.banner_image[0].image_url;
                                    }
                                });
                                res_data.data_array.bottom_page_banner.banner_desktop_array = res_desktop;
                                angular.forEach(res_desktop, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.popup.desktop.popup = true;
                                        vm.data_control.popup.desktop.url_link = item.banner_link_url;
                                        vm.data_control.popup.desktop.img_url = item.banner_image[0].image_url;
                                    }
                                });
                            });
                        });
                    });
                });
            });
            vm.getHomeNews_z1(221);
            vm.getHomeNews_z2(150);
            break;
        case "541": // theride
            vm.getHomeNews_z1(163);
            vm.getHomeNews_z2(128);
            break;
        case "541": // theride
            vm.getHomeNews_z1(163);
            vm.getHomeNews_z2(128);
            break;
        case "752": // hondaacadamy
            vm.getcalendar_img(1008, 1, 100);
            vm._custom_ref_ttc(11595);
            break;
        case "701":
            vm.getCatList();
        case "731":
            /* iambeauty */
            vm.getiambeauty_img();
            vm._getProductFeature(2, 'product_title_a-z');
            break;
        case "717": //hongmin
            vm.getHomevideolist();
            break;
        case "741":
            vm.get_category_dacseediver();
            vm.get_category_dacseetour();
            vm.get_blog_dacseetour();
            break;
        case "745":
            vm._getProductList('product_lastest_create');
            vm._getHomeVideoList();
            vm._getProductFeature(20, 'product_lastest_create');
            vm.getProductListByBadge(72);
            vm.get_blog_vito_one();
            vm.get_blog_vito_two();
            vm.data_api = {
                product_id_v30: {
                    data_send: {
                        txt_product_id : 455187
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_v50: {
                    data_send: {
                        txt_product_id : 94577
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_v80: {
                    data_send: {
                        txt_product_id : 94576
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_vxm: {
                    data_send: {
                        txt_product_id : 90985
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_vxl: {
                    data_send: {
                        txt_product_id : 90987
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_g2: {
                    data_send: {
                        txt_product_id : 90984
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                },
                product_id_g3: {
                    data_send: {
                        txt_product_id : 90983
                    },
                    api: "product/id",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                vm.data_api.product_id_v30.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_v30, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_v50.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_v50, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_v80.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_v80, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_vxm.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_vxm, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_vxl.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_vxl, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_g2.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_g2, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
                vm.data_api.product_id_g3.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.product_id_g3, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                        });
                    });
                });
            });
            break;
        case "753":
            vm.get_productcat_evo();
            break;
        case "754":
            vm.galleryId = {};
            vm.galleryIdState = {
                load: true,
                done: false
            };
            var galleryDataSend = {
                'txt_gallery_id': 243
            };
            vm.galleryImageGroupImage().GAEAPI(0, 'gallery/id', galleryDataSend, function(index, output) {
                vm.galleryImageGroupImage().stateData();
                vm.galleryId = output.data;
                var txt_filter_json = {
                    'gallery_id_array': [output.data.gallery_id]
                };
                var imageGroupDataSend = {
                    'cur_page': 1,
                    'per_page': 50,
                    'txt_filter_json': JSON.stringify(txt_filter_json)
                };
                vm.galleryImageGroupImage().GAEAPI(0, 'image_group/lists', imageGroupDataSend, function(index, output) {
                    vm.galleryId.image_group = output.data.dataList;
                    for (var i = 0; i < vm.galleryId.image_group.length; i++) {
                        var txt_filter_json = {
                            'image_group_id_array': [output.data.dataList[i].image_group_id]
                        };
                        var imageDataSend = {
                            'cur_page': 1,
                            'per_page': 50,
                            'txt_filter_json': JSON.stringify(txt_filter_json)
                        };
                        vm.galleryImageGroupImage().GAEAPI(i, 'image/lists', imageDataSend, function(index, output) {
                            vm.galleryId.image_group[index].image = output.data.dataList;
                        });
                    }
                    vm.galleryIdState = vm.galleryImageGroupImage().stateData(false, true);
                });
            });
            vm.getProductListByBadge(74);
            var jsonFilter = {
                'image_group_id_array': [1025]
            };
            var dataSend = {
                'cur_page': 1,
                'per_page': 20,
                'txt_filter_json': JSON.stringify(jsonFilter)
            };
            vm.getApi().GAEAPI(0, 'image/lists', dataSend, function(index, output) {
                vm.img_byalbum_id = output.data;
            });
            CONTACTPAGE_API.location_lists();
            break;
        case "722":
            vm._getProductFeature(1, 'product_lastest_create');
            vm._getAlbumList(4, 'image_group_name_ASC');
            break;
        case "743":
            /* smarthome */
            vm.getPromotionLists(1, 3, 18, 'promotion_lastest_create', 7);
            break;
        case "762":
            vm.data_control = {
                popup: {
                    mobile: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    },
                    desktop: {
                        popup: false,
                        img_url: '',
                        url_link: ''
                    }
                }
            }
            vm.control = function() {
                var getFunction = {
                    consoleLog: function(function_name, data_name, data) {
                        if (vm.component.show) {
                            console.log(vm.component.name, ' : ', function_name, ' : ', data_name, ' : ', data);
                        }
                    },
                    popupImg: function(state, img_link) {
                        var _self = this;
                        _self.consoleLog("popupImg", "state", state);
                        vm.data_control.popup.mobile.popup = false;
                        vm.data_control.popup.desktop.popup = false;
                    },
                    getUrl: function(state, url) {
                        var _self = this;
                        _self.consoleLog("getUrl", "state", state);
                        _self.consoleLog("getUrl", "url", url);
                        if (url != '') {
                            window.open(url, '_blank');
                        }
                    },
                    main: function() {
                        var _self = this;
                    }
                }
                return getFunction;
            };
            vm.data_api = {
                web_home: {
                    data_send: {},
                    api: "web/home",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                vm.data_api.web_home.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.web_home, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                            _self.consoleLog("getApiData", "res_data", res_data);
                            _self.getSortBanner(res_data.data_array.main_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.main_banner.banner_array = res_original;
                                angular.forEach(res_original, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.popup.mobile.popup = true;
                                        vm.data_control.popup.mobile.url_link = item.banner_link_url;
                                        vm.data_control.popup.mobile.img_url = item.banner_image[0].image_url;
                                    }
                                });
                                angular.forEach(res_original, function(item, index) {
                                    _self.consoleLog("getApiData", "index", index);
                                    _self.consoleLog("getApiData", "item", item);
                                    if (index == 0) {
                                        vm.data_control.popup.desktop.popup = true;
                                        vm.data_control.popup.desktop.url_link = item.banner_link_url;
                                        vm.data_control.popup.desktop.img_url = item.banner_image[0].image_url;
                                    }
                                });
                            });
                            _self.getSortBanner(res_data.data_array.main_banner_master.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.main_banner_master.banner_array = res_original;
                                res_data.data_array.main_banner_master.banner_mobile_array = res_mobile;
                                res_data.data_array.main_banner_master.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.mini_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.mini_banner.banner_array = res_original;
                                res_data.data_array.mini_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.mini_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.top_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.top_page_banner.banner_array = res_original;
                                res_data.data_array.top_page_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.top_page_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.bottom_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                res_data.data_array.bottom_page_banner.banner_array = res_original;
                                res_data.data_array.bottom_page_banner.banner_mobile_array = res_mobile;
                                res_data.data_array.bottom_page_banner.banner_desktop_array = res_desktop;
                            });
                        });
                    });
                });
            });
            vm.getPostListsSet(1, 3, 'post_create_time_DESC');
            break;
        case "765":
            /* supercheap */
            vm.getCarousel().getFunctionCarousel(function(_self) {
                _self.setSpeed(0, 600);
                _self.setDots(0, false);
                _self.setArrows(0, false);
                _self.setAutoplay(0, true);
                _self.setAdaptiveHeight(0, true);
                _self.setAutoplaySpeed(0, 4000);
                _self.setSlidesToScroll(0, 1);
                _self.setPrevArrow(0, '
');
                _self.setNextArrow(0, '
');
            });
            vm.data_api = {
                web_home: {
                    data_send: {},
                    api: "web/home",
                    ok: false,
                    data_array: [],
                    data_array_state: {
                        load: false,
                        done: false
                    }
                }
            };
            vm.api().getRouteParams(function(_self, res_params, res_state) {
                vm.data_api.web_home.data_array_state = res_state;
                _self.formatDataSend(vm.data_api.web_home, function(res_data) {
                    _self.dataSend(res_data.api, res_data.data_send, function(res_api, res_data_send) {
                        _self.getApi(res_api, res_data_send, function(res_ok, res_api, res_state) {
                            res_data.ok = res_ok;
                            res_data.data_array = res_api.data;
                            res_data.data_array_state = res_state;
                            _self.consoleLog("getApiData", "res_data", res_data);
                            _self.getSortBanner(res_data.data_array.main_banner_master.banner_array, function(res_original, res_desktop, res_mobile) {
                                vm.data_api.web_home.data_array.main_banner_master.banner_array = res_original;
                                vm.data_api.web_home.data_array.main_banner_master.banner_mobile_array = res_mobile;
                                vm.data_api.web_home.data_array.main_banner_master.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.mini_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                vm.data_api.web_home.data_array.mini_banner.banner_array = res_original;
                                vm.data_api.web_home.data_array.mini_banner.banner_mobile_array = res_mobile;
                                vm.data_api.web_home.data_array.mini_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.top_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                vm.data_api.web_home.data_array.top_page_banner.banner_array = res_original;
                                vm.data_api.web_home.data_array.top_page_banner.banner_mobile_array = res_mobile;
                                vm.data_api.web_home.data_array.top_page_banner.banner_desktop_array = res_desktop;
                            });
                            _self.getSortBanner(res_data.data_array.bottom_page_banner.banner_array, function(res_original, res_desktop, res_mobile) {
                                vm.data_api.web_home.data_array.bottom_page_banner.banner_array = res_original;
                                vm.data_api.web_home.data_array.bottom_page_banner.banner_mobile_array = res_mobile;
                                vm.data_api.web_home.data_array.bottom_page_banner.banner_desktop_array = res_desktop;
                            });
                        });
                    });
                });
            });
            var jsonFilter = {
                'badge_id_array': [18]
            };
            var dataSend = {
                'txt_referral_type_id': 11,
                'txt_sortby': 'referral_sort_index_asc_name_asc',
                'txt_filter_json': JSON.stringify(jsonFilter)
            };
            vm.getApi().GAEAPI(0, 'referral/map', dataSend, function(index, output) {
                vm.dataArrayMain = output.data;
            });
            vm.getReferralists(11, 1, 8, [16]);
            break;
        case "767":
            vm._getProductFeature(6, 'badge_sort_index_asc');
            break;
        case "646":
            vm.post_featured = [];
            var txt_filter_json = {
                'badge_id_array': [16]
            };
            var dataSend = {
                'cur_page': 1,
                'per_page': 8,
                'txt_filter_json': JSON.stringify(txt_filter_json)
            };
            vm.getApi().GAEAPI(0, 'post/lists', dataSend, function(index, output) {
                console.log("myhappyphones : myhappyphones : myhappyphones : myhappyphones : ", output);
                vm.post_featured = output.data.dataList;
            });
            break;
        case "636":
            vm.get_img_byalbum_id(1024);
            break;
        case "773":
            vm.productBadge = [{
                name: 'New Arrival',
                badgeId: 72,
                badgeIdArray: [72],
                state: vm.getApi().state(false, false),
                dataList: []
            }, {
                name: 'Recommend',
                badgeId: 74,
                badgeIdArray: [74],
                state: vm.getApi().state(false, false),
                dataList: []
            }, {
                name: 'Best Seller',
                badgeId: 75,
                badgeIdArray: [75],
                state: vm.getApi().state(false, false),
                dataList: []
            }];
            break;
        case "774":
            vm._getCollectionList();
            break;
        default:
            break;
    }
    /* Unknown usage */
    /*
     * vm._getAlbumList();
     * vm._getTimeNow(); 
     * vm._get_shop_video();
     * vm._get_web_home();
     * vm.getShopDetail();
     */
});