/* main selector filter functions for expandable futures tables 
author - Glyn Williams July 06
*/
var setPagefilters = {
    urlVar      : 'exchange',

    init : function(){
        /* set some values for IE / Moz */
        styleSwitch = (document.all)? 'display' : 'visibility',
        styleShow = (document.all)? 'block' : 'visible',
        styleHide = (document.all)? 'none' : 'collapse',
        
        /* make arrays of elements by class */
        categories = setPagefilters.getElementsByClass('group',document.getElementById('FutGrpALL'),'div');
        products = setPagefilters.getElementsByClass('summary',document.getElementById('FutGrpALL'),'tr');
        details = setPagefilters.getElementsByClass('details',document.getElementById('FutGrpALL'),'tr');

        /*  check if an exchange parameter has been sent in the URL */
        setPagefilters.geturlExchange();
        
        /* dynamically write styles for js enabled browsers to show our interacive widgets */ 
        with (setPagefilters) {
            writeStyles('#TradingConditions1','display:none', 'display:none');
            writeStyles('.details','display:none', 'visibility:collapse');
            writeStyles('#tbl_select','display:block', 'display:block');
            writeStyles('span.productExpand','display:inline', 'display:inline');
            writeStyles('#TradingConditions1','display:block', 'display:block');        
        }
    },
    
    getElementsByClass : function(searchClass,node,tag){
        var classElements = new Array();
        if ( node == null )
            node = document;
        if ( tag == null )
            tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
        for (i = 0, j = 0; i < elsLen; i++) {
            if ( pattern.test(els[i].className) ) {
	            classElements[j] = els[i];
	            j++;
            }
        }
        return classElements;
    },
    
    writeStyles : function(selector,ruleIE, ruleMoz){
    var Stylesheet = document.styleSheets[document.styleSheets.length - 1];
    var thisStyle = (document.all)? Stylesheet.addRule(selector,ruleIE + ';') : Stylesheet.insertRule(selector + '{' + ruleMoz + ';}' , Stylesheet.cssRules.length) ;
    } ,
    
    geturlExchange : function(){
        
        var urlVar= setPagefilters.urlVar;
        var qs = window.location.search.substring(1);
        if(qs != null && qs.indexOf(urlVar) > -1){
            var vars = qs.split("&");
            for(i=0;i<vars.length; i++){
                var pair = vars[i].split("=");
                if (pair[0] == urlVar) {
                    thisEx =  pair[1].toUpperCase();
                    this.exchanges();
                    break
                }
            }
            
        }
    },
               
    categories : function(sel){
        thisCat =  sel[sel.selectedIndex].text;
        for(i=0;i<categories.length;i++){
            if(thisCat == 'All Categories' || categories[i].id == thisCat){
                categories[i].style.display='block';
            }else{
                categories[i].style.display='none';
            }
        }
    },
    
    selectedEx : function(sel){
        thisEx =  sel[sel.selectedIndex].value;
        this.exchanges();
    },
    
    exchanges : function(){
        for(i=0;i<products.length;i++){
            tr = products[i];
            stTr = tr.innerHTML;
            if(stTr.indexOf(thisEx) != -1 || thisEx == "_all"){
                tr.style[styleSwitch]  = styleShow;
            }else{
                tr.style[styleSwitch] = styleHide;
                details[i].style[styleSwitch] = styleHide;
            }
        }
    },
    
    expnd : function(div,e){
        e.innerHTML = (e.innerHTML == '+')? '&mdash;' : '+';
           var tbl= document.getElementById(div);
            tbl.style[styleSwitch] = (tbl.style[styleSwitch] == styleShow)? styleHide : styleShow;
    }
    
}

window.onload=setPagefilters.init;

function doSelectForGroups(){
		var GroupIds = new Array('_all ', 'FutGrp1', 'FutGrp2', 'FutGrp3', 'FutGrp4', 'FutGrp5', 'FutGrp6', 'FutGrp7', 'FutGrp8', 'FutGrp9');
		var GroupTexts = new Array('All Categories ', 'Agriculture', 'Base Metals', 'Energies', 'Financials - Bonds', 'Financials - Currencies', 'Financials - Short-term Interest Rates', 'Precious Metals', 'Softs', 'Stock Indices');
		var selectElement = document.createElement("Select");
		selectElement.id = 'selectCategory';
		for(var i = 0; i < GroupIds.length; i++){
			var optionElement = document.createElement('option');
			optionElement.value =  GroupIds[i];
			optionElement.appendChild(document.createTextNode(GroupTexts[i] + " "));
			selectElement.appendChild(optionElement);
		}
		selectElement.onchange = function(){
				filterCategory();
		}
		return selectElement;
	}			

function doSelectForExchanges(){
		var ExchangeList = new Array("_all", "ECBOT","EUR_AMS2","EUR_LIF1","EUR_LIF2","EUR_LIF3","EUR_PAR1","EUR_PAR2","EUREX","GLOBEX","ICE","IDEM","MEFF","NYBOT","SFE","SGX-DT","SSE","TYO");
		var ExchangeText = new Array("All Exchanges", "ECBOT","EUR_AMS2","EUR_LIF1","EUR_LIF2","EUR_LIF3","EUR_PAR1","EUR_PAR2","EUREX","GLOBEX","ICE","IDEM","MEFF","NYBOT","SFE","SGX-DT","SSE","TYO");
		var selectElement = document.createElement("Select");
		selectElement.id = 'selectExchange';
		for(var i = 0; i < ExchangeList.length; i++){
			var optionElement = document.createElement('option');
			optionElement.value =  ExchangeList[i];
			optionElement.appendChild(document.createTextNode(ExchangeText[i] + " "));
			selectElement.appendChild(optionElement);
		}
		selectElement.onchange = function(){
				filterCategory();
		}
		return selectElement;
	}
		var notAvailable = "No contracts are available for the currently selected exchange";
		
	function filterCategory() {
	if (document.getElementById) {
		ddCat = document.getElementById("selectCategory");
		ddEx = document.getElementById("selectExchange");
		for(i=1; i <10; i++) {
			var cat = document.getElementById("Cat" + i);
			empty = true;
			if ((ddCat.selectedIndex == 0) || (ddCat.selectedIndex == i)) {
				cat.style.display="block";
				ex = cat.getElementsByTagName("DIV");
				for(j=0; j < ex.length; j++) {
					if (ex[j].className.indexOf("Ex") != -1) {
						if ((ddEx.selectedIndex == 0) || (ex[j].className == "Ex" + ddEx[ddEx.selectedIndex].value)) {
							ex[j].style.display = "block";
							empty = false;
						} else {
							ex[j].style.display = "none";
						}
					}
				}
			} else {
				cat.style.display="none";			
			}
			emptyMsg = document.getElementById("empty"+i);
			if (empty) (!emptyMsg) ? cat.innerHTML += '<p id="empty'+i+'" class="disclaimer">'+notAvailable+'</p>' : emptyMsg.style.display="block";
			else if (emptyMsg) emptyMsg.style.display = "none";
		}
	}
	}