// Define document.getElementById for Internet Explorer 4.
if (typeof(document.getElementById) == "undefined")
	document.getElementById = function (id)
	{
		// Just return the corresponding index of all.
		return document.all[id];
	}
	
// Replaces the currently selected text with the passed text.
function replaceText(text, textarea)
{
	// Attempt to create a text range (IE).
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		caretPos.select();
	}
	// Mozilla text range replace.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var begin = textarea.value.substr(0, textarea.selectionStart);
		var end = textarea.value.substr(textarea.selectionEnd);
		var scrollPos = textarea.scrollTop;

		textarea.value = begin + text + end;

		if (textarea.setSelectionRange)
		{
			textarea.focus();
			textarea.setSelectionRange(begin.length + text.length, begin.length + text.length);
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put it on the end.
	else
	{
		textarea.value += text;
		textarea.focus(textarea.value.length - 1);
	}
}

function insertTag(tag, textarea)
{
	wrapText("["+tag+"]", "[/"+tag+"]", textarea);
}

function wrapText(text1, text2, textarea)
{
	// Can a text range be created?
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos;
		
		//  remove white space at the beginning and end of selection
		selection = caretPos.text;
		var spacebefore = 0;
		var spaceafter = 0;
		while (selection.substring(0,1) == ' ') 
		{
			selection = selection.substring(1);
			spacebefore = spacebefore + 1;
		}
		while (selection.substring(selection.length-1,selection.length) == ' ')
		{
			selection = selection.substring(0,selection.length-1);
			spaceafter = spaceafter + 1;
		}
		
		if(spacebefore > 0 ) movedStart = caretPos.moveStart("character", +spacebefore);
		if(spaceafter > 0 ) movedEnd = caretPos.moveEnd ("character", -spaceafter);
		
		lenght = caretPos.text.length;
		
		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' '
		? text1 + caretPos.text + text2 + ' '
		: text1 + caretPos.text + text2;
		
		if (lenght==0)
		{
			n = text2.length;
			caretPos.moveStart("character", -n);
			caretPos.moveEnd ("character", -n);
		}
		if (lenght > 0)
		{
			n = text1.length + text2.length + length;
			caretPos.moveStart("character", -n);
		}
		caretPos.select();
	}
	//  Mozilla text range wrap.
	else if (typeof(textarea.selectionStart) != "undefined")
	{
		var start =   textarea.selectionStart;
		var finish =  textarea.selectionEnd;
		var begin =     textarea.value.substr(0, start);
		var selection = textarea.value.substr(start, finish - start);
		var end = textarea.value.substr(finish);
		var newCursorPos = start;
		var scrollPos = textarea.scrollTop;
		
		//  remove white space at the beginning and end of selection
		var spacebefore = 0;
		var spaceafter = 0;
		while (selection.substring(0,1) == ' ')
		{
			selection = selection.substring(1);
			spacebefore = spacebefore + 1;
		}
		while (selection.substring(selection.length-1,selection.length) == ' ')
		{
			selection = selection.substring(0,selection.length-1);
			spaceafter = spaceafter + 1;
		}
		
		if(spaceafter > 0  || spacebefore > 0 ) 
		{
			start = start + spacebefore;
			finish = finish - spaceafter ;
			var begin = textarea.value.substr(0, start);
			var selection = textarea.value.substr(start, finish - start);
			var end = textarea.value.substr(finish);
			var newCursorPos = start;
			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);
	}
}

/*
function wrapText(openTag, closeTag, textarea)
{
	// Can a text range be created?
	if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
	{
		var caretPos = textarea.caretPos;

		caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? openTag + caretPos.text + closeTag + ' ' : openTag + caretPos.text + closeTag;
		caretPos.select();
	}
	// 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 + openTag + selection + closeTag + end;

		if (textarea.setSelectionRange)
		{
			if (selection.length == 0)
				textarea.setSelectionRange(newCursorPos + openTag.length, newCursorPos + openTag.length);
			else
				textarea.setSelectionRange(newCursorPos, newCursorPos + openTag.length + selection.length + closeTag.length);
			textarea.focus();
		}
		textarea.scrollTop = scrollPos;
	}
	// Just put them on the end, then.
	else
	{
		textarea.value += openTag + closeTag;
		textarea.focus(textarea.value.length - 1);
	}
}
*/

function hasClass(obj) {
     var result = false;
     if (obj.getAttributeNode("class") != null) {
         result = obj.getAttributeNode("class").value;
     }
     return result;
  }   

function stripe(id) {

    var even = false;
    var evenColor = arguments[1] ? arguments[1] : "#fff";
    var oddColor = arguments[2] ? arguments[2] : "#eee";
  
    var table = document.getElementById(id);
    if (! table) return;
    
    var tbodies = table.getElementsByTagName("tbody");
    for (var h = 0; h < tbodies.length; h++) 
    {
      var trs = tbodies[h].getElementsByTagName("tr");
      for (var i = 0; i < trs.length; i++) 
      {
	    if (!hasClass(trs[i]) && ! trs[i].style.backgroundColor) 
	    {
         	 var tds = trs[i].getElementsByTagName("td");
         	 for (var j = 0; j < tds.length; j++) 
         	 {
            var mytd = tds[j];
	        if (! hasClass(mytd) && ! mytd.style.backgroundColor)         
		      mytd.style.backgroundColor = even ? evenColor : oddColor;
          }
        }
        even =  ! even;
      }
    }
  }
  
function toggle(cid)
{
	var s=document.getElementById(cid).style;
	document.getElementById(cid).style.display=(s.display=="block")? "none" : "block";
}
