<!--
/*
* Copyright (c) 2005
* Talis Information Ltd.
* Knights Court
* Solihull Parkway
* Birmingham Business Park
* B37 7YB
* United Kingdom
* All rights reserved.
*
* This software is the confidential and proprietary information of Talis
* Information Ltd. ("Confidential Information").  You shall not
* disclose such Confidential Information and shall use it only in
* accordance with the terms of the license agreement you entered into
* with Talis.
*
* @version $Revision: 1.18 $ $Date: 2005/05/04 10:24:53 $
* @author $Author: pxg $
*/
<!--
var timerId = -1;

var navClicked = false;

function singleClick(){
  if (timerId!=-1) {
    clearTimeout(timerId);
  }
  timerId = -1;
  	if(navClicked){
		return false;
	}
	navClicked = true;
	return true;
}

// button bounce
function lockDownButtons(){
  // do not accept any more button clicks untill a set period has elapsed
  if (enabled==true){
	if (hasPageTimeout){
	  clearTimeout(pageTimeout);
	}
	enabled=false;
	setTimeout('enabled=true;',buttonBounceTimeout);
	return true;
  }else{
	return false;
  }
}
function doDoubleClickBounce(){
  if (timerId!=-1) {
    clearTimeout(timerId);
  }
  timerId = -1;
    // pause accepting button Clicks for a minimum of 1/2 a second to catch mistaken double Clicks
  if (enabled==true){
	if (hasPageTimeout){
	  clearTimeout(pageTimeout);
	}
	enabled=false;
	setTimeout('enabled=true;',500);
	return true;
  }else{
	return false;
  }

}

/**
 * removes all trailing and preceeding space's
 */
function trim (p_String) {
  if (p_String.length==0) {
	return "";
  }
  var start = 0;
  for (; start < p_String.length; start++) {
	if (p_String.charAt(start)!=' ') {
	  break;
	}
  }

  if (start == p_String.length) {
	return "";
  }

  var end = p_String.length-1;
  for (end; end>start; end--) {
	if (p_String.charAt(end)!=' ') {
	  break;
	}
  }

  return p_String.substring(start, end+1);
}

/**
 * validates the search is correct
 */
function checkSearch (p_form) {
  var i = 1;
  var j = 1;
  var sv = "";
  var st = "";
  var formObject;
  var canSearch=false;
  for( i = 1  ; i < 12 ;i++){
	for( j = 0  ; j < p_form.elements.length ;j++){
	  if (p_form.elements[j].name == "sv"+i){
		formObject = p_form.elements[j];
		sv = formObject.value;
	  }else if (p_form.elements[j].name == "st"+i){
		 var criteria = p_form.elements[j];
		 if ( criteria.type=="text" ||  criteria.type=="hidden"){
			 st = criteria.value;
		}else if (criteria.type =="select-one"){
		  selIdx = criteria.selectedIndex;
		  if ( selIdx <0){ /* there should always be a selected value*/
		   selIdx=0;
		  }
		  st =criteria.options[selIdx].value;
		}
	  }
	  // new section added to support browse validation - axe 18/01/06 defect2829 for Prism 2.1
	  else if (p_form.elements[j].name == "indexSearchTerm"){
		formObject = p_form.elements[j];
		sv = formObject.value;
	  }else if (p_form.elements[j].name == "index"){
		 var criteria = p_form.elements[j];
		 if ( criteria.type=="text" ||  criteria.type=="hidden"){
			 st = criteria.value;
		}else if (criteria.type =="select-one"){
		  selIdx = criteria.selectedIndex;
		  if ( selIdx <0){ /* there should always be a selected value*/
		   selIdx=0;
		  }
		  st =criteria.options[selIdx].value;
		}
	  }
	  // end of new section added to support browse validation
	}
	if ( sv.length >0 ){
	  if ( st == "keyword"){
		sv=trim(sv);
		if (sv.length < MinKeywordCharacters) {
		  alert (minKeywordMsg_Pre+" "+MinKeywordCharacters+" "+minKeywordMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxKeywordCharacters) {
		  alert (maxKeywordMsg_Pre+" "+MaxKeywordCharacters+" "+maxKeywordMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else if ( st == "controlNumber" || st == "number"){ // number added to support browse validation - axe 18/01/06 defect2829 for Prism 2.1
		if (sv.length < MinControlNumberCharacters) {
		  alert (minControlNumberMsg_Pre+" "+MinControlNumberCharacters+" "+minControlNumberMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxControlNumberCharacters) {
		  alert (maxControlNumberMsg_Pre+" "+MaxControlNumberCharacters+" "+maxControlNumberMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else if ( st == "author"){
		if (sv.length < MinAuthorCharacters) {
		  alert (minAuthorMsg_Pre+" "+MinAuthorCharacters+" "+minAuthorMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxAuthorCharacters) {
		  alert (maxAuthorMsg_Pre+" "+MaxAuthorCharacters+" "+maxAuthorMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else if ( st == "class"){
		if (sv.length < MinClassNumberCharacters) {
		  alert (minClassNumberMsg_Pre+" "+MinClassNumberCharacters+" "+minClassNumberMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxClassNumberCharacters) {
		  alert (maxClassNumberMsg_Pre+" "+MaxClassNumberCharacters+" "+maxClassNumberMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else if ( st == "title"){
		if (sv.length < MinTitleCharacters) {
		  alert (minTitleMsg_Pre+" "+MinTitleCharacters+" "+minTitleMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxTitleCharacters) {
		  alert (maxTitleMsg_Pre+" "+MaxTitleCharacters+" "+maxTitleMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else if ( st == "readingList"){
		if (sv.length < MinReadingListCharacters) {
		  alert (minReadingListMsg_Pre+" "+MinReadingListCharacters+" "+minReadingListMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxReadingListCharacters) {
		  alert (maxReadingListMsg_Pre+" "+MaxReadingListCharacters+" "+maxReadingListMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }else{ // do default
		sv=trim(sv);
		if (sv.length < MinDefaultCharacters) {
		  alert (minDefaultCriteriaMsg_Pre+" "+MinDefaultCharacters+" "+minDefaultCriteriaMsg_Post);
		  formObject.focus();
		  return false;
		}else if (sv.length > MaxDefaultCharacters) {
		  alert (maxDefaultCriteriaMsg_Pre+" "+MaxDefaultCharacters+" "+maxDefaultCriteriaMsg_Post);
		  formObject.focus();
		  return false;
		}else{
		  canSearch=true;
		}
	  }
	}
  }
  if ( canSearch){
	return true;
  }else{
	alert (noCriteriaMsg);
	return false;
  }
}

var blockPutFocus=false;
function putFocus(){
  if  (!blockPutFocus){
	var form = 0;
	var element = 0;
	var found = false;
	for(form=0; form < document.forms.length; form++){
	  for(element=0; element < document.forms[form].elements.length; element++){
		if (document.forms[form].elements[element].type == "textarea" ||
			document.forms[form].elements[element].type == "text" ||
   document.forms[form].elements[element].type == "password"){
		document.forms[form].elements[element].focus();
		return;
	  }
	  }
	}
  }
}
var da = (document.all) ? 1 : 0;
var pr = (window.print) ? 1 : 0;
var mac = (navigator.userAgent.indexOf("Mac") != -1);

function printPage() {
	if (pr) // NS4, IE5
		window.print()
	else if (da && !mac) // IE4 (Windows)
		vbPrintPage()
	else // other browsers
		alert(noPrint);
	return false;
}

if (da && !pr && !mac) with (document) {
	writeln('<OBJECT ID="WB" WIDTH="0" HEIGHT="0" CLASSID="clsid:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>');
	writeln('<' + 'SCRIPT LANGUAGE="VBScript">');
	writeln('Sub window_onunload');
	writeln('  On Error Resume Next');
	writeln('  Set WB = nothing');
	writeln('End Sub');
	writeln('Sub vbPrintPage');
	writeln('  OLECMDID_PRINT = 6');
	writeln('  OLECMDEXECOPT_DONTPROMPTUSER = 2');
	writeln('  OLECMDEXECOPT_PROMPTUSER = 1');
	writeln('  On Error Resume Next');
	writeln('  WB.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER');
	writeln('End Sub');
	writeln('</SCRIPT>');
}

// replace this page ( and remove it from history) with the page you would get if the
// form stated was submitted
function replacePage(p_form){
	var submitText="?";
	var loop=0;
  if (p_form.elements && p_form.elements.length){
    for(loop=0;loop<p_form.elements.length;loop++){
      myType = p_form.elements[loop].type;
      myName = p_form.elements[loop].name;
      if (myType !="submit" && myType !="button" &&	myType !="reset" &&
          myName.substr(0,7)!="hidden_"){
        if (myType =="select-one"){
          selIdx = p_form.elements[loop].selectedIndex;
          if ( selIdx <0){ /* there should always be a selected value*/
            selIdx=0;
          }
          submitText=submitText + myName+"="+escape(p_form.elements[loop].options[selIdx].value)+"&";
        }else if (myType =="checkbox" || myType =="radio"){
          // if we're a checkbox or radio make sure we're checked.
          if( p_form.elements[loop].checked==true){
            submitText=submitText + myName+"="+escape(p_form.elements[loop].value)+"&";
          }
        }else{
          submitText=submitText + myName+"="+escape(p_form.elements[loop].value)+"&";
        }
      }
    }
  }
	location.replace(p_form.action+submitText);
 return false;
}

// force simple pagereplacement
function replaceCurrentPageWith(page,displayText,linkText){
  document.open("text/html","replace") // "replace" the current document in the history
  document.write("<html><head>\n<Script Language=\"Javascript1.1\">\nfunction doReplace(){\nlocation.replace(\""+URLRoot+page+";jsessionid="+jSessionId+"\")\n}</Script></head><body onload=\"var pageTimeout=setTimeout('doReplace()',300);\">\n<font face=\"Arial\" size=\"2\""+displayText+"<p>\n<a href=\""+URLRoot+page+"\" onClick=\"doReplace();return false\">"+linkText+"</a></font>\n</body></html>");
  document.close()
}
// only load this page one if loaded a second time force user out to the default search
function loadOnce(){
  if (document.loadOnce.hasLoaded.value=="yes"){
	replaceCurrentPageWith("",defaultExpiryText,defaultExpiryLinkText);
  }else{
	document.loadOnce.hasLoaded.value="yes"
  }
}
// only load this page once, if loaded a second time goto page stated
function loadPageOnce(page){
  if (document.loadOnce.hasLoaded.value=="yes"){
	replaceCurrentPageWith(page,simpleExpiryText,simpleExpiryLinkText);
  }else{
	document.loadOnce.hasLoaded.value="yes"
  }
}
// force all multiselect lists in the form to jump to their first selected value.
function forceSelectListShowSelected( p_form ) {
  if(p_form){
  for(count=0; count < p_form.elements.length; count++){
	if (p_form.elements[count].type == "select-multiple"){
	  for(count2=0; count2<p_form.elements[count].options.length; count2++){
		if( p_form.elements[count].options[count2].selected){
		  p_form.elements[count].options[count2].selected=true;
		  break;
		}
	  }
	}
  }
  }
}
/**
 * confirm that there are ILLS to Cancel, if not display approprate Error
 * Message
 *
 * @return true if they have selected one or more ILLS
 */
function ConfirmCancelIll(form) {
count=0;
	if(form.iLLRows.length){
		for (i=0 ;i<form.iLLRows.length; i++){
			if ( form.iLLRows[i].checked){
				count++;
				if ( count >1){
					 break;
				}
			}
		}
	}else{
	// must only be one record
		if( form.iLLRows.checked){
			count=1;
		}
	}
	switch(count){
		case 2:
				 if (confirm(pluralILLs)){
					return true;
				 }
				 break;
		case 1:
				 if (confirm(singularILLs)){
					return true;
				 }
				 break;
		default:
		alert(noILLsSelected);
			break
	}
	return false;
}

/**
 * confirm that there are Bookings to Cancel, if not display approprate Error
 * Message
 *
 * @return true if they have selected one or more bookings
 */
function ConfirmCancelBookings(form) {
	count=0;
	if (form.bookingRows.length){
		for (i=0 ;i<form.bookingRows.length; i++){
			if ( form.bookingRows[i].checked){
				count++;
				if ( count >1){
					 break;
				}
			}
		}
	}else{
	// must only be one record
		if( form.bookingRows.checked){
			count=1;
		}
	}
	switch(count){
		case 2:
				 if (confirm(BookingsConfirmationTextPlural)){
					return true;
				 }
				 break;
		case 1:
				 if (confirm(BookingsConfirmationText)){
					return true;
				 }
				 break;
		default:
		alert(BookingsNoneSelectedText);
			break
	}
	return false;
}
/**
 * confirm that there are Reservations to Cancel, if not display approprate Error
 * Message
 *
 * @return true if they have selected one or more Reservations
 */
function ConfirmCancelReservations(form) {
  count=0;
  if (form.reservationRows.length){
	for (i=0 ;i<form.reservationRows.length; i++){
	  if ( form.reservationRows[i].checked){
		count++;
		if ( count >1){
		  break;
		}
	  }
	}
  }else{
	// must only be one record
	if( form.reservationRows.checked){
	  count=1;
	}
  }
  switch(count){
	case 2:
	  if (confirm(ReservationConfirmationTextPlural)){
		return true;
	  }
	  break;
	case 1:
	  if (confirm(ReservationConfirmationText)){
		return true;
	  }
	  break;
	default:
	  alert(ReservationNoneSelectedText);
	break
  }
  return false;
}
/**
 * confirm that there are Loans to Renew, if not display approprate Error
 * Message
 *
 * @return true if they have selected one or more Loans
 */
function ConfirmRenewLoans(form) {
  count=0;
  if (form.loanRows.length){
	for (i=0 ;i<form.loanRows.length; i++){
	  if ( form.loanRows[i].checked){
		count++;
		if ( count >1){
		  break;
		}
	  }
	}
  }else{
	// must only be one record
	if( form.loanRows.checked){
	  count=1;
	}
  }
  if(count == 0){
	alert(LoansNoneSelectedText);
	return false;
  }
  else
 return true;
}

//-->