var ideals_dom=document.getElementById&&!document.all?1:0;
var isNN = (navigator.appName.indexOf("Netscape")!=-1);

function test_cookie()
{
	//document.cookie = "Y";//appends 
	//var testcookie = document.cookie; 
	//document.cookie = "";//clears Y from before 
	//document.cookie.expires = "1-1-1";
	//if (testcookie == document.cookie) 
	//	alert("You must enable cookies in your browser for this site to function properly"); 
    Set_Cookie( 'test', 'none', '', '/', '', '' );
    // if Get_Cookie succeeds, cookies are enabled, since
    //the cookie was successfully created.
    if ( Get_Cookie( 'test' ) )
	    Delete_Cookie('test', '/', '');
    else
	    alert("You must enable cookies in your browser for this site to function properly");
}
/*
Script Name: Javascript Cookie Script
Author: Public Domain, with some modifications
Script Source URI: http://techpatterns.com/downloads/javascript_cookies.php
Version 1.1.2
Last Update: 5 November 2009

Changes:
1.1.2 explicitly declares i in Get_Cookie with var
1.1.1 fixes a problem with Get_Cookie that did not correctly handle case
where cookie is initialized but it has no "=" and thus no value, the 
Get_Cookie function generates a NULL exception. This was pointed out by olivier, thanks
1.1.0 fixes a problem with Get_Cookie that did not correctly handle
cases where multiple cookies might test as the same, like: site1, site
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
*/

// this fixes an issue with the old method, ambiguous values 
// with this test document.cookie.indexOf( name + "=" );

// To use, simple do: Get_Cookie('cookie_name'); 
// replace cookie_name with the real cookie name, '' are required
function Get_Cookie( check_name ) {
	// first we'll split this cookie up into name/value pairs
	// note: document.cookie only returns name=value, not the other components
	var a_all_cookies = document.cookie.split( ';' );
	var a_temp_cookie = '';
	var cookie_name = '';
	var cookie_value = '';
	var b_cookie_found = false; // set boolean t/f default f
	var i = '';
	
	for ( i = 0; i < a_all_cookies.length; i++ )
	{
		// now we'll split apart each name=value pair
		a_temp_cookie = a_all_cookies[i].split( '=' );
		
		
		// and trim left/right whitespace while we're at it
		cookie_name = a_temp_cookie[0].replace(/^\s+|\s+$/g, '');
	
		// if the extracted name matches passed check_name
		if ( cookie_name == check_name )
		{
			b_cookie_found = true;
			// we need to handle case where cookie has no value but exists (no = sign, that is):
			if ( a_temp_cookie.length > 1 )
			{
				cookie_value = unescape( a_temp_cookie[1].replace(/^\s+|\s+$/g, '') );
			}
			// note that in cases where cookie is initialized but no value, null is returned
			return cookie_value;
			break;
		}
		a_temp_cookie = null;
		cookie_name = '';
	}
	if ( !b_cookie_found ) 
	{
		return null;
	}
}

/*
only the first 2 parameters are required, the cookie name, the cookie
value. Cookie time is in milliseconds, so the below expires will make the 
number you pass in the Set_Cookie function call the number of days the cookie
lasts, if you want it to be hours or minutes, just get rid of 24 and 60.

Generally you don't need to worry about domain, path or secure for most applications
so unless you need that, leave those parameters blank in the function call.
*/
function Set_Cookie( name, value, expires, path, domain, secure ) {
	// set time, it's in milliseconds
	var today = new Date();
	today.setTime( today.getTime() );
	// if the expires variable is set, make the correct expires time, the
	// current script below will set it for x number of days, to make it
	// for hours, delete * 24, for minutes, delete * 60 * 24
	if ( expires )
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	//alert( 'today ' + today.toGMTString() );// this is for testing purpose only
	var expires_date = new Date( today.getTime() + (expires) );
	//alert('expires ' + expires_date.toGMTString());// this is for testing purposes only

	document.cookie = name + "=" +escape( value ) +
		( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) + 
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

// this deletes the cookie when called
function Delete_Cookie( name, path, domain ) {
	if ( Get_Cookie( name ) ) document.cookie = name + "=" +
			( ( path ) ? ";path=" + path : "") +
			( ( domain ) ? ";domain=" + domain : "" ) +
			";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}
function table_size( tableid ) {
	// Find all our table
	var table=ideals_dom?document.getElementById(tableid):document.all[tableid];
	if ( table != null )
	{
		var trs = table.getElementsByTagName("tr");
		for ( var ii=0; ii<trs.length; ii++ )
		{
			var tds = trs[ii].getElementsByTagName("td");
			for ( var iii=0; iii<tds.length; iii++ )
			{
				if( tds[iii].style.width.length == 0 )
				{
					if( iii == tds.length-1 )
						tds[iii].style.width = '100%';
					else
						tds[iii].style.width = 'auto';
				}
			}
		}
	}
}

function set_table_percents( tableid, arrSizes ) {
	// Find all our table
	var table=ideals_dom?document.getElementById(tableid):document.all[tableid];
	if ( table != null )
	{
		var trs = table.getElementsByTagName("tr");
		for ( var ii=0; ii<trs.length; ii++ )
		{
			var tds = trs[ii].getElementsByTagName("td");
			for ( var iii=0; iii<tds.length; iii++ )
			{
				if( tds[iii].style.width.length == 0 )
				{
					var newWidth = null;
					try
					{
						newWidth = arrSizes[iii];
					}
					catch(err)
					{
						newWidth = 'auto';
					}
					if( newWidth == null )
						newWidth = 'auto';
					
					tds[iii].style.width = newWidth;
				}
			}
		}
	}
}
function valOptionButton(btn) 
{
	var cnt = -1;
	if( btn.length != undefined )
	{
		for (var i=btn.length-1; i > -1; i--) 
		{
			if (btn[i].checked) 
			{
				cnt = i; i = -1;
			}
		}
		if (cnt > -1) 
			return btn[cnt].value;
		else 
			return null;
	}
	else
	{
		if (btn.checked)
			return btn.value;
		else
			return null; 
	}
}

function numDaysIn(mth,yr)
{
	if(mth==4 || mth==6 || mth==9 || mth==11) return 30;
	else if ((mth==2) && leapYear(yr)) return 29;
	else if (mth==2) return 28;
	else return 31;
}

function leapYear(yr)
{
	if(((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0)
		return true;
	else
		return false;
}
function updatecaddy( formID, inputID, nValue )
{
	var ctlForm=ideals_dom?document.getElementById(formID):document.all[formID];
	var ctlInput=ideals_dom?document.getElementById(inputID):document.all[inputID];
	
	if( ctlForm != null && ctlInput != null)
	{
		ctlInput.value = nValue;
		ctlForm.submit();
	}
		
	return false;
}
function checkdate(eMonth, eDay, eYear )
{
	var nMonth = 0;
	var nYear = 0;
	var nDay = 0;
	
	if( eMonth == null || eDay == null || eYear==null )
	{
		alert('Missing a required paramenter to the check date function.');
		return false;
	}
	
	var ctlMonth=ideals_dom?document.getElementById(eMonth):document.all[eMonth];
	var ctlYear=ideals_dom?document.getElementById(eYear):document.all[eYear];
	var ctlDay=ideals_dom?document.getElementById(eDay):document.all[eDay];
	
	if( ctlMonth == null || ctlYear == null || ctlDay==null )
	{
		alert('Could not find one of the date controls passed into the check date function.');
		return false;
	}

	nMonth = ctlMonth.value;
	nYear = ctlYear.value;
	nDay = ctlDay.value;

	var numDays = numDaysIn(nMonth,nYear);
	
	if( nDay > numDays )
	{
		alert('The day portion of the date you selected will be reset \nto the last day of the selected month because the month/year \nthat was just selected does not have ' + nDay + ' days.');
		ctlDay.value = numDays;
	}
		
	ctlDay.options.length=numDays;
	for(i=27;i<numDays;i++)
	{
		ctlDay.options[i].value=i+1;
		ctlDay.options[i].text=i+1;
	}	
	return true;
}	
function toggle_element(elem)
{
	var div;

	try
	{
		div=ideals_dom?document.getElementById(elem).style:document.all[elem].style;
		///alert(div.display);
		if( div.display != null && div.display == "none")
			div.display="";
		else
			div.display="none";
	}
	catch(e)
	{
		alert(e.description + ' Caught error in toggle_element');
	}
}
function hide_element(elem)
{
	var div;

	try
	{
		div=ideals_dom?document.getElementById(elem).style:document.all[elem].style;
		div.display="none";
	}
	catch(e)
	{
		alert(e.description + ' Caught error in toggle_element');
	}
}
function auto_tab( elemCurrent, elemNext, maxLen, e )
{
	var keyCode = (isNN) ? e.which : e.keyCode; 
	var filter = [0,8,9,16,17,18,37,38,39,40,46];
	
	var ctlCurr=ideals_dom?document.getElementById(elemCurrent):document.all[elemCurrent];
	var ctlNext=ideals_dom?document.getElementById(elemNext):document.all[elemNext];
	
	if( ctlCurr != null && ctlNext != null )
	{
		if( !containsElement(filter, keyCode) && ctlCurr.value.length >= maxLen )
		{
			ctlNext.focus();
			ctlNext.select();
		}
	}
}
function containsElement(arr, ele) 
{
	var found = false, index = 0;
	while(!found && index < arr.length)
	{
		if(arr[index] == ele)
			found = true;
		else
			index++;
	}
	return found;
}
function setSearchStyle(elem, defaultText)
{
    var txtBox;

    try
    {
	    txtBox=ideals_dom?document.getElementById(elem):document.all[elem];
	    if( txtBox.style != null && txtBox.style.color != null && txtBox.style.fontStyle != null && txtBox.value != null)
	    {
	        if( txtBox.value == defaultText )
	        {
	            txtBox.style.color = 'silver';
	            txtBox.style.fontStyle = 'italic';
	        }
	        else
	        {
	            txtBox.style.color = '#00568c';
	            txtBox.style.fontStyle = 'normal';
	        }
	    }
	    else
	        alert('Could not set the style of the search box.');
    }
    catch(e)
    {
	    alert(e.description + ' Caught error in setSearchStyle');
    }
}
function setDefault(elem, defaultText)
{
    var txtBox;

    try
    {
	    txtBox=ideals_dom?document.getElementById(elem):document.all[elem];
	    if( txtBox.value != null && txtBox.value.length == 0)
	    {
	        txtBox.value = defaultText;
	        setSearchStyle(elem, defaultText);
	    }
    }
    catch(e)
    {
	    alert(e.description + ' Caught error in setSearchStyle');
    }
}
function setEmpty(elem, defaultText)
{
    var txtBox;

    try
    {
	    txtBox=ideals_dom?document.getElementById(elem):document.all[elem];
	    if( txtBox.value != null && txtBox.value.length > 0 && txtBox.value == defaultText)
	    {
	        txtBox.value = '';
	        setSearchStyle(elem, defaultText);
	    }
    }
    catch(e)
    {
	    alert(e.description + ' Caught error in setSearchStyle');
    }
}
function openCenteredWindow(url, height, width, name, parms) {
   var left = Math.floor( (screen.width - width) / 2);
   var top = Math.floor( (screen.height - height) / 2);
   var winParms = "top=" + top + ",left=" + left + ",height=" + height + ",width=" + width;
   if (parms) { winParms += "," + parms; }
   var win = window.open(url, name, winParms);
   if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
   return win;
}
