function nxt_form_attach() {
	var tmp;
	var scroll = utility.dom.getPageScroll();
	var size = utility.dom.getPageInnerSize();
	tmp = utility.dom.getElementsByClassName(document, 'KT_tng', 'DIV');
	Array_each(tmp, (function(elem){
		////////////////////
		//	STEP 0: add the float class to the div
		////////////////////
		var footer = utility.dom.getElementsByClassName(elem, 'KT_bottombuttons');
		if (footer.length == 1) {
			footer = footer[0];
			var elementList = utility.dom.getElementsByClassName(footer, 'KT_operations');
			Array_each(elementList, function(element) {
				 utility.dom.classNameAdd(element, 'KT_left');
			 });
		}
		////////////////////
		//	STEP 1:  copy footer buttons to header
		////////////////////
		if ($NXT_FORM_SETTINGS.duplicate_buttons && !(is.ie && is.mac)) {
			var footer = utility.dom.getElementsByClassName(elem, 'KT_bottombuttons', 'DIV');
			if (footer.length == 1) {
				footer = footer[0];
				var header = document.createElement('DIV');
				header.className = 'KT_topbuttons';
				header.innerHTML = footer.innerHTML;
				var tmp = footer.parentNode.insertBefore(header, footer.parentNode.firstChild);
				Array_each(['input'], function(tagname) {
					var from = footer.getElementsByTagName(tagname);
					var to = header.getElementsByTagName(tagname);
					Array_each(from, function(asd, i) {
						to[i].__eventHandlers = from[i].__eventHandlers;
						to[i].onclick = from[i].onclick;
						to[i].onmousedown = from[i].onmousedown;
						to[i].onfocus = from[i].onfocus;
					});
				});
				//utility.dom.classNameAdd(utility.dom.getElementsByClassName(tmp, 'KT_operations'), 'clearfix');
			} else {
				footer = null;
				header = null
			}
		}

		if (typeof $NXT_FORM_SETTINGS.merge_down_value != 'undefined' && $NXT_FORM_SETTINGS.merge_down_value && !(is.ie && is.mac)) {
			if (typeof multiple_edits != "undefined") {
				if (!multiple_edits) {
					return;
				}
			} else {
				var tables = utility.dom.getElementsBySelector('div.KT_tngform table.KT_tngtable');
				if (tables.length == 1) {
					return;
				}
			}
			var labels = utility.dom.getElementsByTagName(elem, 'label'); var visited_labels = [];
			Array_each(labels, function(label) {
				var normal = label.htmlFor.toString().replace(/_\d+$/, '');
				var first = document.getElementById(normal+'_1');
				if (typeof first == 'undefined' || first == null || !first.tagName || first.tagName == 'undefined') {
					return;
				}
				if (first.tagName.toLowerCase() == 'input' && first.type && first.type.toLowerCase() == 'file') {
					return;
				}
				if (Array_indexOf(visited_labels, normal) < 0) { // it's the first label
					var normal_re = new RegExp('^' + normal + "_\\d+$", 'g');
					var cal_btn_re = new RegExp('_btn$', 'g');
					var edit_drop1_re = new RegExp('_edit$', 'g');
					var edit_drop2_re = new RegExp('_v$', 'g');
					var edit_drop3_re = new RegExp('_add$', 'g');
					var comma_checkbox_re = new RegExp('_commacheckbox\\d+$', 'g');

					Array_push(visited_labels, normal);
					var elem = utility.dom.createElement('input', {
						'type': 'button', 
						'className': 'merge_down', 
						'value': 'v', 
						'tabindex': 1000
					});
					elem.tabIndex = 1000;
					//elem.className = 'merge_down';
					elem.onclick = function(e) {
						var first = document.getElementById(normal+'_1'), elements_to = [];
						var form = first.form;
						
						Array_each(form.elements, function(input) {
							var input_id = input.id.toString()
							if (input_id.match(normal_re) && input.id != normal+'_1' 
								&& !input_id.match(cal_btn_re)
								&& !input_id.match(edit_drop1_re)
								&& !input_id.match(edit_drop2_re)
								&& !input_id.match(edit_drop3_re)
								&& !input_id.match(comma_checkbox_re)
								) {
								Array_push(elements_to, input);
							}
						})
						if (typeof($DYS_GLOBALOBJECT) != 'undefined' && typeof (window[$DYS_GLOBALOBJECT][first.id]) != 'undefined') {
							var first_dyn = window[$DYS_GLOBALOBJECT][first.id];
						}
						if (typeof($DCC_GLOBALOBJECT) != 'undefined' && typeof (window[$DCC_GLOBALOBJECT][first.id]) != 'undefined') {
							var first_dcc = window[$DCC_GLOBALOBJECT][first.id];
						}
						if (typeof($DCM_GLOBALOBJECT) != 'undefined' && typeof (window[$DCM_GLOBALOBJECT][first.id]) != 'undefined') {
							var first_dcm = window[$DCM_GLOBALOBJECT][first.id];
							if (is.ie) {
								//the dropdown/menu somehow loose the selected options in IE 
								first_dcm.inspect();
							}
						}
						if (typeof($MMO_GLOBALOBJECT) != 'undefined' && typeof (window[$MMO_GLOBALOBJECT][first.id]) != 'undefined') {
							var first_mmo = window[$MMO_GLOBALOBJECT][first.id];
						}

						for (var i=0; i<elements_to.length; i++) {
							var element_to = elements_to[i];
							if (typeof($DYS_GLOBALOBJECT) != 'undefined' && typeof (window[$DYS_GLOBALOBJECT][element_to.id]) != 'undefined') {
								dyp = window[$DYS_GLOBALOBJECT][element_to.id];
								if (dyp.edittype == 'E') {
									//do not copy down values for a DynamicInput in a "add this" state
									if (first_dyn.addButton.disabled) {
										var selIndex = first_dyn.oldinput.selectedIndex;
										dyp.newvalue = first_dyn.newvalue;
										dyp.oldinput.selectedIndex = selIndex;
										dyp.oldinput.value = first_dyn.oldinput.value;
										dyp.sel.selectedIndex = selIndex;
										dyp.sel.value = first_dyn.sel.value;
										dyp.edit.value = first_dyn.edit.value;
										MXW_DynamicObject_syncSelection(element_to.id);
										dyp.addButton.disabled = true;
									}
								} else {
									dyp.oldinput.value = first_dyn.oldinput.value;
									dyp.edit.value = first_dyn.edit.value;
								}
								continue;
							}
							if (typeof($DCC_GLOBALOBJECT) != 'undefined' && typeof (window[$DCC_GLOBALOBJECT][element_to.id]) != 'undefined') {
								window[$DCC_GLOBALOBJECT][element_to.id].input.value = first_dcc.input.value;
								window[$DCC_GLOBALOBJECT][element_to.id].inspect();
							}
							if (typeof($DCM_GLOBALOBJECT) != 'undefined' && typeof (window[$DCM_GLOBALOBJECT][element_to.id]) != 'undefined') {
								window[$DCM_GLOBALOBJECT][element_to.id].input.value = first_dcm.input.value;
								window[$DCM_GLOBALOBJECT][element_to.id].inspect();
							}
							if (typeof($MMO_GLOBALOBJECT) != 'undefined' && typeof (window[$MMO_GLOBALOBJECT][element_to.id]) != 'undefined') {
								window[$MMO_GLOBALOBJECT][element_to.id].input.value = first_mmo.input.value;
								window[$MMO_GLOBALOBJECT][element_to.id].inspect();
							}
							if (first.tagName.toLowerCase() == 'input' && first.type == 'checkbox') {
								try { element_to.checked = first.checked; } catch(e) { }
								continue;
							}
							if (first.tagName.toLowerCase() == 'select') {
								try { element_to.selectedIndex = first.selectedIndex; } catch(e) { }
								if (typeof $DDR_MASTERSELECT_OBJ != 'undefined' && typeof window[$DDR_MASTERSELECT_OBJ][element_to.id] != 'undefined') {
									window[$DDR_MASTERSELECT_OBJ][element_to.id].change();
								}

								continue;
							}
							try { element_to.value = first.value; } catch(e) { }

							var ktml1 = UNI_isktml(first);
							var ktml2 = UNI_isktml(element_to);
							if (ktml1 && ktml2) {
								if (ktml2.displayMode == 'RICH') {
									ktml2.setContent(ktml1.getContent());
								} else {
									ktml2.textarea.value = hndlr_load(ktml1.getContent(), "CODE");
								}
							}
						}
					}
					var inp = document.getElementById(label.htmlFor.toString());
					//find the last element in the container element to insert the copy down button after (it should be the last)
					/*
					while(inp.nextSibling) {
						inp = inp.nextSibling;
					}
					*/
					var show_cond = true;
					if (typeof inp == 'undefined' || inp == null) {
						show_cond = false;
					}
					if (show_cond && typeof inp.type != 'undefined' && inp.type != null) {
						if (inp.type.toString().toLowerCase() == 'radio') {
							show_cond = false;
						}
					}
					if (show_cond) {
						if (typeof($CAL_GLOBALOBJECT) != "undefined" && typeof(window[$CAL_GLOBALOBJECT]) != "undefined" && typeof(window[$CAL_GLOBALOBJECT][inp.id+""])!="undefined") {
							inp = document.getElementById(inp.id + '_btn');
						}
						utility.dom.insertAfter(elem, inp);
					}
				}
			});
		}

	}));
}

function nxt_form_insertasnew(obj, var_name) {
	var frm = obj.form;
	if (is.ie && frm.action == '') {
		var action = window.location.href
	} else {
		var action = frm.action.toString();
	}
	parts = action.split("?");
	var qs = new QueryString(parts[1]); var new_qs = [];
	var re = new RegExp(var_name, 'g');
	Array_each(qs.keys, function(key, i) {
		if (! key.match(re)) {
			Array_push(new_qs, key+'='+qs.values[i]);
		}
	});
	var new_part = new_qs.join('&');
	action = parts[0];
	if (new_part != '')
		action += '?' + new_part;
	frm.action = action;
	return true;
}

utility.dom.attachEvent2(window, 'onload', nxt_form_attach);

