   	
// Insert begin & end round selection
function extra_insertTags(begin, end, textarea) {
  extra_insertTags2textarea(begin, end, textarea);
  return false;
}

function extra_insertTags2textarea(begin, end, textarea) {
  extra_surroundText(begin, end, textarea);
  return false;
}

// Insert simple tags (like [b], [i], [u]...)
function extra_insertSimpleTags(tag_name, textarea) {
  window.document.getElementById('hidden_div').style.display = 'none';
  extra_insertTags('[' + tag_name + ']', '[/' + tag_name + ']', textarea);
  return false;
}

// Insert single tags (like [hr])
function extra_insertSingleTag(tag_name, textarea) {
  extra_insertTags('[' + tag_name + ']', '', textarea);
  return false;
}

// Surrounds the selected text with text1 and text2.
function extra_surroundText(text1, text2, textarea) {
	textarea = window.document.getElementById(textarea);
	// Can a text range be created?
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange) {
		var caretPos = textarea.caretPos, temp_length = caretPos.text.length;
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;

		if (temp_length == 0) {
			caretPos.moveStart("character", -text2.length);
			caretPos.moveEnd("character", -text2.length);
			caretPos.select();
		}
		else
		textarea.focus(caretPos);
	}
	// Mozilla text range wrap.
	else if (typeof(textarea.selectionStart) != "undefined") {
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var newCursorPos = textarea.selectionStart;
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text1 + selection + text2 + end;

		if (textarea.setSelectionRange) {
			if (selection.length == 0) textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
			else textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
			textarea.focus();
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put them on the end, then.
	else {
		textarea.value += text1 + text2;
		textarea.focus(textarea.value.length - 1);
	}
}
// View code-highlight_1 list
function extra_codeList(textarea) {
  ////xbb_1_buttonClick();
  var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
    div.style.display = 'none';
    return false;
  }
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
  var html = '';
  for (var i = 0; xbb_code_names[i]; ++i) {
    html += '<a href="#" class="opt" onclick="top.extra_insertSimpleTags(\''
        + xbb_code_names[i][0] + '\',\''+textarea+'\');return false;">' + xbb_code_names[i][1] + '</a><br />';
  }
  div.innerHTML = html;
  div.style.display = '';
  return false;
}

// View font-size list
function extra_sizeList(textarea) {
  ////xbb_1_buttonClick();
  var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
    div.style.display = 'none';
    return false;
  }
  var coords = top.extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
  var html = '';
  for (var i = 1; i <= 7; ++i) {
    html += '<a href="#" class="opt" onclick="top.extra_insertSize(' + i
        + ', \''+textarea+'\');return false;"><font size="' + i + '">Font size '
        + i + '</font></a><br />';
  }
  div.innerHTML = html;
  div.style.display = '';
  return false;
}
// Insert tag [size]
function extra_insertSize(size, textarea) {
	begin = '[size=' + size + ']';
	end = '[/size]';
  document.getElementById('hidden_div').style.display = 'none';
	extra_insertTags(begin, end, textarea);
	return false;
}

// View color palette
function extra_colorList(textarea) {
  ////xbb_1_buttonClick();
  var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
    div.style.display = 'none';
    return false;
  }
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
  var d=window.document;
	var Columns=16;
	s=d.getElementById('ta3').value;
  a=s.match(/#(\w{6})/ig);    //for  hex- #CCCCCC,#999999,#666666,...
  j=0; s2='<table bgColor=black>';
  while(a[j]){
		s2+='<tr>';
	  for(i=0;i<Columns;i++)if(a[j])s2+='<td'
	  	+'  style=\"font-size:4px;cursor:pointer;background-color:'+a[j++]+';\" width=\"4\" height=\"5\" onclick=\"top.extra_insertColor(this, \''+textarea+'\');return false;\"></td>';
	    s2+='</tr>';
  }
  div.innerHTML = s2+'</table>';
  div.style.display = '';
  return false;
}

// Insert tag [color]
function extra_insertColor(div, textarea) {
	var color = div.style.backgroundColor;
	color = rgbNormal(color);
  begin = '[color=' + color + ']';
  end = '[/color]';
  document.getElementById('hidden_div').style.display = 'none';
	extra_insertTags(begin, end, textarea);
	return false;
}

// View font list 
function extra_fontList(textarea) {
	//xbb_1_buttonClick();
	var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
        div.style.display = 'none';
        return false;
  }
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
  var html = '';
  for (var i = 0; fonts[i]; ++i) {
    html += '<a href="#" class="opt" style="font-family:'
        + fonts[i] + '" onclick="top.extra_insertFont(\'' + fonts[i]
        + '\', \'' +textarea+ '\');return false;">' + fonts[i] + '</a><br />';
  }
  div.innerHTML = html;
  div.style.display = '';
  return false;
}

// Insert tag [font]
function extra_insertFont(font, textarea) {
  begin = '[font="' + font + '"]';
  end = '[/font]';
  document.getElementById('hidden_div').style.display = 'none';
	extra_insertTags(begin, end, textarea);
	return false;
}

// View image list
function extra_imageList(img_1str, dom_res, img_1str_m, textarea) {
	//xbb_1_buttonClick();
	var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
    div.style.display = 'none';
    return false;
  }
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
	var images = img_1str.split("##");
	var images_m = img_1str_m.split("##");
  var html = '';
  var cnt = 1;
  for (var i = 0; images[i]; ++i) {
    html += "<img src='"+dom_res+"/"+images[i]+"' style='padding:1px;' onclick='extra_insertImg(\""+dom_res+"/"+images_m[i]+"\", \""+textarea+"\");return false;' onmouseover='this.style.cursor=\"pointer\"'>";
    if (cnt == 3) {
    	html += "<br>";
    	cnt = 0;
    }
    ++cnt;
  }
  div.innerHTML = html;
  div.style.display = '';
  return false;
}

// Insert tag [img]
function extra_insertImg(src, textarea) {
  begin = '[img]'+src;
  end = '[/img]';
  document.getElementById('hidden_div').style.display = 'none';
	extra_insertTags(begin, end, textarea);
	return false;
}
// View video list
function extra_videoList(vid_str, dom_res, vid_str_v, textarea) {
	//xbb_1_buttonClick();
	var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
    div.style.display = 'none';
    return false;
  }
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
	var videos = vid_str.split("##");
	var videos_v = vid_str_v.split("##");
  var html = '';
  var cnt = 1;
  for (var i = 0; videos[i]; ++i) {
    html += "<img src='"+dom_res+"/"+videos[i]+"' style='padding:1px;' onclick='extra_insertVid(\""+dom_res+"/"+videos_v[i]+"\", \""+textarea+"\");return false;' onmouseover='this.style.cursor=\"pointer\"' width=\"100\" height=\"100\">";
    if (cnt == 3) {
    	html += "<br>";
    	cnt = 0;
    }
    ++cnt;
  }
  div.innerHTML = html;
  div.style.display = '';
  return false;
}

// Insert tag [video]
function extra_insertVid(src) {
  begin = '[video]' + src;
  end = '[/video]';
  document.getElementById('hidden_div').style.display = 'none';
	extra_insertTags(begin, end, textarea);
	return false;
}

// Insert tags [url]
function extra_insertLink(tag, text, textarea) {
	//xbb_1_buttonClick();
	if ('none' != document.getElementById('hidden_div').style.display) {
    document.getElementById('hidden_div').style.display = 'none';
  }
	var url = prompt(text, "");
	if (! url) { return false; }
  extra_insertTags('[' + tag + ']' + url + '[/' + tag + ']', '', textarea);
  return false;
}
// View smile list
function extra_smilesList(temp_url, textarea) {
  ////xbb_1_buttonClick();
  var div = document.getElementById('hidden_div');
	if ('none' != div.style.display) {
        div.style.display = 'none';
        return false;
	}
  var coords = extra_getCoords(document.getElementById('img_'+textarea+'_code'));
  div.style.left = coords['left'] + 'px';
  div.style.top = coords['top'] + coords['height'] + 'px';
  var html = '<table border="0" cellpadding="0" cellspacing="1">';
  for (var i = 0; xbb_smiles[i]; ++i) {
      html += '<tr>';
      for (var j = 0; xbb_smiles[i][j]; ++j) {
          html += '<td height="20" width="20" ><a href="#" '
              + 'onclick="top.extra_insertSmile(\'' + xbb_smiles[i][j][2]
              + '\', \'' +textarea+ '\'); return false;"><img alt="' + xbb_smiles[i][j][1]
              + '" src="'+temp_url+'/images/buttons/smiles/' + xbb_smiles[i][j][0]
              + '" border="0" /></a></td>';
      }
      html += '</tr>';
  }
  html += '</table>';
  div.innerHTML = html;
  div.style.display = '';
  return false;
}
// Insert smiles
function extra_insertSmile(smile, textarea) {
	//xbb_1_buttonClick();
	document.getElementById('hidden_div').style.display = 'none';
  extra_insertTags(smile, '', textarea);
  return false;
}
// insert tags with attributes, like [tag align=center][/tag]
function extra_insertTagWithAttribute(tag, text, textarea) {
    //xbb_1_buttonClick();
    var begin;
    var end;
    var val = prompt(text, "");
    begin = '[' + tag;
    if (val) { begin += '="' + val + '"'; }
    begin += ']';
    end = '[/' + tag + ']';
    extra_insertTags(begin, end, textarea);
    return false;
}
//preview blog
function extra_submit(m_id, textarea) {
		xajax_modelBlogShow(m_id, 3, 0, 0, 1, document.getElementById(textarea).value);
		return false;
}
// Determine position & size of element
function extra_getCoords(element) {
    var left = element.offsetLeft;
    var top = element.offsetTop;
    for (var parent = element.offsetParent; parent; parent = parent.offsetParent) {
        left += parent.offsetLeft;
        top += parent.offsetTop;
    }
    return {
    	left: left,
    	top: top,
    	width: element.offsetWidth,
    	height: element.offsetHeight
    };
}
function xbb_1_buttonClick() {
  return false;
}