AJAX_AMZWEB_PKG.BookRecommendationsRenderer = function(response, properties) {
  this._response = response;
  this._properties = properties;
};

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype._getAwsRequestUrl = function(params) {
  AwsRequestUrlService.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) {
      AwsRequestUrlService.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/ajsonRecommendations.style',
    'callback':'renderRecommendations'};

  if(params.isbn) {
    this._getAwsRequestUrl(params);
  }
};

var renderRecommendations = function(response) {

   var renderData = new AJAX_AMZWEB_PKG.BookRecommendationsRenderer(response);

   var mainItemContainer = renderData.createDivElement();

   document.getElementById('amz-web-service-recommendations').appendChild(mainItemContainer);

   var isRecommendationsBlockDisplayed = false;
   for(var i=0; i < response.Item.length; i++) {
    var asinCheck = response.Item[i].asin.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].asin;

    var titleLinkToPLP = renderData.createAnchorElement();
    titleLinkToPLP.href = "/products/isbn/" + this._response.Item[i].asin;
    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);

    var imageSource = AJAX_AMZWEB_PKG.AverageRatingRendererHelper.getStarRatingHTML(this._response.Item[i].averageRating);
    if (imageSource) {
      var recommendationReviewImage = renderData.createImageElement();
      recommendationReviewImage.src = imageSource;
      recommendationContainer.appendChild(recommendationReviewImage);
    }

    return recommendationContainer;
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createDivElement = function() {
    return document.createElement('DIV');
}

AJAX_AMZWEB_PKG.BookRecommendationsRenderer.prototype.createAnchorElement = function() {
    return document.createElement('A');
}

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');
}