//-----------------------------------
//Navigation
		function MultiDimensionalArray(iRows,iCols) 
	{ 
	var i; var j; var a = new Array(iRows); 
	for (i=0; i < iRows; i++) {  
		a[i] = new Array(iCols); 
		for (j=0; j < iCols; j++) { 
			a[i][j] = ""; } } 
	return(a); } 

	var deptName= new Array(); //Display Name for department
	var deptID= new Array();  //Sales System assigned Department ID, used for links
	var dURL= new Array();
	var deptChildrenID=MultiDimensionalArray(501,30);  //deptChildrenID(ParentID,row) = Javascript IDs for children of Departments
//-----------------------------------

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;
}
var expires_date = new Date( today.getTime() + (expires) );

document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.toGMTString() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}

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

	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;
	}
}

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($){

  // A collection of elements to which the clickoutside event is bound.
  var elems = $([]);

  // Special event definition.
  $.event.special.clickoutside = {
    setup: function(){
      // Add this element to the internal collection.
      elems = elems.add( this );

      // If this is the first element to which the event has been bound,
      // bind a handler to document to catch all 'click' events.
      if ( elems.length === 1 ) {
        $(document).bind( 'click', handle_event );
      }
    },
    teardown: function(){
      // Remove this element from the internal collection.
      elems = elems.not( this );

      // If this is the last element removed, remove the document 'click'
      // event handler that "powers" this special event.
      if ( elems.length === 0 ) {
        $(document).unbind( 'click', handle_event );
      }
    },
    add: function( handleObj ) {
      // Save a reference to the bound event handler.
      var old_handler = handleObj.handler;

      // This function will now be called when the event is triggered,
      // instead of the bound event handler.
      handleObj.handler = function( event, elem ) {

        // Set the event object's .target property to the element that the
        // user clicked, not the element on which the 'clickoutside' event
        // was triggered.
        event.target = elem;

        // Call the originally-bound event handler, complete with modified
        // event object! The result from this call doesn't need to be
        // returned, because there is no default action to prevent, and 
        // nothing to propagate to.
        old_handler.apply( this, arguments );
      };
    }
  };

  // When an element is clicked..
  function handle_event( event ) {

    // Iterate over all elements in the internal collection.
    $(elems).each(function(){
      var elem = $(this);

      // If this element isn't the clicked element, and this element doesn't
      // contain the clicked element, then the clicked element is considered
      // outside, and the event should be triggered!
      if ( this !== event.target && !elem.has(event.target).length ) {

        // Use triggerHandler instead of trigger so that the event doesn't
        // bubble. Pass the 'click' event.target so that the 'clickoutside'
        // event.target can be overridden.
        elem.triggerHandler( 'clickoutside', [ event.target ] );
      }
    });
  };

})(jQuery);
