User:Alex Smotrov/createEditTools

//

//basic set of tags and symbols
var charinsert = 'Insert: –—…°≈≠≤≥±−×÷←→·§ _ _ Sign_your_username: ~~~~+ ___ ' +
'Wiki_markup: {{+}} |+ [+]  [[+]] [[Category:+]] #REDIRECT_[[+]]  <s>+</s> <sup>+</sup> <sub>+</sub> <code>+</code> <blockquote>+</blockquote> <ref>+</ref> {{Reflist}}+ <references/>+ <includeonly>+</includeonly> <noinclude>+</noinclude> {{DEFAULTSORT:+}} <nowiki>+ __ ' +
'Symbols: ~|¡¿†‡↔↑↓•¶ #¹²³½⅓⅔¼¾⅛⅜⅝⅞∞ ‘“’” ¢$€₦£¥ ♠♣♥♦ __ ';


function createEditTools(){

	var box = document.getElementById('editpage-specialchars');
	if (!box) return;

	//additional sets of symbols
	if (!window.noAdditionalChars){
	charinsert += 'Characters: ÁáĆćÉéÍíĹĺŃńÓóŔশÚúÝýŹź ÀàÈèÌìÒòÙù ÂâĈĉÊêĜĝĤĥÎîĴĵÔôŜŝÛûŴŵŶŷ ÄäËëÏïÖöÜüŸÿ ß ÃãẼẽĨĩÑñÕõŨũỸỹ ÇçĢģĶķĻļŅņŖŗŞşŢţ Đđ Ůů ǍǎČčĎďĚěǏǐĽľŇňǑǒŘřŠšŤťǓǔŽž ĀāĒēĪīŌōŪūȲȳǢǣ ǖǘǚǜ ĂăĔĕĞğĬĭŎŏŬŭ ĊċĖėĠġİıŻż ĄąĘęĮįǪǫŲų ḌḍḤḥḶḷḸḹṂṃṆṇṚṛṜṝṢṣṬṭ Łł ŐőŰű Ŀŀ Ħħ ÐðÞþ Œœ ÆæØøÅå Əə _• {{Unicode|+}} __ ';
	charinsert += 'Greek: ΆάΈέΉήΊίΌόΎύΏώ ΑαΒβΓγΔδ ΕεΖζΗηΘθ ΙιΚκΛλΜμ ΝνΞξΟοΠπ ΡρΣσςΤτΥυ ΦφΧχΨψΩω _• {{Polytonic|+}} __ ';
	charinsert += 'Cyrillic: АаБбВвГг ҐґЃѓДдЂђ ЕеЁёЄєЖж ЗзЅѕИиІі ЇїЙйЈјКк ЌќЛлЉљМм НнЊњОоПп РрСсТтЋћ УуЎўФфХх ЦцЧчЏџШш ЩщЪъЫыЬь ЭэЮюЯя __ ';  
	charinsert += 'IPA: _ t̪+ d̪+ ʈɖɟɡɢʡʔ ɸʃʒɕʑʂʐʝɣʁʕʜʢɦ ɱɳɲŋɴ ʋɹɻɰ ʙʀɾɽ ɫɬɮɺɭʎʟ ɥʍɧ ɓɗʄɠʛ ʘǀǃǂǁ ɨʉɯ ɪʏʊ ɘɵɤ əɚ ɛɜɝɞʌɔ ɐɶɑɒ ʰʷʲˠˤⁿˡ ˈˌːˑ̪ _•  {{IPA|+}} __ '
	}

	//remove current Edittools -  for demonstration only 
	while (box.firstChild) box.removeChild(box.firstChild);
	
	var tokens, i, token, n
	var paragraph = document.createElement('small');
	tokens = charinsert.split(' ');
	for (i in tokens) {
		token = tokens[i];
		n = token.indexOf('+');
		if (n >= 0){ //a tag 
			addInsLink(paragraph, token.substring(0,n), token.substring(n+1));
			addnbsp(paragraph);	
		}else if (token == '_')
			addnbsp(paragraph);	
		else if (token == '__')
			paragraph.appendChild(document.createElement('br'))
		else if (token == '___')
			paragraph.appendChild(document.createElement('hr'))
		else if (token.charAt(token.length-1) == ':')  // : at the end means just text
			addBoldText(paragraph, token)
		else if (token.charAt(0) == '_')  //_ in the beginning also means text
			addBoldText(paragraph, token.substring(1))
		else{ //a string of  characters
				for (var i=0; i < token.length; i++)
					addInsLink(paragraph, token.charAt(i), '');
				addnbsp(paragraph);	
		}			
		paragraph.appendChild(document.createTextNode(' '));
	}
	box.appendChild(paragraph);
}

function addInsLink(parent, tagOpen, tagClose){
	tagOpen = tagOpen.replace(/_/g,' ');
	var a = document.createElement('a');
	a.appendChild(document.createTextNode(tagOpen + tagClose));
	a.href = "javascript:insertTags('" + tagOpen + "','" + tagClose + "','')";
	parent.appendChild(a);
	parent.appendChild(document.createTextNode(' '));
}	

function addBoldText(parent, text){
	var b = document.createElement('b'); 
	b.appendChild(document.createTextNode(text.replace(/_/g,' ')));
	parent.appendChild(b);
	parent.appendChild(document.createTextNode(' '));
}	

function addnbsp(parent){
	parent.appendChild(document.createTextNode(' \u00a0 '));
}

addOnloadHook(createEditTools);

if (document.editform) createEditTools(); //for demonstration only

//</nowiki>