var myGlobalHandlers = {
	onCreate: function(){
		Element.show('systemInProgress');
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('systemInProgress');
		}
	}
};

//Ajax.Responders.register(myGlobalHandlers);

var mySearchingHandlers = {
	onCreate: function(){
		Element.show('systemSearching');
	},

	onComplete: function() {
		if(Ajax.activeRequestCount == 0){
			Element.hide('systemSearching');
		}
	}
};
//Ajax.Responders.register(myBasicSearchHandlers);

function getURLHost(){
	return getVirtualHost() + getVirtualPath();
}

function getVirtualHost(){
	return 'http://'+ http_host;
}

function getVirtualPath(){
	return '/webopac/module/opac';
}

function getPrimaryKeySeparator(){
	return key_separator;
}

function reportError(request)
{
	alert('Sorry. There was an error.');
}

function showSearchList(){
	$('searchlist').show();
	$('searchresult').hide();
}

function showSearchResult(){
	$('searchlist').hide();
	$('searchresult').show();
}

function showSearching(){
	//Element.show('systemSearching');
	//Ajax.Responders.register(myGlobalHandlers);
	Ajax.Responders.register(mySearchingHandlers);
}

function getElementsByMatchName(tagName){
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elements = new Array();
	for (var e = 0; e < all.length; e++){
		/*if (all[e].tagName == tagName){
		elements[elements.length] = all[e];
		}*/
		myString = new String(all[e].name)
		myRE = new RegExp(tagName, "i");
		if (myString.match(myRE) == tagName){
			//alert(all[e].name);
			elements[elements.length] = all[e];
		}
	}
	return elements;
	/*alert(elements);
	for (var e = 0; e < elements.length; e++){
	alert(elements[e].value);
	}*/
}

/** common function */

function viewFullBib(item_catalog_no){
	var url = getURLHost()+'/fullbibdetail.php';
	var pars = 'txtCode1='+item_catalog_no+'&Mode='+$F('Mode')+'&txtGetVar='+$F('txtGetVar');

	var myAjax = new Ajax.Updater(
	{success: 'searchresult'},
	url,
	{
		method: 'post',
		parameters: pars,
		//onSuccess: $('content').show(),
		onCreate: showSearching,
		onComplete: showSearchResult,
		onFailure: reportError
	});
}


function cmdBasicSearch(obj){
	if (obj.name == 'frmbasicsearch'){
		if ($F('txtsearchtext') == ''){
			alert('Please fill in the search text!');
			obj.txtsearchtext.focus();
		}else{
			var a = {
				txtsearchoptr: $F('txtsearchoptr'),
				txtsearchtype: $F('txtsearchtype'),
				txtsearchtext: $F('txtsearchtext')
			};
			var pars = $H(a);

			switch ($F('txtsearchtype')){
				case "title":
				obj.action = getURLHost() + '/briefbib.php?' + pars.toQueryString();
				break;
				case "author":
				obj.action = getURLHost() + '/authorbib.php?' + pars.toQueryString();
				break;
				default:
				obj.action = getURLHost() + '/briefbib.php?' + pars.toQueryString();
			}
			obj.submit();
		}
	}
}

function cmdAdvanceSearch(obj){
	if (obj.name == 'frmadvancesearch'){
		if ($F('txtsearchtextadv') == ''){
			alert('Please fill in the search text!');
			obj.txtsearchtextadv.focus();
		}else{
			var a = {
				txtsearchoptr: $F('txtsearchoptradv'),
				txtsearchtype: $F('txtsearchtypeadv'),
				txtsearchtext: $F('txtsearchtextadv'),
				txtsearchoptr2: $F('txtsearchoptr2'),
				txtsearchtype2: $F('txtsearchtype2'),
				txtsearchtext2: $F('txtsearchtext2'),
				txtsearchoptr3: $F('txtsearchoptr3'),
				txtsearchtype3: $F('txtsearchtype3'),
				txtsearchtext3: $F('txtsearchtext3')
			};
			var pars = $H(a);

			switch ($F('txtsearchtypeadv')){
				case "title":
				obj.action = getURLHost() + '/briefbib.php?' + pars.toQueryString();
				break;
				default:
				obj.action = getURLHost() + '/briefbib.php?' + pars.toQueryString();
			}
			obj.submit();
		}
	}
}

function cmdBasicSearchBack(){
	showSearchList();
}

function cmdTermSearch(param){
	$('txtsearchoptr').value = 1;
	$('txtsearchkeys').value = param;
	document.frmtermsearch.txtsearchoptr.value = 1;
	document.frmtermsearch.txtsearchkeys.value = param;
	cmdTermSearchSubmit();
}

function cmdTermSearchCheckBox(param){
	searchkeys = appendTermSearch(document.frmtermsearch.txtsearchkeys.value, param);
	document.frmtermsearch.txtsearchkeys.value = searchkeys;
	document.frmtermsearch.txtsearchoptr.value = 3;
	$('txtsearchkeys').value = searchkeys;
	$('txtsearchoptr').value = 3;
}

function cmdTermSearchSubmit(){
	$('txtsearchtext').value = $('txtsearchkeys').value;
	document.frmtermsearch.txtsearchtext.value = document.frmtermsearch.txtsearchkeys.value;
	var a = {
		txtsearchoptr: $F('txtsearchoptr'),
		txtsearchtype: $F('txtsearchtype'),
		txtsearchtext: $F('txtsearchtext')
	};
	var pars = $H(a);
	//alert(pars.toQueryString());
	$('frmtermsearch').action = getURLHost() + '/briefbib.php?' + pars.toQueryString();
	$('frmtermsearch').method = 'post';
	$('frmtermsearch').submit();
}

function appendTermSearch(param, append){
	myAction = 'append';
	myDelimeter = new String(getPrimaryKeySeparator());
	myString = new String(param);
	myResult = myString.split(myDelimeter);
	if (myResult.length > 1){
		for(var i =0; i < myResult.length; i++)
		{
			if (myResult[i] != ""){
				if (myResult[i] == append){
					myAction = 'remove';
				}
			}
		}
		if (myAction == 'remove'){
			myReturn = myString.replace(append + myDelimeter,'');
		}else{
			myReturn = myString + append + myDelimeter;
		}
	}else{
		myReturn = append + myDelimeter;
	}
	return myReturn;
}

