PX_PATH = 'images/px.gif';

function css_browser_selector(u) {
    var ua = u.toLowerCase(), 
    is = function(t) {
        return ua.indexOf(t) > -1;
    },
    g = 'gecko',
    w = 'webkit',
    s = 'safari',
    h = document.getElementsByTagName('html')[0],
    b = [
            (!(/opera|webtv/i.test(ua)) && /msie\s(\d)/.test(ua)) ? ('ie ie' + RegExp.$1) : 
            is('firefox/2') ? g + ' ff2' : 
            is('firefox/3.5') ? g + ' ff3 ff3_5' : 
            is('firefox/3') ? g + ' ff3' : 
            is('gecko/') ? g :
            /opera(\s|\/)(\d+)/.test(ua) ? 'opera opera' + RegExp.$2 :
            is('konqueror') ? 'konqueror' : 
            is('chrome') ? w + ' chrome' : 
            is('iron') ? w + ' iron' :
            is('applewebkit/') ? w + ' ' + s + (/version\/(\d+)/.test(ua) ? ' ' + s + RegExp.$1 : '') :
            is('mozilla/') ? g : '', 
            is('j2me') ? 'mobile' : 
            is('iphone') ? 'iphone' :
            is('ipod') ? 'ipod' :
            is('mac') ? 'mac' :
            is('darwin') ? 'mac' :
            is('webtv') ? 'webtv' :
            is('win')? 'win' : 
            is('freebsd') ? 'freebsd' : 
            (is('x11') || is('linux')) ? 'linux' : '',
            'js'
    ]; 
    c = b.join(' '); 
    h.className += ' ' + c; 
    return c;
};

css_browser_selector(navigator.userAgent);

function getBodyScrollTop()
{
    return (self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop));
}

function getBodyScrollLeft()
{
    return (self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft));
}

function getDocumentHeight()
{
    return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
}

function getDocumentWidth()
{
    return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;
}

function getClientCenterX()
{
    return parseInt(getClientWidth()/2)+getBodyScrollLeft();
}

function getClientCenterY()
{
    return parseInt(getClientHeight()/2)+getBodyScrollTop();
}

function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}

function urlparam_encode(str) {
    if (typeof(str) == 'array') str = implode(',', str);
    s = implode('!', str.split(/\//));
    return str.charAt(0) == '/' ? '!' + s : s;
}

function urlparam_decode(str) {
    return str.replace(/!/, '/');
}

function implode( glue, pieces ) {
    return ( ( pieces instanceof Array ) ? pieces.join ( glue ) : pieces );
}

function var_dump(data,addwhitespace,safety,level) {
    var rtrn = '';
    var dt,it,spaces = '';
    if (!level) level = 1;
    for (var i = 0; i < level; i++) spaces += '   ';
    if (typeof(data) != 'object') {
        dt = data;
        if (typeof(data) == 'string') {
            if (addwhitespace == 'html') {
                dt = dt.replace(/&/g,'&amp;');
                dt = dt.replace(/>/g,'&gt;');
                dt = dt.replace(/</g,'&lt;');
            }
            dt = dt.replace(/\"/g,'\"');
            dt = '"' + dt + '"';
        }
        if (typeof(data) == 'function' && addwhitespace) {
            dt = new String(dt).replace(/\n/g,"\n"+spaces);
            if (addwhitespace == 'html') {
                dt = dt.replace(/&/g,'&amp;');
                dt = dt.replace(/>/g,'&gt;');
                dt = dt.replace(/</g,'&lt;');
            }
        }
        if (typeof(data) == 'undefined') dt = 'undefined';
        if (addwhitespace == 'html') {
            if (typeof(dt) != 'string') dt = new String(dt);
            dt = dt.replace(/ /g,"&nbsp;").replace(/\n/g,"<br>");
        }
        return dt;
    }
    for (var x in data) {
        if(safety && (level > safety)) {
            dt = '*RECURSION*';
        } else {
            try {
                dt = var_dump(data[x],addwhitespace,safety,level+1);
            } catch (e) {
                continue;
            }
        }
        it = var_dump(x,addwhitespace,safety,level+1);
        rtrn += it + ':' + dt + ',';
        if (addwhitespace) rtrn += '\n'+spaces;
    }
    if (addwhitespace) {
        rtrn = '{\n' + spaces + rtrn.substr(0,rtrn.length-(2+(level*3))) + '\n' + spaces.substr(0,spaces.length-3) + '}';
    } else {
        rtrn = '{' + rtrn.substr(0,rtrn.length-1) + '}';
    }
    if (addwhitespace == 'html') {
        rtrn = rtrn.replace(/ /g,"&nbsp;").replace(/\n/g,"<br>");
    }
    return rtrn;
}

function trim (str) {
    var str = str.replace(/^\s\s*/, ''),
        ws = /\s/,
        i = str.length;
    while (ws.test(str.charAt(--i)));
    return str.slice(0, i + 1);
}

function trim_adv(str, sym) {
    while (sym == str.charAt(0)) str = str.substr(1);
    while (sym == str.charAt(str.length-1)) str = str.substr(0, str.length-1);
    return str;
}



function getElementPosition(elem)
{
     var w = elem.offsetWidth;
     var h = elem.offsetHeight;
     var l = 0;
     var t = 0;
     while (elem)
     {
          l += elem.offsetLeft;
          t += elem.offsetTop;
          elem = elem.offsetParent;
     }
     return {"left":l, "top":t, "width": w, "height":h};
}

function ucfirst(str) {
    return str.charAt(0).toUpperCase()+str.substr(1);
}

function uri_clean_params(uri) {
    return uri.replace(/^([^?]*)\?.*$/, function ($0, $1) {return $1;});
}

// Encodes bad chars to display html through js
function html_encode(text) {
    if (typeof(text) != "string") text = text.toString();
    text = text.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
    return text;
}

function open_window(src, width, height, title, scroll) {
    var scroll = scroll || "no";
    var top=0, left=0;
    if(width > screen.width-10 || height > screen.height-28) scroll = "yes";
    if(height < screen.height-28) top = Math.floor((screen.height - height)/2-14);
    if(width < screen.width-10) left = Math.floor((screen.width - width)/2-5);
    width = Math.min(width, screen.width-10);
    height = Math.min(height, screen.height-28);
    window.open(src,title,"scrollbars="+scroll+",resizable=yes,width="+width+",height="+height+",left="+left+",top="+top);
}

function input_inline_clean(A){
    var B = A.previousSibling;
    if (B) {
        A.onblur = function() {
            if (!A.value) {
                B.style.top=""
            }
        };
        B.style.top="-9999px"
    }
}

function fixpng(element, params) {
    params = params || {};
    if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) {
        var src;
        if (element.tagName == 'IMG' || element.tagName == 'INPUT') {
            src = element.src;
            element.src = '/media/images/px.gif';
        } else {
            src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
            if (src) {
                src = src[1];
                element.runtimeStyle.backgroundImage = "none";
            }
        }
        if (src) {
            element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
        }
    }
}

// If user has rated item, ie anonymous
var rating_hasrated = true

$(function(){
    var brands_content = $("div.brands");
    var brands_max = brands_content.height();
    var brands_min = brands_max / (100 / 28);
    
    brands_content.css("height", brands_min);
    
    function toggleBrands(obj, max, min){
        height = obj.height();
        return height < max ? max : min;
    };
    
    $("div.b-brands-showall").click(function(){
        var h = toggleBrands(brands_content, brands_max, brands_min);
        brands_content.animate({"height": h}, 600);
    })

    $('dt.tabs-dt').click(function(){
        $(this).siblings().removeClass('selected').end().next().andSelf().addClass('selected')
    })

    // in template:
    // var rating_current
    // var rating_hasrated
    var rating_wrapper = $('div.l-items-rating.ratable')
    var rating_pattern = /^items-rating-[1-5]/m;

    function clearClasses(obj, pattern){
        var classes = obj.attr('class').split(/\s+/);
        for(var i = 0; i < classes.length; i++){
            var className = classes[i];
            if(className.match(pattern)){
                obj.removeClass(className);
            }
        }
    }
    if (!rating_hasrated){
        $('a.b-items-rating')
            .hover(
                function(){
                    clearClasses(rating_wrapper, rating_pattern)
                    var self = $(this)
                    var index = self.index() + 1
                    rating_wrapper.addClass('items-rating-' + index)
                }, 
                function(){
                    clearClasses(rating_wrapper, rating_pattern)
                    rating_wrapper.addClass(rating_current)
                }
            )
            .click(function(){
                var self = $(this)
                var url = self.attr('href')
                var info = $('div.items-rating-info')
                $.ajax({
                    url: url,
                    type: 'GET',
                    success: function(data){
                        info.text('Всего голосов: '+ data.total +'. Вы оценили на: ' + data.my)
                        clearClasses(rating_wrapper, rating_pattern)
                        rating_current = 'items-rating-' + data.rating
                        rating_hasrated = true
                        rating_wrapper.addClass(rating_current)                 
                        rating_wrapper.attr('title', 'Ваш рейтинг: ' + data.my)
                    },
                    error: function(){
                        info.text('Произошла ошабка. Поробуйте повторить позже.')
                    }
                })
                // Do at last
                rating_wrapper.removeClass('ratable')
                rating_wrapper.children('a').remove()
                return false;
            })
    }

    // Comments
    // Captcha does not support ajax refresh

    // var error_wrapper = $('.l-items-commentform-erros')
 //    $('#comment-send').click(function(){
    //  var name = "&comment-name=" + $('#id_comment-name').val()
 //        var email = "&comment-email=" + $('#id_comment-email').val()
 //        var comment = "&comment-comment=" + $('#id_comment-comment').val()
 //        var captcha = "&comment-captcha_1=" + $('#id_comment-captcha_1').val()
 //        $.ajax({
 //            url: "",
 //            type: "POST",
 //            data: name + email + comment + captcha,
 //            success: function(data){
 //             if (data.errors.length == 0){
 //                    var message = '<div class="b-items-comment"><div class="comment-info">\
 //                    <b class="title">'+ data.comment.name +'</b>\
 //                    <a href="'+ '${good.get_absolute_url()}' +'?open_tab=comments#comment_\
 //                    '+ data.comment.id +'" id="comment_'+ data.comment.id +'"\
 //                    class="date">'+ data.comment.date +'</a></div>\
 //                    <div class="comment-content">'+ data.comment.comment +'</div></div>'
 //                    $(message).prependTo('.l-items-comments')
 //                    $('#author_comment').val('')
 //                    var er = '<span class="comment-error success">Ваш отзыв успешно добавлен</span>'
 //                    error_wrapper.html('')
 //                    $(er).appendTo(error_wrapper)
 //                    $('h3#comments_header').text('Отзывы покупателей')
 //                } else {
 //                 var er = ''
 //                    for (i=0; data.errors.length > i ; i++){
 //                     er = er + '<span class="comment-error">'+ data.errors[i] +'</span>'
 //                    }
 //                    error_wrapper.html('')
 //                    $(er).appendTo(error_wrapper)
 //                }

 //            }
 //        });

 //     $.get("{{ url('captcha-new-key') }}", function(data) {
    //      var image_url = "{{ url('captcha-image', 0) }}"
    //      image_url = image_url.replace('/0', '/' + data);
    //      $('#id_captcha_image').attr('src', image_url);
    //      $('#id_captcha_0').val(data);
    //      $('#id_captcha_1').val('');
    //  });
    //  return false;
 //    })
    

    $('.open_in_window').click(function(){
        var url = $(this).attr('href')
        var width = screen.width
        var height = screen.height
        var title = $(this).attr('title') || ''
        var moduleWindow = window.open(url,title,'menubar=0,resizable=0,width='+(width/1.50)+',height='+(height-50));
        moduleWindow.moveTo(width/8, 10);
        return false;
    });

    var region_control = $('.region_pane .control')
    var region_list = $('.region_list')
    var region_selected = $('.region_selected')
    var phones = $('#phones')
    var item_pk = $('input#item_pk')
    var item_delivery = $('.h-goods-delivery')
    var region_blocker = $('.region_blocker')


    function regionToggle(){
        region_list.toggle()
        region_control.toggleClass('top')
        region_blocker.toggle()
    }

    region_selected.click(function(){
        regionToggle()
    })

    region_blocker.click(function(){
        regionToggle()
    })

    $('li.cities-option').click(function(){
        $.ajax({
            url: "/blocks/city_select/",
            type: "POST",
            data: "city=" + $(this).attr("pk"),
            dataType: "html",
            success: function(data){
                region_selected.text($('li.cities-option[pk="' + data + '"]').text())
                $.ajax({
                    url: "/blocks/stat_block/",
                    type: "POST",
                    data: "alias=phones",
                    dataType: "html",
                    success: function(data){
                        phones.html(data)
                    }
                })
                if (item_pk.val()){
                    $.ajax({
                        url: "/blocks/delivery/",
                        type: "POST",
                        data: "pk=" + item_pk.val(),
                        dataType: "html",
                        success: function(data){
                            item_delivery.html(data)
                        }

                    })
                }
            }
        })
        
        region_selected.click()
    })

    $('.h-goods-delivery .change').live("click", function(){
        region_selected.click()
    })


    //Fancy-box init
    try{    
        $("a.fancybox_image").fancybox({
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'titlePosition'     : 'outside',
            'cyclic'            : true,
            'padding'           : 10,
            'autoScale'         : true,
            'centerOnScroll'    : true
        });
    }catch(err){};
    
    try{    
        $("a.flowplayer_fancybox").fancybox({
            'transitionIn'      : 'none',
            'transitionOut'     : 'none',
            'titlePosition'     : 'outside',
            'cyclic'            : true,
            'autoScale'         : true,
            'autoDimensions'    : false,
            'centerOnScroll'    : true,
            'width'             : 800,
            'height'            : 500,
            'scrolling'         : 'no'
        });
    }catch(err){};

    try{
        flowplayer("flowplayer", "/media/js/flowplayer/flowplayer-3.2.7-0.swf",{ clip: {autoPlay: true,autoBuffering: false, scaling: "orig"} });
    }catch(err){};


    var cart_info = $('#cart_info')
    function updateCartInfo(){
        $.ajax({
            url: "/cart/info/",
            success: function(data){
                cart_info.html(data)
            }
        })
    }

    $('.add_cart').click(function(){
        var url = $(this).attr('href')
        var price = $(this).attr('price')
        $(this).fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100)
        $.ajax({
            url: url,
            success: function(){
                updateCartInfo()
                cart_info.fadeIn(100).fadeOut(100).fadeIn(100).fadeOut(100).fadeIn(100);//.fadeOut(100).fadeIn(100);
                cart_info.addClass('active')
            }
        })
        return false;
    })

    try{
        var pickup_address = $('.b-pickup-address')
        var input_pickup = $('#input_pickup')
        var input_delivery = $('#input_delivery')
        var request_delivery = $('#request_delivery')
        var request_pickup = $('#request_pickup')
        var delivery_address = $('#delivery_address')

        var cart_shipping = $('#cart_shipping')
        var cart_from = $('form#cart')



        cart_from.submit(function(){
            var self = $(this)
            $.ajax({
                url:self.attr('action'),
                type: "POST",
                dataType: "html",
                data: self.serialize(),
                success: function(data){
                    self.html(data)
                    updateCartInfo()
                }
            })
            return false;
        })

        $('.cart_item_quantity').live('focusout', function(){
            cart_from.submit()
        })


        function updateShipping(shipping){
            $.ajax({
                url: "/cart/shipping/",
                type: "POST",
                data: "shipping=" + shipping,
                success: function(){
                    cart_from.submit()
                }
            })
        }
        
        $('.pickup_' + $('#cities_selection').val()).addClass('selected')

        $('#cities_selection').change(function(){
            pickup_address.hide()
            pickup_address.removeClass('selected')
            
            // Writes city to the session
            $.ajax({
                url: "/blocks/city_select/",
                type: "POST",
                data: "city=" + $(this).val()
            })
            
            var p = $('.pickup_' + $(this).val())
            if (p.val() != undefined){
                p.addClass('selected')
                request_pickup.show()
                if (input_pickup.is(':checked')){
                    $('.b-pickup-address.selected').show()
                    updateShipping(1)
                } else {
                    updateShipping(0)
                }
            } else {
                request_pickup.hide()
                input_pickup.attr('selected', false)
                input_delivery.click()
                updateShipping(0)
            }

        })
        request_delivery.click(function(){
            pickup_address.hide()
            delivery_address.show()
            updateShipping(0)
        })
        request_pickup.click(function(){
            $('.b-pickup-address.selected').show()
            delivery_address.hide()
            updateShipping(1)
        })
        
        var jurPayParams = $('#jurPayParams')
        $('.b-payment-selects label').each(function(){
            $(this).click(function(){
                if($(this).attr('for') == 'cities_selection_4'){
                    jurPayParams.show()
                } else {
                    jurPayParams.hide()
                }
            })
        })
    }catch(err){};

    











    var isMSIE = /*@cc_on!@*/false;
    if(!isMSIE){
        $('.b-cart-authform .dt').click(function(){        
            $(this).siblings('.dd').hide().end().next().show()
        })
    } else {
        $('.b-cart-authform .dd').show()
    }  

    $(".radio_string span, .cb_string span").css("cursor", "pointer").bind("click", function () {
        this.previousSibling.click();   
    });

    $("#nav_gen .l2 .item").bind("mouseover", function () {
        $(this).addClass("hovered");
        $(this).prev().addClass("hovered_r");
        $(this).next().addClass("hovered_l");
    });
    $("#nav_gen .l2 .item").bind("mouseout", function () {
        $(this).removeClass("hovered");
        $(this).prev().removeClass("hovered_r");
        $(this).next().removeClass("hovered_l");
    });

    $('.i_info').css("display","none");
    
    $("dl.showcase dt").click(function(){
        $(this)
            .siblings().removeClass("selected").end()
            .next("dd").andSelf().addClass("selected");
        var img = $("#promotabimg_" + $(this).attr("position"))
        img.attr("src", img.attr("source"))
    });

    var delivery_block = $('.b-deliver')
    delivery_block.attr('height', delivery_block.height())
    delivery_block.height(105)

    $('.b-deliver-showall').click(function(){
        var h = parseInt(delivery_block.attr('height'))
        var n = 105
        if (delivery_block.height() == n){
            n = h
        }
        delivery_block.animate({'height': n}, 300)
        if ($(this).text() == 'Смотреть все'){
            $(this).text('Скрыть')
        } else {
            $(this).text('Смотреть все')
        }
    });

    $('.g-input').click(function(){
        if (this.value == this.defaultValue) {
            this.value = '';
        }
    });
    $('.rmv-dft-val').blur(function(){
        if (this.value == '') {
            this.value = this.defaultValue;
        }
    });
    $('.g-input').focus(function(){
        $(this).addClass("g-input-focus");
    });

});

function askAndGo(question, url){
    if(confirm(question)){
        document.location = url
    } else {
        return false;
    }
}


