var is = new ottosniff();
function ottosniff(){
	var ua = navigator.userAgent.toLowerCase();
	var b = navigator.appName;
	if (b=="Netscape") this.b = "ns";
	else this.b = b;
	this.version = navigator.appVersion;
	this.v = parseInt(this.version);
	this.gecko = (ua.match(/\bgecko\/(20\d\d)(\d\d)(\d\d)\b/)) ? true : false;
	this.ns = (this.b=="ns" && this.v>=5);
	this.op = (ua.indexOf('opera')>-1);
	this.safari = (ua.indexOf('safari')>-1);
	this.op7 = (this.op && this.v>=7 && this.v<8);
	this.op78 = (this.op && this.v>=7 || this.op && this.v>=8);
	this.ie5 = (this.version.indexOf('MSIE 5')>-1);
	this.ie6 = (this.version.indexOf('MSIE 6')>-1);
	this.ie7 = (this.version.indexOf('MSIE 7')>-1);
	this.ie56 = (this.ie5||this.ie6);
	this.ie567 = (this.ie5||this.ie6||this.ie7);
	this.iewin = (this.ie56 && ua.indexOf('windows')>-1 || this.ie7 && ua.indexOf('windows')>-1);
	this.iemac = (this.ie56 && ua.indexOf('mac')>-1);
	this.moz = (ua.indexOf('mozilla')>-1);
	this.ff = (ua.indexOf('firefox')>-1);
	this.moz13 = (ua.indexOf('mozilla')>-1 && ua.indexOf('1.3')>-1);
	this.oldmoz = (ua.indexOf('sunos')>-1 || this.moz13 && !this.ff || this.moz && ua.indexOf('1.4')>-1 && !this.ff || this.moz && ua.indexOf('1.5')>-1 && !this.ff || this.moz && ua.indexOf('1.6')>-1 && !this.ff);
	this.anymoz = this.gecko;
	this.ns6 = (ua.indexOf('netscape6')>-1);
	this.docom = (this.ie56||this.ns||this.iewin||this.op||this.iemac||this.safari||this.moz||this.oldmoz||this.ns6);
}

// VARS
ptest="noprint";
var oldmenu = new Array();
var navmenu = new Array();
var a1menus = new Array();
var a1hrefs = new Array();
var imgpreload = new Array();
var imgpostload = new Array();
var preloaderOn = new Array();
var preloaderOff = new Array();
var preloaderActive = new Array();
var activeImg = new Array();
var plx = 0;
var rtl = false; //in here as false if not stated in menucontent.js

// ADD BROWSER CLASS TO HTML TAG
if (document.getElementsByTagName('html')[0]){
	if(is.op){var bclass = "browserOpera";}
	else if(is.safari){var bclass = "browserSafari";}
	else if(is.ie56){var bclass = "browserExplorer56 browserExplorer";}
	else if(is.ie7){var bclass = "browserExplorer7 browserExplorer";}
	else if(is.iemac){var bclass = "browserExplorerMac";}
	else if(is.oldmoz){var bclass = "browserOldMoz";}
	else {var bclass = "";}
	if(is.gecko){bclass += " gecko";}
	bclass += " jsenabled";
	if (typeof a1menuwrap != 'undefined' && a1menuwrap){bclass = bclass+" hasA1menus";}
	addClassName(document.getElementsByTagName('html')[0], bclass);
}

// sniff for various page elements
var kdoc = document;
var sniffStatus = {'a1':false,'pagetitle':false,'sunhome':false}

// PAGE PREP
function prepSunPage(){
	if (is.docom){
		// sunhome test & omni test
		if(kdoc.getElementById('a0v2') && window.s_account){
			sniffStatus.sunhome = true;
		}
		//copyright
		if(kdoc.getElementById('copyDate')){
			var thisdate = new Date();
			kdoc.getElementById('copyDate').innerHTML = "1994-"+thisdate.getFullYear();
		}
		// no hardcode A2
		if (ptest.indexOf("yesprint") == -1 && ptest.indexOf("prepmenus") == -1 && document.getElementById('mtopic1') && navmenu['1.0']){
			printmenus();
			prepmenus();
		}
		// add actions to global search
		if (kdoc.getElementById('searchfield')){
			kdoc.getElementById('searchfield').onfocus = function(){
				if(kdoc.getElementById('searchfield').value==kdoc.getElementById('searchfield').defaultValue)kdoc.getElementById('searchfield').value='';
				if (!is.iemac){
					kdoc.getElementById('searchfield').style.width='110px';
				}
			};
			kdoc.getElementById('searchfield').onblur = function(){
				if(kdoc.getElementById('searchfield').value=="")kdoc.getElementById('searchfield').value=kdoc.getElementById('searchfield').defaultValue;
				if (!is.iemac){
					kdoc.getElementById('searchfield').style.width='67px'
				}
			};
		}
		// add blur action to logo
		if (kdoc.getElementById('sunlogo')){
			kdoc.getElementById('sunlogo').onfocus = function(){hideA2(0)};
		}
		// add bg spacer gif to off divs in IE for better response
		if(is.ie56 && kdoc.getElementById('offdiv') && kdoc.getElementById('offdivL') && kdoc.getElementById('offdivT') && kdoc.getElementById('offdivR') && imdir && !is.iemac){
			kdoc.getElementById('offdiv').style.background = kdoc.getElementById('offdivL').style.background = kdoc.getElementById('offdivT').style.background = kdoc.getElementById('offdivR').style.background = 'url('+imdir+'/a.gif)';
		}
		//dom crawl
		domCrawl(kdoc);
		// prep homepage

	}
}

//DOM CRAWL
function domCrawl(domObject,tagList){
	if (is.ie5 && !tagList){
		 var tagList = new Array('a','b','div','span','td','li','ul','input','select','img','option','area','a','div','span');
	}else if (!tagList){
		 var tagList = new Array('*');
	}else if (tagList){
		 var tagList = tagList.split(',');
	}
	for (var ivp=0;ivp<tagList.length;ivp++){
		var an = domObject.getElementsByTagName(tagList[ivp]);
		for (var i=0;i<an.length;i++){
			var lcNodeName = an[i].nodeName.toLowerCase();
			
			if (an[i].className.indexOf('cTool-') > -1){
				sniffClassTool(an[i]);
			}

			if (lcNodeName == 'img' && an[i].src.indexOf('_off.') > -1){
				sniffRollover(an[i]);
			}else if(!an[i].className){
				// do nothing, thus preventing much unnecessary checking
			}else if (an[i].className.indexOf('k2ajax-') > -1){
				sniffK2ajax(an[i]);
			}else if (an[i].className.indexOf('k2over') > -1 || an[i].className.indexOf('k2focus') > -1 || an[i].className.indexOf('k2cl') > -1 || an[i].className.indexOf('a2menu') > -1 || an[i].className.indexOf('k2show') > -1 || an[i].className.indexOf('k2hide') > -1){
				sniffK2(an[i]);
			}else if (sniffStatus.sunhome == true && an[i].className.indexOf('tickeritem') > -1){
				sniffTicker(an[i]);
			}else if (lcNodeName == 'div' && hasClassName(an[i], 'g23')){
				sniffG23(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], 'media-launch')){
				sniffMedia(an[i]);
			}else if (hasClassName(an[i], 'modal-launch') || hasClassName(an[i], 'modal-close')){
				sniffModal(an[i]);
			}else if (sniffStatus.pagetitle == false && lcNodeName == 'div' && (hasClassName(an[i],'pagetitle') || hasClassName(an[i],'smallpagetitle')) && !hasClassName(document.body,'a0v3')){
				sniffStatus.pagetitle = true; sniffSharePage(an[i]);
			}else if (lcNodeName == 'input' && hasClassName(an[i], 'autoclear')){
				sniffAutoclear(an[i]);
			}else if (lcNodeName == 'img' && hasClassName(an[i], 'spriteswap')){
				sniffSpriteSwap(an[i]);
			}else if (lcNodeName == 'div' && hasClassName(an[i], 'g27w2')){
				sniffG27(an[i]);
			}else if (lcNodeName == 'div' && hasClassName(an[i], 'imgbox')){
				sniffImgbox(an[i]);
			}else if (lcNodeName == 'ul' && hasClassName(an[i], 'selectTabs')){
				sniffSelectTab(an[i]);
			}else if (sniffStatus.a1 == false && lcNodeName == 'div' && hasClassName(an[i], 'a1r2')){
				sniffStatus.a1 = true; sniffA1(an[i]);
			}else if (lcNodeName == 'select' && hasClassName(an[i], 'goto') || lcNodeName == 'select' && hasClassName(an[i], 'showDiv')){
				sniffGoto(an[i]);
			}else if (lcNodeName == 'ul' && hasClassName(an[i], 'goto') || lcNodeName == 'ul' && hasClassName(an[i], 'showDiv')){
				sniffGotoUL(an[i]);
			}else if (hasClassName(an[i], 'xfadefirst')){
				sniffXfade(an[i]);
			}else if (lcNodeName == 'ul' && hasClassName(an[i], 'listfade')){
				sniffListfade(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], 'loadUrl') && an[i].href){
				sniffLoadUrl(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], 'popup') || lcNodeName == 'area' && hasClassName(an[i], 'popup')){
				sniffPopUp(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], 'imgswap') || lcNodeName == 'area' && hasClassName(an[i], 'imgswap') || lcNodeName == 'img' && hasClassName(an[i], 'imgswap') || lcNodeName == 'span' && hasClassName(an[i], 'imgswap')){
				sniffImgswap(an[i]);
			}else if ((lcNodeName == 'a' || lcNodeName == 'area' || lcNodeName == 'span' || lcNodeName == 'img') && an[i].className.indexOf('mswap') > -1 ){
				sniffMultiswap(an[i]);
			}else if (lcNodeName == 'img' && hasClassName(an[i], 'postload')){
				imgpostload.push(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], 'toggleObj') || lcNodeName == 'area' && hasClassName(an[i], 'toggleObj')){
				sniffToggler(an[i]);
			}else if (lcNodeName == 'a' && hasClassName(an[i], "toggle-all-table-checkboxes")){
				sniffToggleAllCheckboxesInTable(an[i]);
			}else if (lcNodeName == 'div' && hasClassName(an[i], "pc1collapsible")){
				sniffExpandCollapsePc1(an[i]);
			}else if (lcNodeName == 'form' && an[i].className.indexOf('wgform-') > -1){
				sniffFormHijax(an[i]);
			}else if (lcNodeName == 'a' && an[i].className.indexOf('hijax-') > -1 || lcNodeName == 'span' && an[i].className.indexOf('hijax-') > -1 || lcNodeName == 'ul' && an[i].className.indexOf('hijax-') > -1){
				sniffLinkHijax(an[i]);
			}else if (lcNodeName == 'span' && hasClassName(an[i],'site-select')){
				sniffSiteSelector(an[i]);
			}else if ((lcNodeName == 'a' || lcNodeName == 'area') && hasClassName(an[i],'k5')){
				sniffK5(an[i]);
			}
			if (typeof widgets != 'undefined') {
				if (hasClassName(an[i], 'wg1')){
					sniffWg1(an[i]);
				}
			}
		}
	}
	for (var imp=0;imp<imgpostload.length;imp++){
		if(imgpostload[imp].title){
			imgpostload[imp].src = imgpostload[imp].title;
			imgpostload[imp].title = "";
		}
	}
}

// CAPTURE CLICKS AT BODY LEVEL W/ BUBBLING
function catchBodyClicks() {
	if (document.body) {
		addEvent(document.body,'click',function(e){
			if (!e) var e = window.event;
			if (e.target) { var targ = e.target; }
			else if (e.srcElement) { var targ = e.srcElement; }
			if (targ.nodeType == 3) { targ = targ.parentNode; } // we don't need no stinkin' text nodes
			if (typeof bodyClickHandlers != 'undefined') {
				selectors:for (sel in bodyClickHandlers) {
					var el = targ;
					var tries = 0;
					while (el.nodeType == 1) {
						try { if (elementMatchesSelector(el, sel)) { bodyClickHandlers[sel](el, e); break; } }
						catch (e) { continue selectors; }
						if (!el.parentNode || tries > 20) { break; }
						el = el.parentNode;
						tries++;
					}
				}
			}
		});
	} else {
		window.setTimeout('catchBodyClicks()',100);
	}
}
catchBodyClicks();
window.bodyClickHandlers = {};

// MATCHES AN ELEMENT AGAINST A MULTI-PART CSS-LIKE SELECTOR
// SELECTOR EXAMPLE: html > body div#foo + div.bar > a
// USE: window.bodyClickHandlers['div.foo > a'] = function(clickedElement, event){...}
function elementMatchesSelector(el, sel) {
	sel = sel.replace(/\+/g, ' + ');
	sel = sel.replace(/>/g, ' > ');
	sel = sel.replace(/\s\s+/g, ' ');
	var itms = sel.split(/\s+/);
	var itm = itms.pop();
	if (!elementMatchesSelectorItem(el, itm)) { return false; }
	items:while (itms.length > 0) {
		itm = itms.pop();
		if (itm == '>') {
			el = el.parentNode;
			if (!elementMatchesSelectorItem(el, itms.pop())) { return false; }
		}
		else if (itm == '+') {
			el = el.previousSibling;
			while (el && el.nodeType != 1) { el = el.previousSibling; }
			if (!elementMatchesSelectorItem(el, itms.pop())) { return false; }
		}
		else while (true) {
			el = el.parentNode;
			if (!el || el.nodeType != 1) { return false; }
			if (elementMatchesSelectorItem(el, itm)) { continue items; }
		}
	}
	return true;
}

// MATCHES AN ELEMENT AGAINST A SINGLE PART CSS-LIKE SELECTOR
// EXAMPLE: a.foo#bar
function elementMatchesSelectorItem(el, sel) {
	if (!el) { throw 'el is null'; }
	if (el.nodeType != 1) { throw el+' is not an element node'; }
	var origSel = sel;
	var tagNameMatches = sel.match(/^([a-zA-Z_][a-zA-Z0-9_-]*)/);
	var tagName = '*';
	if (tagNameMatches) {
		tagName = tagNameMatches[1];
		sel = sel.replace(tagNameMatches[1],'');
	}
	var idMatches = sel.match(/(#([a-zA-Z0-9_-]+))/);
	var id = '';
	if (idMatches) {
		id = idMatches[2];
		sel = sel.replace(idMatches[1],'');
	}
	var classNameMatches = sel.match(/(\.([a-zA-Z0-9_-]+))/);
	var className = '';
	if (classNameMatches) {
		className = classNameMatches[2];
		sel = sel.replace(classNameMatches[1],'');
	}
	if (sel) { throw 'could not parse '+origSel; }
	if (tagName != '*' && el.nodeName.toLowerCase() != tagName) { return false; }
	if (id && el.id != id) { return false; }
	if (className && !hasClassName(el, className)) { return false; }
	return true;
}

//GET PARENT
function hasParent(obj,tag,classname){
	var parent = obj;
	if(classname){
		while (parent = parent.parentNode) {
			if (parent.nodeName.toLowerCase() == tag && hasClassName(parent,classname) || tag == "*" && hasClassName(parent,classname)){
				return parent;
			}
		}
	}else{
		while (parent = parent.parentNode) {
			if (parent.id == tag){
				return parent;
			}
		}
	}
}


// ADD PREPSUNPAGE ONLOAD
if (is.docom){
	if (window.attachEvent){
		window.attachEvent('onload',prepSunPage);
	}else if (is.gecko){
		window.addEventListener('DOMContentLoaded',prepSunPage,false);
	}else if (window.addEventListener){
		window.addEventListener('load',prepSunPage,false);
	}else if (is.iemac){
		document.onreadystatechange = function(){if (document.readyState == "interactive"){prepSunPage()}};
	}
}

// ADD ONRESIZE EVENTS
function addOnresizeEvent(func){
  var oldrsize = window.onresize;
  if (typeof window.onresize != 'function'){
	window.onresize = func;
  }else {
	window.onresize = function(){
	  oldrsize();
	  func();
	}
  }
}

// ADD CLASSES TO OBJECTS
function addClassName(element, className){
	if (hasClassName(element, className)) { return false; }
	if (!element.className) { element.className = className; }
	else { element.className += ' '+className; }
	return true;
}

// REMOVE CLASSES FROM OBJECTS
function removeClassName(element, className){
	if (!hasClassName(element, className)) { return false; }
	var classNames = element.className.split(' ');
	var newClassNames = [];
	for (var a=0; a<classNames.length; a++){
		if (classNames[a] != className) { newClassNames[newClassNames.length] = classNames[a]; }
	}
	element.className = newClassNames.join(' ');
	return true;
}

// TEST FOR CLASS NAME
function hasClassName(element, className){
	var exp = new RegExp("(^|\\s)"+className+"($|\\s)");
	return (element.className && exp.exec(element.className))?true:false;
}

// TEST FOR CLASS NAME BY PATTERN
function matchClassName(element, pattern){
	var classNames = element.className.split(' ');
	for (var a=0; a<classNames.length; a++){
		var matches = classNames[a].match(pattern);
		if (matches) { return matches; }
	}
	return null;
}

// GET ELEMENTS BY CLASS NAME
function getElementsByClassName(node, className){
	var results = [];
	var els = node.getElementsByTagName("*");
	var len=els.length;
	for(var a=0; a<len; a++){
		if(hasClassName(els[a], className)){
			results.push(els[a]);
		}
	}
	return results;
}

// GET FULL CLASS NAME FROM PARTIAL STRING
function getClassContains(obj,subst){
	var rcl = false;
	var cls = obj.className.split(' ');
	for (var v=0;v<cls.length;v++){
		if (cls[v].indexOf(subst) > -1){
			rcl = cls[v]; 
		}
	}
	return rcl;
}

// GET CHILD NODES VIA TAG NAME
function getChildNodesByTagName(el, tagName){
	var cn = el.childNodes;
	var nd = new Array();
	for (var n=0;n<cn.length;n++){
		if(tagName == cn[n].nodeName.toLowerCase()){
			nd.push(cn[n]);
		}
	}
	return nd;
}

// IS OBJECT AN ARRAY
function isArray(obj){
	return obj && typeof obj.unshift != 'undefined';
}

// SHORTCUT FOR BUILDING ELEMENTS
function elem(name, atts, content) {
	// name: a tag name, with optional class or id: 'div', 'div.foo', 'div#bar', 'div.foo#bar', 'div#bar.foo'
	// atts: optional. object where keys=attribute names, values=attribute values: {'href':'page.html','target':'_blank'}
	// content: optional. either a string, or an element, or an arry of strings or elements
	if (name.indexOf('.') + name.indexOf('#') > -2) {
	var className = (name.indexOf('.') > -1) ? name.replace(/^.*\.([^\.#]*).*$/,"$1") : "";
		var id = (name.indexOf('#') > -1) ? name.replace(/^.*#([^\.#]*).*$/,"$1") : "";
		name = name.replace(/^([^\.#]*).*$/,'$1');
	}
	var e = document.createElement(name);
	if (className) { e.className = className; }
	if (id) { e.id = id; }
	if (atts) {
		for (key in atts) {
			// setAttribute() has shaky support, try direct methods first
			if (key == 'class') { e.className = atts[key]; }
			else if (key == 'id') { e.id = atts[key]; }
			else if (key == 'href') { e.href = atts[key]; }
			else if (key == 'action') { e.action = atts[key]; }
			else if (key == 'method') { e.method = atts[key]; }
			else if (key == 'title') { e.title = atts[key]; }
			else if (key == 'alt') { e.alt = atts[key]; }
			else if (key == 'border') { e.border = atts[key]; }
			else if (key == 'caption') { e.caption = atts[key]; }
			else if (key == 'cellspacing') { e.cellspacing = atts[key]; }
			else if (key == 'for') { e.htmlFor = atts[key]; }
			else { e.setAttribute(key, atts[key]); }
		}
	}
	if (content) {
		if (!isArray(content)) { // it's not an array
			content = [content];
		}
		for (var a=0; a<content.length; a++) {
			if (typeof content[a] == 'string') {
				e.appendChild(document.createTextNode(content[a]));
			} else {
				e.appendChild(content[a]);
			}
		}
	}
	if (name.toLowerCase() == 'img' && !e.alt) { e.alt = ''; }
	return e;
}

// GRAB JUST THE TEXTUAL DATA OF AN ELEMENT
function elemText(el) {
	// <a id="foo" href="page.html">click <b>here</b></a>
	// elemText(document.getElementById('foo')) == "click here"
	// warning: recurses through *all* descendants of el
	var chlds = el.childNodes;
	var result = '';
	for (var a=0; a<chlds.length; a++) {
		if (3 == chlds[a].nodeType) {
			result += chlds[a].data;
		} else if (1 == chlds[a].nodeType) {
			if (chlds[a].nodeName.toLowerCase() == 'img') { result += chlds[a].alt; }
			else { result += elemText(chlds[a]); }
		}
	}
	return result;
}

// FIND PREVIOUS ELEMENT
function prevElem(el) {
	var prev = el.previousSibling;
	for (var a=0; a<1000; a++) {
		if (!prev) { return null; }
		if (prev.nodeType==1) { return prev; }
		prev = prev.previousSibling;
	}
	throw "couldn't find previous sibling";
}

// FIND NEXT ELEMENT
function nextElem(el) {
	var next = el.nextSibling;
	for (var a=0; a<1000; a++) {
		if (!next) { return null; }
		if (next.nodeType==1) { return next; }
		next = next.nextSibling;
	}
	throw "couldn't find next sibling";
}

// SET OPACITY
function setopacity(id_or_obj,opac){
	if (document.getElementById(id_or_obj)){
		var oobj = document.getElementById(id_or_obj);
	}else if(id_or_obj){
		var oobj = id_or_obj;
	}
	if (oobj){
		if (document.all && !is.op){
			oobj.filters.alpha.opacity = opac * 100;
		}else{
			oobj.style.MozOpacity = opac;
			oobj.style.opacity = opac;
		}
	}
}


/*
	AddEvent()
	See <http://www.dustindiaz.com/rock-solid-addevent/> for more information.
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

//ADD EVENT
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}else{
		obj["on"+type] = obj["e"+type+fn];
	}
}

/*
	EventCache Version 1.0
	Copyright 2005 Mark Wubben
	Provides a way for automagically removing events from nodes and thus preventing memory leakage.
	See <http://novemberborn.net/javascript/event-cache> for more information.
	This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/

//EVENT CACHE
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

addEvent(window,'unload',EventCache.flush);

// SNIFF -> SPRITE SWAP
function sniffSpriteSwap(fobj){
	fobj.onmouseout = function(){
		fobj.style.left = 0+'px';
	};
	fobj.onmouseover = function(){
		fobj.style.left = (fobj.width)/2 * -1 +'px';
	};
}

// SNIFF -> CROSSFADER
var xfade = new Array();
var xfadeObj = new Array();
var xfadeLoop = new Array();
var xfadeStop = new Array();

function sniffXfade(fobj){
	if ((fobj.id.substring((fobj.id.length - 1),fobj.id.length) * 1) == 1){
		var transparent = false;
		var bgforie;
		var pause = 10000;
		var id =  fobj.id.substring(0,(fobj.id.length - 1));
		var cls = fobj.className.split(' ');
		for (var v=0;v<cls.length;v++){
			if (cls[v].indexOf("pause") == 0){
				pause = cls[v].replace(/pause(.*)$/,"$1");
				pause = pause * 1000;
			}else if (cls[v].indexOf("transparent") == 0){
				transparent = true;
			}else if (cls[v].indexOf(".jpg") == 0 || cls[v].indexOf(".gif") == 0){
				bgforie = cls[v];
			}
		}
		var xf = 1;
		while (document.getElementById(id+xf)){
			xfadeObj[id+xf] = new Array(document.getElementById(id+xf),0);
			xfadeObj[id+xf][0].onmouseover = function(){if(xfadeStop[id][0] != -1){xfadeStop[id][0] = 0;}}
			xfadeObj[id+xf][0].onmouseout  = function(){if(xfadeStop[id][0] != -1){xfadeStop[id][0] = 1;}}
			// transparent obj
			if (transparent){
				if (is.oldmoz){
					setopacity(xfadeObj[id+xf][0],1);
					xfadeObj[id+xf][0].style.visibility = "hidden";
				}
				if (bgforie && is.iewin){
					xfadeObj[id+xf][0].style.backgroundImage = 'url('+bgforie+')';
				}
				if (is.oldmoz && xf == 1){
					xfadeObj[id+xf][0].style.visibility = "visible";
				}
			}
			xf++;
		}
		xf--;
		xfade[id] = new Array(xf,1,pause);
		if (document.getElementById(id+'Total')){
			document.getElementById(id+'Total').innerHTML = xf;
		}
		if (document.getElementById(id+'Back')){
			document.getElementById(id+'Back').onclick = function(){
				xfadeStop[id] = new Array(-1,-1);
				clearTimeout(xfadeLoop[id]);
				xfader(id);
				return false;
			};
		}
		if (document.getElementById(id+'Next')){
			document.getElementById(id+'Next').onclick = function(){
				xfadeStop[id] = new Array(-1,1);
				clearTimeout(xfadeLoop[id]);
				xfader(id);
				return false;
			};
		}
		xfadeStop[id] = new Array(1,1);
		xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',pause);
	}
}

// CROSSFADER
function xfader(id){
	// define this/next frame
	var nx = xfade[id][1] + xfadeStop[id][1];
	if(nx > xfade[id][0]){
		nx = 1;
	}
	if(nx < 1){
		nx = xfade[id][0];
	}
	var stillfading = false;
	if (xfadeStop[id][0] == 0 && xfadeObj[id+nx][1] != 0){
		var stillfading = true;
	}
	var ox = xfade[id][1];
	if (xfadeObj[id+ox][1] == 0){
		xfadeObj[id+ox][1] = 1;
	}
	if (xfadeStop[id][0] != 0 || stillfading){
		// set up objects
		if (xfadeObj[id+nx][1] == 0){
			if (!is.oldmoz){
				setopacity(xfadeObj[id+nx][0],.1);
			}
			xfadeObj[id+nx][0].style.visibility = "visible";
			xfadeObj[id+ox][0].style.zIndex = 2;
			xfadeObj[id+nx][0].style.zIndex = 10;
		}
		// if skip to next
		if (xfadeStop[id][0] == -1){
			xfadeObj[id+nx][1] = 1;
		}else{
			if (is.safari || is.oldmoz || is.ns6 || is.iemac){
				xfadeObj[id+nx][1] = 1;
			}else{
				xfadeObj[id+nx][1] = xfadeObj[id+nx][1] + .2;
			}
		}

		// set opac
		if (is.anymoz && xfadeObj[id+nx][1] == 1){
			if (!is.oldmoz){
				setopacity(xfadeObj[id+nx][0],.99);
			}
		}else{
			setopacity(xfadeObj[id+nx][0],xfadeObj[id+nx][1]);
		}
		// if fading else, complete and pause
		if (xfadeObj[id+nx][1] < 1){
			setTimeout('xfader(\''+id+'\')',120);
		}else{
			xfade[id][1] = nx;
			xfadeObj[id+ox][0].style.visibility = "hidden";
			xfadeObj[id+ox][1] = 0;
			if (document.getElementById(id+'This')){
				document.getElementById(id+'This').innerHTML = nx;
			}
			if (xfadeStop[id][0] != 0){
				xfadeStop[id] = new Array(1,1);
				xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',xfade[id][2]);
			}
		}
	}
	// if paused
	if(xfadeStop[id][0] == 0){
		clearTimeout(xfadeLoop[id]);
		xfadeLoop[id] = setTimeout('xfader(\''+id+'\')',200);
	}
}


// SNIFF -> TICKER
function sniffTicker(fobj){
	fobj.omni = fobj.innerHTML;
	fobj.onclick = function(){
		s_linkType='o';
		s_linkName='ticker';
		s_prop15=s_pageName;
		s_prop16=this.omni;
		s_lnk=s_co(this);
		s_gs(s_account);
	};
}

// SNIFF -> G23
function sniffG23(fobj){
	var uls = fobj.getElementsByTagName('ul');
	for (var a=0;a<uls.length;a++){
		if (hasClassName(uls[a], 'g23tree')){
			var tree = uls[a];
			var lis = tree.getElementsByTagName('li');
			for (var b=0;b<lis.length;b++){
				var li = lis[b];
				var isDefaultExpanded = hasClassName(li, 'default-expanded');
				var isBranch = false;
				if (li.getElementsByTagName('ul').length>0){
					// it's a branch if there's a nested <ul>
					if (isDefaultExpanded) { addClassName(li, 'branch'); }
					else { addClassName(li, 'collapsed branch'); }
					isBranch = true;
				}
				var isLast = true;
				if (li.nextSibling){
					if (li.nextSibling.nodeType == 1) { isLast = false; }
					else if (li.nextSibling.nextSibling && li.nextSibling.nextSibling.nodeType == 1) { isLast = false; }
				}
				if (isLast) { addClassName(li, 'last'); }
				if (is.ie6) { li.isLast = isLast; li.isBranch = isBranch; }
				if (is.ie6 && li.isLast && li.isBranch && isDefaultExpanded) { addClassName(li, 'ie-expanded-last'); }
				else if (is.ie6 && li.isLast && li.isBranch && !isDefaultExpanded) { addClassName(li, 'ie-collapsed-last'); }
				if (isBranch){
					// build the expand/collapse button
					var link = document.createElement('a');
					link.className = 'g23toggler';
					var linkContent = document.createElement('img');
					linkContent.src = '/im/a.gif';
					linkContent.height = '10';
					linkContent.width = '20';
					linkContent.alt = 'expand / collapse ';
					link.appendChild(linkContent);
					link.onclick = function(){
						if (!hasClassName(this.parentNode, 'collapsed')){
							addClassName(this.parentNode, 'collapsed');
							if (is.ie6 && this.parentNode.isLast && this.parentNode.isBranch){
								addClassName(this.parentNode, 'ie-collapsed-last');
								removeClassName(this.parentNode, 'ie-expanded-last');
							}
						}else {
							removeClassName(this.parentNode, 'collapsed');
							if (is.ie6 && this.parentNode.isLast && this.parentNode.isBranch){
								removeClassName(this.parentNode, 'ie-collapsed-last');
								addClassName(this.parentNode, 'ie-expanded-last');
							}
						}
					};
					li.insertBefore(link, li.firstChild);
					if (hasClassName(tree, 'g23check-tree')){
						// build the indicator of how many children are checked
						var countSpan = document.createElement('span');
						countSpan.className = 'g23checked-count';
						for (var c=0;c<li.childNodes.length;c++){
							if (li.childNodes[c].nodeName.toLowerCase()=='ul') { li.sublist = li.childNodes[c]; }
							if (hasClassName(li.childNodes[c], 'g23item-extra-info')) { li.extraInfo = li.childNodes[c]; }
						}
						if (li.extraInfo) { li.insertBefore(countSpan, li.extraInfo); }
						else if (li.sublist) { li.insertBefore(countSpan, li.sublist); }
						li.countSpan = countSpan;
						countSpan.appendChild(document.createTextNode(' ')); // space, rather than empty string, for safari
						if (window.opera) { countSpan.innerHTML = '&nbsp;'; } // tickle opera!
						li.updateCount = function(){
							var count = 0;
							var inputs = this.sublist.getElementsByTagName('input');
							for (var b=0; b<inputs.length; b++){
								if (inputs[b].type != 'checkbox') { continue; }
								if (inputs[b].checked) { count++; }
							}
							inputs = null;
							if (this.countSpan){
								if (count  < 1) { this.countSpan.firstChild.data = ' '; if (window.opera) { this.countSpan.innerHTML = '&nbsp;'; } } // safari space, tickle opera
								if (count == 1) { this.countSpan.firstChild.data = '(1 checked item not shown)'; }
								if (count  > 1) { this.countSpan.firstChild.data = '('+count+' checked items not shown)'; }
							}
						}
					}
				}
				li = null;
			}
			if (hasClassName(tree, 'g23check-tree')){
				var inputs = tree.getElementsByTagName('input');
				for (var b=0; b<inputs.length; b++){
					if (inputs[b].type != 'checkbox') { continue; }
					if (inputs[b].parentNode.nodeName.toLowerCase() == 'li') { inputs[b].parentNode.checkBox = inputs[b]; }
					inputs[b].onclick = function(){
						var parent = this.parentNode;
						if (parent.nodeName.toLowerCase()=='li'){
							var subinputs = parent.getElementsByTagName('input');
							for (var c=0;c<subinputs.length;c++){
								subinputs[c].checked = this.checked;
							}
							var subitems = parent.getElementsByTagName('li');
							for (var c=0;c<subitems.length;c++){
								if (typeof subitems[c].updateCount == 'function') { subitems[c].updateCount(); }
							}
							if (!this.checked){
								parent = this;
								while (parent.parentNode){
									parent = parent.parentNode;
									if (parent.checkBox) { parent.checkBox.checked = false; }
								}
							}else if (parent.parentNode.parentNode.checkBox){
								subinputs = parent.parentNode.parentNode.getElementsByTagName('input');
								var allChecked = true;
								for (var c=0;c<subinputs.length;c++){
									if (subinputs[c].type != 'checkbox') { continue; }
									if (subinputs[c] != parent.parentNode.parentNode.checkBox && !subinputs[c].checked) { allChecked = false; }
								}
								parent.parentNode.parentNode.checkBox.checked = allChecked;
							}
						}
						parent = this;
						while (parent.parentNode){
							parent = parent.parentNode;
							if (typeof parent.updateCount == 'function') { parent.updateCount(); }
						}
						parent = null;
					}
				}
				if (location.hash){
					var target = location.hash.substring(1);
					for (var b=0;b<lis.length;b++){
						var li = lis[b];
						if (li.id == target){
							var inputs = li.getElementsByTagName('input');
							for (var c=0; c<inputs.length; c++){
								if (inputs[c].type != 'checkbox') { continue; }
								inputs[c].checked = true;
							}
							var el = li;
							while (el.parentNode && !hasClassName(el, 'g23tree')){
								if (el.nodeName.toLowerCase() == 'li' && hasClassName(el, 'branch')){
									removeClassName(el, 'collapsed');
									if (is.ie6 && el.isLast && el.isBranch){
										removeClassName(el, 'ie-collapsed-last');
										addClassName(el, 'ie-expanded-last');
									}
								}
								el = el.parentNode;
							}
							var subitems = li.getElementsByTagName('li');
							for (var c=0;c<subitems.length;c++){
								if (hasClassName(subitems[c], 'branch')){
									removeClassName(subitems[c], 'collapsed');
									if (is.ie6 && subitems[c].isLast && subitems[c].isBranch){
										removeClassName(subitems[c], 'ie-collapsed-last');
										addClassName(subitems[c], 'ie-expanded-last');
									}
								}
							}
							inputs = null;
							el = null;
						}
					}
				}
				for (var b=0;b<lis.length;b++){
					var li = lis[b];
					if (typeof li.updateCount == 'function') { li.updateCount(); }
					li = null;
				}
			}
			tree = null;
		}
	}
}

// SNIFF -> MEDIA SHELL
function sniffMedia(fobj){
	if (fobj.className.search('[0-9]+x[0-9]+') == -1){
		addClassName(fobj,'662x652');
	}
	addClassName(fobj,'popup yes_000000 name-_media_window');
	sniffPopUp(fobj);
}

// SNIFF -> MODAL POP UPS
function sniffModal(fobj){
	if (hasClassName(fobj, "modal-launch")){
		var matches = fobj.className.match(/launch\-id\-([a-z0-9_-]+)/);
		if (!matches) { return; }else { fobj.modalId = matches[1]; }
		fobj.onclick = function(e){
			showK4(this.modalId);
			return false;
		};
	}else{
		fobj.onclick = function(e){
			var k4 = this.parentNode;
			while (!hasClassName(k4, 'k4') && k4.parentNode) { k4 = k4.parentNode; }
			if (hasClassName(k4, 'k4') && k4.id) { hideK4(k4.id); }
			return false;
		};
	}
}

// SNIFF -> AUTOCLEAR
function sniffAutoclear(fobj){
	addEvent(fobj,"focus",function(e){
		if(this.value == this.defaultValue){
			this.value='';
		};
	});
	addEvent(fobj,"blur",function(e){
		if(this.value==''){
			this.value = this.defaultValue;
		}
	});
}

// SNIFF -> ROLLOVERS
function sniffRollover(fobj){
	fobj.rsrc = fobj.src;
	preloaderOff[fobj.rsrc] = new Image();
	preloaderOff[fobj.rsrc].src = fobj.rsrc;
	if (hasClassName(fobj, "rollover")){
	  preloaderOn[fobj.rsrc] = new Image();
	  preloaderOn[fobj.rsrc].src = fobj.src.replace(/_off\./,"_on.");
	  fobj.onmouseout = function(){
		  if (activeImg[this.imgGroup] != this){
			  this.src = preloaderOff[this.rsrc].src
		  }
	  };
		fobj.onmouseover = function(){
			if (activeImg[this.imgGroup] != this){
				this.src = preloaderOn[this.rsrc].src
			}
		};
	}
	if (fobj.className.indexOf("active-") > -1){
	  fobj.imgGroup = fobj.className;
	  fobj.imgGroup = fobj.imgGroup.replace(/.*active-(.*).*/,"$1");
	  preloaderActive[fobj.rsrc] = new Image();
	  preloaderActive[fobj.rsrc].src = fobj.src.replace(/_off\./,"_active.");
	  if (fobj.className.indexOf("setactive-") > -1){
		  activeImg[fobj.imgGroup] = fobj;
		  fobj.src = preloaderActive[fobj.rsrc].src;
	  }
	  fobj.onclick = function(){
			if (this.src != preloaderActive[this.rsrc].src){
				this.src = preloaderActive[this.rsrc].src;
				if (activeImg[this.imgGroup]){
					activeImg[this.imgGroup].src = preloaderOff[activeImg[this.imgGroup].rsrc].src;
				}
				activeImg[this.imgGroup] = this;
			}
		};
	}
}


