// version beta-2007-12-09
function $(element)
{
  if (typeof element == 'string') element = document.getElementById(element);
  return element;
}
function show()
{
  var element = $(arguments[0]);
  if (element && element.style) element.style.display = 'block';
  return false;
}
function showi()
{
  var element = $(arguments[0]);
  if (element && element.style) element.style.display = 'inline';
  return false;
}
function hide()
{
  var element = $(arguments[0]);
  if (element && element.style) element.style.display = 'none';
  return false;
}
function toggle()
{
  var element = $(arguments[0]);
  if ($(element) && $(element).style)
  {
    var s = $(element).style.display;
    if (s == '' || s == 'none') show(element);
    else hide(element);
  }
}
function esq(v)
{
  return v.replace("'", "\\'");
}
function ajax()
{
  var http = false;
  if (window.XMLHttpRequest)
  {
    http = new XMLHttpRequest();
  }
  else
  {
    try
    {
      http = new ActiveXObject('Msxml2.XMLHTTP');
    }
    catch (e)
    {
      try
      {
        http = new ActiveXObject('Microsoft.XMLHTTP');
      }
      catch (e) {}
    }
  }
  return http;
}
// ie specifics
function isIE()
{
  return (navigator.userAgent.toLowerCase().indexOf('msie') != -1);
}
function mouseX()
{
  event = arguments[0];
  return event.pageX || (event.clientX +
    (document.documentElement.scrollLeft || document.body.scrollLeft));
}
function mouseY()
{
  event = arguments[0];
  return event.pageY || (event.clientY +
    (document.documentElement.scrollTop || document.body.scrollTop));
}
function pageScrollX()
{
  return document.body.scrollLeft || document.documentElement.scrollLeft;
}
function pageScrollY()
{
  return document.body.scrollTop || document.documentElement.scrollTop;
}
function elementX()
{
  var obj = $(arguments[0]);
  var curleft = 0;
  if (obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curleft += obj.offsetLeft;
      obj = obj.offsetParent;
    }
  }
  else if (obj.x)
    curleft += obj.x;
  return curleft;
}
function elementY()
{
  var obj = $(arguments[0]);
  var curtop = 0;
  if(obj.offsetParent)
  {
    while (obj.offsetParent)
    {
      curtop += obj.offsetTop;
      obj = obj.offsetParent;
    }
  }
  else if (obj.y)
    curtop += obj.y;
  return curtop;
}
// smart tags (based on wikibits)
function insertTags(tagOpen, tagClose, sampleText) {
  var txtarea;
  if (document.editform) {
    txtarea = document.editform.pageText;
  }
  else {
    var areas = document.getElementsByTagName('textarea');
    txtarea = areas[0];
  }
  var selText, isSample = false;
  if (document.selection && document.selection.createRange) { // IE
    if (document.documentElement && document.documentElement.scrollTop)
      var winScroll = document.documentElement.scrollTop
    else if (document.body)
      var winScroll = document.body.scrollTop;
    txtarea.focus();
    var range = document.selection.createRange();
    selText = range.text;
    checkSelectedText();
    range.text = tagOpen + selText + tagClose;
    if (isSample && range.moveStart) {
      if (window.opera) tagClose = tagClose.replace(/\n/g,'');
      range.moveStart('character', - tagClose.length - selText.length);
      range.moveEnd('character', - tagClose.length);
    }
    range.select();
    if (document.documentElement && document.documentElement.scrollTop)
      document.documentElement.scrollTop = winScroll
    else if (document.body)
      document.body.scrollTop = winScroll;
  }
  else if (txtarea.selectionStart || txtarea.selectionStart == '0') { // Mozilla
    var textScroll = txtarea.scrollTop;
    txtarea.focus();
    var startPos = txtarea.selectionStart;
    var endPos = txtarea.selectionEnd;
    selText = txtarea.value.substring(startPos, endPos);
    checkSelectedText();
    txtarea.value = txtarea.value.substring(0, startPos)
      + tagOpen + selText + tagClose
      + txtarea.value.substring(endPos, txtarea.value.length);
    if (isSample) {
      txtarea.selectionStart = startPos + tagOpen.length;
      txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
    }
    else {
      txtarea.selectionStart = startPos + tagOpen.length
        + selText.length + tagClose.length;
      txtarea.selectionEnd = txtarea.selectionStart;
    }
    txtarea.scrollTop = textScroll;
  }
  function checkSelectedText(){
    if (!selText && tagOpen == '[[picture:' && sampleText != 'picture title') {
      tagOpen += sampleText + tagClose;
      sampleText = ''; tagClose = '';
    }
    if (selText == 'picture title') {
      tagOpen = ''; tagClose = ''; selText = sampleText;
    }
    else {
      if (!selText) {
        selText = sampleText; isSample = true;
      }
      else if (selText.charAt(selText.length - 1) == ' ') {
        selText = selText.substring(0, selText.length - 1);
        tagClose += ' '
      }
    }
  }
}

