flixnwc = {

  inputId: null,

  containerId: 'flixnwc_container',
  iframeId: 'flixnwc_iframe',

  createHeader: 'http://widgets.flixn.com/comment/10/img/cisco/create_header.gif',
  createWidth: 400,
  createHeight: 300,

  viewHeader: 'http://widgets.flixn.com/comment/10/img/cisco/view_header.gif',
  viewWidth: 500,
  viewHeight: 400,

  closeImage: 'http://widgets.flixn.com/comment/10/img/cisco/close.gif',

  hideObjects: true,
  hideSelects: true,

  showIframe: function(page, uri) {

    if (this.hideObjects) {
      this._setVisibilityStylesByTagName('object', 'hidden');
      this._setVisibilityStylesByTagName('embed', 'hidden');
    }

    if (this.hideSelects) {
      this._setVisibilityStylesByTagName('select', 'hidden');
    }

    this._buildIframe(page, uri);
    this._placeIframe(page);
    this._showIframe(page);

  },

  closeIframe: function(page) {
    this._hideIframe(page);

    if (this.hideObjects) {
      this._setVisibilityStylesByTagName('object', 'visible');
      this._setVisibilityStylesByTagName('embed', 'visible');
    }

    if (this.hideSelects) {
      this._setVisibilityStylesByTagName('select', 'visible');
    }
  },

  _buildIframe: function(page, uri) {
    var container = document.createElement('div');
    container.setAttribute('id', this.containerId + '_' + page);
    container.setAttribute('class', this.containerId);
    container.setAttribute('className', this.containerId);
    container.style.display = 'none';

    var header = document.createElement('div');
    header.setAttribute('id', this.containerId + '_header');
    container.appendChild(header);

    var header_img = document.createElement('img');
    header_img.setAttribute('id', this.containerId + '_header_img');
    if (page == 'create')
      header_img.src = this.createHeader;
    else
      header_img.src = this.viewHeader;
    header.appendChild(header_img);

    var close_link = document.createElement('a');
    close_link.href = "javascript:flixnwc.closeIframe('" + page + "');";
    var close_img = document.createElement('img');
    close_img.setAttribute('id', this.containerId + '_close');
    close_img.src = this.closeImage;
    close_link.appendChild(close_img);
    header.appendChild(close_link);

    var iframe = document.createElement('iframe');
    iframe.setAttribute('id', this.iframeId + '_' + page);
    iframe.setAttribute('class', this.iframeId);
    iframe.setAttribute('width', '100%');
/*    iframe.setAttribute('height', '100%'); */
    iframe.setAttribute('frameBorder', '0');
    iframe.setAttribute('scrolling', 'no');

// XXX
    iframe.src = 'http://widgets.flixn.com/comment/10/' + page + '.php?id=' + flixnwc.id + '&uri=' + uri;

    container.appendChild(iframe);
    document.body.appendChild(container);
  },

  _hideIframe: function(page) {
    document.body.removeChild(document.getElementById(this.containerId + '_' + page));
  },

  _placeIframe: function(page) {
    var windowSize = this._getWindowSize();
    this._scrollOffset = this._getScrollOffset();

    if (page == 'create') {
      x = this._scrollOffset[0] + (windowSize[0] - this.createWidth)/2;
      y = this._scrollOffset[1] + (windowSize[1] - this.createHeight)/2;
    } else {
      x = this._scrollOffset[0] + (windowSize[0] - this.viewWidth)/2;
      y = this._scrollOffset[1] + (windowSize[1] - this.viewHeight)/2;
    }

    var iframe = document.getElementById(this.containerId + '_' + page);
    iframe.style.left = x + 'px';
    iframe.style.top = y + 'px';
  },

  _showIframe: function(page) {
    var iframe = document.getElementById(this.containerId + '_' + page);
    iframe.style.display = 'block';
  },

  _setVisibilityStylesByTagName: function(tagname, style) {
    objs = document.getElementsByTagName(tagname);
    for (var i = 0; i < objs.length; i++) {
      objs[i].style.visibility = style;
    }
  },

  _getScrollOffset: function() {
    var x = window.pageXOffset || document.documentElement.scrollLeft ||
            document.body.scrollLeft || 0;

    var y = window.pageYOffset || document.documentElement.scrollTop ||
            document.body.scrollLeft || 0;

    return [x, y];
  },

  _getWindowSize: function() {
    var width, height;

    if (window.innerWidth) {
      width = window.innerWidth;
      height = window.innerHeight;
    }

    if (document.documentElement &&
        document.documentElement.clientWidth) {

      cw = document.documentElement.clientWidth;
      if (!width || cw && cw < width) {
        width = cw;
      }
      if (!height) {
        height = document.documentElement.clientHeight;
      }
    } else if (document.body) {
      width = document.body.clientWidth;
      height = document.body.clientHeight;
    }

    return [width, height];
  }
};

var f_location = document.location.protocol + '//';
if (document.location.hostname == 'cisco.com')
    f_location = f_location + 'www.cisco.com';
else
    f_location = f_location + document.location.hostname;
f_location = f_location + document.location.pathname;

var flixnwc_create = document.getElementById('flixnwc_create');
flixnwc_create.href = "javascript:flixnwc.showIframe('create', '" + f_location + "')";

var flixnwc_view = document.getElementById('flixnwc_view');
flixnwc_view.href = "javascript:flixnwc.showIframe('view', '" + f_location + "')";


