function domCreate(type, parm){
  switch(type){
    case 'text':
    	return document.createTextNode(parm);
    break;
    default:
    	return document.createElement(parm);
  	break;
  }
}; 

function domCreateElm(type){
  return document.createElement(type);
};

function domCreateTextNode(text){
  return document.createTextNode(text);
};

function domCreateButton(value, fn){
	var button = document.createElement('input');
	button.setAttribute('type', 'button');
	button.setAttribute('value', value);
	addEvent(button, 'click', fn, false); 
	
	return button;
};

function domCreateRadio(rad_name, rad_id, rad_value, rad_checked){
	
	try {
	    var sTag = '<input name="' + rad_name + '" type="radio" value="' + rad_value + '"';
		if(rad_checked){
		   sTag += ' checked="checked"';
		}

		if(rad_id != ''){
		   sTag += ' id="' + rad_id + '"';
		}
			 
		sTag += ' />';
		   
		var rad = document.createElement(sTag);
		
	} catch (e) {
	  	var rad = document.createElement('input');
		rad.setAttribute('type', 'radio');
		rad.setAttribute('name', rad_name);
		rad.setAttribute('value', rad_value);
		if(rad_checked){
		  rad.setAttribute('checked', 'checked');
		}
		if(rad_id != ''){
		  rad.setAttribute('id', rad_id);
		}
	}
	
	return rad;
};

function domCreateHidden(name, value, id){
  	id = (id) ? id : name;
	try {
	    var rad = document.createElement('<input name="' + name + '" id="' + id + '" type="hidden" value="' + value + '" />');
	} catch (e) {
	  	var rad = document.createElement('input');
		rad.setAttribute('type', 'hidden');
		rad.setAttribute('name', name);
		rad.setAttribute('id', id);
		rad.setAttribute('value', value);
	}
	
	return rad;
};

function domCreateLabel(for_id){
	try {
	    var lab = document.createElement('<label for="' + for_id + '" />');
	} catch (e) {
	  	var lab = document.createElement('label');
		lab.setAttribute('for', for_id);

	}
	
	return lab;
};

/*
function domCreateImageButton(id, text, fn, pos){
  var link = domCreate('elm', 'a');
  link.setAttribute('href', '#');
  link.setAttribute('id', id);
  
  switch(pos){
    case 'right':
    	var buttonClass = 'buttonRight';
    break;
    default:
    	var buttonClass = 'button';
    break;
  }
  link.className = buttonClass;
  
  addEvent(link, 'click', fn, false);
  
  //fix for IE. Ensures button goes back to original state on mouseup
  addEvent(link, 'click', function(){ link.blur(); }, false);
  
  var span = domCreate('elm', 'span');
  domAppend(span, domCreate('text', text));
  
  domAppend(link, span);
  //alert(link.outerHTML);
  return link;
};
*/

function domCreateImageButton(id, src, altText, fn){
  var img = domCreate('elm', 'img');
  img.setAttribute('src', src);
  img.setAttribute('id', id);
  img.setAttribute('alt', altText);
  
  img.className = 'showPointer';
  
  addEvent(img, 'click', fn, false);

  return img;
};

function domAppend(parent, child){
  parent.appendChild(child);
};

function domCenterElm(elm){
  	domCenterElmVertically(elm);
  	domCenterElmHorizontally(elm);
};

function domCenterElmHorizontally(elm){
	var id = elm.getAttribute('id');

	var winWidth = getBrowserWindowWidth();
	
	var elmWidth = 0;

	
	//if(elm.style.width && elm.style.width.indexOf('px') != -1){
	//  	elmWidth = elm.style.width.replace('px', '');
	//}
	//else if(elm.offsetWidth){
	  	elmWidth = elm.offsetWidth;
	//}
	
	var xpos = Math.floor((winWidth - elmWidth) / 2);
	
	if(xpos < 0){
	  xpos = 0;
	}
	
    elm.style.left = xpos + "px";
	//moveDivTo(id, xpos, ypos);
		
};

function domCenterElmVertically(elm){
	var id = elm.getAttribute('id');
	
	var winHeight = getBrowserWindowHeight(); 
	
	var elmHeight = 0;

	//if(elm.style.height && elm.style.height.indexOf('px') != -1){
	//  	elmheight = elm.style.height.replace('px', '');
	//}
	//else if(elm.offsetHeight){
	  	elmHeight = elm.offsetHeight;
	//}

	var ypos = Math.floor((winHeight - elmHeight) / 2) + getScrollTop();		
	
	if(ypos < 0){
	  ypos = 0;
	}
	
    elm.style.top = ypos + "px";
};

function domRemoveElm(elm){
  elm.parentNode.removeChild(elm);
};

function domEntityForTextNode(str, mode) {
	str = (str) ? str : "";
	mode = (mode) ? mode : "string";

	var e = document.createElement("div");
	e.innerHTML = str;

	if (mode == "numeric") {
		return "&#" + e.innerHTML.charCodeAt(0) + ";";
	}
	else if (mode == "utf16") {
		var un = e.innerHTML.charCodeAt(0).toString(16);
		while (un.length < 4) un = "0" + un;
		return "\\u" + un;
	}
	else return e.innerHTML;
};

function domSetInnerHTML(elm, html){
  elm.innerHTML = '';
  elm.innerHTML = html;
};

function getScrollLeft() {
	return domFilterResults (
		window.pageXOffset ? window.pageXOffset : 0,
		document.documentElement ? document.documentElement.scrollLeft : 0,
		document.body ? document.body.scrollLeft : 0
	);
}
function getScrollTop() {
	return domFilterResults (
		window.pageYOffset ? window.pageYOffset : 0,
		document.documentElement ? document.documentElement.scrollTop : 0,
		document.body ? document.body.scrollTop : 0
	);
}
function domFilterResults(n_win, n_docel, n_body) {
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel)))
		n_result = n_docel;
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}

