﻿function escapeHtml(string) {
    var div = createDiv();
    div.appendChild(createText(string));
    return div.innerHTML;
}

function unescapeHTML(string) {
	var div = createDiv();
    div.innerHTML = string;
    return div.childNodes[0] ? div.childNodes[0].nodeValue : '';
}

function createElement(elementType, elementId, className, helpId) {
	var element = document.__createElement ? document.__createElement(elementType) : document.createElement(elementType);
	if(elementId) element.id = elementId;
	if(className)element.className = className;
	if(helpId) element.setAttribute('rel', helpId);
	return element;
}

function createText(text) {
	return document.createTextNode(text);
}

function createDiv(divId, className, helpId, titleText) {
	var div = createElement('div', divId, className, helpId);
	if(titleText) div.appendChild(createText(titleText));
	return div;
}

function createAClick(title, className, helpId, onClickFunction, linkText, imageSrc) {
	var aClick = createElement('a', '', className, helpId);
	aClick.href = '#';
	if(title) aClick.title = title;
	if(onClickFunction) {
		if(typeof onClickFunction == 'string') {
			aClick.onclick = new Function(onClickFunction + ' return false;');
		} else {
			aClick.onclick = onClickFunction;
		}
	}
	if(linkText) aClick.appendChild(createText(linkText));
	if(imageSrc) aClick.appendChild(createImg('', imageSrc, title));
	return aClick;
}

function createAHref(aId, href, title, className, helpId, onClickFunction) {
	var aHref = createElement('a', aId, className, helpId);
	if(href) aHref.href = href;
	if(title) aHref.title = title;
	if(onClickFunction) aHref.onclick = new Function(onClickFunction + ' return false;');
	return aHref;
}

function createImg(imgId, imgSrc, imgAlt, className, helpId) {
	var img = createElement('img', imgId, className, helpId);
	if(imgSrc) img.src = imgSrc;
	if(imgAlt) img.alt = imgAlt;
	return img;
}

function createSpan(spanId, className, helpId, titleText) {
	var span = createElement('span', spanId, className, helpId);
	if(titleText) span.appendChild(createText(titleText));
	return span;
}

function createSmall(className, contentText) {
	var small = createElement('small', '', className);
	if(contentText) small.appendChild(createText(contentText));
	return small;
}

function createBreak() {
	return createElement('br');
}

function createHidden(hiddenId, hiddenName, value) {
	var input = createElement('input', hiddenId);
	input.type = 'hidden';
	if(hiddenName) input.name = hiddenName;
	if(value) input.value = value;
	return input;
}

function createTextInput(inputId, inputName, className, value, inputLength) {
	var input = createElement('input', inputId, className);
	input.type = 'text';
	if(inputName) input.name = inputName;
	if(value) input.value = value;
	input.defaultValue = value;
	if(inputLength)	input.size = inputLength;
	
	return input;
}

function createCheckbox(inputId, inputName, className, value, checked) {
	var input = createElement('input', inputId, className);
	input.type = 'checkbox';
	if(inputName) input.name = inputName;
	if(value) input.value = value;
	if(checked)	input.checked = checked;
	return input;
}

function createSelect(selectId, selectName, className, onChangeFunction) {
	var select = createElement('select', selectId, className);
	select.name = selectName;
	if(onChangeFunction) {
		if(typeof onChangeFunction == "string")
			select.onchange = new Function(onChangeFunction);
		else
			select.onchange = onChangeFunction;
	}
	return select;
}

function createOptGroup(label) {
	var optGroup = createElement('optgroup');
	if(label) optGroup.label = label;
	return optGroup;	
}

function createOption(title, value) {
	var option = createElement('option');
	if(title) option.appendChild(createText(title));
	if(typeof value != 'undefined') option.value = value;
	return option;
}

function addOption(dropdown, option) {
	dropdown.appendChild(option);
}