  // advanced javascript
  function testJs() {
    if( jsWorking() ){
      if (jQuery('.test.javascript').removeClass('failed')) showSuccessMessage();
    }
  }
  
  function jsWorking(){
    result = ( (typeof(window.XMLHttpRequest) == "object") || (typeof(window.XMLHttpRequest) == "function") || (typeof(window.ActiveXObject) == "function") )
    return result;
  }

  // flash
  function testFlash() {
    jQuery('.test.flash').flash(
      { src: '/swfs/flash_installed.swf', width: 260, height: 80 },
      { expressInstall: true },
      function (htmlOptions) {
        jQuery(this).removeClass('failed');
        showSuccessMessage();
      },
      function (htmlOptions) {
        return false;
      }
    );
  }

  // shockwave
  function testShockwave() {
    jQuery('.test.shockwave').shockwave(
      { src: '/assets/players/lesson viewer.dcr', width: 260, height: 80 },
      { expressInstall: true },
      function (htmlOptions) {
        jQuery(this).removeClass('failed');
        showSuccessMessage();
      },
      function (htmlOptions) {
        return false;
      }
    );  
  }
  
  function testAll(options){
    options = typeof(options) == 'undefined' ? {} : options;
    testJs();
    testFlash();
    testShockwave();
    if(jQuery(".test.failed").size() < 1 && jQuery("span.problem").size() < 1){
      if(options.update_on_success == "pupil"){
        $.post("/pupils/account", {"id":options.id, "_method":"put", "pupil[passed_browser_tests]":1});
      } else if(options.update_on_success == "user"){
      
      }
    } else {
      jQuery("#browser_test").show();
    }
  }
  
  function showSuccessMessage(){
    if(jQuery(".test.failed").size() < 1) {
      jQuery("#fail-message").hide();
      jQuery("#smile-demo").show();
    } else {
      jQuery("#fail-message").show();    
    }
  }


