// Version 3.4
// REQUIRES THAT facet_url be set before loading.
if ( typeof(facet_url)=='undefined' ) {
    alert("SLI Critical Javascript Error, facet_url is not defined.\nFacet functions will not work properly\nPlease check the top of your header template");
}
// For HREF status bar rewrites
function st(t) { 
    window.status=t.getAttribute('title'); 
    return true; 
}
function nost() {
    window.status=""; 
}

// sets the focus of the cursor to our search box
function sfocus() {
    if( typeof(document.searchform.w)!='undefined'){
        document.searchform.w.focus();
    }
}

// code to help process text link style facets
function getQueryVariable(variable) {
  var query = facet_url;
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
    if (pair[0] == variable) {
      return pair[1];
    }
  } 
  return '';
}



// code to process text link style facets
function processfacets2(extra_href, facet, value) { 
    var href=facet_url+extra_href;
    href=href.replace(/%20/g,' ');
    href=href.replace(/%3a/g,':');
	href=href.replace( /%5f/g, '_' );
    var newurl = '';
    
    var reg=new RegExp(facet+':');
    if (reg.test(href)) {
        // replace
		//alert ("found facet: " + facet );
        if(value == '') 
            newurl = href.replace(new RegExp(facet+":[^ ^\\+^&]*\\s?"), '');
        else 
            newurl = href.replace(new RegExp(facet+":\\w+"), facet+":"+value);
        
    } else {
		// check to see if facet substring up to *last* _ is present
		var last_underscore = facet.lastIndexOf( '_' );
		if ( last_underscore != -1 ) {
			var topic_start = facet.substr( 0, last_underscore + 1 );
			var regex2 = new RegExp( topic_start );
			if ( regex2.test( href ) ){
				newurl = href.replace(new RegExp(topic_start+"[:\\w]*"), (value != '') ? facet+":"+value : '' );
			} else
				newurl = href.replace(/af=/i,'af='+facet+":"+value+' ');
		
		} else { // prepend
			newurl = href.replace(/af=/i,'af='+facet+":"+value+' ');
		}
    }
    if(facet == 'cat1') // also need to remove child cat facets
        newurl = newurl.replace(/cat2_[:\w]+\s?/i,'');
	
	/* for advanced search */
	newurl = newurl.replace( /p=D/, "p=Q");
	var search_re = /w=([^&$]*)/;
	matches = search_re.exec( newurl );
	if ( matches.length == 2 ) {
		if ( matches[1] != document.searchform.w.value ) {
			newurl = newurl.replace( /w=[^&$]*/, 'w=' + escape(document.searchform.w.value) );
		} /* think about this again */
		//else {
		//	if ( total_result_count == 0)
		//		newurl = newurl.replace( /w=[^&$]*/, 'w=*');		
		//} 
	} else
		newurl += "&w=*";
	
	

    document.location = newurl;
}

function do_dropdown(extra_href, sel) {
    processfacets2( extra_href, sel.name, sel.value );
}


// code to process text link style facets
function processfacets3(extra_href, facet, value) { 
    var href=facet_url+extra_href;
    href=href.replace(/%20/g,' ');
    href=href.replace(/%3a/g,':');
	href=href.replace( /%5f/g, '_' );
    var newurl = '';
    
	if ( facet.substr(0, 5 ) == "cat2_" ) { // need to set/replace cat1
		var cat1_value = facet.substr( 5 );
		var r2 = new RegExp("cat1:" );
		if ( r2.test( newurl ) ){
			//alert( "replacing old cat1: with " + cat1_value );
			newurl = newurl.replace(new RegExp("cat1:\\w+"), "cat1:"+cat1_value);
		} else {
			//alert( "inserting cat1" );
			newurl = newurl.replace(/af=/i,'af=cat1:' + cat1_value + ' ');
		}
	}
	
    var reg=new RegExp(facet+':');
    if (reg.test(href)) {
        // replace
		//alert ("found facet: " + facet );
        if(value == '') 
            newurl = href.replace(new RegExp(facet+":[^ ^\\+^&]*\\s?"), '');
        else 
            newurl = href.replace(new RegExp(facet+":\\w+"), facet+":"+value);
        
    } else {
		// check to see if facet substring up to *last* _ is present
		var last_underscore = facet.lastIndexOf( '_' );
		if ( last_underscore != -1 ) {
			var topic_start = facet.substr( 0, last_underscore + 1 );
			var regex2 = new RegExp( topic_start );
			if ( regex2.test( href ) ){
				newurl = href.replace(new RegExp(topic_start+"[:\\w]*"), (value != '') ? facet+":"+value : '' );
			} else
				newurl = href.replace(/af=/i,'af='+facet+":"+value+' ');
		
		} else { // prepend
			newurl = href.replace(/af=/i,'af='+facet+":"+value+' ');
		}
    }
    if(facet == 'cat1') // also need to remove child cat facets
        newurl = newurl.replace(/cat2_[:\w]+\s?/i,'');
		
	/* for advanced search */
	newurl = newurl.replace( /p=D/, "p=Q");
	var search_re = /w=([^&$]*)/;
	matches = search_re.exec( newurl );
	if ( matches.length == 2 ) {
		if ( matches[1] != document.searchform.w.value ) {
			newurl = newurl.replace( /w=[^&$]*/, 'w=' + escape(document.searchform.w.value) );
		}// else {
		//	if ( total_result_count == 0)
		//		newurl = newurl.replace( /w=[^&$]*/, 'w=*');		
		//}
	} else
		newurl += "&w=*";
		
    document.location = newurl;
}

function do_dropdown2(extra_href, sel) {
	var colon = sel.value.lastIndexOf( ':' );
	if ( colon != -1 ){
		//alert( "facet: '" + sel.value.substr( 0, colon  ) + ", value: '" + sel.value.substr( colon + 1 ) + "'" );
		processfacets3( extra_href, sel.value.substr( 0, colon  ), sel.value.substr( colon + 1 ) );
	}
}
// Code needed for Dynamic Facet Breadcrumb Trial
// Remove all facets selected *after* a certain facet.
function removefacets2(extra_href, facet) { 
    var href=facet_url+extra_href;
    href=href.replace(/%20/g,' ');
    href=href.replace(/%3a/g,':'); 
    var newurl = href;
    var reg=new RegExp(/af=([^&]+)/i);
    var m = reg.exec(href);
    if (m!=null) {
        var r2 = new RegExp(facet+':[^&]+');
        var m2 = r2.exec(m[1]);
        if ( m2!=null ) {
            newurl = href.replace(reg,'af='+m2[0]);
        }
    }
    document.location = newurl;
}

// Remove all facets from a URL.
function resetfacets2(extra_href) {
    var href=facet_url+extra_href;
    document.location = href.replace(new RegExp(/af=[^&]+[&]*/),'');
}

