function getHandle( id ) {
	return document.getElementById( id );
}

function prependChild(parent, node) {
    if (parent.firstChild) {
        parent.insertBefore(node, parent.firstChild);
    } else {
        parent.appendChild(node);
    }
}



function insertAtCaret(obj, text) {
		if(document.selection) {
			obj.focus();
			var orig = obj.value.replace(/\r\n/g, "\n");
			var range = document.selection.createRange();

			if(range.parentElement() != obj) {
				return false;
			}

			range.text = text;
			
			var actual = tmp = obj.value.replace(/\r\n/g, "\n");

			for(var diff = 0; diff < orig.length; diff++) {
				if(orig.charAt(diff) != actual.charAt(diff)) break;
			}

			for(var index = 0, start = 0; 
				tmp.match(text) 
					&& (tmp = tmp.replace(text, "")) 
					&& index <= diff; 
				index = start + text.length
			) {
				start = actual.indexOf(text, index);
			}
		} else if(obj.selectionStart) {
			var start = obj.selectionStart;
			var end   = obj.selectionEnd;

			obj.value = obj.value.substr(0, start) 
				+ text 
				+ obj.value.substr(end, obj.value.length);
		}
		
		if(start != null) {
			setCaretTo(obj, start + text.length);
		} else {
			obj.value += text;
		}
	}
	
	function setCaretTo(obj, pos) {
		if(obj.createTextRange) {
			var range = obj.createTextRange();
			range.move('character', pos);
			range.select();
		} else if(obj.selectionStart) {
			obj.focus();
			obj.setSelectionRange(pos, pos);
		}
	}

//===================== Fade In Image Functions =========================================


function fadeInFast( objId, opacity  ) {
	
	if( document.getElementById ) {
		
		var handle = document.getElementById( objId );

		if( opacity == 0 ) {
			setOpacity( handle, 0 );
			handle.style.visibility = 'visible';
		}

		if( opacity <= 100 ) {
			setOpacity( handle, opacity );
			opacity += 10;
			window.setTimeout( "fadeInFast( '" + objId + "', " + opacity + " )", 25 );
		}
	}
}


function fadeIn( objId, opacity  ) {
	
	if( document.getElementById ) {
		
		var handle = document.getElementById( objId );

		if( opacity == 0 ) {
			setOpacity( handle, 0 );
			handle.style.visibility = 'visible';
		}

		if( opacity <= 100 ) {
			setOpacity( handle, opacity );
			opacity += 2;
			window.setTimeout( "fadeIn( '" + objId + "', " + opacity + " )", 25 );
		}
	}
}

function setOpacity(obj, opacity) {
	var opacity					= (opacity == 100)?99.999:opacity;
	
	obj.style.filter 			= "alpha(opacity:"+opacity+")";	// IE/Win
	obj.style.KHTMLOpacity 	= opacity / 100;  					// Safari<1.2, Konqueror
	obj.style.MozOpacity 	= opacity / 100;  					// Older Mozilla and Firefox
	obj.style.opacity 		= opacity / 100;  					// Safari 1.2, newer Firefox and Mozilla, CSS3
}
