/* advanced search interface */

attachEvt("common", "run", advInit);

function advInit() { 

	/* propogate these? */

	depthSelInit(); 
	setEnterFunc( $n( $('advanced.marc.tbody'), 'advanced.marc.value'), advMARCRun );


}

function showQuickSearches () {
        unHideMe($('adv_quick_search_sidebar'));

        setEnterFunc($('adv_quick_text'), advGenericSearch);

        unHideMe($('adv_marc_search_sidebar'));

}


function advAddMARC() {
	var newt = $('adv_sdbar_table').cloneNode(true);
	newt.id = "";
	unHideMe($n(newt, 'crow'));
	$n(newt, 'advanced.marc.tag').value = "";
	$n(newt, 'advanced.marc.subfield').value = "";
	$n(newt, 'advanced.marc.value').value = "";
	$('adv_marc_search_sidebar').insertBefore(newt, $('adv_marc_submit'));
}

function advMARCRun() {

	clearSearchParams();

	var div = $('adv_marc_search_sidebar');
	var tbodies = div.getElementsByTagName('tbody');
	var searches = [];

	for( var i = 0; i < tbodies.length; i++ ) {
		var tbody = tbodies[i];
		var val = advExtractMARC(tbody);
		if(val) searches.push(val);
	}

	if(searches.length == 0) return;

	var arg = {};
	arg.page = RRESULT;
	arg[PARAM_FORM] = 'all'
	arg[PARAM_RTYPE] = RTYPE_MARC;
	arg[PARAM_OFFSET] = 0;
	arg[PARAM_DEPTH]	= depthSelGetDepth();
	arg[PARAM_LOCATION]	= depthSelGetNewLoc();
	arg[PARAM_SEARCHES] = js2JSON(searches);
	arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
	arg[PARAM_TERM] = "";

	goTo(buildOPACLink(arg));
}


/* EXAMPLE => {"term":"0516011901","restrict":[{"tag":"020","subfield":"a"}]} */
function advExtractMARC(tbody) {
	if(!tbody) return null;
	var term = $n(tbody, 'advanced.marc.value').value;
	if(!term) return null;

	var subfield = $n(tbody, 'advanced.marc.subfield').value;
	if(!subfield) subfield = "_";

	var tag = $n(tbody, 'advanced.marc.tag').value;
	if(!tag) return null;

	return { 'term' : term.toLowerCase(), 'restrict' :  [ { 'tag' : tag, 'subfield' : subfield } ] };
}

function advGenericSearch(str) {
	clearSearchParams();
	var type = getSelectorVal($('adv_quick_type'));
	
	var term = $('adv_quick_text').value;

	dojo.cookie('focusWhere','quick');
	focusWhere = dojo.cookie('focusWhere');

        if (str == 'custom') {
            type = getSelectorVal($('custom_quick_type'));
            term = $('custom_quick_text').value;
        }

	if(!term) return;

	var arg = {};

	switch(type) {

		case 'isbn' :
			arg.page					= RRESULT;
			arg[PARAM_STYPE]		= "";
			arg[PARAM_TERM]		= "";
			arg[PARAM_RTYPE]		= RTYPE_ISBN;
			arg[PARAM_OFFSET]		= 0;
			arg[PARAM_ADVTERM]	= term.toLowerCase();
			break;
		
		case 'issn' :
			arg.page					= RRESULT;
			arg[PARAM_STYPE]		= "";
			arg[PARAM_TERM]		= "";
			arg[PARAM_ADVTERM]	= term.toLowerCase();
			arg[PARAM_OFFSET]		= 0;
			arg[PARAM_RTYPE]		= RTYPE_ISSN;
			break;

		case 'tcn' :
			arg.page					= RRESULT;
			arg[PARAM_STYPE]		= "";
			arg[PARAM_TERM]		= "";
			arg[PARAM_ADVTERM]	= term;
			arg[PARAM_OFFSET]		= 0;
			arg[PARAM_RTYPE]		= RTYPE_TCN;
			break;

        case 'barcode':
            advFindBarcode(term);
            break;


		case 'cn':
			arg.page			= CNBROWSE;
			arg[PARAM_CN]	= term;
			arg[PARAM_DEPTH]		= depthSelGetDepth();
			arg[PARAM_LOCATION]	= depthSelGetNewLoc();
			break;

		case 'lccn':
			arg.page = RRESULT;
			arg[PARAM_FORM] = 'all'
			arg[PARAM_RTYPE] = RTYPE_MARC;
			arg[PARAM_OFFSET] = 0;
			arg[PARAM_DEPTH]	= depthSelGetDepth();
			arg[PARAM_LOCATION]	= depthSelGetNewLoc();
			arg[PARAM_SEARCHES] = js2JSON([{ 'term' : term.toLowerCase(), 
					'restrict' :  [ { 'tag' : '010', 'subfield' : '_' } ] }]);
			arg[PARAM_ADVTYPE] = ADVTYPE_MARC;
			arg[PARAM_TERM] = "";
			break;


		default: alert('not done');
	}

	if(arg.page) goTo(buildOPACLink(arg));
}


function advFindBarcode(barcode) {
    var req = new Request(FETCH_BIB_ID_BY_BARCODE, barcode);
    req.callback(advDrawBarcode);
    req.request.alertEvent = false;
    req.send();
}

function advDrawBarcode(r) {
    titleid = r.getResultObject();
    if(checkILSEvent(titleid)) {
        alertId('myopac.copy.not.found');
        return;
    }
    if(!titleid) return;
    var args = {};
    args.page = RDETAIL;
    args[PARAM_RID] = titleid;
    location.href = buildOPACLink(args);
}



