function addWikiFormattingToolbar(textarea) {
  if ((typeof(document["selection"]) == "undefined")
   && (typeof(textarea["setSelectionRange"]) == "undefined")) {
    return;
  }
  
  var toolbar = document.createElement("div");
  toolbar.className = "wikitoolbar";

  function addButton(id, title, fn) {
    var a = document.createElement("a");
    a.href = "#";
    a.id = id;
    a.title = title;
    a.onclick = function() { try { fn() } catch (e) { } return false };
    a.tabIndex = 400;
    toolbar.appendChild(a);
  }

  function encloseSelection(prefix, suffix) {
    textarea.focus();
    var start, end, sel, scrollPos, subst;
    if (typeof(document["selection"]) != "undefined") {
      sel = document.selection.createRange().text;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      start = textarea.selectionStart;
      end = textarea.selectionEnd;
      scrollPos = textarea.scrollTop;
      sel = textarea.value.substring(start, end);
    }
    if (sel.match(/ $/)) { // exclude ending space char, if any
      sel = sel.substring(0, sel.length - 1);
      suffix = suffix + " ";
    }
    subst = prefix + sel + suffix;
    if (typeof(document["selection"]) != "undefined") {
      var range = document.selection.createRange().text = subst;
      textarea.caretPos -= suffix.length;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      textarea.value = textarea.value.substring(0, start) + subst +
                       textarea.value.substring(end);
      if (sel) {
        textarea.setSelectionRange(start + subst.length, start + subst.length);
      } else {
        textarea.setSelectionRange(start + prefix.length, start + prefix.length);
      }
      textarea.scrollTop = scrollPos;
    }
  }

  addButton("strong", "Жирный текст: '''Пример'''", function() {
    encloseSelection("'''", "'''");
  });
  addButton("em", "Курсив: ''Пример''", function() {
    encloseSelection("''", "''");
  });
  addButton("heading", "Заголовок 1 уровня: == Пример ==", function() {
    encloseSelection("\n==", "==\n", "Heading");
  });
  addButton("link", "Ссылка: [[http://www.example.com/ Пример]]", function() {
    encloseSelection("[[http:// ", "]]");
  });
  addButton("code", "Блок кода: {{{ пример }}}", function() {
    encloseSelection("\n{{{\n", "\n}}}\n");
  });
  addButton("hr", "Горизонтальная линия: ----", function() {
    encloseSelection("\n----\n", "");
  });

  addButton("ul", "Подчеркнутый текст: __Пример__", function() {
    encloseSelection("__", "__");
  });

  addButton("page", "Разрыв страницы: ", function() {
    encloseSelection("[[page]]", "");
  });

  addButton("head2", "Заголовок 2 уровня: ===Пример===", function() {
    encloseSelection("\n===", "===\n", "Heading");
  });

   addButton("head3", "Заголовок 3 уровня: ====Пример====", function() {
    encloseSelection("\n====", "====\n", "Heading");
  });

  addButton("left", "Левое выравниывание: [[left: Текст текст]]", function() {
    encloseSelection("[[left: ", "]]");
  });

  addButton("right", "Правое выравниывание: [[right: Текст текст]]", function() {
    encloseSelection("[[right: ", "]]");
  });

  addButton("center", "Центральное выравниывание: [[center: Текст текст]]", function() {
    encloseSelection("[[center: ", "]]");
  });
  
  addButton("anchor", "Якорь: [[anchor: имя_якоря]]", function() {
    encloseSelection("[[anchor: ", "]]");
  });

  addButton("anchorlink", "Ссылка на якорь: [[left: имя_якоря текст ссылки]]", function() {
    encloseSelection("[[link: имя_якоря ", "]]");
  });

  addButton("list", "Элемент списка: * текст (только в начале строки)", function() {
    encloseSelection("* ", "");
  });



 textarea.parentNode.insertBefore(toolbar, textarea);
}

// Add the toolbar to all <textarea> elements on the page with the class
// 'wikitext'.

  function encloseSelection(textarea, prefix, suffix) {
    textarea.focus();
    var start, end, sel, scrollPos, subst;
    if (typeof(document["selection"]) != "undefined") {
      sel = document.selection.createRange().text;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      start = textarea.selectionStart;
      end = textarea.selectionEnd;
      scrollPos = textarea.scrollTop;
      sel = textarea.value.substring(start, end);
    }
    if (sel.match(/ $/)) { // exclude ending space char, if any
      sel = sel.substring(0, sel.length - 1);
      suffix = suffix + " ";
    }
    subst = prefix + sel + suffix;
    if (typeof(document["selection"]) != "undefined") {
      var range = document.selection.createRange().text = subst;
      textarea.caretPos -= suffix.length;
    } else if (typeof(textarea["setSelectionRange"]) != "undefined") {
      textarea.value = textarea.value.substring(0, start) + subst +
                       textarea.value.substring(end);
      if (sel) {
        textarea.setSelectionRange(start + subst.length, start + subst.length);
      } else {
        textarea.setSelectionRange(start + prefix.length, start + prefix.length);
      }
      textarea.scrollTop = scrollPos;
    }
  }

function toolbar()
{

	var re = /\bwikitext\b/;
	var textareas = document.getElementsByTagName("textarea");
	for (var i = 0; i < textareas.length; i++) {
	  var textarea = textareas[i];
	  if (textarea.className && re.test(textarea.className)) {
	    addWikiFormattingToolbar(textarea);
	  }
	}

}

function insertImage(id, info)
{
	var re = /\bwikitext\b/;
	var textareas = document.getElementsByTagName("textarea");
	for (var i = 0; i < textareas.length; i++) {
	  var textarea = textareas[i];
	  if (textarea.className && re.test(textarea.className)) {
	    encloseSelection(textarea, '[[image: ' + id + '|' + info + '|left]]', '');
//	    encloseSelection(textarea, 'image', '');
	    return;
	  }
	}

}

function insertFile(id, info)
{
	var re = /\bwikitext\b/;
	var textareas = document.getElementsByTagName("textarea");
	for (var i = 0; i < textareas.length; i++) {
	  var textarea = textareas[i];
	  if (textarea.className && re.test(textarea.className)) {
	    encloseSelection(textarea, '[[file: ' + id + '|' + info + ']]', '');
//	    encloseSelection(textarea, 'image', '');
	    return;
	  }
	}

}


function insertImageText(id, info)
{
    tinyMCE.execCommand('mceInsertContent',false, '[[image: ' + id + '|' + info + '|left]]');
}

function insertFileText(id, info)
{
    tinyMCE.execCommand('mceInsertContent',false, '[[file: ' + id + '|' + info + ']]');
}

function insertTableText(id, info)
{
    tinyMCE.execCommand('mceInsertContent',false, '[[table: ' + id + '|' + info + '|left]]');
}

function insertFormText(id, info)
{
    tinyMCE.execCommand('mceInsertContent',false, '<a href="/inetreception-viewform.htm?form_id='+id+'">' + info + '</a>');

    //tinyMCE.execCommand('mceInsertContent',false, '[[table: ' + id + '|' + info + '|left]]');
}


var gmapNewMarkers = new Object;	 

function gmapEditEnabled()
{
	var cb = document.getElementById("edit_active");
	if (cb == null) return false;
	if (cb.checked) return true;
	return false;
}

function gmapAddCommand(text)
{
	var control = document.getElementById('to_add');
	if (control == null) return;
	control.value = control.value + text + ";";
}


function initGmap() {
	var map = new GMap2(document.getElementById("map_canvas"));
	// 56.641221,47.886314
	map.setCenter(new GLatLng(56.641221,47.886314), 13);
	map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	// map.setMapType(G_HYBRID_MAP);
	//this.map.setMapType(G_SATELLITE_MAP);
	var myEventListener = GEvent.bind(map, "click", this, function(overlay, latlng) {
		if (!gmapEditEnabled()) {
           return;
		}
		if (overlay instanceof GMarker) {
			map.removeOverlay(overlay);
			gmapAddCommand("+" + overlay.latlng);
		} else if (latlng) {
        	var marker = new GMarker(latlng, {draggable: true});
			map.addOverlay(marker);
			GEvent.addListener(marker, "dragend", function() {
				marker.openInfoWindowHtml("Just bouncing along...");
			});
		}
	}); 
}


function initTinyMCE() 
{
	tinyMCE.init({
		// General options
		mode : "exact",
		elements : "elm1,elm2",
		theme : "advanced",
		plugins : "advlink,pagebreak",

		// Theme options
		theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect,|,link,unlink,anchor",
		theme_advanced_buttons2 : "cut,copy,paste,pasteword,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,code,|,forecolor,backcolor,|,hr,removeformat,|,sub,sup,|,charmap,iespell,media,advhr,|,pagebreak",
		theme_advanced_buttons3 : "",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "none",
		theme_advanced_resizing : true,
		
		language : "ru",

		// Example content CSS (should be your site CSS)
		content_css : "css/content.css",

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "lists/template_list.js",
		external_link_list_url : "lists/link_list.js",
		external_image_list_url : "lists/image_list.js",
		media_external_list_url : "lists/media_list.js",

		// Replace values for the template plugin
		template_replace_values : {
			username : "Some User",
			staffid : "991234"
		}
	});
}


