﻿/*
 * 
 * =======================
 * E D I T   H I S T O R Y
 * =======================
 * 
 * Date: 03/20/2009
 * Author: Z. Qi
 * Action: Create new file.
 *				 With existing functions clearForm, addEvent, onWatermarkFocus, and onWatermarkBlur.
 * 
 * Date: 03/23/2009
 * Author: Z. Qi
 * Action: Add function showElement for displaying menu.
 *
 */


//
//Clear text boxes, check boxes, and radio buttons.
//Reset list boxes and dropdown liststo the first item.
//
//NOTE: This function leaves disabled items as is for without clearing or resetting their
//values.
//
function clearForm(formId) 
{ 
	var form, elements, i, elm, field; 
	form = document.getElementById ? document.getElementById(formId) : document.forms[formId]; 

	//look through by tag name 
	if (document.getElementsByTagName)
	{
		//clear text boxes, check boxes, and radio buttons
		elements = form.getElementsByTagName('input');
		for(i = 0, elm; elm = elements.item(i++);)
		{
			if (elm.disabled == false)
			{
				//clear text boxes
				if (elm.getAttribute('type') == "text" || elm.getAttribute('type') == "password")
				{
					elm.value = '';
				}
				
				//clear check boxes and radio buttons
				else if (elm.getAttribute('type') == "checkbox" || elm.getAttribute('type') == "radio")
				{
					elm.checked = false;
				}
			}
		}
		
		//reset list boxes and drop down lists to the first item
		elements = form.getElementsByTagName('select');
		for(i = 0, elm; elm = elements.item(i++);)
		{
			if (elm.disabled == false)
			{
				elm.options.selectedIndex=0;
			}
		}
	}

	//look through by element type here but the result is the same as above for input type
	else
	{
		elements = form.elements;
		for(i = 0, elm; elm = elements[i++];)
		{
			if (elm.disabled == false)
			{
				//clear text boxes
				if (elm.type == "text" || elm.type == "password") 
				{
					elm.value ='';
				}
				
				//clear check boxes and radio buttons
				else if (elm.type == "checkbox" || elm.type == "radio")
				{
					elm.checked = false;
				}
			}
		}
	}
	
} //clearForm(formId)


//
//Add an event.
//
function addEvent(elm, strEvent, fnHandler)
{
	return (elm.addEventListener ?
					elm.addEventListener(strEvent, fnHandler, false) :
					elm.attachEvent('on' + strEvent, fnHandler)
					);
}


//
//Set up watermarked TextBox on focus.
//
function onWatermarkFocus(elementId, defaultText, normalStyle)
{ 
	document.getElementById(elementId).className = normalStyle;
	
	if (document.getElementById(elementId).value == defaultText)
	{
		document.getElementById(elementId).value = "";
	}
}


//
//Set up watermarked TextBox on blur.
//
function onWatermarkBlur(elementId, defaultText, normalStyle, watermarkStyle)
{
	var textValue = document.getElementById(elementId).value;

	if (textValue == defaultText || textValue.length == 0)
	{
		document.getElementById(elementId).className = watermarkStyle;
		document.getElementById(elementId).value = defaultText;
	}
	else
	{
		document.getElementById(elementId).className = normalStyle;
	}
}


//
//Expand ul menu with some *problems* by looking at TagName "ul"
//
function showElement(layer)
{
	var myLayers = document.getElementsByTagName("ul"); //will cause ul to disappear in page
	var myLayer = document.getElementById(layer);
	
	if (myLayer.style.display=="none")
	{
		for (var i=0; i<myLayers.length; i++)
		{
			myLayers[i].style.display="none";
		}
		myLayer.style.display="block";
		myLayer.backgroundPosition="top";
	}
	else
	{ 
		myLayer.style.display="none";
	}
}

//
//Simply show the ul menu
//
function showElementSimple(layer)
{
	var myLayer = document.getElementById(layer);
	myLayer.style.display="block";
}

//
//Expand ul menu by class name
//
function showElementByClassName(layer, clsName)
{
	var myLayer = document.getElementById(layer);
	var myLayers = document.getElementsByClassName(clsName);
	
	if (myLayer.style.display=="none")
	{
		for (var i=0; i<myLayers.length; i++)
		{
			myLayers[i].style.display="none";
		}
		myLayer.style.display="block";
		myLayer.backgroundPosition="top";
	}
	else
	{ 
		myLayer.style.display="none";
	}
}

//
//Define document.getElementsByClassName function
//
document.getElementsByClassName = function(clsName){
	var retVal = new Array();
	var elements = document.getElementsByTagName("*");
	
	for(var i = 0;i < elements.length;i++)
	{
		if(elements[i].className.indexOf(" ") >= 0)
		{
			var classes = elements[i].className.split(" ");
			for(var j = 0;j < classes.length;j++)
			{
				if(classes[j] == clsName)
				{
					retVal.push(elements[i]);
				}
			}
		}
		
		else if(elements[i].className == clsName)
		{
			retVal.push(elements[i]);
		}
	}
	
	return retVal;
}