/* this needs to be tidied up by quite a bit. :) */

function textFields() {
	if(document.getElementsByTagName) {
	_inputFields = document.getElementsByTagName("INPUT");
		for(i = 0 ; i < _inputFields.length; i++) { 
		var node = _inputFields[i];
			if(node.type=="text" && (node.getAttribute("alt") && node.getAttribute("alt") != -1)) {
				node.onkeydown = function(key) {
				  if(this.value.length > 50 && this.value.indexOf(" ") != -1) { 
						replaceNode(this,"textarea",this.value);
						setFocus(this.id,this.value.length);
						textAreas(); //init textareas
					}
					document.getElementById(this.id + "Counter").innerHTML = this.value.length ; //debug
				}
			}
		}
	}
}

function textAreas() {
	if(document.getElementsByTagName) {
	_textAreas = document.getElementsByTagName("TEXTAREA");
		for(i = 0 ; i < _textAreas.length ; i++) {
		var node = _textAreas[i];
		node.onkeydown = function() { 
					/* if(this.value.length <= 50) {
					replaceNode(this,"input",this.value,"text");
					setFocus(this.id,this.value.length);
					textFields(); //init textfields again
				} */
				document.getElementById(this.id + "Counter").innerHTML = this.value.length ; //debug
			}
		}
	}
}


function replaceNode(node,newType,content,attrType) {
	_newNode = document.createElement(newType) ;
	_newNodeText = document.createTextNode(content);
	node.parentNode.insertBefore(_newNode, node) ;
	removeNode(node); 
	_newNode.setAttribute("name", node.name);
	_newNode.setAttribute("id", node.id);
	_newNode.setAttribute("alt", "extends");
	if(attrType) { _newNode.setAttribute("type", attrType); }
	//alert(_newNode.hasChildNodes());
	if(_newNode.hasChildNodes() == true) {
	_newNode.appendChild(_newNodeText); 
	} else {
	//alert("fork!"); 
	_newNode.value = content;
	}
}

function setFocus(obj, pos) {
obj = document.getElementById(obj) ;
	if(obj.setSelectionRange) { //opera
		obj.focus();
		obj.setSelectionRange(pos,pos);
	}
	else if (obj.createTextRange) { // ie
		var range = obj.createTextRange();
		range.move("character", pos);
		range.select();
	} else {
		obj.focus();
	}
}

function removeNode(node){
if(node.hasChildNodes()){
  for(var i=0;i<node.childNodes.length;i++){
		node.childNodes[i].removeChild;
		//node.parentNode.insertBefore(node.childNodes[i].cloneNode(true),node);
	}
}
node.parentNode.removeChild(node);
}

/* argh! */
//function removeNode(node){
/* kill the children */
//while(node.firstChild) removeChild(node.firstChild);
/* kill their parent */
//node.parentNode.removeChild(node);
//}

/* initialize */
window.onload = function() { 
	textFields();
}
