var m_sErrMsg = '';
var m_sSelectLimitMsg = String1;
var m_sHitLimitMsg	  = String2;
var m_lSelectionLimit = 100;
var m_lHitCountLimit  = 1000;

function StructSelect(SelectedCodes, HitCount )
{
	this.Codes		 = SelectedCodes;
	this.NumHits	 = eval(HitCount);
	this.NumSelected = function()
	{
		var lCount;
		
		if (  this.Codes != null && this.Codes != '')
			lCount = this.Codes.split('|').length; 
		else
			lCount = 0;
		
		return lCount;
	}
}

function SelectCheckbox( oCheck, SelectedCodes, HitCount )
{
	m_sErrMsg = '';
	
	var oData = new StructSelect(SelectedCodes, HitCount );
	
	if ( oCheck.checked == true )
	{
		AddCode( oCheck.value, oData )
			
		if ( m_sErrMsg != '' ) 
		{
			alert( m_sErrMsg );
			oCheck.checked = false;
		}
	}
	else
		DeleteCode( oCheck.value, oData );
	
	return oData;
}
		
function ClearCheckboxes( oCheckAll, oCheckBoxes )
{
	oCheckAll.checked = false;
		
	for ( i = 0; i < oCheckBoxes.length; i++ )
	{
		 oCheckBoxes[i].checked = false;
	}

	return new StructSelect( "", 0 );
}



//--------------------------------------------------------
// Name: SelectAll
// Purpose: Selects / deselects all entrees in a grid
//--------------------------------------------------------

function SelectCheckboxes(SelectedCodes, HitCount, oCheckAll, oCheckBoxes)
{

	m_sErrMsg = '';
	var oData = new StructSelect(SelectedCodes, HitCount );
		
	if ( oCheckAll.checked == false)
		UncheckAll(oCheckBoxes, oData);
	else
		CheckAll(oCheckBoxes, oData);

	if ( m_sErrMsg != '' ) alert( m_sErrMsg );
		
	return oData;
}
		
//------------------- Private Functions ---------------------------
function UncheckAll(oCheckBoxes, oData)
{
	var i;
	m_sErrMsg = '';
	
	if ( oCheckBoxes.value ) 
	{	
		if ( oCheckBoxes.checked == true )
		{ 
			DeleteCode( oCheckBoxes.value, oData  );	
			oCheckBoxes.checked = false;
		}
	}
	else
	{
		for ( i = 0; i < oCheckBoxes.length; i++ )
		{
			 if ( oCheckBoxes[i].checked == true )
			 {
				
				DeleteCode( oCheckBoxes[i].value, oData  );	
				oCheckBoxes[i].checked = false;
			}
		}
	}
}

function CheckAll(oCheckBoxes, oData)
{
	var i;
	m_sErrMsg = '';
	
	if ( oCheckBoxes.value ) 
	{	
		if ( oCheckBoxes.checked == false )
		{ 
			AddCode( oCheckBoxes.value, oData  );
			if ( m_sErrMsg == '' )	oCheckBoxes.checked = true;
		}
	}
	else
	{
		for ( i = 0; i < oCheckBoxes.length; i++ )
		{
			if ( oCheckBoxes[i].checked == false )
			{			
				AddCode( oCheckBoxes[i].value, oData  );
				
				if ( m_sErrMsg == '' )
					oCheckBoxes[i].checked = true;
				else
					break;
			}
		}
	}
}
	
function GetCodeStruct(Code)
{
	var oCode = new Object();

		
	if ( Code.indexOf("~") != -1 )
	{
			
		oCode.hitCount = eval(Code.substring( Code.indexOf("~") + 1, Code.length ));
		oCode.value    = Code.substring( 0, Code.indexOf("~") );	
	}
	else
	{
		oCode.value = Code;
		oCode.hitCount = 0;
	}
		
	return oCode;
}
		
function CheckLimits(oData)
{
	var sErrMsg;
	
	if ( oData.NumSelected() >= m_lSelectionLimit ) 
		return m_sSelectLimitMsg; 
	else if ( oData.NumHits >= m_lHitCountLimit ) 
		return m_sHitLimitMsg; 
	else
		return '';
}

function AddCode( Code, oData )
{
	var sCodes		= "|" + oData.Codes + "|";
	var oCode		= GetCodeStruct( Code );
	m_sErrMsg		= '';
	
	//Exit if we reached a limit
	m_sErrMsg = CheckLimits(oData)
	if (m_sErrMsg != '' ) return oData;
			
			
	if ( sCodes != "||" )
	{
		if ( sCodes.indexOf( "|" + oCode.value + "|") == -1 )
		{ sCodes += oCode.value + "|";	} 
	}
	else
	{
		sCodes = "|" + oCode.value + "|";
	}
		
	oData.NumHits		 = oData.NumHits + oCode.hitCount;
	oData.Codes			 = sCodes.substring( 1, sCodes.length - 1 );
}

function DeleteCode( Code, oData )
{
	var oCode	= GetCodeStruct( Code );
	var sCodes  = "|" + oData.Codes + "|";
	var sCode   = "|" + oCode.value + "|";
	var lPos;
	
	m_sErrMsg = '';
	
	if ( sCodes != "||" )
	{
		lPos = sCodes.indexOf( "|" + oCode.value + "|" );
			
		sCodes = sCodes.substring( 0, lPos + 1 ) +
				 sCodes.substring( lPos + sCode.length, sCodes.length );
			
		oData.NumHits = oData.NumHits - oCode.hitCount;
	}
		
	if ( sCodes == "|" ) 
		oData.Codes = "";
	else
		oData.Codes = sCodes.substring( 1, sCodes.length - 1 );
}

function display(id, str) 
{	
	if (document.all) 
	{ 
		document.all[id].innerHTML = str; 
	}
	else
	{
		var oInput = eval( 'document.frmMain.' + id );
		oInput.value = str;
	}
}

//******************************** End CheckBox Functions ******************

function PopTitleWindow(url, width, height)
{
	if ( window.TitleWindow && !window.TitleWindow.closed ) window.TitleWindow.close();

	var windowOptions = 'width=' + width + ',height=' + height
	                    + ',left=50,top=10,screenx=50,screeny=0,dependent=yes,alwaysRaised=yes,resizable=no,toolbar=yes,directories=no,location=no,scrollbars=yes,menubar=no,';
	window.TitleWindow =  open(url, "Titles", windowOptions, true );

}

function OpenNewSaveWindow(url, width, height)
{
	if ( window.SaveWindow && !window.SaveWindow.closed ) window.SaveWindow.close();

	var windowOptions = 'width=' + width + ',height=' + height
	                    + ',left=50,top=10,screenx=50,screeny=0,dependent=yes,alwaysRaised=yes,resizable=no,toolbar=no,directories=no,location=no,scrollbars=no,menubar=no,';
	window.SaveWindow =  open(url, "SaveWindow", windowOptions, true );

}

function removespace(s, t) 
{
   i = s.indexOf(t);
   r = "";
   if (i == -1) return s;
   r += s.substring(0,i) + removespace(s.substring(i + t.length), t);
   return r;
}
	
function IsEmpty(s) 
{  
   if ( removespace(s, ' ') == '' ) 
		return true;
   else
		return false;
}
//***********************************SCRIPT FOR THE BUTTONS***********************
function OnHoverButtonOn(id) 
{
	var oButton = eval( 'button_txt_' + id );
	var oTopBorder = eval( 'top_button_border_' + id );
	var oLeftBorder = eval( 'left_button_border_' + id );
	var oRightBorder = eval( 'right_button_border_' + id );
	var oBottomBorder = eval( 'bottom_button_border_' + id );
	var oButtonLink = eval( 'button_link_' + id );
		
	oButton.style.cursor = 'hand';
	oButtonLink.style.cursor = 'hand';
	oButtonLink.className = 'CoolButtonLinkOn';
	oButton.className = 'CoolButtonOn';
	oTopBorder.className = 'CoolButtonBorderOn';
	oLeftBorder.className = 'CoolButtonBorderOn';
	oRightBorder.className = 'CoolButtonBorderOn';
	oBottomBorder.className = 'CoolButtonBorderOn';
}
	
function OnHoverButtonOff(id) 
{
	var oButton = eval( 'button_txt_' + id );
	var oTopBorder = eval( 'top_button_border_' + id );
	var oLeftBorder = eval( 'left_button_border_' + id );
	var oRightBorder = eval( 'right_button_border_' + id );
	var oBottomBorder = eval( 'bottom_button_border_' + id );
	var oButtonLink = eval( 'button_link_' + id );
		
	oButton.style.cursor = 'default';
	oButtonLink.style.cursor = 'default';
	oButtonLink.className = 'CoolButtonLinkOff';
	oButton.className = 'CoolButtonOff';
	oTopBorder.className = 'CoolButtonBorderOff';
	oLeftBorder.className = 'CoolButtonBorderOff';
	oRightBorder.className = 'CoolButtonBorderOff';
	oBottomBorder.className = 'CoolButtonBorderOff';
}
	
function OnHoverButtonClk(src) 
{
	if(event.srcElement.tagName=='TD')
	{
		src.children.tags('nobr')[0].children.tags('a')[0].click();
	}
}

//END SCRIPT FOR THE BUTTONS


