/*
 * Copyright (c) 1998-2009 TeamDev Ltd. All Rights Reserved.
 * Use is subject to license terms.
 */
function q_FloatingIconMessageRenderer(clientId, forClientId, imageUrl, topOffset, leftOffset, css, hideImg, showSummary, showDetail, defaultPresentation) {
  this.clientId = clientId;
  var messageElement = document.getElementById(this.clientId);
  if (messageElement) {
    var parentNodeElement = messageElement.parentNode;
    parentNodeElement.removeChild(messageElement);
  }
  this.forId = forClientId;
  this.imageUrl = imageUrl;
  this.topOffset = topOffset;
  this.leftOffset = leftOffset;
  this.errorCss = css;
  this.showImg = !hideImg;
  this.showSummary = showSummary;
  this.showDetail = showDetail;
  this.defaultPresentation = defaultPresentation;
}

q_FloatingIconMessageRenderer.prototype.renderMessage = function(message) {
  if (this.defaultPresentation && q__isComponentHasPresentation(this.forId)) {
    return;
  }
  var forElement = q__getElement(this.forId);

  if (message) {
    var messageText = "";
    if (this.showSummary) messageText = message.summary;
    if (this.showDetail) messageText = message.detail;
    if (this.showDetail && this.showSummary)messageText = message.summary + "; " + message.detail;
    if (!this.showDetail && !this.showSummary) messageText = message.summary;

    if (this.showImg /*|| (!this.showImg && !this.errorCss)*/)
    {
      var messageElement = document.getElementById(this.clientId);
      if (!messageElement) {
        messageElement = document.createElement("img");
        messageElement.id = this.clientId;
        messageElement.src = this.imageUrl;
        messageElement.style.position = 'absolute';
        messageElement.style.zIndex = 700;
        document.body.appendChild(messageElement);
        q_getClientMessageRenderersWithVisibleBubble()[this.clientId + '_' + this.forId] = this;
      }
      this.position();
      messageElement.alt = messageText;
      messageElement.title = messageText;

    }
    if (!forElement.q_titleChanged) {
      forElement.q_title = forElement.title;
      forElement.q_titleChanged = true;
    }
    //    forElement.title = message.detail;
    forElement.title = messageText;

    if (this.errorCss && !forElement.q_cssChanged)
    {
      forElement.q_className = forElement.className;
      forElement.className = forElement.className + " " + this.errorCss;
      forElement.q_cssChanged = true;
      q__repaintAreaForOpera(forElement, true);
    }

  } else {
    var messageElement = document.getElementById(this.clientId);
    if (messageElement) {
      var parentNode = messageElement.parentNode;
      parentNode.removeChild(messageElement);
    }
    if (forElement.q_titleChanged) {
      forElement.title = forElement.q_title;
      forElement.q_title = undefined;
      forElement.q_titleChanged = undefined;
    }
    if (forElement.q_cssChanged) {
      forElement.className = forElement.q_className;
      forElement.q_className = undefined;
      forElement.q_cssChanged = undefined;
      q__repaintAreaForOpera(forElement, true);
    }
  }
}

q_FloatingIconMessageRenderer.prototype.update = function() {
  var forElement = q__getElement(this.forId);
  //changed logic of message rendering
  // now we need to check for component until we'll find it, required for Ajax Support
  //  if (forElement == null) {
  //    setTimeout(function() {
  //      this.update();
  //      alert("This update");
  //    }, 10);
  //    return;
  //  }
  var message;
  if (forElement) {
    message = q_getMessages(forElement)[0];
    this.renderMessage(message);
  }
}

q_FloatingIconMessageRenderer.prototype.position = function() {
  var messageElement = document.getElementById(this.clientId);
  if (messageElement) {
    var forElement = q__getElement(this.forId);

    if (!q__isVisibleRecursive(forElement)) {
      messageElement.style.display = "none";
      return;
    }
    messageElement.style.display = "";

    var elementPos = q__getElementPos(forElement);
    var left = elementPos.left + this.leftOffset;
    var top = elementPos.top + this.topOffset;

    messageElement.style.left = left + "px";
    messageElement.style.top = top + "px";
  }
}


//AUTO GENERATED CODE

window['q_loadedLibrary:/qk_internalResource/teamdev/jsf/renderkit/message/FloatingIconMessageRenderer-2.0.js'] = true;