function clipboard(id)
{
	copyToClipboard (document.getElementById(id))
}

function copyToClipboard (e)
{
	e.focus()
	e.select()
	
	if (window.clipboardData)
	{
		var r = clipboardData.setData('Text', e.value)
		return 1
	}
	else
		return 0
}

function handle (el, evt, f)
{
  if (el.attachEvent)
    el.attachEvent ('on' + evt, f)
  else
    el.addEventListener (evt, f, false)
    
  return { e: el, fun : f, name : evt }
}

function cancelHandle (h)
{
  if (h.e.detachEvent)
	h.e.detachEvent ('on' + h.name, h.fun)
  else
    h.e.removeEventListener (h.name, h.fun, false)
}

function foreachClass (e, f)
{
	var arr = e.className.split (' ')
	for (var i = 0, n = arr.length; i != n; i++)
		f (arr[i])
}

function removeClass (e, r)
{
	if (!e) return
	var result = ''
	
	foreachClass (e, function (c) {
		if (c != r)
			result += (((result == '') ? '' : ' ') + c)
	})
	
	e.className = result
}

function classPresent (e, r)
{
	if (!e) return false
	var result = false
	
	foreachClass (e, function (c) {
		if (c == r)
			result = true
	})

	return result
}

function addClass (e, c)
{
	if (!e) return
	if (c != '' && !classPresent (e, c))
		e.className += (' ' + c)
}

function swapClass (e, ca, cb)
{
	if (!e) return
	if (ca == '' || classPresent (e, ca))
	{
		removeClass (e, ca)
		addClass (e, cb)
	}
	else if (cb == '' || classPresent (e, cb))
	{
		removeClass (e, cb)
		addClass (e, ca)
	}
}

function replaceClass (e, ca, cb)
{
	if (classPresent (e, ca))
		swapClass (e, ca, cb)
}
