﻿// http://www.oreillynet.com/cs/user/view/cs_msg/80162
        
        var xhr = new Array(); // ARRAY OF XML-HTTP REQUESTS
        var xi = new Array(0); // ARRAY OF XML-HTTP REQUEST INDEXES
        xi[0] = 1; // FIRST INDEX SET TO 1 MAKING IT AVAILABLE

        function xhrRequest(type) {
	        if (!type) {
		        type = 'html';
	        }
	        // xhrsend IS THE xi POSITION THAT GETS PASSED BACK
	        // INITIALIZED TO THE LENGTH OF THE ARRAY(LAST POSITION + 1)
	        // IN CASE A FREE RESOURCE ISN'T FOUND IN THE LOOP
	        var xhrsend = xi.length; 
        	
	        // GO THROUGH AVAILABLE xi VALUES
	        for (var i=0; i<xi.length; i++) {
		        // IF IT'S 1 (AVAILABLE), ALLOCATE IT FOR USE AND BREAK
		        if (xi[i] == 1) {
			        xi[i] = 0;
			        xhrsend = i;
			        break;
		        }
	        }
	        // SET TO 0 SINCE IT'S NOW ALLOCATED FOR USE
	        xi[xhrsend] = 0;
	        // SET UP THE REQUEST
	        if (window.ActiveXObject) {
		        try {
			        xhr[xhrsend] = new ActiveXObject("Msxml2.XMLHTTP");
		        } catch (e) {
			        try {
				        xhr[xhrsend] = new ActiveXObject("Microsoft.XMLHTTP");
			        } catch (e) {}
		        }
	        } else if (window.XMLHttpRequest) {
		        xhr[xhrsend] = new XMLHttpRequest();
		        if (xhr[xhrsend].overrideMimeType) {
			        xhr[xhrsend].overrideMimeType('text/' + type);
		        }
	        }
	        return (xhrsend);   
        } 
        
        function fcn(url, outputId) {
	        var xhri = xhrRequest('html');			
	        xhr[xhri].open('GET', url, true); 
	        xhr[xhri].onreadystatechange = function() {
		        if (xhr[xhri].readyState == 4 && xhr[xhri].status == 200) {
		       
			        document.getElementById(outputId).innerHTML = xhr[xhri].responseText; 
			        xi[xhri] = 1;
			        xhr[xhri] = null;
		        }
	        };
	        xhr[xhri].send(null);
        }
         
        function outputFacet(url, facetId) {
        
	        var xhri = xhrRequest('html');			
	        xhr[xhri].open('GET', url + '&timestamp=' + now.toUTCString(), true);
	        xhr[xhri].onreadystatechange = function() {
		        if (xhr[xhri].readyState == 4 && xhr[xhri].status == 200) { 
		        
			        eval("var d = " + xhr[xhri].responseText);
			        
			        var sb = document.getElementById("Facet" + facetId);  
			        
			        var selectedvalue = ""; 
	                selectedvalue = sb.value;
			        removeAllOptions(sb); 
			        
			        addOption(sb, "", "");
                    for(a=0; a<d.length; a++) 
                        addOption(sb, d[a].name, d[a].value);
                    
                    sb.value = selectedvalue; 
			        
			        xi[xhri] = 1;
			        xhr[xhri] = null;
		        }
	        };
	        xhr[xhri].send(null);
	        
        } 
      
      
        function loadMulti(view, facets, current, outputId) { 
        
	       var arrFacets = facets.split(",") 
           
           // SELECTED VALUES 
           var selectedvalues = "";   
           for(i=0; i<arrFacets.length; i++) 
           {    
               var sb = document.getElementById("Facet" + arrFacets[i]); 
               if(selectedvalues!="")
                    selectedvalues += ","  
               selectedvalues += sb.value;               
           }    
          
	       for(a=0; a<arrFacets.length; a++)
	       { 
	            
	            var facet = arrFacets[a];  
	            
	            var sb = document.getElementById("Facet" + arrFacets[a]);  
	            
	            if(facet!=current || sb.value=="")	      
	                outputFacet("/_colon/scripts/updateFacet.asp?facet=" + facet + "&colon_view_id=" + view + "&selectedterms=" + selectedvalues, facet); 
	       }   
	       
	       fcn("/_colon/scripts/output.asp?colon_view_id="+ view + "&selectedterms=" + selectedvalues, outputId);
	       
	      
        }  
        
        
        function loadDato(view, outputId) 
        { 
          var sb = document.getElementById("SearchDate"); 
          dato = sb.value;    
                       
	      fcn("/_colon/scripts/output.asp?colon_view_id="+ view + "&dato=" + dato, outputId); 
        }  
        
        
        function addOption(selectbox,text,value )
        {         
            var optn = document.createElement("OPTION");
            optn.text = text;
            optn.value = value;
            selectbox.options.add(optn);
        } 
            
        function removeAllOptions(from) 
        {  
	        for (var i=(from.options.length-1); i>=0; i--) 
	        { 
		    from.options[i] = null; 
		    }  
	        from.selectedIndex = -1; 
	    }        
	    
	   function NavigateDate(interval, view, outputId) 
	   {
	       var sb = document.getElementById("SearchDate"); 
	    
	       selectedIndex = sb.selectedIndex; 
	       maxIndex = sb.length;  
	       
	       if(selectedIndex + interval < 0)  
	            nextIndex = maxIndex-1      
	       else  
	            if(selectedIndex + interval == maxIndex) 
	                nextIndex = selectedIndex 
	            else
	                nextIndex = selectedIndex + interval;
	       
	     
	        	       
	       sb.selectedIndex = nextIndex;
	       
	       loadDato(view, outputId) 
	              
	    
	   }
