/**
 * javasript.js
 * A library of JavaScript functions centralized in a single file to decrease
 * the time it would take to load multiple JavaScript library files.
 * 
 * @package		Airline_Interviews_JavaScript
 * @version	 	$Id$
 * @copyright 	Copyright (c) 2008-2009, Will Fly For Food DBA Jet Web Designs
 * @author 		Webster Network <contact@webster-network.com>
 * @link 		http://www.webster-network.com/
 * @filesource
 */

/******************** AJAX Functions ********************/

/**
 * makeAjaxRequest()
 * Makes an AJAX request
 * 
 * @param	string		targetDiv
 * @param	string		query
 * @param	boolean		showHide
 * @return	void
 */
function makeAjaxRequest(targetDiv, query, showHide)
{
	var httpRequest    = false;
	var loadingMessage = '<div style="width: 100%; padding: 50px; text-align: center; vertical-align: middle;"><img src="./styles/images/loading.gif" border="0" alt="Loading, please wait" /></div>';
	var doShowHide     = (typeof(showHide) == "boolean") ? showHide : true;
	
	if ( (doShowHide && showHideDiv(targetDiv) ) || (!doShowHide) )
	{
		if (window.XMLHttpRequest)
		{
			try
			{
				httpRequest = new XMLHttpRequest();
			}
			catch (e)
			{
				httpRequest = false;
			}
		}
		else if (window.ActiveXObject)
		{
			try
			{
				httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
			}
			catch (e)
			{
				try
				{
					httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					httpRequest = false;
				}
			}
		}
		else
		{
			httpRequest = false;
		}
		
		if (httpRequest)
		{
			url = query + '&ajax=true';
			
			httpRequest.open("get", url, true);
			httpRequest.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");		// Prevent caching
	
			httpRequest.onreadystatechange = function ()
			{
				if (httpRequest.readyState == 4)
				{
					document.getElementById(targetDiv).innerHTML = httpRequest.responseText;
				}
				else
				{
					document.getElementById(targetDiv).innerHTML = loadingMessage;
				}
			}
			
			httpRequest.send(null);
		}
		else
		{
			window.location(query);
		}
	}
	
	return;
}

/**
 * showHideDiv()
 * Displays or hides a division based on
 * it's current visibility
 * 
 * @param	string		targetDiv
 * @return	void
 */
function showHideDiv(targetDiv)
{
	if ( (document.getElementById(targetDiv).style.display == '') || (document.getElementById(targetDiv).style.display == 'none') )
	{
		returnValue = true;
		
		document.getElementById(targetDiv).style.display = 'block';
		document.getElementById(targetDiv + 'Link').src = './styles/images/collapse.gif';
	}
	else
	{
		returnValue = false;
		
		document.getElementById(targetDiv).style.display = 'none';
		document.getElementById(targetDiv + 'Link').src = './styles/images/expand.gif';
	}

	return returnValue;
}

/**
 * hideDiv()
 * Hides a division
 * 
 * @param	string		targetDiv
 * @return	void
 */
function hideDiv(targetDiv)
{
	document.getElementById(targetDiv).style.display = 'none';
	
	return;
}

/******************** General Helper Functions ********************/

/**
 * createNewAirline()
 * Makes an AJAX request if "Create New Airline" option
 * is selected from the drop down list otherwise the
 * create new airline division is hidden
 * 
 * @param	int			selectedIndex
 * @return	void
 */
function createNewAirline(selectedIndex)
{
	if (selectedIndex == '1')
	{
		document.getElementById('createNewAirline').style.display = 'block';
		
		makeAjaxRequest('createNewAirline', '?act=newAirline', false);
	}
	else
	{
		hideDiv('createNewAirline');
	}
	
	return;
}

/**
 * disableTextSelection()
 * Disables selection (drag and copy) within a specified element.
 * 
 * @param	target
 * @return	void
 */
function disableTextSelection(target)
{
	/***********************************************
	* Disable Text Selection script- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
	* This notice MUST stay intact for legal use
	* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
	***********************************************/
	
	if (typeof(target.onselectstart) != "undefined")
	{
		// Internet Explorer
		
		target.onselectstart = function()
		{
			return false;
		}
	}
	else if (typeof(target.style.MozUserSelect) != "undefined")
	{
		// Firefox
		
		target.style.MozUserSelect = "none";
	}
	else
	{
		// Others (e.g. Opera)
		
		target.onmousedown = function()
		{
			return false;
		}
	}
	
	target.style.cursor = "default";
	
	return;
}