﻿/* 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;