var demo_lang = '';
var demo_source_lang = 'en';
var newbie_mode = false;
var demo_started = false;

function startDemo(newb, which)
{
  newbie_mode = newb;
  if(!which)
    which = "demo";
  hideSlides();
  var other_lang = (demo_lang == 'ja') ? 'zh' : 'ja';
  $('div.demo_slide.'+other_lang).remove();

  $("option."+other_lang+"_dict").remove();
  empty_prompt = getPrompt().clone().removeClass('hidden');

  var other_diff = (newb) ? 'norm' : 'newb';
  $('div.demo_slide.'+other_diff).remove();
  demo_started = true;
  $(skritter).css("visibility", "visible");  // see end of flashfuncs:setup
  skritter.startDemo(demo_lang, demo_source_lang, newb, which);
  if(which == "tutorial") return;
  trackDemoAnalytics("Start");
  $('#signup_button').click(function() {
    trackDemoAnalytics("Top Signup Click"); });
  $('.second_signup_button').click(function() {
    trackDemoAnalytics("Embedded Signup Click"); });
}

function hideSlides()
{
  $('div.demo_slide').hide();
}

function hideExcessTranslations(except_lang)
{
  var all_langs = ['en', 'zh', 'zh-cn', 'zh-tw', 'ja', 'ko'];
  for(var i = 0; i < all_langs.length; ++i)
    if(all_langs[i] != except_lang &&
       !(all_langs[i] == 'zh' && except_lang.slice(0, 2) == "zh") &&
       !(except_lang == "zh" && all_langs[i].slice(0, 2) == "zh"))
      $('.demo_slide *[lang="'+all_langs[i]+'"]').remove();
}

function next()
{
  var slide = $('div.demo_slide:visible');
  hideSlides();
  showSlide(slide.next());
}

function demoEvent(event, rune, part)
{
  //debug.log("demoEvent("+event+"_"+rune+"_"+part+")");
  var cls = event+"_"+rune+"_"+part;
  var slide = $('.'+cls);
  if(slide.length) {
    slide = slide.slice(0, 1);  // pick first one
    hideSlides();
    $('span.current_word',slide).text(rune);
    // setTimeout('showSlide(slide);', 200);
    showSlide(slide);
    if(slide.hasClass('signup_cut'))
      trackDemoAnalytics("Signup Cut");
    else if(slide.hasClass('signup_end'))
      trackDemoAnalytics("Signup End");
  }
}

function showSlide(slide) {
  slide.fadeIn(1000);
  if(!demo_started || slide.hasClass("hidden_slide")) return;
  var total_slides = $('div.demo_slide:not(.hidden_slide)').length;
  var position = slide.prevAll(('div.demo_slide')).length + 1;

  var fraction = position / total_slides;
  fraction = Math.max(0.0, Math.min(1.0, fraction));
  var full_width = parseInt($('#demo_progress_bar').width());
  var width = Math.round(fraction * full_width);
  if (width > 10) {
    $('#demo_progress_fore_bar').css("width", width - 10);
    $('#demo_progress_fore_end').css({width: 10, right: -10});
  }
  else {
    $('#demo_progress_fore_bar').css("width", 0);
    $('#demo_progress_fore_end').css({width: width, right: 0-width});
  }
  $('#demo_progress_bar').attr("title",
      "You've done " + position + " of " + total_slides + " demo slides.");
}

function muteVolume()
{
  // sound isn't working, so don't prompt to click on nonexistent speaker
  volume_slider.setValue(0.0);
  setVolumeTooltip(0);
  setSpeaker('word', 'unavailable');
  setSpeaker('char', 'unavailable');
  debug.info("Sound is not functioning, turning volume off.");
  $('.speaker_point').remove();
}

function trackDemoAnalytics(event)
{
  if(username && username != "anonymous") return;  // don't track when logged in
  var demo_type = demo_lang == "ja" ? "Japanese" : "Chinese";
  demo_type += newbie_mode ? " newbie" : " normal";
  demo_type += " (in " + demo_source_lang +")";
  try {
    pageTracker._trackEvent("Demo", demo_type, event);
  }
  catch(e) {};  // probably just on devel server, where no GA lives
}

