    
        var price_timer;
        
        var price_timecount = 200;
        var slider_change_timer_0;
        var slider_change_timerCount_0  = 1000;
        var slider_change_timer_1;
        var slider_change_timerCount_1  = 1000;
        var filter_field_array = new Array();
        function setSliderValue(sliderId, handleID, value,  other_ruler_value, legal_min_value, legal_max_value, spec_id )
        {       
                
            if (value=='' || isNaN(value))
            {
             //alert('not a number');
             return false;
             
            }
            if(handleID == 0) //min handle has been changed
             {
                 if((parseInt(value) > parseInt(other_ruler_value)) || (parseInt(value) < parseInt(legal_min_value)))
                 {
                    
                    //alert('value: ' + value + ' other ' + other_ruler_value + ' legal min ' + legal_min_value + ' legal max ' + legal_max_value);
                    return false;;
                 }


             }
             else //Max handle has been changed
             {
                 if((parseInt(value) < parseInt(other_ruler_value)) || (parseInt(value) > parseInt(legal_max_value)))
                 {
                    //alert('handle 1');
                    return false;
                 }
             }
             if(handleID == 0)
             {
                value_from = value;
                value_to = other_ruler_value;
                clearTimeout(slider_change_timer_0);
                slider_change_timer_0 = setTimeout(function(){setSliderValueTimer(sliderId, handleID, value, value_from, value_to, spec_id ) }, slider_change_timerCount_0);
             }
             else
             {
                value_from = other_ruler_value;
                value_to = value;
                clearTimeout(slider_change_timer_1);
                slider_change_timer_1 = setTimeout(function(){setSliderValueTimer(sliderId, handleID, value, value_from, value_to, spec_id ) }, slider_change_timerCount_1);
             }



            

        }
        function setSliderValueTimer(sliderId, handleID, value, value_from, value_to, spec_id)
        {
            
             sliderId.setValue(value,handleID);
             updateRuler_timer(value_from, value_to, spec_id)
        }

        function display_ruler(min, max, spec_id, filter_field, min_selected,max_selected){

                            var defaultValues = [min_selected, max_selected];
                            var handleLeftWidth = 11;
                            var handleRightWidth = 11;
                            var dualSliderReadout = null;
                            filter_field_array[spec_id] = filter_field;

                            var dualSlider = new Control.Slider(['leftHandle_'+spec_id, 'rightHandle_'+spec_id],
                                                     'dualSliderRailBody_'+spec_id,
                                                     {sliderValue: defaultValues,
                                                      range:$R(0, max),
                                                      restricted:true,

                                                      spans:['dualSliderSelectedSpan_'+spec_id]
                                                      });

                            var updateReadout = function(v)
                            {           
                                                         
                                $('spec_range_from_'+ spec_id).value = Math.floor(parseInt(v[0]));
                                
                                
                                $('spec_range_to_' + spec_id).value = parseInt(v[1]);


                                updateRuler(parseInt(v[0]),parseInt(v[1]), spec_id);
                            }

                            var detectAndUpdate = function(v, evt)
                            {
                                collisionDetect(v, evt);
                                updateReadout(v);
                            }




                            var collisionDetect = function(v, evt)
                            {



                                lowerL = parseInt(v[0]);
                                lowerR = parseInt(v[0]) + handleLeftWidth;

                                upperL = parseInt(v[1]) - handleLeftWidth;
                                upperR = parseInt(v[1]);

                                if ((evt.activeHandleIdx == 0) && (lowerL >= upperL))
                                {
                                    // Remove the change event to prevent infinite recursion
                                    dualSlider.options.onChange = null;

                                    // Set the new slider value
                                    dualSlider.setValue(upperL, 0);
                                }

                                // Second handle
                                if ((evt.activeHandleIdx == 1) && (upperR <= lowerR))
                                {
                                    // Remove the change event to prevent infinite recursion
                                    dualSlider.options.onChange = null;

                                    // Set the new slider value
                                    dualSlider.setValue(lowerR, 1);
                                }
                            }

                            dualSlider.options.onSlide = function(v, evt)
                            {
                                // Reinstantiate the change event
                                dualSlider.options.onChange = detectAndUpdate(v, evt);

                                detectAndUpdate(v, evt);
                            }

                            dualSlider.options.onChange = function(v, evt)
                            {
                                dualSlider.options.onChange = detectAndUpdate(v, evt);
                                detectAndUpdate(v, evt);
                            }




                     return dualSlider;
                    }



        function updateRuler(ruler_from, ruler_to, spec_id)
        {
            clearTimeout(price_timer);
            price_timer = setTimeout(function(){updateRuler_timer(ruler_from, ruler_to, spec_id)}, price_timecount);
        }
        function updateRuler_timer(ruler_from, ruler_to, spec_id)
        {

            var loader = $('loader');
            if(loader)
            {

                loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {ruler_from: ruler_from,
                             ruler_to: ruler_to,
                             filter_field: filter_field_array[spec_id],
                             spec_id: spec_id
                             },
                method: 'get',
                asynchronous:false,
                onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                                          }
                            )
        }

        function updateManufactures(id, checked)
        {
            var elLabel = $('man_ajax_' + id + '_text');
            {
                if (checked)
                {
                    elLabel.className = 'ajax_search_enabled checked';
                }   
                else
                {
                    elLabel.className = 'ajax_search_enabled';    
                }
            }
            var loader = $('loader');
            if(loader)
            {

                    loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {manufacturer_id: id,
                             checked: checked
                             },
                method: 'get',
                asynchronous:false,
                 onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                                          }
                            )
        } 
        function varianceMouseOver(id,type)
        {
            
            
            if(typeof(variance_groups) == "undefined")
                return;
            var overPos;
            
            var elLabel = $('variance_' + type + '_' + id + '_text');
            
            if(elLabel && elLabel.className.indexOf('enabled') && (elLabel.className.indexOf('checked') == -1))
            {
                elLabel.className = 'ajax_search_enabled over';
                
            }
            if(variance_groups[type][id])
            {
            
                 for(var i = 0; i < variance_groups[type][id].length; i++ ) 
                    {
                        var elLabel = $('variance_' + type + '_' + variance_groups[type][id][i] + '_text');
                        if(elLabel && elLabel.className.indexOf('enabled') && (elLabel.className.indexOf('checked') == -1))
                        {
                            elLabel.className = 'ajax_search_enabled over';
                            
                        }
                        
                        
                    }
                
            } 
        }
        function varianceMouseOut(id,type)
        {
            
           
            if(typeof(variance_groups) == "undefined")
            {
                return;
            }
            var overPos;
            var elLabel = $('variance_' + type + '_' + id + '_text');
            if(elLabel && elLabel.className.indexOf('enabled') && (elLabel.className.indexOf('checked') == -1))
            {
                elLabel.className = 'ajax_search_enabled';
            }
            
            if(variance_groups[type][id])
            {
            
                 for(var i = 0; i < variance_groups[type][id].length; i++ ) 
                    {
                        var elLabel = $('variance_' + type + '_' + variance_groups[type][id][i] + '_text');
                        if(elLabel && elLabel.className.indexOf('enabled') && (elLabel.className.indexOf('checked') == -1))
                        {
                            elLabel.className = 'ajax_search_enabled';
                        }
                        
                        
                    }
                
            } 
        }
        function updateVariance(id, checked, type)
        {
            
            
            var elLabel = $('variance_' + type + '_' + id + '_text');
            {
                if (checked)
                {
                    elLabel.className = 'ajax_search_enabled checked';
                }   
                else
                {
                    elLabel.className = 'ajax_search_enabled';    
                }
            }
  
            var loader = $('loader');
            if(loader)
            {

                    loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {variance_id: id,
                             variance_type: type,
                             checked: checked
                             },
                method: 'get',
                asynchronous:false,
                onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                              }
                            )
        } 
        
        function resetFilter(identifier)
        {
            var loader = $('loader');
            if(loader)
            {

                    loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {filter_to_reset: identifier
                             },
                method: 'get',
                asynchronous:false,
                 onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                                          }
                            )
            if(identifier == 'all')
            {
                
                var elements = document.getElementsByClassName('ajax_search_checkbox')
                {
                    for(var i = 0; i <elements.length; i++) 
                    {
                        elements[i].checked = false;
                        
                    }
                } 
                var element = $('only_on_stock_ajax');
                if(element)
                {
                    element.checked = false;   
                }
                var elements = document.getElementsByClassName('ajax_search_enabled checked')
                {
                    for(var i = 0; i <elements.length; i++) 
                    {
                        elements[i].className = 'ajax_search_enabled';
                    }
                }
            }
        }
        
        function updateCategories(id, checked)
        {
            var loader = $('loader');
            if(loader)
            {

                    loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {categories_id: id,
                             checked: checked
                             },
                method: 'get',
                asynchronous:false,
                 onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                                          }
                            )
        }
        function updateSpecific(name, checked)
        {
            var loader = $('loader');
            if(loader)
            {

                loader.style.display= 'block';
            }
            var el = $(name + '_text');
            if(el)
            {
                if (checked)
                {
                    el.className = 'ajax_search_enabled checked';
                }   
                else
                {
                    el.className = 'ajax_search_enabled';    
                }
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {to_update: name,
                             checked: checked
                             },
                method: 'get',
                asynchronous:false,
                 onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }
                                                                          }
                            )
        }
        function updateSpecs(name,specification, checked, isbool)
        {

            
            var clickedElement = $('spec_' + specification + name + '_text');
            if(clickedElement)
            {
                if(clickedElement.className == 'ajax_search_disabled')
                    return false;
                    
                if (clickedElement.className == 'ajax_search_enabled')
                {
                    clickedElement.className = 'ajax_search_enabled checked';
                }   
                else
                {
                    clickedElement.className = 'ajax_search_enabled';    
                }
            }
            
            var loader = $('loader');
            if(loader)
            {

                loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {spec_name: name,
                             spec_id: specification,
                             checked: checked,
                             bool: isbool
                             },
                method: 'get',
                asynchronous:false,
                onSuccess: function(transport)
                 {
                     
                    advanced_parse(transport.responseText);
                 }


                }
                );


        }
        function updateWantedSpecs(id)
        {
            var loader = $('loader');
            if(loader)
            {

                loader.style.display= 'block';
            }
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {set_wanted_spec_group: true,
                             wanted_spec_id: id
                             },
                method: 'get',
                asynchronous:false,
                onSuccess: function(transport)
                 {
                    advanced_parse(transport.responseText);
                 }


                }
                )

        }


        function updateLabelClickActionIE()
        {
            //NPE
             //IE fix so labels have same click actions aas input fields.
             //found on: http://snook.ca/archives/javascript/using_images_as/
             if(document.all && navigator.appVersion.indexOf("MSIE")>-1 && navigator.appVersion.indexOf("Windows")>-1)
              {
                var a = document.getElementsByTagName("label");
                for(var i=0,j=a.length;i<j;i++){
                  if(a[i].hasChildNodes && a[i].childNodes.item(0).tagName == "IMG")
                  {
                    a[i].childNodes.item(0).forid = a[i].htmlFor;
                    a[i].childNodes.item(0).onclick = function(){
                      var e = document.getElementById(this.forid);

                      switch (e.type) {
                           case "radio": e.click(); break;
                           case "radio": e.click(); break;
                           case "checkbox": e.click(); break;
                           case "text": case "password": case "textarea": e.focus(); break;
                        }  
                    }
                  }
                  else
                  {
                      var classname = a[i].className;
                      if(classname.indexOf("ajax_search") == 0)
                      {
                          a[i].onclick = function()
                          {
                                var labelFor = this.htmlFor;
                                var eLabel = document.getElementById(labelFor);
                                
                                if(eLabel)
                                {  
                                    eLabel.checked = !eLabel.checked;
                                    if(eLabel.currentStyle['display']=='none'){
                                    ;
                                    fireEvent(eLabel,'click');
                                }
                                }
                          }
                      }
                  }
                }
              }  
        }
        function fireEvent(element,event){
            if (document.createEventObject){
                // dispatch for IE
                var evt = document.createEventObject();
                return element.fireEvent('on'+event,evt)
            }
            else{
                // dispatch for firefox + others
                var evt = document.createEvent("HTMLEvents");
                evt.initEvent(event, true, true ); // event type,bubbling,cancelable
                return !element.dispatchEvent(evt);
            }
        }

        function updateMainBox()
        {
            
            var man = $('adv_manufacturer_id').value;
            new Ajax.Request('/ajaxscript/advanced_filter.php',{
                parameters: {update_box: true,
                             manufacturers_id: man
                             },
                method: 'get',
                asynchronous:false,
                onSuccess: function(transport)
                     {
                         
                        var json_result = eval('(' + transport.responseText  + ')');
                           
                        for(i = 0; i<json_result.ids.length; i++) {

                             el = $(json_result.ids[i].id);
                             if(el)
                             {
                                sethtml(json_result.ids[i].id, json_result.ids[i].value, true);
                             }

                         }
                        var multi_select = $('ADVANCED_FILTER_MILTI_SELECT');
                        if (multi_select.value == 'true')
                        { 
                            jQuery_cleanup(); 
                        }
                        
                         
                        display_holder(); 
                        
                        update_valid_specs_call();
                     }

            }  )
        }
        function main_box_with_preload()
        {
             var multi_select = $('ADVANCED_FILTER_MILTI_SELECT');
             if (multi_select.value == 'true')
             {
                jQuery_cleanup(); 
             }

            display_holder();
            var doUpdate = $('has_filter').value; 
            //alert(doUpdate);
            if(doUpdate == '1')
                update_valid_specs_call(); 
            
        }
        function display_holder()
        {
         
        }
        function jQuery_cleanup()
        {
             if(typeof jQuery =="function"){
                             
                           
                          $text= 'Vælg venligst';
                            jQuery('.spec_checkbox').dropDownUl({headerText:$text});  
                            getCheckboxData($text);
                            lateCheck($text);
                            
                            
                            
                            
                           jQuery('#advanced_filter_reset a').click(function(event){
                            
                               uncheckAll($text);
                            
                           }) ;
                           
                           jQuery('.arrow').autoSelect();
                       
                           
                         }   
        }
        function parse_valid_specs(json_result)
        {
         
                        var dispT;
                        var adv = $('advanced_specs');
                       if(adv)
                       {
                        dispT =document.getElementById("advanced_specs").style.display;
                        document.getElementById("advanced_specs").style.display="block";
                        }  
                         for(var i = 0; i<json_result.ranges.length; i++) {
                             
                             el = $(json_result.ranges[i].id);
                             if(el)
                             {
                                doAppend = json_result.ranges[i].append == 'true';
                         
                                sethtml(json_result.ranges[i].id, json_result.ranges[i].content, doAppend);
                             }

                         }
                         
                         if( adv && dispT=="none") 
                         {           
                            adv.style.display=dispT; 
                         }
                         for(i = 0; i<json_result.ids.length; i++) {
                             var el = jQuery('#'+json_result.ids[i].id);
                             if(el)
                             {
                                el.attr('disabled',!json_result.ids[i].ok);
                             }
                             var elLi = jQuery('#'+json_result.ids[i].id + '_li');
                             if(elLi)
                             {
                                if(!json_result.ids[i].ok)
                                {
                                    elLi.attr('class', 'ajax_search_disabled');
                                }
                                else
                                {
                                    elLi.attr('class','');
                                }
                             }
                             
                             var elText = jQuery('#'+json_result.ids[i].id + '_text');
                             if(elText)
                             {

                                if(!json_result.ids[i].ok)
                                {
                                    elText.attr('class','ajax_search_disabled');
                                    //elText.setOpacity(0.25);

                                }
                                else
                                {
                                    if(elText.attr('class') == 'ajax_search_disabled')
                                    {
                                        elText.attr('class', 'ajax_search_enabled');
                                    }
                                    //elText.setOpacity(1.0);
                                }
                             }
                         }

                         updateLabelClickActionIE();
                         var loader = $('loader');
                         if(loader)
                         {

                            loader.style.display= 'none';
                         }
                        
        }
       
        function update_valid_specs_call()
        {
            var man = $('adv_manufacturer_id').value;
             new Ajax.Request('/ajaxscript/advanced_filter.php',
             {
             parameters: {
                        update_valid_specs: true,
                        manufacturers_id: man
                        
                        },
             method: 'get',
             asynchronous:false,
             onSuccess: function(transport)
             {
                var json_result = eval('(' + transport.responseText  + ')');
                parse_valid_specs(json_result);
              }

             }              )

                     

                 
        }
        

                
                          
        function sethtml(div,content, appendme)
{
    var search = content;
    var script;
    if(appendme)
    {
        document.getElementById(div).innerHTML = document.getElementById(div).innerHTML + content;    
    }
    else
    {
        document.getElementById(div).innerHTML=content;
    }
    while( script = search.match(/(<script[^>]+javascript[^>]+>\s*(<!--)?)/i))
    {
      search = search.substr(search.indexOf(RegExp.$1) + RegExp.$1.length);

      if (!(endscript = search.match(/((-->)?\s*<\/script>)/))) break;

      block = search.substr(0, search.indexOf(RegExp.$1));

      search = search.substring(block.length + RegExp.$1.length);

      var oScript = document.createElement('script');
      oScript.setAttribute('type','text/javascript');
      oScript.text = block;
      document.getElementsByTagName("head").item(0).appendChild(oScript);

    }
    
    

}
function advanced_parse(transport)
    {
      var json_result = eval('(' + transport  + ')');
      //parse_valid_specs(json_result.values);
      var id = $('ID_OF_CONTENT_BOX').value;
      $(id).innerHTML = json_result.list;
      
      for(var i = 0; i<json_result.main_boxes.length; i++) {
                             
         el = $(json_result.main_boxes[i].id);
         if(el)
         {
            sethtml(json_result.main_boxes[i].id, json_result.main_boxes[i].content, false);
         }

     }
      
      updateLabelClickActionIE();
      var multi_select = $('ADVANCED_FILTER_MILTI_SELECT');
     if (multi_select.value == 'true')
     {
        jQuery_cleanup(); 
     }
     var loader = $('loader');
     if(loader)
     {

        loader.style.display= 'none';
     }
    }

