

/**
 * Find selected values within select element.
 * @method getSelectedOptions
 * @param { HTMLElement } obj The HTML select element
 */
function getSelectedOptions( obj ) 
{		
	var arr = [];
	var ol = YAHOO.util.Dom.getElementsBy(
		function( obj ) { 
			if( obj.selected ) {
				arr.push(obj.value);
				return true; 
			} else { return false; }
		}, 'option', obj.id );

	if( isAllSelected( arr ) ) {
		return getAllOptions( obj );
	} else {
		return arr.join(",");
	}
}

/**
 * Check if 'All' has been selected.
 * @method isAllSelected
 * @param { Array } arr The array of selected indexes
 */
function isAllSelected( arr ) 
{
	var sel_all = false;
	var size = arr.length;
	for( var i = 0; i < size; i++ ) {
		if( arr[i] == '-1' ) {
			sel_all = true;
			break;
		}
	}
	return sel_all;
}

/**
 * Find all option indexes within the list.
 * @method getAllOptions
 * @param { HTMLElement } obj The HTML select element
 */
function getAllOptions( obj )
{
	var arr = [];
	var ol = YAHOO.util.Dom.getElementsBy(
		function( obj ) { 
			arr.push(obj.value);
			return true;
		}, 'option', obj.id );
	return arr.join(",");
}

function clearSelectOptions( obj )
{
	var arr = [];
	var ol = YAHOO.util.Dom.getElementsBy(
		function( obj ) { 
			if( obj.selected ) {
				obj.selected = false;
				return true; 
			} else { return false; }
		}, 'option', obj.id );	
}

/**
 * onChange callback for individual option elements.  Note: 'this' refers to the HTML select.
 * @method indexChanged
 */
function indexChanged() 
{
	YAHOO.util.Dom.get('page_index').value = '1';
	
	// reset then load 'pseudo-child' selects with relevant info, if applicable
	switch( this.id ) {
		case 'industry':
			//reset sub
			var ele = YAHOO.util.Dom.get('sub_industry');
			if ( ele != null ) {
				clearSelectOptions( ele );
			}
			

		case 'sub_industry':
			//reset cat
			var ele = YAHOO.util.Dom.get('category');
			if ( ele != null ) {
				clearSelectOptions( ele );	
			}
						
			
	}
	
	handleSubmit();
	
}

var handleSuccess = function(o) {
	processResult(o);
}

var handleFailure = function(o) {
	alert(o.statusText);
}

var processResult = function(o) {
		// read json and transform into select
		try {
			var ind_list = YAHOO.lang.JSON.parse(o.responseText);
		} catch ( e ) {
			alert('Invalid data.');
		}
		
		var frag = document.createDocumentFragment();
		
		// add 'All' if needed
		var len = ind_list.length;
		
		if ( len > 0 ) {
			
			var ele = document.createElement('option');
			ele.appendChild( document.createTextNode( 'All' ) );
			ele.setAttribute( 'value', '-1' );
			frag.appendChild(ele);
		}

		
		var str = ''; var ele = '';
		for( var i = 0; i < len; i++ ) {
			var ele = document.createElement('option');
			ele.appendChild( document.createTextNode( ind_list[i].name ) );
			ele.setAttribute( 'value', ind_list[i].ref );
			frag.appendChild(ele);
		}

		if ( YAHOO.util.Dom.getChildren( 'sub_industry' ).length == 0 ) {
			YAHOO.util.Dom.get('sub_industry').appendChild(frag);
		} else {
			YAHOO.util.Dom.get('category').appendChild(frag);
		}
}

/*
 * Define the callback object for success and failure
 * handlers as well as object scope.
 */
var callback =
{
	success:handleSuccess,
	failure:handleFailure
};


/**
 * @method sendRequest
 */
function sendRequest( obj ) 
{
	var opt_list = getSelectedOptions( obj );
	if( opt_list.length > 0 ) {
		var request = YAHOO.util.Connect.asyncRequest('POST', './common/scripts/load_industries.php', callback, "ref=" + opt_list );
	}
}

function handleSubmit() 
{
	var ele = YAHOO.util.Dom.get('industry');
	var mem_dir = YAHOO.util.Dom.get('member_dir');
	
	var node = document.createElement( "input" );
	node.setAttribute( "name", "conf_1" );
	node.setAttribute( "type", "hidden" );
	node.setAttribute( "value", getSelectedOptions( ele ) );

	mem_dir.appendChild( node );
	
	var ele = YAHOO.util.Dom.get('sub_industry');
	if ( ele != null ) {
		var node = document.createElement( "input" );
		node.setAttribute( "name", "conf_2" );
		node.setAttribute( "type", "hidden" );
		node.setAttribute( "value", getSelectedOptions( ele ) );
	
		mem_dir.appendChild( node );		
	}
	
	var ele = YAHOO.util.Dom.get('category');
	if ( ele != null ) {
		var node = document.createElement( "input" );
		node.setAttribute( "name", "conf_3" );
		node.setAttribute( "type", "hidden" );
		node.setAttribute( "value", getSelectedOptions( ele ) );
	
		mem_dir.appendChild( node );		
	}

	document.getElementById('member_dir').submit();
	return false;
}


function handlePagination( index )
{

	YAHOO.util.Dom.get('page_index').value = index;
	//YAHOO.util.Dom.get('member_dir').appendChild( node );
	
	handleSubmit();
}

function handleStartsWith( letter )
{
	
	YAHOO.util.Dom.get('starts_with_index').value = letter;
	YAHOO.util.Dom.get('page_index').value = 1;
	
//alert("value set to " + document.getElementById('starts_with_index').value);

	//YAHOO.util.Dom.get('member_dir').appendChild( node );
	
	handleSubmit();
}

/**
 * Bootstrap method called 'onDOMReady'
 * @method init
 */
function init() 
{
	YAHOO.util.Event.on( YAHOO.util.Dom.getElementsByClassName( 'member_select', 'select', 'content' ), 'change', indexChanged ); // setup onchange handlers
	
	YAHOO.util.Event.on( 'member_dir_submit', 'click', handleSubmit ); // member dir submit
	//keyListener = YAHOO.util.KeyListener( document, { keys:13 }, handleSubmit);
	//keyListener.enable();
	//periodic_func = YAHOO.lang.later(5000,null,loadSelects,null,true);
}

YAHOO.util.Event.onDOMReady(init);