var mygrid;
var timeoutHnd;
var search_publisher = '';
var search_author = '';
var search_media = '';
var search_class = '';
var searchValue;
var searchHistory = new Array();
var globalIdColumn;
var global_selfservice_borrower_category;
var global_item_category = '';
var global_item_loan = 0;
var global_item_renew = 0;
var global_item_borrower = '';
var global_item_title = '';
var global_today = '';
var global_renew_date = '';
var global_item_return = '';
var global_item_catalogue = '';
var global_item_reserved = '';
var global_z;
var global_z1;
var global_z2;
var global_z3;
var global_z4;
var global_z5;
var global_z6;
var global_z7;
var isopacdemo = true;
function m6() {
	window.open("opac.htm", "_blank");
}
function GoogleBooks() {
	window.open("http://books.google.co.uk/advanced_book_search", "_blank");
}
Number.prototype.mod = function(n) {
	return ((this % n) + n) % n;
};
Date.prototype.OpacaddBusDays = function(dd) {
	var wks = Math.floor(dd / 5);
	var dys = dd.mod(5);
	var dy = this.getDay();
	if (dy === 6 && dys > -1) {
		if (dys === 0) {
			dys -= 2;
			dy += 2;
		}
		dys++;
		dy -= 6;
	}
	if (dy === 0 && dys < 1) {
		if (dys === 0) {
			dys += 2;
			dy -= 2;
		}
		dys--;
		dy += 6;
	}
	if (dy + dys > 5)
		dys += 2;
	if (dy + dys < 1)
		dys -= 2;
	this.setDate(this.getDate() + wks * 7 + dys);
};
function m31() {
	menu.hide();
	GridDiv("Browse");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '300px');
	mygrid
			.setHeader("&nbsp;,Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("sub_row_grid,ro,ro,ro,ro,ro,ro,ro,ro");
	mygrid.setInitWidths("30,50,70,180,100,100,70,100,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,left,center");
	mygrid
			.setColSorting("na,server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSort);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();
	var col0 = "<div style='padding-right:3px'><a href='javascript:doReset();'><img src='images/reset.jpg' title='Reset filter' border='0'/></a></div>";
	var col1 = "<div style='padding-right:3px'><a href='javascript:doSearch();'><img src='images/go.gif' title='Apply filter' border='0'/></a></div>";
	var col2 = "<div id='isbn_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;'><input type='text' id='search_isbn' style='width: 100%; border:1px solid gray;'/></div>";
	var col3 = "<div id='title_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;' ><input type='text' id='search_title' style='width: 100%; border:1px solid gray;'/></div>";
	var col4 = "<div id='author_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;'></div>";
	var col5 = "<div id='publisher_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;'></div>";
	var col6 = "<div id='media_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;'></div>";
	var col7 = "<div id='class_flt' style='padding-right:3px' onClick='(arguments[0]||window.event).cancelBubble=true;'></div>";
	var col8 = "<div style='padding-right:3px'><a href='javascript:doSearch();'><img src='images/go.gif' title='Apply filter' border='0'/></a></div>";

	mygrid.enableColumnAutoSize(false);
	mygrid.attachHeader(col0 + "," + col1 + "," + col2 + "," + col3 + ","
			+ col4 + "," + col5 + "," + col6 + "," + col7 + "," + col8);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	mygrid.loadXML("50000_load_grid.php?un=" + Date.parse(new Date()));
	var z = new dhtmlXCombo("author_flt", "alfa", 80);
	z.enableFilteringMode(true, "loadauthor.php", true, true);
	z.setOptionHeight(300);
	z.setComboText('%');
	z.attachEvent("onChange", function(value, state) {
		var myValue = z.getComboText();
		search_author = z.getComboText();
		doSearch();
	});
	global_z = z;
	var z1 = new dhtmlXCombo("publisher_flt", "alfa", 80);
	z1.enableFilteringMode(true, "loadpublisher.php", true, true);
	z1.setOptionHeight(300);
	z1.setComboText('%');
	z1.attachEvent("onChange", function(value, state) {
		search_publisher = z1.getComboText();
		doSearch();
	});
	global_z1 = z1;
	var z2 = new dhtmlXCombo("media_flt", "alfa", 50);
	z2.enableFilteringMode(true, "loadmedia.php", true, true);
	z2.setOptionHeight(300);
	z2.setComboText('%');
	z2.attachEvent("onChange", function(value, state) {
		search_media = z2.getComboText();
		doSearch();
	});
	global_z2 = z2;
	var z3 = new dhtmlXCombo("class_flt", "alfa", 80);
	z3.enableFilteringMode(true, "loadclass.php", true, true);
	z3.setOptionHeight(300);
	z3.setComboText('%');
	z3.attachEvent("onChange", function(value, state) {
		search_class = z3.getComboText();
		doSearch();
	});
	global_z3 = z3;
	mygrid.hdr.rows[2].onmousedown = mygrid.hdr.rows[2].onclick = function(e) {
		(e || event).cancelBubble = true;
	};
	mygrid.setSizes();
	//add the copy sub grid
	mygrid
			.attachEvent(
					"onSubGridCreated",
					function(subgrid, row_id, ind, value) {
						subgrid
								.setHeader("Id,Catalogue,Barcode,Category,Location,Site,Shelf,Status,Price");
						subgrid
								.setColAlign("left,left,left,left,left,left,left,left,left");
						subgrid.setInitWidths("80,80,80,80,80,80,80,80,80");
						subgrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro,ro");
						subgrid.setSkin("blue");
						subgrid.init();
						global_mysubgrid = subgrid;
						var myId = mygrid.cellById(row_id, 1).getValue();
						var h1 = new Array();
						var f1 = new Array();
						var l1 = new Array();
						var a1 = new Array();
						ParseForm("m1103.xml", h1, f1, l1, a1);
						GetCopyLines(
								myId,
								h1,
								"id_,catalogue_,barcode_,category_,location_,site_,shelf_,status_,price_",
								subgrid);
					});
	$('#click_movie').bind('click', function() {
		GoVideo("search.mov");
	});
}

function doReset() {
	$("#search_title").val('');
	$("#search_isbn").val('');
	search_publisher = '';
	search_author = '';
	search_media = '';
	search_class = '';

	global_z.setComboText('%');
	global_z.enableFilteringMode(true, "loadauthor.php", true, true);
	global_z1.setComboText('%');
	global_z1.enableFilteringMode(true, "loadpublisher.php", true, true);
	global_z2.setComboText('%');
	global_z2.enableFilteringMode(true, "loadmedia.php", true, true);
	global_z3.setComboText('%');
	global_z3.enableFilteringMode(true, "loadclass.php", true, true);

	doSearch();
}

function doSearch() {

	if (timeoutHnd)
		clearTimeout(timeoutHnd);
	timeoutHnd = setTimeout(reloadGrid, 500);
}
function reloadGrid() {
	alert('her');
	var sortpos = parseInt(window.s_col, 10) - 1;
	var isbn_mask = document.getElementById("search_isbn").value;
	var title_mask = document.getElementById("search_title").value;
	var author_mask = search_author;
	var location_mask;
	if (global_location == '')
		location_mask = "any";
	else
		location_mask = global_location;
	if (author_mask == '%')
		author_mask = '';

	var publisher_mask = search_publisher;
	if (publisher_mask == '%')
		publisher_mask = '';

	var media_mask = search_media;
	if (media_mask == '%')
		media_mask = '';

	var class_mask = search_class;
	if (class_mask == '%')
		class_mask = '';
	mygrid.clearAndLoad("50000_load_grid.php?" + "isbn_mask=" + isbn_mask
			+ "&title_mask=" + title_mask + "&author_mask=" + author_mask
			+ "&publisher_mask=" + publisher_mask + "&media_mask=" + media_mask
			+ "&class_mask=" + class_mask + "&location_mask=" + location_mask
			+ "&orderBy=" + sortpos + "&direction=" + window.a_direction);
	if (window.a_direction)
		mygrid.setSortImgState(true, window.s_col, window.a_direction);

}

function customColumnSort(ind) {
	if (ind == 9999) {
		alert("Table can't be sorted by this column.");
		if (window.s_col)
			;
		mygrid.setSortImgState(true, window.s_col, window.a_direction);
		return false;
	}
	var a_state = mygrid.getSortingState();
	window.s_col = ind;
	window.a_direction = ((a_state[1] == "des") ? "asc" : "des");
	reloadGrid();
	return false;
}
function GoRecord(mygrid) {
	var selectedId = mygrid.getSelectedRowId();
	var Id = mygrid.cellById(selectedId, 1).getValue();

	var SQL = "select id_,isbn_,title_,authors_,publisher_,media_,class_,DATE_FORMAT(catalogued_,'%d/%m/%Y') as catalogued_,web_,editors_,edition_,pubyear_,pubcountry_,subjects_,description_,series_,keywords_,synopsis_ from catalogue where id_ = "
			+ Id;
	var SQLCOLS = "id_,isbn_,title_,authors_,publisher_,media_,class_,catalogued_,web_,editors_,edition_,pubyear_,pubcountry_,subjects_,description_,series_,keywords_,synopsis_";

	var dhxWins, w1, tabbar;
	dhxWins = new dhtmlXWindows();
	dhxWins.enableAutoViewport(true);
	dhxWins.setImagePath("imgs/");
	w1 = dhxWins.createWindow("w1", 100, 100, 550, 300);
	w1.setText("Full Record");
	tabbar = w1.attachTabbar();
	tabbar.setSkin("dhx_skyblue");
	tabbar.setImagePath("imgs/");
	tabbar.attachEvent("onXLE", function() { //row_id will be the first row
		showLoading(false);
	});
	tabbar.attachEvent("onXLS", function() {
		showLoading(true);
	});
	tabbar.addTab("a1", "Page 1", "100px");
	tabbar.addTab("a2", "Page 2", "100px");
	tabbar.setTabActive("a1");
	var grid1 = tabbar.cells("a1").attachGrid();
	var grid2 = tabbar.cells("a2").attachGrid();
	grid1.setImagePath("imgs/");
	grid2.setImagePath("imgs/");
	grid1
			.loadXML("loadopac.php?cmd=select id_,isbn_,title_,authors_,publisher_,media_,class_,DATE_FORMAT(catalogued_,'%d/%m/%Y') as catalogued_,web_ from catalogue where id_="
					+ Id);
	grid2
			.loadXML("loadopac1.php?cmd=select editors_,edition_,pubyear_,pubcountry_,subjects_,description_,series_,keywords_,synopsis_ from catalogue where id_="
					+ Id);
}

function m32() {
	menu.hide();
	$("#workbar").remove();
	$("#workarea").append("<div id=\"workbar\"></div>");
	$("#workarea").css("background", "white");
	loadTab("#workbar", "opac.div");
	SetOpacMouseKeys();

	$("#class_").focus();

	var z2 = new dhtmlXCombo("class_", "alfa", 200);
	z2.enableFilteringMode(true, "loadclass.php?limit=2000");

	global_z2 = z2;
	var z3 = new dhtmlXCombo("author_", "alfa", 200);
	z3.enableFilteringMode(true, "loadauthor.php?limit=100");
	global_z3 = z3;
	var z4 = new dhtmlXCombo("subject_", "alfa", 200);
	z4.enableFilteringMode(true, "loadsubject.php?limit=100");
	global_z4 = z4;
	var z5 = new dhtmlXCombo("publisher_", "alfa", 200);
	z5.enableFilteringMode(true, "loadpublisher.php?limit=2000");
	global_z5 = z5;
	var z6 = new dhtmlXCombo("editor_", "alfa", 200);
	z6.enableFilteringMode(true, "loadeditor.php?limit=2000");
	global_z6 = z6;
	var z7 = new dhtmlXCombo("isbn_", "alfa", 200);
	z7.enableFilteringMode(true, "loadisbn.php?mask=%");
	global_z7 = z7;
	$('#click_movie').bind('click', function() {
		GoVideo("search.mov");
	});
}

function m33() {
	menu.hide();
	$("#workbar").remove();
	$("#workarea").append("<div id=\"workbar\"></div>");
	$("#workarea").css("background", "white");
	loadTab("#workbar", "basic.div");
	SetOpacMouseKeys();
	GoToField("#search_");
	$('#click_movie').bind('click', function() {
		GoVideo("search.mov");
	});
}

var class_search;
var author_search;
var subject_search;
var publisher_search;
var editor_search;
var isbn_search;

function GoSearch() {
	var mylocation;
	class_search = global_z2.getSelectedValue();
	author_search = global_z3.getSelectedValue();
	subject_search = global_z4.getSelectedValue();
	publisher_search = global_z5.getSelectedValue();
	editor_search = global_z6.getSelectedValue();
	isbn_search = global_z7.getSelectedValue();
	searchValue = '';

	if (class_search != null)
		//	searchValue += "LEFT(class_, INSTR(class_, ' ')) like '" + class_search+ "%' and ";
		searchValue += "class_ like '" + class_search + "%' and ";

	if (author_search != null)
		searchValue += "authors_='" + author_search + "' and ";
	if (subject_search != null)
		searchValue += "subjects_='" + subject_search + "' and ";
	if (publisher_search)
		searchValue += "publisher_='" + publisher_search + "' and ";
	if (editor_search != null)
		searchValue += "editor_='" + editor_search + "' and ";
	if (isbn_search != null)
		searchValue += "isbn_='" + isbn_search + "' and ";
	if (global_location == '')
		mylocation = '%';
	else
		mylocation = global_location;

	searchValue += "locationview_ like '" + mylocation + "'";

	//	searchValue += " and";
	//	searchValue = searchValue.replace("and  and","");
	if (searchValue == " and") {
		alert("Please make a choice in the box with the arrow keys, then press return");
		return;
	}

	menu.hide();
	GridDiv("Results");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('745px', '300px');
	mygrid
			.setHeader("&nbsp;,Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("sub_row_grid,ro,ro,ro,ro,ro,ro,ro,ro");
	mygrid.setInitWidths("30,50,70,180,100,100,70,100,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,left,center");
	mygrid
			.setColSorting("na,server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	mygrid.loadXML("index.php?search_mask=" + searchValue + "&subrow=yes");
	mygrid.setSizes();
	//add the copy sub grid
	mygrid
			.attachEvent(
					"onSubGridCreated",
					function(subgrid, row_id, ind, value) {
						subgrid
								.setHeader("Id,Catalogue,Barcode,Category,Location,Site,Shelf,Status,Price");
						subgrid
								.setColAlign("left,left,left,left,left,left,left,left,left");
						subgrid.setInitWidths("80,80,80,80,80,80,80,80,80");
						subgrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro,ro");
						subgrid.setSkin("blue");
						subgrid.init();
						global_mysubgrid = subgrid;
						var myId = mygrid.cellById(row_id, 1).getValue();
						var h1 = new Array();
						var f1 = new Array();
						var l1 = new Array();
						var a1 = new Array();
						ParseForm("m1103.xml", h1, f1, l1, a1);
						GetCopyLines(
								myId,
								h1,
								"id_,catalogue_,barcode_,category_,location_,site_,shelf_,status_,price_",
								subgrid);

					});
}

function GoBasic() {
	var mylocation;
	searchValue = $("#search_").val();
	menu.hide();
	GridDiv("Results");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("&nbsp;,Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("sub_row_grid,ro,ro,ro,ro,ro,ro,ro,ro");
	mygrid.setInitWidths("30,50,70,180,100,100,70,100,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,left,center");
	mygrid
			.setColSorting("na,server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	if (global_location == '')
		mylocation = 'any';
	else
		mylocation = global_location;

	mygrid.loadXML("match.php?search_mask=" + searchValue + "&subrow=yes"
			+ "&locationview=" + mylocation);
	mygrid.setSizes();
	//add the copy sub grid

	mygrid
			.attachEvent(
					"onSubGridCreated",
					function(subgrid, row_id, ind, value) {
						subgrid
								.setHeader("Id,Catalogue,Barcode,Category,Location,Site,Shelf,Status,Price");
						subgrid
								.setColAlign("left,left,left,left,left,left,left,left,left");
						subgrid.setInitWidths("80,80,80,80,80,80,80,80,80");
						subgrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro,ro");
						subgrid.setSkin("blue");
						subgrid.init();
						global_mysubgrid = subgrid;
						var myId = mygrid.cellById(row_id, 1).getValue();
						var h1 = new Array();
						var f1 = new Array();
						var l1 = new Array();
						var a1 = new Array();
						ParseForm("m1103.xml", h1, f1, l1, a1);
						GetCopyLines(
								myId,
								h1,
								"id_,catalogue_,barcode_,category_,location_,site_,shelf_,status_,price_",
								subgrid);
					});
	AddOpacExportButton(searchValue, 'opac');
	AddPrintButton(mygrid);

}

function AddOpacExportButton(search_term, FILE) {
	var z = document.getElementById("groupholder");
	var img = document.createElement("img");
	img.setAttribute("id", "export_click");
	img.src = "images/export.jpg";
	img.border = 0;
	img.title = "Export to clipboard";
	addEvent(img, "click", function() {
		GoOpacExport(search_term, FILE);
	});
	z.appendChild(img);
}

function GoOpacExport(search_term, FILE) {
	var myData = '';
	$.ajax( {
		method : "get",
		url : "match.php",
		data : "search_mask=" + search_term + "&export=opac",
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		},
		success : function(data) {
			var xml;
			if ($.browser.msie) {
				if (typeof data == "string") {
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(data);
				} else
					xml = data;
			} else
				xml = data;
			$(xml).find('record').each(function(x) {
				myData = $(this).find("pkey").text();
				//alert(myData);
			});
		},
		error : function() {
			alert("There has been an error");

		}
	});
	window.open("export/opac.csv", "_blank");
}

function customColumnSortBasic(ind) {
	if (ind == 9999) {
		alert("Table can't be sorted by this column.");
		if (window.s_col)
			;
		mygrid.setSortImgState(true, window.s_col, window.a_direction);
		return false;
	}
	var a_state = mygrid.getSortingState();
	window.s_col = ind;
	window.a_direction = ((a_state[1] == "des") ? "asc" : "des");
	reloadGridBasic();
	return false;
}
function reloadGridBasic() {
	var mylocation;
	var sortpos = parseInt(window.s_col, 10) - 1;
	if (global_location == '')
		mylocation = 'any';
	else
		mylocation = global_location;

	var sql = "match.php?search_mask=" + searchValue + "&orderBy=" + sortpos
			+ "&direction=" + window.a_direction + "&subrow=yes"
			+ "&locationview=" + mylocation;

	mygrid.clearAndLoad(sql);
	if (window.a_direction)
		mygrid.setSortImgState(true, window.s_col, window.a_direction);
}
var option_index = "<?xml version=\"1.0\" ?>" + "<complete>"
		+ "<option value=\"global\">Any field</option>"
		+ "<option value=\"authors_\">Author</option>"
		+ "<option value=\"subjects_\">Subject</option>"
		+ "<option value=\"title_\">Title</option>"
		+ "<option value=\"keywords_\">Keywords</option>"
		+ "<option value=\"synopsis_\">Synopsis</option>"
		+ "<option value=\"series_\">Series</option>" + "</complete>";
var option_style = "<?xml version=\"1.0\" ?>" + "<complete>"
		+ "<option value=\"boolean\">Boolean (having applies)</option>"
		+ "<option value=\"natural\">Natural language</option>" + "</complete>";
var option_having = "<?xml version=\"1.0\" ?>"
		+ "<complete>"
		+ "<option value=\"and\">All of these words</option>"
		+ "<option value=\"or\">Any of these words</option>"
		+ "<option value=\"not\">First word but not the rest</option>"
		+ "<option value=\"notall\">Any of these words but not all of them</option>"
		+ "<option value=\"between\">Ranging between them</option>"
		+ "<option value=\"adjacent\">Next to each other</option>"
		+ "<option value=\"sentence\">In same sentence</option>"
		+ "</complete>";
var option_published = "<?xml version=\"1.0\" ?>" + "<complete>"
		+ "<option value=\"any\">Anytime</option>"
		+ "<option value=\"current\">This year</option>"
		+ "<option value=\"last\">Last year</option>"
		+ "<option value=\"five\">Within last 5 years</option>"
		+ "<option value=\"ten\">Within last 10 years</option>" + "</complete>";
function m35() {
	menu.hide();
	$("#workbar").remove();
	$("#workarea").append("<div id=\"workbar\"></div>");
	$("#workarea").css("background", "white");
	loadTab("#workbar", "advanced.div");
	SetOpacMouseKeys();
	var z2 = new dhtmlXCombo("index_", "alfa", 200);
	z2.loadXMLString(option_index);
	z2.setComboText('Any field');
	z2.selectOption(0, false, true);
	global_z2 = z2;

	var z3 = new dhtmlXCombo("style_", "alfa", 200);
	z3.loadXMLString(option_style);
	z3.setComboText('Boolean (having applies)');
	z3.selectOption(0, false, true);
	global_z3 = z3;

	var z4 = new dhtmlXCombo("having_", "alfa", 200);
	z4.loadXMLString(option_having);
	z4.setComboText('All of these words');
	z4.selectOption(0, false, true);
	global_z4 = z4;

	var z5 = new dhtmlXCombo("media_", "alfa", 200);
	z5.loadXML("loadmedia.php?mask=%&limit=2000");
	z5.setComboText('Any');
	z5.selectOption(0, false, true);
	global_z5 = z5;

	var z6 = new dhtmlXCombo("published_", "alfa", 200);
	z6.loadXMLString(option_published);
	z6.setComboText('Anytime');
	z6.selectOption(0, false, true);
	global_z6 = z6;

	GoToField("#search_");
}
var index_search;
var style_search;
var having_search;
var publisher_search;
var media_search;
var published_search;
var search_term;
function GoAdvanced() {
	var process = '';
	index_search = global_z2.getSelectedValue();
	style_search = global_z3.getSelectedValue();
	having_search = global_z4.getSelectedValue();
	media_search = global_z5.getSelectedValue();
	published_search = global_z6.getSelectedValue();
	search_term = $("#search_").val();
	if (having_search == 'and') {
		if (style_search == 'boolean') {
			search_term = '+';
			search_term += $("#search_").val();
			search_term = search_term.replace(/ /g, '+');
			search_term = search_term.replace(/\+\+/g, '+');
		}
	} else if (having_search == 'or') {
		search_term = search_term.replace(/\+/g, ' ');
		search_term = search_term.replace(/\-/g, ' ');
		style_search = 'natural';
	} else if (having_search == 'not') {
		var a = new Array();
		a = search_term.split(' ');
		search_term = "+" + a[0];
		for ( var i = 1; i < a.length; i++) {
			search_term += "-";
			search_term += a[i];
		}
		style_search = 'boolean';
	}
	//"<option value=\"notall\">Any of these words but not all of them</option>" +
	else if (having_search == 'notall') {
		process = 'notall';
		style_search = 'natural';
	}
	search_term = search_term.replace(/\+/g, ' +');
	search_term = search_term.replace(/\-/g, ' -');
	searchValue = '';
	search_term = fixedEncodeURIComponent(search_term);
	searchValue = "match.php?search_mask=" + search_term + "&style="
			+ style_search + "&index=" + index_search + "&media="
			+ media_search + "&process=" + process + "&published="
			+ published_search + "&subrow=yes";
	menu.hide();
	GridDiv("Results");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("&nbsp;,Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("sub_row_grid,ro,ro,ro,ro,ro,ro,ro,ro");
	mygrid.setInitWidths("30,50,70,180,100,100,70,100,90");

	mygrid.setColAlign("left,left,left,left,left,left,left,center,center");
	mygrid
			.setColSorting("na,server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	mygrid.loadXML(searchValue);
	mygrid.setSizes();
	//add the copy sub grid
	mygrid
			.attachEvent(
					"onSubGridCreated",
					function(subgrid, row_id, ind, value) {
						subgrid
								.setHeader("Id,Catalogue,Barcode,Category,Location,Site,Shelf,Status,Price");
						subgrid
								.setColAlign("left,left,left,left,left,left,left,left,left");
						subgrid.setInitWidths("80,80,80,80,80,80,80,80,80");
						subgrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ro,ro");
						subgrid.setSkin("blue");
						subgrid.init();
						global_mysubgrid = subgrid;
						var myId = mygrid.cellById(row_id, 1).getValue();
						var h1 = new Array();
						var f1 = new Array();
						var l1 = new Array();
						var a1 = new Array();
						ParseForm("m1103.xml", h1, f1, l1, a1);
						GetCopyLines(myId, h1, f1, subgrid);
					});
}

function fixedEncodeURIComponent(str) {
	return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27')
			.replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A');
}

function customColumnSortAdvanced(ind) {
	if (ind == 9999) {
		alert("Table can't be sorted by this column.");
		if (window.s_col)
			;
		mygrid.setSortImgState(true, window.s_col, window.a_direction);
		return false;
	}
	var a_state = mygrid.getSortingState();
	window.s_col = ind;
	window.a_direction = ((a_state[1] == "des") ? "asc" : "des");
	reloadGridAdvanced();
	return false;
}
function reloadGridAdvanced() {
	var sortpos = parseInt(window.s_col, 10) - 1;
	mygrid.clearAndLoad(searchValue + "&orderBy=" + sortpos + "&direction="
			+ window.a_direction);
	if (window.a_direction)
		mygrid.setSortImgState(true, window.s_col, window.a_direction);
}

function LoadCategory() {
	var SQL = "select subjectcategory_ from subjectcategory order by subjectcategory_";
	var SQLCOLS = "subjectcategory_";
	var result = new Array();
	var str = "<ul>";
	AjaxBrowse(SQL, SQLCOLS, result);
	var cnt = result[0];

	var v = SQLCOLS.split(',');
	var SIZE = v.length;
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * SIZE) + 1;
			var dlist = '';
			for (i = 0; i < SIZE; i++) {
				var x = result[pos + i];
			}
			str += "<li>";
			var x1 = x.replace(/ /g, '+');
			str += "<a href=javascript:NarrowTerm('"
					+ x1
					+ "');  class='clearfix'  title='Right click for thesaurus'>"
					+ x + "</a>";
			str += "</li>";

		}
	}
	str += "</ul>";
	$("#subjectcategory_list").html(str);
	SetOpacMouseKeys();
	$(document).ready(function() {
		$('#typeAheadTextInput').bind('keydown', function(e) {
			if (e.keyCode == 13) {
				if ($("#typeAheadTextInput").val() == '') {
					GoToField("#typeAheadTextInput");
					e.preventDefault();
				} else {
					TopSearch();
				}
			}
		});
	});
	//send email
	/*
	if (isopacdemo) {
		var send_to = "xsoft@btconnect.com";
		var bcc_to = "";
		var subject = "Cyberlibrary viewing";
		var message = "Someone has displayed the index page";
		$.ajax( {
			type : "post",
			url : "phpmailer.php",
			data : "send_to=" + send_to + "&bcc_to=" + bcc_to + "&subject="
					+ subject + "&message=" + message,
			async : false,
			beforeSend : function() {
				$("#tab").html('<img src="images/wait.gif" />');
				$("#tab").show("fast");
			},
			complete : function() {
				$("#tab").html('');
				$("#tab").hide("slow");
			}
		});
	}
	*/
}

function NarrowTerm(searchTerm) {
	searchTerm = searchTerm.replace(/\+/g, ' ');
	//	$("#subjectcategory").remove();
	//	$("#side-nav").append("<div id=\"subjectcategory\" class=\"refineBy>\"</div>");
	SubjectSearch(searchTerm);
	var SQL = "select narrowerterm from thesaurus where subjectcategory like '"
			+ searchTerm + "%' and narrowerterm <> ''";
	var SQLCOLS = "narrowerterm";
	var result = new Array();
	var str = "<ul><li><a href=javascript:LoadCategory(); class='clearfix' style='COLOR: #333;'>"
			+ searchTerm + ":</a></li>";
	str += "<li></li>";

	AjaxBrowse(SQL, SQLCOLS, result);
	var cnt = result[0];
	var v = SQLCOLS.split(',');
	var SIZE = v.length;
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * SIZE) + 1;
			var dlist = '';
			for ( var i = 0; i < SIZE; i++) {
				var x = result[pos + i];
				var xa = x.split(':');
				for ( var k = 0; k < xa.length - 1; k++) {
					str += "<li style='font-size:10px;color:red;'>";
					str += "<a href='javascript:SubjectSearch(\"" + xa[k]
							+ "\")' class='clearfix'>" + xa[k] + "</a>";
					str += "</li>";
				}
			}
		}
	}
	str += "</ul>";
	$("#subjectcategory_list").html(str);
	//	searchValue = "match.php?search_mask=" + search_term + "&style=" + style_search + "&index=" + index_search + "&media=" + media_search + "&process=" + process + "&published=" + published_search;
}
function SearchHistory() {
	//	$("#subjectcategory").remove();
	//	$("#side-nav").append("<div id=\"subjectcategory\" class=\"refineBy>\"</div>");
	var str = "<h2 class=\"homeCategoriesOverview\"><a href=\"javascript:LoadSearchHistory();\">Search history</a></h2>";
	str += "<ul>";
	for ( var i = 0; i < searchHistory.length; i++) {
		var xa = searchHistory[i].split("@@");
		str += "<li>";
		str += "<a href='javascript:ReRun(" + "\"" + xa[1] + "\"" + "," + "\""
				+ xa[2] + "\"" + ");'" + " class='clearfix'>" + xa[2] + "</a>";
		str += "</li>";
	}
	str += "</ul>";
	$("#subjectcategory").html(str);
}

function ReRun(type, search_term) {
	if (type == "TopSearch") {
		$("#typeAheadTextInput").val(search_term);
		TopSearch();
	} else if (type == "SubjectSearch")
		SubjectSearch(search_term);
	else if (type == "GoOpacAdvancedSearch")
		GoOpacAdvancedSearch(search_term);
	else if (type == "ComingSoon")
		ComingSoon();
	else if (type == "WhatsNew")
		WhatsNew();
	else if (type == "MediaBooks")
		MediaBooks(search_term);
}

function SubjectSearch(search_term) {
	//	var result = new Array();
	//	AjaxSearch(search_term,result);
	//	ShowResults(result);

	var searchValue = search_term;

	$("#workbar").remove();
	$("#workbar").remove();
	$("#workarea")
			.append(
					"<div id=\"workbar\">"
							+ "<div align=\"center\"  id = \"headholder\" ></div>"
							+ "<div id=\"gridholder\" style=\"width:100%;height:300px;margin-top:5px;margin-bottom:10px;\"></div>"
							+ "<div style=\"background-color: white;\" id=\"pagingarea\"></div>"
							+ "<div  style=\"background-color: white;\" id=\"infoarea\"></div>"
							+ "<div style=\"background-color: white;\" id=\"groupholder\"></div></div>");

	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '300px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");

	mygrid.setInitWidths("50,70,200,100,100,70,100,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});

	mygrid.loadXML("match.php?search_mask=" + searchValue
			+ "&style=unique&index=subjects_");
	mygrid.setSizes();

	searchHistory.push("subject@@SubjectSearch@@" + searchValue);
}

function ShowResults(result) {
	var cnt = result[0];
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * 10) + 1;
			var dlist = '';
			for ( var i = 0; i < 10; i++)
				dlist += result[pos + i];
		}
		$("#searchresults").text(result[pos + i]);
	} else
		$("#searchresults").text("No records Found");
}

function AjaxSearch(search_term, result) {
	$.ajax( {
		method : "get",
		url : "match.php",
		data : "search_mask=" + search_term + "&style=boolean&index=subjects_",
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#ab").hide("slow");
		},
		success : function(data) {
			var xml;

			if ($.browser.msie) {
				if (typeof data == "string") {
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(data);
				} else {
					xml = data;
				}
			} else
				xml = data;
			//count number of records
			result[0] = 0;
			var i = 1;
			$(xml).find('row').each(function(x) {
				$(xml).find('cell').each(function(x) {
					var myData = $(this).text();
					result[i] = myData;
					i++;
				});
				result[0] += 1;
			});
		}
	});

}

function AjaxBrowse(SQL, SQLCOLS, result) {
	var COLS_ARRAY = SQLCOLS.split(',');
	var ESQL = escape(SQL);
	$.ajax( {
		method : "get",
		url : "gophptable.php",
		data : "cmd=" + ESQL,
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#ab").hide("slow");
		},
		success : function(data) {
			var xml;
			if ($.browser.msie) {
				if (typeof data == "string") {
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(data);
				} else {
					xml = data;
				}
			} else
				xml = data;
			//count number of records
			result[0] = 0;
			var i = 1;
			$(xml).find('record').each(function(x) {

				for ( var j = 0; j < COLS_ARRAY.length; j++) {
					var myData = $(this).find(COLS_ARRAY[j]).text();
					if (myData == 'empty')
						myData = '';
					result[i] = myData;
					i++;
				}
				result[0] += 1;
			});
		}
	});
}

function TopSearch() {
	var searchValue = $("#typeAheadTextInput").val();

	$("#workbar").remove();
	$("#workarea")
			.append(
					"<div id=\"workbar\">"
							+ "<div align=\"center\"  id = \"headholder\" ></div>"
							+ "<div id=\"gridholder\" style=\"width:100%;height:300px;margin-top:5px;margin-bottom:10px;\"></div>"
							+ "<div style=\"background-color: white;\" id=\"pagingarea\"></div>"
							+ "<div  style=\"background-color: white;\" id=\"infoarea\"></div>"
							+ "<div style=\"background-color: white;\" id=\"groupholder\"></div></div>");

	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '300px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");
	mygrid.setInitWidths("50,70,190,120,100,90,70,90");

	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	var x = trim(searchValue);
	var x = x.split(' ');

	if (x.length > 1) //use a title search
		mygrid.loadXML("match.php?search_mask=" + '"' + searchValue + '"'
				+ "&index=title_&style=unique");
	else
		mygrid.loadXML("match.php?search_mask=" + searchValue);
	mygrid.setSizes();

	//		$("#searchresults").html("<h3><em>Results</em></h3>");
	searchHistory.push("Basic@@TopSearch@@" + searchValue);
}

function ComingSoon() {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}
	OpacGridDiv("");

	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid.setHeader("Id,Isbn,Title,Authors,Publisher,Media");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro");
	mygrid.setInitWidths("50,70,300,120,100,100");
	mygrid.setColAlign("left,left,left,left,left,left");
	mygrid.setColSorting("server,server,server,server,server,server");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});

	mygrid.loadXML("coming.php");
	mygrid.setSizes();
	$("#searchresults").html("<h3><em>Results</em></h3>");
	searchHistory.push("Coming@@ComingSoon@@Coming Soon@@");
}
function WhatsNew() {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}
	OpacGridDiv("");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");
	mygrid.setInitWidths("50,70,200,120,100,100,70,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	var searchValue = " catalogued_ >= now() - INTERVAL 1 MONTH";
	mygrid.loadXML("index.php?search_mask=" + searchValue);
	mygrid.setSizes();
	$("#searchresults").html("<h3><em>Results</em></h3>");
	searchHistory.push("New@@WhatsNew@@Whats New@@");
}
function Popular() {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}
	OpacGridDiv("");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");
	mygrid.setInitWidths("50,70,200,120,100,100,70,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	mygrid.loadXML("popular.php");
	mygrid.setSizes();

	$("#searchresults").html("<h3><em>Results</em></h3>");
	searchHistory.push("Popular@@Popular@@Popular@@");
}
function MediaBooks(search_term) {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}
	OpacGridDiv("");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('745px', '300px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");
	mygrid.setInitWidths("50,70,200,120,100,100,70,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	var searchValue = "media_ = '" + search_term + "'";
	mygrid.loadXML("index.php?search_mask=" + searchValue);
	mygrid.setSizes();

	$("#searchresults").html("<h3><em>Results</em></h3>");
	searchHistory.push("media@@MediaBooks@@" + search_term);

}

function LibraryServices() {
	OpacGridDiv("");
	$("#searchresults").html("<h3><em>Link to Library Website</em></h3>");
}
function SelfService() {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}
	$("#workbar").remove();
	$("#workarea").append("<div id=\"workbar\"></div>");
	loadTab("#workbar", "service.div");
	SetOpacMouseKeys();
	GoToField("#id_");
}
function GoSelfService() {
	var result = new Array();
	var id = $("#id_").val();
	var surname = $("#surname_").val();
	var SQL = "select id_,category_ from members where barcode_ = '" + id
			+ "' and surname_ = '" + surname + "'";
	var SQLCOLS = "id_,category_";
	OpacAjaxSql("tab", SQL, SQLCOLS, result);
	var cnt = result[0];
	if (cnt > 0) {
		global_selfservice_borrower_category = result[2];
		SelfServiceLoans(id);
	} else
		$("#searchresults").html("<h3><em>Unknown Borrower</em></h3>");
}
function OpacAjaxSql(fieldname, SQL, SQLCOLS, result) {
	var ESQL = escape(SQL);
	var COLS_ARRAY = SQLCOLS.split(',');
	$.ajax( {
		method : "get",
		url : "gophptable.php",
		data : "cmd=" + ESQL,
		async : false,
		beforeSend : function() {
			$("#load_" + fieldname).html('<img src="images/wait.gif" />');
			$("#load_" + fieldname).show("fast");
		},
		complete : function() {
			$("#load_" + fieldname).html('');
			$("#load_" + fieldname).hide("slow");
		},
		success : function(data) {
			var xml;
			if ($.browser.msie) {
				if (typeof data == "string") {
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(data);
				} else {
					xml = data;
				}
			} else
				xml = data;
			//count number of records
			result[0] = 0;
			var i = 1;
			$(xml).find('record').each(function(x) {

				for ( var j = 0; j < COLS_ARRAY.length; j++) {
					var myData = $(this).find(COLS_ARRAY[j]).text();
					if (myData == 'empty')
						myData = '';
					result[i] = myData;
					i++;
				}
				result[0] += 1;
			});
		}
	});
}
function SelfServiceLoans(id) {

	var result = new Array();
	OpacGridDiv("");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("Select,Barcode,Title,Borrower,Category,Issued,Due,Renew,Fine");
	mygrid.setColAlign("center,left,left,left,left,left,left,left,left");
	mygrid.setInitWidths("70,90,350,90,90,90,90,90,90");
	mygrid.setColTypes("ch,ro,ro,ro,ro,ro,ro,ro,ro");
	mygrid
			.setColSorting("na,server,server,server,server,server,server,server,server");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
		mygrid.forEachRow(function(id) {
			mygrid.cells(id, 0).setChecked(false);
		});
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	var SQL = "select '0',barcode_,title_,borrower_,category_,issue_,return_,copies.renew_ as renew_,fine_ from copies,catalogue where copies.catalogue_=catalogue.id_ and copies.status_ = 'LOA' and borrower_ = '"
			+ id + "'";
	var SQLCOLS = "0,barcode_,title_,borrower_,category_,issue_,return_,renew_,fine_";
	mygrid.loadXML("connector.php?cmd=" + SQL + "&cols=" + SQLCOLS + "&");
	mygrid.setSizes();
	SQL = "select selfservicerenew_,selfservicereturn_ from borrower_category where category_ = '"
			+ global_selfservice_borrower_category + "'";
	SQLCOLS = "selfservicerenew_,selfservicereturn_";
	OpacAjaxSql("tab", SQL, SQLCOLS, result);
	if (result[1] == 'y' || result[1] == 'Y')
		AddRenewButton(mygrid);
	if (result[2] == 'y' || result[2] == 'Y')
		AddReturnButton(mygrid);
	$("#searchresults").html("<h3><em>Current Loans</em></h3>");
}
function LoadAdvanced() {

}
function loadTab(div, filename) {
	$.ajax( {
		method : "get",
		url : "gophpform.php",
		data : "filename=" + filename,
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		},
		success : function(html) {
			$(div).append(html);
		}
	});
}

function SetOpacMouseKeys() {
	$(document)[0].oncontextmenu = function() {
		return false;
	};
	$("input").bind("mousedown", function(e) {
		if (e.button == 2) {
			OpacclickCheck(this);
			return false;
		} else
			return true;
	});
	$("textarea").bind("mousedown", function(e) {
		if (e.button == 2) {
			OpacclickCheck(this);
			return false;
		} else
			return true;
	});
	$("a").bind("mousedown", function(e) {
		if (e.button == 2) {
			OpacclickCheck(this);
			return false;
		} else
			return true;
	});
	if ($.browser.mozilla)
		$("input").keypress(checkForEnter);
	else
		$("input").keydown(checkForEnter);
}

function OpacclickCheck(e) {
	var a = $($(e)).text();
	var b = $($(e)).attr("class");
	if (b == 'clearfix')
		GoThesaurus(a);
}

function checkForEnter(event) {
	if (event.keyCode == 13) {
		event.preventDefault();
		return false;
	}
}
function GoToField(field) {
	setTimeout(function() {
		$(field).focus();
	}, 500);
}
function GridStyle(width, height) {
	var elem = document.getElementById("gridholder");
	elem.style.width = width;
	elem.style.height = height;
}
function showLoading(fl) {
	if (fl == true) {
		$("#tab").html('<img src="images/wait.gif" />');
		$("#tab").show("fast");
	} else {
		$("#tab").html('');
		$("#tab").hide("slow");
	}
}

function AddReturnButton(mygrid) {
	var z = document.getElementById("groupholder");
	var img = document.createElement("img");
	img.setAttribute("id", "return_click");
	img.src = "images/return.jpg";
	img.border = 0;
	img.title = "Return checked items";
	addEvent(img, "click", function() {
		SelfServiceReturn(mygrid);
	});
	z.appendChild(img);
}
function AddRenewButton(mygrid) {
	var z = document.getElementById("groupholder");
	var img = document.createElement("img");
	img.setAttribute("id", "renew_click");
	img.src = "images/renew.jpg";
	img.border = 0;
	img.title = "Renew checked items";
	addEvent(img, "click", function() {
		SelfServiceRenew(mygrid);
	});
	z.appendChild(img);
}
function AddIssueButton(mygrid) {
	var z = document.getElementById("groupholder");
	var img = document.createElement("img");
	img.setAttribute("id", "renew_click");
	img.src = "images/renew.jpg";
	img.border = 0;
	img.title = "Renew checked items";
	addEvent(img, "click", function() {
		SelfServiceRenew(mygrid);
	});
	z.appendChild(img);
}
function addEvent(obj, type, fn) {
	if (obj.addEventListener)
		obj.addEventListener(type, fn, false);
	else if (obj.attachEvent) {
		obj["e" + type + fn] = fn;
		obj[type + fn] = function() {
			obj["e" + type + fn](window.event);
		};
		obj.attachEvent("on" + type, obj[type + fn]);
	}
}
function removeEvent(obj, type, fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(type, fn, false);
	else if (obj.detachEvent) {
		obj.detachEvent("on" + type, obj[type + fn]);
		obj[type + fn] = null;
		obj["e" + type + fn] = null;
	}
}
function SelfServiceReturn() {
	mygrid
			.forEachRow(function(id) {
				if (mygrid.cells(id, 0).isChecked()) {
					mygrid.selectRowById(id);
					var barcode = mygrid.cells(id, 1).getValue();
					var SQL = "update copies set status_='SHE',renew_=0,overdue_=0 where barcode_ = '"
							+ barcode + "'";
					var result = OpacUpdateRecord(SQL);
					if (isNaN(result)) {
						alert(result);
						return (false);
					} else {
						mygrid.setRowTextStyle(id, "color: red; ");
						SelfServiceReserveToCounter(barcode);
					}
					return;
				}
			});
}

function SelfServiceReserveToCounter(barcode) {
	var SQL = "update reserves set " + "status_='COU' " + "where id_="
			+ barcode;
	OpacUpdateRecord(SQL);
}

//<span class="termHighlight">Computer</span>
function GoBibliography(mygrid, idcolumn) {

	var catData = new Array();
	var copData = new Array();
	var selectedId = mygrid.getSelectedRowId();
	var Id = mygrid.cellById(selectedId, idcolumn).getValue();
	var SQL = "select subjectcategory_,descriptor_,synopsis_,series_,pubyear_,relatedterm_,web_,subjects_ from catalogue where id_ = "
			+ Id;
	var SQLCOLS = "subjectcategory_,descriptor_,synopsis_,series_,pubyear_,relatedterm_,web_,subjects_";
	var result = new Array();
	var cresult = new Array();
	globalIdColumn = idcolumn;
	//rest of catalogue record
	AjaxBrowse(SQL, SQLCOLS, result);
	var cnt = result[0];
	var v = SQLCOLS.split(',');
	var SIZE = v.length;
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * SIZE) + 1;
			var dlist = '';
			for (i = 0; i < SIZE; i++) {
				catData[i] = result[pos + i];
			}
		}
	} else
		return;

	var SQL = "select barcode_,status_,return_,site_,location_,shelf_ from copies where catalogue_ = "
			+ Id;
	var SQLCOLS = "barcode_,status_,return_,site_,location_,shelf_";
	var result = new Array();
	//get availability
	AjaxBrowse(SQL, SQLCOLS, cresult);
	var cnt = cresult[0];
	var v = SQLCOLS.split(',');
	var sz = v.length;
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * sz) + 1;
			var dlist = '';
			for (i = 0; i < sz; i++) {
				copData[i] = cresult[pos + i];
			}
		}
	}
	if (idcolumn == 0) {
		var isbn = mygrid.cellById(selectedId, 1).getValue();
		var title = mygrid.cellById(selectedId, 2).getValue();
		var author = mygrid.cellById(selectedId, 3).getValue();
		var publisher = mygrid.cellById(selectedId, 4).getValue();
		var media = mygrid.cellById(selectedId, 5).getValue();
		var classs = mygrid.cellById(selectedId, 6).getValue();
	} else {
		var isbn = mygrid.cellById(selectedId, 2).getValue();
		var title = mygrid.cellById(selectedId, 3).getValue();
		var author = mygrid.cellById(selectedId, 4).getValue();
		var publisher = mygrid.cellById(selectedId, 5).getValue();
		var media = mygrid.cellById(selectedId, 6).getValue();
		var classs = mygrid.cellById(selectedId, 7).getValue();
	}
	var titleStr = "<strong>" + Id + ":</strong> " + title;
	var ihtml = $.ajax( {
		method : "get",
		url : "inner.htm",
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		}
	});
	Tip(ihtml.responseText, CLICKSTICKY, true, CLICKCLOSE, false, CLOSEBTN,
			true, SHADOW, true, TITLE, 'Bibliography', PADDING, 9, FIX, [
					'Welcome', 0, 5 ], WIDTH, 745, FONTFACE,
			'Arial, Helvetica, sans-serif', FONTSIZE, '10pt', TITLEALIGN,
			'center');
	$(document)
			.ready(
					function() {
						$("#authors_").html(author);
						$("#isbn_").html(isbn);
						$("#title_").html(titleStr);
						$("#publisher_").html(publisher);
						$("#media_").html(media);
						$("#class_").html(classs);
						$("#subjects_").html(catData[7]);
						$("#subjectcategory_").html(catData[0]);
						$("#descriptors_").html(
								"<strong>Descriptors:</strong><br>"
										+ catData[1]);
						$("#synopsis_").html(
								"<strong>Synopsis:</strong><br>" + catData[2]);
						$("#series_").html(
								"<strong>Series:</strong><br>" + catData[3]);
						$("#pubyear_").html(catData[4]);
						$("#relatedterm_")
								.html(
										"<strong>Related Items:</strong>&nbsp;"
												+ "<a href=\"javascript:GoRelated('"
												+ catData[5]
												+ "');\""
												+ " title='New Search for related ecords'>"
												+ catData[5] + "</a>");
						var sStr = "<strong>Availability:</strong>&nbsp;";
						if (media == "E-Book") {
							sStr += " On line ";
						} else {
							if (copData[1] == 'SHE') {
								if (copData[3] != '')
									sStr += "Available at " + copData[3]
											+ " site ";
								if (copData[4] != '')
									sStr += " in " + copData[4] + " location ";
								if (copData[5] != '')
									sStr += " on the " + copData[5] + " shelf ";
							} else
								sStr += " due back " + copData[2];
						}
						$("#availability_").html(sStr);
						var oneauthor = author.split(';')[0];
						oneauthor = escape(oneauthor);
						var googleauthor = "author " + author.split(';')[0];
						googleauthor = escape(googleauthor);

						sStr = '<strong>Weblinks:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
						sStr += "<a href=http://www.amazon.co.uk/gp/search/field-isbn="
								+ isbn
								+ " TARGET=_BLANK><img src=\"images/amazon.png\"/>&nbsp;Amazon&nbsp;</a>";
						sStr += "&nbsp;&nbsp;&nbsp;";
						sStr += "<a href=http://en.wikipedia.org/wiki/"
								+ oneauthor
								+ " TARGET=_BLANK><img src=\"images/wikipedia.png\"/>&nbsp;Wikipedia&nbsp;</a>";
						sStr += "&nbsp;&nbsp;&nbsp";
						sStr += "<a href=http://www.google.co.uk/search?q="
								+ googleauthor
								+ " TARGET=_BLANK><img src=\"images/google.png\"/>&nbsp;Google&nbsp;</a>";
						sStr += "&nbsp;&nbsp;&nbsp";
						sStr += "<a href=javascript:OpacEmail();><img src=\"images/email.png\"/>&nbsp;Email record&nbsp;</a>";
						if (catData[6] != '') {
							sStr += "<br/>";
							if (media.toLowerCase() == 'report')
								sStr += '<strong>Full report:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
							else
								sStr += '<strong>Special:</strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
							var c = catData[6].indexOf('http://');
							var str = '';
							if (c != -1)
								str = catData[6].substring(7, 999);
							else
								str = catData[6];
							sStr += "<a href=http://" + str
									+ " TARGET=_BLANK>&nbsp;Document&nbsp;</a>";
						}
						$("#weblinks_").html(sStr);
					});
}
function OpacEmail() {
	var ihtml = $.ajax( {
		method : "get",
		url : "email.div",
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		}
	});
	var selectResult = "<div style=\"background: white; width:480px;height:100px;padding:10px; margin:0px\">"
			+ ihtml.responseText + "</div>";
	Tip(selectResult, CLICKSTICKY, true, CLICKCLOSE, false, CLOSEBTN, true,
			SHADOW, true, TITLE, 'Email this record', PADDING, 9, FIX, [
					'Email', 0, 5 ], WIDTH, 490, FONTFACE,
			'Arial, Helvetica, sans-serif', FONTSIZE, '10pt', TITLEALIGN,
			'center');
	$(document).ready(function() {
		SetOpacValidator(20);
		GoToField("#email_");
	});
}

function GoOpacEmail() {
	var selectedId = mygrid.getSelectedRowId();
	var Id = mygrid.cellById(selectedId, globalIdColumn).getValue();
	if (globalIdColumn == 0) {
		var isbn = mygrid.cellById(selectedId, 1).getValue();
		var title = mygrid.cellById(selectedId, 2).getValue();
		var author = mygrid.cellById(selectedId, 3).getValue();
		var publisher = mygrid.cellById(selectedId, 4).getValue();
		var media = mygrid.cellById(selectedId, 5).getValue();
		var classs = mygrid.cellById(selectedId, 6).getValue();
	} else {
		var isbn = mygrid.cellById(selectedId, 2).getValue();
		var title = mygrid.cellById(selectedId, 3).getValue();
		var author = mygrid.cellById(selectedId, 4).getValue();
		var publisher = mygrid.cellById(selectedId, 5).getValue();
		var media = mygrid.cellById(selectedId, 6).getValue();
		var classs = mygrid.cellById(selectedId, 7).getValue();
	}
	var message = '';
	message = "Isbn: " + isbn + "<br/>";
	message += "Title: " + title + "<br/>";
	message += "Author: " + author + "<br/>";
	message += "Publisher: " + publisher + "<br/>";
	message += "Media: " + media + "<br/>";
	message += "Class: " + classs + "<br/>";
	message = escape(message);
	var v = $("#cmaForm").validate();
	if (!v.form())
		return;
	var send_to = $("#email_").val();
	var bcc_to = "";
	var subject = "Library Enquiry";
	var ret = $.ajax( {
		type : "post",
		url : "phpmailer.php",
		data : "send_to=" + send_to + "&bcc_to=" + bcc_to + "&subject="
				+ subject + "&message=" + message,
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		}
	});
	var selectResult = "<div style=\"background: white; width:350px;height:100px;padding-top:5px;text-align:center;\">"
			+ ret.responseText + "</div>";
	Tip(selectResult, CLICKSTICKY, true, CLICKCLOSE, false, CLOSEBTN, true,
			SHADOW, true, TITLE, 'Email result', PADDING, 9, FIX, [
					'Email result', 0, 5 ], WIDTH, 350, FONTFACE,
			'Arial, Helvetica, sans-serif', FONTSIZE, '10pt', TITLEALIGN,
			'center');
	$("#tab").html('');
	$("#tab").hide("slow");

}

function GoThesaurus(search_term) {
	var catData = new Array();
	var SQL = "select id_, descriptor, relatedterm, subjectcategory, usedfor, useas, broaderterm, scopenote, narrowerterm, historynote FROM thesaurus where descriptor = '"
			+ search_term + "'";
	var SQLCOLS = "id_, descriptor, relatedterm, subjectcategory, usedfor, useas, broaderterm, scopenote, narrowerterm, historynote";
	var result = new Array();
	AjaxBrowse(SQL, SQLCOLS, result);
	var cnt = result[0];
	var v = SQLCOLS.split(',');
	var SIZE = v.length;
	if (cnt > 0) {
		for ( var j = 0; j < cnt; j++) {
			var pos = (j * SIZE) + 1;
			var dlist = '';
			for (i = 0; i < SIZE; i++) {
				catData[i] = result[pos + i];
				//	prompt(i,catData[i]);
			}
		}
	} else {
		alert("No thesaurus entry for this subject category");
		return;
	}
	var ihtml = $.ajax( {
		method : "get",
		url : "thesaurus.htm",
		async : false,
		beforeSend : function() {
			$("#tab").html('<img src="images/wait.gif" />');
			$("#tab").show("fast");
		},
		complete : function() {
			$("#tab").html('');
			$("#tab").hide("slow");
		}
	});

	Tip(ihtml.responseText, CLICKSTICKY, true, CLICKCLOSE, false, CLOSEBTN,
			true, SHADOW, true, TITLE, 'Thesaurus', PADDING, 9, FIX, [
					'Welcome', 0, 5 ], WIDTH, 745, FONTFACE,
			'Arial, Helvetica, sans-serif', FONTSIZE, '10pt', TITLEALIGN,
			'center');
	$(document).ready(
			function() {
				var titleStr = "<strong>Descriptor " + catData[0]
						+ ":</strong> " + catData[1];
				var str;
				var x;
				var x2;
				$("#title_").html(titleStr);
				$("#scopenote_").html(catData[7]);
				x = catData[3];
				str = '';
				var xa = x.split(':');
				for ( var k = 0; k < xa.length; k++) {
					x2 = xa[k];
					str += "<a href=\"javascript:SubjectSearch('" + x2
							+ "');\">" + xa[k] + "</a>";
					str += "&nbsp;";
				}
				$("#subjectcategory_").html(str);
				x = catData[6];
				str = '';
				var xa1 = x.split(':');
				for ( var k = 0; k < xa1.length; k++) {
					x2 = xa1[k];
					str += "<a href=\"javascript:SubjectSearch('" + x2
							+ "');\">" + xa1[k] + "</a>";
					str += "&nbsp;";
				}
				$("#broaderterm_").html(str);
				x = catData[8];
				str = '';
				var xa2 = x.split(':');
				for ( var k = 0; k < xa2.length; k++) {
					x2 = xa2[k];
					str += "<a href=\"javascript:SubjectSearch('" + x2
							+ "');\">" + xa2[k] + "</a>";
					str += "&nbsp;";
				}
				$("#narrowerterm_").html(str);
				x = catData[2];
				str = '';
				var xa3 = x.split(':');
				for ( var k = 0; k < xa3.length; k++) {
					x2 = xa3[k];
					str += "<a href=\"javascript:SubjectSearch('" + x2
							+ "');\">" + xa3[k] + "</a>";
					str += "&nbsp;";

				}
				$("#relatedterm_").html(str);
				x = catData[4];
				str = '';
				var xa4 = x.split(':');
				for ( var k = 0; k < xa4.length; k++) {
					x2 = xa4[k];
					str += "<a href=\"javascript:SubjectSearch('" + x2
							+ "');\">" + xa4[k] + "</a>";
					str += "&nbsp;";
				}
				$("#usedfor_").html(str);
				$("#useas_").html(catData[5]);

			});
}

function GoOpacAdvanced() {
	if (CheckFeature('opac') == false) {
		alert("This feature is not part of FREE Cyberlibrary. Please email for prices");
		return;
	}

	$("#workbar").remove();
	$("#workarea").append("<div id=\"workbar\"></div>");
	loadTab("#workbar", "opacadvanced.div");

	SetOpacMouseKeys();
	var z2 = new dhtmlXCombo("index_", "alfa", 200);
	z2.loadXMLString(option_index);
	z2.setComboText('Any field');
	z2.selectOption(0, false, true);
	global_z2 = z2;

	var z3 = new dhtmlXCombo("style_", "alfa", 200);
	z3.loadXMLString(option_style);
	z3.setComboText('Natural language');
	z3.selectOption(0, false, true);
	global_z3 = z3;

	var z4 = new dhtmlXCombo("having_", "alfa", 200);
	z4.loadXMLString(option_having);
	z4.setComboText('All of these words');
	z4.selectOption(0, false, true);
	global_z4 = z4;

	var z5 = new dhtmlXCombo("media_", "alfa", 200);
	z5.loadXML("loadmedia.php?mask=%&limit=2000");
	z5.setComboText('Any');
	z5.selectOption(0, false, true);
	global_z5 = z5;

	var z6 = new dhtmlXCombo("published_", "alfa", 200);
	z6.loadXMLString(option_published);
	z6.setComboText('Anytime');
	z6.selectOption(0, false, true);
	global_z6 = z6;

	GoToField("#search_");
}

var advancedHistory = new Array();
function GoOpacAdvancedSearch(history_term) {
	var process = '';
	if (history_term != '') {
		var x = history_term.split(':')[1];
		searchValue = advancedHistory[x];
	} else {
		index_search = global_z2.getSelectedValue();
		style_search = global_z3.getSelectedValue();
		having_search = global_z4.getSelectedValue();
		media_search = global_z5.getSelectedValue();
		published_search = global_z6.getSelectedValue();
		search_term = $("#search_").val();
		if (having_search == 'and') {
			if (style_search == 'boolean') {
				search_term = '+';
				search_term += $("#search_").val();
				search_term = search_term.replace(/ /g, '+');
				search_term = search_term.replace(/\+\+/g, '+');
			}
		} else if (having_search == 'or') {
			search_term = search_term.replace(/\+/g, ' ');
			search_term = search_term.replace(/\-/g, ' ');
			style_search = 'natural';
		} else if (having_search == 'not') {
			var a = new Array();
			a = search_term.split(' ');
			search_term = "+" + a[0];
			for ( var i = 1; i < a.length; i++) {
				search_term += "-";
				search_term += a[i];
			}
			style_search = 'boolean';
		}
		//"<option value=\"notall\">Any of these words but not all of them</option>" +
		else if (having_search == 'notall') {
			process = 'notall';
			style_search = 'natural';
		}
		search_term = search_term.replace(/\+/g, ' +');
		search_term = search_term.replace(/\-/g, ' -');
		searchValue = '';
		search_term = fixedEncodeURIComponent(search_term);
		searchValue = "match.php?search_mask=" + search_term + "&style="
				+ style_search + "&index=" + index_search + "&media="
				+ media_search + "&process=" + process + "&published="
				+ published_search;

	}

	OpacGridDiv("");
	mygrid = new dhtmlXGridObject('gridholder');
	mygrid.setImagePath("imgs/");
	GridStyle('800px', '260px');
	mygrid
			.setHeader("Id,Isbn,Title,Authors,Publisher,Media,Class,Bibliography");
	mygrid.setColTypes("ro,ro,ro,ro,ro,ro,ro,ch");
	mygrid.setInitWidths("50,70,200,120,100,100,70,90");
	mygrid.setColAlign("left,left,left,left,left,left,left,center");
	mygrid.setColSorting("server,server,server,server,server,server,server,na");
	mygrid.attachEvent("onBeforeSorting", customColumnSortBasic);
	mygrid.attachEvent("onBeforePageChanged", function() {
		if (!this.getRowsNum())
			return false;
		return true;
	});
	mygrid.enablePaging(true, 50, 10, "pagingarea", true, "infoarea");
	mygrid.setPagingSkin("bricks");
	mygrid.setSkin("light");
	mygrid.init();

	mygrid.enableColumnAutoSize(false);
	mygrid.enableSmartRendering(false);
	mygrid.attachEvent("onXLE", function() {
		showLoading(false);
	});
	mygrid.attachEvent("onXLS", function() {
		showLoading(true);
	});
	mygrid.loadXML(searchValue);
	mygrid.setSizes();

	$("#searchresults").html("<h3><em>Results</em></h3>");
	advancedHistory.push(searchValue);
	var len = advancedHistory.length - 1;
	searchHistory.push("Advaced@@GoOpacAdvancedSearch@@" + search_term + ":"
			+ len);
}

function OpacGridDiv(msg) {
	$("#workbar").remove();
	$("#workarea")
			.append(
					"<div id=\"workbar\">"
							+ "<div align=\"center\"  id = \"headholder\" ></div>"
							+ "<div id=\"gridholder\" style=\"width:100%;height:260px;margin-top:5px;margin-bottom:10px;\"></div>"
							+ "<div  id=\"pagingarea\"></div>"
							+ "<div   id=\"infoarea\"></div>"
							+ "<div id=\"groupholder\"></div></div>");
	$("#workarea")
			.css("background", "url(images/header_bg.gif) repeat 0px 0px");
}

function SetOpacValidator(n) {
	if (!n)
		n = 50;
	$('label.required').append('&nbsp;<strong>*</strong>&nbsp;');
	$.validator.addMethod("pageRequired", function(value, element) {
		var $element = $(element);
		function match(index) {
			return current == index
					&& $(element).parents("#sf" + (index + 1)).length;
		}
		if (match(0) || match(1) || match(2)) {
			return !this.optional(element);
		}
		return "dependency-mismatch";
	}, $.validator.messages.required);
	var v = $("#cmaForm").validate( {
		errorClass : "warning",
		onkeyup : false,
		onblur : false,
		onfocusout : false,
		onclick : false,
		submitHandler : function() {
			func();
		},
		errorPlacement : function(error, element) {
			offset = element.offset();
			error.insertBefore(element);
			error.css('position', 'absolute');
			error.css('left', offset.left + element.outerWidth());
			error.css('top', offset.top - n);
		}

	});
}

function SelfServiceRenew(mygrid) {
	mygrid.forEachRow(function(id) {
		if (mygrid.cells(id, 0).getValue() == 1) {
			var item = mygrid.cells(id, 1).getValue();
			var borrower = mygrid.cells(id, 3).getValue();
			var item_category = mygrid.cells(id, 4).getValue();
			var renewdate = OpacGetRenewDate(item, item_category);
			if (renewdate != '') {
				OpacGetStatus(item);
				if (DoSelfServiceRenew(borrower, item, item_category,
						renewdate, id) == true)
					mygrid.cells(id, 6).setValue(renewdate);
			}
		}
	});
}

var SQL_CATEGORY_MATRIX = "select period_,return_ from lending_categories where lower(borrower_) = lower('$borrower') and lower(item_) = lower('$item')";
var SQL_SPECIAL_DATE = "select return_ from `specialdates` where '$myreturn' >= holidaystart_ and '$myreturn'  <= holidayend_ and active_ = 'y'";
var SQL_BORROWER_CATEGORY_RETURN = "select period_,return_ from borrower_category where category_ = '$category'";
var SQL_ITEM_CATEGORY_RETURN = "select period_,return_ from item_category where category_ = '$category'";

function OpacGetRenewDate(item, item_category) {
	var reserved_rows = new Array();
	var use_this_date = '';
	if (item_category == '') {
		item_category = 'ordinary';
	}
	//check that this item is not reserved

	//first level check get loan period and return date from category matrix
	var SQL = SQL_CATEGORY_MATRIX;
	SQL = SQL.replace('$borrower', global_selfservice_borrower_category);
	SQL = SQL.replace('$item', item_category);
	//prompt("matrix",SQL);
	var matrix_return = OpacRenewCalc("Matrix", SQL);
	//alert("matrix return " + matrix_return);
	var SQL = SQL_BORROWER_CATEGORY_RETURN;
	SQL = SQL.replace('$category', global_selfservice_borrower_category);
	//prompt("borrower category",SQL);
	var borrower_category_return = OpacRenewCalc("Borrower", SQL);
	//alert("borrower category return " + borrower_category_return);

	var SQL = SQL_ITEM_CATEGORY_RETURN;
	SQL = SQL.replace('$category', item_category);
	//prompt("item category",SQL);
	var item_category_return = OpacRenewCalc("Item", SQL);
	//alert("item" + item_category_return);

	//hierarchy of dates
	//holiday date
	//matrix date
	//book category
	//borrower	category
	//get any return date from special dates
	if (matrix_return != '')
		use_this_date = OpacGetSpecial(matrix_return);
	else if (item_category_return != '')
		use_this_date = OpacGetSpecial(item_category_return);
	else if (borrower_category_return != '')
		use_this_date = OpacGetSpecial(borrower_category_return);
	return (use_this_date);
}
function OpacRenewCalc(renewtype, SQL) {
	//	alert(renewtype);
	var result = new Array();
	var SQLCOLS = "period_,return_";
	//	prompt("matrix",SQL);
	OpacAjaxSql("item_box", SQL, SQLCOLS, result); //results in result[i] etc
	if (result[0] == 0)
		return ('');
	var _return = result[2];
	var _period = result[1];
	//return date is priority
	if (_return == "0000-00-00") {
		if (_period != '')
			_return = GetOpacReturnDate(_period);
		else {
			alert("Return date: invalid category data");
			_return = GetReturnDate(0);
		}
	} else {
		var a = new Array();
		a = result[2].split('-');
		_return = a[2] + "/" + a[1] + "/" + a[0];

	}
	//	alert(_return);
	return (_return);
}

//calculate a new date from a period
function GetOpacReturnDate(period) {
	//	 alert("period " + period);
	var newdue = '';
	var due = new Date();
	due.OpacaddBusDays(+period);
	newdue += due.getDate();
	newdue += "/";
	newdue += due.getMonth() + 1;
	newdue += "/";
	newdue += due.getFullYear();
	return (newdue);
}
function OpacGetSpecial(d) {
	var a = new Array();
	a = d.split("/");
	var myreturn = a[2] + "-" + a[1] + "-" + a[0];
	var SQL = SQL_SPECIAL_DATE;
	SQL = SQL.replace('$myreturn', myreturn);
	SQL = SQL.replace('$myreturn', myreturn);
	//prompt("",SQL);
	var result = new Array();
	var SQLCOLS = "return_";
	OpacAjaxSql("item_box", SQL, SQLCOLS, result); //results in result[i] etc
	//alert("result " + result);
	if (result[0] == 0)
		myreturn = d;
	else {
		var a = new Array();
		a = result[1].split("-");
		var myreturn = a[0] + "/" + a[1] + "/" + a[2];
	}
	//		alert(myreturn);
	return (myreturn);
}
function DoSelfServiceRenew(_borrower, _item, _item_category, _return, rId) {
	if (OpacCheckRenewPriv('renews_', "renews", _item_category, rId) == false)
		return;
	global_renew_date = '';
	var _loan = 0;
	var _renew = 0;

	_loan = parseInt(global_item_loan, 10) + 1;
	_renew = parseInt(global_item_renew, 10) + 1;
	var SQL = "update copies set " + "borrower_='" + _borrower + "',"
			+ "status_='LOA'," + "return_='" + SetDate(_return) + "',"
			+ "overdue_=0," + "loan_=" + _loan + "," + "renew_=" + _renew
			+ " where barcode_='" + _item + "'";
	var result = OpacUpdateRecord(SQL, "tab");
	if (isNaN(result)) {
		alert(result);
		return (false);
	}
	mygrid.cells(rId, 7).setValue(_renew);
	return (true);
}

function OpacCheckRenewPriv(type_, msg, item_category, rId) {
	var result = new Array();
	//check renews max in matrix
	var matrixRenews = 999;
	var itemRenews = 999;
	var borrowerRenews = 999;
	var SQL = "select " + type_ + " from lending_categories "
			+ "where lower(borrower_) = lower('"
			+ global_selfservice_borrower_category
			+ "') and lower(item_) = lower('" + item_category + "')";
	//prompt("matrix",SQL);
	var SQLCOLS = type_;
	OpacAjaxSql("item_box", SQL, SQLCOLS, result); //results in result[i] etc
	//alert(result);
	if (result[0] != '0') { //number is valid
		matrixRenews = result[1];
	}
	//alert("matrix renews " + matrixRenews);

	//check loans max in borrower category
	var SQL = "select " + type_ + " from borrower_category "
			+ "where lower(category_) = lower('"
			+ global_selfservice_borrower_category + "')";
	//	prompt("borrower",SQL); 
	OpacAjaxSql("item_box", SQL, SQLCOLS, result); //results in result[i] etc
	//	alert(result);
	if (result[0] != '0') { //number is valid
		borrowerRenews = result[1];
	}
	//alert("borrower renews " + borrowerRenews);
	//check loans max in item category
	var SQL = "select " + type_ + " from item_category "
			+ "where lower(category_) = lower('" + item_category + "')";
	//	prompt("item",SQL); 
	OpacAjaxSql("item_box", SQL, SQLCOLS, result); //results in result[i] etc
	//	alert(result);
	if (result[0] != '0') { //number is valid
		itemRenews = result[1];
	}
	//alert("item renews " + itemRenews);
	//find total current number of renews for this borrower
	var ids = mygrid.getAllRowIds();
	//alert("ids " + ids);
	var x = ids.split(',');
	//alert("length " + x.length);
	count = 0;
	var totalRenew = 0;
	for ( var i = 0; i < x.length; i++) {
		if (x[i] == '')
			break;
		var cellObj = mygrid.cellById(x[i], 7);
		totalRenew += parseInt(cellObj.getValue(), 10);
	}
	//	alert("current renews " + totalRenew);
	if (totalRenew >= borrowerRenews) {
		alert("Maximum " + msg + " (" + borrowerRenews + ")"
				+ " exceded for this borrower category");
		return (false);
	}
	//find total renews in this category
	var totalRenew = 0;
	for ( var i = 0; i < x.length; i++) {
		if (x[i] == '')
			break;
		var cellObj = mygrid.cellById(x[i], 4);
		var category = cellObj.getValue();
		//	alert("category " + category + " global_item_category " + item_category);
		if (category == item_category) {
			var cellObj = mygrid.cellById(x[i], 7);
			totalRenew += parseInt(cellObj.getValue(), 10);
		}
	}
	//	alert("itemrenews " + itemRenews);
	//	alert("category renews " + totalRenew);
	if (totalRenew >= itemRenews) {
		alert("Maximum " + msg + " (" + itemRenews + ")"
				+ " exceded for this item category");
		return (false);
	}
	if (totalRenew >= itemRenews) {
		alert("Maximum " + msg + " (" + itemRenews + ")"
				+ " exceeded for this borrower/item category");
		return (false);
	}
	return (true);
}

function OpacUpdateRecord(SQL, fieldname) {
	var ESQL = escape(SQL);
	var myData = '';
	$.ajax( {
		type : "post",
		url : "gophpupdate.php",
		data : "cmd=" + ESQL,
		async : false,
		beforeSend : function() {
			$("#load_" + fieldname).html('<img src="images/wait.gif" />');
			$("#load_" + fieldname).show("fast");
		},
		complete : function() {
			$("#load_" + fieldname).html('');
			$("#load_" + fieldname).hide("slow");
		},
		success : function(data) {
			var xml;
			if ($.browser.msie) {
				if (typeof data == "string") {
					xml = new ActiveXObject("Microsoft.XMLDOM");
					xml.async = false;
					xml.loadXML(data);
				} else
					xml = data;
			} else
				xml = data;
			$(xml).find('record').each(function(x) {
				myData = $(this).find("pkey").text();
			});
		},
		error : function() {
			alert("There has been an error");
			myData = "error";
		}
	});
	return (myData);
}

function OpacGetStatus(item) { //see if item is on the shelf
	var result = new Array();
	var SQL = "select loan_,renew_ from copies where barcode_ = " + item;
	var SQLCOLS = "loan_,renew_";
	OpacAjaxSql("tab", SQL, SQLCOLS, result); //results in result[i] etc
	if (result[0] != '0') { //number is valid
		global_item_loan = result[1];
		global_item_renew = result[2];
	}
}
function OpacGetDate() {
	var d = new Date();
	var m = d.getMonth() + 1;
	if (m < 10)
		m = "0" + m;
	var t = d.getDate();
	if (t < 10)
		t = "0" + t;
	return (t + "/" + m + "/" + d.getFullYear());
}

function GetNextYear() {
	var d = new Date();
	var m = d.getMonth() + 1;
	if (m < 10)
		m = "0" + m;
	var t = d.getDate();
	if (t < 10)
		t = "0" + t;
	var y = parseInt(d.getFullYear(), 10) + 1;
	return (t + "/" + m + "/" + y);
}

function GetYear() {
	var d = new Date();
	return (d.getFullYear());
}

function SetDate(myDate) {
	var d = myDate.split('/');
	return (d[2] + "-" + d[1] + "-" + d[0]);
}

function UnSetDate(myDate) {
	if (myDate.indexOf('-') != -1) {
		var d = myDate.split('-');
		return (d[2] + "/" + d[1] + "/" + d[0]);
	}
}

function trim(str) {
	return str.replace(/^\s+|\s+$/g, "");
}

