var lastClicked = '';

function loadContent(link,level,elemId) {
  var baseHref = $('base_tag').getAttribute('href');
  new Ajax(baseHref+'submenu/'+link, {
    method: 'get',
    onSuccess: function(response,responseXML) {
      if(lastClicked == this['parent'].id) {
        var span = this['parent'].getElementsByTagName('span')[0];              
        $(span).removeClass('arrow_closed').addClass('arrow_open');
        
        var list = convertXMLToHTMLList(responseXML, this['level']);
              
        this['parent'].adopt(list);
              
        if(this['level'] > 2) {
          var parentSpan = this['parent'].getParent().getParent().getChildren()[0];
          parentSpan.removeClass('arrow_open').addClass('arrow_closed');
          //hideSiblings(this['parent']);
        } else if(list.getChildren().length > 0) {
          new Element('li')
            .adopt(new Element('span', {'class': 'arrow_closed'})
              .adopt(new Element('a', {'class': 'level2_link', 'title': 'Local Produce', 'href': 'local-produce/'}) 
                .setText('Local Produce')))
            .injectBefore(list.getChildren()[0]);
            
          new Element('li')
            .adopt(new Element('span', {'class': 'arrow_closed'})
              .adopt(new Element('a', {'class': 'level2_link', 'title': 'Special Offers', 'href': 'special-offers/'})
                .setText('Special Offers')))
            .injectBefore(list.getChildren()[0]);
        }
      }
      this['parent'].loading = false;
    }.bind({'parent':$(elemId),'level':level})
  }).request();
}
        
function convertXMLToHTMLList(XMLdocument, level) {
  var list = new Element('ul', {'class': 'level'+level});
  var listElementData = XMLdocument.getElementsByTagName('list-item');
  
  for(var i = 0; i < listElementData.length; i++) {            
    var name = listElementData[i].getAttribute('name');
    var link = listElementData[i].getAttribute('link');
    var code = listElementData[i].getAttribute('code');
            
    var li = new Element('li', {'id': 'p'+level+code});
    var span = new Element('span', {'class': 'arrow_closed'});
    var a = new Element('a', {'href': link, 'title': name, 'class': 'level'+level+'_link'});
    a.setText(name);

    if(level < 4) {
      a.onclick = openMenu.bind({'li':li,'link':link,'level':level,'code':code});
    } else {
      span.removeClass('arrow_closed');
    }
    
    list.adopt(li.adopt(span.adopt(a)));
  }

  return list;
}

function hideSiblings(li) {
  li.getParent().getChildren().each(function(sibling) {if(sibling!=li) sibling.remove()});
}

function openMenu(event) {
  if(!this['li'].loading) {
    this['li'].loading = true;
    var parentId = 'p'+this['level']+this['code'];
    lastClicked = $(parentId).id;
    hideSiblings($(parentId));
    var children = this['li'].getChildren(); 
    if(children.length >= 2) {
      for(var i = children.length - 1; i > 0; i--) {
        this['li'].getChildren()[i].remove();
      }
    }                    
    loadContent(this['link'],this['level']+1,parentId);
  }
  return false;
}

var baseLi = $('p1product_range'); 
baseLi.getElementsByTagName('a')[0].onclick = openMenu.bind({'li':baseLi,'link':'','level':1,'code':'product_range'});
lastClicked = 'p1product_range';
loadContent('',2,'p1product_range');
