/**
* @author languid
*/

var ie6 = $.browser.msie && $.browser.version == '6.0';
var $win = $(window);
var $body;

function accMul(arg1, arg2) {
    var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
    try { m += s1.split(".")[1].length } catch (e) { }
    try { m += s2.split(".")[1].length } catch (e) { }
    return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m)
}

function accAdd(arg1, arg2) {
    var r1, r2, m;
    try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
    try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
    m = Math.pow(10, Math.max(r1, r2))
    return (arg1 * m + arg2 * m) / m
}

function accSubtr(arg1, arg2) {
    var r1, r2, m, n;
    try { r1 = arg1.toString().split(".")[1].length } catch (e) { r1 = 0 }
    try { r2 = arg2.toString().split(".")[1].length } catch (e) { r2 = 0 }
    m = Math.pow(10, Math.max(r1, r2));
    n = (r1 >= r2) ? r1 : r2;
    return ((arg1 * m - arg2 * m) / m).toFixed(n);
}

function productList(history) {
    if (!history && $('.pro-list .special').size() == 0) {
        history = window
    }
    var pro1 = $('#pro1'), prolist = $('.pro-list');
    prolist.append('<span class="to-left slideBtn"></span><span class="to-right slideBtn"></span>')
    var header = $('.header'), formLeft = Math.ceil(header.offset().left),
		pro_list = $('.pro-list');

    var _moveEle = function (ele, sp) {
        var len = ele.size();
        ele.each(function (index) {
            var $this = $(this);
            if ((index + 1) % 2) {
                sp.before($this.clone())
            } else {
                sp.after($this.clone())
            }
            $this.remove()
        })
    }

    var _scroll = function (o) {
        var ele = o.ele, left = o.left, right = o.right, list = o.list,
			fullWidth = !history ? ((list.size() - 1) * 195 + 555) : ((list.size() - 1) * 195), win = !history ? $(window) : $(history);
        var _btnHover = function (n) {
            if (n) {
                this[this.attr('disable') == 'true' ? 'addClass' : 'removeClass']('hover')
            } else {
                this.removeClass('hover')
            }
        }
        var _move = function (dis) {
            var w_width = win.width(), px = 0, mla = parseInt(ele.css('margin-left')),
				eas = o.easing || 'swing', dur = o.duration || 600,
				ml = 0, c_width = 0;
            if (mla < 0) {
                ml = mla * -1
            } else {
                ml = mla;
            }
            if ((ml + fullWidth) > w_width) {
                if (dis == 'left') {
                    if (mla < 0) {
                        if (ml < w_width) {
                            px = 0;
                            _disBtn(left, false);
                            _disBtn(right, true)
                        } else {
                            _disBtn(left, true);
                            _disBtn(right, true)
                            px = -(ml - w_width);
                        }
                    } else {
                        return;
                    }
                } else {
                    if ((c_width = (fullWidth - ml - w_width)) < w_width) {
                        px = -(ml + c_width);
                        _disBtn(right, false);
                        _disBtn(left, true);
                    } else {
                        px = -(ml + w_width);
                        _disBtn(left, true);
                        _disBtn(right, true)
                    }
                }
                ele.stop().animate({ 'margin-left': px }, { easing: eas, duration: dur })
            }
        }

        var _disBtn = function (a, b) {
            if (b) {
                a.removeClass('disable').addClass('enable').attr('disable', 'true')
            } else {
                a.removeClass('enable').addClass('disable').attr('disable', 'false')
            }
        }

        var _init = function () {
            var mla = parseInt(ele.css('margin-left')), ml, w_width = win.width();
            if (mla < 0) {
                ml = mla * -1
            }
            else {
                ml = mla;
            }
            if ((ml + fullWidth) <= win.width()) {
                _disBtn(left, false);
                _disBtn(right, false);
            }
            else {
                //left
                if (mla < 0) {
                    _disBtn(left, true)
                }
                else {
                    _disBtn(left, false)
                }
                //right
                if ((fullWidth - ml - w_width) <= 0) {
                    _disBtn(right, false)
                }
                else {
                    _disBtn(right, true)
                }
            }
        }

        _init();
        win.bind('resize', _init)

        right.click(function () {
            _move('right')
            return false;
        }).hover(function () {
            _btnHover.call($(this), true)
        }, function () {
            _btnHover.call($(this), false)
        });

        left.click(function () {
            _move('left')
            return false;
        }).hover(function () {
            _btnHover.call($(this), true)
        }, function () {
            _btnHover.call($(this), false)
        });

    }

    var count = 0;
    pro_list.each(function (index) {
        var $this = $(this), mover = $this.find('.sbd').eq(0),
			items = $this.find('.item'), len = items.size(),
			special = $this.find('div.special').eq(0), c = 0;
        if (!history) {

            if ($this.hasClass('style-1')) {
                new _moveEle(items.filter(':gt(1)'), special)
                c = 0;
            }
            else
                if ($this.hasClass('style-4')) {
                    var a1 = items.filter(':lt(3)');
                    special.before(a1.clone())
                    new _moveEle(items.filter(':gt(2)'), special)
                    a1.remove();
                    c = 3;
                }
                else
                    if ($this.hasClass('style-3')) {
                        var a1 = items.filter(':lt(1)');
                        special.before(a1.clone())
                        new _moveEle(items.filter(':gt(1)'), special)
                        a1.remove();
                        c = 1;
                    }
                    else
                        if ($this.hasClass('style-2')) {
                            var a1 = items.filter(':lt(3)');
                            special.before(a1.clone())
                            new _moveEle(items.filter(':gt(2)'), special)
                            a1.remove();
                            c = 2;
                        }
            var prevItem = special.prevAll();
            mover.css('margin-left', formLeft + 50 + (205 * c) - (prevItem.size() * 195));
        }

        $this.find('.item').show()
        new _scroll({
            ele: mover,
            left: $this.find('.to-left'),
            right: $this.find('.to-right'),
            list: $this.find('.products'),
            easing: 'easeOutExpo',
            duration: 1000
        })
    })
}

function cart() {
    var order_list = $('.order-list'), $number = $('#number'), price = parseFloat($number.text()), all = order_list.find('.Calculating'), totlePrice = $('#totle-price');

    var setCPrice = function () {
        var n = 0;
        all.each(function () {
            s = parseFloat($(this).text());
            price = n = accAdd(n, isNaN(s) ? 0 : s)
        })
        $number.text(n);
        totlePrice.val(n);
    }

    //cal price
    order_list.each(function () {
        var $that = $(this), lay = null, remove = $that.find('a.remove').eq(0),
			tols = $that.find('.Calculating').eq(0),
			tolh = $that.find('.CalculatingNumber').eq(0),
			Unit = $that.find('.Unitprice').eq(0),
			UnitNum = parseFloat(Unit.text()), current = 0,
			number = $that.find('.number').eq(0), tprice = parseFloat(tols.text()),
			pid = number.attr('pid');

        var init = function (v, op) {
            if (op) {
                $.ajax({
                    url: '/CartIO.aspx',
                    cache: false,
                    method: 'post',
                    data: { pid: pid, op: op }
                });
            }
            number.text(v);
            tolh.val(v);
            var res, t, set = function (res) {
                tols.text(res);
                tolh.val(res);
                tprice = res;
            }
            if (isNaN(v) || !v || (/\./).test(v.toString())) {
                tols.text('0');
                tolh.val(0);
            } else {
                set(accMul(v, UnitNum))
            }
            setCPrice();
        }

        cut = number.prev();
        add = number.next();

        cut.click(function () {
            if (current > 0) {
                init(--current, 'dec');
            }
            return false;
        });
        add.click(function () {
            init(++current, 'inc');
            return false;
        });
        current = parseInt(number.text())
        init(current)

        remove.click(function () {
            if (confirm('确实要移除吗？')) {
                var n = accSubtr(price, tprice);
                $number.text(n);
                totlePrice.val(n);
                $that.remove();
            }
            return false;
        })
    });
}

(function ($) {
    $body = $('body');
    $.fn.customSelect = function (o) {
        var def = {
            onSelect: function () { }
        };
        if (o) { $.extend(def, o); }
        return this.each(function () {
            var $this = $(this), options = $this.find('option'), store = [], html = '', droplist = null, text = null, li = null;
            for (var i = 0; i < options.size(); i++) {
                var op = options.eq(i);
                store.push([op.val(), op.text()]);
            }
            var div = $('<div>', {
                id: 'customSelect-' + $this.attr('id'),
                className: 'droplist fl'
            });

            html += '<span class="text">' + $this.attr('text') + '</span>\n';
            html += '<div class="customSelect-droplist">\n<ul>\n'
            for (var i = 0; i < store.length; i++) {
                html += '<li><a href="#" value="' + store[i][0] + '">' + store[i][1] + '</a></li>\n';
            }
            html += '</ul>\n</div>';
            div.html(html);

            droplist = div.find('.customSelect-droplist');
            text = div.find('span.text');
            li = droplist.find('li');
            a = li.find('a');
            a.click(function () {
                a.removeClass('hover');
                $(this).addClass('hover');
                text.text($(this).text());
                return false;
            })

            div.hover(function () {
                text.addClass('hover');
                droplist.slideDown('fast');
            }, function () {
                text.removeClass('hover');
                droplist.slideUp('fast');
            })
            $this.after(div);
            $this.hide();
        });
    }
})(jQuery)

$(function () {


    //billboard slide
    var billSlide = function (o) {
        var wrap = $(o.slide), item = wrap.find('ul'), prev = $(o.prev), next = $(o.next), eas = o.easing, content = $(o.content),
			len = item.find('li').size(), dur = o.duration || 600,
			wid = wrap.width(), current = 0;
        var slide = function (c) {
            var krent = c == undefined ? current : c;
            item.stop().animate({
                'left': (-1 * krent) * wid
            }, {
                easing: eas,
                duration: dur
            });
            btnStyle(krent);

        }
        var btnStyle = function (k) {
            if (k == 0) {
                next.removeClass('disable').addClass('enable').attr('disable', 'false');
                prev.removeClass('enable').addClass('disable').attr('disable', 'true');
            } else if (k == len - 1) {
                prev.removeClass('disable').addClass('enable').attr('disable', 'false');
                next.removeClass('enable').addClass('disable').attr('disable', 'true');
            } else {
                prev.attr('disable', 'false');
                next.attr('disable', 'false');
            }
        }

        var btnHover = function (n) {
            if (n) {
                this[this.attr('disable') == 'false' ? 'addClass' : 'removeClass']('hover')
            } else {
                this.removeClass('hover')
            }
        }

        var opacityContent = function (i) {
            i = -1 * i;
            content.animate({
                marginLeft: i * 341
            }, {
                duration: dur,
                easing: 'easeOutExpo'
            })
        }

        btnStyle(0);
        next.click(function () {
            if (current != len - 1) {
                slide(++current);
            }
            opacityContent(current)
            return false;
        }).hover(function () {
            btnHover.call($(this), true)
        }, function () {
            btnHover.call($(this), false)
        });

        prev.click(function () {
            if (current != 0) {
                slide(--current);
            }
            opacityContent(current)
            return false;
        }).hover(function () {
            btnHover.call($(this), true)
        }, function () {
            btnHover.call($(this), false)
        })
    }

    new billSlide({
        slide: '#slideImg',
        prev: '#slideLeft',
        next: '#slideRight',
        easing: 'easeOutBack',
        content: 'div.dialog div.content',
        duration: 800,
        auto: true
    });

    $('#select-types,#select-collections,#select-items').each(function () {
        var $this = $(this), text = $this.find('span.text'), droplist = $this.find('.customSelect-droplist'), a = $this.find('li a');
        $this.hover(function () {
            text.addClass('hover');
            droplist.show();
        }, function () {
            text.removeClass('hover');
            droplist.hide();
        });
        a.click(function () {
            a.removeClass('hover');
            $(this).addClass('hover');
            text.text($(this).text());
            //return false;
        })
    });

    hasLayer = false;
    var layerS = function (o) {
        var handle = $(o.handle),
			layer = $(o.layer),
			onOpen = o.onOpen || function () { },
			onClose = o.onClose || function () { },
			meed = o.meed;
        var self = this;
        this.onOpen = onOpen;
        this.onClose = onClose;
        var t = 0;
        var closeBtn = layer.find('.closeLayer:first');
        handle.click(function () {
            if (meed != undefined) {
                if (meed) {
                    return true;
                }
            }
            show();
            return false;
        });
        var show = function () {
            self.onOpen(handle);
            var sTop = $win.scrollTop();
            var bTop = $('body').height();
            if (!hasLayer) {
                if ((bTop - sTop - $win.height()) == 0) {
                    t = sTop - 40;
                } else {
                    t = sTop + 100;
                }
                layer.css('top', t + 'px')
                layer.fadeIn('fast');
                hasLayer = true;
            }
        }
        self.show = function () {
            return show();
        }
        self.close = function () {
            return close();
        }
        var close = function () {
            self.onClose(handle);
            hasLayer = false;
            layer.fadeOut('fast');
        }
        closeBtn.click(function () {
            close();
            return false;
        });
    }

    window.layerS = layerS;

    //feedback
    window.feedbackLayer = new layerS({
        handle: '#feedback',
        layer: '#feedBackLayer'
    });

    //forget
    window.forgetLayer = new layerS({
        handle: '#forget',
        layer: '#forgetLayer'
    });

    //track packer
    var trackId = $('#trackId'), trackCompany = $('#trackCompany'), trackLink = $('#trackLink');
    new layerS({
        handle: '.track',
        layer: '#trackLayer',
        onOpen: function (self) {
            trackId.text(self.attr('Shapping:NO'));
            trackCompany.text(self.attr('Shipping:Company'));
            trackLink.attr('href', self.attr('Shapping:Url'))
        }
    });

    //qa
    if ($('body.QA')[0]) {
        $('.cate:lt(1)').find('.go-to-top').hide()
    }

    var searchProduct = $('#searchProduct');
    var searchProductClicked = false;
    searchProduct.click(function () {
        if (!searchProductClicked) {
            searchProductClicked = true;
            this.value = '';
        }
    }).blur(function () {
        if (this.value == '') {
            searchProductClicked = false;
            this.value = 'Search items'
        }
    });
})

