$(document).ready(function(){

  // shouldn't be able to submit quiz url form or change value
  $('.quiz_url_form').submit(function(){ return false; });
  $('.quiz_url').keydown(function(){ return false; });
  $('.quiz_url').keypress(function(){ return false; });
  $('.quiz_url').keyup(function(){ return false; });

  // focusing on quiz url should select it
  $('.quiz_url').focus(function(){ this.select(); });
  $('.quiz_url').click(function(){ this.select(); });

  // add copy link if possible
  $.clipboardReady(function(){

    $('.copy_link').click(function(){
      $.clipboard($(this).parent().find('.quiz_url').val());
      return false;
    });
    $('.copy_link').removeClass('hidden');

  },{
    swfpath: 'static/flash/jquery.clipboard.swf'
  });

  // widget theme selector
  var sels = $('form.widget_preview select.theme');
  if (sels.length) {

    // make sure default is selected
    sels.each(function(){
      var match = $(this).attr('class').match('default_([^ ]+)');
      if (match) {
        $(this).val(match[1]);
      } else {
        $(this)[0].selectedIndex=0;
      }
    });

    // apply onchange js, show
    sels.change(function(){
      update_widget_theme($(this));
    });
    $('form.widget_preview').removeClass("hidden");

  }

});

var GIGYA_NETWORKS = {
  bp: "BlackPlanet",
  bl: "Blogger",
  fb: "Facebook",
  fw: "Freewebs",
  fr: "Friendster",
  hi: "Hi5",
  gg: "iGoogle",
  lj: "Livejournal",
  ls: "LiveSpaces",
  mu: "Multiply",
  ms: "MySpace",
  my: "MyYearbook",
  nv: "Netvibes",
  ok: "Orkut",
  pf: "Pageflakes",
  pz: "Piczo",
  tg: "Tagged",
  tp: "TypePad",
  wp: "WordPress",
  xa: "Xanga"
};

var gigyas = [];

function update_widget_theme(sel) {

  // change preview image
  sel.parents('div.post_quiz').find('img.widget_preview').attr(
    'src',
    'static/images/widget_preview/' + sel.val() + '.gif'
  );

  var match = sel.attr('class').match('gigya_([^ ]+)');

  if (match) {

    var placement_name = match[1];

    var qwidget_id = 'qwidget_' + placement_name;

    // update associated widget with new theme
    try {
      if (qwidgets && qwidgets[qwidget_id]) {
        qwidgets[qwidget_id]['theme'] = sel.val();
        draw_qwidget(qwidget_id, qwidgets[qwidget_id]);
      }
    } catch(e) {
    }

    // change gigya config, then apply
    fill_gigya_pconf(gigyas[placement_name], {theme: sel.val()});
    Wildfire['gigya_' + placement_name].applyConfig(
      gigyas[placement_name]['pconf']
    );

  }

}

var default_gigya_vars = {
  theme: 'quibblo'
};

function fill_gigya_pconf(gigya_info, template_vars) {

  if (gigya_info['template_pconf']) {

    if (template_vars == undefined) {
      template_vars = [];
    }

    // add default gigya vars
    for (var field in default_gigya_vars) {
      if (template_vars[field] == undefined) {
        template_vars[field] = default_gigya_vars[field];
      }
    }

    // fill basic embed code, and make available as template var
    template_vars['embed_code'] = fill_embed(embed_template, template_vars);

    // fill pconf vars that need templating
    for (var pconf_var in gigya_info['template_pconf']) {
      gigya_info['pconf'][pconf_var] = fill_embed(
        gigya_info['template_pconf'][pconf_var],
        template_vars
      );
    }

    // create per network content from defaultContent templat var
    for (var prop in GIGYA_NETWORKS) {

      template_vars['embed_network'] = prop;

      var pconf_id = GIGYA_NETWORKS[prop].toLowerCase() + "Content";
      var embed_tmpl = gigya_info['template_pconf'][pconf_id] ?
        gigya_info['template_pconf'][pconf_id] :
        gigya_info['template_pconf']['defaultContent'];

      gigya_info['pconf'][pconf_id] = fill_embed(embed_tmpl, template_vars);

    }  

  }

}

function fill_embed(template, template_vars) {

  return template.replace(/%%[^%]+%%/g, function(string){
    var field = string.match(/^%%([^%]+)%%$/)[1];
    return template_vars[field] == undefined ? '' : template_vars[field];
  });

}