
/************************************************
*
* showHideDetail()
*
* shows or hides description
*
* Snohomish County
* Department of Information Systems
* Web Services Team
*
* @created 2003-09-04
* @version 1.00
* @author Michael VonWald
*
************************************************/
function showHideDetail(elemId) {
    var expandAllLink = document.getElementById('expandAll');
    var elemToShowOrHide = document.getElementById(elemId);

    var TEXT_SHOW = 'expand all';
    var TEXT_HIDE = 'contract all';

    var ELEM_ON = '-on';
    var ELEM_OFF = '-off';

    // create regular expressions
    var regExOn = /-on/;
    var regExOff = /-off/;

    // show / hide descriptive text
    if(elemToShowOrHide.className.indexOf(ELEM_ON) > 0 ) {
        elemToShowOrHide.className = elemToShowOrHide.className.replace(regExOn, ELEM_OFF);
    } else {
        elemToShowOrHide.className = elemToShowOrHide.className.replace(regExOff, ELEM_ON);
    }

    // check expand all link
    var allDivs = document.getElementsByTagName("div");
    var atLeastOneOpen = false;

    for(i=0; i<allDivs.length; i++) {
        if(allDivs[i].className.indexOf('detail-on') >=  0) {
            atLeastOneOpen = true;
            break;
        }
    }

    // only change of no others are open or closed
    if(atLeastOneOpen) {
        expandAllLink.innerHTML = TEXT_HIDE;
    } else {
        expandAllLink.innerHTML = TEXT_SHOW;
    }

}


function expandContractAll(elemId) {

    var elemLink = document.getElementById(elemId);
    var allDivs = document.getElementsByTagName("div");
    var newClassName =  '';

    var TEXT_SHOW = 'expand';
    var TEXT_HIDE = 'contract';
    var regExShow = /^expand/;
    var regExHide = /^contract/;

    if(elemLink.innerHTML.search(regExShow) >= 0 ) {

        elemLink.innerHTML = elemLink.innerHTML.replace(regExShow,TEXT_HIDE);
        newClassName = 'detail-on';

    } else {

        elemLink.innerHTML = elemLink.innerHTML.replace(regExHide,TEXT_SHOW);
        newClassName = 'detail-off';
    }

    expandContractDetailAll(allDivs, newClassName);
}

function expandContractDetailAll(allDivs, newClassName) {
    var i=0;

    for(i=0; i<allDivs.length; i++) {
        if((allDivs[i].className != null) && (allDivs[i].className.indexOf('detail') >= 0)) {
            allDivs[i].className = newClassName;
        }
    }

}

function showHideInfo(elemId, imageId) {
    var expandAllLink = document.getElementById('expandAll');
    var elemToShowOrHide = document.getElementById(elemId);
    var elemImage = document.getElementById(imageId);
    
    var TEXT_SHOW = 'expand';
    var TEXT_HIDE = 'contract';
    
    var ELEM_ON = '-on';
    var ELEM_OFF = '-off';
    var IMAGE_SHOW = 'expandable';
    var IMAGE_HIDE = 'collapsible';
    
    // create regular expressions
    var regExOn = /-on/;
    var regExOff = /-off/;
    var regExShow = /^expandable/;
    var regExHide = /^collapsible/;
    
    // show / hide descriptive text 
    if(elemToShowOrHide.className.indexOf(ELEM_ON) > 0 ) {            
        elemToShowOrHide.className = elemToShowOrHide.className.replace(regExOn, ELEM_OFF);                
    } else {                   
        elemToShowOrHide.className = elemToShowOrHide.className.replace(regExOff, ELEM_ON);               
    }

    // swap image
    if(elemImage.src.indexOf(IMAGE_SHOW) >= 0 ) {            
        elemImage.src = elemImage.src.replace(IMAGE_SHOW, IMAGE_HIDE);                
    } else {            
        elemImage.src = elemImage.src.replace(IMAGE_HIDE, IMAGE_SHOW);                
    }
    
    // check expand all link
    if(expandAllLink.innerText.search(regExShow) >= 0 ) {    
        expandAllLink.innerText = expandAllLink.innerText.replace(TEXT_SHOW,TEXT_HIDE);        
    } else {    
        expandAllLink.innerText = expandAllLink.innerText.replace(TEXT_HIDE,TEXT_SHOW);        
    }
}       

function expandAll(elemId) {

    var elemLink = document.getElementById(elemId);
    var allDivs = document.getElementsByTagName("div");
    var i=0;
    
    var ELEM_ON = '-on';
    var ELEM_OFF = '-off';
    var regExOn = /-on/;
    var regExOff = /-off/;
    
    var TEXT_SHOW = 'expand';
    var TEXT_HIDE = 'contract';
    var regExShow = /^expand/;
    var regExHide = /^contract/;
    
    var IMAGE_SHOW = 'expandable';
    var IMAGE_HIDE = 'collapsible';
    
    if(allDivs.length > 0) {
    
        // swap link text
        if(elemLink.innerText.search(regExShow) >= 0 ) {    
            elemLink.innerText = elemLink.innerText.replace(regExShow,TEXT_HIDE);        
        } else {    
            elemLink.innerText = elemLink.innerText.replace(regExHide,TEXT_SHOW);        
        }
            
        for(i=0; i<allDivs.length; i++) {            
            var imageId;
            var elemImage;
                
            if(allDivs[i].className.indexOf(ELEM_OFF) > 0) {
                imageId = "img" + allDivs[i].id.substring(0,1).toUpperCase() + allDivs[i].id.substr(1);
                elemImage = document.getElementById(imageId);
            
                // swap image
                if(elemImage.src.indexOf(IMAGE_SHOW) >= 0 ) {            
                    elemImage.src = elemImage.src.replace(IMAGE_SHOW, IMAGE_HIDE);                
                }
                
                allDivs[i].className = allDivs[i].className.replace(regExOff, ELEM_ON);                 
            
            } else {
                
                if(allDivs[i].className.indexOf(ELEM_ON) > 0) {
                    imageId = "img" + allDivs[i].id.substring(0,1).toUpperCase() + allDivs[i].id.substr(1);
                    elemImage = document.getElementById(imageId);
                
                    if(elemImage.src.indexOf(IMAGE_HIDE) >= 0 ) {            
                        elemImage.src = elemImage.src.replace(IMAGE_HIDE, IMAGE_SHOW);
                    }
                        
                    allDivs[i].className = allDivs[i].className.replace(regExOn, ELEM_OFF); 
                }
            }           
                    
        }
    }
}

 /************************************************
*
* popOpen()
*
* Creates a new window 440x650
*
* @param (string) url of new window
* @return void
*
************************************************/
function popOpen(pageUrl) {
    // get domain
    var newUrl = window.location.protocol;
    newUrl += "//";
    newUrl += window.location.hostname;
    
    pageUrl = newUrl + pageUrl;
    
    // open in new window
    window.open(pageUrl,'Information','height=440,width=650,toolbar=no,status=yes,location=no,menubar=yes,resizable=yes,scrollbars=yes');
}
    
/************************************************
*
* mOver()
*
* MouseOver function for changing classnames
* facilitates different look for some elements
* of a Snohomish County web page or web application
*
* @param (string) id attribute value of element
* @return void
*
************************************************/
function mOver(elemId) {

    // note:
    // all mouseover classnames should be the
    // standard classname with the addition
    // of '-over' on the end
    //
    var OVER = "-over";

    // get document element
    var objElem = document.getElementById(elemId);

    // add '-over' to className
    objElem.className = objElem.className + OVER;
}


/************************************************
*
* mOut()
*
* MouseOut function for changing classnames
* facilitates different look for some elements
* of a Snohomish County web page or web application
*
* @param (string) id attribute value of element
* @return void
*
************************************************/
function mOut(elemId) {

    // note:
    // all mouseover classnames should be the
    // standard classname with the addition
    // of '-over' on the end
    //
    // create regular expression with this
    var regEx = /-over/;

    // get document element
    var objElem = document.getElementById(elemId);

    // replace '-over' with nothing
    objElem.className = objElem.className.replace(regEx,'');
}

