var modes_file = "index1.php", actions_file = "index2.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);
    element.className = 'text_editor';
   }
  }
 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);
 if (w) w.center();
 return false;
}

function getElementsByClassName(class_name, tag_name, element)
{
 if (typeof class_name === 'string')
  class_name = new RegExp("(^| )" + class_name + "( |$)");
 if (!tag_name) tag_name = "*";
 if (!element) element = document;
 var elements = typeof element.getElementsByTagName != undefined ?
  element.getElementsByTagName(tag_name) : element.all || [], result = [];
 for (var i = 0; i < elements.length; i++)
  if (class_name.test(elements[i].className))
   result.push(elements[i]);
 return result;
}

function payment_system_details(system, details)
{
 switch (system.value)
 {
  case "PayPal":
   if (!/paypal/i.test(details.value))
    details.value = "PayPal E-Mail:";
  break;
  case "Wire Transfer":
   if (!/wire\s*transfer/i.test(details.value))
    details.value = "Wire Transfer details:\n\n" +
    "BENEFICIARY BANK DETAILS\n" +
    " Beneficiary Name:\n" +
    " Bank Name:\n" +
    " Bank Address:\n" +
    " Bank City:\n" +
    " Bank State/Province:\n" +
    " Bank Postal/Zip Code:\n" +
    " Bank Country:\n" +
    " Bank Account or IBAN number:\n" +
    " SWIFT Code:\n" +
    " Currency Preferred:\n\n" +
    "BENEFICIARY POSTAL ADDRESS\n" +
    " Address:\n" +
    " City:\n" +
    " State/Province:\n" +
    " Postal/Zip Code:\n" +
    " Country:\n\n" +
    "INTERMEDIARY BANK DETAILS\n" +
    " Bank Name:\n" +
    " Bank Address:\n" +
    " Bank City:\n" +
    " Bank State/Province:\n" +
    " Bank Postal/Zip Code:\n" +
    " Bank Country:\n" +
    " SWIFT Code:";
  break;
 }
}

function init(get)
{
 var container = $("content"), mode = get["mode"] || "main";
 if (container)
  switch (mode)
  {
   case "free_orders":
   case "active_orders":
   case "completed_orders":
   case "messages":
   case "new_messages":
   case "statistics":
   case "payments":
    open_page(get, null, null, function() {
     var tables = getElementsByClassName("data_table", "TABLE", container);
     if (tables.length)
      for (var i = 0; i < tables.length; i++)
       set_table_style(tables[i], "#ffffff", "#ffffff", "#fafafa", "#fafafa");
    });
   break;
   case "profile":
    load_url(actions_file + "?mode=" + mode, "action=edit", container, function() {
     var tables = getElementsByClassName("data_table", "TABLE", container);
     if (tables.length)
      for (var i = 0; i < tables.length; i++)
       set_table_style(tables[i], "#ffffff", "#ffffff", "#fafafa", "#fafafa");
     if (document.forms["profile"])
      Calendar.setup({ inputField: document.forms["profile"].elements.birthday, ifFormat: "%Y-%m-%d", showsTime: false, cache: true, showOthers: true });
    });
   break;
  }
}