function userUploadOnOpen(e, q, F) {
  var target_id = e.target.id;
  var wrap_id = $('#'+target_id).attr('rel');
  var base_id = String(target_id).replace('-uploadify', '');
  var queue_id = base_id + '-queue';
  var settings = $('#'+target_id).data('settings');

  $("#"+base_id +"-preview").empty();
  $("#"+queue_id +" .userUploadQueueComplete").empty();
  $("#"+queue_id +" .userUploadQueueActive").show();

  if (is_safe(wrap_id)) {
    $("#"+wrap_id).removeClass('upload-complete').addClass('uploading');
    $("#"+wrap_id + " .user-upload-status-msg").html('Your file is currently uploading.');
  }

      if (typeof(settings.begin_callback) != 'undefined') {

        var callback = settings.begin_callback;
        if (typeof(callback) == 'function' && function_exists(callback)) {
          eval(callback+"(e,q,F,O)");
        }
        else if (typeof(callback) == 'string') {
          if (callback.indexOf('(') < 0) {
            eval(callback+"(e,q,F,O)");
          }
          else {
            eval(callback);
          }
        }
      }
}


function formatSize(num) {
  var num = parseFloat(num) / 1024.0;
  var dec = 2;
  return Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
}


function userUploadOnComplete(e, q, F, R) {
  var target_id = F.target_id || e.target.id;
  var size = formatSize(F.size);
  var fn = String(F.name);
  var wrap_id  = $('#'+target_id).attr('rel');
  var base_id  = String(target_id).replace('-uploadify', '');
  var queue_id = base_id + '-queue';

  var settings = $('#'+target_id).data('settings');

  if (settings.idea_multiple == 0) {
    $('#'+base_id+'-wrapper').hide();
  }


  if (is_safe(wrap_id)) {
    $("#"+wrap_id).removeClass('uploading').addClass('upload-complete');
    $("#"+wrap_id + " .user-upload-status-msg").html('Your upload is complete.');
  }

  O = $.evalJSON(R);
  $("#"+base_id).val(O.fid);


  if (typeof(O.new_hash) != 'undefined' && O.new_hash) {
    $('#'+target_id).uploadifySettings('script', '/uploadify.php?hash='+O.new_hash);
  }

  var item = '<div class="uploadifyQueueItem" id="">';
  item += '<div class="uploadifyProgress"><div class="uploadifyProgressBar" style="width: 100%;"></div></div>';
  item += '<span class="fileName">'+ fn +' (' + size + 'KB)</span>';
  item += '<span class="percentage"> - 100%</span>';
  item += '</div>';

  $("#"+queue_id +" .userUploadQueueActive").fadeOut(200, function() {
    $("#"+queue_id +" .userUploadQueueComplete").show();

    if (settings.showCompleted) {
      $(item).hide().appendTo("#"+queue_id +" .userUploadQueueComplete").fadeIn(200, function() {user_upload_eval_callbacks(settings,e,q,F,O)});
    }
    else {
      user_upload_eval_callbacks(settings,e,q,F,O)
    }
  });

  if (typeof(O.js) != 'undefined' && O.js != '') {
    eval(O.js);
  }
}

function user_upload_eval_callbacks(settings,e,q,F,O) {
  if (typeof(settings.complete_callback) != 'undefined') {
    var callback = settings.complete_callback;
    var e = e || window.event, q = q || {}, F = F || {}, O = O || {};
    if (typeof(callback) == 'function' && function_exists(callback)) {
      eval(callback+"(e,q,F,O)");
    }
    else if (typeof(callback) == 'string') {
      if (callback.indexOf('(') < 0) {
        eval(callback+"(e,q,F,O)");
      }
      else {
        eval(callback);
      }
    }
  }
}

function userUploadShowPreview(e, q, F, R) {
  var target_id = F.target_id || e.target.id;
  var settings = $("#"+target_id).data('settings');
  var base_id  = String(target_id).replace('-uploadify', '');
  var queue_id = base_id + '-queue';

  var queue = $("#"+queue_id +" .userUploadQueueComplete");
  $(".uploadifyQueueItem", queue).hide();

  var preview_width = (typeof(settings.preview_width) != 'undefined') ? parseInt(settings.preview_width) : 200;
  var preview_height = (typeof(settings.preview_height) != 'undefined') ? parseInt(settings.preview_height) : 0;

  var _img = $('<img src="/'+R.filepath+'" />');
  _img.load(function() {
    var i = $(this);
    if (preview_width > 0 && i.width() > preview_width) {
      i.width(preview_width);
    }
    if (preview_height > 0 && i.height() > preview_height) {
      i.height(preview_height);
    }
  });
  $('#'+base_id + '-preview').append(_img);
}

function userUploadFileReset(id) {
  $('#'+id).val('');
  $('#'+id+'-preview').fadeOut(100);
  return false;
}

function onCompleteEnableFormButtons() {
  $('.save-warning').fadeOut();
  $(".form-buttons .btn.disabled").removeClass('disabled').find('input').removeAttr('disabled');
}

function userUploadOnError(event,ID,fileObj,errorObj) {

}

function init_uploadify(id, uuid, uid, nid, desc, opts) {
  desc = desc || '';
  opts = opts || {};

  var upl = $("#"+id+'-uploadify');

  if (flashembed.isSupported([10,0])) {
    var settings = jQuery.extend({
      'uploader'       : '/sites/all/modules/idea/support/user_upload/uploadify/uploadify.swf',
      'script'         : '/uploadify.php',
      'cancelImg'      : '/sites/all/modules/idea/support/user_upload/uploadify/cancel.png',
      'scriptData'     : {'uuid': uuid, 'uid': uid, 'nid': nid, 'description': desc},
      'queueID'        : id+'-queue-active',
      'auto'           : true,
      'multi'          : false,
      'onOpen'         : userUploadOnOpen,
      'onComplete'     : userUploadOnComplete,
      'onError'        : userUploadOnError,
      'showCompleted'  : true
    }, opts);

    upl.uploadify(settings);
    upl.data('settings', settings);
  }
  else {
    var wrap = $("#"+id+'-wrapper');

    var msg = (typeof(opts.noflash) != 'undefined') ? opts.noflash : 'The video uploader requires the most recent version of the <a href="http://www.adobe.com/">Adobe Flash Player</a>.';
    wrap.html('<div style="border: solid 1px #c00; background:#fdd; padding: 15px; font-size: 1.25em; line-height:1.25em;">'+msg+'</div>');

    if (typeof(opts.noflash_js) != 'undefined') {
      try {
        eval(opts.noflash_js);
      }
      catch(err) {}
    }
  }
}


if (typeof(delayed_init) != 'undefined') {
  for (idx in delayed_init) {
    eval(delayed_init[idx]);
  }
}

