/* 
 * Javascirpt file for bvkfilter module
 * 
 * www.bvkyazilim.com
 */



function showInCurrency(p){
    return formatCurrency(p, currencyFormat, currencySign, currencyBlank);
}

function filterForm(){
    $('input.multiselect[type="checkbox"]').change(function(){
        var f=$(this).attr("fref"), s=new Array(), i=0;
        $('.multiselect_'+f+':checked').each(function(){
            s[i]='<span>'+$(this).attr('ref')+'</span>';
            i++;
        });
        if(s.length>0){
            $("#selectedlist_"+f).html(s.join(', '));
        }else{
            $("#selectedlist_"+f).html(l_all);
        }
    });
    $('input.multiselect[type="checkbox"]').each(function(){
        $(this).change();
    });
    $('input.radioselect[type="radio"]').change(function(){
        var f=$(this).attr("fref");
        $("#selectedlist_"+f).html($('.radio_'+f+':checked').length?$('.radio_'+f+':checked').attr('ref'):l_all);
    });
    $('input.radioselect[type="radio"]').each(function(){
        $(this).change();
    });
    $(".filter").hover(function(){
        $(".filter").css('z-index', '1');
        $(this).css('z-index', '10');
        $(this).children(".selectlist").show();
    }, function(){
        if($(this).children(".selectedlist").text()!=''){
            $(this).children(".selectlist").hide();
        }
    });
    $(".filter").each(function(){
        if($(this).children(".selectedlist").text()==''){
            $(this).children(".selectlist").show();
        }
    });
    $(".slider-range").each(function(){
        var t=this, v=[$(this).attr('min')*1, $(this).attr('max')*1], mn=$(t).attr('rangemin')*0.9, mx=$(t).attr('rangemax')*1.1;

        if(v[0]<mn){
            v[0]=mn;
        }
        if(v[1]<mn){
            v[1]=mn;
        }
        if(v[0]>mx){
            v[0]=mx;
        }
        if(v[1]>mx){
            v[1]=mx;
        }
        if($(t).attr("ref")=='price'){
            $( "#rangevalue"+$(t).attr("ref")).html(showInCurrency(v[0])+" - "+showInCurrency(v[1]));
        }else{
            $( "#rangevalue"+$(t).attr("ref")).html(Math.round(v[0]*100)/100+" - "+Math.round(v[1]*100)/100);
        }
        $ui(this).slider({
			range: true,
			min: mn,
			max: mx,
			values: v,
            animate: true,
            step: (v[1]-v[0])/100,
			slide: function( event, ui ){
                            if($(t).attr("ref")=='price'){
				$( "#rangevalue"+$(t).attr("ref")).html(showInCurrency(ui.values[0])+" - "+showInCurrency(ui.values[1]));
                            }else{
				$( "#rangevalue"+$(t).attr("ref")).html(Math.round(ui.values[0]*100)/100+" - "+Math.round(ui.values[1]*100)/100);
                            }
                            $( "#rangemin_"+$(t).attr("ref")).val(ui.values[0]);
                            if(ui.values[0]*1==$ui(this).slider("option", "min")*1){
                                $( "#rangemin_"+$(t).attr("ref")).val('');
                            }
                            $( "#rangemax_"+$(t).attr("ref")).val(ui.values[1]);
                            if(ui.values[1]*1==$ui(this).slider("option", "max")*1){
                                $( "#rangemax_"+$(t).attr("ref")).val('');
                            }
			}
        });
    });
}

function loadFilter(){
    ctimer=false;
        //alert();
    $("#ajaxfilter").load(baseDir+'modules/bvkfilter/?content_only=1&form=true&'+$("#topfilterform").serialize(), function(){
        filterForm();
        $("#filteroverlay").hide();
    });
}

var ctimer=false;
function updateFilter(){
    if(ctimer){
        clearTimeout(ctimer);
    }
    ctimer=setTimeout("loadFilter()", 1500);
    showFilterOverlay();
}

function showFilterOverlay(){
    var os=$("#tdfiltersection").offset();
    $("#filteroverlay").width($("#tdfiltersection").width()).height($("#tdfiltersection").height()).css("top", Math.floor(os.top)+"px").css("left", (Math.floor(os.left)-345)+"px");
    $("#filteroverlay").show();
}

function showCenterOverlay(){
    var os=$("#center_column").offset();
    $("#filteroverlay").width($("#center_column").width()).height($("#center_column").height()).css("top", Math.floor(os.top)+"px").css("left", (Math.floor(os.left)-335)+"px");
    $("#filteroverlay").show();
}

function setContent(c){
    $("#filteroverlay").hide();
    switch(bvkf_position){
        case 1:
            $("#center_column").children('[id!="topfilterblock"]').remove();
            $("#center_column").append(c);
            break;
        default:
            $("#center_column").html(c);
            break;
    }
    if(typeof(ajaxCart)!='undefined'){
        ajaxCart.overrideButtonsInThePage();
    }
    $("#selectPrductSort").attr("onchange", "").unbind('change').change(function(event){
        //event.stopImmediatePropagation();
        loadSetContent();
        return false;
    });
    if($('input:checkbox.comparator').length){
        $('input:checkbox.comparator').click($('#samplecomparator').data('events')['click'][0]);
    }
}

function updateHash(f){
    if(location.hash!='' && this.consecutive){
        history.back();
    }
    this.consecutive=true;
    location.hash=f.replace(/%5B/g, '[').replace(/%5D/g, ']');
}

function loadSetContent(p){
    showCenterOverlay();
    var v='';
    if($("#selectPrductSort").length){
        var sv=$("#selectPrductSort").val();
        if(sv.indexOf(':')>=0){
            var s=sv.split(':');
            v='&orderby='+s[0]+'&orderway='+s[1];
        }else if(sv.indexOf('?')>=0){
            var s=sv.split('?');
            s=s[1];
            s=s.split('&');
            $(s).each(function(i,sv){
                if(sv.indexOf('orderby') || sv.indexOf('orderway')){
                    v=v+'&'+sv;
                }
            });
        }
    }
//    alert($("#filterparamters").val());
    updateHash($("#topfilterform").serialize()+v+(p*1?'&p='+p:'')+($("#nb_item").length?'&n='+$("#nb_item").val():''));
    $.get(baseDir+'modules/bvkfilter/?content_only=1&'+$("#filterparameters").val()+v+(p*1?'&p='+p:'')+($("#nb_item").length?'&n='+$("#nb_item").val():''), function(c){
        setContent(c);
        $("#filteroverlay").hide();
    });
    return false;
}

function loadContent(p){
    showCenterOverlay();
    var v='';
    if($("#selectPrductSort").length){
        var sv=$("#selectPrductSort").val();
        if(sv.indexOf(':')>=0){
            var s=sv.split(':');
            v='&orderby='+s[0]+'&orderway='+s[1];
        }else if(sv.indexOf('?')>=0){
            var s=sv.split('?');
            s=s[1];
            s=s.split('&');
            $(s).each(function(i,sv){
                if(sv.indexOf('orderby') || sv.indexOf('orderway')){
                    v=v+'&'+sv;
                }
            });
        }
    }
    updateHash($("#topfilterform").serialize()+v+(p*1?'&p='+p:'')+($("#nb_item").length?'&n='+$("#nb_item").val():''));
    $.get(baseDir+'modules/bvkfilter/?content_only=1&'+$("#topfilterform").serialize()+v+(p*1?'&p='+p:'')+($("#nb_item").length?'&n='+$("#nb_item").val():''), function(c){
        setContent(c);
        $("#filteroverlay").hide();
    });
    return false;
}

$(document).ready(function(){
    switch(bvkf_position){
        case 2:
            $("#topfilterblock").insertAfter($("#header"));
            break;
        case 1:
            $("#topfilterblock").prependTo($("#center_column"));
            break;
    }
    $("#topfilterform").submit(loadContent);
    var cadd=true;
    while(cadd){
        cadd=false;
        $.each(bvkfcategories, function(i, c){
            $.each(c, function(i, v){
                if($("#category"+v.infos.id_parent).length==0){
                    cadd=true;
                }
                if($("#category"+i).length==0){
                    $("#category"+v.infos.id_parent).append("\n"+'<li><input type="checkbox" name="id_category[]" class="id_category" value="'+i+'" id="catbox'+i+'" onClick="updateFilter();"'+(i==bvkf_category?' checked':'')+' /> <label style="float:none;" for="catbox'+i+'">'+v.infos.name.toString().replace(/^([0-9]*\.)/, '')+'</label><ul id="category'+i+'" class="categorylist"></ul></li>');
                }
            });
        });
    }
    
    filterForm();
    $('#topfilterblock input.reset').click(function(){
        var i, field_type, frm_elements=document.topfilterform.elements;
        //http://www.javascript-coder.com/javascript-form/javascript-reset-form.phtml
        for (i = 0; i < frm_elements.length; i++){
            field_type = frm_elements[i].type.toLowerCase();
            switch (field_type)
            {
            case "hidden":
                frm_elements[i].value = "";
                break;
            case "text":
            case "password":
            case "textarea":
                frm_elements[i].value = "";
                break;
            case "radio":
            case "checkbox":
                if (frm_elements[i].checked)
                {
                    frm_elements[i].checked = false;
                }
                break;
            case "select-one":
            case "select-multi":
                frm_elements[i].selectedIndex = 0;
                break;
            default:
                break;
            }
        }
        $('input.multiselect[type="checkbox"]').each(function(){
            $(this).change();
        });
        $('input.radioselect[type="radio"]').each(function(){
            $(this).change();
        });
        $('.slider-range').each(function(i, v){
            var r=$(this).attr('ref');
            if($('#rangemin_'+r).val()==''){
                $ui(this).slider('values', 0, $ui(this).slider('option', 'min'));
            }
            if($('#rangemax_'+r).val()==''){
                $ui(this).slider('values', 1, $(this).attr('rangemax'));
            }
            if($(this).attr("ref")=='price'){
				$( "#rangevalue"+$(this).attr("ref")).html(showInCurrency($ui(this).slider('values', 0)*1)+" - "+showInCurrency($ui(this).slider('values', 1)*1));
            }else{
				$( "#rangevalue"+$(this).attr("ref")).html(Math.round($ui(this).slider('values', 0)*100)/100+" - "+Math.round($ui(this).slider('values', 1)*100)/100);
            }
        });
    });
    if(location.hash.indexOf('filter')>=0){
        var p=/(?=id_category\[\]=)([^&#]*)/g;
        var m=location.hash.match(p);
        if(m){
            $.each(m, function(i,v){
               $('#catbox'+v.split('=')[1]).attr('checked', true);
            });
        }
        
        $('#topfilterblock').slideDown();
        $("#ajaxfilter").load(baseDir+'modules/bvkfilter/?content_only=1&form=true&'+location.hash.replace('#', ''), function(){
            filterForm();
            loadContent();
        });
    }
});
