/* bonk_ncs - Edited June, 2009 to add a title change when a menu opens/closes  - for accessibility */

/* --- left nav functions */

function showHide(element_id) {
	if (document.getElementById && document.getElementById(element_id) && document.getElementById(element_id).style) {
		var menu  = document.getElementById(element_id);
		var arrow = document.getElementById(element_id + '_arrow');
		var title = document.getElementById(element_id + '_arrow');
		var more = (element_id == oi_utils.morelink.menuid) && oi_utils.morelink.isAlive();

		if (menu.style.display == "block") {
			menu.style.display = "none";
			if (arrow.src) { 
				arrow.src = arrow.src.replace("down","left");
				arrow.src = arrow.src.replace("01_061478","01_061479");
				arrow.src = arrow.src.replace("01_061483","01_061484");
			}
			if (title.title) { title.title = title.title.replace("Close","Open");} 
			if (more) { oi_utils.morelink.hide(); }
		}
		else {
			menu.style.display = "block";
			if (arrow.src) { 
				arrow.src = arrow.src.replace("left","down");
				arrow.src = arrow.src.replace("01_061479","01_061478");
				arrow.src = arrow.src.replace("01_061484","01_061483");
			}
			if (title.title) { title.title = title.title.replace("Open","Close");}
			if (more) { oi_utils.morelink.show(); }			
			}
		}
		
}

function changeHeight(new_height) {
	document.getElementById('banner').style.height = new_height + 'px';
}

function MoreLink(menuid) {
    this.menuid = menuid;
}

// MoreLink

MoreLink.itemClass = "hidemenuitem";
MoreLink.marginClass = "restore_margin";

MoreLink.prototype.build = function() {
    if( !this.hasHiddenItems() ) {
        this.restoreBoxMargin();
        return false;
    }

    var output = "<div id='__ID___more'><a href='#'>Show all __N__ links</a></div>";
    output = output.replace('__ID__', this.menuid).replace('__N__', this.items().length);
    document.write(output);

    var moreel = this.moreElement();
    var ael = moreel.getElementsByTagName("A")[0];
    var self = this;
    ael.onclick = function() { self.expand(); };

};

MoreLink.prototype.isAlive = function() {
    return this.hasHiddenItems();
};

MoreLink.prototype.hasHiddenItems = function() {
    var items = this.items();    
    return oi_utils.hasClassAttr(items[items.length-1], MoreLink.itemClass);
};

MoreLink.prototype.expand = function() {
    var items = this.items();
    this.hide();
    for( var i = 0; i < items.length; i++ ) {
        oi_utils.removeClassAttr(items[i], "hidemenuitem");
    }
};

MoreLink.prototype.hide = function() {
    var moreel = this.moreElement();
    moreel.style.display = "none";
    this.restoreBoxMargin();
};

MoreLink.prototype.show = function() {
    var moreel = this.moreElement();
    moreel.style.display = "block";
    this.removeBoxMargin();
};

MoreLink.prototype.restoreBoxMargin = function() {
    var boxel = this.boxElement();
    oi_utils.addClassAttr(boxel, MoreLink.marginClass);    
};

MoreLink.prototype.removeBoxMargin = function() {
    var boxel = this.boxElement();
    oi_utils.removeClassAttr(boxel, MoreLink.marginClass);    
};

MoreLink.prototype.items = function() {
    var boxel = this.boxElement();
    return boxel.getElementsByTagName('LI');
};

MoreLink.prototype.boxElement = function() {
    return document.getElementById(this.menuid + '_box');
};

MoreLink.prototype.moreElement = function() {
    return document.getElementById(this.menuid + '_more');
};

/* --- ask an expert */

function askExpertReplyChk() {
    _askExpertReplyChk(null);   
}

function askExpertReset() {
    // assume default is to want a reply
    _askExpertReplyChk(false);
}

function _askExpertReplyChk(disable) {
    var chk = document.getElementById('ask_expert_reply_chk')
    var info = document.getElementById('ask_expert_reply_info')
    var name = document.getElementById('ask_expert_reply_name')
    var email = document.getElementById('ask_expert_reply_email')

    if( !chk || !info || !name || !email) return;

    var info_labels = info.getElementsByTagName("LABEL");
    
    if( disable != null ) {
        var b = disable;
    } else {
        var b = !chk.checked;
    }
    
    name.disabled = b;
    email.disabled = b;
    for( var i = 0; i < info_labels.length; i++ ) {
        info_labels[i].disabled = b;
    }
    
}

/* --- survey */

function surveyFindChk() {
    _surveyFindChk(null)
}

function surveyReset() {
    // assumes that 'no' is not the default choice for q#1
    _surveyFindChk(true);
}

function _surveyFindChk(disable) {

    var detail_box = document.getElementById("survey_find_detail_box")    
    var nochk = document.getElementById("survey_find_no");
    if ( !detail_box || !nochk ) { return; }
    
    if( disable == null ) {
        var b = !nochk.checked;
    } else {
        var b = disable;
    }
    
    // document.ELEMENT_NODE = 1
    for( var i = 0; i < detail_box.childNodes.length; i++ ) {
        var node = detail_box.childNodes[i];
        if( node.nodeType != 1 ) {
            continue;
        }
        
        if( node.tagName == 'LABEL' || node.tagName == 'TEXTAREA' ) {
            node.disabled = b;
        }
    }

}



/* --- utils */
oi_utils = {};

// create more link
oi_utils.morelink = new MoreLink("relatedmenu");

oi_utils.hasClassAttr = function(el, className) {
   var classList = oi_utils.getClassList(el);
   for(var i = 0; i < classList.length; i++) {
       if( className == classList[i] ) {return true;}
   }
   return false;  
};

oi_utils.addClassAttr = function(el, className) {
   var classList = oi_utils.getClassList(el);
   for(var i = 0; i < classList.length; i++) {
       if( className == classList[i] ) {return;}
   }
   classList.push(className);
   el.className = classList.join(" ");
};

oi_utils.removeClassAttr = function(el, className) {
   var classList = oi_utils.getClassList(el);
   for(var i = 0; i < classList.length; i++) {
       if( className == classList[i] ) {
           classList.splice(i, 1);
           break;
       }
   }
   el.className = classList.join(" ");
};

oi_utils.getClassList = function(el) {
    var className = oi_utils.trim(el.className);
    return className ? className.split(/\s+/) : [];
};

oi_utils.trim = function(s) {
    return s.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
};

try { document.execCommand("BackgroundImageCache",false,true); } catch(e) { }
