var last_load_url = '';
var last_load_time = 0;
var last_load_containter = '';

function searchbytype(name)
{
    if (name.length >=1 && name.length < 2) return;
    
    paramPage = 1;
        
    loadResults();
    
    return false;
}

function filterremcompany(company) {   
    
    var escapedCompany = company.replace(/[^a-z0-9_]/gi, '_');
    
    $("#scompany_"+escapedCompany).parent().remove();
    $("#compname_"+escapedCompany).removeClass('active');
    
    if ($("#sh_scompanies").children().length == 0) {
        $("#sh_scompanies").hide();
    }
    
    paramPage = 1;
    
    loadCatForCloud();
    loadResults();
    
    return false;
}

function filteraddcompany(company)
{
    companies = getSelectedCompanies();
            
    if (jQuery.inArray(company, companies) == -1) {
        companies.push(company);
        url = buildFilterUrl();
        escapedCompany = company.replace(/[^a-z0-9_]/gi, '_');
        
        $("#compname_"+escapedCompany).addClass('active'); 
         
        $("#sh_scompanies").append("<a onclick=\"filterremcompany('"+company+"'); return false;\" href='"+url+"'><span class='icn' title='"+company+"' id='scompany_"+escapedCompany+"'></span>"+company+"</a>");
        $("#sh_scompanies").show();
    } else {
        filterremcompany(company);
        return;
    } 
    
    paramPage = 1;
    
    loadCatForCloud();
    loadResults();
    
    return false;
}

function filterremcat(category) {      
    
    
    if (typeof(pcompare_category) != "undefined") {
        if ($("#compareholder .queuethumb").size() > 0) {
            if (!confirm('You have gadgets added to the comparison queue. If you change the category, you will remove them.')) return; 
        }
    }
    
    escapedCat = category.replace(/[^a-z0-9_]/gi, '_'); 
                
    $("#scat_"+escapedCat).parent().remove();
    $("#catname_"+escapedCat).removeClass('selected');
    
    if ($("#sh_scats").children().length == 0) {
        $("#sh_scats").hide();
    }
    
    cats = getSelectedCats();
    
    if (cats.length == 1) {
        getTemplates(cats[0], '', false);
    } else {
        $('#template_form').html('<div><h2>Filter by criteria</h2><div class="styles styleRed tmb15"><span class="fs14">Choose only one category to select specifications.</span></div></div>');
    }
    
    paramPage = 1;
                  
    loadCompanies(1);
    loadResults(); 
                    
    return false;
}

function filteraddcat(category){                
    
    if (typeof(pcompare_category) != "undefined") {
        if ($("#compareholder .queuethumb").size() > 0) {
            if (!confirm('You have gadgets added to the comparison queue. If you change the category, you will remove them.')) return; 
        }        
    }
    
    
    cats = getSelectedCats();
    
    if (cats.length == 0) {
        getTemplates(category, '', false);
    } else {
        //$('#template_form').empty();
        $('#template_form').html('<div><h2>Filter by criteria</h2><div class="styles styleRed tmb15"><span class="fs14">Choose only one category to select specifications.</span></div></div>');
    }
        
    if (jQuery.inArray(category, cats) == -1) {
        cats.push(category);
        url = buildFilterUrl();
        escapedCat = category.replace(/[^a-z0-9_]/gi, '_');
        
        $("#catname_"+escapedCat).addClass('selected');
        
        $("#sh_scats").append("<a onclick=\"filterremcat('"+category+"'); return false;\" href='"+url+"'><span class='icn' title='"+category+"' id='scat_"+escapedCat+"'></span>"+category+"</a>");
        $("#sh_scats").show();
    } else {
        filterremcat(category);
        return;
    }
    
    paramPage = 1;
    
    //tuk
    loadCompanies(1);
    loadResults(); 
        
    return false;
}

function buildFilterUrl(){
    
    
    cats = getSelectedCats();
    comps = getSelectedCompanies();
    
    if (cats.length > 1 || comps.length > 1) {
        url = "/"+filter_browse_url2;    
    } else {
        url = "/"+filter_browse_url;
    }
    
    if (cats.length > 0) url = url + "/category/"+encodeURIComponent(cats.join(','));//.replace(/ /gi, '+'));
    if (comps.length > 0) url = url+"/company/"+encodeURIComponent(comps.join(','));//.replace(/ /gi, '+'));
    
    if (paramPage && paramPage > 1) url = url + "/page/" + paramPage;
    if (paramSort && paramSort != 'new') url = url + "/sort/" + paramSort;
        
    if (paramDeleted == 1) ret = ret + '/deleted/1';
    
    word = $("#word").val();
    if (word.length > 0 && word != 'Enter at least 2 characters to filter') url = url + "/word/" + encodeURI(word);
    
    url = url + "/";
    return url;
}

function buildFilterPostData(gener_all){
    
    var ret = '';
    
    if (gener_all) {
        cats = getSelectedCats();
        if (cats.length > 0) ret = ret + '&category=' + encodeURIComponent(cats.join(',').replace(/ /gi, '+'));
        comps = getSelectedCompanies();
        if (comps.length > 0) ret = ret + '&company=' + encodeURIComponent(comps.join(',').replace(/ /gi, '+'));
        
        if (paramPage && paramPage > 1) ret = ret + '&page=' + paramPage;
        if (paramSort && paramSort != 'top') ret = ret + '&sort=' + paramSort;
        
        if (paramCPage && paramCPage > 1) ret = ret + '&cpage=' + paramCPage;
        if (paramCSort && paramCSort != 'top') ret = ret + '&csort=' + paramCSort;
        
        if (paramDeleted == 1) ret = ret + '&deleted=1';
        
        word = $("#word").val();
        if (word.length > 0 && word != 'Enter at least 2 characters to filter') ret = ret + "&word=" + encodeURI(word);
    }
    
    if (ret != '') ret = ret + '&';
    ret = ret + $("#filterform :input[value][value!='']").serialize();
//    $("#myForm :input[value][value!='.']").serialize()
    return ret;
}

function changePage(newpage){
    
    if (newpage) {
        paramPage = newpage;   
    }
    
    loadResults();
    $('.main').scrollTo(1);
}

function changeSort(newsort){
    if (newsort) {
        paramSort = newsort;   
    }
    paramPage = 1;
    loadResults();
}

function changeView(newview){
    showMessage('Should change view to '+newview);
    paramPage = 1;
    loadResults();
}

function loadResults(url, show_results_box){
    
    if (!url) {
        url = buildFilterUrl();
        var postdata = buildFilterPostData(false);
        //var hash = postdata.replace(/[=&]/gi,'/');
        
        //console.log('get generated : '+url+ ' : '+postdata);
        var hash = url; 
        if (postdata != '') hash = hash +'?'+postdata;
    } else {
        var postdata = {};
        var hash = url;
    }
    
    tt = new Date().getTime();
    
    if ( ((tt - last_load_time) < 1000 ) && (hash == last_load_url) ) {
        //console.log('skip ' + url + ' ; old = '+ last_load_url);
        return;
    }
    
    last_load_time = tt;
    last_load_url  = hash;
    
    $.historyLoad(hash);
    //location.hash = hash;
    
    $("#browse_results .res").html('<img src="/images/loading-dark.gif">&nbsp;<br />&nbsp;');
    $("#products").html('<img src="/images/loading.gif">');
    
    $.get(url,
        postdata
        ,
        function(data){
            if (data) {
                $("#products").html(data);
            }
            else
            {
                $("#products").html(' ');
            }
        },
        'html'
    );
}

function loadCompanies(cpage,csort){
    
    //$("#companies_box_title").html('Companies <img src="/images/loading.gif"> ');
    $("#companies_box .paginator").html('<img src="/images/loading.gif">');
    
    //save
    paramCPage = cpage;
    
    if (csort) {
        paramCSort = csort;  
    }
        
    //url = buildFilterUrl();
    var postdata = buildFilterPostData(true);
    //alert(cats+' post '+postdata);    
    //$("#companies_box").html('<img src="/images/loading.gif">');
    
    $('#companies_box .block-content').fadeOut();
    $.post('/'+filter_browse_url+'/action/getcompanies',
            postdata
        ,
        function(data){
            $('#companies_box .block-content').html(data);
            $('#companies_box .block-content').fadeIn();
        },
        'html'
    );          
}

function loadCatForCloud(){
    
    $("#categories_box_title").html('Categories <img src="/images/loading.gif"> ');
       
    //url = buildFilterUrl();
    var postdata = buildFilterPostData(true);
    //alert(cats+' post '+postdata);  
      
    //$("#categories_box").html('<img src="/images/loading.gif">');
   
    $.post('/'+filter_browse_url+'/action/getcatforcloud',
            postdata
        ,
        function(data){
            $('#categories_box').html(data);
        },
        'html'
    );  
    
}

function getTemplates(templateId, productId, isExpanded)
{
    $('#template_form').html('<p><img src="/images/loading.gif"></p><br />');
    
    if (isExpanded) {
        expanded = 1;
    } else {
        expanded = 0;
    }
    $.post(browse_templates_url,
        {
            'templateId': templateId,
            'productId':  productId,
            'expanded':  expanded
        },
        function(data){
            $('#template_form').html(data);
        },
        'html'
    );
}

function getSelectedCats(){
    arr = jQuery.map($("#sh_scats span"), function(n, i){
        return n.title;
    });
    return arr;
}

function getSelectedCompanies(){
    arr = jQuery.map($("#sh_scompanies span"), function(n, i){
        return n.title;
    });
    return arr;
}

function clearOne(id)
{
    //clear 1
    $.get("/"+filter_browse_url+"/action/addcompareclear", {pid:id}, function(data){ });
    $.get("/"+filter_browse_url+"/action/addcompareget", function(data){ 
        $("#prodcompareitems").html(data); 
        if(!data) $("#compareholder").hide();
    });
    
    $('.pampare[id='+id+']').removeClass('active');
    //end clear 1
}


function adjust_compare_placement() {
    if ($(window).width() <= 1200) {
        $('#compareholder').css('left', '28%');
    } else {
        $('#compareholder').css('left', '38%');
    }
}

