/*	Copyright (c) ???? Macromedia Inc.
	Dynamic UI Javascript (in development)
	$Revision: 1.14 $
*/
function collectTagsAtNode(node, tag)
{
return node.getElementsByTagName(tag);
}
function getNodeWithAttrValue(node, attr, value)
{
var rgx = new RegExp('\\b'+value);
try
{
if(node[attr].search(rgx) > -1) return node;
}
catch(err)
{
try
{
if(node.getAttribute(attr).search(rgx) > -1) return node;
}
catch(err)
{
return null;
}
}
return null;
}
function loopNodesAtNodeForNameWithAttrValue(node, name, attr, value)
{
var i, keeper,
result = new Array();
for(i=0;i<node.childNodes.length;i++)
{
if(node.childNodes[i].nodeName==name)
{
keeper = getNodeWithAttrValue(node.childNodes[i], attr, value);
if(keeper) result[result.length] = keeper;
}
}
return result;
}
function loopTagsAtNodeForTagsWithAttrValue(node, tag, attr, value)
{
var i, tags, keeper,
result = new Array();
if(typeof tag=='object' && tag.length)
{
var group = new Array();
for(i=0;i<tag.length;i++)
{
keeper = collectTagsAtNode(node, tag[i]);
if(keeper) group[group.length] = keeper;
}
tags = group;
}
else
{
tags = collectTagsAtNode(node, tag);
}
for(i=0; i<tags.length;i++)
{
keeper=getNodeWithAttrValue(tags[i], attr, value)
if(keeper) result[result.length] = keeper;
}
return result;
}
function loopNodesForAttrValue(nodes, attr, value, request, count)
{
var i, 
keeper, 
result = new Array();
for(i=0;i<nodes.length;i++)
{
keeper = getNodeWithAttrValue(nodes[i], attr, value);
if(keeper) result[result.length] = keeper;
}
return result;
}
function makeLink(elem, href)
{
if(!elem.getAttribute('href')) elem.setAttribute('href', href);
return href;
}
function nixLink(elem)
{
var href = elem.getAttribute('href');
if(href) elem.removeAttribute('href');
return href;
}
function enableJSCSS(str)
{
try
{
if(document.body.className.indexOf(str) == -1)
{
document.body.className=((document.body.className)) ? " "+str : str;
return str;
}
return str
}
catch( err )
{
document.body.className=str;
return str;
}
return err;
}
var dynui = new Object();
dynui['init'] = function()
{
var jscss = enableJSCSS("js");
var i, r, content, reference, tabs, navs;
var referenceNodes = new Array();
var contentNodes = new Array();
tabs = loopTagsAtNodeForTagsWithAttrValue(document, 'DIV', 'className', 'd-tabsection'); 
for(i=0;i<tabs.length;i++)
{
contentNodes[i] = loopNodesAtNodeForNameWithAttrValue(tabs[i], 'DIV', 'className', 'navTarget');
navs = loopNodesAtNodeForNameWithAttrValue(tabs[i], 'UL', 'className', 'nav');
referenceNodes[i] = loopTagsAtNodeForTagsWithAttrValue(navs[0], 'A', 'className', 'navLabel');
for(r=0;r<referenceNodes[i].length;r++) 
{
reference = referenceNodes[i][r];
reference['referto'] = i;
reference['state'] = null;
reference['href_cue'] = null;
reference.onclick = dynui.doTabEvent;
content = contentNodes[i][r];
content['css_cue'] = content.className;
}
}
if(referenceNodes.length > 0)
{
dynui['dtabs'] = new ViewSwitch();
dynui.dtabs.referenceNodes = referenceNodes;
dynui.dtabs.contentNodes = contentNodes;
dynui.dtabs.init(0);
}
var linkaccents = buildAccentReferencesAtNode(document, 'A', 'rel', 'd-accent');
var areaaccents = buildAccentReferencesAtNode(document, 'AREA', 'rel', 'd-accent');	
}
dynui['doTabEvent'] = function(evt)
{
evt = (evt) ? evt : event;
var elem = ( evt.srcElement ) ? evt.srcElement : evt.target;
if(elem.nodeType == 3) { elem = elem.parentNode }
if( elem ) 
{
return (this.state=='on') ? false : dynui.dtabs.doSwitch(elem, elem.referto);
}
}
function buildAccentReferencesAtNode(node, elem, attr, value)
{
var elemattr;
var referenceNodes = loopTagsAtNodeForTagsWithAttrValue(node, elem, attr, value);
for(i=0;i<referenceNodes.length;i++)
{
try
{
elemattr = referenceNodes[i].getAttribute(attr);
}
catch(err)
{
try
{
elemattr = referenceNodes[i][attr];
}
catch(e)
{
elemattr = null;
}
}
if(elemattr==null) continue;
var pos = elemattr.indexOf(value);
var str = elemattr.substring(pos+value.length+1);
var arr = str.split(' ');
for(r=0;r<arr.length;r++)
{
arr[r] = document.getElementById(arr[r].substring(1));
}
referenceNodes[i]['hovers'] = arr;
referenceNodes[i].onmouseover = function(evt)
{
dAccentEvent(evt);
}
referenceNodes[i].onmouseout = function(evt)
{
dAccentEvent(evt);
}
}
return referenceNodes;
}
function dAccentEvent(evt)
{
evt = (evt) ? evt : event;
var elem = ( evt.srcElement ) ? evt.srcElement : evt.target;
if(elem.nodeType == 3) { elem = elem.parentNode }
if( elem ) 
{
switch(evt.type)
{
case "mouseover":
state="on";
break;
case "mouseout":
state="";
break;
}
for(var i=0;i<elem.hovers.length;i++)
{
elem.hovers[i].className=state;
}
}
}
ViewSwitch = function()
{
this.referenceNodes;
this.contentNodes;
}
ViewSwitch.prototype.init = function(state)
{
var i, record;
for(record=0;record<this.referenceNodes.length;record++)
{
this.doSwitch(this.referenceNodes[record][state], record);
}
}
ViewSwitch.prototype.init_tab = function( tabindex, tabselect )
{
this.doSwitch(this.referenceNodes[tabindex][tabselect], tabindex);
}
ViewSwitch.prototype.doSwitch = function(requestor, record)
{
var i, reference, content;
for(i=0;i<this.referenceNodes[record].length;i++)
{
reference = this.referenceNodes[record][i];
content = this.contentNodes[record][i];
if(requestor == reference)
{
reference.href_cue = nixLink(reference);
reference.state="on";
}
else
{
if(reference.state=="on") makeLink(reference, reference.href_cue);
reference.state="off";
}
reference.parentNode.className=reference.state;
content.className = content.css_cue+((content.css_cue.length > 0) ? " " : "")+reference.state;
}	
return false;
}
registerOnLoadFunc( dynui.init );
