LIST_LENGTH = 3;

var refineRules = {
  'li.change-view a' : function(element) {
    element.onclick = function() {

      if(this.parentNode.id == "view-catalogue"){
        showView(this.parentNode, document.getElementById("catalogue"));
        hideView(document.getElementById("view-refine"), document.getElementById("refine-search"));
      }
      else{
        showView(this.parentNode, document.getElementById("refine-search"));
        hideView(document.getElementById("view-catalogue"), document.getElementById("catalogue"));
      }
      Behaviour.apply();
      return false;
    }
  },

  'a.expand-list' : function(element) {
    element.onclick = function() {
	    expandList(this.parentNode.parentNode);
      Behaviour.apply();
      return false;
    }
  },

  'a.collapse-list' : function(element) {
    element.onclick = function() {
	    collapseList(this.parentNode.parentNode);
  	  Behaviour.apply();
      return false;
    }
  }
};

Behaviour.register(refineRules);

function showView(tab, view){
  tab.className = "refine-tab";
  view.style.display = "block";
}

function hideView(tab, view){
  tab.className = "change-view";
  view.style.display = "none";
}

function collapseList(el){
	var list = el.getElementsByTagName("li");

	for(var i=LIST_LENGTH; i<list.length-1; i++){
		list[i].className = "noshow";
	}

	if(list.length > LIST_LENGTH){	
  	removeElement(list[list.length-1]);
	  el.appendChild(createMenuElement("Show All Options", "expand-list", "#", "", "Show All Options"));
	}
}

function expandList(el){
	var list = el.getElementsByTagName("li");

	for(var i=LIST_LENGTH; i<list.length-1; i++){
		list[i].className = "";
	}
	
	if(list.length > LIST_LENGTH){
	  removeElement(list[list.length-1]);
	  el.appendChild(createMenuElement("Hide Options", "collapse-list", "#", "", "Hide These Options"));
  }
}

function collapseLists(){
	var lists = document.getElementById("refine-search").getElementsByTagName("ul");

  for(var i=0;i<lists.length;i++){
		if(lists[i].className=="refinements")
		{
			if(lists[i].getElementsByTagName("li").length > LIST_LENGTH)
			  lists[i].appendChild(createMenuElement("Hide Options", "collapse-list", "#", "", "Hide These Options"));
		  collapseList(lists[i]);
		}
	}
  Behaviour.apply();
}

function createMenuElement(text, clName, link, id, title){
  var li = document.createElement("li");
  var a = document.createElement("a"); 

  if(clName!='')
    a.className = clName;
  if(text!='')
    a.appendChild(document.createTextNode(text));
  if(link!='')
    a.href = link;
  if(id!='')
    a.id = id;
  if(title!='')
    a.title = '';

  li.appendChild(a)
  return li;
}

function removeElement(el)
{
  while(el.firstChild){
    if(el.firstChild.firstChild)
	    removeElement(el.firstChild);
	  if(el.firstChild)
	    el.removeChild(el.firstChild);
  }
  el.parentNode.removeChild(el);
}