/**
 * Default
 * 
 * Implements Javascript functions available to all pages.
 *
 * Copyright (c) 2006 Johnson County Community College
 *
 */

/**
 * Validates Integer values. 
 */
function isInt (str)
{
	var i = parseInt (str);

	if (isNaN (i))
		return false;

	i = i . toString ();
	if (i != str)
		return false;

	return true;
}

/**
 * Trims the whitespace from the begining and end of a string.
 */
function trim(str)
{
   return str.replace(/^\s*|\s*$/g, "");
}

/**
 * Toggles the visibility of an element.
 */
function toggleVisibility(id)
{
	var element = document.getElementById(id);
	
	if(element.className == 'hidden') { element.className = 'visible'; }
	else {element.className = 'hidden'; }
}

/**
 * Show the specified element.
 */
function showElement(id)
{	
	var element = document.getElementById(id);
	element.className = 'visible';
}

/**
 * Hide the specified element.
 */
function hideElement(id)
{
	var element = document.getElementById(id);
	element.className = 'hidden';
}

/**
 * Sets the class name of the specified element.
 */
function setClassName(id, name)
{
	var element = document.getElementById(id);
	element.className = name;
}

/**
 * Sets the innerHTML of the specified element.
 */
function setInnerHTML(id, html)
{
	var element = document.getElementById(id);
	element.innerHTML = html;
}

/** 
 * Validates that a checkbox has been selected before taking action. 
 */
function validateCheckboxes(field)
{
	var selectedCheckboxes = 0;
	var element = document.getElementsByName(field);
	
	// See how many checkboxes have been selected.
	for(i = 0; i < element.length; i++)
	{
		if(element[i].checked)
		{
			selectedCheckboxes++;
		}
	}
	
	// If a checkbox has been selected, submit the form.
	if(selectedCheckboxes > 0)
	{
		return true;
	}
	else
	{
		// TODO: Remove this alert. Just have it return a boolean.
		alert('Please select at least one location.');
		return false;
	}
}

/**
 * Shows the default loading message.
 */
function showLoadingMessage()
{
	showElement('loading-message');
}

/* Gets all the elements of a specified class name. */
function getElementsByClass(searchClass, node, tag) 
{
	var classElements = new Array();
	
	if ( node == null )
	{
		node = document;
	}
		
	if ( tag == null )
	{
		tag = '*';
	}
		
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	
	for (i = 0, j = 0; i < elsLen; i++) 
	{
		if ( pattern.test(els[i].className) ) 
		{
			classElements[j] = els[i];
			j++;
		}
	}
	
	return classElements;
}


/**
 * findPosX finds the X coordinate of the specified object.
 */
function findPosX(obj)
{
	var curleft = 0;
	
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
	}
	
	return curleft;
}

/**
 * findPosX findss the Y coordinate of the specified object.
 */
function findPosY(obj)
{
	var curtop = 0;
	
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
	}
	
	return curtop;
}