// ***** Edit ******************************************************************

// ***** set_image *****

function set_image(id)
{
  var item = document.getElementById(id);

  // Dimensions

  var width  = document.getElementById('width');
  var height = document.getElementById('height');

  width .value = width .value.match(/^[0-9]+$/) ? width .value : 100;
  height.value = height.value.match(/^[0-9]+$/) ? height.value : 20;

  item.style.width      = width .value+'px';
  item.style.height     = height.value+'px';
  item.style.lineHeight = (height.value-1)+'px';

  // Padding

  var padding = document.getElementById('padding');

  padding.value = padding.value.match(/^[0-9]+$/) ? padding.value : 2;

  item.innerHTML = item.innerHTML.replace(/&nbsp;/g   , '');
  item.innerHTML = item.innerHTML.replace(/[^a-zA-Z]/g, '');

  for (var i = 0; i < padding.value; i++)
    item.innerHTML = '&nbsp;'+item.innerHTML;

  // Border

  var brd_width = document.getElementById('brd_width');
  var brd_color = document.getElementById('brd_color');

  brd_width.value = brd_width.value.match(/^[0-9]+$/)         ? brd_width.value : 1;
  brd_color.value = brd_color.value.match(/^[0-9a-fA-F]{6}$/) ? brd_color.value : "000000";

  item.style.borderStyle = 'solid';
  item.style.borderWidth = brd_width.value+'px';
  item.style.borderColor = '#'+brd_color.value;

  // Font

  var font_family = document.getElementById('font_family');
  var font_size   = document.getElementById('font_size');
  var font_col    = document.getElementById(id+'_font_col');

  font_col.value = font_col.value.match(/^[0-9a-f]{6}$/) ? font_col.value : '000000';

  item.style.fontFamily = font_family.value;
  item.style.fontWeight = "900";
  item.style.fontSize   = font_size.value+"px";
  item.style.color      = "#"+font_col .value;

  // Background

  var bg_col = document.getElementById(id+'_bg_col');
  var bg_src = document.getElementById(id+'_bg_src');
  var bg_x   = document.getElementById(id+'_bg_x');
  var bg_y   = document.getElementById(id+'_bg_y');

  bg_col.value = bg_col.value.match(/^[0-9a-f]{6}$/) ? bg_col.value : 'ffffff';
  bg_x  .value = bg_x.value.match(/^[0-9]+$/) ? bg_x.value : 0;
  bg_y  .value = bg_y.value.match(/^[0-9]+$/) ? bg_y.value : 0;

  item.style.backgroundColor    = '#'+bg_col.value;
  item.style.backgroundImage    = bg_src.value ? "url('"+bg_src.value+"')" : "";
  item.style.backgroundPosition = bg_x.value+"px "+bg_y.value+"px";
}

// ***** set_image_all ----

function set_image_all()
{
  set_image('generl');
  set_image('active');
  set_image('parent');
  set_image('expand');
}

// ***** auto_fill ----

function auto_fill(dst, src)
{
  var subitems = new Array('_font_col', '_bg_src', '_bg_x', '_bg_y', '_bg_col');

  for (var i = 0; i < subitems.length; i++)
    document.getElementById(dst+subitems[i]).value =
      document.getElementById(src+subitems[i]).value;

  set_image(dst);
}

// ***** adjust_list_size *****

function adjust_list_size()
{
  var items = document.getElementById('items');
  var urls  = document.getElementById('urls' );

  var size1 = items.value.match(/\n/g) ? items.value.match(/\n/g).length+3 : 5;
  var size2 = urls .value.match(/\n/g) ? urls .value.match(/\n/g).length+3 : 5;
  var size  = Math.ceil((size1 > size2 ? size1 : size2) / 5) * 5;

  if (items.rows != size) items.rows = size;
  if (urls .rows != size) urls .rows = size;
}


// ***** Cookies ***************************************************************

// ***** setCookie *****

function setCookie(name, value, expires, path, domain, secure)
{
  document.cookie =
    name+"="+escape(value)+
    (expires ? "; expires="+expires.toGMTString() : "")+
    (path    ? "; path="   +path   : "")+
    (domain  ? "; domain=" +domain : "")+
    (secure  ? "; secure" : "");
}

// ***** setCookieLT *****

function setCookieLT(name, value, lifetime, path, domain, secure)
{
  if (lifetime) lifetime = new Date(Date.parse(new Date())+lifetime*1000);
  setCookie(name, value, lifetime, path, domain, secure);
}

// ***** getCookie *****

function getCookie(name)
{
  cookie = " "+document.cookie;
  offset = cookie.indexOf(" "+name+"=");

  if (offset == -1) return undefined;

  offset += name.length+2;
  end     = cookie.indexOf(";", offset)

  if (end == -1) end = cookie.length;

  return unescape(cookie.substring(offset, end));
}


// ***** Save/Restore **********************************************************

// ***** form2string *****

function form2string(form)
{
  form = document.getElementById(form);

  var result = new Array();

  for (var i = 0; i < form.elements.length; i++)
    if (form.elements[i].name != '' && form.elements[i].type != 'submit')
      result.push(escape(form.elements[i].name)+'='+escape(form.elements[i].value));

  return result.join(':');
}

// ***** string2form_aux *****

function string2form_aux(name, str)
{
  offset = str.indexOf(":"+name+"=");

  if (offset == -1) return undefined;

  offset += name.length+2;
  end     = str.indexOf(":", offset)

  return unescape(str.substring(offset, end));
}

// ***** string2form *****

function string2form(form, str)
{
  form = document.getElementById(form);
  str  = ':'+str+':';

  for (var i = 0; i < form.elements.length; i++)
    if (form.elements[i].name != '' && form.elements[i].type != 'submit')
      form.elements[i].value = string2form_aux(form.elements[i].name, str);

  set_image_all();
  adjust_list_size();
}

// ***** save_aux *****

function save_aux(name)
{
  setCookieLT(name, form2string('menu_builder'), 365*24*3600);
}

// ***** save *****

function save()
{
  var name = getCookie("menu_builder_last_name");
  name     = (name != undefined) ? name : '';
  name     = prompt("Please, enter project name:", name);

  if (name != null)
  {
    setCookieLT("menu_builder_last_name", name, 365*24*3600);
    save_aux(name);
  }
}

// ***** save_auto *****

function save_auto()
{
  save_aux('menu_builder_last_menu');
  setTimeout('save_auto();', 1000);
}

// ***** restore_aux *****

function restore_aux(name)
{
  var data = getCookie(name);
  if (data != undefined) string2form('menu_builder', data);
}

// ***** restore *****

function restore()
{
  var name = getCookie("menu_builder_last_name");
  name     = (name != undefined) ? name : '';
  name     = prompt("Please, enter project name:", name);

  if (name != null)
  {
    setCookieLT("menu_builder_last_name", name, 365*24*3600);
    restore_aux(name);
  }
}


// ***** Samples ***************************************************************

var menu_builder_template = new String("width=100:height=21:padding=2:brd_width=1:brd_color=000000:font_family=Arial%2C%20Sans-Serif:font_size=12:generl_font_col=000000:generl_bg_src=:generl_bg_x=0:generl_bg_y=0:generl_bg_col=ffffff:active_font_col=000000:active_bg_src=:active_bg_x=0:active_bg_y=0:active_bg_col=ffffff:parent_font_col=000000:parent_bg_src=:parent_bg_x=0:parent_bg_y=0:parent_bg_col=ffffff:expand_font_col=000000:expand_bg_src=:expand_bg_x=0:expand_bg_y=0:expand_bg_col=ffffff:id=dhtml_menu:prefix=http%3A//:items=Main%201%0D%0AMain%202%20%3E%3E%0D%0A%20Level%201-1%0D%0A%20Level%201-2%20%3E%3E%0D%0A%20%20Level%202-1%0D%0A%20%20Level%202-2%0D%0A%20%20Level%202-3%0D%0A%20Level%201-3%0D%0AMain%203:urls=alert%28%27Main%201%27%29%3B%0D%0Aalert%28%27Main%202%27%29%3B%0D%0Aalert%28%27Level%201-1%27%29%3B%0D%0Aalert%28%27Level%201-2%27%29%3B%0D%0Aalert%28%27Level%202-1%27%29%3B%0D%0Aalert%28%27Level%202-2%27%29%3B%0D%0Aalert%28%27Level%202-3%27%29%3B%0D%0Aalert%28%27Level%201-3%27%29%3B%0D%0Aalert%28%27Main%203%27%29%3B");
var menu_builder_sample_1 = new String("width=106:height=20:padding=2:brd_width=1:brd_color=000000:font_family=%27Times%20New%20Roman%27%2C%20Serif:font_size=12:generl_font_col=206040:generl_bg_src=dhtml-menu.png:generl_bg_x=0:generl_bg_y=40:generl_bg_col=ffffff:active_font_col=206060:active_bg_src=dhtml-menu.png:active_bg_x=0:active_bg_y=20:active_bg_col=ffffff:parent_font_col=206040:parent_bg_src=dhtml-menu.png:parent_bg_x=0:parent_bg_y=0:parent_bg_col=ffffff:expand_font_col=206060:expand_bg_src=dhtml-menu.png:expand_bg_x=0:expand_bg_y=60:expand_bg_col=ffffff:id=dhtml_menu:prefix=javascript%3A:items=Main%201%0D%0AMain%202%0D%0A%20Level%201-1%0D%0A%20Level%201-2%0D%0A%20%20Level%202-1%0D%0A%20%20Level%202-2%0D%0A%20%20Level%202-3%0D%0A%20Level%201-3%0D%0AMain%203:urls=alert%28%27Main%201%27%29%3B%0D%0Aalert%28%27Main%202%27%29%3B%0D%0Aalert%28%27Level%201-1%27%29%3B%0D%0Aalert%28%27Level%201-2%27%29%3B%0D%0Aalert%28%27Level%202-1%27%29%3B%0D%0Aalert%28%27Level%202-2%27%29%3B%0D%0Aalert%28%27Level%202-3%27%29%3B%0D%0Aalert%28%27Level%201-3%27%29%3B%0D%0Aalert%28%27Main%203%27%29%3B");
var menu_builder_sample_2 = new String("width=106:height=19:padding=2:brd_width=1:brd_color=000000:font_family=%27Times%20New%20Roman%27%2C%20Serif:font_size=13:generl_font_col=008000:generl_bg_src=:generl_bg_x=0:generl_bg_y=0:generl_bg_col=ffffdd:active_font_col=008000:active_bg_src=:active_bg_x=0:active_bg_y=0:active_bg_col=ffffee:parent_font_col=008000:parent_bg_src=:parent_bg_x=0:parent_bg_y=0:parent_bg_col=ffffdd:expand_font_col=008000:expand_bg_src=:expand_bg_x=0:expand_bg_y=0:expand_bg_col=ffffee:id=dhtml_menu:prefix=javascript%3A:items=Main%201%0D%0AMain%202%20%3E%3E%0D%0A%20Level%201-1%0D%0A%20Level%201-2%20%3E%3E%0D%0A%20%20Level%202-1%0D%0A%20%20Level%202-2%0D%0A%20%20Level%202-3%0D%0A%20Level%201-3%0D%0AMain%203:urls=alert%28%27Main%201%27%29%3B%0D%0Aalert%28%27Main%202%27%29%3B%0D%0Aalert%28%27Level%201-1%27%29%3B%0D%0Aalert%28%27Level%201-2%27%29%3B%0D%0Aalert%28%27Level%202-1%27%29%3B%0D%0Aalert%28%27Level%202-2%27%29%3B%0D%0Aalert%28%27Level%202-3%27%29%3B%0D%0Aalert%28%27Level%201-3%27%29%3B%0D%0Aalert%28%27Main%203%27%29%3B");

