function openWindow(mypage, myname, w, h, scroll) 
{
	var winl = (screen.width - w) / 2;
	var wint = (screen.height - h) / 2;
	winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
	gmtWindow = window.open(mypage, myname, winprops)
	if (parseInt(navigator.appVersion) >= 4) { gmtWindow.window.focus(); }
}

function find_all_checkbox_values(what, checkbox_name) {
	parameters = '';
	what = document.getElementById(what);
	for (var i=0, j=what.elements.length; i<j; i++) {
		if(what.elements[i].name == checkbox_name && what.elements[i].checked == true) {
			parameters += "&" + what.elements[i].name + "=" + encodeURI(what.elements[i].value);
		}
	}
	return parameters;
}

function find_all_form_elements(form_name) {
	parameters = '';
	what = document.getElementById(form_name);
	for (var i=0, j=what.elements.length; i<j; i++) {
		if( (what.elements[i].type == 'radio' || what.elements[i].type == 'checkbox') && what.elements[i].checked != true) {
		} else {
			parameters += "&" + what.elements[i].name + "=" + encodeURI(what.elements[i].value);
		}
	}
	return parameters;
}

function modSelection() {
	var userSelection;
	if (window.getSelection) {
		userSelection = window.getSelection();
	} else if (document.selection) { // should come last; Opera!
		userSelection = document.selection.createRange();
	}
}


function getSelection(ta) { 
	var bits = [ta.value,'','','']; 

	ta.focus();   
	if(document.selection) { 
		var vs = '#$%^%$#';
        var tr=document.selection.createRange()
        if(tr.parentElement()!=ta) return null;
        bits[2] = tr.text;
        tr.text = vs;
        fb = ta.value.split(vs);
        tr.moveStart('character',-vs.length);
        tr.text = bits[2];
        bits[1] = fb[0];
        bits[3] = fb[1];
	} else { 
		if(ta.selectionStart == ta.selectionEnd) 
			return null;
        //bits=(new RegExp('([\x00-\xff]{'+ta.selectionStart+'})([\x00-\xff]{'+(ta.selectionEnd - ta.selectionStart)+'})([\x00-\xff]*)', 'gmi')).exec(ta.value);
	//tmp = new RegExp("(.{" + ta.selectionStart + "})(.{" + (ta.selectionEnd - ta.selectionStart) + "})(.*)", "m");
	//alert(tmp);
	//alert(ta.value);
        //bits=tmp.exec(ta.value);
	bits = [ta.value, ta.value.substr(0, ta.selectionStart), ta.value.substr(ta.selectionStart, (ta.selectionEnd - ta.selectionStart)), ta.value.substr(ta.selectionEnd, ta.value.length)];
	//alert(bits);
      }
     return bits;
  }

function matchPTags(str)
  { str = ' ' + str + ' ';
    ot = str.split(/\[[B|U|I].*?\]/i);
    ct = str.split(/\[\/[B|U|I].*?\]/i);
    return ot.length==ct.length;
  }

function addPTag(ta,pTag) {
	bits = getSelection(ta);
    if(bits) { 
		if(!matchPTags(bits[2])) {
			alert('Избраният текст съдържа незатворени маркери.\nМоля, изберете текста отново.');
			return;
		}
		ta.value = bits[1] + '[' + pTag + ']' + bits[2] + '[/' + pTag + ']' + bits[3];
	}
}