AJAX_AMZWEB_PKG.BookRecommendationsRenderer = function(response, properties) {
  this._response = response;
  this._properties = properties;
};

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype._getAwsRequestUrl = function(params) {
  AwsRequestService.getAwsRequestUrl(params.isbn, params.operation, params.responseGroup, params.styleSheet, params.callback, twoLetterISOCode, awsDomain, {
    callback:function(response) {
      AJAX_AMZWEB_PKG.AmzWebServiceClient.fetch(response.awsRequestUrl);
    },
    errorHandler:function(errorString, exception) {
      AwsRequestService.handleError(errorString, exception);
    }
  });
};

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.display = function() {
  var params = {
    'operation':'ItemLookup',
    'responseGroup':'Images,ItemAttributes,Reviews',
    'isbn':this._response,
    'styleSheet':'http://www.abebooks.com/amz/json/ajsonRecommendations2.style',
    'callback':'renderRecommendations'};

  if(params.isbn) {
    this._getAwsRequestUrl(params);
  }
};

var renderRecommendations = function(response) {
  var recommendations = document.getElementById('amz-web-service-recommendations');
  var renderData = new AJAX_AMZWEB_PKG.BookRecommendationsRenderer(response);
  var mainItemContainer = renderData.createDivElement();

  if (recommendations) {
    recommendations.appendChild(mainItemContainer);

    var isRecommendationsBlockDisplayed = false;
    for(var i=0; i < response.Item.length; i++) {
      var asinCheck = response.Item[i].isbn13.charAt(0) * 1;
      if(!isNaN(asinCheck)){
        if(!isRecommendationsBlockDisplayed) {
          document.getElementById('amz-web-service-recommendations').style.display = "block";
          isRecommendationsBlockDisplayed = true;
        }
        var checkthisout = renderData.createAndAppendRecommendations(renderData,i);
        mainItemContainer.appendChild(checkthisout);
      }
    }
  }
}


AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createAndAppendRecommendations = function(renderData,i) {

    var recommendationContainer = renderData.createDivElement();
    recommendationContainer.className = "recommendationContainer";


    var imageLinkToPLP = renderData.createAnchorElement();
    imageLinkToPLP.href = "/products/isbn/" + this._response.Item[i].isbn13;

    var titleLinkToPLP = renderData.createAnchorElement();
    titleLinkToPLP.href = "/products/isbn/" + this._response.Item[i].isbn13;
    titleLinkToPLP.innerHTML = this._response.Item[i].title


    var authorSpan = renderData.createSpanElement();
    authorSpan.innerHTML = " <br /> " + this._response.Item[i].author;


    var recommendationBookImage = renderData.createImageElement();
    if (this._response.Item[i].thumbNailImgUrl) {
      recommendationBookImage.src = this._response.Item[i].thumbNailImgUrl;
    } else {
      recommendationBookImage.src = '/images/servlets/shared/image-not-available-med.gif';
    }

    var recommendationCopy = renderData.createParagraphElement();


    recommendationCopy.appendChild(titleLinkToPLP);
    recommendationCopy.appendChild(authorSpan);

    imageLinkToPLP.appendChild(recommendationBookImage);

    recommendationContainer.appendChild(imageLinkToPLP);
    recommendationContainer.appendChild(recommendationCopy);

    return recommendationContainer;
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createDivElement = function() {
    return document.createElement('DIV');
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createAnchorElement = function() {
    var tempLink = document.createElement('A');
    tempLink.target = "_top";
    return tempLink;
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createSpanElement = function() {
    return document.createElement('SPAN');
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createParagraphElement = function() {
    return document.createElement('P');
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createImageElement = function() {
    return document.createElement('IMG');
}
