var modes_file = "admin1.php", actions_file = "admin2.php",
 default_container = "content", current_page = {mode: "", page: 0};

function add_editors(form)
{
 var forms = form ? [form] : document.forms, element, id;
 for (var i = 0; i < forms.length; i++)
  for (var j = 0; j < forms[i].elements.length; j++)
  {
   element = forms[i].elements[j];
   switch (element.className)
   {
    case 'date_editor':
     Calendar.setup({ inputField: element, ifFormat: "%Y-%m-%d %H:%M:%S", showsTime: true, cache: true, showOthers: true });
     element.className += '_';
    break;
    case 'text_editor':
     id = element.id || (element.id = "tiny_mce_" + rand(1, 999999));
     tinyMCE.execCommand('mceAddControl',false,id);
     element.className += '_';
    break;
   }
  }
 return false;
}

function remove_editors(form)
{
 var forms = form ? [form] : document.forms, element, id;
 for (var i = 0; i < forms.length; i++)
  for (var j = 0; j < forms[i].elements.length; j++)
  {
   element = forms[i].elements[j];
   if (element.className == 'text_editor_' && (id = element.id))
    tinyMCE.execCommand('mceRemoveControl',false,id);
  }
 return false;
}

function open_page(get, post, win, onsuccess, onerror)
{
 var container;
 if (win && (container = win.get_element("content")))
  win.current_page = get;
 else
 {
  container = $(default_container);
  current_page = get;
 }
 load_url(modes_file + (get ? "?" + url_encode_array(get) : ""), url_encode_array(post), container,
  function(request)
  {
   add_editors();
   if (onsuccess) onsuccess(request);
  }, onerror);
 return false;
}

function open_new_page(get, post, onsuccess, onerror)
{
 var w = new jswindow();
 if (get.mode) w.set_caption(get.mode);
 open_page(get, post, w, function(request) {
  w.center();
  if (onsuccess) onsuccess(request);
 }, onerror);
 w.center();
 return false;
}

function refresh_page(variables, win, onsuccess, onerror)
{
 var page;
 if (win)
 {
  if (variables)
   for (var i in variables)
    win.current_page[i] = variables[i];
  open_page(win.current_page, null, win, onsuccess, onerror);
 }
 else
 {
  if (variables)
   for (var i in variables)
    current_page[i] = variables[i];
  open_page(current_page, null, null, onsuccess, onerror);
 }
 return false;
}

function edit_record(get, post, win, onsuccess, onerror)
{
 if (win && win.current_page)
  for (var i in win.current_page)
   if (typeof get[i] == "undefined")
    get[i] = win.current_page[i];
 var w = new jswindow();
 w.parent = win;
 if (get.mode) w.set_caption(get.mode);
 load_url(actions_file + (get ? "?" + (typeof get == "object" ? url_encode_array(get) : get) : ""),
  typeof post == "object" ? url_encode_array(post) : post,
  w.get_element("content"), function(request) {
  w.center();
  add_editors();
  if (onsuccess) onsuccess(request);
 }, onerror);
 w.center();
 return false;
}

function delete_record(get, post, win, onsuccess, onerror)
{
 if (win && win.current_page)
  for (var i in win.current_page)
   if (typeof get[i] == "undefined")
    get[i] = win.current_page[i];
 if (confirm("Delete this item?"))
 {
  ajax_request({
   url: actions_file + (get ? "?" + (typeof get == "object" ? url_encode_array(get) : get) : ""),
   post: typeof post == "object" ? url_encode_array(post) : post,
   onsuccess: function(request) {
    refresh_page(null, win);
    if (request.responseText) alert(request.responseText);
    if (onsuccess) onsuccess(request);
   },
   onerror: function(request) {
    alert("Error " + request.status + ": " + request.statusText);
    if (onerror) onerror(request);
   }
  });
 }
 return false;
}

function save_form(form, onsuccess, onerror)
{
 var w = get_parent_window(form);
 var c = w && w.get_element("content") || form.parentNode;
 remove_editors(form);
 submit_form(form, c, function(request) {
  if (w)
  {
   c = c && c.innerHTML || "";
   w.close();
   if (c) alert(c);
   else refresh_page(null, w = w && w.parent, function() { if (w) w.center(); });
  }
  if (onsuccess) onsuccess(request);
 }, onerror);
 w.center();
 return false;
}

function insert_text(element, text)
{
 element.focus();
 if (document.selection)
 {
  var s = document.selection.createRange();
  s.text = text;
  s.select();
 }
 else if (typeof element.selectionStart == "number" && typeof element.selectionEnd == "number")
 {
  var start = element.selectionStart;
  var end = element.selectionEnd;
  element.value = element.value.substr(0, start) + text + element.value.substr(end);
  element.setSelectionRange(start += text.length, start);
 }
 else element.value += text;
 return false;
}

function insert_html(html)
{
 tinyMCE.execCommand('mceInsertRawHTML',false,html);
 return false;
}

function image_template(path, title)
{
 return "<img src=\"" + path + "\" alt=\"" + title + "\" />";
}

function image_template_ex(path, title)
{
 var url = prompt("Link URL:", "");
 var result = "<img src=\"" + path + "\" alt=\"" + title + "\" border=\"0\" />";
 return url ? "<a href=\"" + url + "\" target=\"_blank\">" + result + "</a>" : result;
}

function flash_template(path)
{
 var width = prompt("Flash width:", "");
 var height = prompt("Flash height:", "");
 width = width && !isNaN(width = parseInt(width)) ? " width = \"" + width + "\"" : '';
 height = height && !isNaN(height = parseInt(height)) ? " height = \"" + height + "\"" : '';
 return "<object classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0\"" + width + height + ">\n" +
        " <param name=\"movie\" value=\"" + path + "\" />\n" +
        " <param name=\"quality\" value=\"high\" />\n" +
        " <embed src=\"" + path + "\" quality=\"high\" pluginspage=\"http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash\" type=\"application/x-shockwave-flash\"" + width + height + "></embed>\n" +
        "</object>";
}

function file_template(path, title)
{
 return "<a href=\"" + path + "\" target=\"_blank\">" + title + "</a>";
}

function insert_file(path)
{
 var file = path.split("/").pop();
 var file_name = file.split(".");
 var file_ext = (file_name.length > 1) ? file_name.pop() : "";
 file_name = file_name.join(".");
 var template = "";
 switch(file_ext)
 {
  case "gif":
  case "jpe":
  case "jpeg":
  case "jpg":
  case "png": template = image_template(path, file); break;
  case "swf": template = flash_template(path); break;
  default: template = file_template(path, file);
 }
 insert_html(template);
 return false;
}

function insert_file_ex(path, element)
{
 var file = path.split("/").pop();
 var file_name = file.split(".");
 var file_ext = (file_name.length > 1) ? file_name.pop() : "";
 file_name = file_name.join(".");
 var template = "";
 switch(file_ext)
 {
  case "gif":
  case "jpe":
  case "jpeg":
  case "jpg":
  case "png": template = image_template_ex(path, file); break;
  case "swf": template = flash_template(path); break;
  default: template = file_template(path, file);
 }
 insert_text(element, template);
 return false;
}

function init()
{
 load_url(modes_file, null, $("body"),
  function() {
   if (document.forms.form_login)
    document.forms.form_login.elements.login.focus();
  });
}
