﻿
function explodeNav(div, rowIndex){
    clearInterval(implodeTmr);
    var browser=navigator.appName;
    
    var divNav = $get(div);
    
    if(divNav!=implodeDiv&&implodeDiv!=null){
        implodeDiv.style.display = 'none';
    }
    
    implodeDiv = divNav;
    
    divNav.style.display='';

    //first rowindex is 0 so add 1 to it. i.e. 0 * rowHeight is 0 so your not going to get an accurate total row height
    rowIndex = rowIndex + 1;
    var rowIndexPreStr = '0';
    if (rowIndex > 9){
        rowIndexPreStr = '';
    }
    
    var headHeight = 270; //the space between the top of the page and the top of divNav
    var titleRowHeight = 37; 
    var rowHeight = 25;
    
    if (browser!="Microsoft Internet Explorer"){
        rowHeight = 27;
    }
    
    var innerRowPos = titleRowHeight + (rowHeight * rowIndex);
    
    
    if (browser=="Microsoft Internet Explorer"){
        divNav.style.posTop = innerRowPos;
    }else{
        divNav.style.top = innerRowPos + "px";
    }
    
    var scrollval = document.documentElement.scrollTop;
    
    if (scrollval <= headHeight){
        headHeight = headHeight - scrollval;
    }else {
        headHeight = 0;
    }
    
    var rowPos = headHeight + titleRowHeight + (rowHeight * rowIndex);
    
    if ($get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl01_tdTier3Nav').className == 'tier3Header2'){
        //nav is displayed in up direction, account for difference in height
        if (browser=="Microsoft Internet Explorer"){
            rowPos += 18;
        }else{
            rowPos += 20;
        }
    }
       
    var selectedClass = 'tier3Nav';
    var selectedFooterClass = 'tier3Footer';
       
    //determine if exploding div will exceed height of window    
    var divNavPosTop = 0;
    
    var v1 = rowPos + divNav.clientHeight + scrollval;
    var v2 = (document.documentElement.clientHeight - 70) + document.documentElement.scrollTop;
    if (browser=="Microsoft Internet Explorer"){
        v2 = document.documentElement.clientHeight  - 70 + document.documentElement.scrollTop;
    }
    
    if (v1 > v2){
        //exceeded page height
        divNavPosTop = (innerRowPos - divNav.clientHeight) + rowHeight + 12;      
        
        selectedClass = 'tier3FooterSelected';
        selectedFooterClass = '';
    }
    
    var preStr = '0';
    var count = 1;
    
    //get the last row and change the images around by changing the class
    while ($get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav') != undefined){
        $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav').className = 'tier3Nav';
        count += 1;
        if (count>9){
            preStr = '';
        }
    }
    
    count = count - 1;
    if (count>9){
        preStr = '';
    }
    
    //update the images of all necessary controls by changing each class.
    var footer;
    var footer2;
    if ($get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav') != undefined){
        footer =$get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav');
        if (selectedClass == 'tier3FooterSelected' && $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav').innerText.length > 17){
            selectedClass = "tier3FooterSelectedLarge";
        }
        footer.className = selectedClass;
        if (selectedFooterClass==''){
            $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl01_tdTier3Nav').className = 'tier3Header2';
        }else{
            $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl01_tdTier3Nav').className = 'tier3Header';
        }
        
        footer2 = $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + (count + 1).toString() + '_tdTier3Footer');
        footer2.className = selectedFooterClass;
       
    }else {
        preStr = '0';
        if (count>9){
            preStr = '';
        }
        
        if ($get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav') != undefined){
            footer = $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + count.toString() + '_tdTier3Nav');
            footer.className = selectedClass;
            if (selectedFooterClass==''){
                $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl01_tdTier3Nav').className = 'tier3Header2';
            }else{
                $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl01_tdTier3Nav').className = 'tier3Header';
            }
            
        }
    }
       
    divNav.style.display='';
    if (divNavPosTop  != 0){
        var actualTopOfDiv = 310 + divNavPosTop - (30)  ;
    
        if (actualTopOfDiv > scrollval){
            if (browser=="Microsoft Internet Explorer"){
                divNav.style.posTop = (innerRowPos - divNav.clientHeight) + rowHeight + 12;
            }else{
                divNav.style.top = ((innerRowPos - divNav.clientHeight) + rowHeight) + "px";
            }
        }else{
            //the nav is trying to display up but will go over the top of the page
            if (browser=="Microsoft Internet Explorer"){
                actualTopOfDiv = 250 + (innerRowPos - divNav.clientHeight) + rowHeight + 12;
                divNavPosTop = actualTopOfDiv - 240 + (scrollval - actualTopOfDiv) - $get('floatdiv').style.posTop;
                divNav.style.posTop = divNavPosTop;
                
                //get the row closes to the parent row and make it appear as if its extending from it
            var childRowIndex = 1;
            var childRowPos = 0;
            preStr = '0';
            var foundChild=false;
            while (foundChild==false && $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + childRowIndex.toString() + '_tdTier3Nav') != undefined){
                
                childRowPos = (titleRowHeight + (rowHeight * (childRowIndex - 2)) - (240 - scrollval)) - $get('floatdiv').style.posTop;
                if (childRowPos >= innerRowPos - 12 && childRowPos <= innerRowPos + 12){
                    if($get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + childRowIndex.toString() + '_tdTier3Nav')!=undefined){
                        if (childRowIndex == 1){
                            $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + childRowIndex.toString() + '_tdTier3Nav').className = 'tier3Header';
                        }else{
                            $get('ctl00_rptLeftNav_ctl' + rowIndexPreStr + rowIndex + '_rptTier3_ctl' + preStr + childRowIndex.toString() + '_tdTier3Nav').className = 'tier3SelectedNav';
                        }
                        
                        footer.className = 'tier3Nav';
                        if(footer2!=undefined){
                            footer2.className = 'tier3Footer';
                        }
                        
                        foundChild=true;
                        
                        divNav.style.posTop = divNavPosTop + (innerRowPos - childRowPos) + 10;
                    }
                }
                childRowIndex += 1;
                if (childRowIndex>9){
                    preStr = '';
                }else{
                    preStr = '0';
                }
            }
                
            }else{
                divNav.style.top = (((innerRowPos - divNav.clientHeight) + rowHeight) - (scrollval + 220 + ((innerRowPos - divNav.clientHeight) + rowHeight))) + "px";
            }
            
            
        }
    }
    
}

var stopImplode = false;
function implodeNav(div){
    clearInterval(implodeTmr);
    
    if(div==null){
       div = implodeDiv;
    }
    
    if (stopImplode==false){
        var divNav = $get(div);
    
        divNav.style.display='none';
    }
}

function childRowMouseOver(div){
    clearInterval(implodeTmr);
    stopImplode=true;
    //div.style.display = 'block';
}

var waitToImplodeTmr;
var implodeTmr;
var implodeDiv;
function waitThenImplode(div){
    if(div!=implodeDiv&&implodeDiv!=null){
        implodeDiv.style.display = 'none';
    }
    implodeDiv = div;
    clearInterval(implodeTmr);
    clearInterval(waitToImplodeTmr);
    waitToImplodeTmr = setInterval('releaseImploder()', 2000);
}

function releaseImploder(){
    clearInterval(waitToImplodeTmr);
    stopImplode = false;
    
    clearInterval(implodeTmr);
    if (implodeDiv!=null){
        implodeTmr = setInterval("implodeNav('" + implodeDiv.id + "');", 1000);
    }
}