// Hide or show elements on a page
// nodeIds - ID of one or more (separated by "|") elements on a page
// visTo - takes a value of 0 or 1 to set visibility as either none or block (by default)
// visType (optional) - allows override of default block visibility type for other options (e.g. inline, table-row-group, etc.)
function hide_show(nodeIds, visTo, visType)
{
	var nodeIdArr = nodeIds.split("|");
	
	for(i=0; i<nodeIdArr.length; i++) {
		var nodeId = nodeIdArr[i];
		var thisNode = $(nodeId);
		
		// check for node's current visibility
		if(visTo == 1) {
			if(visType) {
				if( (visType == "table-row-group" || visType == "table-row") && document.all ) visType = "block";
				thisNode.style.display = visType;
			} else {
				thisNode.style.display = "block";
			}
		} else if(visTo == 0) {
			thisNode.style.display = "none";
		} else { // find node current vis and assume the opposite
			var currVis = thisNode.style.display;
			
			if(currVis) {
				if(currVis == "none")
					thisNode.style.display = ( visType ? visType : "block" );
				else
					thisNode.style.display = "none";
			} else if(thisNode.className == "no_show") {
				thisNode.style.display = ( visType ? visType : "block" );
			} else { // assume element starts as visible
				thisNode.style.display = "none";
			}
		}
	}
}

function toggle_vis(nodeIds, visType)
{
	var nodeIdArr = nodeIds.split("|");
	if( (visType == "table-row-group" || visType == "table-row") && document.all )
		visType = "block";

	for(i=0; i<nodeIdArr.length; i++) {
		var nodeId = nodeIdArr[i];
		var thisNode = $(nodeId);
		
		// check for node's current visibility
		var currVis = thisNode.style.display;
		if(currVis) {
			if( currVis == "none" )
				thisNode.style.display = ( visType != null ? visType : "block" );
			else
				thisNode.style.display = "none";
		} else if(thisNode.className == "no_show") {
			thisNode.style.display = ( visType != null ? visType : "block" );
		} else { // assume element starts as visible
			thisNode.style.display = "none";
		}
	}
}

function setupTabs() {
	var tabDiv = $("tabs");
	if( tabDiv.className != "no_js" ) {
		var tabList = tabDiv.getElementsByTagName("a");
		if( tabList.length > 0 ) {
			for( var i=0; i<tabList.length; i++ ) {
				var thisTab = tabList[i];
				thisTab.href = "javascript:void(null);";
				
				if( thisTab.className != "no_click" ) {
					if( thisTab.addEventListener )
						thisTab.addEventListener("click", toggleTab, true);
					else
						thisTab.attachEvent("onclick", toggleTab);
				}
			}
		}
	}
}

function toggleTab(event) {
	var clickedTab = ( event.target ? event.target : event.srcElement );
	var tabId = clickedTab.id;
	var assocForm = $(tabId + "_form");

	var tabDiv = $("tabs");
	var tabList = tabDiv.getElementsByTagName("a");
	if( tabList.length > 0 ) {
		for( var i=0; i<tabList.length; i++ ) {
			var thisTab = tabList[i];
			var thisForm = $(thisTab.id + "_form");

			if( thisTab.className != "no_click" ) {
				$(thisTab).removeClassName('active');
				if( thisForm ) thisForm.addClassName("no_show");
			}
			
			$('tabs').removeClassName(thisTab.id);
		}
	}
	
	$('tabs').addClassName(clickedTab.id);
	
	clickedTab.addClassName("active");
	if( assocForm ) assocForm.className = "";
	
	return false;
}


function toggleChecked(areaId, allNone) {
	var inputs = $(areaId).getElementsByTagName("input");

	if( inputs.length > 0 ) {
		for( var i=0; i<inputs.length; i++ ) {
			var this_input = inputs[i];
			var input_type = this_input.type;
			if( input_type == "checkbox" ) {
				this_input.checked = ( allNone == "all" ? 1 : 0 );
			}
		}
	}
}


function swap_expand_icons(clicked_header) {
	var curr_class = clicked_header.className;

	if( curr_class == "expandable")
		var new_class = "contractable";
	else
		var new_class = "expandable";

	clicked_header.className = new_class;
}

// entity sponsorship request
function add_to_request(entity_id, entity_name) {
	// check to see if entity already in request
	var chosen_entity = $("req_entity_" + entity_id);
	if( !chosen_entity ) {
		// add entity to request list
		var req_list = $("sponsor_req_list");

		var item_li = document.createElement("li");
		item_li.id = "req_entity_" + entity_id;

		var item_field = document.createElement("input");
		item_field.type = "hidden";
		item_field.name = "req_entities[]";
		item_field.value = entity_id;

		var item_text = document.createTextNode(entity_name + " ");

		var rem_link = document.createElement("a");
		rem_link.href = "javascript: remove_from_request(" + entity_id + ")";
		var rem_link_text = document.createTextNode("remove");

		rem_link.appendChild(rem_link_text);
		item_li.appendChild(item_field);
		item_li.appendChild(item_text);
		item_li.appendChild(rem_link);
		req_list.appendChild(item_li);
	}
}

function remove_from_request(entity_id) {
	var this_entity = $("req_entity_" + entity_id);
	this_entity.parentNode.removeChild( this_entity );
}



// find all the forms with textareas we want to allow to collapse
function setupTextareas() {
	var pageForms = document.getElementsByTagName("form");

	for( var j=0; j<pageForms.length; j++) {
		var formArea = pageForms[j];

		if( formArea.className.indexOf("collapse_tareas") > -1 ) {
			var txtAreas = formArea.getElementsByTagName("textarea");
			for( var i=0; i<txtAreas.length; i++ ) {
				var thisTxtArea = txtAreas[i];

				if( thisTxtArea.addEventListener ) {
					thisTxtArea.addEventListener("focus", bigSmlTextarea, false);
					thisTxtArea.addEventListener("blur", bigSmlTextarea, false);
				} else { // IE
					thisTxtArea.attachEvent("onfocus", bigSmlTextarea);
					thisTxtArea.attachEvent("onblur", bigSmlTextarea);
				}
			}
		}
	}
}

// collapse or expand a textarea
function bigSmlTextarea(e)
{
	var node = ( e.target ? e.target : e.srcElement );

	if( node.className.indexOf("expanded") == -1 )
		node.className += " expanded";
	else
		node.className = node.className.replace(/expanded/gi, "");
}


function signInFocus() {
	inputFieldFocus("signin_un");
}

function inputFieldFocus(fieldId) {
	var thisField = $(fieldId);
	if( thisField )
		thisField.focus();
}


/*function $(element_id) {
	var thisElement = document.getElementById(element_id);
	if(thisElement)
		return thisElement;
}*/


function clearField( field_name )
{
	document.getElementById( field_name ).value = '';
	document.getElementById( field_name ).style.backgroundColor = '';
}

function highlightFields( field_str )
{
	var fields = field_str.split(',');
	
	for( var i=0; i<fields.length; i++ )
	{
		highlightField( fields[i], '#F6F5CF' ); 
	}
	
}


function highlightField( field_name, field_color )
{
	document.getElementById( field_name ).style.backgroundColor = field_color;
}


function formatCurrency(num) 
{
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') +  num + '.' + cents);
}	//end function

function validate_required_fields(frmName, strTextBoxes)
{
	var oForm = document.getElementById(frmName);
	
	//turn the comma separated list into an array
	var arrBoxes = strTextBoxes.split(",");
	
	error = 0;
	
	//loop thru each box and determine if the text value is empty
	for( var intCount = 0; intCount < arrBoxes.length; intCount++ )
	{
		arrBoxes[intCount] = arrBoxes[intCount].trim_spaces();
		
		//alert( "inCount: " + intCount + " - text box: -->" + arrBoxes[intCount] + "<--" );
		
		var strText = document.getElementById(arrBoxes[intCount]).value;
		
		if( strText.length == 0 )
		{
			error++;
			
		}	//end if
		
	}	//end for loop
	
	//if any errors, then user did not enter all the required fields
	if( error > 0 )
	{
		alert( "Please enter all the required fields." );
		
		valid = false;
		
	}	//end if
	
	else
	{
		valid = true;
		
	}	//end else
	
	return valid;
	
}	//end function

function pop_templates()
{
	window.open('pop_templates.php','admin_pop','width=600,height=400,scrollbars=yes,resizable=yes');	
}

//removes all spaces in a string
function removespaces() 
{
	return this.replace(/.*\S/,'');
	
}	//end function

//trims leading and trailing spaces
function trim_spaces() 
{
	return this.replace(/^\s+/,'').replace(/\s+$/,'');
	
}	//end function

function clear_image( field_id )
{
	document.getElementById( 'pg-' + field_id ).src = 'images/spacer.gif';
	document.getElementById( field_id ).value = '';
	document.getElementById( field_id + '_filename' ).value = '';
}

function clear_link( field_id )
{
	document.getElementById( field_id ).value = '';
	document.getElementById( field_id + '_text' ).innerHTML = '';
	document.getElementById( field_id + '_text' ).style.backgroundColor = '';
}


var menu;
var theTop = 0;
var old = theTop;

function StartFloat() {
	menu = document.getElementById("ColFloater");
	movemenu();
}

function movemenu()
{
	if (window.innerHeight) {
		var pos = window.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		pos = document.documentElement.scrollTop;
	} else if (document.body) {
		pos = document.body.scrollTop;
	}

	if (pos < theTop)
		pos = theTop;

	if (pos == old) {
		menu.style.top = pos + "px";
	}

	old = pos;
	temp = setTimeout('movemenu()',100);
}

function search_form() {
	toggle_vis('search_left');
	toggle_vis('search_left_open');	

	if( $('search_left_open').style.display == 'block' )
		$('field_keywords').focus();
}

function track_rfp(rfp_id) {
	var url = '/account-action.php?task=add_track_rfp&rfp_id='+rfp_id;
	$$('#track_rfp .action').invoke('hide');
	$$('#track_rfp .ajax').invoke('show');
	new Ajax.Request(url, {
		onComplete: function() {
			$$('#track_rfp .ajax').invoke('hide');
		},
		onSuccess: function() {
			$$('#track_rfp .tracking').invoke('show');
		},
		onFailure: function() {
			$$('#track_rfp .ajax_error').invoke('show');
		}
	});
}

function add_entity_to_service_area(eid) {
	var url = '/account-action.php?task=add_entity_to_service_area&eid='+eid;
	$$('#service_area_ajax .not_in_area').invoke('hide');
	$$('#service_area_ajax .ajax').invoke('show');
	new Ajax.Request(url, {
		onComplete: function() {
			$$('#service_area_ajax .ajax').invoke('hide');
		},
		onSuccess: function() {
			$$('#service_area_ajax .in_area').invoke('show');
		},
		onFailure: function() {
			$$('#service_area_ajax .ajax_error').invoke('show');
		}
	});
}

//assigns a new function to string types
String.prototype.removespaces = removespaces;
String.prototype.trim_spaces = trim_spaces;

function init() {
	fayt_init();
	setupTextareas();
}

window.onload = init;


// jQuery Scope
jQuery(function($) {
	
	// Date Picker
	$(function() {
		$(':text[name*=date]:not([name*=update])').live('click', function() {
			$(this)
				.datepicker({
					duration: 0,
					dateFormat: 'm/d/yy',
					changeMonth: true,
					changeYear: true,
					showOn: 'focus'
				})
				.focus()
		})
		$(':text[name*=time]').live('click', function() {
			$(this)
				.timepicker()
				.focus()
		})
	})
	
	// RFP Files and Addendums
	$('tr .add-row').live('click', function() {
		var $this = $(this);
		var $row = $this.closest('tr');
		var $clone = $row.clone(false);
		$row.after($clone);
		$clone.find(':input:not(:hidden)').val('');
		$clone.find(':input').removeAttr('id');
		$clone.find('.hasDatepicker').removeClass('hasDatepicker');
		$clone.find('.hasTimepicker').removeClass('hasTimepicker');
	})
	$('tr .remove-row').live('click', function() {
		var $this = $(this);
		var $row = $this.closest('tr');
		if(confirm('Are you sure you want to delete this?')) $row.remove();
	})
})//*/