var selectedElement = new Array();

var imagesServers = new Object();
imagesServers["fr"] = "http://images-eu.amazon.com/images/P/";
imagesServers["ca"] = "http://images.amazon.com/images/P/";
imagesServers["uk"] = "http://images-eu.amazon.com/images/P/";
imagesServers["us"] = "http://images.amazon.com/images/P/";

var booksServers = new Object();
booksServers["fr"] = "http://www.amazon.fr/exec/obidos/redirect?tag=progx-21&amp;path=ASIN/";
booksServers["ca"] = "http://www.amazon.ca/exec/obidos/ASIN/";
booksServers["uk"] = "http://www.amazon.co.uk/exec/obidos/ASIN/";
booksServers["us"] = "http://www.amazon.com/exec/obidos/ASIN/";

function selectItem(itemId, listId) {
  var element = document.getElementById(itemId);
  if (element && element != selectedElement[listId]) {
    element.style.background = "#EEEEEE";
  }
}

function unselectItem(itemId, listId) {
  var element = document.getElementById(itemId);
  if (element && element != selectedElement[listId]) {
    element.style.background = "white";
  }
}

function onclickItem(itemId, listId) {
  if (selectedElement[listId]) {
    selectedElement[listId].style.background = "white";
  }

  var element = document.getElementById(itemId);
  element.style.background = "#CCCCCC";

  selectedElement[listId] = element;

  switch (listId) {
    case 0:
      onclickItem("all_authors", 1);
      break;
    case 1:
      onclickItem("all_titles", 2);
      break;
  }
}

function getContent(node, name) {
  var childs = node.getElementsByTagName(name);
  if (childs.length > 0) {
    var child = childs.item(0);
    if (child.childNodes.length > 0) {
      return child.childNodes.item(0).nodeValue;
    } else {
      return "";
    }
  }
}

function sendRequest(listId) {
  var xmlRequest = null; 

  if(window.XMLHttpRequest) // Firefox 
    xmlRequest = new XMLHttpRequest(); 
  else if(window.ActiveXObject) // Internet Explorer 
    xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");  
 
  var url = "bookshelfEngine.php?";
  var genre = selectedElement[0].id;
  var author = listId == 0 ? "all_authors" : selectedElement[1].id;
  url += "genre=" + escape(genre) + "&author=" + escape(author);

  if (listId == 1) {
    url += "&noauthor=yes";
    document.getElementById("titles").innerHTML = '<div class="bookshelfItem" id="all_titles">Chargement...</div>';
  } else if (listId == 2) {
    url += "&asin=" + selectedElement[2].id;
  } else if (listId == 0) {
    document.getElementById("authors").innerHTML = '<div class="bookshelfItem" id="all_authors">Chargement...</div>';
    document.getElementById("titles").innerHTML = '<div class="bookshelfItem" id="all_titles">Chargement...</div>';
  }
  xmlRequest.open("GET", url , true); 

  xmlRequest.onreadystatechange = function() { 
    if (xmlRequest.readyState == 4) {  
      var doc = xmlRequest.responseXML;

      if (listId == 2) {
        var booksElement = document.getElementById("selectedBooks");
        var books = doc.documentElement.getElementsByTagName("book");
        booksElement.innerHTML = "<br /><br /><span style=\"color: #5A5A5A;\">Chargement...</span>";

        var code = "";
        for (var i = 0; i < books.length; i++) {
          var book = books.item(i);
          var asinValue = getContent(book, "asin");
          var authorValue = getContent(book, "author");
          var countryValue = getContent(book, "country");
          var pagesValue = getContent(book, "pages");
          var descriptionValue = getContent(book, "description");
          var publisherValue = getContent(book, "publisher");
          var publishedValue = getContent(book, "published");
          var ratingValue = getContent(book, "rating");
          var titleValue = getContent(book, "title");
          
          code += '<div class="book">';
          code += '<a href="' + booksServers[countryValue] + asinValue + '" target="_blank">';
          code += '<img class="cover" src="';
          code += imagesServers[countryValue] + asinValue + '.' + (countryValue == "uk" ? "02" : "08") + '.MZZZZZZZ.jpg" alt="' + titleValue + '" />';
          code += '</a>';
          code += '<b>' + titleValue + '</b>&nbsp;&nbsp;<img src="gfx/flags/' + countryValue + '.gif" alt="' + countryValue + '" style="vertical-align: middle;" /><br />';
          code += authorValue + '<br />';
  
          var limit = parseInt(ratingValue);
          for (var j = 0; j < limit; j++) {
            code += '<img style="margin: 0px;" src="gfx/bookshelf/star-on.png" alt="' + ratingValue + '/5" />';
          }
          for (var j = 0; j < 5 - limit; j++) {
            code += '<img style="margin: 0px;" src="gfx/bookshelf/star-off.png" alt="' + ratingValue + '/5" />';
          }
          code += '<br />';
          code += pagesValue + ' pages<br />';
          code += publisherValue + ', ' + publishedValue + '<br />';
          code += 'ISBN ' + asinValue + '<br /><br />';
          code += descriptionValue.replace(new RegExp("/ ", "g"), "<br />");
          code += "</div>";
        }
        booksElement.innerHTML = code;
      } else {
        var childs = doc.documentElement.getElementsByTagName("authors");
        var code = "";

        if (childs.length > 0) {
          var authorsNode = childs.item(0);
          childs = authorsNode.getElementsByTagName("author");
  
          code += '<div class="bookshelfItem" id="all_authors" onclick="onclickItem(this.id, 1); sendRequest(1);" onmouseout="unselectItem(this.id, 1)" onmouseover="selectItem(this.id, 1)">';
          code += "Tous (" + authorsNode.getAttribute("count") + ")";
          code += '</div>';
 
          for (var i = 0; i < childs.length; i++) {
            var value = childs.item(i).childNodes.item(0).nodeValue;
            code += '<div class="bookshelfItem" id="' + value.replace(new RegExp("&", "g"), "&amp;") + '" onclick="onclickItem(this.id, 1); sendRequest(1);" onmouseout="unselectItem(this.id, 1)" onmouseover="selectItem(this.id, 1)">';
            code += value.replace(new RegExp("/", "g"), ",");
            code += '</div>';
          }
          document.getElementById("authors").innerHTML = code;
          onclickItem("all_authors", 1);
        }

        childs = doc.documentElement.getElementsByTagName("titles");

        if (childs.length > 0) {
          var titlesNode = childs.item(0);
 
          code = "";
          code += '<div class="bookshelfItem" id="all_titles" onclick="onclickItem(this.id, 2); sendRequest(2);" onmouseout="unselectItem(this.id, 2)" onmouseover="selectItem(this.id, 2)">';
          code += "Tous (" + titlesNode.getAttribute("count") + ")";
          code += '</div>';
 
          childs = titlesNode.getElementsByTagName("title");
          for (var i = 0; i < childs.length; i++) {
            var titleNode = childs.item(i);
            var value = titleNode.childNodes.item(0).nodeValue;
            code += '<div class="bookshelfItem" id="' + titleNode.getAttribute("asin") + '" onclick="onclickItem(this.id, 2); sendRequest(2);" onmouseout="unselectItem(this.id, 2)" onmouseover="selectItem(this.id, 2)">';
            code += value;
            code += '</div>';
          }
          document.getElementById("titles").innerHTML = code;
        }

        onclickItem("all_titles", 2);
      }
    }
  } 
 
  xmlRequest.send(null); 
}
