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);
  }
 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 format_price(x)
{
 x = x.toString().split(".");
 if (x.length < 2) x[1] = "00"; else
 if (x[1].length < 2) x[1] += "0";
 return x.join(".");
}

function calculate_price(form, page, total)
{
 var urgency = form.elements.urgency.value;
 var level = form.elements.level.value;
 var price = order_prices[urgency][level];
 var pages = form.elements.pages.value;
 page.innerHTML = format_price(price) + " $";
 total.innerHTML = format_price(Math.round(price * pages * 100) / 100) + " $";
}

function make_table(attributes, cells)
{
 var result = "<table";
 if (attributes)
  for (var a in attributes)
   result += " " + a + "=\"" + attributes[a] + "\"";
 result += ">\n";
 if (cells)
  for (var r = 0; r < cells.length; r++)
  {
   result += " <tr>\n";
   for (var c = 0; c < cells[r].length; c++)
    result += "  <td>" + cells[r][c] + "</td>\n";
   result += " </tr>\n";
  }
 result += "</table>";
 return result;
}

function calculate_prices(pages, element)
{
 var table = [], r = 0, c = 0;
 table[0] = ["<sub>URGENCY</sub> \\ <sup>WRITER LEVEL</sup>"];
 for (var i in order_levels)
  table[0].push("<strong>" + order_levels[i] + "</strong>");
 for (var i in order_urgencies)
 {
  r++; c = 0;
  table[r] = ["<strong>" + order_urgencies[i] + "</strong>"];
  for (var j in order_levels)
  {
   c++;
   table[r][c] = Math.round(order_prices[i][j] * pages * 100) / 100;
  }
 }
 set_content(element, make_table({"id": "table_essay_calculator", "class": "table_essay_calculator", "border": "0", "width": "60%", "style": "text-align:center"}, table));
 set_table_style($("table_essay_calculator"), "#c2d9e3", "#c2d9e3", "#eaf1f4", "#eaf1f4");
}

function verify_order_form(form)
{
 var fields = get_fields(form);
 if (fields.firstname && fields.lastname && fields.email1 && fields.phone1 && fields.topic && fields.sources) return true;
 alert("Please fill all required fields");
 return false;
}

function init(mode)
{
 if (mode.indexOf("buy-") == 0) mode = "order";
 switch (mode)
 {
  case "order":
   load_url("order.php", null, $("ajax_content"), function() {
    var form, page, total;
    if ((form = document.forms.order) && (page = $("page_price")) && (total = $("total_price")))
     calculate_price(form, page, total);
   });
  break;
  case "customer-support":
   load_url("contacts.php", null, $("ajax_content"));
  break;
  case "contacts":
  case "suggestions":
  case "profile":
  case "orders":
   load_url(mode + ".php", null, $("ajax_content"));
  break;
 }
}