String.prototype.trim = function () {
	return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function SingleSelectRow(index){
	
}

//Re-populates GMDs and Fields on the advanced search form based on appropriate values in the Enquiry index setup
//Change input fields to number range fields
FieldCharsStripped = FieldChars.replace(/,/g, '');
FieldTypesArray = FieldTypes.split(',');
FieldEgTextStripped = FieldEgText.replace(/"/g, '');
FieldEgTextArray = FieldEgTextStripped.split(',');

function fieldChange(fieldId,fieldIdNumber){
	SessionID = $.cookie('SessionID');
	mediaField = "#Media" + fieldIdNumber;
	fieldField = "#Fields" + fieldIdNumber;
	searchBlock = "#searchblock" + fieldIdNumber;
	searchField = "#searchText" + fieldIdNumber;
	currentGmd = $(mediaField).val();
	currentField = $(fieldField).val();
	if(currentField=='@'){
		requiredValue = '#';
	} else{
		requiredValue = currentField;
	}
	requiredValue = escape(requiredValue);

	var FieldTypesKey = FieldCharsStripped.indexOf(currentField);
	var searchClass = $(searchField).attr('class');

	if(FieldTypesArray[FieldTypesKey]==undefined||FieldTypesArray[FieldTypesKey]==''){
		//Make sure field is single
		if(searchClass!='srchbox'){
			//needs to switch and resize input
			var singleHtml = '<input type="text" id="searchText'+fieldIdNumber+'" name="searchterm" class="srchbox" value="" />';
			$(searchBlock).find('.searchbox').html(singleHtml);
			//find largest input box and sets width to match
			largestSbWidth = '';
			$('.srchbox').each(function(){
				var sbWidth = $(this).width()
				if(largestSbWidth < sbWidth){
					largestSbWidth = sbWidth;
				}
			});
			$(searchBlock).find('.srchbox').width(largestSbWidth);
		}
	} else if(FieldTypesArray[FieldTypesKey]=='Number'){
		//Change to two fields using ... delimiter
		if(searchClass!='srchNumber'){
			//needs to switch
			var multiHtml = '<input type="text" id="searchText'+fieldIdNumber+'a" class="srchNumber" /> - <input type="text" id="searchText'+fieldIdNumber+'b" class="srchNumber" /><span class="srchExample">'+FieldEgTextArray[FieldTypesKey]+'</span>';
			$(searchBlock).find('.searchbox').html(multiHtml);
		}
	} else if(FieldTypesArray[FieldTypesKey]=='Date'){
		//Change to two fields using --- delimiter
		if(searchClass!='srchDate'){
			//needs to switch
			var multiHtml = '<input type="text" id="searchText'+fieldIdNumber+'a" class="srchDate" /> - <input type="text" id="searchText'+fieldIdNumber+'b" class="srchDate" /><span class="srchExample">'+FieldEgTextArray[FieldTypesKey]+'</span>';
			$(searchBlock).find('.searchbox').html(multiHtml);
		}
	} else if(FieldTypesArray[FieldTypesKey]=='Class'){
		//Change to two fields using ... delimiter
		var multiHtml = '<input type="text" id="searchText'+fieldIdNumber+'a" class="srchClass" /> - <input type="text" id="searchText'+fieldIdNumber+'b" class="srchClass" /><span class="srchExample">'+FieldEgTextArray[FieldTypesKey]+'</span>';
		$(searchBlock).find('.searchbox').html(multiHtml);
	}
}

function DeleteSearchCookies(){
	var searchTextTotal = $.cookie('searchTextTotal');
	if (searchTextTotal) {
		var searchTextArray = searchTextTotal.split(',');
		for (var i=0; i<searchTextArray.length; i++) {
			//search term
			var searchCookieIndex = 'searchText' + searchTextArray[i];
			$.cookie(searchCookieIndex, null, {path: cookiepath});
			//field
			var FieldsCookieIndex = 'Fields' + searchTextArray[i];
			$.cookie(FieldsCookieIndex, null, {path: cookiepath});
			//media
			var MediaCookieIndex = 'Media' + searchTextArray[i];
			$.cookie(MediaCookieIndex, null, {path: cookiepath});
			//boolean
			var BoolCookieIndex = 'Bool' + searchTextArray[i];
			$.cookie(BoolCookieIndex, null, {path: cookiepath});
			$.cookie('IsAdvancedSearch', null, {path: cookiepath});
		}
		$.cookie('searchTextTotal', null, {path: cookiepath});
	}
	$.cookie('searchText0', null, {path: cookiepath});
}

function pageTimeOut(){
	if(ResetTimeOut){
		//test it is a number
		if(ResetTimeOut > 30){
			ResetTimeOutMil = ResetTimeOut * 1000;
			setTimeout(function(){
				PageRefresh = setTimeout(function(){
					pageRedirect = setTimeout(function(){
						document.location = 'timeout';
					},30000);
					$('#mainBody').append('<div id="pageTimeOut"></div>')
					$('#pageTimeOut').html('This page will timeout in <span class="bold">30</span> seconds, click on cancel to to prevent this.').attr('title','You are about to be logged out').dialog({
						buttons: {
							"Cancel": function() {
								$(this).dialog("close");
								PageRefresh = null;
								remainingTime = null;
								clearTimeout(pageRedirect);
								pageTimeOut();
								clearInterval(pageCountDown);
								keepAliveRequest = $.ajax({
									'url': scriptpath + '/keepalive',
									'type': 'POST',
									'success': function(data) {
									}
								});
							}
						}
					});
					remainingTime = 30;
					pageCountDown = setInterval(function(){
						if(remainingTime > 0){
							remainingTime--;
							$('#pageTimeOut span').text(remainingTime);
						}
					},1000);
				},30000);
			},(ResetTimeOutMil - 30000));
		}
	}
}

$(document).ready(function(){
	//fade message
	if(fadeMessage && fadeMessage!=''){
		Regexp2 = new RegExp("\[[A-za-z]{1,6}[0-9]{1,3}\]|\[[A-za-z]{1,6}[0-9]{1,3}-S\]");
		var regMatch = fadeMessage.match(Regexp2);
		messageText = fadeMessage.replace(Regexp2, '');
		$('#fadeMessage').html(messageText).addClass('ui-state-highlight').addClass('ui-corner-all').show();
		setTimeout(function(){
			$('#fadeMessage').fadeOut('slow');
		},4000);
	}
	
	
	//Timeout
	pageTimeOut();
	//remove highlight
	if(HighlightOff=='1'){
		$('.highlight').each(function(){
			$(this).removeClass('highlight');
		});
	}

	
	$('.mediumselect').each(function(){
		$(this).removeOption('#');
	});
	
	currentFocus = null;
	$('select').focus( function() {
		currentFocus = this.id;
	}).click(function(){
		currentFocus = this.id;
	}).blur( function() {
		currentFocus = null;
	});

	$('input').focus( function() {
		currentFocus = this.id;
	}).click(function(){
		currentFocus = this.id;
	}).blur( function() {
		currentFocus = null;
	});

	$('.srchbox').focus( function() {
		if(wordListOn=='1'){
			currentFocus = 'wordlist';
		} else {
			//alert(this.id);
			currentFocus = this.id;
		}
	}).blur( function() {
		currentFocus = null;
	});
	//Side bar empty
	var HomeSideText = $('#homeSide').text();
	var re = new RegExp(/[\S]+/);
	if(!HomeSideText.match(re)){
		//$('#sideBar').css('width','auto');
		//$('#sideBar').css('paddingLeft','5px');
	}

	//circulation
	$('.circTransaction').submit(function(event){
		event.preventDefault();
		var actionUrl = $(this).attr('action');
		var circSel;
		var inputId;
		var totalInputID=new Array();
		var count = '0';
		
		$('.rdcirc input[type="checkbox"]').each(function(){
			
			if($(this).attr('checked')){
				inputId = $(this).attr('title');
				inputId = inputId.substr(1,inputId.length-1);
				totalInputID[count] = inputId;
				count++;
			}
			
		});
		//test for RowId if exists replace, else append data to the end
		var re = new RegExp('RowID');
		var actionUrlMatch = actionUrl.match(re);
		var totalInputIDstring = totalInputID.join('%FD');
		
		if(totalInputID && actionUrlMatch){
			actionUrl = actionUrl.replace(re, totalInputIDstring);
			document.location=actionUrl
		} else if (totalInputID) {
			document.location=actionUrl + totalInputIDstring;
		}
	});

	$('.SingleSelectRow').parent().parent().each(function(){
		$(this).find('input[type="checkbox"]').click(function(event){
			var checkedStatus = $(this).attr('checked');
			if(checkedStatus){
				$(this).attr('checked',null);
			} else {
				$(this).attr('checked','checked');
			}
		});
		$(this).click(function(event){
			//event.preventDefault();
			if(!linkClick){
				var clickedId = $(this).find('input[type="checkbox"]').attr('title');
				var checkedStatus = $(this).find('input[type="checkbox"]').attr('checked');
				
				if(checkedStatus){
					$(this).find('input[type="checkbox"]').attr('checked',null);
				} else {
					$(this).find('input[type="checkbox"]').attr('checked','checked');
				}

				//uncheck all other checkboxes
				$('.SingleSelectRow').each(function(){
					if($(this).attr('title') != clickedId){
						$(this).attr('checked',null);
					}
				});
			}
		});
	});

	//odd even tr highlighting
	$('tr.tbcdata:odd').addClass('oddRow');
	$('tr.circRowDefault:odd').addClass('oddRow');
	$('table.SeeAlsoTable tbody tr:odd').addClass('oddRow');
	//row is even as header counts as first row
	$('.searchHistory tr:even').addClass('oddRow');
	$('.sharedlists tr:even').addClass('oddRow');
	$('.readerlists tr:even').addClass('oddRow');
	$('.readerSearches tr:even').addClass('oddRow');
 
	// set rating if exists

	$(function(){ 
		$('.rating :radio.star').each(function(){
			$(this).rating();
		});
	});

	function setControlBarSize(){
		var cBarSize = $('#controlBar').width()-75;
		var cliTotal;
		$('#controlBar li').each(function(){
			var cWidth = $(this).width();
			if(cliTotal){
				cliTotal += cWidth;
			} else {
				cliTotal = cWidth;
			}
		});
		if(cliTotal > cBarSize){
			$('#controlBar').height('2.8em');
			$('#controlBar').css('minHeight','32px');
		} else {
			$('#controlBar').height('1.4em');
			$('#controlBar').css('minHeight','16px');
		}

		var sBarSize = $('#secondaryBar').width()-3;
		var sliTotal;
		$('#secondaryBar li').each(function(){
			var sWidth = $(this).width();
			if(sliTotal){
				sliTotal += sWidth;
			} else {
				sliTotal = sWidth;
			}
		});
		if(sliTotal > sBarSize){
			$('#secondaryBar').height('2.8em');
			$('#secondaryBar').css('minHeight','32px');
		} else {
			$('#secondaryBar').height('1.4em');
			$('#secondaryBar').css('minHeight','16px');
		}
	}

	//remove empty
	$("tr.removeEmpty td").each(function(index) {
		var pText = $(this).text();
		var trimpText =  pText.replace(/^[\s\xA0]*/g,"").replace(/[\s\xA0]*$/g,"");

		if(trimpText==''){
			$(this).parent().addClass('hidden');
		}
	});

	//remove empty p
	var contents = "";
	$("p.removeempty").each(function(index) {
		var pText = $(this).text();
		var trimpText =  pText.replace(/^[\s\xA0]*/g,"").replace(/[\s\xA0]*$/g,"");
		var pTitle = $(this).attr("title");
		if(trimpText==pTitle){
			$(this).addClass('hidden');
		}
	});

	$('.srchbox').each(function(){
		$(this).focus(function(){
			this.select();
		});
	});

	//Link selection
	$(".onFocusSelect").focus(function(){
		if(this.value == this.defaultValue){
			this.select();
		}
	});

	//Open new window

	$('a.NewWindow').each(function(){
		$(this).click(function(event){
			event.preventDefault();
			var baseURL = $(this).attr('href');
			var windowID = $(this).attr('title');
			window.open(baseURL, windowID, 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=1');
		});
	});

	//Favourites button
	$('.addFavourites').click(function(){
		//Check select cookie
		var SelResults = $.cookie('SelResults');
		if(SelResults){
			windowsRedirect = scriptName + "/savelist1?DataSetName=" + DataSetName + "&amp;finishurl=" + CurrentURL;
		} else {
			windowsRedirect = scriptName + "/savesearch1?DataSetName=" + DataSetName + "&amp;finishurl=" + CurrentURL;
		}
		document.location = windowsRedirect;
	});

	//nav to search
	$('.topLeftSearch').click(function(){
		$('#searchTerm0').focus();
	});

	//retain search
	//when exiting search form save data to cookies, through either links or submitting a form

	$('.gensrchForm').submit(function(event){
		//Replace cookies
		DeleteSearchCookies();
		var searchText0 = $(this).find('.search0').val();
		$.cookie('searchText0', searchText0, {path: cookiepath});
		$.cookie('searchText1', searchText0, {path: cookiepath});
		$.cookie('Fields1', '@', {path: cookiepath});
		$.cookie('MediaVal1', '#', {path: cookiepath});
		$.cookie('MediaText1', 'All media', {path: cookiepath});
		$.cookie('Bool1', 'AND', {path: cookiepath});
		$.cookie('searchTextTotal', '1', {path: cookiepath});
		searchText0 = encodeURIComponent(searchText0);
		event.preventDefault();
		var BaseUrl = $(this).attr('action');
		document.location = BaseUrl + "?searchTerm0=" + searchText0;
	});
	
	var searchText0 = $.cookie('searchText0');
	if(searchText0){
		$('.search0').each(function(){
			var searchText0 = $.cookie('searchText0');
			$(this).val(searchText0);
		});
	}

	//Themes
	var theme = $.cookie("theme");
	if(theme){
		$("link#skin").attr("href", PublicDir + "/themes/"+ theme +".css");
		if(theme=="contrast"){
			$('.navPrev').attr('src', PublicDir + "/themes/contrast/images/navigate_left.png");
			$('.navNext').attr('src', PublicDir + "/themes/contrast/images/navigate_right.png");
		} else {
			$('.navPrev').attr('src', PublicDir + "/images/prev.png");
			$('.navNext').attr('src', PublicDir + "/images/next.png");
		}
		$('#sw_button').attr('src', PublicDir + "/themes/" + theme + "/images/search.png");
		$.cookie("theme",theme,{path: cookiepath});
	}

	$(".theme a").each(function(){
		$(this).click(function(event) {
			event.preventDefault();
			theme = this.id;
			//highlight on/off button is inappropriate for highcontrast mode and so is hidden
			if(theme=="contrast"){
				$('.navPrev').attr('src', PublicDir + "/themes/contrast/images/navigate_left.png");
				$('.navNext').attr('src', PublicDir + "/themes/contrast/images/navigate_right.png");
			} else {
				$('.navPrev').attr('src', PublicDir + "/images/prev.png");
				$('.navNext').attr('src', PublicDir + "/images/next.png");
			}
			$('#sw_button').attr('src', PublicDir + "/themes/" + theme + "/images/search.png");
			$("link#skin").attr("href", PublicDir + "/themes/"+ theme +".css");
			$.cookie("theme",theme,{path: cookiepath});
		});
	});

	//Text size
	function setSize(textMultiplier){
		//min text size is 75% max text size is 175%
		if(textMultiplier < 0.80 ){
			textMultiplier = 0.80;
	}
		if(textMultiplier > 1.5 ){
			textMultiplier = 1.5;
		}

		textBase = 10;
		$('body').css('fontSize', textBase * textMultiplier + "pt");
		//advanced search multiselect appears to override the body text size so needs to be forced in addition
		$('.multiSelect input').css('fontSize', textBase * textMultiplier + "pt");
		
		$('#textSize').text(Math.round(currentSize * 100) + '%');
		$.cookie('textSize', Math.round(currentSize * 100), {path: cookiepath});
	}

	$('#resize').click(function(event){
		event.preventDefault();
		var isVisible = $('#resizeContainer').css('display');
		if(isVisible=='none'){
			$('#resizeContainer').fadeIn();
		} else {
			$('#resizeContainer').fadeOut();
		}
		//get current text size to modify textSize span
		if(currentSize){
			$('#textSize').text(Math.round(currentSize * 100) + '%');
		}
	});

	var startingTextSize = $.cookie('textSize');
	if(startingTextSize){
		var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
		var remAlphaTextSize = startingTextSize.match(re);
		var currentSize = remAlphaTextSize / 100;
		if(startingTextSize !='100'){
			setSize(currentSize);
		}
	}

	$('#textPlus').click(function(event){
		event.preventDefault();
		currentSize += 0.1;
		if(currentSize > 1.5 ){
			currentSize = 1.5;
		}
		currentSize = (Math.round(currentSize * 100))/100;
		setSize(currentSize);
	});

	$('#textMinus').click(function(event){
		event.preventDefault();
		currentSize -= 0.1;
		if(currentSize < 0.8 ){
			currentSize = 0.8;
		}
		currentSize = (Math.round(currentSize * 100))/100;
		setSize(currentSize);
	});

	var IsAdvancedSearch = $.cookie('IsAdvancedSearch');
	WordListContext = 'gen';
	if(IsAdvancedSearch){
		WordListContext = 'adv';
		$('#Simple').addClass('hidden');
		$('#Full').removeClass('hidden');
		$('#MainSearchForm').addClass('hidden');
		$('#advsrchfmFull').removeClass('hidden');
		$('.mediumselect').multiSelect({ oneOrMoreSelected: '*' });
		if(IsWordList){
			$('.searchBlock .srchbox').each(function(){
				var currentID = $(this).attr('id');
				if(currentID){
					addWordList(currentID);
				}
				
			});
		}
	}


	$('.AdvSrchSelect').click(function(event){
		event.preventDefault();
		var AdvSrchSelectVal = $(this).attr('id');
		if(AdvSrchSelectVal=='Simple'){
			WordListContext = 'adv';
			$(this).addClass('hidden');
			$('#Full').removeClass('hidden');
			$('#MainSearchForm').addClass('hidden');
			$('#advsrchfmFull').removeClass('hidden');
			$.cookie('IsAdvancedSearch', '1', {path: cookiepath});
			$('#searchbox1 input').focus();
			$('.mediumselect').multiSelect({ oneOrMoreSelected: '*' });
			if(IsWordList){
				$('.searchBlock .srchbox').each(function(){
					var currentID = $(this).attr('id');
					if(currentID){
						addWordList(currentID);
					}
				});
			}
		} else {
			WordListContext = 'gen';
			$(this).addClass('hidden');
			$('#Simple').removeClass('hidden');
			$('#MainSearchForm').removeClass('hidden');
			$('#advsrchfmFull').addClass('hidden');
			$.cookie('IsAdvancedSearch', null, {path: cookiepath});
			$('#sw_input').focus();
			if(IsWordList){
				var currentID = $('#sw_input').attr('id');
				if(currentID){
					addWordList(currentID);
				}
			}
		}
	});

	function clearSearch(){
		$('.srchbox').val('');
		$('.srchNumber').val('');
		$('.srchDate').val('');
		$('.mediumbox a').each(function(){
			$(this).attr('title','All Media').find('input').val('All media');
		});
		$('.mediumbox label').each(function(){
			$(this).removeClass('checked');
		});
		$('.mediumbox label input').each(function(){
			$(this).attr('checked',null);
		});
		$('.fieldselect').each(function(){
			$(this).selectOptions('@');
			var fieldId = $(this).attr('id');
			var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
			var fieldIdNumber = fieldId.match(re);
			fieldChange(fieldId,fieldIdNumber);
		});
		$('.booleanselect').each(function(){
			$(this).val('AND');
		});
	}

	$('#clearbutton').click(function(event){
		event.preventDefault();
		clearSearch();
		DeleteSearchCookies();
	});

	/* Ajax */

	$("form.ajax").submit(function(ajaxEvent){
		$("input.button").each(function(){
			$(this).attr('disabled','disabled');
		});
		ajaxEvent.preventDefault();
		sourceUrl = $(this).attr('action');
		sourceForm = $(this).attr('name');
		selectedInput = $(this).find('input:submit').attr('name');
		row='0';
		$("input").each(function(){
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				row++;
				inputName = $(this).attr('name');
				inputType = $(this).attr('type');
				if(inputType=='checkbox'){
					var inputValue = $(this).attr('checked');
					if(inputValue){
						inputValue='1';
					} else {
						inputValue='0';
					}
				} else if(inputType=='radio'){
					var inputValue = $(this).attr('checked');
					if(inputValue){
						inputValue= $(this).attr('value');
					} else {
						row--;
						inputName='';
					}
				} else if(inputType=='submit') {
					if(selectedInput==inputName){
						var inputValue = '1';
					} else {
						row--;
						inputName='';
					}
				} else if(inputType=='button') {
					row--;
					inputName='';
				} else {
					var inputValue = $(this).attr('value');
				}
				if(row > 1  && inputName){
					formParameters = formParameters + '&' + inputName + "=" + inputValue;
				} else if(inputName){
					formParameters = inputName + "=" + inputValue;
				}
			}
		});

		$("select").each(function(){
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				row++;
				inputName = $(this).attr('name');
				inputValue = $(this).attr('value');
				if(row > 1){
					formParameters = formParameters + '&' + inputName + "=" + inputValue;
				} else {
					formParameters = inputName + "=" + inputValue;
				}
			}
		});

		$('textarea').each(function(){
			row++;
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				inputName = $(this).attr('name');
				inputValue = $(this).attr('value');
				serializedText = $(this).serialize();
				if(row > 1){
					formParameters = formParameters + '&' + serializedText;
				} else {
					formParameters = inputName + "=" + serializedText;
				}
			}
		});

		ajaxRequest = $.ajax({
			'url': sourceUrl,
			'data': formParameters,
			'dataType': 'json',
			'type': 'POST',
			'success': function(data) {
				if(data.message){
					if(data.status){
						Regexp2 = new RegExp("\[[A-za-z]{1,6}[0-9]{1,3}\]|\[[A-za-z]{1,6}[0-9]{1,3}-S\]");
						var regMatch = data.message.match(Regexp2);
						alertMsg = data.message.replace(Regexp2, '\n\n' + regMatch);
						Regexp = new RegExp("<br[ \t\n\r\f\v]/>", "gim");
						alertMsg = alertMsg.replace(Regexp, '\n');
						alert(alertMsg);
					} else {
						$('#fadeMessage').html("<div class='messageText'>" + data.message + " </div>").addClass('ui-state-highlight').addClass('ui-corner-all');
						$('#fadeMessage').removeClass('hidden');
						setTimeout(function(){
							$('#fadeMessage').fadeOut('slow');
						},4000);
					}
				}
				if(data.redirect){
					document.location = data.redirect;
				}
				$("input.button").each(function(){
					$(this).attr('disabled',null);
				});
			}
		});
		$.cookie('disableClicks', null, {path: cookiepath}); 
	});

	$("input.ajax").click(function(ajaxEvent){
		$("input.button").each(function(){
			$(this).attr('disabled','disabled');
		});

		ajaxEvent.preventDefault();
		selectedInput = $(this).attr('name');
		sourceUrl = $(this).parents('form').attr('action');
		sourceForm = $(this).parents('form').attr('name');
		row='0';
		$("input").each(function(){
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				row++;
				inputName = $(this).attr('name');
				inputType = $(this).attr('type');

				if(inputType=='checkbox'){  
					var inputValue = $(this).attr('checked');
					if(inputValue){
						inputValue='1';
					} else {
						inputValue='0';
					}
				} else if(inputType=='radio'){  
					var inputValue = $(this).attr('checked');
					if(inputValue){
						inputValue= $(this).attr('value');
					} else {
						row--;
						inputName='';
					}
				} else if(inputType=='submit') {
					if(selectedInput==inputName){
						var inputValue = '1';
					} else {
						row--;
						inputName='';
					}
				} else if(inputType=='button') {
					row--;
					inputName='';
				} else {
					var inputValue = $(this).attr('value');
				}
				if(row > 1  && inputName){
					formParameters = formParameters + '&' + inputName + "=" + inputValue;
				} else if(inputName){
					formParameters = inputName + "=" + inputValue;
				}
			}
		});

		$("select").each(function(){
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				row++;
				inputName = $(this).attr('name');
				inputValue = $(this).attr('value');
				if(row > 1){
					formParameters = formParameters + '&' + inputName + "=" + inputValue;
				} else {
					formParameters = inputName + "=" + inputValue;
				}
			}
		});

		$('textarea').each(function(){
			row++;
			var currentForm = $(this).parents('form').attr('name');
			//check form parent
			if(sourceForm==currentForm){
				inputName = $(this).attr('name');
				inputValue = $(this).attr('value');
				serializedText = $(this).serialize();
				if(row > 1){
					formParameters = formParameters + '&' + serializedText;
				} else {
					formParameters = inputName + "=" + serializedText;
				}
			}
		});
		
		ajaxRequest = $.ajax({
			'url': sourceUrl,
			'data': formParameters,
			'dataType': 'json',
			'type': 'POST',
			'success': function(data) {
				if(data.message){
					if(data.status){
						Regexp2 = new RegExp("\[[A-za-z]{1,6}[0-9]{1,3}\]|\[[A-za-z]{1,6}[0-9]{1,3}-S\]");
						var regMatch = data.message.match(Regexp2);
						alertMsg = data.message.replace(Regexp2, '\n\n' + regMatch);
						Regexp = new RegExp("<br[ \t\n\r\f\v]/>", "gim");
						alertMsg = alertMsg.replace(Regexp, '\n');
						alert(alertMsg);
					} else {
						Regexp2 = new RegExp("\[[A-za-z]{1,6}[0-9]{1,3}\]|\[[A-za-z]{1,6}[0-9]{1,3}-S\]");
						var regMatch = data.message.match(Regexp2);
						messageText = data.message.replace(Regexp2, '');
						$('#fadeMessage').html("<div class='messageText'>" + messageText + " </div>" + "<div class='circmsgid'>" + regMatch + " </div>").addClass('ui-state-highlight').addClass('ui-corner-all');
						if(data.redirect){
							var pausedRedirect=data.redirect;
							data.redirect='';
							setTimeout(function(){
								$('#fadeMessage').fadeOut('slow');
								setTimeout(function(){
									document.location = pausedRedirect;
								},500);
							},2000);
						} else {
							setTimeout(function(){
								$('#fadeMessage').fadeOut('slow');
							},4000);
						}
					}
				}
				if(data.redirect){
					document.location = data.redirect;
				}
				$("input.button").each(function(){
					$(this).attr('disabled',null);
				});
			}
		});
		$.cookie('disableClicks', null, {path: cookiepath}); 
	});

	$("a.ajax").click(function(ajaxEvent){
		ajaxEvent.preventDefault();
		sourceUrl = $(this).attr('href');
		ajaxRequest = $.ajax({
			'url': sourceUrl,
			'dataType': 'json',
			'type': 'POST',
			'success': function(data) {
				if(data.status){
					Regexp2 = new RegExp("\[[A-za-z]{1,6}[0-9]{1,3}\]|\[[A-za-z]{1,6}[0-9]{1,3}-S\]");
					var regMatch = data.message.match(Regexp2);
					alertMsg = data.message.replace(Regexp2, '\n\n' + regMatch);
					Regexp = new RegExp("<br[ \t\n\r\f\v]/>", "gim");
					alertMsg = alertMsg.replace(Regexp, '\n');
					alert(alertMsg);
				} else {
					$('#fadeMessage').html("<div class='messageText'>" + data.message + " </div>").addClass('ui-state-highlight').addClass('ui-corner-all');
					$('#fadeMessage').removeClass('hidden');
					setTimeout(function(){
						$('#fadeMessage').fadeOut('slow');
					},4000);
				}
				if(data.redirect){
					document.location = data.redirect;
				}
			}
		});

		$.cookie('disableClicks', null, {path: cookiepath}); 
	});

	$('#AdvancedSearchSwitch').click(function(event){
		event.preventDefault();
		$.cookie('IsAdvancedSearch', '1', {path: cookiepath});
		document.location='search1?SearchPage=srchgen.htm';
	});

	//Populate advsearch - TODO - Tidy code, needs re-write of gen, adv, guided server side
	var searchTextTotal = $.cookie('searchTextTotal');
	if (searchTextTotal) {
		var searchTextArray = searchTextTotal.split(',');
		for (var i=0; i<searchTextArray.length; i++) {
			var currentRow = i+1;
			//Search term
			var searchCookieIndex = 'searchText' + currentRow;
			var searchCookieIndexField = $.cookie(searchCookieIndex);
			//search term No. range
			var searchCookie = unescape(searchCookieIndexField);
			var searchCookie = searchCookie.replace(/\+/g,' ');
			searchCookieArray = searchCookie.split('...');
			if(searchCookieArray.length < 2){
				searchCookieArray = searchCookie.split('---');
			}
			//Fields
			var FieldsCookieIndex = 'Fields' + currentRow;
			var FieldsCookieIndexField = $.cookie(FieldsCookieIndex);
			//Media (multiselect)
			var MediaCookieValIndex = 'MediaVal' + currentRow;
			var MediaCookieTextIndex = 'MediaText' + currentRow;
			var MediaCookieValIndexField = $.cookie(MediaCookieValIndex);
			var MediaCookieTextIndexField = $.cookie(MediaCookieTextIndex);
			//Boolean
			var BoolCookieIndex = 'Bool' + currentRow;
			var BoolCookieIndexField = $.cookie(BoolCookieIndex);
			if(searchTextArray[i] > '1' && searchCookieArray[0]!=''){
				CurrentSearchRow=searchTextArray[i];
				var HtmlInsert = '<tr id="searchblock'+searchTextArray[i]+'" class="searchBlock"><td class="fieldbox"><select id="Fields'+searchTextArray[i]+'" name="Fields" class="fieldselect">'+FieldOptions+'</select></td><td id="searchbox'+searchTextArray[i]+'" class="searchbox"><input type="text" id="searchText'+searchTextArray[i]+'" name="searchterm" class="srchbox" value="" /></td><td class="mediumbox"><select id="Media'+searchTextArray[i]+'" name="Media" class="mediumselect" multiple="multiple">'+MediumOptions+'</select></td><td class="booleanbox"><a id="AddSearchRow'+searchTextArray[i]+'" class="AddSearchRow" href="#"><img alt="Add row" title="Click to add another row" src="'+PublicDir+'/images/add.png"/></a><a id="RemSearchRow'+searchTextArray[i]+'" class="RemSearchRow" href="#"><img alt="Remove row" title="Click to remove this row" src="'+PublicDir+'/images/minus2.png"/></a><select id="Bool'+searchTextArray[i]+'" name="Bool" class="booleanselect hidden">'+BoolOptions+'</select></td></tr>';
				var PrevRow = searchTextArray[i]-1;
				$('#searchblock' + PrevRow).after(HtmlInsert);
				AddSearchRow(CurrentSearchRow);
				$('#'+FieldsCookieIndex).selectOptions(FieldsCookieIndexField);
				fieldChange(FieldsCookieIndex,searchTextArray[i]);
				$('#'+BoolCookieIndex).val(BoolCookieIndexField);
				$('#'+searchCookieIndex).val(searchCookieArray[0]);
				$('#'+searchCookieIndex+'a').val(searchCookieArray[0]);
				$('#'+searchCookieIndex+'b').val(searchCookieArray[1]);
				$('#Media'+searchTextArray[i]).removeOption('#').multiSelect({ oneOrMoreSelected: '*' });
				if(MediaCookieValIndexField!='%23'){
					var MediaCookieValIndexFieldArray =  MediaCookieValIndexField.split(',');
					for (var j=0; j<searchTextArray.length; j++) {
						$('input[value="'+MediaCookieValIndexFieldArray[j]+'"]').attr('checked','checked').parent().addClass('checked');
					}
					$('#Media'+ searchTextArray[i]).attr('title',MediaCookieTextIndexField);
					$('#Media'+ searchTextArray[i]+ ' input').val(MediaCookieTextIndexField);
				}
			} else if (searchCookieArray[0]!='') {
				$('#'+FieldsCookieIndex).selectOptions(FieldsCookieIndexField);
				fieldChange(FieldsCookieIndex,searchTextArray[i]);
				$('#'+BoolCookieIndex).val(BoolCookieIndexField);
				$('#'+searchCookieIndex).val(searchCookieArray[0]);
				$('#'+searchCookieIndex+'a').val(searchCookieArray[0]);
				$('#'+searchCookieIndex+'b').val(searchCookieArray[1]);
				if(MediaCookieValIndexField!='%23'){
					var MediaCookieValIndexFieldArray =  MediaCookieValIndexField.split(',');
					for (var k=0; k<searchTextArray.length; k++) {
						$('input[value="'+MediaCookieValIndexFieldArray[k]+'"]').attr('checked','checked').parent().addClass('checked');
					}
					$('#Media'+ searchTextArray[i]).attr('title',MediaCookieTextIndexField);
					$('#Media'+ searchTextArray[i]+ ' input').val(MediaCookieTextIndexField);
				}
			}
			
		}
	}

	function AddSearchRow(CurrentSearchRow){
		var StartingBool = $('#Bool'+(CurrentSearchRow-1)).val();
		//Test for cookie existing otherwise maintain current Bool state
		if($.cookie('Bool'+(CurrentSearchRow-1))){
			$('#Bool'+(CurrentSearchRow-1)).removeClass('hidden');
		} else {
			$('#Bool'+(CurrentSearchRow-1)).removeClass('hidden').val(StartingBool);
		}
		
		$('#AddSearchRow'+(CurrentSearchRow-1)).addClass('hidden');
		$('#RemSearchRow'+(CurrentSearchRow-1)).addClass('hidden');
		addWordList('searchText'+CurrentSearchRow);
		CurrentSearchRow++;
	}
	
	function RemSearchRow(CurrentSearchRow){
		var StartingBool = $('#Bool'+(CurrentSearchRow-1)).val();
		//Test for cookie existing otherwise maintain current Bool state
		if($.cookie('Bool'+(CurrentSearchRow-1))){
			$('#Bool'+(CurrentSearchRow-1)).removeClass('hidden');
		} else {
			$('#Bool'+(CurrentSearchRow-1)).removeClass('hidden').val(StartingBool);
		}
		
		$('#AddSearchRow'+(CurrentSearchRow-1)).addClass('hidden');
		$('#RemSearchRow'+(CurrentSearchRow-1)).addClass('hidden');
		addWordList('searchText'+CurrentSearchRow);
		CurrentSearchRow++;
	}
	
	$('.RemSearchRow').live("click", function(event){
		event.preventDefault();
		var RemID = $(this).attr('id');
		var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
		RemID = RemID.match(re);
		var PrevID = (Math.round(RemID))-1;
		$(this).parent().parent().remove();
		$('#RemSearchRow'+PrevID).removeClass('hidden');
		$('#AddSearchRow'+PrevID).removeClass('hidden');
		$('#Bool'+PrevID).addClass('hidden');
	});
	
	$('.RemSearchRow').each(function(){
		$(this).hover(function(){
			$(this).find('img').attr('src', PublicDir+'/images/minus2-hover.png');
		},
		function(){
			$(this).find('img').attr('src',PublicDir+'/images/minus2.png');
		});
	});
	$('.AddSearchRow').each(function(){
		$(this).hover(function(){
			$(this).find('img').attr('src', PublicDir+'/images/add-hover.png');
		},
		function(){
			$(this).find('img').attr('src',PublicDir+'/images/add.png');
		});
	});

	$('.AddSearchRow').live("click", function(event){
		event.preventDefault();
		var AddID = $(this).attr('id');
		var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
		var AddID = AddID.match(re);
		var NextID = (Math.round(AddID))+1;
		var HtmlInsert = '<tr id="searchblock'+NextID+'" class="searchBlock"><td class="fieldbox"><select id="Fields'+NextID+'" name="Fields" class="fieldselect">'+FieldOptions+'</select></td><td id="searchbox'+NextID+'" class="searchbox"><input type="text" id="searchText'+NextID+'" name="searchterm" class="srchbox" value="" /></td><td class="mediumbox"><select id="Media'+NextID+'" name="Media" class="mediumselect" multiple="multiple">'+MediumOptions+'</select></td><td class="booleanbox"><a id="AddSearchRow'+NextID+'" class="AddSearchRow" href="#"><img alt="Add row" title="Click to add another row" src="'+PublicDir+'/images/add.png"/></a><a id="RemSearchRow'+NextID+'" class="RemSearchRow" href="#"><img alt="Remove row" title="Click to remove this row" src="'+PublicDir+'/images/minus2.png"/></a><select id="Bool'+NextID+'" name="Bool" class="booleanselect hidden">'+BoolOptions+'</select></td></tr>';
		$(this).parent().parent().after(HtmlInsert);
		$('.RemSearchRow').each(function(){
			$(this).hover(function(){
				$(this).find('img').attr('src', PublicDir+'/images/minus2-hover.png');
			},
			function(){
				$(this).find('img').attr('src',PublicDir+'/images/minus2.png');
			});
		});
		$('.AddSearchRow').each(function(){
			$(this).hover(function(){
				$(this).find('img').attr('src', PublicDir+'/images/add-hover.png');
			},
			function(){
				$(this).find('img').attr('src',PublicDir+'/images/add.png');
			});
		});
		$('.srchbox').focus( function() {
			if(wordListOn=='1'){
				currentFocus = 'wordlist';
			} else {
				currentFocus = this.id;
			}
		}).blur( function() {
			currentFocus = null;
		});
		AddSearchRow(NextID);
		$('#Media'+NextID).removeOption('#').multiSelect({ oneOrMoreSelected: '*' });
		var startingTextSize = $.cookie('textSize');
		if(startingTextSize){
			var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
			var remAlphaTextSize = startingTextSize.match(re);
			var currentSize = remAlphaTextSize / 100;
			if(startingTextSize !='100'){
				var mediaFont = $('#Media'+NextID).css('fontSize', currentSize + 'em');
			}
		}
		$('.fieldselect').each(function(){
			var fieldId = $(this).attr('id');
			var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
			var fieldIdNumber = fieldId.match(re);
			$(this).change(function(){
				fieldChange(fieldId,fieldIdNumber);
			});
		});
	});

	//submit adv search

	$("form#advsrchfmFull").submit(function(event){
		//delete existing cookies
		DeleteSearchCookies();
		
		var searchTextArray = new Array();
		//create new cookies
		var error ='';
		$('#advsrchfmFull .searchbox').each(function(){
			var	srchBoxID = $(this).attr('id');
			var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
			var srchBoxNo = srchBoxID.match(re);

			var fieldClassRaw = $(this).find('input').attr('class');
			var fieldClass = fieldClassRaw.replace(/missingWord/, '');
			var fieldClass = fieldClass.trim();

			var srchBoxVal = $('#searchText' + srchBoxNo).val();

			if(rangeSearchA && !rangeSearchB){
				error = 'Please enter an end value for the range';
			} else if (!rangeSearchA && rangeSearchB) {
				error = 'Please enter an start value for the range';
			} else if (rangeSearchA && rangeSearchB){
				if(rangeSearchType=='srchDate'){
					rangeSearchVal = rangeSearchA + '---' + rangeSearchB ;
				} else {
					rangeSearchVal = rangeSearchA + '...' + rangeSearchB ;
				}
				GuidedTerms.push("searchterm="+ encodeURIComponent(rangeSearchVal) +"&Fields="+ encodeURIComponent(rangeSearchCode) +"&Media="+ encodeURIComponent(GuidedMedia) +"&Bool=AND");
			}
			if(fieldClass!='srchbox'){
				var rangeSearchA = $('#searchText'+srchBoxNo+'a').val();
				var rangeSearchB = $('#searchText'+srchBoxNo+'b').val();
				if(rangeSearchA && !rangeSearchB){
					error = 'Please enter an end value for the range';
				} else if (!rangeSearchA && rangeSearchB) {
					error = 'Please enter an start value for the range';
				} else if (rangeSearchA && rangeSearchB){
					if(fieldClass=='srchDate'){
						srchBoxVal = rangeSearchA + '---' + rangeSearchB ;
						$('<input id="searchText'+srchBoxNo+'" type="hidden" class="srchbox" name="searchterm" value="'+ srchBoxVal +'"/>').appendTo('#'+srchBoxID);
					} else {
						srchBoxVal = rangeSearchA + '...' + rangeSearchB;
						$('<input id="searchText'+srchBoxNo+'" type="hidden" class="srchbox" name="searchterm" value="'+ srchBoxVal + '"/>').appendTo('#'+srchBoxID);
					}
				}
			}
		});
		
		//prevent default action
		event.preventDefault();
		//get base url
		var BaseUrl = $(this).attr('action');
		//disable buttons and links
		var SearchBlockArray=new Array();

		//gather search terms
		$('.searchBlock').each(function(){
			var BlockId = $(this).attr('id');
			var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
			var BlockIdNo = BlockId.match(re);
			//get search term
			var SearchValTest = $('#searchText'+BlockIdNo).val();
			var SearchVal = encodeURIComponent(SearchValTest);

			if(SearchValTest){
				var SearchName = $('#searchText'+BlockIdNo).attr('name');
				//get field
				var FieldVal = encodeURIComponent($('#Fields'+BlockIdNo).attr('value'));
				var FieldName = $('#Fields'+BlockIdNo).attr('name');
				//get media
				var MediaName = 'Media';
				//gather terms
				var IsMediaSelected = $('.mediumbox #Media'+BlockIdNo+' input').val();
				if(IsMediaSelected!='All media'){
					var MediaVal=new Array();
					var MediaText=new Array();
					$('#searchblock'+BlockIdNo+' .mediumbox label.checked input').each(function(){
						var CurrentMediaVal = encodeURIComponent($(this).val());
						var CurrentMediaText = $(this).parent().text();
						MediaVal.push(CurrentMediaVal);
						MediaText.push(CurrentMediaText);
					});
				} else {
					MediaVal = encodeURIComponent('#');
				}
				//get boolean
				var BoolVal = $('#Bool'+BlockIdNo).attr('value');
				var BoolName = escape($('#Bool'+BlockIdNo).attr('name'));
				
				//Create Adv search cookies
				var FieldsNo = 'Fields'+ BlockIdNo;
				$.cookie(FieldsNo, FieldVal, {path: cookiepath});
	
				//Media
				var MediaNo = 'Media'+ BlockIdNo;
				var MediaValNo = 'MediaVal'+ BlockIdNo;
				var MediaTextNo = 'MediaText'+ BlockIdNo;
				$.cookie(MediaValNo, MediaVal, {path: cookiepath});
				$.cookie(MediaTextNo, MediaText, {path: cookiepath});
	
				//Boolean
				var BoolNo = 'Bool'+ BlockIdNo;
				$.cookie(BoolNo, BoolVal, {path: cookiepath});
	
				//Search term
				$.cookie('searchText' + BlockIdNo, SearchVal, {path: cookiepath});
				searchTextArray.push(BlockIdNo);
				searchTextTotal=searchTextArray.join(',');
				$.cookie('searchTextTotal', searchTextTotal, {path: cookiepath});
				//create array of search terms
				SearchBlockArray.push(SearchName +"="+ SearchVal +"&"+ FieldName +"="+ FieldVal +"&"+ MediaName +"="+ MediaVal +"&"+ BoolName +"="+ BoolVal);
			}
		});
		if(error){
			$('.error').text(error);
		}else {
			document.location = BaseUrl + "?" + SearchBlockArray.join('&');
		}
		
	});
	$('.TreeView').treeview({
		control: "#treecontrol",
		persist: "cookie",
		collapsed: true,
		cookieId: "treeview-black"
	});
	
	//show search hints
	var searchAssistText = $('.searchAssist p').text();
	if(searchAssistText){
		$('.searchAssist').addClass('ui-state-highlight').addClass('ui-corner-all').show();
	}
	
	//ui for circ information \ui-widget ui-widget-content ui-corner-all
	$('.ItemDetailsBody').addClass('ui-widget-content').addClass('ui-corner-all');
	$('table.LastItem').addClass('ui-state-highlight').addClass('ui-corner-all');
	$('.mapselection').addClass('ui-state-highlight').addClass('ui-corner-all');
	$('#reportPreview').addClass('ui-state-highlight').addClass('ui-corner-all');
	
	
	
	//hide search hint
	$('#IsSearchHintHidden').click(function(){
		$('.searchAssist').hide();
		$.cookie('IsSearchHintHidden', '1', { path: cookiepath});
	});	
	
	//Preference page title text for select options so that
	$('.readerPref option').each(function(){
		$(this).attr('title',$(this).text());
	});
	
	//Range searching input boxes on switching fields
	$('.fieldselect').each(function(){
		var fieldId = $(this).attr('id');
		var re = new RegExp('[.]?[0-9]+[.]?[0-9]*');
		var fieldIdNumber = fieldId.match(re);
		$(this).change(function(){
      fieldChange(fieldId,fieldIdNumber);
    });
	});
	
	// Remove &nbsp; from the review text
	$('.ReviewPrev').each(function(){
		var pText = $(this).html();
		var trimpText =  pText.replace(/&nbsp;/g,"");
		$(this).html(trimpText);
	});
	
	$('#subjectfrm select option').each(function(){
		var optionText = $(this).text();
		$(this).attr('title', optionText);
	});
	
	//reveal spoiler
  
  $('.revealSpoiler').click(function(event){
    event.preventDefault();
    $('.revealSpoiler').fadeOut();
    $('.spoiler').fadeIn();
  });

});

$(window).bind('load', function() {
	$('.cLocImgMedium').each(function(){
		//clear background image
		$(this).parent().parent().css('background','');
	});
	$('.cImgMedium').each(function(){
		var imgWidth = $(this).width();
		var thisId = $(this).attr('id');
		if(imgWidth > '1'){
			//clear background image
			$('#'+thisId).parent().parent().css('background','');
		} else {
			var recordType = thisId.slice(0,4);
			var recordId = thisId.slice(4,(thisId.length));
			if(recordType!='IHSN'&&recordType!='AIDN'){
				//look for google cover
				url = 'http://books.google.com/books?jscmd=viewapi&bibkeys='+ recordType +':'+recordId;
				var _GBSBookInfo;
				$.ajax({
					url: url,
					dataType: "script",
					success: function(data){
						if(_GBSBookInfo){
							for (key in _GBSBookInfo){
								if(_GBSBookInfo[key]['thumbnail_url']){
									var thumbnail_url = _GBSBookInfo[key]['thumbnail_url'];
								}
							}
							var ThumbType = key.slice(0,4);
							var ThumbId = key.slice(5,(key.length));
							if(thumbnail_url){
								//Key needs to be gather again to avoid duplication of images
								//change the zoom for larger size images
								var thumbnail_url = thumbnail_url.replace(/zoom=5/, "zoom=1");
								$('.'+ThumbType+ThumbId).attr('src',thumbnail_url);
								$('.'+ThumbType+ThumbId).width('64px');
								$('.'+ThumbType+ThumbId).parent().css('background','');
								thumbnail_url = null;
							} else {
								$('.'+ThumbType+ThumbId).css({'width':'64px','height':'64px'});
							}
						} else {
							$('.'+ThumbType+ThumbId).css({'width':'64px','height':'64px'});
						}
					}
				});
			} else {
				$('.'+thisId).css({'width':'64px','height':'64px'});
			}
		}
	});
});