var lastVideoFrameId = null;
var lastPhotoFrameId = null;
var block_submit_button = 0;
var active_creator_id = null;
var tinymce_inited = false;
var availableCustomItemClasses = []

var creator_images = ['/images/silver_button_left.gif', '/images/silver_button_bg.gif', '/images/silver_button_right.gif',
                      '/images/transparent.png', '/images/redbox_spinner.gif'];

/**
 * Ajax.Request.abort
 * extend the prototype.js Ajax.Request object so that it supports an abort method
 */
Ajax.Request.prototype.abort = function() {
  // prevent and state change callbacks from being issued
  this.transport.onreadystatechange = Prototype.emptyFunction;
  // abort the XHR
  this.transport.abort();
  // update the request counter
  Ajax.activeRequestCount--;
};

function fetchField(fname, app) {
  $creator(app + '_' + fname).value = $creator('item_' + fname).value;
}

function fetchFields(fnames, app) {
  fnames.each(function(fname) {
    fetchField(fname, app);
  });
}

function pushField(fname, app) {
  var f = $creator(app + '_' + fname);

  if (f.hasClassName('text_input_hint')) {
    $creator('item_' + fname).value = '';
  } else {
    $creator('item_' + fname).value = f.value;
  }
}

function pushFields(fnames, app) {
  fnames.each(function(fname) {
    pushField(fname, app);
  });
}

function checkField(fname, app) {
  var field = $creator(app + '_' + fname);
  var value = field.hasClassName('text_input_hint') ? '' : field.value;
  var required = field.getAttribute('required');
  var re = field.getAttribute('re');
  var errorMessage = field.getAttribute('error_message');

  if ((!required || value) &&
      (!re || !value || value.match(re))) {
    return true;
  }  else {
    alert(errorMessage);
    return false;
  }
}

function checkFields(fnames, app) {
  for (i = 0; i < fnames.length; i++) {
    if (!checkField(fnames[i], app)) {
      return false;
    }
  }

  return true;
}

function clearField(fname, app) {
  $creator(app + '_' + fname).value = '';
  $creator('item_' + fname).value = '';
}

function clearFields(fnames, app) {
  fnames.each(function(fname) {
    clearField(fname, app);
  });
}

function startDateTime() {
  var date_field_name = '';
  var time_field_name = '';

  if ($creator('item_item_class').value == 'product') {
    date_field_name = 'product_date';
    time_field_name = 'product_start_time';
  } else {
    date_field_name = 'event_date';
    time_field_name = 'event_start_time';
  }

  var date_res = $creator(date_field_name).value.match(/^(\d{2}).(\d{2}).(\d{4})$/);
  var time_res = $creator(time_field_name).value.match(/^([0-1][0-9]|2[0-3]):([0-5][0-9])$/);

  return date_res && time_res && (new Date(date_res[3], date_res[2], date_res[1], time_res[1], time_res[2], 0));
}

function endDateTime() {
  var date_field_name = '';
  var time_field_name = '';

  if ($creator('item_item_class').value == 'product') {
    date_field_name = 'product_end_date';
    time_field_name = 'product_end_time';
  } else {
    date_field_name = 'event_date';
    time_field_name = 'event_end_time';
  }

  var date_res = $creator(date_field_name).value.match(/^(\d{2}).(\d{2}).(\d{4})$/);
  var time_res = $creator(time_field_name).value.match(/^([0-1][0-9]|2[0-3]):([0-5][0-9])$/);

  return date_res && time_res && (new Date(date_res[3], date_res[2], date_res[1], time_res[1], time_res[2], 0));
}

function registerCustomItemClass(name) {
  availableCustomItemClasses.push(name);
}

function prepareFrame() {
  var frame = document.createElement('iframe');
  frame.scrolling = "no";
  frame.frameBorder = "no";
  frame.marginHeight = 0;
  frame.marginWidth = 0;
  frame.vSpace = 0;
  frame.style.backgroundColor = '#ECECEC';

  return frame;
}

function isAttach(n) {
  if (n && n.nodeName == 'IMG' && /attach /.exec(n.className)) {
    return n;
  } else {
    return false;
  }
}

function getFilesList() {
  var res = [];

  new Ajax.Request(creatorUploader.filesListUrl.unescapeHTML(),
                   {asynchronous: false,
                    onSuccess: function(transport) {
                      res = transport.responseJSON;
                    }});
  return res;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function rotateImage(id, direction) {
  $('files_' + id).replace('<div class="photo_div" id="files_' + id + '">' +
                '<div class="photo_uploading_title">Загрузка... </div>' +
                '<div class="photo_preview photo_uploading">' +
                '</div>' +
                '</div>');
  new Ajax.Request(creatorUploader.rotateUrl[direction] + '&id=' + id, {asynchronous:true, evalScripts:true});
}

function creatorId(id) {
  if (id) {
    if (/^creator(_\d+)?$/.exec(id)) {
      return id;
    } else {
      return 'creator_' + id;
    }
  } else {
    return 'creator';
  }
  return (id ? 'creator_' + id : 'creator');
}

function $creator(eid, cid) {
  cid = cid || active_creator_id;
  var res = $$('#' + creatorId(cid) + ' #' + eid);
  if (res) {
    return res[0];
  } else {
    return null;
  }
}

function loadCreator(url) {
  RedBox.loading();

  var creatorRequest = new Ajax.Request(url, {
    asynchronous: true, evalScripts: true,
    onComplete: function(transport) {
      if (200 != transport.status)
        RedBox.close();

      document.onkeyup = function() {};
    }
  });

  document.onkeyup = function(e) {
    var kC  = (window.event) ? event.keyCode : e.keyCode;
    var Esc = (window.event) ? 27 : e.DOM_VK_ESCAPE;

    if(kC==Esc) {
      creatorRequest.abort();
      document.onkeyup = function() {};
      RedBox.close();
    }
  }
  return false;
}

function showCreator(id, options) {
  if (!options) {
    options = {};
  }

  RedBox.showInline(creatorId(id), {'no_effects': true, 'redbox_id': 'RB_creator', 'hidden': true});
  $('RB_creator_overlay').onclick = function() {
    $(creatorId(id)).scrollTo();
    new Effect.Highlight($(creatorId(id)), { startcolor: '#f2bc04',endcolor: '#000000', restorecolor: 'transparent',
                        forceBackgroundImage: 'url(/images/transparent.png)' });
  };

  active_creator_id = creatorId(id);

  if ($creator('item_item_class', active_creator_id).value == 'place' ||
      $creator('item_item_class', active_creator_id).value != options['show']) {
    switchItemClass('post', active_creator_id);
  }

  var cn = $creator('item_item_class').value;
  if (!options['show']) {
    options['show'] = 'post';
  }

  availableCustomItemClasses.each(function(availableItemClassName) {
    if (availableItemClassName == options['show']) {
      cn = options['show'];
    }
  });
  $creator('item_item_class').value = cn;

  if ($creator('creator_photo_iframes', id) && $creator('creator_photo_iframes', id).innerHTML.strip()) {
    afterShowAlbum(id);
  }

  textInputHintsEnable($(creatorId(id)));

  tinyMCE.execCommand('mceAddControl',false, 'item_body_' + creatorId(id));

  block_submit_button = 0;
  return true;
}

function isTabActive(cid, item_class) {
  var tab = itemTab(cid, item_class);
  return tab && ('none' != tab.style.display); // TODO
}

function hasTab(cid, item_class) {
  return itemTab(cid, item_class) !== null;
}

function itemTab(cid, item_class) {
  return $creator('creator_' + item_class, cid);
}

function submitCreatorForm(cid) {
  var frm = $creator('creator_form', cid);

  if (block_submit_button > 0) {
    alert("Подождите, идет загрузка файлов");
    return false;
  }

  if (checkCreatorForm(cid)) {
    if (hasTab(cid, 'album') && !isTabActive(cid, 'album')) {
      deleteAllPhotos(cid);
    }

    if ($creator('item_tag_list_ext', cid)) {
      $creator('item_tag_list', cid).value = $creator('item_tag_list_ext', cid).value;
    }

    if ($creator('item_abstract', cid) && $creator('item_abstract_ext', cid)) {
      $creator('item_abstract', cid).value = $creator('item_abstract_ext', cid).value;
    }

    if ( typeof($Q) == 'function' ) {
      var creator = $Q('#' + creatorId(cid));
      if ( $Q('.locations_fields', creator) ) {
        $Q('#locations', creator).append( $Q('.locations_fields', creator) );
      }
    }

    var ok_button = $creator('ok_button', cid).parentNode;
    var ok_button_body = $$('#' + creatorId(cid) + ' #ok_button .button_silver_body')[0];
    var close_link = $creator('redbox_close_link', cid);

    ok_button.onclick = function() { return false; }
    close_link.onclick = function() { return false; }
    ok_button_body.innerHTML = '<div class="ok_button_image"><img src="/images/redbox_spinner.gif" /></div>' + 
                               '<div class="ok_button_loading">Загрузка...</div>';

    ok_button.style.cursor = 'default';
    $creator('ok_button', cid).removeClassName('clickable');

    tinyMCE.triggerSave();
    frm.onsubmit();
  }
}

function beforeCloseCreator(id) {
  $('RB_creator_overlay').onclick = "";
  tinyMCE.execCommand('mceRemoveControl',false, 'item_body_' + creatorId(id)); 
  $(creatorId(active_creator_id)).remove();
  active_creator_id = null;
}

// TODO: better way?
function findFunction(name) {
  var result = null;
  if (eval('typeof ' + name) == 'function') {
    result = eval(name);
  }
  return result;
}

function switchItemClass(itemClassName, id) {
  if (itemClassName == 'post') {
    if ($creator('item_item_class', id) === null) {
      return;
    }
    var beforeHide = findFunction('beforeHide' + $creator('item_item_class', id).value.capitalize());
    beforeHide && beforeHide(id);
    availableCustomItemClasses.each(function(availableItemClassName) {
      $creator('creator_' + availableItemClassName, id).style.display = 'none';
      $creator(availableItemClassName + '_btn', id).className = 'creator_button';
      $creator(availableItemClassName + '_btn', id).style.display = 'block';
    });
    $creator('creator_buttons', id).style.paddingLeft = '40px';
  } else {
    availableCustomItemClasses.each(function(availableItemClassName) {
      $creator(availableItemClassName + '_btn', id).style.display = (itemClassName == availableItemClassName ? 'block' : 'none');
    });
    $creator('creator_' + itemClassName, id).style.display = 'block';
    $creator(itemClassName + '_btn', id).className = 'creator_selected_button';
    $creator('creator_buttons', id).style.paddingLeft = '0px';
    var afterShow = findFunction('afterShow' + itemClassName.capitalize());
    afterShow && afterShow(id);
  }
  $creator('item_item_class', id) && ($creator('item_item_class', id).value = itemClassName);
}

// Events

function clearEvent(id) {
  $creator('event_date', id).value = '';

  if (!$creator('event_start_time', id).hasClassName('text_input_hint')) {
    $creator('event_start_time', id).addClassName('text_input_hint');
    $creator('event_start_time', id).value = 'ЧЧ:ММ';
  }

  if (!$creator('event_end_time', id).hasClassName('text_input_hint')) {
    $creator('event_end_time', id).addClassName('text_input_hint');
    $creator('event_end_time', id).value = 'ЧЧ:ММ';
  }

  $creator('event_location', id).value = '';
  $creator('event_map_url', id).value = '';
  $creator('item_date', id).value = '';
  $creator('item_start_time', id).value = '';
  $creator('item_end_time', id).value = '';
  $creator('item_location', id).value = '';
  $creator('item_map_url', id).value = '';
}

function beforeHideEvent(id) {
  clearEvent(id);
}

function beforeSubmitEvent(id) {
  if (checkFields(['date', 'start_time', 'end_time'], 'event')) {
    if (startDateTime() && endDateTime() && (startDateTime() >= endDateTime())) {
      alert("Начало события должно быть раньше чем завершение");
      return false;
    }

    pushFields(['date', 'start_time', 'end_time', 'location', 'map_url'], 'event');
    return true;
  } else {
    return false;
  }
}

function beforeHideProduct(id) {
  if (!$creator('product_start_time', id).hasClassName('text_input_hint')) {
    $creator('product_start_time', id).addClassName('text_input_hint');
    $creator('product_start_time', id).value = 'ЧЧ:ММ';
  }

  if (!$creator('product_end_time', id).hasClassName('text_input_hint')) {
    $creator('product_end_time', id).addClassName('text_input_hint');
    $creator('product_end_time', id).value = 'ЧЧ:ММ';
  }

  $creator('item_start_time', id).value = '';
  $creator('item_end_time', id).value = '';

  clearFields(['date', 'end_date', 'price', 'url'], 'product');
}

function beforeSubmitProduct(id) {
  if (checkFields(['date', 'end_date', 'start_time', 'end_time', 'price', 'old_price'], 'product')) {
    if (startDateTime() < endDateTime()) {
      pushFields(['date', 'end_date', 'start_time', 'end_time', 'price', 'old_price'], 'product');
      return true;
    } else {
      alert("Начало акции должно быть раньше чем завершение");
      return false;
    }
  } else {
    return false;
  }
}

// Seminars

function beforeHideSeminar(id) {
  beforeHideEvent(id);
}

function beforeSubmitSeminar(id) {
  if (beforeSubmitEvent(id)) {
    pushFields(['price', 'url'], 'seminar');
    return true;
  } else {
    return false;
  }
}

// ...

function showFilesDiv(cid) {
  $creator('creator_file', cid).style.display = 'block';
  if (!creatorUploader.hasOpenedIframesIn($creator('creator_file_iframes', cid))) {
    creatorUploader.newUploadFileFrame($creator('creator_file_iframes', cid));
  }
}

function afterShowVideo(id, item_class) {
  var video_id = 'creator_' + (item_class ? item_class : 'video') + ' .creator_input_div';
  if (creatorUploader.hasOpenedIframesIn($creator(video_id, id)) ||
      $$('#' + creatorId(id) + ' #' + video_id + ' .video_div').length) {
    $creator(lastVideoFrameId, id).scrollTo();
  } else {
    lastVideoFrameId = creatorUploader.newUploadFileFrame($creator(video_id, id), videoCreatorOptions);
  }
}

function beforeHideVideo(id, item_class) {
  var video_id = 'creator_' + (item_class ? item_class : 'video') + ' .creator_input_div';
  $$('#' + creatorId(id) + ' #' + video_id + ' .video_div').each(function(video_div) {
    var id = /files_(\d+)/.exec(video_div.id)[1];
    new Ajax.Request(creatorUploader.destroy_url + '?id=' + id, {asynchronous:false, evalScripts:true});
  });

  $$('#' + creatorId(id) + ' #' + video_id + ' .creator_video_frame').each(function(video_frame) {
    $(video_frame).remove();
  });
}

function afterShowAlbum(id) {
  if (!creatorUploader.hasOpenedIframesIn($creator('creator_photo_iframes', id), true)) {
    lastPhotoFrameId = creatorUploader.newUploadFileFrame($creator('creator_photo_iframes', id), imageCreatorOptions);
  }
}

function afterShowPlace(id) {
  if (typeof(initMap) == 'function') {
    var map_element = $Q('#' + active_creator_id + ' .edit_locations');
    if ( map_element ) {
      var map_name = map_element.attr('id');
      if ( g_maps[map_name] ) {
        initMap(map_name, g_maps[map_name].options);
        fixMapLogosAndCopyrights.delay(1);
        fixMapLogosAndCopyrights.delay(5);
      }
    }
  }
}

function afterShowSeminar(id) {
  addTitleImageFrame('seminar');
}

function afterShowProduct(id) {
  addTitleImageFrame('product');
}

function afterShowVideo_lesson(id) {
  afterShowVideo(id, 'video_lesson');
}

function beforeHideVideo_lesson(id) {
  beforeHideVideo(id, 'video_lesson');
}

function deleteAllPhotos(id) {
  $$('#' + creatorId(id) + ' .photo_div').each(function(div) {
    var photo_regexp = /^files_(\d+)$/;
    var photo_id = photo_regexp.exec(div.id)[1];

    new Ajax.Request(creatorUploader.destroy_url + '?id=' + photo_id, {asynchronous: false, evalScripts: true});
  });
}

function beforeHidePhoto(id) {
  creatorUploader.removeClosedIframesIn($creator('creator_photo_iframes', id));
}

function showPhotoControls(photo_id) {
  $('photo_controls_' + photo_id).style.display = 'block';
}

function hidePhotoControls(photo_id) {
  $('photo_controls_' + photo_id).style.display = 'none';
}

function checkCreatorForm(cid) {
  if (!$creator('item_title', cid).value.strip() || $creator('item_title', cid).hasClassName('text_input_hint')) {
    alert("Укажите заголовок");
    return false;
  }

  var res = true
  availableCustomItemClasses.each(function(availableItemClassName) {
    var check = findFunction('beforeSubmit' + availableItemClassName.capitalize());
    if (check && isTabActive(cid, availableItemClassName)) {
      if (!check(cid)) {
        res = false;
      }
    }
  });

  return res;
}

creatorUploader = {
  frames : [],
  listeners : [],

  newUploadFileFrame : function(parent, options) {
    var frame_id = "creator_frame_" + this.frames.length;
    var frame = prepareFrame();
    var frameBaseUrl = creatorUploader.fileFrameUrl;
    var listener = this.defaultListener;

    if (options) {
      if (options['frameBaseUrl']) {
        frameBaseUrl = options['frameBaseUrl'];
      }

      if (options['className']) {
        $(frame).addClassName(options['className']);
      }

      if (options['listener']) {
        listener = options['listener'];
      }
    }
    
    frame.id = frame_id;
    $(frame).addClassName('creator_frame');
    $(parent).insert(frame, {position : 'bottom'});

    var url = this.base_url + '&report=' + frame_id;

    frame.src = frameBaseUrl + "?url=" + encodeURIComponent(url) + "&frame_id=" + encodeURIComponent(frame_id);

    this.frames.push({frame : frame, state : 'ready'});

    this.addListener(frame_id, listener);

    return frame_id;
  },

  addListener : function(frame_id, func) {
    if (!this.listeners[frame_id]) {
      this.listeners[frame_id] = []
    }

    this.listeners[frame_id].push(func);
  },

  getFrameState : function(frame_id) {
    for (i = 0; i < this.frames.length; i++) {
      if (frame_id == this.frames[i]['frame'].id) {
        return this.frames[i]['state'];
      }
    }

    return null;
  },

  uploadStarted : function(id) {
    var ind  = /creator_frame_(\d)/.exec(id)[1];
    this.frames[ind]['state'] = 'loading';

    // Call all events listeners
    if (this.listeners[id]) {
      for (var i = 0; i < this.listeners[id].length; i++) {
        this.listeners[id][i](id, 'loading', this);
      }
    }
  },

  fileUploaded : function(frame_id) {
    block_submit_button--;
  },

  hasOpenedIframesIn : function(el, recursive) {
    for (var i = 0; i < this.frames.length; i++) {
      if ('ready' == this.frames[i]['state'] &&
          (this.frames[i]['frame'].parentNode == el || this.frames[i]['frame'].descendantOf(el) && recursive)) {
        return this.frames[i]['frame'];
      }
    }

    return false;
  },

  removeClosedIframesIn : function(el) {
    $(el).select('iframe').each(function(fr) {
      if ('none' == fr.style.display) {
        $(fr).remove();
      }
    });
  },

  defaultListener : function(frame_id, state, uploader) {
    var fd = $(frame_id).contentWindow.document;
    var pn = $(frame_id).parentNode;

    // Hide iframe
    $(frame_id).toggle();

    if ('loading' == state) {
      $(frame_id).parentNode.insert('<div id="files_tmp_' + frame_id + '"><i class="file_loading_div">' +
                                    fd.forms[0].file.value +
                                    '</i> <img src=/images/loading_file.gif  class="file_loading_div" />' +
                                    '<a href="#" class="file_loading_div" onclick="$(\'files_tmp_' + frame_id + '\').remove(); $(\'' + frame_id + '\').remove(); block_submit_button--; return false;">Отменить</a><div class="clear_both"></div></div>', {position : 'bottom'});

      if (!uploader.hasOpenedIframesIn(pn)) {
        uploader.newUploadFileFrame(pn);
      }
      block_submit_button++;
    }
  },

  photoListener : function(frame_id, state, uploader) {
    var pn = $(frame_id).parentNode;

    // Hide iframe
    $(frame_id).toggle();

    if ('loading' == state) {
      pn.insert('<div class="photo_div" id="photo_tmp_' + frame_id + '">' +
                '<div class="photo_uploading_title">Загрузка... <a href="#" onclick="$(\'photo_tmp_' + frame_id + '\').remove(); $(\'' + frame_id + '\').remove(); block_submit_button--; return false;">Отменить</a></div>' +
                '<div class="photo_preview photo_uploading">' +
                '</div>' +
                '</div>');
      block_submit_button++;
    }

    if (!uploader.hasOpenedIframesIn(pn, true)) {
      creatorUploader.newUploadFileFrame(pn, imageCreatorOptions);
    }
  },

  videoListener : function(frame_id, state, uploader) {
    var fd = $(frame_id).contentWindow.document;
    var creator_id = $(frame_id).parentNode.parentNode.parentNode.id;

    // Hide iframe
    $(frame_id).toggle();

    if ('loading' == state) {
      $(frame_id).parentNode.insert('<div id="files_tmp_' + frame_id + '" class="creator_video_frame">' +
                '<div style="padding-left: 60px; padding-top: 40px;">' +
                '<div class="photo_uploading_title">Загрузка... ' +
                '<a href="#" onclick="$(\'files_tmp_' + frame_id + '\').remove(); $(\'' + frame_id + '\').remove(); hideVideoDiv(\'' + creator_id + '\');block_submit_button--; return false;">Отменить</a>' +
                '</div>' +
                '<div class="photo_preview photo_uploading">' +
                '</div>' +
                '</div>' +
                '</div>', {position : 'bottom'});
      block_submit_button++;
    }
  },

  frameLoaded : function(frame_id) {
    $(frame_id).style.display = 'block';
  }
}

function toggleAdvancedPanel() {
  if ($creator('creator_advanced').hasClassName('creator_advanced_active')) {
    $creator('creator_advanced').removeClassName('creator_advanced_active');
    $creator('creator_advanced').addClassName('creator_advanced_normal');
    $creator('creator_advanced_content').style.display = 'none';
  } else {
    $creator('creator_advanced').removeClassName('creator_advanced_normal');
    $creator('creator_advanced').addClassName('creator_advanced_active');
    $creator('creator_advanced_content').style.display = 'block';
  }
}

function changeVisibility(vis) {
  for (var i = 0; i < 4; i++) {
    if ($creator('visibility_' + i)) {
      $creator('visibility_' + i).checked = false;
    }
  }

  $creator('item_visibility').value = vis.value;
  vis.checked = true;
}

function afterJoinForCreate() {
  if ( g_may_create ) {
    if (findCookie('redirectToCreator')) {
      var url = findCookie('redirectToCreator');
      addCookie('redirectToCreator', '', 7);
      document.location.href = url;
    } else if (findCookie('showCreator')) {
      var creator_url = findCookie('showCreator');
      addCookie('showCreator', '', 7);
      loadCreator(creator_url);
    }
  }

  if ( g_member_id ) {
    if (findCookie('reply_comment')) {
      reply_comment_url = findCookie('reply_comment');
      addCookie('reply_comment', '', 7);
      document.location.href = reply_comment_url;
    }
  }
}

function joinForCreate(join_url, creator_url) {
  addCookie('redirectToCreator', document.location.href, 7);
  addCookie('showCreator', creator_url, 7);
  document.location.href = join_url;
}

function changeNotifyAboutUpdate(sn) {
  $creator('item_notify_about_update').value = (sn.checked ? '1' : '');
}

function titleImageUploadingStarted(app) {
  $creator('title_image_frame').hide();
  $creator(app + '_title_images_container').insert(
    '<div id="files_tmp_title_image">Загрузка...</div>',
    {position: 'bottom'}
  );
}

function addTitleImageFrame(app) {
  if (!app) {
    app = $creator('item_item_class').value;
  }

  if ($$('#' + active_creator_id + ' .title_image_file').length == 0) {
    if ($creator('title_image_frame')) {
      $creator('title_image_frame').remove();
    }

    var frame = prepareFrame();
    var url = creatorUploader.base_url;
    frame.className = app + '_frame';
    frame.id = 'title_image_frame';
    frame.src = creatorUploader.titleImageFrameUrl + "?url=" + encodeURIComponent(url) + '&app=' + app;
    $creator(app + '_title_images_container').insert($(frame), {position: 'bottom'});
  }
}

function showMapHelp() {
  RedBox.showInline('map_help', {'redbox_id': 'RB_map_help'});
}

function autoloadImages() {
  for (var i = 0; i < creator_images.length; i++) {
    var image = new Image();
    image.src = creator_images[i];
  }
}

autoloadImages();
