/**
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=
 * MapQuest Global JavaScript
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=
 * common js for site
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=
 * TOC
 * - default variables
 * - add event
 * - set focus
 * - param exists
 * - autofill
 * - clear settings
 * - new window pop-up
 * - default text
 * - maxlength
 * - initialization
 * - depreciated js
 *   - state pop-up
 *
 */

/**
 * DEFAULT VARIABLES
 */
	//needed to make sure browser has JS on
	document.cookie = "JSEnabled=1";
 
/**
 * ADD EVENT
 * add eventlistener to browsers that will support one
 * usage:	addEvent(object, "event", function);
 */
function addEvent(obj, evType, fn)
{
	if (obj.addEventListener)
	{	// moz, opera
		obj.addEventListener(evType, fn, true);
		return true;
	}
	else if (obj.attachEvent)
	{	// IE
		var r = obj.attachEvent("on"+evType, fn);
		return r;
	}
	else
	{	// ol' busted browsers (ie mac ie5)
		var old = obj['on' + evType];
		obj['on' + evType] = function()
		{
			(typeof old == 'function') && old();
			fn(new addEventOld(obj));
		}
	}
}//addEvent()
function addEventOld(currentTarget)
{   // ol' browser event support
	this.currentTarget = currentTarget;
	return this;
}//addEventOld()

/**
 * SET FOCUS
 * Set focus to element with accesskey="x"
 */
function setFocus()
{
	if (!document.getElementsByTagName) return;
	var e = document.getElementsByTagName("*");
	for (var i=0; i<e.length; i++)
	{
		var clsName = e[i];
		if(clsName.getAttribute("accesskey") == "x")
		{
			clsName.focus();
		}
	}
}//setFocus()

/**
 * PARAM EXISTS
 * validate variables
 */
function paramExists(varname)
{
	if (typeof varname != 'undefined')
	{
		return true;
	}
	return false;
}// paramExists()

/**
 * AUTOFILL
 * Auto fill-in form field
 */
function autoFill(fId, fNextId)
{
	if (document.getElementById("r" + fId))
	{
		var idArray		= new Array("a", "csz", "c", "s", "z");
		var rId			= document.getElementById("r" + fId)
		var addr		= rId.value.split("|");
		var a 			= 0;
		for (var i = 0; i < idArray.length; i++)
		{
			//alert(addr[i].substring(0,5));
			if((i == 0) && (addr[i].substring(0,5) == "clear") && (addr.length < 2))
			{	//value of "clearXXX" means to clear some kind of cookie data
   				clearSettings(addr[i]);
				return;
			}
			if(document.getElementById(idArray[i] + fId))
			{
				document.getElementById(idArray[i] + fId).value = (paramExists(addr[a])) ? addr[a] : "";
				a++;
			}
		}
		if(document.getElementById(fNextId) && (addr.length > 1))
		{
			rId.options.selectedIndex = 0;
			document.getElementById(fNextId).focus();
		}
	}
	else if ((fId == 0) && document.getElementById(fNextId))
	{
		document.getElementById(fNextId).focus();
	}
}//autoFill()

/**
 * CLEAR SETTINGS
 * remove cookies
 */
function clearSettings(fInput, fLoc)
{
	var cookieArray = new Array();
    var fText;
	switch (fInput)
	{
		case "clearAll":
			cookieArray[0]  = "locationhistory";
			cookieArray[1]  = "locationhistoryHome";
			cookieArray[2]  = "locationhistoryWork";
            fText           = "Home, Work, and Recent Search Locations";
		break;
		case "clearRecent":
			cookieArray[0]  = "locationhistory";
            fText           = "Recent Searches";
		break;
		case "clearHome":
			cookieArray[0]  = "locationhistoryHome";
            fText           = "Home Location";
		break;
		case "clearWork":
			cookieArray[0]  = "locationhistoryWork";
            fText           = "Work Location";
		break;
		default:
			return;
	}
    if(confirm("Are you sure you want to clear your " + fText + "?"))
    {
    	for (var i = 0; i < cookieArray.length; i++)
    	{
    		document.cookie = cookieArray[i] + "=;domain=" + mqDomain + ";path=/;expires=Thu,01-Jan-70 00:00:01 GMT";
    	}
        if(paramExists(fLoc))
        {
        	window.location = fLoc;
        }
        else
        {
        	window.location.reload();
        }
    }
}//clearSettings()


/**
 * NEW WINDOW POP-UP
 * usage: URL is only required param
 * url, window name, width, height, scrollbars (yes,no), center (true,false)
 * <a href="http://mapquest.com" onclick="newWin(this.href,'name','400','400','no', true);return false;">link</a>
 * <a href="javascript: newWin('http://mapquest.com','name','400','400','no', true);">link</a>
 */
function newWin(fPage, fName, fWidth, fHeight, fScroll, fCenter)
{
	if(paramExists(fPage) == false)
	{	// no url to open
		return;
	}
	if(paramExists(fName) == false)
	{	// if no name, create one
		var fName = "newWin"+ Math.random();
	}
	if(paramExists(fScroll) == false)
	{	// scrollbar defaults to 'yes'
		var fScroll = "yes";
	}
	if((paramExists(fCenter) == false) || (fCenter == false))
	{	// auto-center defaults to "false"
		var winl = wint = 10;
	}
	else if (fCenter == true)
	{
		var winl = (screen.width - fWidth) / 2;
		var wint = (screen.height - fHeight) / 2;
	}
	if(paramExists(fWidth) == false)
	{	// default width
		var fWidth = 250;
	}
	if(paramExists(fHeight) == false)
	{	// default height
		var fHeight = 600;
	}
	var winprops = 'height='+fHeight+',width='+fWidth+',top='+wint+',left='+winl+',scrollbars='+fScroll+',directories=no,resizable=yes';
	win = window.open(fPage, fName, winprops);
	if (parseInt(navigator.appVersion) >= 4)
	{
		win.window.focus();
	}
}// newWin()

/**
 * DEFAULT TEXT
 * removes default input value on selection
 */
function defaultText(fId)
{
	var fValue = document.getElementById(fId)
	if (fValue.value == fValue.defaultValue)
	(fValue.value="")
}//defaultText()

/**
 * MAXLENGTH
 * character count and limit
 */
function maxLength(fId, fCount)
{
    var element = document.getElementById(fId);
    if (element.value.length  >= fCount-1)
    {
        element.value = element.value.substring(0, fCount-1);
    }
}//maxLength()


/**
 * INITIALIZATION
 * load and fire events
 */
function mqInit()
{
	setFocus();
}//mqInit()
addEvent(window, "load", mqInit);

/**
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=
 * DEPRECIATED JS
 * may still be in use on some older sections
 * =~=~=~=~=~=~=~=~=~=~=~=~=~=~=
 */

/**
 * STATE POP-UP
 */
function openAbbrev (idField, skipFlag) {
    var fUrl = "/maps/abbrev.adp?idfield=" + idField;
    if(skipFlag)
    {
        fUrl = fUrl + "&skip=" + skipFlag;
    }
    newWin(fUrl,'abbrevs');
}

 
 

