// nanhua Office Javascript    http://www.nanhua.com
// Do not edit this file manually, use css_js_concatenate_alert.pl in data/scripts
//
// This is a dummy file for testing js include in prod30
//----------------------- DHTML functions --------------------------------------

function toggleTabs(groupID, toggleElemId)
{
	if (!document.getElementById) return false;

	var groupChildren = document.getElementById(groupID).childNodes;

	for ( var i = 0; i < groupChildren.length; ++i )
	{
		var child = groupChildren[i];

		if ( child.className == 'tab_container' )
		{
			var tabID   = child.id;
			var iconID  = 'icon_' + tabID;
			var labelID = 'label_' + tabID;

			var labelElem  = document.getElementById(labelID);
			var toggleElem = document.getElementById(tabID);

			if ( toggleElem )
			{
				if ( tabID == toggleElemId )
				{
					if ( toggleElem.style.display == 'none' )
					{
						if ( labelElem ) labelElem.className = 'on_tab_label';

						toggleIconedElem(toggleElem, iconID);
					}
				}
				else if ( toggleElem.style.display == 'block' )
				{
					if ( labelElem ) labelElem.className = 'off_tab_label';

					toggleIconedElem(toggleElem, iconID);
				}
			}
		}
	}

	return false;
}

function toggleTabLabel(iconElemId)
{
	if (!document.getElementById) return false;

	var iconElem = document.getElementById(iconElemId);

	if ( iconElem )
	{
		var iconElem = document.getElementById(iconElemId);
		var iconSrc  = iconElem ? iconElem.src : '';
		var iconRE   = /^([\w:\/\.\_\-]+)_(off|over)\.gif$/;
		var matches  = iconRE.exec(iconSrc);

		if ( matches && matches.length )
		{
			if ( matches[2] == 'off' )
			{
				iconElem.src = matches[1] + '_over.gif';
			}
			else // must be 'over'
			{
				iconElem.src = matches[1] + '_off.gif';
			}
		}
	}

	return false;
}

function sizeQuickPoll(quickPollId, quickPollHeight)
{
	if( document.getElementById && !document.all )
	{
		var theFrame = document.getElementById(quickPollId);

		theFrame.style.height = quickPollHeight + 'px';
	}
	else if( document.all )
	{
		var quickPoll = eval('document.all.'+quickPollId);

		quickPoll.style.height = quickPollHeight + 'px';
	}
	// else we are unable to do anything...
}

function hideQuickPoll(quickPollId)
{
	var quickPoll;

	if( document.getElementById && !document.all )
	{
		quickPoll = document.getElementById(quickPollId);
	}
	else if( document.all )
	{
		quickPoll = eval('document.all.'+quickPollId);
	}

	if (quickPoll) quickPoll.style.display = 'none';
}

function toggleIconedElem(toggleElem, iconElemId)
{
	var iconElem = document.getElementById(iconElemId);
	var iconSrc  = iconElem ? iconElem.src : '';
	var iconRE   = /^([\w:\/\.\_\-]+)_(off|on|over)\.gif$/;
	var matches  = iconRE.exec(iconSrc);

	if ( matches && matches.length == 3 )
	{
		iconElem.src = matches[1] + (toggleElem.style.display == 'none' ? '_on.gif' : '_off.gif');

		toggleElemDisplay(toggleElem);
	}

	return false;
}

function toggleElemDisplay(toggleElem)
{
	toggleElem.style.display = toggleElem.style.display == 'block' ? 'none' : 'block';
}

function toggleCollapseMenus(groupID, toggleElemId, labelClassName, iconClassName, subMenuClassName)
{
	if (!document.getElementById) return false;
//alert(groupID+', '+toggleElemId+', '+labelClassName+', '+iconClassName+', '+subMenuClassName);
	var groupChildren   = document.getElementById(groupID).childNodes;
	var iconID = menuID = '';

	for ( var i = 0; i < groupChildren.length; ++i )
	{
		var child = groupChildren[i];

		if ( child.className == labelClassName )
		{
			iconID = idOfFirstElemInClass(child.childNodes, iconClassName);
		}
		else if ( child.className == subMenuClassName )
		{
			menuID = child.id;
		}

		if ( iconID && menuID )
		{
			var toggleElem = document.getElementById(menuID);

			if ( menuID == toggleElemId || toggleElem.style.display == 'block' )
			{
				toggleIconedElem(toggleElem, iconID);
			}

			iconID = menuID = '';
		}
	}

	return false;
}

function idOfFirstElemInClass(nodeList, className)
{
	var elemId = '';

	for ( var i = 0; i < nodeList.length; ++i )
	{
		var node = nodeList[i];

		if (node.hasChildNodes()) elemId = idOfFirstElemInClass(node.childNodes, className);

		if ( elemId )
		{
			break;
		}
		else if( node && node.className && node.className == className )
		{
			elemId = node.id;
			break;
		}
	}

	return elemId;
}

function toggleLinearNavContent(holderId, paneId, contentClassName)
{
	if (!document.getElementById) return false;

	var holderChildren = document.getElementById(holderId).childNodes;

	for ( var i = 0; i < holderChildren.length; ++i )
	{
		var child = holderChildren[i];

		if ( child.className == contentClassName && child.style.display == 'block' )
		{
			toggleElemDisplay(child);
		}
	}

	toggleElemDisplay(document.getElementById(paneId));

	return false;
}

function toggleTwoColTabNav(menuGroupId, menuId, contentGroupId, contentId, onClassName, offClassName)
{
	if (!document.getElementById) return false;

	var menuElem = document.getElementById(menuId);

	if ( menuElem.className == offClassName )
	{
		toggleTwoColTabNavMenu(menuGroupId, menuId, onClassName, offClassName);
		toggleTwoColTabNavContent(contentGroupId, contentId);
	}

	return false;
}

function toggleTwoColTabNavMenu(menuGroupId, menuId, onClassName, offClassName)
{
	var menuElems = document.getElementById(menuGroupId).childNodes;

	for ( var i = 0; i < menuElems.length; ++i )
	{
		var elem      = menuElems[i];
		var className = elem.className;

		if ( elem.id == menuId )
		{
			elem.className = onClassName;
		}
		else if ( className == onClassName )
		{
			elem.className = offClassName;
		}
	}
}

function toggleTwoColTabNavContent(contentGroupId, contentId)
{
	var contentElems = document.getElementById(contentGroupId).childNodes;

	for ( var i = 0; i < contentElems.length; ++i )
	{
		var elem = contentElems[i];

		if ( elem.style && elem.style.display == 'block' )
		{
			elem.style.display = 'none';
			document.getElementById(contentId).style.display = 'block';

			break;
		}
	}
}

function toggleSortMenus(groupID, toggleElemId)
{
	toggleCollapseMenus(groupID, toggleElemId, 'collapse_submenu_label', 'collapse_submenu_icon', 'collapse_submenu');
}

function togglePseudoLink(linkElem, parentElemId, inActiveClassName)
{
	if (!document.getElementById) return;

	var parentElem = document.getElementById(parentElemId);

	if ( parentElem && parentElem.className == inActiveClassName )
	{
		var currLinkStyle = linkElem.style.textDecoration;

		linkElem.style.textDecoration = (!currLinkStyle || currLinkStyle == 'none') ? 'underline' : 'none';
		//linkElem.style.color          = (!currLinkStyle || currLinkStyle == 'none') ? '#0000FF'   : '#3333CC';

		// since Safari lets you set the value, but not read it,
		// reset it to 'none' so that it's not always set to 'underline'
		if (!linkElem.style.textDecoration)
		{
			//linkElem.style.textDecoration = 'none';
			//linkElem.style.color          = '#3333CC';
		}
	}
	else // must be the active class which should always have 'none'
	{
		linkElem.style.textDecoration = 'none';
		//linkElem.style.color          = 'black';
	}
}

function toggleTopTabMenu(clickedElem)
{
	if (!document.getElementById) return;
	if (!clickedElem.id)          return;

	var id = (clickedElem.id.split('_'))[0];

	var tabParent  = clickedElem.parentNode;
	var lastTabIdx = Math.ceil(tabParent.childNodes.length/2) - 1;

	for ( var i = 0; i <= lastTabIdx; ++i )
	{
		var contentElem = document.getElementById(id+'_content_'+i);

		if (!contentElem) break; // quit once we cannot find anymore tabs

		if (contentElem && contentElem.style.display != 'none') // currently displayed element
		{
			var tabElem = document.getElementById(id+'_menu_'+i);

			if (!tabElem) continue; // don't try to toggle if we have no tab...

			toggleTopTabElem(tabElem, contentElem, id, i);
		}
	}

	var clickedElemId  = clickedElem.id;
	var clickedIdx     = clickedElemId.substring(clickedElemId.length-1, clickedElemId.length);
	var clickedContent = document.getElementById(id+'_content_'+clickedIdx);

	if ( clickedContent )
	{
		if (window._hbLink) 
		{
			var hbxTabId = buildHbxLinkId(clickedElem);

			_hbLink(hbxTabId, 'tabs');
		}

		toggleTopTabElem(clickedElem, clickedContent, id, clickedIdx);
	}
}

function buildHbxLinkId(tabElem)
{
	var tabAnchor = tabElem.firstChild;

	if ( tabAnchor && tabAnchor.tagName == 'A' )
	{
		var anchorText = tabAnchor.text;

		if ( anchorText )
		{
			var cleanText = anchorText.replace(/\s+/gm, '').replace(/[^A-Z0-9_\-]+/igm, '_');

			if (cleanText.length > 0) return cleanText;
		}
	}

	return 'UKNOWN_TAB_ID';
}

function toggleTopTabElem(tabElem, contentElem, menuId, iconIdx)
{
        toggleIconedElem(contentElem, menuId+'_tab_'+iconIdx+'_icon');

        var currTabElemClass = tabElem.className;

        var linkElem = null;
        for(var i = 0; i < tabElem.childNodes.length; i++) {
                var current_child = tabElem.childNodes[i];
                if(current_child.nodeType != 3) {
                        linkElem = current_child;
                        break;
                }
        }

        if (linkElem != null)
        {
                linkElem.className = currTabElemClass == 'ttn_curr_tab_label' ? 'ttn_opt_tab_link' : 'ttn_curr_tab_link';
        }

        tabElem.className = currTabElemClass == 'ttn_curr_tab_label' ? 'ttn_opt_tab_label' : 'ttn_curr_tab_label';
}

function rewriteObjectTags()
{
	if (navigator.appName != 'Microsoft Internet Explorer') return;
	if (!document.getElementsByTagName)                     return;

	var elems = ['embed', 'object', 'applet'];

	for ( var i = 0; i < elems.length; ++i )
	{
		var activeTagElems = document.getElementsByTagName(elems[i]);

		for ( var j = 0; j < activeTagElems.length; ++j )
		{
			var tagElem = activeTagElems[j];
			if (tagElem.getAttribute('class') == 'swfobject') continue;

			var parent     = tagElem.parentNode;
			var parentHTML = parent.innerHTML;
			parent.removeChild(tagElem);
			parent.innerHTML = parentHTML;
		}
	}
}

function toggleHiddenContent(elem, containerClassName)
{
        var iconElem     = (elem.getElementsByTagName('img'))[0];
        var iconSrcRegex = /^(.+)_(on|off).gif$/;
        var results      = iconElem.src.match(iconSrcRegex);

        if (containerClassName==undefined) containerClassName = 'hidden_content_container';

        if ( results && results.length == 3 )
        {
                iconElem.src = results[1] + '_' + (results[2]=='on'?'off':'on') + '.gif';

                var containerElem = getParentByClassName(iconElem, containerClassName);

                var elements = getElementsByClassName('hidden_content',containerElem);

                for(var i = 0; i < elements.length; i++) {
                        var e = elements[i];
                        if ( getParentByClassName(e, containerClassName) == containerElem )
                        {
                                if(e.displayed == null) {
                                        e.displayed = 0;
                                }
                                e.displayed = 1 ^ e.displayed;
                                if(e.displayed) {
                                        e.style.display = "block";
                                } else {
                                        e.style.display = "none";
                                }
                        }
                }
        }
}

function getElementsByClassName(elem, parentClass, elements) {
        if(elements == null) {
                elements = new Array();
        }
        for(var i = 0; i < parentClass.childNodes.length; i++) {
                var e = parentClass.childNodes[i];
                if (e.className == elem) {
                        elements.push(e);
                }
                getElementsByClassName(elem, e, elements);
        }

        return elements;
}

function getParentByClassName(elem, parentClass)
{
	var i = 0;
	while (elem.className != parentClass && i++ < 10) elem = elem.parentNode;

	return elem;
}

function toggleAjaxContent(clickElem, containerClassName, url, method, params)
{
	var containerElem = getAjaxContainer(clickElem);

	if (Element.hasClassName(containerElem, 'ajax_error')) Element.removeClassName(containerElem, 'ajax_error');

	makeAjaxRequest(containerElem, url, method, params);

	toggleHiddenContent(clickElem, containerClassName)
}

function getAjaxContainer(elem)
{
  return (document.getElementsByClassName('ajax_content', getParentByClassName(elem, 'hidden_content_container')))[0];
}

function makeAjaxRequest(containerElem, url, method, params)
{
	if (method == undefined) method = 'get';
	if (params == undefined) params = '';

	new Ajax.Updater(
		{success: containerElem},
		url,
		{
			method:      method,
			parameters:  params,
			evalScripts: true,
			onError:     function(request){ajaxContainerError(containerElem, request)},
			onFailure:   function(request){ajaxContainerError(containerElem, request)}
		}
	);

	$(containerElem).innerHTML = '<div class="ajax_progress"></div>';
}

function ajaxContainerError(containerElem, request)
{
	Element.addClassName(containerElem, 'ajax_error');
	containerElem.innerHTML = 'Hello. We\'re sorry for the inconvenience, but we were unable to retrieve a product list.<br/>The error is captured in our daily bug report.  We\'ll respond promptly to fix it';
}

function ajaxFormSubmit(containerElem, formElem)
{
	makeAjaxRequest(containerElem, formElem.action, formElem.method, Form.serialize(formElem));

	return false;
}


// end of nanhua Office Javascript    http://www.office.nanhua.com
// 
