/*
hideable.js
(c) 1992-2005 Cisco Systems, Inc. All rights reserved. 
Terms and Conditions: http://cisco.com/en/US/swassets/sw293/sitewide_important_notices.html
*/	

// Trigger IDs
var triggerKey = new String ('hideable-id-trigger-');
var targetKey = new String ('hideable-id-target-');

// Generic CSS Strings
var cssTriggerActive = new String ('hideable-trigger-active');
var cssTriggerInactive = new String ('hideable-trigger');
var cssTargetActive = new String ('hideable-target-shown');
var cssTargetInactive = new String ('hideable-target-hidden');

var cssTriggerActiveStyle = new String ('color:#000;text-decoration:none;');

// Script Variables
var hideable_Initialized = false;
var hideable_Groups = new Array();

function hideable_debug(s) {
	// lets us leave debugging in.
	try {
		debug(s);
	} catch (error) {
		// do nothing;
	}
}

function hideable_DoClick(argTrigger) {
	if (!hideable_Initialized) {
		hideable_Init();
	}

	var trigger = argTrigger;
	hideable_debug("hideable_DoClick(): trigger = '" + trigger.id + "'");

	// determine the trigger's group and identifier (not html id.)
	var temp_sGroup = hideable_ParseGroup(trigger.id, triggerKey);
	var temp_sPairID = hideable_ParsePairID(trigger.id, triggerKey);
	
	// retrieve the group this trigger is in.
	thisGroup = hideable_GetGroup(temp_sGroup);
	hideable_debug("hideable_DoClick(): Corresponding target = '" + targetKey + temp_sGroup + "-" + temp_sPairID);
	
	// hide all target's in the triggers's group (including its own target)
	hideable_HideGroup(thisGroup);
	
	// show the clicked trigger's target
	target = document.getElementById(targetKey + temp_sGroup + "-" + temp_sPairID);
	if (target) {
		target.className = cssTargetActive;
	} else {
		hideable_debug("hideable_DoClick(): ERROR: Can't SHOW target for trigger: '" + trigger.id + "'");
	}
	trigger.className = cssTriggerActive;
	hideable_debug("");
	return false;
}

function hideable_HideGroup(group_pairs) {
	var set = group_pairs[1];
	
	for (i=0; i < set.length; i++) {
		set[i][0].className = cssTriggerInactive;
		if (set[i][1]) {
			set[i][1].className = cssTargetInactive;
		} else {
			hideable_debug("ERROR: Can't HIDE target for trigger: '" + set[i][0].id + "' it doesn't exist.");
		}
	}
	return;
}

function hideable_GetGroup(group) {
	var index = hideable_LookupGroup(group);
	if (index < 0) {
		group = new Array(group, new Array() );
		hideable_Groups.push(group);
	} else {
		group = hideable_Groups[index];
	}
	return group;
}

function hideable_LookupGroup(group) {
	var found;
	found = -1;
	for (i = 0; i < hideable_Groups.length; i++) {
		if (hideable_Groups[i][0] == group) {
			found = i;
		}
	}
	return found;
}

function hideable_InitNoScript() {
	document.writeln('<style>');
	document.writeln('.hideable-target-hidden{display:none;}');
	document.writeln('.hideable-noscript{display:none;}');
	document.writeln('.hideable-trigger-active{' +  cssTriggerActiveStyle + '}');
	document.writeln('.sitecopy .item .hideable-trigger-active{' +  cssTriggerActiveStyle + '}');
	document.writeln('</style>');
}

function hideable_ParseGroup(id, key) {
	var info = id.substr(key.length, id.length);
	var out = info.split("-")[0];
	return out;
}

function hideable_ParsePairID(id, key) {
	var info = id.substr(key.length, id.length);
	var out = info.split("-")[1];
	return out;
}

function hideable_InitConfig() {
	cssTriggerActiveStyle = (hideable_cfgCssTriggerActiveStyle) 
		? new String(hideable_cfgCssTriggerActiveStyle) : cssTriggerActiveStyle;
}

function hideable_Init(mode) {
	hideableTargets = new Array();
	hideableTriggers = new Array();
	hideable_Groups = new Array();

	var nTriggers = 0;
	var nTriggerErrors = 0;
	var group;
	var index;
	
	hideable_debug("hideable_Init:");
	hideable_debug("Finding Triggers:<br />");
	
	// run through the anchors looking for id's like our keys
	for (var i = 0; i < document.getElementsByTagName('a').length; i++) {
		var trigger = eval("document.getElementsByTagName('a')[" + i + "]");
		var triggerID = trigger.id;
		
		if (triggerID.indexOf(triggerKey) != -1) {
			// found a trigger
			hideable_debug("trigger found, id: '" + triggerID + "'");
			nTriggers++;

			// parse out it's group
			group = hideable_ParseGroup(triggerID, triggerKey);
			
			// parse out the index/identifer of the trigger
			// hideable-id-trigger-[group]-[index]
			// index can be a string.
			index = hideable_ParsePairID(triggerID, triggerKey);
			
			// retrieve the group from the list of groups.
			group_pairs = hideable_GetGroup(group);
			// hideable_debug("GetGroup returned: " + group_pairs[0]);

			// build the corresponding target string.
			targetID = targetKey + group + '-' + index;
			
			// get the target out of the DOM
			target = document.getElementById( targetID );
			if (!target) {
				// oops
				hideable_debug("ERROR: Hideable Trigger without Target: id: '" + triggerID + "'");
				nTriggerErrors++;
				group_pairs[1].push (new Array(trigger, null));
			} else {
				// add the trigger/target pair to the group list.
				hideable_debug("target found: " + target.id);
				group_pairs[1].push (new Array(trigger, target));
			}
			hideable_debug("");
		}
	}
	hideable_debug("Summary:");
	// build list of groups.
	s = '';
	for (i = 0; i < hideable_Groups.length; i++) {
		s += "'" + hideable_Groups[i][0] + "', ";
	}
	hideable_debug("Total Hideable Triggers: " + nTriggers + " / " + nTriggerErrors + " Error(s)");
	hideable_debug("Total Hideable Groups: " + hideable_Groups.length + ": " + s);
	hideable_debug("----");
	hideable_Initialized = true;
}
hideable_InitConfig();
hideable_InitNoScript();