﻿function showImage(event, imageId)
{
	var offset = 20;
	var image = document.getElementById(imageId);
	if (image)
	{
		var left;
		var top;
		if (navigator.appName == "Netscape")
		{
			left = offset - 3 + event.pageX;
			top = offset - 3 + event.pageY;
		}
		else
		{
			left = offset + 8 + getAbsolutePosition(image.parentElement).x + event.offsetX;
			top = offset + 8 + getAbsolutePosition(image.parentElement).y + event.offsetY;
		}
		image.style.left = left + "px";
		image.style.top = top + "px";
		image.style.display = "block";
	}
}

function hideImage(event, imageId)
{
	var image = document.getElementById(imageId);
	if (image)
		image.style.display = "none";
}

function getAbsolutePosition(element)
{
	var r = { x: element.offsetLeft, y: element.offsetTop };
	if (element.offsetParent)
	{
		var tmp = getAbsolutePosition(element.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
}

function pushButton(img)
{
	img.style.borderWidth = "1px";
}

function releaseButton(img)
{
	img.style.borderWidth = "0px";
}

function clickOnEnter(event, btnId)
{
  var input = getEventTarget(event);
  var btn = document.getElementById(btnId);
  if (event.keyCode == 13 && input.value != "")
  {
    btn.click();
		event.cancelBubble = true;
    return false;
  }
  return true;
}

function dxClickOnEnter(event, btnInst)
{
  var input = getEventTarget(event);
  if (event.keyCode == 13 && input.value != "")
  {
    btnInst.DoClick();
		event.cancelBubble = true;
    return false;
  }
  return true;
}

function postBackOnEnter(event, pb)
{
  var input = getEventTarget(event);
  if (event.keyCode == 13 && input.value != "")
  {
    eval(pb);
		event.cancelBubble = true;
    return false;
  }
  return true;
}

function userButtonMouseOver(event)
{
  var button = getEventTarget(event);
  button.className = "UserButtonHover";
}
function userButtonMouseOut(event)
{
  var button = getEventTarget(event);
  button.className = "UserButton";
}

/***
* Misc crossbrowser stuff
***/
function getEventTarget(event)
{
  return !event.srcElement ? event.target : event.srcElement;
}

function isDisabled(element)
{
  if (element.disabled)
    return true;
  var disabled = element.attributes["disabled"];
  if (disabled && disabled.value == "disabled")
    return true;
  return false;
}

/***
* Crossbrowser textarea selection tools
***/
function getSelectionText(textareaId)
{
	var textarea = document.getElementById(textareaId);
	textarea.focus();
	if (document.selection)
		return document.selection.createRange().text;
	else if (textarea.selectionStart || textarea.selectionStart == '0')
	{
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		return textarea.value.substring(start, end);
	}
	else
	  return "";
}

function setSelectionText(textareaId, text)
{
	var textarea = document.getElementById(textareaId);
	textarea.focus();
	if (document.selection)
		document.selection.createRange().text = text;
	else if (textarea.selectionStart || textarea.selectionStart == '0')
	{
		var start = textarea.selectionStart;
		var end = textarea.selectionEnd;
		textarea.value = 
			textarea.value.substring(0, start) + text + 
			textarea.value.substring(end, textarea.value.length);
		textarea.selectionStart = start + text.length;
		textarea.selectionEnd = textarea.selectionStart;
	}
	else
		textarea.value += text;
}

function moveSelection(textareaId, dstart, dend)
{
	var textarea = document.getElementById(textareaId);
	textarea.focus();
	if (document.selection)
	{
		var range = document.selection.createRange();
		range.moveStart('Character', dstart);
		range.moveEnd('Character', dend);
		range.select();
	}
	else if (textarea.selectionStart || textarea.selectionStart == '0')
	{
		textarea.selectionStart += dstart;
		textarea.selectionEnd += dend;
	}
}

function collapseSelection(textareaId)
{
	var textarea = document.getElementById(textareaId);
	textarea.focus();
	if (document.selection)
	{
		var range = document.selection.createRange();
		range.collapse(false);
		range.select();
	}
	else if (textarea.selectionStart || textarea.selectionStart == '0')
		textarea.selectionStart = textarea.selectionEnd;
}

/***
* String tools
***/
function split(val, ch)
{
  var arr = new Array();
  for (var lastIndex = 0; lastIndex != -1;)
  {
    var index = val.indexOf(ch, lastIndex);
    var item = index != -1 ? val.substring(lastIndex, index) : val.substring(lastIndex);
    arr.push(item)	      
    lastIndex = index == -1 ? index : index + 1;
  }
  return arr;
}

function endsWith(str, sub)
{
  var start = str.length - sub.length;
  if (start < 0)
    return false;
  return str.substring(start, str.length).toLowerCase() == sub.toLowerCase();
}

function htmlEncode(str)
{
  var div = document.createElement('div');
  var text = document.createTextNode(str);
  div.appendChild(text);
  return div.innerHTML;
}

function trim(s)
{
	return rtrim(ltrim(s));
}

function ltrim(s)
{
	var l = 0;
	while(l < s.length && s[l] == ' ')
	  l++;
	return s.substring(l, s.length);
}

function rtrim(s)
{
	var r = s.length -1;
	while(r > 0 && s[r] == ' ')
	 r--;
	return s.substring(0, r + 1);
}

/***
* Web Space name validation
***/
function validateName(name, invalid, allowSpace)
{
  if (!name)
    return true;
  for (var i=0; i<invalid.length; i++)
  {
    if (name.indexOf(invalid[i]) != -1)
      return false;
  }
  if (allowSpace)
    name = name.replace(/ /g, "")
  return escape(name) == name;
}
