var m_sErrMsg = "";
var m_sSelectLimitMsg = String1;
var m_sHitLimitMsg	  = String2;
var m_lSelectionLimit = 100;

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
	{
		sCode = oCheck.value;

		DeleteCode( sCode, oData );
		
		oChecked = document.forms[0].check;
		
		/* oChecked = document.getElementsByName( "check" ); */
		
		for ( i = 0; i < oChecked.length; i++ )
		{
			if  ( oChecked[i].value == sCode )
			{
				if  ( oChecked[i].checked == true )
				{
					oChecked[i].checked = false;
				}
			}
		}
	}
	return oData;
}
		
function ClearCheckboxes( oCheckAll, oCheckBoxes )
{
	oCheckAll.checked = false;
		
	//if there is onley one record oCheckBoxes is not an array
	if( oCheckBoxes && oCheckBoxes.value )
	{
		oCheckBoxes.checked = false;
	}
	else if( oCheckBoxes )
	{		
		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) 
{
	SelectCheckboxes(SelectedCodes, HitCount, oCheckAll, oCheckBoxes, false)
}
function SelectCheckboxes(SelectedCodes, HitCount, oCheckAll, oCheckBoxes, exclDisabled)
{

	m_sErrMsg = '';
	var oData = new StructSelect(SelectedCodes, HitCount );
		
	if ( oCheckAll.checked == false)
		UncheckAll(oCheckBoxes, oData);
	else
		CheckAll(oCheckBoxes, oData,exclDisabled);

	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) 
{
	CheckAll(oCheckBoxes, oData, exclDisabled, false)
}
function CheckAll(oCheckBoxes, oData, exclDisabled)
{
	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 (exclDisabled && oCheckBoxes[i].disabled == true) continue;
			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)
{
	if (oData.NumSelected() >= m_lSelectionLimit)
	{
		return m_sSelectLimitMsg;
	}
	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=yes,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
// Cookie Stuff
function getCookie(dc)
{
    var name = "WebOpac";
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
function getValue( sCookie, sKey )
{
	var aCookie = sCookie.split( "&" );
	var sValue = "";
	for ( element in aCookie )
	{
		var values = aCookie[element].split( "=" );
		if ( values.length == 2 )
		{
			if ( values[0].toLowerCase() == sKey.toLowerCase() )
				sValue = values[1];
		}
	}
	return sValue;
}
function getSaveValue( sCookie )
{
	return 	( getValue( sCookie, "SavePswd" ) == "1" );
}
function getNameValue( sCookie )
{
	return 	getValue( sCookie, "userBC" );
}
function getPwdValue( sCookie )
{
	return 	getValue( sCookie, "Pswd" );
}
function getCartCookie(patronID)
{
	var name = "CartRequestCodes" + patronID;
    var prefix = name;
    alert( document.cookie);
    var begin = document.cookie.indexOf("; " + prefix);
    if (begin == -1)
    {
        begin = document.cookie.indexOf(prefix);
        if (begin != 0) return "";
    }
    else
    {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1)
    {
        end = document.cookie.length;
    }
    return unescape(document.cookie.substring(begin + prefix.length, end));
}
function getCartRequestCodes(patronID)
{
	var name = "CartRequestCodes" + patronID + "=";
	var prefix = name;
	var begin = document.cookie.indexOf("; " + prefix);
	if (begin == -1)
	{
		begin = document.cookie.indexOf(prefix);
		if (begin != 0) return "";
	}
	else
	{
		begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
	{
		end = document.cookie.length;
	}
	return unescape(document.cookie.substring(begin + prefix.length, end));
}
function addCartRequestCode(requestCodes, id)
{
	var aCodes;
	var i;
	if (requestCodes.length == 0)
		aCodes = new Array();
	else
		aCodes = requestCodes.split("|");
	
	for (i = 0; i < aCodes.length; i++)
	{
		if (aCodes[i] == id)
			break;
	}

	if (i == aCodes.length) aCodes.splice(0, 0, id);

	return aCodes.join("|");
}
function setCartRequestCodes(patronID, codes, expires, path)
{
	var name = "CartRequestCodes" + patronID;
	var today = new Date();
	today.setTime(today.getTime());
	if (expires)
	{
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date(today.getTime() + (expires));
	var	sNewCookie = escape(codes);
	sNewCookie = sNewCookie + ";path=" + path ;
	sNewCookie = sNewCookie + ";expires=" + ((expires) ? expires_date.toGMTString() : "");
	document.cookie = name + "=" + sNewCookie;
}
// End Cookie Stuff
