﻿var search_container = {
    open: function() {
        $('#search-dropdown,#search-dropdown-back').show();
        $('#search-dropdown-back').height($('body').height());
        ajaxloader.stop();
        if (!global.profile.isMember) {
            $('#search-dropdown').addClass('notmember');
        };
        if (!$('#search-result *').size()) {
            //search_container.close();
            
        };
        close_dropdown();
    },
    close: function() {
        $('#search-dropdown,#search-dropdown-back').hide();
        $('#search-dropdown').data('counter',0);
        ajaxloader.stop();
    },
    clear: function() {
        $('#search-result').empty();
        ajaxloader.stop();
    },
    counter: function() {
        var data = $('#search-dropdown').data('counter');
        if (!data) {
            return 0;
        } else {
            return 1;
        }
    }
};

function search_request(options,callback) {
    var options = options || '';
    var callback = callback || function(){return false};

    // disable this optimization for now
    /*
    if (options!='noold') {
        if (!old_request()) {
            return false;
        };
    };
    */
    var ajax_search_dataType = 'json';
    var data = new Object();
    var GroupID = $('.category-select').val();
    
    if (GroupID != "0") {
        data.GroupID = GroupID;
    };
    data.o = "json";
    data.FreeText = $('#search-text').val();
    if (data.FreeText.length>0){
        $.ajax({
            url: global.url.InstantSearch,
            data: data,
            beforeSend: function (xhr) { ajaxloader.start(xhr); },
            dataType: ajax_search_dataType,
            //error: search_container.close(),
            complete: function(data){
                ajaxloader.stop();
                search_json_filter(data,callback);
            }
        });
    } else {
        search_container.close();
    };
};

function search_json_filter(data,callback) {
    var obj = $.parseJSON(data.responseText);
    if (!obj) {
        search_container.close();
        return false;
    };
    if (obj.Data.length) {
        if (!search_container.counter()) {
            search_container.open();
            $('#search-dropdown').data('counter',1);
        };
        search_container.clear();       
        $.each(obj.Data,function(i){
            search_item_template(this,callback);
        });
        seeall_toggle();
        return true;
    } else {
        search_container.close();
        return false;
    };
};

function seeall_toggle() {
    var count = $('#search-result .search-item').size();
    if (count < 5 || !count) {
        $('#search-seeall-link').hide();
    } else {
        $('#search-seeall-link').show();
    }
};

function search_item_template(data,callback) {
    var activeclass = "";
    var ShowMemberPrice = "";
    var IsMember = "notmember"
    if (data.CartCount>0) {
        activeclass='active';
    };

    if (data.ShowMemberPrice==true) {
        ShowMemberPrice = 'ShowMemberPrice';
    } else {
        ShowMemberPrice = 'NoShowMemberPrice';
    };
    if (data.IsMember) {
        IsMember = "member";
    };
    var tpl = '';
    tpl += '<div class="search-item '+activeclass+' '+ShowMemberPrice+' ">';
       tpl += '<div class="search-item-img">';
           tpl += '<a href="'+global.url.ProductPage+'?ProductID='+data.ID+'">';
               tpl += '<img src="/Admin/Public/GetImage.aspx?Width=60&Height=62&Crop=6&Image=/Files/Billeder/Products/'+data.Ean+'.jpg&AlternativeImage=/Files/Billeder/na.jpg" width="60"/>';
           tpl += '</a>';    
       tpl += '</div>';
       
       tpl += '<div class="search-item-name">';
           tpl += '<div class="search-item-name-wrap">';
               tpl += '<h3><a href="'+global.url.ProductPage+'?ProductID='+data.ID+'">'+data.Name+'</a></h3>';
               tpl += '<p>'+data.ShortDescription+'</p>';  
           tpl += '</div>';
       tpl += '</div>';
       
       tpl += '<div class="search-item-price">';
           tpl += '<div class="search-item-price-wrap ">';
                
                if (data.ShowMemberPrice==true) {
                    tpl += '<div class="price-new '+IsMember+'">';
                        tpl += lang.membersprice+':';
                        tpl += '<span class="price">';
                            tpl += data.MemberPrice.toFixed(2);
                        tpl += '</span>';
                    tpl += '</div>';
                } else {
                    tpl += '<div class="price-new '+IsMember+'">';
                        tpl +='<a class="ajax-open-login-form-link ajax-open-login-form" href="/login">Logga in</a>';
                        tpl += lang.membersprice+':';
                    tpl += '</div>';
                };
                
               tpl += '<div class="price-old '+IsMember+'">';
                   tpl += lang.price+':';
                   tpl += '<span class="price">';
                        if (data.BiddingPrice) {
                            tpl += data.BiddingPrice.toFixed(2);
                        } else {
                            tpl += data.DefaultPrice.toFixed(2);
                        };
                   tpl += '</span>';
               tpl += '</div>';
           tpl += '</div>';
       tpl += '</div>';
       
       tpl += '<div class="search-item-basket">';
           tpl += '<div class="search-item-basket-wrap ">';
               tpl += '<div class="search-basket">';
                   tpl += data.CartCount;
               tpl += '</div>';
               tpl += '<div class="search-basket-action">';
               tpl += '<a prodid="' + data.ID + '" total="' + data.CartCount + '" orderid="' + data.OrderLineId + '" class="remove"></a>';
                   tpl += '<a prodid="'+data.ID+'" class="search-basket-action-title buy" href="'+global.url.ProductPage+'?ProductID='+data.ID+'&cartcmd=add">';
                       tpl += lang.add;
                   tpl += '</a>';
                   tpl += '<a prodid="' + data.ID + '" total="' + data.CartCount + '" orderid="' + data.OrderLineId + '" class="add"></a>';
               tpl += '</div>';
           tpl += '</div>';
       tpl += '</div>';
    tpl += '</div>';
    
   
    $('#search-result').append(tpl);
    price_view.generate();
    callback;
};

function old_request() {
    var current = $('#search-text').val();
    var old = $('#search-text').data('old_request');
    $('#search-text').data('old_request',current);
    if (old) {
        if (current==old) {
            return false;
        }
    }
    return true;
}

var search_item  = {
    basket: {
        add: function(elem) {
            var total =  search_item.basket.total(elem)+1;
            var contaner = search_item.basket.item(elem);
            $(contaner).addClass('active');
            $(contaner).find('.search-basket').text(total);
            $(contaner).find('.remove,.add').attr('total',total);
        },
        remove: function(elem) {
            var total =  search_item.basket.total(elem)-1;
            var contaner = search_item.basket.item(elem);
            $(elem).attr('total',total);
            if (!total) {
                $(contaner).removeClass('active');
            };
            $(contaner).find('.search-basket').text(total);
            $(contaner).find('.remove,.add').attr('total',total);
        },
        buy: function(elem) {
            var total =  search_item.basket.total(elem)+1;
            var contaner = search_item.basket.item(elem);
            $(contaner).addClass('active');
            $(contaner).find('.search-basket').text(total);
            $(contaner).find('.remove,.add').attr('total',total);
        },
        total: function(elem){
            var contaner = search_item.basket.item(elem);
            return parseInt($(contaner).find('.search-basket').text());
        },
        item: function(elem) {
            return $(elem).parents('.search-item');
        },
        orderid: function(elem){
            var contaner = search_item.basket.item(elem);
            var ProductID = $(elem).attr('prodid');
            var data = {};
            data.o = "json";
            data.ProductID = ProductID;
            $.ajax({
                url: global.url.InstantSearch,
                data: data,
                dataType: 'json',
                complete: function(data){
                    var obj = $.parseJSON(data.responseText);
                    if (obj.Data.length) {
                        $(contaner).find('.search-basket-action a').attr('orderid',obj.Data.OrderLineId);
                         search_item.basket.buy(elem);
                    }
                }
            });
        }
    }
};


$(document).ready(function () {
    selectBoxes_init();
    $('#search-text').live('keyup', function (eventObject) {
        var keycode = (eventObject.keyCode ? eventObject.keyCode : eventObject.which);
        if (keycode != 27) {
            search_request();
        };
    });

    $('#search-dropdown-back').live('click', function (e) {
        e.preventDefault();
        search_container.close();
    });

    $('.category-select').change(function () {
        search_request();
        close_dropdown();
    });
    
    $('.sbSelector,.sbToggle').live('click',function () {
        close_dropdown();
    });


    $('.search-basket-action .buy').live('click', function () {
        var pid = $(this).attr('prodid');
        Basket.cartCmd('add', pid);
        return false;
/*
        var options = "noold";
        var url = $(this).attr('href');
        debugger;
        search_request(options, Basket.request(url));
        return false;
*/
    });

    $('.search-basket-action .add').live('click', function () {
        var total = parseInt($(this).attr('total'));
        if (total) {
            var orderid = $(this).attr('orderid');
            var pid = $(this).attr('prodid');
            Basket.cartCmd('IncOrderLine', pid, orderid);
        };
        return false;
    });

    $('.search-basket-action .remove').live('click', function () {
        var orderid = $(this).attr('orderid');
        var pid = $(this).attr('prodid');
        var total = parseInt($(this).attr('total'));
        if (total) {
            if (total == 1) {
                Basket.cartCmd('DelOrderLine', pid, orderid);
            } else {
                Basket.cartCmd('DecOrderLine', pid, orderid);
            };
        };
        return false;
    });

    $('#search-seeall-link').live('click', function () {
        $('#search-dynamic-form').submit();
    });
});
