// Version 3.5
// 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,':'); 
    var newurl = '';
    
    var reg=new RegExp(facet+':');
    if (reg.test(href)) {
        // replace
        if(value == '') {
            newurl = href.replace(new RegExp(facet+":[^ ^\+^&]* ?"), '');
        } else {
            newurl = href.replace(new RegExp(facet+":[^ ^\+^&]*"), facet+":"+value);
        }
        // change cat1 and cat2 to whatever you have called you categories and sub categories
        if(facet == 'cat1') {
            // also need to remove subcategory
            newurl = newurl.replace(/cat2:[^ ^\+^&]* ?/i,'');
        }
        

    } else {
        // prepend
        if (getQueryVariable('af') == '') {
            newurl = href.replace(/af=/i,'af='+facet+":"+value);
        } else {
            newurl = href.replace(/af=/i,'af='+facet+":"+value+' ');
        }
    }
    document.location = newurl;
}

// 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=[^&]+[&]*/),'');
}
//Use to store original submit function
var ac_submit;

// Override the autocomplete init
function ac_init() {
	// Process normally
	sli_init();
	//__AutoComplete[id]['element'].form = null;
	
	// Save the old submit function in case we need it 
	ac_submit = AutoComplete_submitForm;
	
	// Override the submit function and handle the search by budget
	AutoComplete_submitForm = function(id) {
		// If the click event was on the search by budget text box, search by budget.
		if(id == "w2") {
			SubmitBudgetSearch();
		} else {
			// Otherwise process normal search
			ac_submit(id);
		}
		return false;
	}
}

function addEvent(obj, evType, fn){
	 if (obj.addEventListener){
	   obj.addEventListener(evType, fn, false);
	   return true;
	 } else if (obj.attachEvent){
	   var r = obj.attachEvent("on"+evType, fn);
	   return r;
	 } else {
	   return false;
	 }
	}

function dolog(position) {
	
	   var url = slir[position];

	   if (document.implementation && document.implementation.createDocument)
	        {
	   xmlDoc = document.implementation.createDocument("", "", null);
	    }
	    else if (window.ActiveXObject)
	    {
	   xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	    }
	    else { 
	      return true; }
	    try {
	       xmlDoc.load(url);
	    }
	    catch(e) { 
	        // alert(e);
	      }
	    finally{ 
	      return true; }
	    return true;
	}

function getsize() {
	   var elements = new Array();
	   for (var i=0;i<arguments.length;i++) {
	      var element = arguments[i];
	      if (typeof element == 'string') element = document.getElementById(element);
	      if (arguments.length == 1) return element;
	      elements.push(element);
	   }
	   return elements;
	}

	var BoxHeights = {
	   maxh: Array(),
	   boxes: Array(),
	   num: 0,
	   multi: 1,
	   op_test: false,
	   equalise: function() {
	      this.num = arguments[1];
	      this.total = arguments[2];
	      if (arguments[3]) { this.multi = arguments[3]; }
	      for (var i=1;i<=this.total;i++) {
	         this.boxes[i] = arguments[0]+(i);
	      }
	      this.maxheight();
	      var count = 1;
	     for (var j=1;j<=this.multi;j++) {
	         for (var i=count;i<=(count+(this.total/this.multi)-1);i++) {
	            if (i <= this.num) { getsize(this.boxes[i]).style.height = this.maxh[j]+"px"; }
	         }
	         count = i;
	     }
	   },
	   maxheight: function() {
	      var count = 1;
	      for (var j=1;j<=this.multi;j++) {
	         var heights = new Array();
	         for (var i=count;i<=(count+(this.total/this.multi)-1);i++) {
	            if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) {
	               if (i <= this.num) { heights.push(getsize(this.boxes[i]).scrollHeight); } else { heights.push(0); }
	            } else {
	               if (i <= this.num) { heights.push(getsize(this.boxes[i]).offsetHeight); } else { heights.push(0); }
	            }
	         }
	         heights.sort(this.sortNumeric);
	         this.maxh[j] = heights[(this.total/this.multi)-1];
	         totalcount = i;
	         count = totalcount;
	      }
	   },
	   sortNumeric: function(f,s) {
	      return f-s;
	   }
	}