function rotateText(el, textGroup) {
  setOpacity(el, 0);
  var t = rotateText.texts[textGroup];
  var t = t[Math.floor(Math.random() * (t.length - 1))];
  el.innerHTML = t;
  unfadeText(el, textGroup);
}
rotateText.texts = {
  quotes: [
    "<p>\"The BSIMM measuring stick is now grounded in twice as much real world data with the release of BSIMM3.  By carefully observing and reporting on 42 real software security initiatives, Gary, Sammy, and Brian have built the de facto measuring stick for software security.\"</p><p align=\"right\">- Avi Rubin, Ph.D., Professor of Computer Science, Johns Hopkins University</p>",
    "<p>\"BSIMM has been instrumental in documenting software security practices that are in use by a large number of diverse organizations. BSIMM3 further demonstrates that security has become part of the software culture in large mature organizations. Used in conjunction with other industry guidance, BSIMM3 can also help guide less mature developer organizations towards building security into their software development practices.\"</p><p align=\"right\">- Eric Baize, Senior Director, EMC Product Security Office</p>",
    "<p>\"BSIMM3 remains an important effort. While everyone wrings their hands about how vulnerable their computers are, improving software security is the only real way to harden systems.\"</p><p align=\"right\">- Marcus Ranum, CSO, Tenable Security</p>",
    "<p>\"A maturity model for secure software development by building security in is long overdue. All enterprises should closely evaluate the BSIMM activities for integration into their software development lifecycle and their broader software security initiative.\"</p><p align=\"right\">- Richard Stiennon, IT-Harvest</p>",
    "<p>\"Data from various sources show that software security remains challenging, even for very mature organizations. But good decisions during software security program planning and evolution can greatly decrease risk and cost. Bad decisions, on the other hand, in the worst case create a false sense of security. This makes it extremely important for organizations to build on others' experiences by leveraging process methodologies, program benchmarks, expert research, and advice.\"</p><p align=\"right\">- Ramon Krikken, Gartner</p>",
    "<p>\"The BSIMM measurement tool and findings are extremely valuable.  I use the data with my consulting clients for measurement and in my own research.  I recommend that companies building security in to their SDLC should get involved with the BSIMM project immediately.\"</p><p align=\"right\">- Diana Kelly, SecurityCurve</p>",
    "<p>\"The BSIMM provides unique and objective insight into what software security practices are in use today across a diverse set of large corporations, as well as a helpful taxonomy for describing these practices. In this way, the BSIMM provides a great foundation for future industry work to advance software assurance and SAFECode looks forward to taking a closer look at the new data.\"</p><p align=\"right\">- Stacy Simpson, SAFECode</p>",
    "<p>\"By far the biggest bang for buck in increasing security comes from building and buying software with fewer vulnerabilities. Tools, benchmarks and models that can both focus scarce resources on the most effective areas and provide meaningful business-relevant data to gain management support are critical needs for accelerating progress in this area.\"</p><p align=\"right\">- John Pescatore, Gartner</p>",
    "<p>\"When the BSIMM project started I was excited but apprehensive - the challenge to produce such a maturity model was enormous. With BSIMM3 we not only see the fruits of a huge amount of detailed work but the team behind it have proven that they can bring together lots of disparate firms with different ideas together under the BSIMM banner.The scientific foundation of BSIMM is its strength---the rigour behind the work is a joy to behold.\"</p><p align=\"right\">- Nigel Stanley, Bloor Research</p>",
    "<p>\"The BSIMM is a great vehicle for helping software developers assess, develop and grow their software security practices by defining benchmarks across geographies and industries. As one of the original nine BSIMM participants, Adobe is excited to continue guiding the growth of the BSIMM as a member of the advisory board.\"</p><p align=\"right\">- Brad Arkin, Director of Product Security and Privacy, Adobe</p>",
    "<p>\"The BSIMM provided us with a useful metric to assess our product security assurance initiative. It helped to validate our current approach and provided some valuable suggestions for further improvement.\"</p><p align=\"right\">- Jeffrey Cohen, Head of Product Security Assurance, Intel</p>",
    "<p>\"BSIMM provides valuable information the software development industry can use, and we look forward to helping define future research results. It's encouraging to see that other organizations also benefit from practices that are elements of our Security Development Lifecycle and we expect to see additional specific benefits from the next phase of BSIMM research.\"</p><p align=\"right\">- Steve Lipner, Senior Director, Security Engineering Strategy, Trustworthy Computing Group, Microsoft</p>",
    "<p>\"The path of improved software security has historically been a rocky one. To make it worse, the path has rarely been properly marked. The BSIMM fills this critical gap by providing a smoother, followable track to software security improvements. This practical maturity model allows organizations to benchmark their efforts against those of enterprises who have succesful software security programs. By identifying what activities they could implement or strengthen, based on a comparison with industry best practices, organizations will be able to plan and implement activities which lead to more secure software.\"</p><p align=\"right\">- Charles Kolodgy, IDC</p>",
    "<p>\"The BSIMM effort is a fabulous step forward for Software Security as a whole, since it represents what these huge enterprises are actually doing in practice. It helps us all move the discipline significantly closer to being a sound engineering practice. Kudos!\"</p><p align=\"right\">- Kenneth R. van Wyk, KRvW Associates, LLC</p>",
    "<p>\"Comprehensive software security involves a combination of people, processes, and technologies, and it almost always requires some change to the way the organization operates. As software security comes of age, using a maturity model will only help to accelerate your enterprise security initiative.\"</p><p align=\"right\">- Joe Feiman, Gartner</p>",
    "<p>\"The BSIMM measuring stick is now grounded in twice as much real world data with the release of BSIMM3.  By carefully observing and reporting on 42 real software security initiatives, Gary, Sammy, and Brian have built the de facto measuring stick for software security.\"</p><p align=\"right\">- Avi Rubin, Ph.D., Professor of Computer Science, Johns Hopkins University</p>"
  ]
};

function setOpacity(el, value) {
  el.style.opacity = value / 100;
  el.style.filter = "alpha(opacity=" + value + ")";
}

function unfadeText(el, tg) {
  var v = el.style.opacity * 100 + 1;
  if(v > 100) {
    setOpacity(el, 100);
    setTimeout(bundleFunction(null, fadeText, [el, tg]), 16000);
    return;
  }
  setOpacity(el, v);
  setTimeout(bundleFunction(null, unfadeText, [el, tg]), 10);
}

function fadeText(el, tg) {
  var v = el.style.opacity * 100 - 1;
  if(v < 0) {
    setOpacity(el, 0);
    rotateText(el, tg);
    //or... setTimeout(bundleFunction(null, rotateText, [el, tg]), NUMBER);
    return;
  }
  setOpacity(el, v);
  setTimeout(bundleFunction(null, fadeText, [el, tg]), 10);
}

function bundleFunction(context, func, args) {
  context = context || null;
  if(typeof func == "string" && context)
    func = context[func];
  if(!args)
    args = [];
  else if(!(args instanceof Array))
    args = [args];
  return function() {
    return func.apply(context, args);
  };
}
