var foc='none';					 // dla proverski gde nahoditsa focus (ctobi videlat tolko v textarea).

function getSel()				// funkcija uznajot videlenie vsemi vozmozhnimi komandami
{
	var txt = '';
	txt = document.selection.createRange().text;
	theSelection = txt;
	return 0;
}


function parsetextbox(textboxvalue, theSelection, tagname) {
	// dannaja funkcija prosmatrivaet znachenije texta na pravilnost rasstavlenija tagov i ispravlaet ego
	// pri neobhodimosti.
	
	tmpStrPos_open = theSelection.search('<' + tagname + '>');			// pozicija v videlennoj stroke use imejushegosa otkrivajushegosa taga.
	tmpStrPos_close = theSelection.search('</' + tagname + '>');		// pozicija v videlennoj stroke use imejushegosa zakrivajushegosa taga.
	lastSimbolPos = textboxvalue.length - 1;
	
	tagPos_open = 0;				// ispolzuem dla proverki situacij
	tagPos_close = 0;				// tipa <b> <b> </b> </b>.

	if ((tmpStrPos_open >= 0) && (theSelection.charAt(tmpStrPos_open-1) != '/') ||
		(tmpStrPos_close >= 0) && (theSelection.charAt(tmpStrPos_close-1) != '/')) {
		// esli v videlennoj stroke mi vstrechajem <tagname> && </tagname>, togda mi dolzni ih udalit
		
		tagPos_open = textboxvalue.indexOf('<' + tagname + '>', tagPos_open);
		tagPos_close = textboxvalue.indexOf('</' + tagname + '>', tagPos_close);
		if ((theSelection.substring(0,(tagname.length+2))==('<'+tagname+'>')) &&
			(theSelection.substring(theSelection.length-(tagname.length+3),theSelection.length)==('</'+tagname+'>'))) {
			textboxvalue = textboxvalue.substring(0,tagPos_open) + textboxvalue.substring(tagPos_open+((tagname.length+2)*2),tagPos_close) + textboxvalue.substring(tagPos_close+((tagname.length+3)*2),lastSimbolPos+1);
		}
		else {
			while ((tagPos_open >= 0) && (tagPos_close >= 0)) {
				tagPos_open = textboxvalue.indexOf('<' + tagname + '>', tagPos_open+1);
				
				if ((tagPos_open < tagPos_close) && (tagPos_open >= 0)) {
					// udalaem <tagname> nachinajushijsa na pozicii tagPos_open, a takze </tagname> na pozicii tagPos_close.
					
					textboxvalue = textboxvalue.substring(0,tagPos_open) + textboxvalue.substring(tagPos_open+(tagname.length+2),tagPos_close) + textboxvalue.substring(tagPos_close+(tagname.length+3),lastSimbolPos+1);
					//break;
				}
				
				tagPos_close = textboxvalue.indexOf('</' + tagname + '>', tagPos_close+1);
			}
		}
	}
	else if ((tmpStrPos_open == -1) && (tmpStrPos_close == -1)) {
		// esli v videlennoj stroke u nas netu <tagname> && </tagname>, togda mi dolzni idti po vsemu textu,
		// i v slucae nahozdenija 2uh <tagname> podrad vtoroj zamenaem na </tagname>, a v slucae nahozdenija
		// 2h </tagname> podrad, pervij zamenaem na <tagname>.
		
		tagPos_open = textboxvalue.indexOf('<' + tagname + '>', tagPos_open);
		tagPos_close = textboxvalue.indexOf('</' + tagname + '>', tagPos_close);
		tagPos_open2 = tagPos_open;
		tagPos_close2 = tagPos_close;
		
		while ((tagPos_open >= 0) && (tagPos_close >= 0)) {
			tagPos_open = textboxvalue.indexOf('<' + tagname + '>', tagPos_open+1);
			
			if ((tagPos_open < tagPos_close) && (tagPos_open != -1)) {
				// zamenaem <tagname> nachinajushijsa na pozicii tagPos_open na </tagname>
				// zamenaem </tagname> nachinajushijsa na pozicii tagPos_close na <tagname>.
				//alert(textboxvalue.substring(tagPos_open+1,tagPos_close+1));
				textboxvalue = textboxvalue.substring(0,tagPos_open+1) + "/" + textboxvalue.substring(tagPos_open+1,tagPos_close+1) + textboxvalue.substring(tagPos_close+2,lastSimbolPos+1);
				break;
				//textboxvalue = textboxvalue.substring(0,tagPos_open+1) + "/" + textboxvalue.substring(tagPos_open+1,tagPos_close+1) + textboxvalue.substring(tagPos_close+3,lastSimbolPos+1);
			}
			
			tagPos_close = textboxvalue.indexOf('</' + tagname + '>', tagPos_close+1);
		}
		while (tagPos_open2 >= 0) {
			if (textboxvalue.substring(tagPos_open2+(tagname.length+2),tagPos_open2+(tagname.length+2)+(tagname.length+3)) == ('</'+tagname+'>')) {
				textboxvalue = textboxvalue.substring(0,tagPos_open2) + textboxvalue.substring(tagPos_open2+(tagname.length+2)+(tagname.length+3),lastSimbolPos+1);
			}
			tagPos_open2 = textboxvalue.indexOf('<' + tagname + '>', tagPos_open2+1);
		}	
			
	}/*
	else {
		// nado takze razobrat pogranicnie situacii, kogda videlenie nchinaesa ili zakancivaetsa vnutri tega 
		
			
	}*/
	
	//theSelection = theSelection.replace('</B>','<B>');
	return textboxvalue;
}

function addtag(tagname) {
	// dannaja funkcija dobavlaet v text neobhodimie descriptori.	

	if (theSelection) {
		// esli u nas videlen hot kakoj-to text.
		
		//if (tagname.substring(0,1) == "a") {
			document.selection.createRange().text = '<' + tagname + '>' + theSelection + '</a>';
		//	tagname_close
		//}
		//else {
			document.selection.createRange().text = '<' + tagname + '>' + theSelection + '</' + tagname + '>';
		//}

		document.editor._message.value = parsetextbox(document.editor._message.value, theSelection, tagname);
		
		theSelection = '';
	}
	return 0;
}
