if(typeof(XPRIMA) == "undefined") XPRIMA = {}

XPRIMA.Newsletters = function() {
  return {
    retrieveArchive : function(container, date, language) {
      var e = document.getElementById(container);
      if(e != null) {
        YAHOO.util.Dom.setStyle(e, "opacity", 0.3);
        YAHOO.util.Connect.asyncRequest("GET", "/" + language + "/news/newsletter/" + date + "/lettre_" + language + ".html", {
          success  : this.retrieveArchive_success,
          failure  : this.retrieveArchive_failure,
          argument : [e, this, language]
        }, null);
      }
    },
    
    retrieveArchive_success : function(o) {
      var e = (o.argument.length > 0) ? o.argument[0] : null;
      var scope = (o.argument.length > 1) ? o.argument[1] : null;
      var language = (o.argument.length > 2) ? o.argument[2] : null;
      
      if(e && scope) {
        var b = "";      
        var bb = o.responseText.indexOf("<body");
        while(bb < o.responseText.length && o.responseText.charAt(bb) != '>') bb++;
        if(o.responseText.charAt(bb) == '>') bb++;
        var be = o.responseText.indexOf("</body>");
        
        if(bb != -1 && be > bb) {
          var b = o.responseText.substring(bb, be);        
        }
        
        scope.setArchiveInContent(e, b, language);
      }
    },
    
    retrieveArchive_failure : function(o) {
      var e = (o.argument.length > 0) ? o.argument[0] : null;
      if(e) {
        YAHOO.util.Dom.setStyle(e, "opacity", 1);
      }    
    },
    
    setArchiveInContent : function(container, html, language) {
      var videoTable = null;
      var videoTableParent = null;
      var videoLink = null;
      var rid = null;
      var trs = null;
      
      YAHOO.util.Dom.setStyle(container, "display", "none");
      container.innerHTML = html;
      
      var tables = container.getElementsByTagName("table");
      if(tables && tables.length > 0) {
        trs = tables[0].getElementsByTagName("tr");
        if(trs && trs.length > 0) {
          trs[0].parentNode.removeChild(trs[0]);
        }
        if(trs && trs.length > 2) {
          var tds = trs[2].getElementsByTagName("td");
        }
        
        tables[tables.length - 1].parentNode.removeChild(tables[tables.length - 1]);
        
        for(var table = 0; table < tables.length; table++) {
          var imgs = tables[table].getElementsByTagName("img");
          if(!videoTable) {
            for(var im=0; im < imgs.length; im++) {
              if(imgs[im].src && imgs[im].src.indexOf("/videocontroller.gif") != -1) {
                // Bubble back to the parent table
                var _e = imgs[im];
                var _p = _e.parentNode;
                while(_p && _p.nodeName.toLowerCase() != 'table') _p = _p.parentNode;
                videoTable = _p;
                break;
              }
            }
          }
          if(videoTable) break;
        }
      }
      
      if(videoTable) {
        if(videoTable.parentNode) {
          videoTableParent = videoTable.parentNode;
          if(videoTableParent)
            videoTableParent.removeChild(videoTable);  // videoTable still available to use...
        }
        
        var links = videoTable.getElementsByTagName("a");
        if(links && links.length > 0) {
          videoLink = links[0].href;
          var _vl = /\/videos\/(\d+)\??/g.exec(videoLink);
          if(_vl && _vl.length > 1) {
            rid = _vl[1];
          }
        }
        
        for(var cn=0; cn < videoTableParent.childNodes.length; cn++) {
          if(videoTableParent.childNodes[cn].nodeType != 3) {
            if(videoTableParent.childNodes[cn].nodeName.toLowerCase() == 'br') {
              videoTableParent.removeChild(videoTableParent.childNodes[cn]);
            }
            break;
          }
        }
      }
      
      if(rid) {
        // Fetch the video... then show the container!
        XPRIMA.Newsletters.fetchRID(rid, container, trs, language);
      }
      else {
        YAHOO.util.Dom.setStyle(container, "display", "");
        YAHOO.util.Dom.setStyle(container, "opacity", 1);
      }
    },
    
    fetchRID : function(rid, container, tables, language) {
      YAHOO.util.Connect.asyncRequest("GET", "/site/support/getvideorid.spy?rid=" + rid.toString(), {
        success  : XPRIMA.Newsletters.fetchRID_success,
        failure  : XPRIMA.Newsletters.fetchRID_failure,
        argument : [container, this, rid, tables, language]
      }, null);
    },
    
    fetchRID_success : function(o) {
      var container = (o.argument.length > 0) ? o.argument[0] : null;
      var scope = (o.argument.length > 1) ? o.argument[1] : null;
      var rid = (o.argument.length > 2) ? o.argument[2] : null;
      var trs = (o.argument.length > 3) ? o.argument[3] : null;
      var language = (o.argument.length > 4) ? o.argument[4] : null;
      
      if(language == null) language = "fr";      
      
      eval("var resp = (" + o.responseText + ")");
      if(resp && resp.success && trs && trs.length > 1) {
        var video_link = resp.link;
        var t = '<embed type="application/x-shockwave-flash" src="/media/videos/player/' + language + '/master_500x375.swf?intro=/media/videos/player/' + language + '/intro_chronique_auto123.flv&main=' + video_link + '&outro=/media/videos/player/' + language + '/outro_chronique_auto123.flv&skins=/media/videos/player/' + language + '/skinauto123.swf&btmenu=/media/videos/player/' + language + '/SteelExternalAll.swf" id="mymovie" name="mymovie" bgcolor="#ffffff" quality="high" wmode="transparent" width="484" height="308">';
        var tr = document.createElement("tr");
        var td = document.createElement("td");
        
        td.style.padding = "10px 0";
        td.style.textAlign = "center";
        td.colSpan = 5;
        td.innerHTML = t;
        tr.appendChild(td);
        trs[0].parentNode.insertBefore(tr, trs[1]);
      }
      
      YAHOO.util.Dom.setStyle(container, "display", "");
      YAHOO.util.Dom.setStyle(container, "opacity", 1);
    },
    
    fetchRID_failure : function(o) {
      
    }
  }
}();

