/* generated: 2010-03-26 12:25 (1269284690789) */
<!-- common_library/verifyKey -->
<!-- getORBuildGlobalSet: caching disabled -->
<!-- library/verifyKey_lib_specific [2010-03-26 12:25:11] [key=526142444126960271073582742831277O02] -->
<!-- security_app$verifyKey_1st -->
<!-- verifyKey: session.language=0 -->
<!-- security_app$verifyKey_2nd -->


var framework__www_root	= '';
var framework__iframe_empty_page = framework__www_root+'/empty.html';
var framework__spacergif = '/pic/empty1x1.gif';
var framework__image_root = '/pic';
var framework__app = 'IconParcFront';
var framework__design = 'absolutelynewdesign';
var framework__image_root_app_design = '/pic/IconParcFront/absolutelynewdesign';
var framework__image_root_app_design = '/pic/IconParcFront/absolutelynewdesign';
var framework__dpmApi_loading_gif_developer = framework__image_root_app_design+'/pageElement/dpm/loading.gif';
var framework__image_url_extension = '?version=1';
var framework__charset = 'ISO8859_1';
var framework__contenttype = 'text/html';
var framework__reverse_template_root_app = 'http://www.iconparc.de/eBusiness/ICONPARC/key=526142444126960271073582742831277O02/vs=software/'+framework__app;
var framework__day_of_week_list = new Array('Mo','Di','Mi','Do','Fr','Sa','So');
var framework__month_list = new Array('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
var framework__graphicalSelection_highlightColor = '#000000';
var framework__graphicalSelection_selectedColor = '#000000';
var framework__graphicalSelection_fontSelectedColor = '#000000';
var framework__graphicalSelection_fontFallbackColor = '#000000';
var framework__graphicalSelection_selectOneSelected = '#000000';
var framework__ml_ifl__selection_dataloader_loading= '[wird geladen...]';
var dataloader_app_url = framework__reverse_template_root_app;var framework__show_js_debug = false;
var framework__show_js_debug = false;
framework__dpm_debug_mode = false;



	
			if(typeof jsDefineGlobalVariables_initialized == 'undefined'
			&& !jsDefineGlobalVariables_initialized){



				var isNs = !document.all;
				var IE = document.all;


				var onload_registered_functions = new Array();

				var onsubmit_registered_functions = new Array();


				var fieldAction_eventActions = new Array();


				var form_disabled_elements		= new Array();

				var form_submit_status			= 0;


				var document_is_loaded = false;


				var engine_action_buttons_list = new Array();

				var engine_action_buttons_original_default = new Array();
				var engine_action_buttons_current_default = new Array();
				engine_action_buttons_original_default['myForm']	= 'generic';
				engine_action_buttons_current_default['myForm']	= 'generic';


				var selection_description_text_list = new Array();


				var dataLoader_cache = new Array();

				var jsDefineGlobalVariables_initialized = 'true';


				var doFieldAction_cache = new Array();


				var graphical_checkbox_list = new Array();


				var swapSelection_filterSelection = new Array();


				var selection_filterSelection = new Array();


				checkApplet_counter = 0;


				var js_doSetFocusOnFirstElement = true;

			}

	



	var GT_shape_objects = new Array();

	var GT_shape_border = '0px solid';
	var GT_shape_border_active = '0px solid red';
	var GT_inactive_timeout = new Array();
	var GT_border_image = '/pic/IconParcFront/absolutelynewdesign/guidedTour/rot_weiss_anim.gif';
	var GT_border = 3;
	var ie4=document.all;
	var ns6=document.getElementById&&!document.all;




	var GT_shape_div_template = document.createElement('DIV');
	GT_shape_div_template.style.position	= 'absolute';
	GT_shape_div_template.style.zIndex = '2';
	GT_shape_div_template.style.cursor = 'hand';
	GT_shape_div_template.style.border = GT_shape_border;


	GT_shape_img_template = document.createElement('IMG');
	GT_shape_img_template.src = '/pic/empty1x1.gif';
	GT_shape_img_template.border = 0;
	GT_shape_img_template.style.position = 'absolute';
	GT_shape_img_template.style.zIndex = '3';



	var GT_shape_border_left = document.createElement('IMG');
	GT_shape_border_left.style.position = 'absolute';
	GT_shape_border_left.style.visibility = 'hidden';
	GT_shape_border_left.style.zIndex = '3';
	GT_shape_border_left.border = 0;
	GT_shape_border_left.src = GT_border_image;
	GT_shape_border_left.width = GT_border;

	var GT_shape_border_top = document.createElement('IMG');
	GT_shape_border_top.style.position = 'absolute';
	GT_shape_border_top.style.visibility = 'hidden';
	GT_shape_border_top.style.zIndex = '3';
	GT_shape_border_top.border = 0;
	GT_shape_border_top.src = GT_border_image;
	GT_shape_border_top.height = GT_border;

	var GT_shape_border_right = document.createElement('IMG');
	GT_shape_border_right.style.position = 'absolute';
	GT_shape_border_right.style.visibility = 'hidden';
	GT_shape_border_right.style.zIndex = '3';
	GT_shape_border_right.border = 0;
	GT_shape_border_right.src = GT_border_image;
	GT_shape_border_right.width = GT_border;

	var GT_shape_border_bottom = document.createElement('IMG');
	GT_shape_border_bottom.style.position = 'absolute';
	GT_shape_border_bottom.style.visibility = 'hidden';
	GT_shape_border_bottom.style.zIndex = '3';
	GT_shape_border_bottom.border = 0;
	GT_shape_border_bottom.src = GT_border_image;
	GT_shape_border_bottom.height = GT_border;


	GT_shape_div_template.appendChild(GT_shape_img_template);


	function GT_shape_object(x_pos, y_pos, width, height, text_content, is_active){
		this.x_pos = x_pos;
		this.y_pos = y_pos;
		this.width = width;
		this.height = height;
		this.text_content = text_content;
		this.is_active = false;
	}

	function GT_register_shape_object(tour,page,obj_key,x_pos, y_pos, width, height, text_content){
		GT_register_page(tour,page);
		GT_shape_objects[tour][page][obj_key] = new GT_shape_object(x_pos, y_pos, width, height, text_content);
	}


	function GT_register_page(tour,page){
		if(typeof GT_shape_objects[tour] == 'undefined')
			GT_shape_objects[tour] = new Array();

		if(typeof GT_shape_objects[tour][page] == 'undefined')
			GT_shape_objects[tour][page] = new Array();
	}

	function GT_load_shape_objects(){

		for(var t in GT_shape_objects){
			for(var p in GT_shape_objects[t]){
				var img_div = document.getElementById('GT'+t+'_page'+p+'_img');
				for(var s in GT_shape_objects[t][p]){


					var shape_div = GT_shape_div_template.cloneNode(true);
					var shape_img = shape_div.firstChild;
					var obj = GT_shape_objects[t][p][s];

					shape_div.setAttribute('id','GT'+t+'_page'+p+'_shape'+s);
					shape_div.style.width 		= obj.width;
					shape_div.style.height 		= obj.height;
					shape_img.style.width 		= obj.width;
					shape_img.style.height 		= obj.height;

					shape_img.onMouseOver = "GT_highlight_shape('"+t+"','"+p+"','"+s+"')";
					shape_img.onMouseOut = "GT_unhighlight_shape('"+t+"','"+p+"','"+s+"')";
					shape_img.onClick = "GT_click_shape('"+t+"','"+p+"','"+s+"')";




					var border_left = GT_shape_border_left.cloneNode(false);
					border_left.height = parseInt(obj.height) + 2*parseInt(GT_border) + 1;
					border_left.setAttribute('id','GT_border_left'+t+'_page'+p+'_shape'+s);

					var border_right = GT_shape_border_right.cloneNode(false);
					border_right.height = parseInt(obj.height) + 2*parseInt(GT_border) + 1;

					border_right.setAttribute('id','GT_border_right'+t+'_page'+p+'_shape'+s);

					var border_top = GT_shape_border_top.cloneNode(false);
					border_top.width = parseInt(obj.width) + 2*parseInt(GT_border) + 1;
					border_top.setAttribute('id','GT_border_top'+t+'_page'+p+'_shape'+s);

					var border_bottom = GT_shape_border_bottom.cloneNode(false);
					border_bottom.width = parseInt(obj.width);
					border_bottom.setAttribute('id','GT_border_bottom'+t+'_page'+p+'_shape'+s);


					img_div.appendChild(shape_div);

					img_div.appendChild(border_left);

					img_div.appendChild(border_right);

					img_div.appendChild(border_top);

					img_div.appendChild(border_bottom);
				}
			}


			GT_goto_page(t,1);
		}

	}


	function GT_goto_page(tour,page){
		if(typeof GT_shape_objects[tour][page] != 'undefined'){
			var main_div = document.getElementById('GT'+tour+'_page_main');
			var content_div = document.getElementById('GT'+tour+'_page'+page);
			main_div.innerHTML = content_div.innerHTML;

			var img_div = document.getElementById('GT'+tour+'_page'+page+'_img_coordinates');
			var main_img_div = document.getElementById('GT'+tour+'_page'+page+'_img');

			for(var s in GT_shape_objects[tour][page]){

				var obj = GT_shape_objects[tour][page][s];

				var shape_div = document.getElementById('GT'+tour+'_page'+page+'_shape'+s);

				var shape_img = shape_div.firstChild;

				var border_left = document.getElementById('GT_border_left'+tour+'_page'+page+'_shape'+s);

				var border_right = document.getElementById('GT_border_right'+tour+'_page'+page+'_shape'+s);

				var border_top = document.getElementById('GT_border_top'+tour+'_page'+page+'_shape'+s);

				var border_bottom = document.getElementById('GT_border_bottom'+tour+'_page'+page+'_shape'+s);


				if(shape_div){

					var diff_x = main_img_div.parentNode.offsetLeft;

					var diff_y = img_div.offsetTop;


					shape_div.style.left 		= parseInt(obj.x_pos) + parseInt(img_div.offsetLeft);
					shape_div.style.top 		= parseInt(obj.y_pos) + parseInt(diff_y);

					shape_img.style.left 		= 0;
					shape_img.style.top 		= 0;
					shape_div.style.border 		= GT_shape_border;

					if(border_left){
						border_left.style.left = parseInt(shape_div.style.left) - parseInt(GT_border);
						border_left.style.top = shape_div.style.top;
					}
					else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

					if(border_right){
						border_right.style.left = parseInt(shape_div.style.left) + parseInt(shape_div.style.width);
						border_right.style.top = shape_div.style.top;
					}
					else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

					if(border_top){
						border_top.style.left = parseInt(shape_div.style.left) - GT_border;
						border_top.style.top = parseInt(shape_div.style.top) - GT_border;
					}
					else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

					if(border_bottom){
						border_bottom.style.left = shape_div.style.left;
						border_bottom.style.top = parseInt(shape_div.style.top) + parseInt(shape_div.style.height);
					}
					else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

				}
				else
alert('div not found: "'+'GT'+tour+'_page'+page+'_shape'+s+'"');

			}
		}
		else
alert('page: '+page+' not available');

	}



	function GT_show_shape_text(tour,page, shape){
		var obj = GT_shape_objects[tour][page][shape];

		var text_div = document.getElementById('GT'+tour+'_text_main');
		text_div.innerHTML = obj.text_content;

		

	}

	function GT_hide_shape_text(tour,page, shape){
		var text_div = document.getElementById('GT'+tour+'_text_main');

		text_div.innerHTML = '';
	}


	function GT_click_shape(tour, page, shape){
		var obj = GT_shape_objects[tour][page][shape];
		obj.is_active = true;
		GT_highlight_shape(tour, page, shape);

	}

	function GT_highlight_shape(tour, page, shape){
		var main_div = document.getElementById('GT'+tour+'_page_main');


		for(var s in GT_shape_objects[tour][page]){
			if(s != shape){
				GT_shape_objects[tour][page][s].is_active = false;
				var shape_div = document.getElementById('GT'+tour+'_page'+page+'_shape'+s);

				var time_out_index = tour+'$'+page+'$'+s;
				GT_inactive_timeout[time_out_index] = window.setTimeout("GT_set_shape_is_active('"+tour+"','"+page+"','"+s+"',false)",300);

			}
		}


		try{

			var time_out_index = tour+'$'+page+'$'+shape;
			window.clearTimeout(GT_inactive_timeout[time_out_index]);

		}
		catch(e){}

		var shape_div = document.getElementById('GT'+tour+'_page'+page+'_shape'+shape);

		//window.setTimeout("GT_set_shape_is_active('"+tour+"','"+page+"','"+shape+"',true)",100);
		window.setTimeout("GT_set_shape_is_active('"+tour+"','"+page+"','"+shape+"',true)",300);
	}

	function GT_unhighlight_shape(tour, page, shape,state){
		var main_div = document.getElementById('GT'+tour+'_page_main');


		if(!GT_shape_objects[tour][page][shape].is_active){
			var shape_div = document.getElementById('GT'+tour+'_page'+page+'_shape'+shape);

			var time_out_index = tour+'$'+page+'$'+shape;
			GT_inactive_timeout[time_out_index] = window.setTimeout("GT_set_shape_is_active('"+tour+"','"+page+"','"+shape+"',false)",300);

		}

	}

	function GT_set_shape_is_active(tour,page, shape,state){

		var obj = GT_shape_objects[tour][page][shape];
		var div = document.getElementById('GT'+tour+'_page'+page+'_shape'+shape);

		if(state){
			div.style.border = GT_shape_border_active;
			GT_highlight_link(tour,page, shape);
			GT_show_shape_text(tour,page, shape);
			GT_show_border(tour,page, shape);
		}
		else{
			div.style.border = GT_shape_border;
			GT_unhighlight_link(tour,page, shape);
			GT_hide_shape_text(tour,page, shape);
			GT_hide_border(tour,page, shape);
		}

	}

	function GT_highlight_link(tour,page, shape){
		var content_div = document.getElementById('GT_link_div_'+tour+'$'+page+'$'+shape);
		if(content_div){
			content_div.style.background = '#fdfdfd';
		}
	}

	function GT_unhighlight_link(tour,page, shape){
		var content_div = document.getElementById('GT_link_div_'+tour+'$'+page+'$'+shape);
		if(content_div){
			content_div.style.background = 'transparent';
		}
	}

	function GT_show_border(tour, page, shape){

		var border_left = document.getElementById('GT_border_left'+tour+'_page'+page+'_shape'+shape);

		var border_right = document.getElementById('GT_border_right'+tour+'_page'+page+'_shape'+shape);

		var border_top = document.getElementById('GT_border_top'+tour+'_page'+page+'_shape'+shape);

		var border_bottom = document.getElementById('GT_border_bottom'+tour+'_page'+page+'_shape'+shape);

		if(border_left){
			border_left.style.visibility = 'visible';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_right){
			border_right.style.visibility = 'visible';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_top){
			border_top.style.visibility = 'visible';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_bottom){
			border_bottom.style.visibility = 'visible';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

	}

	function GT_hide_border(tour, page, shape){

		var border_left = document.getElementById('GT_border_left'+tour+'_page'+page+'_shape'+shape);

		var border_right = document.getElementById('GT_border_right'+tour+'_page'+page+'_shape'+shape);

		var border_top = document.getElementById('GT_border_top'+tour+'_page'+page+'_shape'+shape);

		var border_bottom = document.getElementById('GT_border_bottom'+tour+'_page'+page+'_shape'+shape);

		if(border_left){
			border_left.style.visibility = 'hidden';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_right){
			border_right.style.visibility = 'hidden';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_top){
			border_top.style.visibility = 'hidden';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

		if(border_bottom){
			border_bottom.style.visibility = 'hidden';
		}
		else{
alert('div not found: "'+'GT_border_left'+tour+'_page'+page+'_shape'+s+'"');
}

	}

	function GT_check_mouse_on_shape(e){
		if(ie4) return;

		var offsetx=ie4? event.clientX : e.clientX
		var offsety=ie4? event.clientY : e.clientY

		for(var tour in GT_shape_objects){
			for(var page in GT_shape_objects[tour]){
				for(var shape in GT_shape_objects[tour][page]){
					var shape_div = document.getElementById('GT'+tour+'_page'+page+'_shape'+shape);

				}
			}
		}
	}

	document.onmousemove = GT_check_mouse_on_shape;




	

	var IE = document.all;
	var mouseX = 0;
	var mouseY = 0;
	var mouseTarget = null;
	var fixedMouseX = 0;
	var fixedMouseY = 0;
	var showDelayInMilliS = 500;
	var currentLayer = 0;
	var currentTimeout = setTimeout('',1);

	onloadAddRegisterFunction('document.onmousemove = getMousePosition');

	function getMousePosition(cursor)
	{
		if (IE)
		{
			mouseX = window.event.clientX + document.body.scrollLeft;
			mouseY = window.event.clientY + document.body.scrollTop;
			mouseTarget = window.event.srcElement;
		}
		else{
			mouseX = cursor.pageX;
			mouseY = cursor.pageY;
			mouseTarget = cursor.target;
		}
		return true;
	}

	function showLayer(layer,fixed_position)
	{

		if(fixed_position){
			fixedMouseX = mouseX;
			fixedMouseY = mouseY;
		}
		if(currentLayer
		&& currentLayer != layer){
			hideLayerDelayed();
		}

		clearTimeout(currentTimeout);
		currentLayer = layer;
		currentTimeout = setTimeout('showLayerDelayed('+fixed_position+')', showDelayInMilliS);
	}

	function hideLayer(layer)
	{
		clearTimeout(currentTimeout);
		currentLayer = layer;
		currentTimeout = setTimeout('hideLayerDelayed()', showDelayInMilliS);
	}

	function showHideLayerAtFixPosition(layer)
	{
		if (IE){
			layer=document.getElementById(layer);
			if (layer.style.display == 'block') {
				layer.style.display='none';
			}
			else layer.style.display='block';

		}
		else{
			if (document.getElementById(layer).style.display == 'block') {
				document.getElementById(layer).style.display='none';
			}
			else document.getElementById(layer).style.display='block';
		}
	}

	function hideLayerDelayed(){
		var js_layer_iframe_helper_container = document.getElementById('js_layer_iframe_helper_container');
		if( js_layer_iframe_helper_container ) js_layer_iframe_helper_container.style.display = 'none';
		if(!document.getElementById(currentLayer)) return;
		document.getElementById(currentLayer).style.display = 'none';
	}

	function showLayerDelayed(fixed_position){
		var layer = currentLayer;
		layer = document.getElementById(layer);
		if(!layer) return;

		layer.style.display='block';
		if(fixed_position){
			var layer_x = fixedMouseX+15;
			var layer_y = fixedMouseY+15;
		}
		else{
			var layer_x = mouseX+15;
			var layer_y = mouseY+15;
		}





		var use_scrollbar = false;
		var total_width = document.body.offsetWidth;
		var total_height = document.body.offsetHeight;
		var max_width = total_width;
		var max_height = total_height;
		var layer_width = layer.offsetWidth;
		var layer_height = layer.offsetHeight;
		if(layer_x + layer_width > max_width){
			if(layer_x > layer_width){
				layer_x -= layer_width;
			}
			else{
				use_scrollbar = true;
				if(layer_x > max_width/2){
					layer_width = layer_x-15;
					layer_x = 15;
				}
				else{
					layer_width = max_width - layer_x - 15;
				}
				layer.style.width = layer_width;
			}
		}

		if(layer_y + layer_height > max_height){
			if(layer_y > layer_height){
				layer_y -= layer_height;
			}
			else{
				use_scrollbar = true;
				if(layer_y > max_height/2){
					layer_height = layer_y - 15;
					layer_y = 15;
				}
				else{
					layer_height = max_height - layer_y - 15;
				}
				layer.style.height = layer_height;
			}
		}

		if(use_scrollbar){
			layer.style.overflow = 'scroll';
		}
		else{
			layer.style.overflow = 'auto';
		}
		layer.style.left=layer_x+'px';
		layer.style.top=layer_y+'px';

		var js_layer_iframe_helper = document.getElementById('js_layer_iframe_helper');
		if( js_layer_iframe_helper ){
			var js_layer_iframe_helper_container = document.getElementById('js_layer_iframe_helper_container');
			js_layer_iframe_helper.setAttribute('width',layer_width);
			js_layer_iframe_helper.setAttribute('height',layer_height);
			js_layer_iframe_helper_container.style.width = layer_width;
			js_layer_iframe_helper_container.style.height = layer_height;
			js_layer_iframe_helper_container.style.left = layer_x;
			js_layer_iframe_helper_container.style.top = layer_y;
			js_layer_iframe_helper_container.style.display = 'block';
		}
	}

	function displayLayer(layer){
		clearTimeout(currentTimeout);
		layer_obj = document.getElementById(layer);

		layer_obj.style.display='block';
	}


	

	
		function getRegisteredOnLoadFunction(){
			var j;
			if(onload_registered_functions.length){
				for(var j=0;j<onload_registered_functions.length;j++){

					try{
						eval(onload_registered_functions[j]);
					}
					catch(e){}
				}
			}
		}


		function onloadAddRegisterFunction(function_name){
			var j;
			for(var j=0;j<onload_registered_functions.length;j++){
				if(onload_registered_functions[j]==function_name)
					return;
			}
			curr_len=onload_registered_functions.length;
			onload_registered_functions.length++;
			onload_registered_functions[curr_len]=function_name;
		}

	

	


	function getFormObjectByNameOrReference(form){
		if (typeof form != 'undefined' && form) {
			if (typeof form == 'string') {
				if (document.forms[form]){
					form=document.forms[form];
				} else if (document.getElementById(form)) {
					form=document.getElementById(form)
				}
			}
			if (form && form.submit) return form;
		}
		return null;
	}


	function getFormElementByName(form, element_name){

		for (var i=0; i < form.elements.length; i++) {
			if (form.elements[i].name == element_name){
				return form.elements[i];
				}
			}
		return null;
	}



	function setFormFieldValue(form, field_name, field_value) {
		var my_form=getFormObjectByNameOrReference(form);
		if (my_form) {

			var my_field=getFormElementByName(form, field_name);

			if (my_field) {


				if (typeof my_field.value) {
						my_field.value=field_value;
				} else {
					alert('Field type ['+my_field.type+'] not supported yet');
				}
			} else {

				var new_field = document.createElement('INPUT');
				new_field.setAttribute('type','hidden');
				new_field.setAttribute('name',field_name);
				new_field.setAttribute('value',field_value);
				my_form.appendChild(new_field);
			}
		}
	}


	function writeValue2hiddenField(form_name,fieldname,value){
		try{

			var field = document.forms[form_name].elements[fieldname];
			if ( typeof field == 'undefined' ) {

				var my_form = document.forms[form_name];
				var new_field = document.createElement('INPUT');
				new_field.setAttribute('type','hidden');
				new_field.setAttribute('name',fieldname);
				new_field.setAttribute('value',value);
				my_form.appendChild(new_field);

			} else {
				field.value = value;
				return false;
			}
		}
		catch(e){alert("writeValue2hiddenField:" + e.message)}
	}





	function setValueOfElement(fieldname, value, form_name){

		if( !form_name ) form_name = 'myForm';
		var field = document.getElementsByName(fieldname)[0];
		if ( typeof field == 'undefined') {
			alert('setValueOfElement(): fieldname "' + fieldname + '" does not exist');
			return '';
		} else {
			return setValueOfElementObject(field,value);
		}
	}


	function setValueOfElementObject(this_object,value){
		var field = this_object;

		switch(field.type){
			case 'select-one':
				var i;
				for (i=0; i<field.length ; i++) {
					if (field.options[i].value == value) {
						field.selectedIndex = i;
						break;
					}
				}
				break;
			case 'text':
			case 'hidden':
			case 'textarea':
				field.value = value;
				break;
			case 'checkbox':
				field.checked = (value==field.value);
				break;
			default:
				alert('function setValueOfElement: field type '+field.type+' not supported!');
				return field.value;
		}

	}


	function getValueOfElement(fieldname,form_name){

		if( !form_name ) form_name = 'myForm';
		if(document.forms[form_name]){
			var field = document.forms[form_name].elements[fieldname];
		}
		else{
			var field_obj = document.getElementsByName(fieldname);
			if(field_obj){
				if(field_obj.length == 1){
					var field = field_obj[0];
				}
				else{
					var field = new Array();
					for(var i=0;i<field_obj.length;i++){
						switch(field_obj[i].tagName.toLowerCase()){

							case 'select':

							case 'input':
								field.push(field_obj[i]);
								break;
							default:
						}
					}
					if(field.length == 1){
						field = field[0];
					}
				}
			}
			else{
				return '';
			}
		}
		if ( typeof field == 'undefined') {
			return '';
		} else {
			return getValueOfElementObject(field);
		}
	}


	function isElementInputField(elem){
		if(typeof elem == 'undefined' ){
			return false;
		}

		var field = elem;

		var field_type = field.type;


		switch(field_type){
			case 'select-one':

			case 'radio':

			case 'checkbox':

			case 'file':

			case 'text':

			case 'hidden':

			case 'textarea':

			case 'submit':
				return true;
			default:
				return false;
		}
	}


	function getValueOfElementObject(this_object){
		if(typeof this_object == 'undefined'
		|| ( this_object && this_object.name && endsWith(this_object.name,'__i') ) ){
			return '';
		}

		var field = this_object;

		var field_type = field.type;

		if ( field_type != 'select-one' &&
			typeof field.length != 'undefined' &&
			field.length > 0) {
			field_type = field[0].type;
		}

		switch(field_type){
			case 'select-one':
				var field_selected_index = field.selectedIndex;
				return field.options[field_selected_index].value;
				break;
			case 'radio':

			case 'checkbox':

				if ( typeof field.length == 'undefined' ) {
					var checkbox_list = new Array();
					if(this_object.name){
						var checkbox_list = document.getElementsByName(this_object.name);
					}

					if ( !this_object.name || checkbox_list.length < 2 ) {
						if(field.checked)
							return field.value;
						else
							return null;
					} else{
						var ret = new Array();
						for(var i=0;i<checkbox_list.length;i++){
							if(checkbox_list[i].checked && checkbox_list[i].value){
								ret = ret.concat(checkbox_list[i].value);
							}
						}
						return ret.join(',');
					}
				} else{
					var ret = new Array();
					for(var i=0;i<field.length;i++){
						if(field[i].checked && field[i].value){
							ret = ret.concat(field[i].value);
						}
					}
					return ret.join(',');
				}
				break;
			case 'file':
			case 'text':
			case 'hidden':
			case 'textarea':

				return field.value;
				break;
			case 'submit':

				break;
			default:
				if(this_object && this_object.name){
					alert('function getValueOfElementObject: field type '+field_type+' not supported!\nfieldname: '+this_object.name);
				}
				else{
					alert('function getValueOfElementObject: field type '+field_type+' not supported!');
				}
				return field.value;
		}
	}


	function getEventPressedKey(e){
		if(typeof Event != 'undefined'){
			return e.which;
		}
		else{
			return window.event.keyCode;
		}
	}

	function getEventPressedTarget(e){
		if(typeof Event != 'undefined'){

			return e.target;
		}
		else{
			return event.srcElement;
		}
	}


	function inString(s1,s2){

		var len = s2.length;
		for(var i=0;i<s1.length;i++){
			if(s1.substr(i,len)==s2){
				return true;
			}
		}
		return false;
	}

	function testRegularExpression(re,input,case_sensitive){
		if(re == null
		|| re == ''){
			return true;
		}
		var ret = false;
		if(!case_sensitive){
			re = re.toLowerCase();
			input = input.toLowerCase();
		}

		try{
			var parsedRE = eval('/'+re+'/');
			ret = parsedRE.test(input);
		}catch(e){
			ret = inString(ret,input);
		}
		return ret;
	}

	function removeNewLine(s) {
		  r = '';
		  for (i=0; i < s.length; i++) {
			if (s.charAt(i) != '\n' &&
				s.charAt(i) != '\r' ) {
			  	r += s.charAt(i);
			  }
			}
		  return r;
  	}

	function encodeURL(str){
		if(framework__charset.toLowerCase() == 'utf-8'){
			return encodeURIComponent(str);
		}
		else{

			return escape(str).replace(/[+]/g,'%2B');
		}
	}

	function getNextChild(elem, child_tagname){
		var children = elem.childNodes;
		for(var i = 0; i<children.length; i++){
			if(children[i].tagName && children[i].tagName.toLowerCase() == child_tagname){
				return children[i];
			}
			var ret = getNextChild(children[i], child_tagname);
			if(ret) return ret;
		}
		return null;
	}

	function getNextSibling(elem, tagname){
		var ret = elem.nextSibling;
		var tagname = tagname.toLowerCase();

		while( ret && ( !ret.tagName || ret.tagName.toLowerCase() != tagname ) ){
			var ret = ret.nextSibling;
		}
		return ret;
	}


	function switchElementClass(element,original_class_name,new_class_name,anyway){

		if( !element ) return;

		if( !element.className ){
			if( !anyway ) return;
			element.className = new_class_name;
			return;
		}
		var class_list = element.className.split(' ');
		var new_class_list = new Array();
		var found = false;
		for(var i=0; i<class_list.length; i++ ){
			if( class_list[i] == original_class_name){
				found = true;
				new_class_list.push(new_class_name);
			}
			else{
				new_class_list.push(class_list[i]);
			}
		}
		if( !found && anyway ){
			new_class_list.push(new_class_name);
		}
		element.className = new_class_list.join(' ');
	}


	

	


	function endsWith(s1, s2){
		var l1 = s1.length;
		var l2 = s2.length;
		if(s1.substr(l1-l2,l2) == s2)
			return true;
		else
			return false;
	}


	function beginsWith(s1, s2){
		var l1 = s1.length;
		var l2 = s2.length;
		if(s1.substr(0,l2) == s2)
			return true;
		else
			return false;
	}


	function remove(s1, s2, c){
		for(var i=0;i<c && s1.lastIndexOf(s2) != -1;i++){
			s1 = s1.replace(s2,'');
		}
		return s1;
	}


	function replace(s1, s2,s3, c){
		if(s2 == s3) return s1;
		for(var i=0;i<c && s1.lastIndexOf(s2) != -1;i++){
			s1 = s1.replace(s2,s3);
		}
		return s1;
	}
	

	

		if(typeof jsGoToAnchor_anchor_name == 'undefinede')
			var jsGoToAnchor_anchor_name = 'jsGoToAnchor_variable_not_set';


		function jsGoToAnchor(){
			if(jsGoToAnchor_anchor_name=='jsGoToAnchor_variable_not_set')
				return;
			else{
				my_href='#'+jsGoToAnchor_anchor_name;
				location.href=my_href;
				document.body.scrollTop = parseInt(document.body.scrollTop)-50;
			}
		}
	

	

		var yourProfit_year_count = 5;
		var yourProfit_form_name = "myForm";
		var yourProfit_plattform_price_support_pc = 18;
		var yourProfit_total_change_count = -1;

		function yourProfit_calculate(field){
			yourProfit_calculateSupport();
			var sum = 0;
			for(var year=1; year<=yourProfit_year_count;year++){
				yourProfit_calculateYearRevenue(year);
				yourProfit_calculateMarge(year);
				yourProfit_calculateOnlineCosts(year);
				yourProfit_calculateDifference(year);
			}

			if(document.forms[yourProfit_form_name].elements['token']
			&& document.forms[yourProfit_form_name].elements['token'].value != -1){
				var token_value = document.forms[yourProfit_form_name].elements['token'].value;
				var params = 'action=yourProfitAlert&your_profit_token='+token_value;
				if(yourProfit_total_change_count != -1){
					params += '&your_profit_fieldname='+field.getAttribute('name');
					params += '&your_profit_value='+field.value;

					window.setTimeout("dpmAPI_makeRequest('myForm','"+params+"')",10);
				}
				else{
					params += '&your_profit_action=first_click';

					window.setTimeout("dpmAPI_makeRequest('myForm','"+params+"')",10);
				}
			}
			yourProfit_total_change_count++;
		}


		function yourProfit_calculateYearRevenue(year){
			var revenue = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['year_revenue'].value);
			var cumulation = yourProfit_formatString2Percent(document.forms[yourProfit_form_name].elements['revenue_cumulation'].value);
			var revenue_online_percent = yourProfit_formatString2Percent(document.forms[yourProfit_form_name].elements['revenue_online_percent'].value);
			var revenue_online_percent_cumulation = yourProfit_formatString2Percent(document.forms[yourProfit_form_name].elements['revenue_online_percent_cumulation'].value);

			if(isNaN(revenue) || isNaN(cumulation) || isNaN(revenue_online_percent) || isNaN(revenue_online_percent_cumulation)) return;

			var online_revenue = parseFloat(revenue*1000000*revenue_online_percent/100);
			revenue_online_percent = parseFloat(revenue_online_percent)+(parseFloat(revenue_online_percent)*parseFloat(revenue_online_percent_cumulation)/100);
			for(var i = year; i>1;i--){
				revenue = parseFloat(revenue*cumulation/100)+parseFloat(revenue);
				online_revenue = parseFloat(revenue*1000000*revenue_online_percent/100);
				revenue_online_percent = parseFloat(revenue_online_percent)+(parseFloat(revenue_online_percent)*parseFloat(revenue_online_percent_cumulation)/100);
			}

			if(isNaN(online_revenue)) online_revenue = 0;
			document.forms[yourProfit_form_name].elements['calculation_revenue_year'+year].value = yourProfit_formatPrice2String(online_revenue);
		}


		function yourProfit_calculateOnlineCosts(year){
			var plattform_price = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['plattform_price'].value);
			var ci_price = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['ci_price'].value);
			var support = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['support'].value);
			var infrastructure = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['infrastructure'].value);
			var traffic = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['traffic'].value);

			if(isNaN(plattform_price) || isNaN(ci_price) || isNaN(support) || isNaN(infrastructure) || isNaN(traffic)) return;

			if(year == 1){
				var costs = parseFloat(plattform_price) + parseFloat(ci_price) + parseFloat(support) + parseFloat(infrastructure) + parseFloat(traffic);
			}
			else{
				var costs = parseFloat(support) + parseFloat(traffic);
			}

			if(isNaN(costs)) costs = 0;

			document.forms[yourProfit_form_name].elements['calculation_online_costs_year'+year].value = yourProfit_formatPrice2String(costs);
		}


		function yourProfit_calculateDifference(year){
			var marge = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['calculation_marge_year'+year].value);
			var costs = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['calculation_online_costs_year'+year].value);

			if(isNaN(marge) || isNaN(costs)) return;

			var difference = parseFloat(marge) - parseFloat(costs);
			if(year > 1){
				var last_diff = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['calculation_difference_cum_year'+(year-1)].value);
			}
			else{
				var last_diff = 0;
			}

			var difference_cum = parseFloat(difference) + parseFloat(last_diff);

			document.forms[yourProfit_form_name].elements['calculation_difference_year'+year].value = yourProfit_formatPrice2String(difference);
			document.forms[yourProfit_form_name].elements['calculation_difference_cum_year'+year].value = yourProfit_formatPrice2String(difference_cum);

			if(difference_cum == 0){
				document.forms[yourProfit_form_name].elements['calculation_difference_cum_year'+year].className = 'yourProfit_marge_neutral';
			}
			else if(difference_cum > 0){
				document.forms[yourProfit_form_name].elements['calculation_difference_cum_year'+year].className = 'yourProfit_marge_positive';
			}
			else{
				document.forms[yourProfit_form_name].elements['calculation_difference_cum_year'+year].className = 'yourProfit_marge_negative';
			}

		}


		function yourProfit_calculateMarge(year){
			var revenue = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['calculation_revenue_year'+year].value);
			var profit_margin = yourProfit_formatString2Percent(document.forms[yourProfit_form_name].elements['profit_margin'].value);

			if(isNaN(revenue) || isNaN(profit_margin)) return;

			if(revenue<0){
				var marge = revenue;
			}
			else{
				var marge = revenue*profit_margin/100;
			}
			document.forms[yourProfit_form_name].elements['calculation_marge_year'+year].value = yourProfit_formatPrice2String(marge);

		}


		function yourProfit_calculateSupport(){
			var plattform_price = yourProfit_formatString2Price(document.forms[yourProfit_form_name].elements['plattform_price'].value);
			if(isNaN(plattform_price)) return;
			document.forms[yourProfit_form_name].elements['support'].value = yourProfit_formatPrice2String(yourProfit_plattform_price_support_pc*plattform_price/100);
		}

		function yourProfit_formatPrice2String(price){
			var price = parseInt(price).toString().replace(/(\d)(\d{3})$/,'$1.$2');
			while(price != price.replace(/(\d)(\d{3}[.])/,'$1.$2')){
				price = price.replace(/(\d)(\d{3}[.])/,'$1.$2');
			}
			return price;
		}



		function yourProfit_formatString2Price(price){
			var price = price.replace('.','');
			while(price != price.replace('.','')){
				price = price.replace('.','');
			}
			var price = price.replace(',','.');
			return isNaN(price)? 0 : price;
		}

		function yourProfit_formatString2Percent(str){
			var percent	= parseFloat(str);
			return isNaN(percent)? 0 : percent;
		}

	

	
		var inputField_active_class_name = 'active';
		var inputField_inactive_class_name = 'input';

		function handleInputFieldOnblur(field){
			var class_name = (field.className != null)? field.className.replace(' '+inputField_active_class_name,'') : '';
			field.className = class_name+' '+inputField_inactive_class_name;
		}

		function handleInputFieldOnfocus(field){
			var class_name = (field.className != null)? field.className.replace(' '+inputField_inactive_class_name,'') : '';
			field.className = class_name+' '+inputField_active_class_name;
		}

	


		
	if (!((typeof preload_registered_images == 'object') && (preload_registered_images.length))){
		preload_registered_images = new Array();
	}

	function preloadAddElement(image, priority){
		var do_the_insert=true;
		if(preload_registered_images){
			for(i=0;i<preload_registered_images.length;i++){
				if(preload_registered_images[i][0] == image){
					if (preload_registered_images[i][1] > priority)
						preload_registered_images[i][1]= priority;

					do_the_insert=false;
					break;
				}

			}//for
			if (do_the_insert){
				curr_len=preload_registered_images.length;
				preload_registered_images.length++;
				preload_registered_images[curr_len]=new Array(image, priority);
			}
		}
	}//preloadAddElement

	function prioritySortCriteria(primo,secondo){
		return primo[1]-secondo[1];
	}//prioritySortCriteria

	function preloadExecuteQueue(){

		preload_registered_images.sort(prioritySortCriteria);
		var dummyImage = null;
		for (i=0; i < preload_registered_images.length; i++){
			window.setTimeout("dummyImage = new Image; dummyImage.src='"+preload_registered_images[i][0]+"';", 100);
		}
	}//preloadExecuteQueue

		


	

	
		function getRegisteredOnLoadFunction(){
			var j;
			if(onload_registered_functions.length){
				for(var j=0;j<onload_registered_functions.length;j++){

					try{
						eval(onload_registered_functions[j]);
					}
					catch(e){}
				}
			}
		}


		function onloadAddRegisterFunction(function_name){
			var j;
			for(var j=0;j<onload_registered_functions.length;j++){
				if(onload_registered_functions[j]==function_name)
					return;
			}
			curr_len=onload_registered_functions.length;
			onload_registered_functions.length++;
			onload_registered_functions[curr_len]=function_name;
		}

	
function SwapImage(e,s){
var x=null; if (typeof(e) == 'object' && e.src) x=e; if(!(x||(x=document[e]))&&document.all) x=document.all[e];
for (i=0;!x&&i<document.forms.length;i++) x=document.forms[i].elements[e]; if(!x&&document.getElementsByName) x=document.getElementsByName(e)[0];
if(!x&&document.getElementById) x=document.getElementById(e); if (x&&x.src) x.src=s;}

	


		var foldout_use_iframe = false;

		var foldout_delayArray = new Array();
		var foldout_activeList = new Array();
		var foldout_lastActiveItem = null;
		var foldout_itemList = new Array();

		var foldout_activeVSId = null;

		function foldout_navigationItem(objid,parent_id,nav_key,level,is_active,nav_item_type){
			this.objid = objid;
			this.nav_key = nav_key;
			this.level = level;
			this.is_active = is_active;
			this.nav_item_type = nav_item_type;
			if(parent_id != -1){
				if( !foldout_itemList[parent_id] ){
					foldout_itemList[parent_id] = new foldout_navigationItem(-1,-1);
				}
				this.parent_item = foldout_itemList[parent_id];
				this.parent_item.children_list.push(this);
			}
			this.children_list = new Array();
		}

		function foldout_registerNavigationItem(objid,parent_id,nav_key,level,is_active,nav_item_type){
			var item = new foldout_navigationItem(objid,parent_id,nav_key,level,is_active,nav_item_type);
			if( foldout_itemList[objid] ){
				for( var child in foldout_itemList[objid].children_list){
					foldout_itemList[objid].children_list[child].parent_item = item;
				}
				item.children_list = foldout_itemList[objid].children_list;
			}
			foldout_itemList[objid] = item;
		}

		function foldout_showNavItem(objid,originator_id){

			var item = foldout_itemList[objid];

			if( !originator_id ) foldout_lastActiveItem = item;

			if( !originator_id ) originator_id=objid;
			while( foldout_delayArray.length > 0 ){
				window.clearTimeout(foldout_delayArray.pop());
			}
			for(var id in foldout_activeList){
				if( foldout_activeList[id]
				&&	id != originator_id
				&&  !foldout_checkItemHierarchyAgainstId(foldout_itemList[id],objid)
				&&  !foldout_checkItemHierarchyAgainstId(item,id)){
					foldout_hideNavItem_delayed(id);
				}
			}
			foldout_activeList[objid] = true;


			var container = document.getElementById('foldout_nav_item__'+objid);
			if( container ){
				container.style.display = 'block';

				if( foldout_use_iframe ){
					var iframe_container = document.getElementById('iframe_container_'+item.nav_key+'_'+item.level);
					if( iframe_container && document.all ){
						iframe_container.style.display = 'block';
					}
				}
			}

			var link = document.getElementById('foldout_nav_link__'+objid);
			if( link ){
				link.className = 'active_link';
			}


			switch(item.nav_item_type){
				case 'top_nav_item':
					topNav_calcLeftMargin(item);
					topNav_highlightTopImage(item,true);
					break;
				case 'breadcrumb':
					breadcrumb_calcLeftMargin(item);
					break;
				case 'bottombreadcrumb':
					bottombreadcrumb_calcTopMargin(item);
					break;
				default:

			}



		}


		function foldout_checkItemHierarchyAgainstId(item,id){
			if( !item || item.objid ==-1 ) return false;
			if( item.objid == id ) return true;
			return foldout_checkItemHierarchyAgainstId(item.parent_item,id);
		}

		function foldout_hideNavItem(parent_id){
			if( foldout_lastActiveItem && foldout_lastActiveItem.objid == parent_id ) foldout_lastActiveItem = null;
			foldout_delayArray.push(window.setTimeout("foldout_hideNavItem_delayed('"+parent_id+"')",600));
		}


		function foldout_hideNavItem_delayed(objid){
			var item = foldout_itemList[objid];
			foldout_doHideItem(item,true,true);
		}

		function foldout_doHideItem(item,hide_parent,hide_children){
			var objid = item.objid;



			foldout_activeList[objid] = false;
			if( foldout_lastActiveItem && foldout_lastActiveItem.objid == objid ) foldout_lastActiveItem = null;

			var container = document.getElementById('foldout_nav_item__'+objid);
			if( container ){
				container.style.display = 'none';

				if( foldout_use_iframe ){
					var iframe_container = document.getElementById('iframe_container_'+item.nav_key+'_'+item.level);
					if( iframe_container && document.all ){
						iframe_container.style.display = 'none';
					}
				}
			}
			var link = document.getElementById('foldout_nav_link__'+objid);
			if( link && !item.is_active){
				link.className = '';
			}


			switch(item.nav_item_type){
				case 'top_nav_item':
					topNav_calcLeftMargin(item);
					topNav_highlightTopImage(item,false);
					break;
				default:

			}

			if( hide_parent ){
				if( item.parent_item
				&&  item.parent_item.objid != -1
				&&  ( !foldout_lastActiveItem || !foldout_checkItemHierarchyAgainstId(foldout_lastActiveItem,item.parent_item.objid) ) ){
					foldout_doHideItem(item.parent_item,true,false);
				}
			}

			if( hide_children ){

				for( var c in item.children_list ){
					if(item.children_list[c] && item.children_list[c].objid != objid){
						foldout_doHideItem(item.children_list[c],false,true);
					}
				}
			}

		}


		function bottombreadcrumb_calcTopMargin(item){
			var objid = item.objid;
			var bc_elem = document.getElementById('breadcrumb_span_'+objid);
			var nav_item = document.getElementById('foldout_nav_item__'+objid);
			if( bc_elem && nav_item ){
				if( document.all ){
					nav_item.style.marginTop = '16px';
					nav_item.style.marginLeft = '0px';
				}
				else{
					nav_item.style.marginTop = '20px';
					nav_item.style.marginLeft = '0px';
				}
				return;
			}
		}

		function breadcrumb_calcLeftMargin(item){

			if( document.all ) return;
			var objid = item.objid;
			var bc_elem = document.getElementById('breadcrumb_span_'+objid);
			var nav_item = document.getElementById('foldout_nav_item__'+objid);
			if( bc_elem && nav_item ){
				nav_item.style.marginLeft = (parseInt(bc_elem.offsetLeft)-100)+'px';
				nav_item.style.marginTop = '0px';
				return;
			}
		}

		function topNav_calcLeftMargin(item){
			var container = document.getElementById('foldout_nav_item__'+item.objid);

			var top_nav_item = item;
			while( top_nav_item.parent_item ){
				top_nav_item = top_nav_item.parent_item;
			}

			var top_nav_link_id = 'top_nav_item_link__'+top_nav_item.objid;
			var top_nav_link = document.getElementById(top_nav_link_id);
			if( container && top_nav_link ){
				var left = parseInt(top_nav_link.offsetLeft)+(item.level*185);
				container.style.marginLeft = left+'px';
				if( foldout_use_iframe ){
					var iframe_container_id = 'iframe_container_'+item.nav_key+'_'+item.level;
					var iframe_container = document.getElementById(iframe_container_id);
					if( iframe_container ){
						iframe_container.style.marginLeft = left+'px';
					}
				}
				if( !document.all ){
					var top = 35;
				}
				else{
					var top = 35;
				}
				container.style.marginTop = top;
				if( foldout_use_iframe && iframe_container ){
					iframe_container.style.marginTop = top+'px';
				}
				return;
			}
		}

		function topNav_highlightTopImage(item,flag){


			var top_nav_item = item;
			while( top_nav_item.parent_item ){
				top_nav_item = top_nav_item.parent_item;
			}

			if( foldout_activeVSId == top_nav_item.objid ) return;

			var top_nav_link_id = 'top_nav_item_link__'+top_nav_item.objid;
			var top_nav_link = document.getElementById(top_nav_link_id);
			if(!top_nav_link) return;

			var class_list = top_nav_link.className.split(' ');
			var new_class_list = new Array();
			var changed = false;
			for(var i in class_list){
				if( beginsWith(class_list[i],'foldout_top_img_link_') ){
					if( flag ){
						if( !endsWith(class_list[i],'_active') ){
							new_class_list.push(class_list[i].replace(/(.*)([_]inactive)/,'$1_active'));
							changed = true;
						}
						else{
							new_class_list.push(class_list[i]);
						}
					}
					else{
						if( !endsWith(class_list[i],'_inactive') ){
							new_class_list.push(class_list[i].replace(/(.*)([_]active)/,'$1_inactive'));
							changed = true;
						}
						else{
							new_class_list.push(class_list[i]);
						}
					}
				}
				else{
					new_class_list.push(class_list[i]);
				}
			}
			if( changed ){
				top_nav_link.className = new_class_list.join(' ');
			}


		}



	

	

		var dpm_writeGlobalDebug = false;



		var dpm_requestPoolSize = 0;

		var dpm_requestRetryNumber = 10;

		var dpm_requestPool = new Array();

		var dpm_iframeRequestParams = new Array();

		function iframeRequest(onCompleteHandlerFunction, params, request){
			this.onCompleteHandlerFunction = onCompleteHandlerFunction;
			this.params = params;
			this.request = request;
		}



		function dpm_request(){
			this.url = null;
			this.params = null;

			this.requestState = -1;
			this.iframeResponseData = null;
			this.use_iframe = false;
			this.timestamp = null;


			if (window.XMLHttpRequest) {
				this.httpRequest = new XMLHttpRequest();
			} else {
				try {
					this.httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					try{
						this.httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
					}
					catch(e){
						this.use_iframe = true;
					}
				}
			}


			this.abort = function(){
				this.httpRequest.abort();
			}


			this.getReadyState = function () {
				return this.httpRequest.readyState;
			};

			this.getUnparsedResponseText = function (){
				if(this.use_iframe){
					return this.iframeResponseData;
				}
				else{
					return this.httpRequest.responseText;
				}
			}

			this.isValidResponseText = function () {
				if(this.use_iframe){
					var text = this.iframeResponseData;
				}
				else{
					var text = this.httpRequest.responseText;
				}

				if(!text) return null;

				try{
					var text = text.split('DL_BEGIN')[1];
					var text = text.split('DL_END')[0];
					return true;
				}
				catch(e){
					return false;
				}

			};



			this.getResponseText = function () {
				if(this.use_iframe){
					var text = this.iframeResponseData;
				}
				else{
					var text = this.httpRequest.responseText;
				}
				if(!text) return null;

				try{
					var text = text.split('DL_BEGIN')[1];
					var text = text.split('DL_END')[0];
					if( framework__dpm_debug_mode ){
						dpmHelper_showErrorDiv('DPM Response', text.replace(/\</g,'&lt;').replace(/\>/g,'&gt;'),true);
					}
					return text;
				}
				catch(e){
					developerAlert(this.httpRequest.responseText.replace(/\</g,'&lt;').replace(/\>/g,'&gt;'));
					return null;
				}

			};


			this.getResponseErrorContent = function () {
				if(this.use_iframe){
					var text = this.iframeResponseData;
				}
				else{
					var text = this.httpRequest.responseText;
				}
				if(!text) return null;

				try{
					var text = text.split('DL_ERROR_BEGIN')[1];
					var text = text.split('DL_ERROR_END')[0];
					return text;
				}
				catch(e){
					developerAlert(this.httpRequest.responseText.replace(/\</g,'&lt;').replace(/\>/g,'&gt;'));
					return null;
				}

			};

			this.getJavaScriptCode = function() {

				if(this.use_iframe){
					var text = this.iframeResponseData;
				}
				else{
					var text = this.httpRequest.responseText;
				}
				if(!text) return null;
				try{
					var text = text.split('DL_JS_CODE_BEGIN')[1];
					var text = text.split('DL_JS_CODE_END')[0];
					return text;
				}
				catch(e){
					return null;
				}
			}


			this.getResponseXML = function () {
				return this.httpRequest.responseXML;
			};


			this.getResponseCode = function () {
				return this.httpRequest.status;
			};

			this.isComplete = function () {
				return this.httpRequest.readyState == 4;
			};

			this.isLoading = function () {
				return this.httpRequest.readyState<4 && this.httpRequest.readyState>0 ;
			};



			this.setRequestHeader = function (key, value) {
				this.httpRequest.setRequestHeader(key, value);
			};


			this.getResponseHeader = function (key) {
				return this.httpRequest.getResponseHeader(key);
			};



			this.registerOnReadyStateChange = function (onCompleteHandlerFunction,
														params,
														request) {
				this.httpRequest.onreadystatechange = (function () {
					return function () {

						var postActionList = new Array();
						request.requestState = request.httpRequest.readyState;

						switch(request.requestState){

							case -1:

								postActionList.push('reset_state_change_trigger_function');
								break;

							case 4:
								if(onCompleteHandlerFunction){
									try{

										if(dpm_writeGlobalDebug){
											var time_diff = (new Date()).getTime()-request.timestamp;
											var response_size = request.getResponseText().length+request.getJavaScriptCode.length;
											var additionalPostParams = 'action=globalDebug&global_debug_value='+time_diff+'&global_debug_description=Size: '+response_size+' B';
											var url = dataloader_app_url+'/jsRequestDispatcher.ipm';
											dpm_doPostRequest(null, url, additionalPostParams);
										}
										document.body.style.overlow = 'hidden';
										eval(onCompleteHandlerFunction+'(request,params)');
										document.body.style.overlow = 'auto';
									}
									catch(e){

									}
								}
								postActionList.push('reset_state_change_trigger_function');
								break;
							default:

						}

					};
				}) (this.httpRequest);
			};


			this.open = function (method, url) {
				this.httpRequest.open(method, url, false);
			};
			this.open = function (method, url, async) {
				this.httpRequest.open (method, url, async);
				if (method != null && method.toLowerCase () == "post") {
					this.httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
					if (this.httpRequest.overrideMimeType) {
						this.httpRequest.setRequestHeader("Connection", "close");
					}
				}
			};


			this.send = function () {
				this.httpRequest.send(null);
			};
			this.send = function (str) {
				this.httpRequest.send (str);
			};


		}


		function dpm_initRequestPool(){
			var dpm_requestPoolLength = dpm_requestPool.length;
			for(var i=dpm_requestPoolLength;i<dpm_requestPoolSize;i++){
				dpm_requestPool[i] = new dpm_request();
			}
		}


		function dpm_getRequest(){

			var request = null;
			for(var i=0;i<dpm_requestPoolSize;i++){
				if(dpm_requestPool[i].requestState == 0){
					request = dpm_requestPool[i];
					break;
				}
			}

			if(request == null){
				dpm_requestPoolSize++;
				dpm_initRequestPool();

				request = dpm_requestPool[dpm_requestPoolSize-1];
			}
			request.url = null;
			return request;
		}


		function dpm_doGetRequest(url, onCompleteHandlerFunction, params){
			url += '&'+((new Date()).getTime());
			var request = dpm_getRequest();
			request.url = url;
			if(!request.use_iframe){
				request.open('GET',url,true);
				request.registerOnReadyStateChange(onCompleteHandlerFunction,params,request);
				request.timestamp = (new Date()).getTime();
				request.send();
			}
			else{

				var div = document.createElement('DIV');
				var div_id= 'iframe_data_div'+Date.parse(new Date());
				div.setAttribute('id',div_id);
				document.body.appendChild(div);
				div.style.display = 'none';
				if(onCompleteHandlerFunction){
					var iRequest = new iframeRequest(onCompleteHandlerFunction,params, request);
					dpm_iframeRequestParams[div_id] = iRequest;
				}
				var js_on_load_code = 'dpm_iframe_copyData("'+div_id+'")';

				loadUrl2Div(url,div_id,js_on_load_code);
			}
		}

		function dpm_iframe_copyData(div_id){
			var div = document.getElementById(div_id);
			if(dpm_iframeRequestParams[div_id]){
				onCompleteHandlerFunction = dpm_iframeRequestParams[div_id].onCompleteHandlerFunction;
				params = dpm_iframeRequestParams[div_id].params;
				request = dpm_iframeRequestParams[div_id].request;
				request.iframeResponseData = div.innerHTML;
				eval(onCompleteHandlerFunction+'(request,params)');
				dpm_iframeRequestParams[div_id] = null;
			}
			div.parentNode.removeChild(div);
		}


		function dpm_doPostRequest(formName, url, additionalPostParams, onCompleteHandlerFunction, params){
			var request = dpm_getRequest();
			request.url = url;
			request.params = additionalPostParams;
			if(!request.use_iframe){
				request.open('POST',url,true);
				if(onCompleteHandlerFunction){
					request.registerOnReadyStateChange(onCompleteHandlerFunction,params,request);
				}
				if(formName){
					var formValues = collectFormElementValues(formName, additionalPostParams);
				}
				else{
					var formValues = '';
				}
				if(additionalPostParams){
					formValues += additionalPostParams;
				}
				request.timestamp = (new Date()).getTime();

				request.send(formValues);
			}
			else{

				var div = document.createElement('DIV');
				var div_id= 'iframe_data_div'+Date.parse(new Date());
				div.setAttribute('id',div_id);
				document.body.appendChild(div);
				div.style.display = 'none';
				if(onCompleteHandlerFunction){
					var iRequest = new iframeRequest(onCompleteHandlerFunction,params, request);
					dpm_iframeRequestParams[div_id] = iRequest;
				}
				var js_on_load_code = 'dpm_iframe_copyData("'+div_id+'")';

				if(formName){
					var formValues = collectFormElementValues(formName,additionalPostParams);
				}
				else{
					var formValues = '';
				}
				if(additionalPostParams){
					formValues += additionalPostParams;
				}

				if(url.split('?').length > 1){
					url += '&'+formValues;
				}
				else{
					url += '?'+formValues;
				}

				loadUrl2Div(url,div_id,js_on_load_code);
			}
			return request;
		}

		function collectFormElementValues(formName,additionalPostParams){

			var collected = new Array();
			if(additionalPostParams){
				var tmp = additionalPostParams.split('&');
				for(var i = 0; i < tmp.length; i++){
					var tmp2 = tmp[i].split('=');
					if(tmp2.length == 2){
						if( beginsWith(tmp2[0],'?') ){
							var elem_name = tmp2[0].substring(1);
						}
						else{
							var elem_name = tmp2[0];
						}
						collected[elem_name] = true;
					}
				}
			}

			var ret = '';
			var formElements = document.forms[formName].elements;
			for(var i=0; i< formElements.length;i++){
				var element = formElements[i];
				if(!element.name) continue;
				if(collected[element.name]) continue;
				collected[element.name] = true;

				try{

					var name = formElements[i].name;

					var value = getValueOfElementObject(formElements[i]);
					if(value == null) continue;
				}
				catch(e){
					continue;
				}
				ret += name+'='+encodeURL(value)+'&';
			}
			return ret;
		}


	

	

	var dpmAPI_is_loading_gif_enabled = true;
	var dpmAPI_is_loading_gif_width = 120;
	var dpmAPI_is_loading_gif_height = 50;
	var dpmAPI_loading_position_location_type = 'mouse';
	var dpmAPI_error_div_auto_close= true;
	var dpmAPI_error_div_auto_close_delay= 5000;
	var dpmAPI_error_uses_scrollable_div = false;
	var	dpmAPI_show_js_exception_in_error_div = true;

	var dpmAPI_singleton_actions_run_list = new Array();

	function dpmAPI_makeRequest(form_name,params,callback_function,callback_function_params){
		var url = dataloader_app_url+'/jsRequestDispatcher.ipm?'+params;
		dpm_doGetRequest(url,callback_function,callback_function_params);
	}

	function dpmAPI_sendDpmError(error){
		var additionalPostParams = 'action=dpmError&dpm_error_page_content='+encodeURL(error);
		var url = dataloader_app_url+'/jsRequestDispatcher.ipm';
		dpm_doPostRequest(null, url, additionalPostParams);
	}


	function dpmAPI_loadFieldFunction(field_function,
									  ignore_page_elements,
									  form_name,
									  submit_whole_form,
									  form_field_list,
									  additional_post_params,
									  field_function_mode,
									  field_function_dynamic_infix,
									  generic_action,

									  dataloader_engine_key,
									  dataloader_engine_identifier_name,
									  dataloader_instance_key,
									  dataloader_url_engine_key,
									  dataloader_url_engine_identifier_name,
									  dataloader_url_instance_key,
									  field_function_params,
									  fieldname
									  ){

		if( !dpmAPI_singleton_actions_run_list['field_function'] ){
			dpmAPI_singleton_actions_run_list['field_function'] = new Array();
		}


		if( dpmAPI_singleton_actions_run_list['field_function'][field_function] )	{
			var function_code = "dpmAPI_loadFieldFunction(";
			var param_list = ['field_function','ignore_page_elements','form_name','submit_whole_form','form_field_list','additional_post_params','field_function_mode',
									  'field_function_dynamic_infix','generic_action','dataloader_engine_key','dataloader_engine_identifier_name','dataloader_instance_key',
									  'dataloader_url_engine_key','dataloader_url_engine_identifier_name','dataloader_url_instance_key','field_function_params','fieldname'];
			for( var i in param_list ){
				var param_value = eval(param_list[i]);
				if( i == 0 ){
					var coma = '';
				}
				else{
					var coma = ',';
				}
				if( param_value ){
					function_code += coma+'\''+param_value+'\'';
				}
				else{
					function_code += coma+'null';
				}
			}
			function_code += ')';
			window.setTimeout(function_code,200)
			return;
		}


		dpmAPI_singleton_actions_run_list['field_function'][field_function] = true;


		if(!form_name){
			form_name = 'myForm';
		}

		if(!additional_post_params){
			additional_post_params = '';
		}


		if( !dataloader_engine_key ){
			dataloader_engine_key = engine_key;
		}
		if( !dataloader_instance_key ){
			dataloader_instance_key = instance_key;
		}

		if( !dataloader_engine_identifier_name ){
			dataloader_engine_identifier_name = engine_identifier_name;
		}

		if( !dataloader_url_engine_key ){
			dataloader_url_engine_key = dataloader_engine_key;
		}
		if( !dataloader_url_instance_key ){
			dataloader_url_instance_key = dataloader_instance_key;
		}
		if( !dataloader_url_engine_identifier_name ){
			dataloader_url_engine_identifier_name = dataloader_engine_identifier_name;
		}

		if( !fieldname ){
			fieldname = field_function;
		}


		switch( field_function_mode ){
			case 'dynamic':
				if(!field_function_dynamic_infix){
					field_function_dynamic_infix = fieldname;
				}

				var all_tr_of_doc = document.getElementsByTagName('TR');
				var my_tr_list = new Array();
				var my_tr_list_id = new Array();
				var field_function_mode = 'dynamic';

				for(var i = 0;i<all_tr_of_doc.length;i++){
					if( beginsWith(all_tr_of_doc[i].id,'dFF$'+field_function_dynamic_infix+'$') ){
						var list_len = my_tr_list.length;
						my_tr_list[list_len] = all_tr_of_doc[i];
						my_tr_list[list_len].id = my_tr_list[list_len].id.replace('dFF$','dFF_tmp$');
						my_tr_list_id = my_tr_list_id.concat(my_tr_list[list_len].id);

					}
				}
				if(my_tr_list.length > 0){

					dpmAPI_showLoadingGif(my_tr_list_id[0]);
				}
				else{
					developerAlert('Can not find dynamic Rows for FieldFunction Infix \''+field_function_dynamic_infix+'\'');
					return;

				}
				break;
			case 'classic':

				var label_td = document.getElementById('fF$'+fieldname);

				dpmAPI_showLoadingGif(label_td.id);

				label_td.id = 'fF_tmp$'+fieldname;
				var field_function_mode = 'classic';
				var my_tr_list = null;
				break;
			default:
				developerAlert('dpmAPI_loadFieldFunction: fieldFunction Mode \''+field_function_mode+'\' not supported !');
				break;
		}

		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		if( document.getElementsByName('page').length == 1 ){
			var page = document.getElementsByName('page')[0].value
		}
		else{
			var page = 1;
		}
		if( document.getElementsByName('mode').length == 1 ){
			var mode = document.getElementsByName('mode')[0].value
		}
		else{
			var mode = '';
		}



		var url = dataloader_app_url+'/'+dataloader_url_engine_key+'/main.ipm';
		additional_post_params += '&'+dataloader_url_engine_identifier_name+'='+dataloader_url_instance_key;
		additional_post_params += dpmHelper_addPostParam('mode',mode,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('taid',taid,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('page',page,additional_post_params);

		if( document.forms[form_name].object_id ){
			additional_post_params += dpmHelper_addPostParam('object_id',document.forms[form_name].object_id.value,additional_post_params);
		}
		else{
			additional_post_params += dpmHelper_addPostParam('object_id',-1,additional_post_params);
		}

		additional_post_params += '&'+dataloader_engine_key+'_dataloader_mode=field_function';
		additional_post_params += '&'+dataloader_engine_key+'_dataloader_fieldname='+fieldname;
		if(field_function_params){
			additional_post_params += '&'+dataloader_engine_key+'_dataloader_field_function_params='+field_function_params;
		}

		additional_post_params += '&'+dataloader_engine_key+'_dataloader_value=';
		additional_post_params += '&'+dataloader_engine_key+'_dataloader_field_function='+field_function;

		if(ignore_page_elements){
			additional_post_params += '&'+dataloader_engine_key+'_dataloader_ignore_page_elements='+1;
		}

		var callback_function_params = new Array();
		callback_function_params.push(field_function_mode);
		callback_function_params.push(field_function);
		callback_function_params.push(fieldname);
		callback_function_params.push(field_function_dynamic_infix);
		callback_function_params.push(my_tr_list);


		if(generic_action){
			additional_post_params += '&button_generic='+generic_action;
		}

		if( submit_whole_form ){
			dpm_doPostRequest(form_name, url, additional_post_params, 'dpmAPI_loadFieldFunction_callbackFunction',callback_function_params);
		}
		else{

			if( form_field_list != null ){
				additional_post_params += dpmHelper_collectFormFieldValueList(form_name,form_field_list);
			}
			dpm_doPostRequest(null, url, additional_post_params, 'dpmAPI_loadFieldFunction_callbackFunction',callback_function_params);
		}
	}


	function dpmAPI_loadFieldFunction_callbackFunction(request,params){


		var field_function_mode = params[0];
		var field_function = params[1];
		var fieldname = params[2];
		var field_function_dynamic_infix = params[3];
		var my_tr_list = params[4];

		var data_body = request.getResponseText();

		var orginal_block_nested_fieldnames = new Array();
		var new_block_nested_fieldnames = new Array();

		var tmp_div = document.createElement('div');
		//tmp_div.style.display = 'none';
		document.body.appendChild(tmp_div);
		tmp_div.innerHTML = data_body;

		if(field_function_mode == 'dynamic'){

			for(var i=1;i<my_tr_list.length;i++){
				dpmHelper_getBlockNestedInputFieldNames(my_tr_list[i],orginal_block_nested_fieldnames);
				if( my_tr_list[i] ) my_tr_list[i].parentNode.removeChild(my_tr_list[i]);
			}

			dpmHelper_removeBlockNestedInputFields(my_tr_list[0]);

			var new_tr_list = new Array();
			while (true){
				var ret = dpmHelper_dataLoader_getElement('dFF$'+field_function_dynamic_infix+'$',tmp_div);
				if(ret == null)
					break;
				else{
					new_tr_list[new_tr_list.length] = ret.cloneNode(true);
					ret.parentNode.removeChild(ret);
				}
			}

			var last_old_item = my_tr_list[0];
			if(last_old_item){
				var p = last_old_item.parentNode;
				for(var i=0;i<new_tr_list.length;i++){
					p.insertBefore(new_tr_list[i],last_old_item);
					dpmHelper_getBlockNestedInputFieldNames(new_tr_list[i],new_block_nested_fieldnames);
				}
				p.removeChild(last_old_item);
			}
		}
		else{

			var old_label_td = document.getElementById('fF_tmp$'+fieldname);
			if( old_label_td ){
				var old_data_td = getNextSibling(old_label_td,'td');
			}
			var label_td = document.getElementById('fF$'+fieldname);
			if( label_td ){
				var data_td = getNextSibling(label_td,'td');
			}
			old_label_td.parentNode.replaceChild(label_td,old_label_td);
			old_data_td.parentNode.replaceChild(data_td,old_data_td);
		}

		document.body.style.overflow = 'auto';


		tmp_div.parentNode.removeChild(tmp_div);


		clearRegisteredOnLoadFunction();

		var js_code = request.getJavaScriptCode();
		dpmHelper_runResponseJavaScript(js_code,orginal_block_nested_fieldnames,new_block_nested_fieldnames);


		dpmAPI_hideLoadingGif(request);


		dpmAPI_singleton_actions_run_list['field_function'][field_function] = false;
	}


	function dpmAPI_sendEnginePostData(dataloader_mode,
									   additional_post_params,
									   callback_function,
									   callback_function_params,
									   form_name,
									   submit_all,
									   submit_list_id,
									   action){
		if(!form_name){
			form_name = 'myForm';
		}


		if(!dataloader_mode) dataloader_mode = 'block';
		if(!callback_function) callback_function = 'loadEngineDataBlock_callbackFunction';

		var url = dataloader_app_url+'/'+engine_key+'/main.ipm';
		if(!additional_post_params){
			additional_post_params = '';
		}
		additional_post_params += '&'+engine_key+'_dataloader_mode='+dataloader_mode;

		if(!submit_all){
			if( document.getElementsByName('taid').length == 1 ){
				var taid = document.getElementsByName('taid')[0].value
			}
			else{
				var taid = -1;
			}


			additional_post_params += dpmHelper_addPostParam(engine_identifier_name,instance_key,additional_post_params);
			if(document.forms[form_name].slave) additional_post_params += dpmHelper_addPostParam('slave',document.forms[form_name].slave.value,additional_post_params);
			if(document.forms[form_name].mode) additional_post_params += dpmHelper_addPostParam('mode',document.forms[form_name].mode.value,additional_post_params);;
			if(document.forms[form_name].page) additional_post_params += dpmHelper_addPostParam('page',document.forms[form_name].page.value,additional_post_params);
			if(document.forms[form_name].object_id) additional_post_params += dpmHelper_addPostParam('object_id',document.forms[form_name].object_id.value,additional_post_params);



			if(submit_list_id){
				additional_post_params += dpmHelper_collectFormFieldValueList(form_name, submit_list_id);
			}

			form_name = null;
		}

		if( action ){
			additional_post_params += dpmHelper_addPostParam(engine_key+'_dataloader_use_generic_action','y',additional_post_params);
			additional_post_params += dpmHelper_addPostParam('button_generic',action,additional_post_params);
		}
		additional_post_params += dpmHelper_addPostParam('taid',taid,additional_post_params);


		dpmAPI_showLoadingGif();

		dpm_doPostRequest(form_name, url, additional_post_params, callback_function,callback_function_params);
	}



	function dpmAPI_loadEngineDataBlock(blockId,
										blockSuffix,
										generic_action,
										dataloader_mode,
										callback_function,
										additional_post_params,
										form_name,

										dataloader_engine_key,
										dataloader_engine_identifier_name,
										dataloader_instance_key,
										dataloader_url_engine_key,
										dataloader_url_engine_identifier_name,
										dataloader_url_instance_key){



		if(!dataloader_mode) dataloader_mode = 'block';
		if(!callback_function) callback_function = 'loadEngineDataBlock_callbackFunction';

		if( !dataloader_engine_key ){
			dataloader_engine_key = engine_key;
		}
		if( !dataloader_instance_key ){
			dataloader_instance_key = instance_key;
		}

		if( !dataloader_engine_identifier_name ){
			dataloader_engine_identifier_name = engine_identifier_name;
		}

		if( !dataloader_url_engine_key ){
			dataloader_url_engine_key = dataloader_engine_key;
		}
		if( !dataloader_url_instance_key ){
			dataloader_url_instance_key = dataloader_instance_key;
		}
		if( !dataloader_url_engine_identifier_name ){
			dataloader_url_engine_identifier_name = dataloader_engine_identifier_name;
		}


		var url = dataloader_app_url+'/'+dataloader_url_engine_key+'/main.ipm';
		if(!additional_post_params){
			additional_post_params = '';
		}
		additional_post_params += '&'+dataloader_engine_key+'_dataloader_mode='+dataloader_mode;
		additional_post_params += '&'+dataloader_engine_key+'_dataloader_block='+encodeURL(blockId);
		if(blockSuffix){
			additional_post_params += '&'+dataloader_engine_key+'_dataloader_block_suffix='+encodeURL(blockSuffix);
		}

		var params = new Array();
		params.push(blockId);
		if(blockSuffix){
			params.push(blockSuffix);
		}



		if( dataloader_url_engine_identifier_name && dataloader_url_instance_key){
			additional_post_params += dpmHelper_addPostParam(dataloader_url_engine_identifier_name,dataloader_url_instance_key,additional_post_params);
		}


		if( document.getElementsByName('mode').length == 1 ){
			var mode = document.getElementsByName('mode')[0].value
		}
		else{
			var mode = '';
		}
		additional_post_params += dpmHelper_addPostParam('mode',mode,additional_post_params);


		if(generic_action){
			additional_post_params += dpmHelper_addPostParam(dataloader_engine_key+'_dataloader_use_generic_action','y',additional_post_params);
			additional_post_params += dpmHelper_addPostParam('button_'+generic_action,generic_action,additional_post_params);
		}


		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		additional_post_params += dpmHelper_addPostParam('taid',taid,additional_post_params);


		if(!form_name){
			form_name = 'myForm';
		}

		dpmAPI_showLoadingGif('block$'+blockId);


		dpm_doPostRequest(form_name, url, additional_post_params, callback_function,params);
	}


	function dpmAPI_loadEngineDataBlockWithAction(blockId,action){
		var url = dataloader_app_url+'/'+engine_key+'/main.ipm';

		if( document.getElementsByName('mode').length == 1 ){
			var mode = document.getElementsByName('mode')[0].value
		}
		else{
			var mode = '';
		}
		var additional_post_params = 'mode='+mode;
		additional_post_params += '&'+engine_identifier_name+'='+instance_key;
		additional_post_params += '&'+engine_key+'_dataloader_mode=block';
		additional_post_params += '&'+engine_key+'_dataloader_block='+blockId;


		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		var slave = document.myForm.slave.value;
		var mode = document.myForm.mode.value;
		var page = document.myForm.page.value;
		object_id = document.myForm.object_id.value;

		additional_post_params += dpmHelper_addPostParam('taid',taid,additional_post_params);
		additional_post_params += dpmHelper_addPostParam(engine_key+'_dataloader_use_generic_action','y',additional_post_params);
		additional_post_params += dpmHelper_addPostParam('button_generic',action,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('slave',slave,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('mode',mode,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('page',page,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('object_id',object_id,additional_post_params);

		var params = new Array();
		params.push(blockId);


		dpmAPI_showLoadingGif('block$'+blockId);


		dpm_doGetRequest(url+'?'+additional_post_params, 'loadEngineDataBlock_callbackFunction',params);
	}


	function dpmAPI_loadEnginePage(action){

		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		var pageBlockId = 'wizard_page_'+taid;


		dpmAPI_showLoadingGif();

		dpmAPI_loadEngineDataBlock(pageBlockId,null,action,'page','loadEnginePage_callbackFunction');
	}

	function loadEnginePage_callbackFunction(request,params){
		var blockId = params[0];

		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		var blockDiv = document.getElementById('wizard_page_'+taid);
		loadData_callbackFunction(request,blockDiv);

		dpmAPI_hideLoadingGif(request);
	}


	function loadEngineDataBlock_callbackFunction(request,params){
		var blockId = params[0];
		if(params.length > 1){
			var blockSuffix = params[1];
			var blockDiv = document.getElementById('block$'+blockId+'$'+blockSuffix);
		}
		else{
			var blockDiv = document.getElementById('block$'+blockId);
		}

		loadData_callbackFunction(request,blockDiv);

		dpmAPI_hideLoadingGif(request);
	}


	function dpmAPI_dummy_callbackFunction(request,params){

		dpmAPI_hideLoadingGif();
	}

	function loadData_callbackFunction(request,blockDiv){
		var response_text = request.getResponseText();
		var orginal_block_nested_fieldnames = new Array();
		dpmHelper_getBlockNestedInputFieldNames(blockDiv, orginal_block_nested_fieldnames);
		if(blockDiv && response_text){
			blockDiv.innerHTML = response_text;
			var new_block_nested_fieldnames = new Array();
			dpmHelper_getBlockNestedInputFieldNames(blockDiv,new_block_nested_fieldnames);
			var js_code = request.getJavaScriptCode();
			dpmHelper_runResponseJavaScript(js_code,orginal_block_nested_fieldnames,new_block_nested_fieldnames);
		}

		dpmAPI_hideLoadingGif(request);
	}

	function dpmAPI_callbackFunction_checkSessionParker(request){
		var response_text = request.getResponseText();
		if(response_text == 'session_parker_is_ok'){


			var js_code = request.getJavaScriptCode();
			if(js_code && js_code != ''){
				try{
					eval(js_code);
				}
				catch(e){
					developerAlert(e.message);
				}
			}
		}
		else{

			top.document.location.reload();
		}
	}


	function calculateAbsoluteTop(item,top_item,position_location_type,recursion_level){
		if(!position_location_type) position_location_type = dpmAPI_loading_position_location_type;
		if(!recursion_level) recursion_level = 0;

		switch(position_location_type){
			case 'mouse':

				var body = mouseTarget;
				while(body && body.tagName && body.tagName.toLowerCase() != 'body'){
					body = body.parentNode;
				}
				if( !body || !body.tagName || body.tagName.toLowerCase() != 'body') return 100;


				var total_height = body.offsetHeight;
				var curr_y = mouseY;
				if(total_height<curr_y+dpmAPI_is_loading_gif_height){
					return curr_y-dpmAPI_is_loading_gif_height-10;
				}
				else{
					return curr_y+10;
				}
			case 'source_element':
				if( recursion_level>0 && ( item == top_item || ! item.offsetParent ) ){
					return 0;
				}

				else if(!item
				|| item == top_item
				|| ! item.offsetParent){
					return 100;
				}
				else{
					return item.offsetTop + calculateAbsoluteTop(item.offsetParent,
																 top_item,
																 position_location_type,
																 ++recursion_level);
				}
			default:
				developerAlert('calculateAbsoluteTop:  position_location_type "'+position_location_type+'" not supported');
		}
	}

	function calculateAbsoluteLeft(item,top_item,position_location_type,recursion_level){
		if(!position_location_type) position_location_type = dpmAPI_loading_position_location_type;
		if(!recursion_level) recursion_level = 0;
		switch(position_location_type){
			case 'mouse':

				var body = mouseTarget;
				while(body && body.tagName && body.tagName.toLowerCase() != 'body'){
					body = body.parentNode;
				}
				if(!body || body.tagName.toLowerCase() != 'body') return 100;


				var total_width = body.offsetWidth;
				var curr_x = mouseX;
				if(total_width<curr_x+dpmAPI_is_loading_gif_width){
					return curr_x-dpmAPI_is_loading_gif_width-10;
				}
				else{
					return curr_x+10;
				}
			case 'source_element':
				if( recursion_level>0 && ( item == top_item || ! item.offsetParent ) ){
					return 0;
				}

				else if(!item
				|| item == top_item
				|| ! item.offsetParent){
					return 100;
				}
				else{
					return item.offsetLeft + calculateAbsoluteLeft(item.offsetParent,
																   top_item,
																   position_location_type,
																   ++recursion_level);
				}
			default:
				developerAlert('calculateAbsoluteTop:  position_location_type "'+position_location_type+'" not supported');
		}

	}



	var dpmAPI_autoCompletion_openRequestList = new Array();
	function dpmAPI_handleAutoCompletionFieldInput(fieldname, auto_completion_key,form_name,use_empty_value,additional_post_params){


		if( dpmAPI_autoCompletion_openRequestList[fieldname]
		&&  dpmAPI_autoCompletion_openRequestList[fieldname].isLoading() ){
			dpmAPI_autoCompletion_openRequestList[fieldname].abort();
		}

		var ac = autoCompletion_activeCompletionList[fieldname];


		var url = dataloader_app_url+'/'+ac.engine_key+'/main.ipm';

		if(!form_name){
			form_name = 'myForm';
		}


		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}
		if( document.getElementsByName('mode').length == 1 ){
			var mode = document.getElementsByName('mode')[0].value
		}
		else{
			var mode = '';
		}
		if( document.getElementsByName('object_id').length == 1 ){
			var object_id = document.getElementsByName('object_id')[0].value
		}
		else{
			var object_id = -1;
		}
		if( !additional_post_params ) additional_post_params = '';
		additional_post_params += dpmHelper_addPostParam(ac.engine_identifier_name,ac.instance_key,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('mode',mode,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('taid',taid,additional_post_params);
		additional_post_params += dpmHelper_addPostParam('object_id',object_id,additional_post_params);
		additional_post_params += '&'+ac.engine_key+'_dataloader_mode=input_field_auto_completion';
		additional_post_params += '&'+ac.engine_key+'_dataloader_auto_completion_key='+auto_completion_key;
		additional_post_params += '&'+ac.engine_key+'_dataloader_fieldname='+fieldname;

		if(use_empty_value){
			additional_post_params += '&'+ac.engine_key+'_dataloader_value=';
		}
		else{
			additional_post_params += '&'+ac.engine_key+'_dataloader_value='+encodeURL(getValueOfElement(fieldname,form_name));
		}
		var callback_function_params = new Array();
		callback_function_params.push(fieldname);
		dpmAPI_autoCompletion_openRequestList[fieldname] = dpm_doPostRequest(null, url, additional_post_params, 'dpmAPI_handleAutoCompletionFieldInput_callbackFunction',callback_function_params);
	}

	function dpmAPI_handleAutoCompletionFieldInput_callbackFunction(request,params){

		if( !request.isValidResponseText() ) return;


		try{
			var js_code = request.getJavaScriptCode();
			if(js_code && js_code != ''){
				eval(js_code);
			}
		}
		catch(e){
			developerAlert('dpmAPI_handleAutoCompletionFieldInput_callbackFunction: '+e.message);
		}

		var fieldname = params[0];

		autoCompletion_hideData(fieldname);
		var response_text = request.getResponseText();

		autoCompletion_displayData(fieldname,response_text);

	}


	var dpmAPI_loading_gif_id = 'dpm_loading_gif';

	var dpmAPI_loading_gif_src = framework__dpmApi_loading_gif_developer+framework__image_url_extension;

	function dpmAPI_showLoadingGif(source_elem_id,position_location_type){

		if(!dpmAPI_is_loading_gif_enabled) return;

		dpmAPI_hideLoadingGif();


		var source_elem = document.getElementById(source_elem_id);
		//developerAlert(source_elem_id+' - '+source_elem);


		var parent = document.body;
		var top = calculateAbsoluteTop(source_elem,document.body,position_location_type);
		var left = calculateAbsoluteLeft(source_elem,document.body,position_location_type);



		var gif = document.createElement('img');
		gif.setAttribute('src',dpmAPI_loading_gif_src);
		gif.setAttribute('id',dpmAPI_loading_gif_id);
		gif.style.position = 'absolute';
		gif.style.background = 'transparent';
		gif.style.top = top;
		gif.style.left = left;
		gif.style.zIndex = 10;
		parent.appendChild(gif);



		insertIframeAvoidingElementsOverload(gif,9);
	}

	function dpmAPI_hideLoadingGif(request){

		removeIframeAvoidingElementsOverload(dpmAPI_loading_gif_id);

		var gif = document.getElementById(dpmAPI_loading_gif_id);
		if(gif){
			gif.parentNode.removeChild(gif);
		}

		if(request){
			dpmHelper_showRequestError(request);
		}
	}

	function developerAlert(message){

		if( framework__show_js_debug ){
			if(!dpmAPI_show_js_exception_in_error_div){
				var iter = message.length/1000;
				if(iter > 25) iter = 25;
				for(var i = 0; i<iter; i++){
					alert(i+'\n'+message.substr(i*1000,1000));
				}
			}
			else{
				dpmHelper_showErrorDiv('Javascript Error', message,true);
			}
		}
		else{
			dpmAPI_sendDpmError(message);
		}
	}

	function dpmHelper_closeErrorDiv(){

		removeIframeAvoidingElementsOverload('__dpm_error_div_container');

		var error_div_container = document.getElementById('__dpm_error_div_container');
		if(error_div_container){
			error_div_container.parentNode.removeChild(error_div_container);
		}
		dpmHelper_errorDiv_open = false;
	}


	function dpmHelper_showRequestError(request){

		var error = request.getResponseErrorContent();

		if(!error || error == '') return;
		dpmHelper_showErrorDiv(null, error, dpmAPI_error_uses_scrollable_div, dpmAPI_error_div_auto_close, dpmAPI_error_div_auto_close_delay);
	}


	var dpmHelper_errorDiv_open = false;
	function dpmHelper_showErrorDiv(header, error, use_scrollable_div, auto_close, auto_close_delay){


		if( dpmHelper_errorDiv_open ) return;


		var error_div_container = document.createElement('DIV');
		error_div_container.id = '__dpm_error_div_container';
		error_div_container.className = 'dpm_error_div_container';

		var x_pos = parseInt(parseInt(document.body.offsetWidth) / 4);
		var y_pos = parseInt(parseInt(document.body.offsetHeight) / 2);
		error_div_container.style.left = x_pos;
		error_div_container.style.top = y_pos;
		error_div_container.style.width = 2*x_pos;
		error_div_container.style.zIndex = 100;



		var error_div_header = document.createElement('DIV');
		error_div_header.id = '__dpm_error_div_header';
		error_div_header.className = 'dpm_error_div_header';
		error_div_container.appendChild(error_div_header);


		var error_div_close_button = document.createElement('IMG');
		error_div_close_button.src = '/pic/close_char.gif';
		error_div_close_button.onclick = dpmHelper_closeErrorDiv;
		error_div_header.appendChild(error_div_close_button);

		if(header){
			var header_content = document.createTextNode(header);
			error_div_header.appendChild(header_content);
		}


		var error_div_content = document.createElement('DIV');
		error_div_content.id = '__dpm_error_div_content';
		error_div_content.className = 'dpm_error_div_content';
		error_div_container.appendChild(error_div_content);

		error_div_content.innerHTML = error;

		document.body.appendChild(error_div_container);
		if(use_scrollable_div){
			error_div_container.style.height = '300px';
			error_div_content.style.width = 2*x_pos-25;
			error_div_content.style.height = '300px';
			error_div_content.style.overflow = 'auto';
		}

		insertIframeAvoidingElementsOverload(error_div_container,99);


		if(auto_close){
			window.setTimeout('dpmHelper_closeErrorDiv()',auto_close_delay);
		}
		dpmHelper_errorDiv_open = true;
	}

	function dpmHelper_collectFormFieldValueList(form_name,form_field_list){
		var collected = new Array();
		var ret = '';
		if( form_field_list != null ){
			var field_list = form_field_list.split(',');
			for( var i=0;i<field_list.length;i++ ){

				var fieldname = field_list[i];
				var fieldvalue = getValueOfElement(fieldname,form_name);
				if( !collected[fieldname] && typeof fieldvalue != 'undefined' ){
					ret += '&'+fieldname+'='+encodeURL(fieldvalue);
					collected[fieldname] = true;
				}
			}
		}
		return ret;
	}

	function dpmHelper_dataLoader_getElement(id_prefix,parent){

		var c = parent.childNodes;
		for(var i = 0;i<c.length;i++){
			if( c[i].id && beginsWith(c[i].id,id_prefix) ){
				return c[i];
			}
			else{
				var ret = dpmHelper_dataLoader_getElement(id_prefix,c[i]);
				if(ret != null) return ret;
			}
		}
		return null;
	}


	function dpmHelper_getBlockNestedInputFieldNames(block, fieldIndex){
		if(isElementInputField(block)){
			fieldIndex[block.name] = true;
			return;
		}
		var children = block.childNodes;
		if(!children) return;
		for(var i=0; i<children.length;i++ ){
			if(isElementInputField(children[i])){
				fieldIndex[children[i].name] = true;
			}
			else{
				dpmHelper_getBlockNestedInputFieldNames(children[i],fieldIndex);
			}

		}
	}


	function dpmHelper_removeBlockNestedInputFields(block){
		if(isElementInputField(block)){
			block.parentNode.removeChild(block);
			return;
		}
		var children = block.childNodes;
		if(!children) return;
		for(var i=0; i<children.length;i++ ){
			if(isElementInputField(children[i])){
				children[i].parentNode.removeChild(children[i]);
			}
			else{
				dpmHelper_removeBlockNestedInputFields(children[i]);
			}

		}
	}



	function dpmHelper_runResponseJavaScript(js_code,orginal_block_nested_fieldnames,new_block_nested_fieldnames){
		try{

			clearRegisteredOnLoadFunction();

			if( orginal_block_nested_fieldnames ){
				for(var fieldname in orginal_block_nested_fieldnames){

					discardFieldEventAction(fieldname);

					if( !new_block_nested_fieldnames[fieldname] ){
						discardFieldEventActionByDestinationFieldName(fieldname);
					}
				}
			}


			if(js_code && js_code != ''){
				eval(js_code);
				getRegisteredOnLoadFunction();
				doEventActionInitActionsByValue();
			}
		}
		catch(e){
			developerAlert(e.message+':\n'+js_code);
		}
	}


	function dpmHelper_addFieldList2PostParam(field_list,param_list){
		var ret = '';
		if( field_list && field_list != ''){
			var keys = field_list.split(',');
			for(var i=0;i<keys.length;i++){
				var value = getValueOfElement(keys[i]);
				if( value ){
					var param = dpmHelper_addPostParam(keys[i],value,param_list);
					if( param != '' ){
						ret += param;
					}
				}
			}
		}
		return ret;
	}

	function dpmHelper_addPostParam(key,value,param_list){

		var match_exp = '&'+param_list;
		if( !match_exp.match('&'+key+'=')  ){
			return '&'+key+'='+value;
		}
		else{
			return '';
		}

	}

	

	

		function registerBrowserEvent(obj, event_type, function_name, use_caption){
			if (obj.addEventListener) {
				obj.addEventListener(event_type, function_name, use_caption);
				return true;
		  	}
		  	else if (obj.attachEvent) {
				obj.attachEvent('on'+event_type, function_name);
			    return true;
		  	}
		  	else {
				return false;
		  	}

		}

		function stopEventBubbling(e){

			if ( !isNs ){
				window.event.cancelBubble = true;
			}
			else if ( e.stopPropagation ){
				e.stopPropagation();
			}
		}

		function cancelEvent(e){
			if ( !isNs ){
				window.event.returnValue = false;
			}
			else if ( e.cancelable ){
				e.preventDefault();
			}
		}



	
function insertIframeAvoidingElementsOverload(elem,z_index){
var id_prefix = elem.id;
var iframe_container = document.getElementById(id_prefix+'$iframe_container');
if( !iframe_container ){
if(!z_index) z_index = 0;
var iframe_container = document.createElement('div');
var parent = elem.parentNode;
var top = elem.offsetTop;
var left = elem.offsetLeft;
var width = parseInt(elem.offsetWidth)-3;
var height = elem.offsetHeight;
iframe_container.setAttribute('id',id_prefix+'$iframe_container');
iframe_container.style.position = 'absolute';
iframe_container.style.zIndex = z_index;
iframe_container.style.top = top;
iframe_container.style.left = left;
parent.appendChild(iframe_container);
iframe_container.innerHTML = '<iframe src="'+framework__iframe_empty_page+'" width="'+width+'" height="'+height+'"'+
'scrolling="no" marginheight="0" marginwidth="0" frameborder="0"></iframe>';
}
}
function removeIframeAvoidingElementsOverload(elem_id){
var iframe_container = document.getElementById(elem_id+'$iframe_container');
if(iframe_container){
iframe_container.parentNode.removeChild(iframe_container);
}
}

	


	registerBrowserEvent(document, 'click', autoCompletion_closeOpenCompletions, true);

	var autoCompletion_activeCompletionList = new Array();
	var autoCompletion_activeCompletionSelectionStyleCorrection = 20;
	var autoCompletion_timeoutDefaultDuration = 400;

	function autoCompletion_registerInstance(fieldname,
											 on_change_script,
											 auto_completion_height,
											 use_auto_completion_selection_style,
											 ac_engine_key,
											 ac_instance_key,
											 ac_engine_identifier_name,
											 ac_timeout_duration){
		autoCompletion_activeCompletionList[fieldname] = new autoCompletionInstance(fieldname,ac_engine_key,ac_instance_key,ac_engine_identifier_name,ac_timeout_duration);
		autoCompletion_activeCompletionList[fieldname].on_change_script= on_change_script;
		autoCompletion_activeCompletionList[fieldname].auto_completion_height= auto_completion_height;
		autoCompletion_activeCompletionList[fieldname].use_auto_completion_selection_style = use_auto_completion_selection_style;
	}

	function autoCompletion_registerInstanceValueColumnName(fieldname,value_column_name,display_column_name){
		autoCompletion_activeCompletionList[fieldname].value_column_name= value_column_name;
		autoCompletion_activeCompletionList[fieldname].display_column_name= display_column_name;
	}

	function autoCompletion_activate(fieldname){

	}

	function autoCompletionInstance(fieldname,ac_engine_key,ac_instance_key,ac_engine_identifier_name,ac_timeout_duration){

		this.fieldname = fieldname;
		this.highlighted_row_index = 0;
		this.is_active = false;
		this.on_change_script = null;
		this.value_column_name = 'name';
		this.display_column_name = 'name';
		this.timeout = null;

		if( ac_timeout_duration != null ){
			this.timeout_duration = ac_timeout_duration;
		}
		else{
			this.timeout_duration = autoCompletion_timeoutDefaultDuration;
		}

		this.engine_key = ( ac_engine_key )? ac_engine_key : engine_key;
		this.instance_key = ( ac_instance_key )? ac_instance_key : instance_key;
		this.engine_identifier_name = ( ac_engine_identifier_name )? ac_engine_identifier_name : ( ac_engine_key )? ac_engine_key : engine_identifier_name;
	}


	autoCompletionInstance.prototype.setHighlightedRow = function(idx){
													this.highlighted_row_index = idx;
												}
	autoCompletionInstance.prototype.setActive = function(active){
													this.is_active = active;
												}



	function autoCompletion_handleSelectionButtonClick(fieldname,auto_completion_key,form_name,additional_post_params,additional_submit_field_list){
		var ac = autoCompletion_activeCompletionList[fieldname];

		if( ac.is_active ){
			autoCompletion_hideData(fieldname);
		}
		else{
			additional_post_params += dpmHelper_addFieldList2PostParam(additional_submit_field_list,additional_post_params);
			dpmAPI_handleAutoCompletionFieldInput(fieldname,auto_completion_key,form_name,true,additional_post_params);
		}
	}

	function autoCompletion_handleKeydown(event,fieldname, auto_completion_key,form_name,min_input){
		var ac = autoCompletion_activeCompletionList[fieldname];
		if( ac && ac.is_active ){
			switch(getEventPressedKey(event)){

				case 40:
					autoCompletion_highlightRow(fieldname,parseInt(ac.highlighted_row_index)+1,true);
					stopEventBubbling(event);
					return false;

				case 38:
					autoCompletion_highlightRow(fieldname,ac.highlighted_row_index-1,true);
					stopEventBubbling(event);
					return false;

				case 13:
					autoCompletion_select(fieldname);
					stopEventBubbling(event);
					return false;
				default:
					return true;
			}
		}
	}

	function autoCompletion_handleKeyup(event,fieldname, auto_completion_key,form_name,min_input,additional_post_params,additional_submit_field_list){
		var ac = autoCompletion_activeCompletionList[fieldname];
		switch(getEventPressedKey(event)){

			case 40:
				stopEventBubbling(event);
				return false;

			case 38:
				stopEventBubbling(event);
				return false;

			case 13:
				stopEventBubbling(event);
				return false;
			default:
				var field = document.getElementsByName(fieldname)[0];
				if( field.value.length >= min_input ){
					if( ac.timeout ){
						window.clearTimeout(ac.timeout);
					}
					additional_post_params += dpmHelper_addFieldList2PostParam(additional_submit_field_list,additional_post_params);
					if( ac.timeout_duration > 0 ){
						ac.timeout = window.setTimeout("dpmAPI_handleAutoCompletionFieldInput('"+fieldname+"','"+auto_completion_key+"','"+form_name+"',false,'"+additional_post_params+"','"+min_input+"')",ac.timeout_duration);
					}
					else{
						dpmAPI_handleAutoCompletionFieldInput(fieldname,auto_completion_key,form_name,false,additional_post_params,min_input);
					}
					ac.setActive(true);
				}
				else{
					autoCompletion_hideData(fieldname);
					ac.setActive(false);
				}
				return true;
		}
	}

	function autoCompletion_displayData(fieldname, data){

		var ac = autoCompletion_activeCompletionList[fieldname];

		var field = document.getElementsByName(fieldname)[0];
		var field_left = parseInt(field.offsetLeft);
		var field_top = parseInt(field.offsetTop);
		var field_height = parseInt(field.offsetHeight);
		var field_width = parseInt(field.offsetWidth);

		if( ac.use_auto_completion_selection_style ){
			field_width += autoCompletion_activeCompletionSelectionStyleCorrection;
			var selection_gif = document.getElementById('auto_completion_selection_button__'+fieldname);
			var next_elem = selection_gif;
		}
		else{
			var next_elem = field;
		}


		var data_div_id = 'auto_completion_data_div__'+fieldname;

		var container_div_id = 'auto_completion_data_div_container__'+fieldname;

		var last_container_div = document.getElementById(container_div_id);
		if(last_container_div){
			last_container_div.parentNode.removeChild(last_container_div);
		}

		var container_div = document.createElement('DIV');
		container_div.className = 'auto_completion_data_div_container';
		container_div.setAttribute('id',container_div_id);
		container_div.onclick = function(e){stopEventBubbling(e);};

		var parent_node = next_elem.parentNode;
		var next_sibling = next_elem.nextSibling;


		if(next_sibling){
			parent_node.insertBefore(container_div,next_sibling)
		}
		else{
			parent_node.appendChild(container_div);
		}

		var data_div = document.createElement('DIV');

		data_div.innerHTML = data;
		data_div.setAttribute('id',data_div_id);
		data_div.style.width = field_width;
		data_div.style.height = ac.auto_completion_height;
		data_div.style.zIndex = 10;
		container_div.appendChild(data_div);

		data_div.className = 'auto_completion_data_div';
		data_div.onmouseover = function(){
											var _fieldname = this.id.split('__')[1];
											document.getElementsByName(_fieldname)[0].focus();
										};

		var data_table = document.getElementById('auto_completion_data_table__'+fieldname);
		data_table.style.width = field_width+'px';

		ac.setHighlightedRow(0);

		ac.setActive(true);

		autoCompletion_highlightRow(fieldname,1);


		insertIframeAvoidingElementsOverload(data_div,9);
	}

	function autoCompletion_closeOpenCompletions(){
		for(var fieldname in autoCompletion_activeCompletionList){
			if(autoCompletion_activeCompletionList[fieldname].is_active){
				autoCompletion_hideData(fieldname);
			}
		}
	}

	function autoCompletion_hideData(fieldname){
		var container_div = document.getElementById('auto_completion_data_div_container__'+fieldname);
		if(container_div){

			container_div.style.display = 'none';
			autoCompletion_activeCompletionList[fieldname].setActive(false);
		}
	}

	function autoCompletion_highlightRow(fieldname,idx,is_keyboard_event){

		var ac = autoCompletion_activeCompletionList[fieldname];

		var row = document.getElementById('auto_completion_data_row__'+fieldname+'__'+idx);
		if(row){

			autoCompletion_unhighlightSelectedRow(fieldname);
			if( is_keyboard_event ){
				autoCompletion_checkScrollForOption(fieldname,idx)
			}

			switchElementClass(row,'auto_completion_data_row','auto_completion_data_row_selected',true);
			ac.setHighlightedRow(idx);


			var next_row =  document.getElementById('auto_completion_data_row__'+fieldname+'__'+(parseInt(idx)+1) );
			if( next_row ){
				switchElementClass(next_row,'auto_completion_data_row_relative_border','auto_completion_data_row_after_selected',true);
			}
			var prev_row =  document.getElementById('auto_completion_data_row__'+fieldname+'__'+(parseInt(idx)-1) );
			if( prev_row ){
				switchElementClass(prev_row,'auto_completion_data_row_relative_border','auto_completion_data_row_before_selected',true);
			}


		}
	}


	function autoCompletion_unhighlightSelectedRow(fieldname){
		var ac = autoCompletion_activeCompletionList[fieldname];
		if( ac ){
			autoCompletion_unhighlightRow(fieldname,ac.highlighted_row_index);
		}
	}


	function autoCompletion_unhighlightRow(fieldname,idx){
		var ac = autoCompletion_activeCompletionList[fieldname];
		var selected = document.getElementById('auto_completion_data_row__'+fieldname+'__'+idx);
		if(selected){
			switchElementClass(selected,'auto_completion_data_row_selected','auto_completion_data_row',true);
			ac.setHighlightedRow(0);

			var next_row =  document.getElementById('auto_completion_data_row__'+fieldname+'__'+(parseInt(idx)+1) );
			if( next_row ){
				switchElementClass(next_row,'auto_completion_data_row_after_selected','auto_completion_data_row_relative_border',true);
			}
			var prev_row =  document.getElementById('auto_completion_data_row__'+fieldname+'__'+(parseInt(idx)-1) );
			if( prev_row ){
				switchElementClass(prev_row,'auto_completion_data_row_before_selected','auto_completion_data_row_relative_border',true);
			}
		}
	}

	function autoCompletion_getValueOfElement(fieldname){
		var value_fieldname = fieldname+'__value__i';
		var value_field = document.getElementsByName(value_fieldname)[0];
		return value_field.value;
	}

	function autoCompletion_select(fieldname){
		var ac = autoCompletion_activeCompletionList[fieldname];
		var selected_id = 'auto_completion_data_row__'+fieldname+'__'+ac.highlighted_row_index;
		var selected = document.getElementById(selected_id);
		if(selected){
			var value_column_name = ac.value_column_name;
			var display_column_name = ac.display_column_name;
			var value_cell = document.getElementById('auto_completion_data_value__'+fieldname+'__'+ac.highlighted_row_index);
			var display_cell = document.getElementById('auto_completion_data_display__'+fieldname+'__'+ac.highlighted_row_index);
			if( display_cell ){
				var display = display_cell.innerHTML;
				var field = document.getElementsByName(fieldname)[0];
				field.value = display;
				if( value_cell && value_cell.innerHTML){
					var value_fieldname = fieldname+'__value__i';
					var value_field = document.getElementsByName(value_fieldname)[0];
					value_field.value = value_cell.innerHTML;
				}
				if(ac.on_change_script){
					eval(ac.on_change_script);
				}
			}
			autoCompletion_hideData(fieldname);
		}

		document.getElementsByName(fieldname)[0].focus();
	}


	function autoCompletion_checkScrollForOption(fieldname,idx){
		var row = document.getElementById('auto_completion_data_row__'+fieldname+'__'+idx);
		var row_height = row.offsetHeight;
		var row_top = row.offsetTop;
		var data_div = document.getElementById('auto_completion_data_div__'+fieldname);
		var data_table = document.getElementById('auto_completion_data_table__'+fieldname);
		var height_diff = data_div.offsetHeight - (row_height + row_top);
		if( height_diff > 0){
			data_div.scrollTop = 0;
		}
		else{
			data_div.scrollTop = -(height_diff-row_height);
		}
	}

	
