var uniquePartOfId;

function cloneElement(name, insertBeforeId) {
	var nameProblem = false;
	try {
		if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
			var ieVersion = new Number(RegExp.$1) // capture x.x portion and store as a number
			if (ieVersion < 8)
				nameProblem = true;
		}
	} catch (e) {}

	var newItem = document.getElementById(name).cloneNode(true);
	newItem.id='';
	newItem.style.display='';
	var inputElems = newItem.getElementsByTagName("input");
	for (i=0; i<inputElems.length; i++) {
		var enable = true;
		if (inputElems[i].name=="operation") {
			inputElems[i].value="create";
		}
		
		if ((inputElems[i].type == "checkbox") 
				|| (inputElems[i].type == "radio") 
				|| (inputElems[i].type == "hidden" && inputElems[i].id)) {
			if (uniquePartOfId == null) {
				var tmpDate = new Date();
				uniquePartOfId = tmpDate.valueOf();
			}
			
			var idToChange = inputElems[i].id;
			if (inputElems[i].type == "checkbox") {
				idToChange = idToChange.substring(0, idToChange.length - 9);
			} else if (inputElems[i].type == "radio") {
				idToChange = inputElems[i].name;
				idToChange = idToChange.substring(0, idToChange.length - 6);
			}
			var idNoNumber = idToChange.substring(0, idToChange.lastIndexOf("-") +1);
			var newId = idNoNumber + uniquePartOfId;
			if (inputElems[i].type == "checkbox") {
				inputElems[i].id = newId + "-checkbox";
				inputElems[i].onclick = function() {
					document.getElementById(newId).value = this.checked ? 'Y' : 'N';
				}
			} else if (inputElems[i].type == "radio") {
				inputElems[i].name = newId + "-radio"; /*  v IE < 8 prirazeni jmena nefunguje spravne  */
				inputElems[i].onclick = function() {
					document.getElementById(newId).value = this.value;
				}
				if (nameProblem) {
					var ieRadio = document.createElement('<input name="'+ newId + '-radio' +'">');
					ieRadio.type = 'radio';
					ieRadio.value = inputElems[i].value;
					ieRadio.defaultChecked = inputElems[i].checked;
					ieRadio.onclick = function() {
						document.getElementById(newId).value = this.value;
					}
					inputElems[i].replaceNode(ieRadio);
				}
			} else {
				inputElems[i].id = newId;
			}
		}

		if (enable) {
			inputElems[i].disabled=false;
		}
	}
	
	var selectElems = newItem.getElementsByTagName("select");
	for (i=0; i<selectElems.length; i++) {
		selectElems[i].disabled=false;
	}
	
	var textareaElems = newItem.getElementsByTagName("textarea");
	for (i=0; i<textareaElems.length; i++) {
		textareaElems[i].disabled=false;
	}
	
	uniquePartOfId = null;
	
	if( insertBeforeId == undefined ) {
		insertBeforeId = name;
	}
	var insertHere = document.getElementById(insertBeforeId	);
	insertHere.parentNode.insertBefore(newItem,insertHere);
}