/* generated: 2010-08-23 12:46:41 (1282560401147) */

	


	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(my_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 addListEntryToFormField(form_name, fieldname, value, separator){
		var my_form=getFormObjectByNameOrReference(form_name);
		if (my_form) {

			var my_field=getFormElementByName(my_form, fieldname);

			if (my_field) {

				if (my_field.value ==''){
					my_field.value = value;
				} else {
					my_field.value = my_field.value+separator+value;
				}
			}
		}
		}

	function removeListEntryFromFormField(form_name, fieldname, value, separator){
		var my_form=getFormObjectByNameOrReference(form_name);
		if (my_form) {

			var my_field=getFormElementByName(my_form, fieldname);

			if (my_field) {
				var value_array = my_field.value.split(separator);
				var new_array = new Array();

				for (index = 0; index < value_array.length; index++){
					if (value_array[index] != value){
						new_array[new_array.length] = value_array[index];
						}
				}
				my_field.value = new_array.join(separator);
			}
		}
		}


	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 'password':
			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' ){
			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;
		}

		if(typeof field_type == 'undefined'){
			return '';
		}

		switch(field_type){
			case 'select-one':
				var field_selected_index = field.selectedIndex;
				if( typeof field_selected_index == 'undefined' ||  field_selected_index < 0) return '';
				return ( field.options[field_selected_index] )? 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 'password':
			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;
	}

	function parseInteger(s){
		s = new String(s);

		while(s.charAt(0)=='0'){
			s = s.substr(1,s.length-1);
		}
		return parseInt(s);
	}

	

	


		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 eventHandlerClickOnSpacePress(e){


			if( getEventPressedKey(e) == '32' ){
				cancelEvent(e);
				stopEventBubbling(e);



				(e.srcElement?e.srcElement:e.target).onclick();
				}
		}



	

	
		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){
						try{
							developerAlert('getRegisteredOnLoadFunction:\n'+onload_registered_functions[j]+'\n'+e.message)
						}
						catch(e) {
						}
					}
				}

				onload_registered_functions=new Array();
			}
		}


		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 clearRegisteredOnLoadFunction(){
			while(onload_registered_functions.length > 0) onload_registered_functions.pop();
		}

	

	

		function getRegisteredOnSubmitFunction(){
			if((typeof onsubmit_registered_functions != 'undefined') && onsubmit_registered_functions.length)
				for(i=0;i<onsubmit_registered_functions.length;i++){
					eval(onsubmit_registered_functions[i]);
			}
		}
	

	


	function checkAllCheckboxes(prefix, checked, suffix, count_field, form)
	{

		if (typeof form == 'undefined') {
			form = 'myForm';
		}


		if (typeof form == 'string') {
			form = document.forms[form];
		}

		// from now on we suppose it's an object


		if(prefix)
			len_prefix = prefix.length;
		else
			len_prefix = 0;

		if(suffix)
			len_suffix=suffix.length;
		else
			len_suffix = 0;

		var my_count = 0;
		var c_value = NaN;

		if (count_field){
			var c_field = eval('form.'+count_field);
			if(c_field)
				c_value = eval('form.'+count_field+'.value');
		}

		for (e=0; e<form.elements.length; e++)
		{
			var s = form.elements[e];
			var len_name = s.name.length

			if ( beginsWith(s.id,'graphical_checkbox$')
				&& s.type == 'hidden'
				&& (!prefix || s.name.substr(0,len_prefix) == prefix)
				&& (!suffix || s.name.substr(len_name-len_suffix,len_name) == suffix) )

			{
				my_count++;
				var list = graphicalCheckbox_getCheckboxValueList(s.name);
				if( list.length > 0 ){
					for( var i in list ){
						graphicalCheckbox_handleGraphicalCheckboxList(form.name,s.name,list[i],checked);
					}
				}
				else{
					setCheckboxValue('myForm',s.name,checked);
				}
				if(c_field && c_value != NaN && c_value > 0 && my_count >= c_value)
					break;
			}


			if ( (s.type == 'checkbox')
				&& (!prefix || s.name.substr(0,len_prefix) == prefix)
				&& (!suffix || s.name.substr(len_name-len_suffix,len_name) == suffix) )
			{
				my_count++;
				s.checked = checked;
				if(c_field && c_value != NaN && c_value > 0 && my_count >= c_value)
					break;
			}
		}
	}


	function checkCheckboxList(fieldname, control_checkbox_fieldname){
		var control = document.getElementsByName(control_checkbox_fieldname)[0];
		var checkboxList = document.getElementsByName(fieldname);
		for(i = 0;i<checkboxList.length;i++){
			checkboxList[i].checked = control.checked;
			highlightSearchHit(checkboxList[i],'_highlighted');
		}
	}

	function checkCheckboxListFromLink(fieldname, control_checkbox_fieldname){
		var control = document.getElementsByName(control_checkbox_fieldname)[0];
		control.checked = !control.checked;
		checkCheckboxList(fieldname, control_checkbox_fieldname);
	}


	


	



	function writeValues(n)
	{
		h = document.getElementsByName(n)[0];
		s2 = document.getElementsByName(n+'_swap_right__i')[0];
		h.value = '';
		for (i=0; i< s2.length; i++)
		{
			if (s2.options[i].value != '-indent-')
			{
				if (i == 0) h.value = s2.options[i].value;
				else h.value = h.value + "," + s2.options[i].value;
			}
		}
		swapSelection_updateDynamicOptionCounter(n);
	}


	function removeIndent()
	{
		if (document.myForm)

			for (e=0; e<document.myForm.elements.length; e++)
			{
				s = document.myForm.elements[e];

				if (s.type == 'select-multiple')
					for (i=s.length-1; i>=0; i--)
						if (s.options[i].value == '-indent-')

							s.options[i] = null;
			}
	}


	function moveElements2R(n,m,sort_list,sort_pattern,use_filter)
	{

		s1 = document.getElementsByName(n+'_swap_left__i')[0];
		s2 = document.getElementsByName(n+'_swap_right__i')[0];
		h = document.getElementsByName(n)[0];
		var del_items = new Array();

		l=s2.length-1;
		if (s2.options[l].value=='-indent-') s2.options[l].selected = false;

		for (i=0; i<s1.length-1; i++)
			if (s1.options[i].selected == true)
			{
				t = s1.options[i].text;
				v = s1.options[i].value;
				if (v == '-indent-')
					s1.options[i].selected = false;
				else
				{
					newpos = s2.length;
					if (newpos > 0 && s2.options[newpos-1].value == '-indent-')
					{
						s2.options[newpos] = new Option(s2.options[newpos-1].text);
						s2.options[newpos].text = s2.options[newpos-1].text;
						s2.options[newpos].value = '-indent-';
						if(sort_list){
							var item_inserted = false;
							if(sort_pattern != ''){
								var my_value = eval(sort_pattern.replace('%text%',t)).toLowerCase();
								for(var k=newpos-2;k>=0;k--){
									if( eval(sort_pattern.replace('%text%',s2.options[k].text)).toLowerCase() > my_value){
										s2.options[k+1].text = s2.options[k].text;
										s2.options[k+1].value = s2.options[k].value;
									}
									else{
										s2.options[k+1].text = t;
										s2.options[k+1].value = v;
										var item_inserted = true;
										break;
									}
								}
							}
							else{
								for(var k=newpos-2;k>=0;k--){
									if(s2.options[k].value == '-indent-') continue ;
									if( s2.options[k].text.toLowerCase() > t.toLowerCase() ){
										s2.options[k+1].text = s2.options[k].text;
										s2.options[k+1].value = s2.options[k].value;
									}
									else{
										s2.options[k+1].text = t;
										s2.options[k+1].value = v;
										var item_inserted = true;
										break;
									}
								}
							}


							if(!item_inserted){
								s2.options[0].text = t;
								s2.options[0].value = v;
							}
						}
						else{
							s2.options[newpos-1].text = t;
							s2.options[newpos-1].value = v;
						}
					}
					else
					{
						s2.options[newpos] = new Option(t);
						s2.options[newpos].text = t;
						s2.options[newpos].value = v;
					}

					if (m!='y'){

						if(use_filter){
							swapSelection_setIsLeft(n,s1.options[i].value, false);
						}

						s1.options[i].value = 'del';
					}
					s1.options[i].selected = false;
				}
			}

			return del_items;



	}



	function moveElements2L(n,m,sort_list,sort_pattern,use_filter)
	{

		var s1 = document.getElementsByName(n+'_swap_left__i')[0];
		var s2 = document.getElementsByName(n+'_swap_right__i')[0];
		var h = document.getElementsByName(n)[0];

		l=s1.length-1;
		if (s1.options[l].value=='-indent-') s1.options[l].selected = false;

		for (i=0; i<s2.length-1; i++)
			if (s2.options[i].selected == true)
			{
				t = s2.options[i].text;
				v = s2.options[i].value;
				if (v == '-indent-')
					s2.options[i].selected = false;
				else
				{
					if (m!='y')
					{
						newpos = s1.length;
						if (newpos > 0 && s1.options[newpos-1].value == '-indent-')
						{
							s1.options[newpos] = new Option(s1.options[newpos-1].text);
							s1.options[newpos].text = s1.options[newpos-1].text;
							s1.options[newpos].value = '-indent-';


							if(sort_list){
								var item_inserted = false;
								if(sort_pattern != ''){
									var my_value = eval(sort_pattern.replace('%text%',t)).toLowerCase();
									for(var k=newpos-2;k>=0;k--){
										if( eval(sort_pattern.replace('%text%',s1.options[k].text)).toLowerCase() > my_value){
											s1.options[k+1].text = s1.options[k].text;
											s1.options[k+1].value = s1.options[k].value;
										}
										else{
											s1.options[k+1].text = t;
											s1.options[k+1].value = v;
											var item_inserted = true;
											break;
										}
									}
								}
								else{
									for(var k=newpos-2;k>=0;k--){
										if(s1.options[k].value == '-indent-') continue ;
										if( s1.options[k].text.toLowerCase() > t.toLowerCase() ){
											s1.options[k+1].text = s1.options[k].text;
											s1.options[k+1].value = s1.options[k].value;
										}
										else{
											s1.options[k+1].text = t;
											s1.options[k+1].value = v;
											var item_inserted = true;
											break;
										}
									}
								}

								if(!item_inserted){
									s1.options[0].text = t;
									s1.options[0].value = v;
								}
							}
							else{
								s1.options[newpos-1].text = t;
								s1.options[newpos-1].value = v;
							}

						}
						else
						{
							s1.options[newpos] = new Option(t);
							s1.options[newpos].text = t;
							s1.options[newpos].value = v;
						}
					}

					if(use_filter){
						swapSelection_setIsLeft(n,s2.options[i].value, true);
					}

					s2.options[i].selected = false;
					s2.options[i].value = 'del';
				}
			}


	}

	function killElements2L (n)
	{
		s1 = document.getElementsByName(n+'_swap_left__i')[0];
		for (i=s1.length-1; i>=0; i--)
			if (s1.options[i].value == 'del')
				s1.options[i]=null;
	}

	function killElements2R (n)
	{
		s2 = document.getElementsByName(n+'_swap_right__i')[0];
		for (i=s2.length-1; i>=0; i--)
			if (s2.options[i].value == 'del')
				s2.options[i]=null;
	}



	function swapElements(n,m,sbmt,sort_list,sort_pattern,use_filter)
	{

		if ( typeof document_is_loaded != "undefined" && !document_is_loaded ) return false;

		moveElements2R(n,m,sort_list,sort_pattern,use_filter);
		moveElements2L(n,m,sort_list,sort_pattern,use_filter);
		killElements2R(n);
		killElements2L(n);
		writeValues(n);

		return false;
	}


	function swapElementsByDBClick(n,m,sens,sort_list,sort_pattern,use_filter)
	{

		if ( typeof document_is_loaded != "undefined" && !document_is_loaded ) return false;

		if(sens=='left'){
			moveElements2L(n,'n',sort_list,sort_pattern,use_filter);
			killElements2R(n);
		}
		else{
			moveElements2R(n,'n',sort_list,sort_pattern,use_filter);
			killElements2L(n);
		}
		writeValues(n);

		return false;
	}




	



	function writeMovedValues(n,suffix)
	{	if(typeof suffix=='undefined')
		{suffix='_move_selection__i'}
		h = eval("document.myForm."+n);
		s2 = eval("document.myForm."+n+suffix);

		g=new Array();
		is_visible= new Boolean(false);
		k=new Array();
		f=h.value
		for(w=0; w<h.value.length;w++){
			a=f.indexOf(",");
			if(a==-1){
				k=k.concat(f);
				break;
			}
			k=k.concat(h.value.substr(w,a));
			w+=a;
			f=f.substr(a+1,f.length-1);
		}


		for(t=0;t<k.length;t++){
			is_visible=false;
			for (r=0; r<s2.length; r++){
				if ( k[t]==s2.options[r].value){
					is_visible=true;
					break;
				}

			}
			if(is_visible==false){
				g=g.concat(k[t]);
			}
		}

		h.value=g;
		for (i=0; i<s2.length; i++){
			if (s2.options[i].value!='-indent-')
			{
				if (h.value.length == 0)
					h.value = s2.options[i].value;
				else
					h.value = h.value+","+s2.options[i].value;
			}
		}
	}


	function moveOption(s, i, d)
	{
		t = s.options[i].text;
		v = s.options[i].value;
		dis = s.options[i].disabled;
		cl = s.options[i].className;


		if(d<0)
		{
			for(j=i; j>i+d; j--)
			{
				s.options[j].text = s.options[j-1].text;
				s.options[j].value = s.options[j-1].value;
				s.options[j].disabled = s.options[j-1].disabled;
				s.options[j].className = s.options[j-1].className;
			}
		}
		else
		{
			for(j=i; j<i+d; j++)
			{
				s.options[j].text = s.options[j+1].text;
				s.options[j].value = s.options[j+1].value;
				s.options[j].disabled = s.options[j+1].disabled;
				s.options[j].className = s.options[j+1].className;
			}
		}

		s.options[i+d].text = t;
		s.options[i+d].value = v;
		s.options[i+d].disabled = dis;
		s.options[i+d].className = cl;
	}


	function moveElementsUp(n,suffix)
	{	if(typeof suffix=='undefined')
		{suffix='_move_selection__i'}
		moveElementsUpSome(n,1,suffix);
		return false;

		s = eval("document.myForm."+n+suffix);
		if (s.length==0) return false;
		l=s.length-1;
		if (s.options[l].value=='-indent-') s.options[l].selected = false;
		for (i=0; i<s.length; i++)
		{
			if (s.options[i].selected == true)
			{
				if (i == 0) break;

				if (s.options[i].value!='-indent-')
					moveOption(s, i, -1);

				s.options[i-1].selected = true;
				s.options[i].selected = false;
			}
		}
		writeMovedValues(n,suffix);
		return false;
	}


	function moveElementsDown(n,suffix)
	{
		moveElementsDownSome(n,1,suffix);
		return false;
	}


	function moveElementsPageDown(n,suffix)
	{	if(typeof suffix=='undefined')
		{suffix='_move_selection__i'}
		s = eval("document.myForm."+n+suffix);
		o = s.length;
		moveElementsDownSome(n,o,suffix);
		return false;
	}


	function moveElementsPageUp(n,suffix)
	{
		if(typeof suffix=='undefined')
			{suffix='_move_selection__i'}
		s = eval("document.myForm."+n+suffix);
		o = s.length;
		moveElementsUpSome(n,o,suffix);
		return false;
	}


	function moveElementsDownSome(n,o,suffix)
	{	if(typeof suffix=='undefined')
		{suffix='_move_selection__i'}
		s = eval("document.myForm."+n+suffix);
		if (s.length==0) return false;
		l=s.length-1;
		if (s.options[l].value=='-indent-') s.options[l].selected = false;
		for (i=s.length-1; i>=0; i--)
		{
			if (s.options[i].selected == true &! s.options[i].disabled)
			{
				if (i == s.length-1) break;
				//alert ("i="+i+"  o="+o+"  i+o="+(i+o) + "  s.length-1=" + (s.length-1));
				if (i + o >= s.length-1) o = s.length - i - 1;
				if (o == 0) break;

				if (s.options[i+o].value=='-indent-')
					{
						moveOption(s, i, o-1);

						s.options[i+o-1].selected = true;
						s.options[i].selected = false;
					}
				else
					{
						moveOption(s, i, o);

						s.options[i+o].selected = true;
						s.options[i].selected = false;
					}
			}
		}
		writeMovedValues(n,suffix);
		return false;
	}


	function moveElementsUpSome(n,o,suffix)
	{	if(typeof suffix=='undefined')
		{suffix='_move_selection__i'}
		s = eval("document.myForm."+n+suffix);
		if (s.length==0) return false;
		l=s.length-1;
		if (s.options[l].value=='-indent-') s.options[l].selected = false;
		for (i=0; i<s.length; i++)
		{
			if (s.options[i].selected == true &! s.options[i].disabled)
			{
				if (i == 0) break;
				if (i - o < 0) o = i;
				if (o == 0) break;

				if (s.options[i].value!='-indent-')
					moveOption(s, i, 0 - o);

				s.options[i-o].selected = true;
				s.options[i].selected = false;
			}
		}
		writeMovedValues(n,suffix);
		return false;
	}



	


	


	if(navigator.appName=='Netscape'){
		window.captureEvents(Event.KEYPRESS);
	}

	function getSelectionValue_normalizeUmlaut(my_string){
		my_string = my_string.replace('ö','o');
		my_string = my_string.replace('ä','a');
		my_string = my_string.replace('ü','u');
		my_string = my_string.replace('ß','ss');
		return my_string;
	}

	function getSelectionValue(input_field,sel_field,ignore_value)
	{


		my_input = getSelectionValue_normalizeUmlaut(eval('document.myForm.'+input_field+'.value.toLowerCase()'));


		if( isNaN(my_input.charCodeAt(0)) ) return false;


		my_selection_field = eval('document.myForm.'+sel_field);

		my_new_index = my_selection_field.selectedIndex;

		for(var i=0;i<my_selection_field.options.length;i++){
			var my_text = getSelectionValue_normalizeUmlaut(my_selection_field.options[i].text.toLowerCase()).substr(0,my_input.length);
			if(my_selection_field.options[i].value == ignore_value)
			 	continue;

			if(my_input == my_text){
				my_new_index = i;
				break;
			}
			else if(my_input < my_text){

				if(i == 0)
					my_new_index = 0;
				else if(my_selection_field.options[i-1].value != ignore_value)
					my_new_index = i-1;

				break;
			}
		}
		my_selection_field.selectedIndex = my_new_index;
	}





	
	var setFocusOnFirstElementOfMyForm_prefix='';

	function setFocusOnFirstElementOfMyForm(dont_skip_selection)
	{

		if (js_doSetFocusOnFirstElement && (!document.hasFocus || document.hasFocus())){

			if(dont_skip_selection)
				dont_skip_selection=true;
			else
				dont_skip_selection=false;

			if (setFocusOnFirstElementOfMyForm_prefix && setFocusOnFirstElementOfMyForm_prefix != '')
				if(dont_skip_selection)
					window.setTimeout("setFocusOnFirstElementOfMyForm_internal(true)",200);
				else
					window.setTimeout("setFocusOnFirstElementOfMyForm_internal(false)",200);
			else
				setFocusOnFirstElementOfMyForm_internal(dont_skip_selection);
		}
	}

	function setFocusOnFirstElementOfMyForm_internal(dont_skip_selection)
	{

		if ( document.myForm && document.myForm.elements)


		for (i=0; i<document.myForm.elements.length; i++) {
			n=document.myForm.elements[i].name;


			if(n == 'engine_hidden_fields_begin') return false;

			if (setFocusOnFirstElementOfMyForm_prefix &&
					n.substring(0,setFocusOnFirstElementOfMyForm_prefix.length) != setFocusOnFirstElementOfMyForm_prefix)
					continue;
			t=document.myForm.elements[i].type;
			tn=document.myForm.elements[i].tagName;


			if (t != 'hidden' && t != 'submit' && t != 'reset' && t != 'button' && t != 'image'
					&& ((!dont_skip_selection && t != 'select-one') && (tn != 'FIELDSET')
					|| (dont_skip_selection == 'true' && t == 'select-one')) ) {
				try{
					document.myForm.elements[i].focus();
					break;
				}
				catch(e){}
			}
		}
	}

	

		


		var exclSel_array_of_resultset = new Array();

		var exclSel_sort_order_list = new Array();

		var exclSel_last_exclusive_selected_items_list = new Array();

		var exclSel_all_selected_items = new Array();

		var exclSel_last_changed_selection = new Array();


		function exclSel_addNewPrefixToUsedList(prefix,forbidden_items_list,resultset_list_objid,resultset_list_name){


			exclSel_last_changed_selection.length++;
			exclSel_last_changed_selection[prefix] = '';


			exclSel_sort_order_list.length++;
			exclSel_sort_order_list[prefix] = new Array();


			exclSel_all_selected_items.length++;
			exclSel_all_selected_items[prefix] = new Array();
			exclSel_all_selected_items[prefix] = forbidden_items_list;


			exclSel_last_exclusive_selected_items_list.length++;
			exclSel_last_exclusive_selected_items_list[prefix] = new Array();


			exclSel_array_of_resultset.length++;
			exclSel_array_of_resultset[prefix]=new Array(2);
			exclSel_array_of_resultset[prefix]["objid"]=new Array();
			exclSel_array_of_resultset[prefix]["objid"]=resultset_list_objid;
			exclSel_array_of_resultset[prefix]["name"]=new Array();
			exclSel_array_of_resultset[prefix]["name"]=resultset_list_name;
		}

		function exclSel_addNewFieldnameToUsedList(prefix,fieldname,fieldname,sort_order_list){

			exclSel_sort_order_list[prefix].length++;
			exclSel_sort_order_list[prefix][fieldname] = new Array();
			exclSel_makeSortOrderListForFieldname(sort_order_list.length,prefix,fieldname,sort_order_list);
		}


		function exclSel_initUseExclusiveSelection(){


			if(exclSel_sort_order_list.length==0){
				return false;

			}

			for(prefix in exclSel_sort_order_list){
				for(fieldname in exclSel_sort_order_list[prefix]){
					field=eval('document.myForm.'+fieldname);
					selected_value_index =  field.selectedIndex;
					this_value = eval('document.myForm.'+fieldname+'.options['+selected_value_index+'].value');
					exclSel_last_exclusive_selected_items_list[prefix][fieldname] = this_value;
				}
			}
		}

		function exclSel_makeSortOrderListForFieldname(list_count,prefix,fieldname,sort_order_list){

			if(list_count==0)
				my_tree_depth = 0;
			else{
				if(list_count%3==0)
					my_tree_depth = parseInt(Math.log(list_count));
				else
					my_tree_depth = parseInt(Math.log(list_count))+1;
			}


			exclSel_sort_order_list[prefix][fieldname]=new Array(my_tree_depth);

			d=2;
			levels=new Array(my_tree_depth);
			levels[my_tree_depth-1]=list_count;
			a=list_count;
			while(d<=my_tree_depth){
				if(a%3==0)
					a=parseInt(a/3);
				else
					a=parseInt(a/3)+1;

				levels[my_tree_depth-d]=a;
				d++;
			}

			if(my_tree_depth>0){
				for(i=0;i<my_tree_depth;i++)
					exclSel_sort_order_list[prefix][fieldname][i]=new Array(levels[0]);
				for(k=0;k<levels[0];k++){
					if(my_tree_depth==1)
						my_value=sort_order_list[k];
					else
						my_value=0;
					if(k==levels[0])
						break;
					exclSel_sort_order_list[prefix][fieldname][0][k]=my_value;
				}

				if(my_tree_depth>1){
					level_counter_1=0;
					Level1:
					for(k=0;k<levels[0];k++){
						exclSel_sort_order_list[prefix][fieldname][1][k]=new Array();
						for(i=0;i<3;i++){
							if(my_tree_depth==2)
								my_value=sort_order_list[level_counter_1];
							else
								my_value=0;
							if(level_counter_1==levels[1])
								break Level1;
							else
								level_counter_1++;
							exclSel_sort_order_list[prefix][fieldname][1][k][i]=my_value;
						}
					}

					if(my_tree_depth>2){
						level_counter_2=0;
						Level2:
						for(k=0;k<levels[0];k++){
							exclSel_sort_order_list[prefix][fieldname][2][k]=new Array();
							for(i=0;i<3;i++){
								exclSel_sort_order_list[prefix][fieldname][2][k][i]=new Array();
								for(j=0;j<3;j++){
									if(my_tree_depth==3)
										my_value=sort_order_list[level_counter_2];
									else
										my_value=0;
									if(level_counter_2==levels[2])
										break Level2;
									else
										level_counter_2++;
									exclSel_sort_order_list[prefix][fieldname][2][k][i][j]=my_value;
								}
							}
						}

						if(my_tree_depth>3){
							level_counter_3=0;
							Level3:
							for(k=0;k<levels[0];k++){
								exclSel_sort_order_list[prefix][fieldname][3][k]=new Array();
								for(i=0;i<3;i++){
									exclSel_sort_order_list[prefix][fieldname][3][k][i]=new Array();
									for(j=0;j<3;j++){
										exclSel_sort_order_list[prefix][fieldname][3][k][i][j]=new Array();
										for(l=0;l<3;l++){
											if(my_tree_depth==4)
												my_value=sort_order_list[level_counter_3];
											else
												my_value=0;
											if(level_counter_3==levels[3])
												break Level3;
											else
												level_counter_3++;
											exclSel_sort_order_list[prefix][fieldname][3][k][i][j][l]=my_value;
										}
									}
								}
							}

							if(my_tree_depth>4){
								level_counter_4=0;
								Level4:
								for(k=0;k<levels[0];k++){
									exclSel_sort_order_list[prefix][fieldname][4][k]=new Array();
									for(i=0;i<3;i++){
										exclSel_sort_order_list[prefix][fieldname][4][k][i]=new Array();
										for(j=0;j<3;j++){
											exclSel_sort_order_list[prefix][fieldname][4][k][i][j]=new Array();
											for(l=0;l<3;l++){
												exclSel_sort_order_list[prefix][fieldname][4][k][i][j][l]=new Array();
												for(m=0;m<3;m++){
													if(my_tree_depth==5)
														my_value=sort_order_list[level_counter_4];
													else
														my_value=0;
													if(level_counter_4==levels[4])
														break Level4;
													else
														level_counter_4++;
													exclSel_sort_order_list[prefix][fieldname][4][k][i][j][l][m]=my_value;
												}
											}
										}
									}
								}

								if(my_tree_depth>5){
									level_counter_5=0;
									Level5:
									for(k=0;k<levels[0];k++){
										exclSel_sort_order_list[prefix][fieldname][5][k]=new Array();
										for(i=0;i<3;i++){
											exclSel_sort_order_list[prefix][fieldname][5][k][i]=new Array();
											for(j=0;j<3;j++){
												exclSel_sort_order_list[prefix][fieldname][5][k][i][j]=new Array();
												for(l=0;l<3;l++){
													exclSel_sort_order_list[prefix][fieldname][5][k][i][j][l]=new Array();
													for(m=0;m<3;m++){
														exclSel_sort_order_list[prefix][fieldname][5][k][i][j][l][m]=new Array();
														for(n=0;n<3;n++){
															if(my_tree_depth==6)
																my_value=sort_order_list[level_counter_5];
															else
																my_value=0;
															if(level_counter_5==levels[5])
																break Level5;
															else
																level_counter_5++;
															exclSel_sort_order_list[prefix][fieldname][5][k][i][j][l][m][n]=my_value;
														}
													}
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}

		function exclSel_getIdByIndex(prefix,fieldname,ind){
			levels=exclSel_sort_order_list[prefix][fieldname].length;
			id = new Array(levels);
			for(i=levels;i>0;i--){
				a=ind;
				for(j=0;j<i-1;j++){
					a=parseInt(a/3);
				}
				id[levels-i]=a%3;
			}
			return id;
		}

		function exclSel_getValueById(prefix,fieldname,id){

			v=0;
			switch(exclSel_sort_order_list[prefix][fieldname].length){
				case 6:
					v+=exclSel_sort_order_list[prefix][fieldname][5][id[0]][id[1]][id[2]][id[3]][id[4]][id[5]];

				case 5:
					v+=exclSel_sort_order_list[prefix][fieldname][4][id[0]][id[1]][id[2]][id[3]][id[4]];

				case 4:
					v+=exclSel_sort_order_list[prefix][fieldname][3][id[0]][id[1]][id[2]][id[3]];

				case 3:
					v+=exclSel_sort_order_list[prefix][fieldname][2][id[0]][id[1]][id[2]];

				case 2:
					v+=exclSel_sort_order_list[prefix][fieldname][1][id[0]][id[1]];

				case 1:
					v+=exclSel_sort_order_list[prefix][fieldname][0][id[0]];
			}
			return v;
		}

		function exclSel_changeSortOrder(prefix,fieldname,begin_id,inc){


			switch(exclSel_sort_order_list[prefix][fieldname].length){
				case 6:
					for(l=exclSel_sort_order_list[prefix][fieldname][5][begin_id[0]][begin_id[1]][begin_id[2]][begin_id[3]][begin_id[4]].length-1;l>begin_id[5];l--)
						exclSel_sort_order_list[prefix][fieldname][5][begin_id[0]][begin_id[1]][begin_id[2]][begin_id[3]][begin_id[4]][l]+=inc;

				case 5:
					for(l=exclSel_sort_order_list[prefix][fieldname][4][begin_id[0]][begin_id[1]][begin_id[2]][begin_id[3]].length-1;l>begin_id[4];l--)
						exclSel_sort_order_list[prefix][fieldname][4][begin_id[0]][begin_id[1]][begin_id[2]][begin_id[3]][l]+=inc;

				case 4:
					for(l=exclSel_sort_order_list[prefix][fieldname][3][begin_id[0]][begin_id[1]][begin_id[2]].length-1;l>begin_id[3];l--)
						exclSel_sort_order_list[prefix][fieldname][3][begin_id[0]][begin_id[1]][begin_id[2]][l]+=inc;

				case 3:
					for(l=exclSel_sort_order_list[prefix][fieldname][2][begin_id[0]][begin_id[1]].length-1;l>begin_id[2];l--)
						exclSel_sort_order_list[prefix][fieldname][2][begin_id[0]][begin_id[1]][l]+=inc;

				case 2:
					for(l=exclSel_sort_order_list[prefix][fieldname][1][begin_id[0]].length-1;l>begin_id[1];l--)
						exclSel_sort_order_list[prefix][fieldname][1][begin_id[0]][l]+=inc;

				case 1:
					for(l=exclSel_sort_order_list[prefix][fieldname][0].length-1;l>begin_id[0];l--)
						exclSel_sort_order_list[prefix][fieldname][0][l]+=inc;
			}
		}



		function exclSel_useExclusiveSelection(fieldname,prefix,dummy_item_id){

			field=eval('document.myForm.'+fieldname);

			selected_value_index =  field.selectedIndex;
			selected_value = eval('document.myForm.'+fieldname+'.options['+selected_value_index+'].value');

			nf = document.myForm.length;
			prefix_len = prefix.length ;


			if(selected_value != dummy_item_id){
				temp_array = new Array(selected_value);
				exclSel_all_selected_items[prefix]=exclSel_all_selected_items[prefix].concat(temp_array);
			}

			for(i=0;i<exclSel_array_of_resultset[prefix]["objid"].length;i++){
				if(exclSel_array_of_resultset[prefix]["objid"][i]==selected_value){
					selected_rs_ind=i;
					break;
				}
			}



			for(my_fieldname in exclSel_sort_order_list[prefix]){
				curr_elem = eval('document.myForm.'+my_fieldname);

				if(my_fieldname==fieldname){
					continue;
				}

				if(selected_value_index==0)
					continue;




				id= new Array();
				id=exclSel_getIdByIndex(prefix,my_fieldname,selected_rs_ind);


				sort_order = exclSel_getValueById(prefix,curr_elem.name,id);
				curr_elem.options[sort_order+1]=null;

				exclSel_changeSortOrder(prefix,my_fieldname,id,-1);

			}


			if(exclSel_last_exclusive_selected_items_list[prefix][fieldname] != dummy_item_id
				&& exclSel_last_exclusive_selected_items_list[prefix][fieldname]!=''){

				for(a=0;a<exclSel_array_of_resultset[prefix]["objid"].length;a++){
					if(exclSel_array_of_resultset[prefix]["objid"][a] == exclSel_last_exclusive_selected_items_list[prefix][fieldname]){
						my_text=exclSel_array_of_resultset[prefix]["name"][a];
						break;
					}
				}

				for(my_fieldname in exclSel_last_exclusive_selected_items_list[prefix]){
					curr_elem = eval('document.myForm.'+my_fieldname);

					if(my_fieldname==fieldname){
						continue;
					}


					id= new Array
					id=exclSel_getIdByIndex(prefix,curr_elem.name,a);


					sort_order = exclSel_getValueById(prefix,curr_elem.name,id);


					my_length=curr_elem.options.length;
					curr_elem.options.length++;
					curr_elem.options[my_length] = new Option();


					for(t=my_length-1;t>sort_order;t--){


						curr_elem.options[t+1].value = curr_elem.options[t].value;
						curr_elem.options[t+1].text = curr_elem.options[t].text;

						if(curr_elem.selectedIndex==t)
							curr_elem.selectedIndex=t+1;
					}

					exclSel_changeSortOrder(prefix,curr_elem.name,id,1);


					curr_elem.options[sort_order+1].value = exclSel_last_exclusive_selected_items_list[prefix][fieldname];
					curr_elem.options[sort_order+1].text  = my_text;


					for(z=0;z<exclSel_all_selected_items[prefix].length;z++){
						if(exclSel_all_selected_items[prefix][z]==exclSel_all_selected_items[prefix][fieldname]){
							exclSel_all_selected_items[prefix][z]=exclSel_all_selected_items[prefix][exclSel_all_selected_items[prefix].length-1];
							exclSel_all_selected_items[prefix].length--;
							break;
						}
					}
				}
			}


			if(selected_value_index>0)
				exclSel_last_exclusive_selected_items_list[prefix][fieldname]=selected_value;
			else
				exclSel_last_exclusive_selected_items_list[prefix][fieldname]='';


			field = eval('document.myForm.'+prefix+'_all_selected_items');
			field.value= exclSel_all_selected_items[prefix].join(",");

			exclSel_storeLastChangedSelection(prefix,fieldname)
		}

		function exclSel_storeLastChangedSelection(prefix,fieldname){


			exclSel_last_changed_selection[prefix] = fieldname;
		}


		function exclSel_getNextSelectionOnFocus(prefix,fieldname,use_exclusive_selection,dummy_item_id,mode){

			field=eval('document.myForm.'+fieldname);

			selected_value_index =  field.selectedIndex;
			selected_value = eval('document.myForm.'+fieldname+'.options['+selected_value_index+'].value');

			if(selected_value_index!=0)
				return;


			last_changed_fieldname = exclSel_last_changed_selection[prefix];

			if(last_changed_fieldname=='')
				return;

			last_changed_field=eval('document.myForm.'+last_changed_fieldname);

			if(!(last_changed_field))
				return;

			last_changed_selected_value_index =  last_changed_field.selectedIndex;
			last_changed_selected_value = eval('document.myForm.'+last_changed_fieldname+'.options['+last_changed_selected_value_index+'].value');

			if(last_changed_selected_value_index<=0)
				return;

			if(use_exclusive_selection){

				for(i=0;i<exclSel_array_of_resultset[prefix]["objid"].length;i++){
					if(exclSel_array_of_resultset[prefix]["objid"][i]==last_changed_selected_value){

						id= new Array
						id=exclSel_getIdByIndex(prefix,fieldname,i);


						sort_order = exclSel_getValueById(prefix,fieldname,id);
						break;
					}
				}
				switch(mode){
					case 'next_option':
						if(field.options.length-1>sort_order){
							field.selectedIndex=sort_order+1;

							exclSel_useExclusiveSelection(fieldname,prefix,dummy_item_id);
							exclSel_storeLastChangedSelection(prefix,fieldname);
						}
						break;
					case 'same_option':
						if(field.options.length > sort_order){
							field.selectedIndex = sort_order;

							exclSel_useExclusiveSelection(fieldname,prefix,dummy_item_id);
							exclSel_storeLastChangedSelection(prefix,fieldname);
						}
						break;
					default:
						alert('mode '+mode+' not supported!');
				}
			}
			else{
				switch(mode){
					case 'next_option':
						if(field.options.length-1>last_changed_selected_value_index){
							field.selectedIndex=last_changed_selected_value_index+1;
							exclSel_storeLastChangedSelection(prefix,fieldname);
						}
						break;
					case 'same_option':
						if(field.options.length > last_changed_selected_value_index){
							field.selectedIndex = last_changed_selected_value_index;
							exclSel_storeLastChangedSelection(prefix,fieldname);
						}
						break;
					default:
						alert('mode '+mode+' not supported!');
				}
			}
		}

		
	
	

		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;
				try{location.href=my_href;}catch(e){}
			}
		}
	

	
		function openJsWindowWithFocus(url,name,attributes)
		{
			//alert(attributes);
			NewOpenedWindow = window.open(url,name,attributes);
			NewOpenedWindow.focus();
		}
	

	

	var graphicalCheckbox_graphicList = new Array();

	function graphicalCheckbox_registerCheckboxGraphic(fieldname,graphic,id,value,type){

		graphic.onload = function(){};

		if(!graphicalCheckbox_graphicList[fieldname]){
			graphicalCheckbox_graphicList[fieldname] = new Array();
		}
		if(id){
			graphicalCheckbox_graphicList[fieldname]['value$'+id] = graphic;
		}
		else{
			graphicalCheckbox_graphicList[fieldname]['__graphic'] = graphic;
		}
		graphicalCheckbox_graphicList[fieldname]['__value'] = value;


		var link = graphic;
		while( link && link.nodeName.toUpperCase() != 'A' ){
			link = link.parentNode;
		}

		registerBrowserEvent(link,'keypress',graphicalCheckbox_handleKeypress);

	}


	function graphicalCheckbox_getCheckboxValueList(fieldname){
		var ret = new Array();
		for( var i in graphicalCheckbox_graphicList[fieldname] ){
			if( beginsWith(i,'value$') ){
				ret.push(i.split('$')[1]);
			}
		}
		return ret;
	}

	function graphicalCheckbox_getCheckboxGraphic(fieldname, id){
		if(!graphicalCheckbox_graphicList[fieldname]) return null;
		return (id)? graphicalCheckbox_graphicList[fieldname]['value$'+id] : graphicalCheckbox_graphicList[fieldname]['__graphic'];
	}



	function setCheckboxValue(formname,fieldname,value){

		field = document.getElementsByName(fieldname)[0];


		if(field && field.type == 'checkbox'){
			field.checked = (value == 0 || !value);
		}
		else{
			if(value == 0 || !value){
				writeValue2hiddenField(formname,fieldname,0);
				checkboxCheckItem(false,fieldname);
			}
			else{
				writeValue2hiddenField(formname,fieldname,1);
				checkboxCheckItem(true,fieldname);
			}
		}
	}

	function graphicalCheckbox_getCheckboxPathByValue(path,value){

		if( !path || path == '' ) return path;
		var tmp = path.split('/');

		var file = tmp[tmp.length-1];


		var tmp_tmp = new Array();
		for(var i = 0; i<tmp.length-1;i++){
			tmp_tmp = tmp_tmp.concat(tmp[i]);
		}

		tmp = tmp_tmp;

		var tmp2 = file.split('.');
		var filename = tmp2[0];
		var tmp3 = tmp2[1].split('?');
		var fileext = tmp3[0];
		if( tmp3.length == 2 ){
			var file_version = '?'+tmp3[0];
		}
		else{
			var file_version = '';
		}
		var dir = tmp.join('/');

		var prefix = '';
		if(endsWith(filename,'_checked')){
			prefix = filename.substring(0,filename.length-7);
		}
		if(endsWith(filename,'_unchecked')){
			prefix = filename.substring(0,filename.length-9);
		}
		if(endsWith(filename,'_selected')){
			prefix = filename.substring(0,filename.length-8);
		}
		if(endsWith(filename,'_unselected')){
			prefix = filename.substring(0,filename.length-10);
		}

		if(value){
			switch(filename){
				case prefix+'selected':
				case prefix+'unselected':
					return dir+'/'+prefix+'selected.'+fileext+file_version;
				case prefix+'checked':
				case prefix+'unchecked':
					return dir+'/'+prefix+'checked.'+fileext+file_version;
			}
		}
		else{
			switch(filename){
				case prefix+'selected':
				case prefix+'unselected':
					return dir+'/'+prefix+'unselected.'+fileext+file_version;
				case prefix+'checked':
				case prefix+'unchecked':
					return dir+'/'+prefix+'unchecked.'+fileext+file_version;
			}
		}
	}


	function functionMakeGraphicalCheckboxValue(formname,fieldname,value)
	{
		field = document.getElementsByName(fieldname)[0];
		field_value = field.value;
		if( field.value == value ){
			writeValue2hiddenField(formname,fieldname,0);
			checkboxCheckItem(false,fieldname);
		}
		else{
			writeValue2hiddenField(formname,fieldname,value);
			checkboxCheckItem(true,fieldname);
		}

	}



	function functionMakeGraphicalCheckboxListValues(formname,fieldname,id,type,self_toggle_radio)
	{

		var field = document.forms[formname].elements[fieldname];
		check=true;
		value_list=field.value.split(',');
		for(i=0;i<value_list.length;i++){
			if(value_list[i]==id){
				check=false;
				break;
			}
		}



		if(type == 'radio'){
			graphicalCheckbox_handleGraphicalRadioList(formname,fieldname,id,check,self_toggle_radio);
		}

		else{
			graphicalCheckbox_handleGraphicalCheckboxList(formname,fieldname,id,check);
		}
	}


	function graphicalCheckbox_handleGraphicalRadioList(formname,fieldname,id,check,self_toggle_radio){
		var field = document.forms[formname].elements[fieldname];
		value_list=field.value.split(',');
		if( !self_toggle_radio && field.value == id )
			return;
		else{
			if( self_toggle_radio ){
				var value = getValueOfElement(fieldname);
				if( value == id ){
					toggle_value = '';
				}
				else{
					toggle_value = id;
				}
				writeValue2hiddenField(formname,fieldname,toggle_value);
				radioCheckItem(fieldname,toggle_value)
			}
			else{
				writeValue2hiddenField(formname,fieldname,id);

				radioCheckItem(fieldname,id)
			}
		}
	}

	function graphicalCheckbox_handleGraphicalCheckboxList(formname,fieldname,id,check){
		var field = document.forms[formname].elements[fieldname];
		value_list=field.value.split(',');

		checkboxCheckItem(check,fieldname, id);
		if(check){

			if(field.value=='')
				writeValue2hiddenField(formname,fieldname,id);
			else
				writeValue2hiddenField(formname,fieldname,field.value+','+id);
		}
		else{

			writeValue2hiddenField(formname,fieldname,'');
			for(i=0;i<value_list.length;i++){
				if(value_list[i]!=id){
					if(field.value=='')
						writeValue2hiddenField(formname,fieldname,value_list[i]);
					else
						writeValue2hiddenField(formname,fieldname,field.value+','+value_list[i]);
				}
			}
		}
	}


	function checkboxCheckItem(check,item_name, id){

		var item = graphicalCheckbox_getCheckboxGraphic(item_name, id);
		if(check){
			var img_src = graphicalCheckbox_getCheckboxPathByValue(item.getAttribute('src'),true);
		}
		else{
			var img_src = graphicalCheckbox_getCheckboxPathByValue(item.getAttribute('src'),false);
		}

		item.setAttribute('src',img_src);
	}

	function radioCheckItem(fieldname,id){
		var value = getValueOfElement(fieldname);
		for(var i in graphicalCheckbox_graphicList[fieldname]){
			if( !beginsWith(i,'value$') ) continue;
			var item = graphicalCheckbox_graphicList[fieldname][i];
			if(i == 'value$'+id ){
				var sign = true;
			}
			else{
				var sign = false;
			}
			var img_src = graphicalCheckbox_getCheckboxPathByValue(item.src,sign);
			item.setAttribute('src',img_src);
		}

	}


	function graphicalCheckbox_handleKeypress(e){

		if( getEventPressedKey(e) == '32' ){
			cancelEvent(e);
			stopEventBubbling(e);

			var link = getEventPressedTarget(e);
			while( link && link.nodeName.toUpperCase() != 'A' ){
				link = link.parentNode;
			}
			link.onclick();
		}
	}

	



	function enableAllFormElements(){
		for(i=0;i<document.myForm.elements.length;i++){
			t=document.myForm.elements[i].type;


			if (t != 'hidden' && t != 'submit' && t != 'reset' && t != 'button' && t != 'image'){
				elem_was_disabled = false;
				for(j=0;j<form_disabled_elements.length;j++){
					if(document.myForm.elements[i].name == form_disabled_elements[j])
						elem_was_disabled=true;
				}
				if(!elem_was_disabled){
						document.myForm.elements[i].disabled=false;
				}
			}
		}
	}

	function disableAllFormElements(){

		form_disabled_elements.length=0;
		for(i=0;i<document.myForm.elements.length;i++){
			t=document.myForm.elements[i].type;


			if (t != 'hidden' && t != 'submit' && t != 'reset' && t != 'button' && t != 'image'){

				if(document.myForm.elements[i].disabled)
					form_disabled_elements[form_disabled_elements.length]=document.myForm.elements[i].name;
				else
					document.myForm.elements[i].disabled=true;
			}
		}
	}


function getParentForm(element){
if (typeof element == 'string'){
element=document.getElementById(element);
}
if (element && element.parentNode){
var my_elem=element;
while (my_elem) {
if (my_elem.tagName =='FORM') {
return my_elem;
}
my_elem=my_elem.parentNode;
}
}
return null;
} //getParentForm

	

		var enterClickActionList = new Array();

		function ActionButton(button_name,action,func){
			this.button_name = button_name;
			this.action = action;
			this.func = func;
		}

		function registerEnterClickAction(elem_name,action,func){
			enterClickActionList[elem_name] = new ActionButton(elem_name,action,func);
		}


		function checkEnterClickAction(target){
			if( target && target.name && enterClickActionList[target.name] ){
				if( enterClickActionList[target.name].action ){
					myFormSubmit(enterClickActionList[target.name].action);
					return true;
				}
				else{
					eval(enterClickActionList[target.name].func);
					return false;
				}
			}
			return false;
		}


		function checkKeyPressEvent(e){
			try{

				var ie4=document.all;
				var ns6=document.getElementById&&!document.all;
				if(ns6){
					var my_field_type  = e.target.type;

					var form = getParentForm(e.target);
					if(form){
						var form_name = form.getAttribute('name');
					}
					else{
						var form_name = 'myForm';
					}

					if(e.which == 13)
						var is_return_clicked = true;
					else
						var is_return_clicked = false;

					if( is_return_clicked && checkEnterClickAction(e.target) ){
						return false;
					}

					if(is_return_clicked && (typeof my_field_type == 'undefined'
											|| my_field_type == ''
											|| my_field_type == 'text'
											|| my_field_type == 'checkbox'
											|| my_field_type == 'radio'
											|| my_field_type == 'password')){
						clickCurrentDefaultButtonNS(form_name);
						return false;
					}
				}
				else if(ie4){

						if(event.keyCode == 13)
							var is_return_clicked = true;
						else
							var is_return_clicked = false;
						var my_field_type  = event.srcElement.type;

						var form= getParentForm(event.srcElement);
						if(form){
							var form_name = form.getAttribute('name');
						}
						else{
							var form_name = 'myForm';
						}

						if( is_return_clicked && checkEnterClickAction(event.srcElement) ){
							return false;
						}

						if(is_return_clicked && (typeof my_field_type == 'undefined'
												|| my_field_type == 'text'
												|| my_field_type == 'checkbox'
												|| my_field_type == 'radio'
												|| my_field_type == 'password')){
							clickCurrentDefaultButton(form_name);
							return false;
						}
					}
			}
			catch (e){developerAlert(e.message) }
		}






		function registerActionButton(button_id,is_default,image_path,default_infix,over_suffix,out_suffix,down_suffix){

			var elem_id = button_id;
			if(!document.getElementById(button_id)) elem_id = 'imageLink_'+button_id;
			var parent_form = getParentForm(document.getElementById(elem_id));
			if(parent_form){
				var form_name = parent_form.name;
			}
			else{
				var form_name = 'myForm';
			}

			try{

				if(typeof engine_action_buttons_list[button_id] != 'undefined'){
					if(typeof dont_show_error_message == 'undefined'
						|| !dont_show_error_message){


					}
				}
				else{

					var form = getParentForm(document.getElementById(button_id));
					if(form){
						var form_name = form.getAttribute('name');
					}

					engine_action_buttons_list[button_id] = new Array();
					engine_action_buttons_list[button_id]['out'] 			= image_path+out_suffix+'.gif';
					engine_action_buttons_list[button_id]['over'] 			= image_path+over_suffix+'.gif';
					engine_action_buttons_list[button_id]['down'] 			= image_path+down_suffix+'.gif';
					engine_action_buttons_list[button_id]['out_default'] 	= image_path+default_infix+out_suffix+'.gif';
					engine_action_buttons_list[button_id]['over_default'] 	= image_path+default_infix+over_suffix+'.gif';
					engine_action_buttons_list[button_id]['down_default'] 	= image_path+default_infix+down_suffix+'.gif';
					engine_action_buttons_list[button_id]['form_name'] 	= form_name;

					if(is_default == 1 || is_default == true){
						engine_action_buttons_original_default[form_name] 	= button_id;
						engine_action_buttons_current_default[form_name]	= button_id;
					}
				}

				onloadAddRegisterFunction('checkDefaultSettinsForForm(-1,1,\''+form_name+'\')');
			}
			catch (e){developerAlert(e.message)}
		}


		function switchImagesForActionButtons(id,action,form_name){
			try{
				if(engine_action_buttons_current_default[form_name] == id)
					action=action+'_default';

				if ((typeof engine_action_buttons_list[id] == 'object') && (image_src = engine_action_buttons_list[id][action])){
					SwapImage('button'+id,image_src);
					swapActionButtonClass(id,form_name);
				}
			}
			catch (e){}
		}



		function swapActionButtonClass(id,form_name){

			var link = document.getElementById('href'+id);
			if(link){
				if(engine_action_buttons_current_default[form_name] == id){
					var old_class_name = 'action_button_link_inactive';
					var new_class_name = 'action_button_link_active';

				}
				else{
					var old_class_name = 'action_button_link_active';
					var new_class_name = 'action_button_link_inactive';

				}


				var old_class_list = link.className.split(' ');
				var class_name = new Array();
				for(var i=0; i<old_class_list.length; i++ ){
					if(old_class_list[i] == old_class_name){
						class_name.push(new_class_name);
					}
					else{
						class_name.push(old_class_list[i]);
					}
				}

				link.className = class_name.join(' ');

			}
		}



		function checkDefaultSettinsForForm(active_id,reset_original,form_name){
			try{
				if(!form_name) form_name = 'myForm';
				if(reset_original == 1)
					engine_action_buttons_current_default[form_name]	= engine_action_buttons_original_default[form_name];
				else
					engine_action_buttons_current_default[form_name]	= active_id;

				for(var id in engine_action_buttons_list){
					switchImagesForActionButtons(id,'out',engine_action_buttons_list[id]['form_name'])
				}
			}
			catch (e){}

		}

		function clickCurrentDefaultButton(form_name){

			var my_button;
			if ((my_button=document.getElementById('href'+engine_action_buttons_current_default[form_name]))
			|| (my_button=document.getElementById('imageLink_'+engine_action_buttons_current_default[form_name]))
			|| (my_button=document.getElementById(engine_action_buttons_current_default[form_name]))){
				my_button.click();
			}
			return false;
		}

		function clickCurrentDefaultButtonNS(form_name){

			var my_button;


			if ((my_button=document.getElementById('href'+engine_action_buttons_current_default[form_name]))
			|| (my_button=document.getElementById('imageLink_'+engine_action_buttons_current_default[form_name]))
			|| (my_button=document.getElementById(engine_action_buttons_current_default[form_name]))){

				if (typeof my_button.click != 'undefined' && my_button.click){
						my_button.click();
				} else {
					if(my_button.onclick){
						my_button.onclick();
						return;
					}
					if(my_button.getAttribute('href') != '#'){
						window.document.location=my_button.getAttribute('href');
					}
				}
			}

		}

	

	

	function checkClickedCheckbox(fieldname,clicked_value,type){

		elem = document.getElementsByName(fieldname);

		if(elem.length > 0){
			for(i=0;i<elem.length;i++){
				if(elem[i].value == clicked_value){
					// whithout timeout is not running on ie
					setTimeout('elem[i].click();',50);
					return false;
				}
			}
		}
		else{
			// whithout timeout is not running on ie
			setTimeout('elem[0].click();',50);
			return false;
		}

	}

	

	
	function selection_setSelectionDescriptionField(fieldname){


		var description_div = document.getElementById('selection_description_div_'+fieldname);

		if( !document.getElementsByName(fieldname) ) return;
		var field = document.getElementsByName(fieldname)[0];
		if(!field) return;

		var fieldvalue = getValueOfElementObject(field);

		if(typeof selection_description_text_list[fieldname] == 'undefined'
		|| typeof selection_description_text_list[fieldname][fieldvalue] == 'undefined')
			var selection_description = '';
		else
			var selection_description = selection_description_text_list[fieldname][fieldvalue];


		description_div.innerHTML = selection_description;
	}


	function selection_selectionOption(value, text){
		this.value = value;
		this.text = text;
	}

	function selection_clearSelectionRegistration(fieldname){
		selection_filterSelection[fieldname] = new Array();
	}

	function selection_registerOption(fieldname,value, text){
		if(typeof selection_filterSelection[fieldname] == 'undefined' ){
			selection_filterSelection[fieldname] = new Array();
		}
		selection_filterSelection[fieldname]['entry$'+value] = new selection_selectionOption(value, text);
	}


	function selection_filterSelectionOptions(fieldname,case_sensitive){
		if( !document.getElementsByName(fieldname) ) return;
		var field = document.getElementsByName(fieldname)[0];
		var input = document.getElementsByName(fieldname+'_filter_field__i')[0].value;
		var p = field.parentNode;
		field_clone = field.cloneNode(false);
		p.removeChild(field);
		p.appendChild(field_clone);
		field_clone.options[0] = new Option();
		var o = 0;

		for(var i in selection_filterSelection[fieldname]){
			if( testRegularExpression(input,selection_filterSelection[fieldname][i].text,case_sensitive) ){

				field_clone.options[o] = new Option();
				field_clone.options[o].value = selection_filterSelection[fieldname][i].value;
				field_clone.options[o].innerHTML = selection_filterSelection[fieldname][i].text;
				o++;
			}
		}


		field_clone.options[o] = new Option();
		field_clone.options.length = o;
	}


	function selection_selectOption(fieldname,value){

		var selection = document.getElementsByName(fieldname)[0];

		if(selection && selection.options){
			for(var i=0; i < selection.options.length; i++){
				if(selection.options[i].value == value){
					selection.selectedIndex = i;
					return;
				}
			}
		}
	}

	

	

		var indent_option = new swapSelection_selectionOption('-indent-', '                                                  ');

		function swapSelection_selectionOption(value, text, is_left){
			this.value = value;
			this.text = text;
			this.is_left = is_left;
		}

		function swapSelection_clearSelectionRegistration(fieldname){
			swapSelection_filterSelection[fieldname] = new Array();
		}

		function swapSelection_registerOption(fieldname,value, text,is_left){
			if(typeof swapSelection_filterSelection[fieldname] == 'undefined' )
				swapSelection_filterSelection[fieldname] = new Array();

			swapSelection_filterSelection[fieldname]['entry$'+value] = new swapSelection_selectionOption(value, text,is_left);
		}

		function swapSelection_setIsLeft(fieldname,value, is_left){
			if(!swapSelection_filterSelection)
				swapSelection_filterSelection = new Array();

			if(!swapSelection_filterSelection[fieldname])
				swapSelection_filterSelection[fieldname] = new Array();

			if(!swapSelection_filterSelection[fieldname]['entry$'+value])
				swapSelection_filterSelection[fieldname]['entry$'+value] = new swapSelection_selectionOption(value,null,is_left);

			swapSelection_filterSelection[fieldname]['entry$'+value].is_left = is_left;
		}

		function swapSelection_filterSelectionOptions(fieldname,case_sensitive){
			var field = document.getElementsByName(fieldname+'_swap_left__i')[0];
			var input = document.getElementsByName(fieldname+'_filter_field__i')[0].value;
			var p = field.parentNode;
			field_clone = field.cloneNode(false);
			p.removeChild(field);
			p.appendChild(field_clone);
			field_clone.options[0] = new Option();
			var o = 0;
			for(var i in swapSelection_filterSelection[fieldname]){
				if( swapSelection_filterSelection[fieldname][i].is_left
				&&  testRegularExpression(input,swapSelection_filterSelection[fieldname][i].text,case_sensitive) ){

					field_clone.options[o] = new Option();
					field_clone.options[o].innerHTML = swapSelection_filterSelection[fieldname][i].text;
					field_clone.options[o].value = swapSelection_filterSelection[fieldname][i].value;
					o++;
				}
			}
			field_clone.options[o] 			 = new Option();
			field_clone.options[o].innerHTML = indent_option.text;
			field_clone.options[o].value 	 = indent_option.value;

		}

		function swapSelection_updateDynamicOptionCounter(fieldname){
			var left_container = document.getElementById('dynamic_option_counter__'+fieldname+'__left');
			if( !left_container ) return;
			var right_container = document.getElementById('dynamic_option_counter__'+fieldname+'__right');
			if( !right_container ) return;
			s1 = document.getElementsByName(fieldname+'_swap_left__i')[0];
			s2 = document.getElementsByName(fieldname+'_swap_right__i')[0];
			left_container.innerHTML = (s1.options.length-1)+'&nbsp;';
			right_container.innerHTML = (s2.options.length-1)+'&nbsp;';
		}

	



	function checkAppletRunnability(applet_name,width,height){

		try{
			document.applets[applet_name].setSize(width,height);
		}
		catch(e){

			var install_link_div = document.getElementById('install_jvm_'+applet_name);


			if(checkApplet_counter < 20){

				if(checkApplet_counter == 0){
					window.setTimeout("checkAppletRunnability('"+applet_name+"')",4000);
				}
				else{
					install_link_div.style.visibility = 'visible';
					window.setTimeout("checkAppletRunnability('"+applet_name+"')",1000);
				}
				checkApplet_counter++;
			}
		}
	}



	
	<!-- hide this from old browsers...

		function resolveIpAddressFromFields(fieldname)
		{
			var field1_value = document.myForm.elements[fieldname+'_part1'].value;
			var field2_value = document.myForm.elements[fieldname+'_part2'].value;
			var field3_value = document.myForm.elements[fieldname+'_part3'].value;
			var field4_value = document.myForm.elements[fieldname+'_part4'].value;

			var my_field = document.myForm.elements[fieldname];
			if( my_field ){
				my_field.value = field1_value + '.' + field2_value + '.' + field3_value + '.' +field4_value;
			}

		}
	// ...and stop hiding here -->
	
var isNs = !document.all;
document.onkeydown = registerFieldAction_eventObjectData;
var fieldAction_eventData = null;
function fieldAction_eventDataObject(type,target,keyCode){
this.type = type;
this.target = target;
this.keyCode = keyCode;
}
function registerFieldAction_eventObjectData(e){
if(isNs)
fieldAction_eventData = new fieldAction_eventDataObject(e.type,e.target,e.which);
else
fieldAction_eventData = new fieldAction_eventDataObject(event.type,event.srcElement,event.keyCode);
}
function enterKlickSubmitForm(action){
if(fieldAction_eventData != null
&& fieldAction_eventData.keyCode == '13'){
myFormSubmit(action);
return false;
}
return true;
}
function submitFormOnEnterClick(event,action){
if( getEventPressedKey(event) == '13' ){
myFormSubmit(action);
stopEventBubbling(event);
return false;
}
return true;
}var navigationsArray=new Array;
function navGetNavigation(nav_name){
if ( typeof(navigationsArray) == 'undefined' || typeof(navigationsArray.length) == 'undefined') return null;
return navigationsArray[nav_name];
}//navGetNavigation
function navCreateNavigation(nav_name, active_item_class, visible_subnav_class){
if ( typeof(navigationsArray) == 'undefined' || typeof(navigationsArray.length) == 'undefined') return null;
var mygla=navigationsArray[nav_name]?(navigationsArray[nav_name]):(navigationsArray[nav_name]=new Array);
mygla['items']=new Array;
mygla['navigation_name']=nav_name;
mygla['visible_subnav_class']=visible_subnav_class;
mygla['active_item_class']=active_item_class;
return mygla;
}//navCreateNavigation
function navHighlightItem(navigation_name,navigation_link_id){
var item_record = document.getElementById(navigation_link_id);
if(item_record){
navHighlightNavigationItem(navigation_name, item_record);
}
}
function navGetNavigationItemData(nav_name, item_id){
var my_nav=navGetNavigation(nav_name);
if (my_nav){
var looper;
for (looper=0; looper < my_nav['items'].length; looper++){
if (my_nav['items'][looper]['item'] == item_id)	return my_nav['items'][looper];
}
}
return null;
}
function navINTremoveClassNameFromString(in_string, class_name){
var my_names=in_string.split(' ');
var my_index;
var my_new_name='';
for (my_index=0; my_index < my_names.length; my_index++){
if (my_names[my_index] != class_name)
my_new_name=my_new_name.concat(my_names[my_index],' ');
}
return my_new_name;
}//navINTremoveClassNameFromString
function navHighlightNavigationItem(nav_name, item_id){
var my_nav=navGetNavigation(nav_name);
if (!my_nav) return;
var my_item=navGetNavigationItemData(nav_name, item_id);
if (!my_item) return;
var action_range_prefix=my_item['action_range_prefix'];
var looper;
var curr_item;
var active_item_class=my_nav['active_item_class'];
var visible_subnav_class=my_nav['visible_subnav_class'];
for (looper=0; looper < my_nav['items'].length; looper++){
curr_item=my_nav['items'][looper];
if ( curr_item == my_item){
navINTsetItemRecordHighlight(curr_item, true, active_item_class, visible_subnav_class);
} else {
if ((action_range_prefix.length == 0) || (curr_item['item'].id.indexOf(action_range_prefix) == 0) ){
navINTsetItemRecordHighlight(curr_item, false, active_item_class, visible_subnav_class);
}
}
}
}
function navRegisterItem(nav_name, item_id, dependent_item_id, dependent_image_id, dependent_image_std, dependent_image_mouseover, dependent_image_active, automatic_event_handlers, action_range_prefix){
var my_nav=navGetNavigation(nav_name);
if (!my_nav) return;
var my_item=document.getElementById(item_id);
if (my_item && !(navGetNavigationItemData(nav_name, item_id)) ){
var my_item=my_nav['items'][my_nav['items'].length]=new Array;
my_item['navigation']=my_nav;
my_item['item']=document.getElementById(item_id);
my_item['active_state']=false;
my_item['action_range_prefix']=action_range_prefix;
my_item['mouseover_state']=false;
my_item['dependent_item']=document.getElementById(dependent_item_id);
my_item['dependent_image']=document.getElementById(dependent_image_id);
my_item['dependent_image_std']=dependent_image_std;
my_item['dependent_image_mouseover']=dependent_image_mouseover;
my_item['dependent_image_active']=dependent_image_active;
if (typeof(preloadAddElement) == 'function'){
if (navINTcheckURLString(dependent_image_std)) preloadAddElement(dependent_image_std, 1);
if (navINTcheckURLString(dependent_image_mouseover)) preloadAddElement(dependent_image_mouseover, 2);
if (navINTcheckURLString(dependent_image_active)) preloadAddElement(dependent_image_active, 3);
}
if (automatic_event_handlers){
my_item['item'].onclick = function(){
navINTresolveItemEvent(my_item, 'click');
}
my_item['item'].onmouseover = function(){
navINTresolveItemEvent(my_item, 'mouseover');
}
my_item['item'].onmouseout = function(){
navINTresolveItemEvent(my_item, 'mouseout');
}
}
}
}
function navINTsetItemRecordHighlight(item_record, highlight, highlight_class, visible_class){
if (!item_record) return;
item_record['item'].className=item_record['active_state']=highlight;
if (highlight){
item_record['item'].className=item_record['item'].className+' '+highlight_class;
if (item_record['dependent_item']) item_record['dependent_item'].className=item_record['dependent_item'].className+' '+visible_class;
if ((item_record['dependent_image']) && navINTcheckURLString(item_record['dependent_image_active'])){
item_record['dependent_image'].src=item_record['dependent_image_active'];
}
} else {
item_record['item'].className=navINTremoveClassNameFromString(item_record['item'].className, highlight_class);
if (item_record['dependent_item']) item_record['dependent_item'].className=navINTremoveClassNameFromString(item_record['dependent_item'].className, visible_class);
if ((item_record['dependent_image']) && navINTcheckURLString(item_record['dependent_image_std'])){
item_record['dependent_image'].src=item_record['dependent_image_std'];
}
}
}
function navINTresolveItemEvent(item_record, event_key){
if (!item_record) return;
switch(event_key){
case 'mouseover':
if (!item_record['mouseover_state']){
item_record['mouseover_state']=true;
if (navINTcheckURLString(item_record['dependent_image_mouseover'])){
item_record['dependent_image'].src=item_record['dependent_image_mouseover'];
}
}
break;
case 'mouseout':
item_record['mouseover_state']=false;
if (item_record['active_state'] && navINTcheckURLString(item_record['dependent_image_active'])){
item_record['dependent_image'].src=item_record['dependent_image_active'];
} else  {
if (navINTcheckURLString(item_record['dependent_image_std'])) item_record['dependent_image'].src=item_record['dependent_image_std'];
}
break
case 'click':
if (!item_record['active_state']){
navHighlightNavigationItem(item_record['navigation']['navigation_name'], item_record['item']);
}
break
default:
alert('dgn_event: incorrect event executed ['+event_key+']');
}
}//navINTresolveItemEvent()
function navINTcheckURLString(url_string){
return (url_string && url_string != '');
}

	
		function highlightSearchHit(checkbox,class_suffix,use_as_radio){

			var my_tr = checkbox.parentNode;

			var avoid_infinity_loop = 15;

			while(my_tr.tagName.toUpperCase() != 'TR'
			  && (avoid_infinity_loop-->0)){
				my_tr = my_tr.parentNode;
			}


			if(use_as_radio){
				var tr_same_level_nodes = my_tr.parentNode.childNodes;
				for(var i=0;i<tr_same_level_nodes.length;i++){
					var my_node = tr_same_level_nodes[i];
					if(endsWith(my_node.className,class_suffix)){
						my_node.className = my_node.className.replace(class_suffix,'');
					}
				}
			}



			if(checkbox.checked){
				if(!endsWith(my_tr.className,class_suffix)){
					my_tr.className = my_tr.className+class_suffix;
				}
			}
			else{
				if(endsWith(my_tr.className,class_suffix)){
					my_tr.className = my_tr.className.replace(class_suffix,'');
				}
			}
		}
	

	

		document.onclick = handleDocumentOnclickForGraphicalDateInput;

		var graphical_date_input_active_list = new Array();

		var graphical_date_today;

		var is_netscape = !document.all;

		var graphical_date_list = new Array();

		var graphical_date_reg_exp = /^[1-2][0-9]{3}[-][0-1][0-9][-][0-3][0-9]$/;

		function registerGraphicalDate(id,init_display,init_value){
			graphical_date_list[id] = new graphicalDate(id,init_display,init_value);
			GraphicalDate_initCalendarValues(id);
			GraphicalDate_writeValues(id,graphical_date_list[id].day,graphical_date_list[id].month,graphical_date_list[id].year);
		}

		function graphicalDate_getNextMonth(month,year){
			var ret = new graphicalDate();
			switch(month){
				case 12:
					ret.month = 1;
					ret.year = year + 1;
					break;
				default:
					ret.month = month + 1;
					ret.year = year;
			}
			return ret;
		}

		function graphicalDate_getPrevMonth(month,year){
			var ret = new graphicalDate();
			switch(month){
				case 1:
					ret.month = 12;
					ret.year = year - 1;
					break;
				default:
					ret.month = month - 1;
					ret.year = year;
			}
			return ret;
		}


		function graphicalDate(id,init_display,init_value){
			this.id = id;
			this.day = null;
			this.month = null;
			this.year = null;
			this.selected_day = null;
			this.selected_month = null;
			this.selected_year = null;
			this.init_display = init_display;
			this.init_value = (init_value)? init_value:'';
			this.is_init_value = true;
			this.today_day = null;
			this.today_month = null;
			this.today_year = null;
		}

		var graphical_date_today = new graphicalDate();

		function showGraphicalDateInput(fieldname,e) {

			var curr_id = 'graphical_calendar_content_container_'+fieldname;
			var cal_div = document.getElementById(curr_id);

			var iframe_id = 'graphical_calendar_dynamic_iframe_'+fieldname;
			var iframe = document.getElementById(iframe_id);


			if(cal_div){
				cal_div.style.display = 'block';
				graphical_date_input_active_list.push(fieldname);
				var graphical_date_item = graphical_date_list[fieldname];

				if(typeof Event != 'undefined'){
					e.cancelBubble = true;
				}
				else{
					window.event.cancelBubble = true;
				}

				GraphicalDate_initCalendarValues(fieldname);

				fillGraphicalDateContent(fieldname);
			}
			if(iframe){
				iframe.style.display = 'block';
				var cal_width = cal_div.offsetWidth;
				var cal_height = cal_div.offsetHeight;
				iframe.setAttribute('width',cal_width);
				iframe.setAttribute('height',cal_height);
			}
		}

		function GraphicalDate_initCalendarValues(fieldname){
			var fieldvalue = document.forms['myForm'].elements[fieldname].value;
			var graphical_date_item = graphical_date_list[fieldname];

			var date_value = new Date();

			if(is_netscape){
				var date_year = parseInteger(date_value.getYear())+1900;
			}
			else{
				var date_year = date_value.getYear();
			}

			var date_month = date_value.getMonth()+1;
			var date_day = date_value.getDate();

			graphical_date_today.year = date_year;
			graphical_date_today.month = date_month;
			graphical_date_today.day = date_day;

			if( !fieldvalue || !graphical_date_reg_exp.test(fieldvalue) ){

				graphical_date_item.day = date_day;
				graphical_date_item.month = date_month;
				graphical_date_item.year = date_year;
				graphical_date_item.selected_day = null;
				graphical_date_item.selected_month = null;
				graphical_date_item.selected_year = null;
				graphical_date_item.is_init_value = true;

			}
			else{
				var date_value_splitted = fieldvalue.split('-');

				if(date_value_splitted.length < 3){
					var date_value_splitted_tmp = fieldvalue.split('.');
					if(date_value_splitted_tmp.length == 3){
						if(date_value_splitted_tmp[0].length == 4){
							date_value_splitted = date_value_splitted_tmp;
						}
						else{
							date_value_splitted[0] = date_value_splitted_tmp[2];
							date_value_splitted[1] = date_value_splitted_tmp[1];
							date_value_splitted[2] = date_value_splitted_tmp[0];
						}
					}
				}
				var date_year = date_value_splitted[0];
				var date_month = date_value_splitted[1];
				var date_day = date_value_splitted[2];
				var date_value = new Date(date_year,date_month-1,date_day);


				graphical_date_item.day = date_day;
				graphical_date_item.month = date_month;
				graphical_date_item.year = date_year;
				graphical_date_item.selected_day = date_day;
				graphical_date_item.selected_month = date_month;
				graphical_date_item.selected_year = date_year;
				graphical_date_item.is_init_value = false;

			}
		}

		function GraphicalDate_getPrevMonthDayCount(month,year){
			switch(month){
				case 1:
					month++;
					break;
				case 12:
					month = 1;
					year++;
					break;
				default:
					month++;
			}
			return getDaysInMonth(month,year);
		}

		function fillGraphicalDateContent(fieldname){

			var graphical_date_item = graphical_date_list[fieldname]


			var month_container = document.getElementById('graphical_calendar_display_month_'+fieldname);
			month_container.innerHTML = framework__month_list[parseInteger(graphical_date_item.month)-1]+' '+graphical_date_item.year;

			var first_month_day = (new Date(graphical_date_item.year,graphical_date_item.month-1,1)).getDay();
			var month_day_count = getDaysInMonth(graphical_date_item.month,graphical_date_item.year);


			var day_counter = 0;

			var counter_begin = (first_month_day==0)? 6 : first_month_day-1;


			var prevMonth = graphicalDate_getPrevMonth(graphical_date_item.month,graphical_date_item.year);

			var days_in_last_month_counter = GraphicalDate_getPrevMonthDayCount(graphical_date_item.month,graphical_date_item.year);
			for(var i=0;i<counter_begin;i++){
				var container = document.getElementById('graphical_calendar_'+fieldname+'_day_'+i);
				var dayName = days_in_last_month_counter-(counter_begin-i)+1;
				container.innerHTML = dayName;
				if(GraphicalDate_isDayToday(dayName,prevMonth.month,prevMonth.year)){
					container.className = 'cal_disabled_highlighted';
				}
				else{
					container.className = 'cal_disabled';
				}

			}


			for(var i=counter_begin;i<month_day_count+counter_begin;i++){
				var container = document.getElementById('graphical_calendar_'+fieldname+'_day_'+i);
				container.innerHTML = ++day_counter;
				if(GraphicalDate_isDaySelected(day_counter,graphical_date_item.month,graphical_date_item.year,fieldname)){
					container.className = 'cal_selected';
				}
				else{
					if(GraphicalDate_isDayToday(day_counter,graphical_date_item.month,graphical_date_item.year)){
						container.className = 'cal_highlighted';
					}
					else{
						container.className = 'cal';
					}
				}
			}



			var prevMonth = graphicalDate_getNextMonth(graphical_date_item.month,graphical_date_item.year);

			var days_in_last_month_counter = GraphicalDate_getPrevMonthDayCount(graphical_date_item.month,graphical_date_item.year);
			var days_after_counter = 0;
			for(var i=month_day_count+counter_begin;i<42;i++){
				var container = document.getElementById('graphical_calendar_'+fieldname+'_day_'+i);
				var dayName= ++days_after_counter;
				container.innerHTML = dayName;
				if(GraphicalDate_isDayToday(dayName,prevMonth.month,prevMonth.year)){
					container.className = 'cal_disabled_highlighted';
				}
				else{
					container.className = 'cal_disabled';
				}
			}
		}

		function GraphicalDate_isDayToday(day,month,year){
			return day==graphical_date_today.day
					&& month==graphical_date_today.month
					&& year==graphical_date_today.year;
		}


		function GraphicalDate_isDaySelected(day,month,year,fieldname){
			var graphical_date_item = graphical_date_list[fieldname];
			return graphical_date_item.selected_day != null
					&& day==graphical_date_item.selected_day
					&& month==graphical_date_item.selected_month
					&& graphical_date_item.selected_year==year;
		}

		function scrollMonthForGraphicalDate(fieldname,offset){
			var field = document.forms['myForm'].elements[fieldname];
			var fieldvalue = document.forms['myForm'].elements[fieldname].value;


			var graphical_date_item = graphical_date_list[fieldname]

			switch(offset){
				case 1:
					if(graphical_date_item.month == 12){
						graphical_date_item.month = 1;
						graphical_date_item.year++;
					}
					else{
						graphical_date_item.month++;
					}
					break;
				case -1:
					if(graphical_date_item.month == 1){
						graphical_date_item.month = 12;
						graphical_date_item.year--;
					}
					else{
						graphical_date_item.month--;
					}
					break;
				default:

			}

			var month_day_count = getDaysInMonth(graphical_date_item.month,graphical_date_item.year);


			fillGraphicalDateContent(fieldname);

		}

		function selectDayForGraphicalDate(fieldname,id){

			var target = document.getElementById('graphical_calendar_'+fieldname+'_day_'+id);

			if(id == null ||
			(target &&
			( target.className == 'cal'
			  || target.className == 'cal_highlighted'
			  || target.className == 'cal_selected'))){
				var field = document.forms['myForm'].elements[fieldname];
				var fieldvalue = document.forms['myForm'].elements[fieldname].value;

				var graphical_date_item = graphical_date_list[fieldname]

				if(id == null){
					graphical_date_item.year = null;
					graphical_date_item.month = null;
					graphical_date_item.day = null;

					if( graphical_date_reg_exp.test(graphical_date_item.init_value) ){
						var date_arr = graphical_date_item.init_value.split('-');
						graphical_date_item.year = date_arr[0];
						graphical_date_item.month = date_arr[1];
						graphical_date_item.day = date_arr[2];
						graphical_date_item.is_init_value = false;
					}
					else{
						graphical_date_item.is_init_value = true;
					}
				}
				else{
					graphical_date_item.day = target.innerHTML;
					graphical_date_item.is_init_value = false;
				}
				GraphicalDate_writeValues(fieldname,graphical_date_item.day,graphical_date_item.month,graphical_date_item.year);
				hideGraphicalDateInput(fieldname);
				graphical_date_input_active_list.pop();
			}
		}

		function hideGraphicalDateInput(fieldname){
			var curr_id = 'graphical_calendar_content_container_'+fieldname;
			var cal_div = document.getElementById(curr_id);

			var iframe_id = 'graphical_calendar_dynamic_iframe_'+fieldname;
			var iframe = document.getElementById(iframe_id);
			if(cal_div){
				cal_div.style.display = 'none';
			}

			if(iframe){
				iframe.style.display = 'none';
			}
		}

		function handleDocumentOnclickForGraphicalDateInput(e){
			for(var i = graphical_date_input_active_list.length-1;i>=0;i--){
				hideGraphicalDateInput(graphical_date_input_active_list[i]);
				graphical_date_input_active_list.pop();
			}
		}

		function GraphicalDate_isCalendarOpen(fieldname){
			for(var i = graphical_date_input_active_list.length-1;i>=0;i--){
				if(graphical_date_input_active_list[i] == fieldname){
					return true;
				}
			}
			return false;
		}

		function handleGraphicalDateInputOnclick(e){

			if(typeof Event != 'undefined')
				e.cancelBubble = true;
			else
				window.event.cancelBubble = true;

		}

		function handleGraphicalDateCalendarClick(fieldname,e){
			for(var i = graphical_date_input_active_list.length-1;i>=0;i--){
				if(graphical_date_input_active_list[i] == fieldname){
					hideGraphicalDateInput(graphical_date_input_active_list[i]);
					graphical_date_input_active_list.pop();
					return false;
				}
			}
			showGraphicalDateInput(fieldname,e);
		}


		function handleGraphicalCalendarInputBlur(fieldname,e){

			var field = document.forms['myForm'].elements[fieldname];
			var graphical_date_item = graphical_date_list[fieldname];
			var display_input = document.getElementById('graphical_calendar_display_'+fieldname);

			if(validateGraphicalCalendarInput(fieldname,display_input.value)){

				GraphicalDate_writeValues(fieldname,graphical_date_item.day,graphical_date_item.month,graphical_date_item.year);
				hideGraphicalDateInput(fieldname);
				graphical_date_input_active_list.pop();
			}
			else{
				GraphicalDate_initCalendarValues(fieldname);
				GraphicalDate_writeValues(fieldname,graphical_date_item.day,graphical_date_item.month,graphical_date_item.year);
			}
		}

		function handleGraphicalCalendarInputKeydown(fieldname,e){


			var field = document.forms['myForm'].elements[fieldname];
			var graphical_date_item = graphical_date_list[fieldname];
			var display_input = document.getElementById('graphical_calendar_display_'+fieldname);
			if(getEventPressedKey(e) == 13){
				if(validateGraphicalCalendarInput(fieldname,display_input.value)){

					GraphicalDate_writeValues(fieldname,graphical_date_item.day,graphical_date_item.month,graphical_date_item.year)
					hideGraphicalDateInput(fieldname);
					graphical_date_input_active_list.pop();
				}
				else{
					GraphicalDate_initCalendarValues(fieldname);
					GraphicalDate_writeValues(fieldname,graphical_date_item.day,graphical_date_item.month,graphical_date_item.year);
				}
				return false;
			}
			else{
				return true;
			}
		}

		function GraphicalDate_writeValues(fieldname,day,month,year){
			var display_input = document.getElementById('graphical_calendar_display_'+fieldname);
			var field = document.forms['myForm'].elements[fieldname];
			var graphical_date_item = graphical_date_list[fieldname];


			if(!graphical_date_item.is_init_value){
				var display_day = (String(day).length<2)? '0'+day : day;
				var display_month = (String(month).length<2)? '0'+month : month;
				display_input.value = display_day+'.'+display_month+'.'+year;
				field.value = year+'-'+display_month+'-'+display_day;
			}
			else{
				field.value = graphical_date_list[fieldname].init_value;
				display_input.value = graphical_date_list[fieldname].init_display;
			}
		}




		function validateGraphicalCalendarInput(fieldname,input){

			var graphical_date_item = graphical_date_list[fieldname];

			if(input.toLowerCase() == graphical_date_item.init_display){
				graphical_date_item.selected_day = null;
				graphical_date_item.selected_month = null;
				graphical_date_item.selected_year = null;
				graphical_date_item.is_init_value = true;
				return true;
			}


			if(!GraphicalDate_isCalendarOpen(fieldname)){
				GraphicalDate_initCalendarValues(fieldname)
			}

			var input_splitted = input.split('.');
			switch(input_splitted.length){
				case 3:
					if(isNaN(input_splitted[2])
					|| input_splitted[2]<1){
						return false;
					}
					else{
						if(input_splitted[2].length <4){
							graphical_date_item.year = parseInteger(input_splitted[2]) + 2000;
						}
						else{
							graphical_date_item.year = parseInteger(input_splitted[2]);
						}
					}

				case 2:
					if(isNaN(input_splitted[1])
					|| input_splitted[1]<1
					|| input_splitted[1]>12){
						return false;
					}
					else{
						graphical_date_item.month = input_splitted[1];
					}

				case 1:
					var days_count = getDaysInMonth(graphical_date_item.month,graphical_date_item.year);
					if(isNaN(input_splitted[0])
					|| input_splitted[0]< 1
					|| input_splitted[0] > days_count){
						return false;
					}
					else{
						graphical_date_item.day = input_splitted[0];
					}
					break;
				default:
					return false;

			}
			graphical_date_item.is_init_value = false;
			return true;
		}



		function formateGraphicalCalendarInput(input){

		}


		function handleGraphicalDateDayOnmouseout(fieldname,id){
			var target = document.getElementById('graphical_calendar_'+fieldname+'_day_'+id);
			if(target){
				switch(target.className){
					case 'cal_highlighted':
						target.className = 'cal';
						break;
					default:

				}
			}

		}

		function handleGraphicalDateDayOnmouseover(fieldname,id){
			var target = document.getElementById('graphical_calendar_'+fieldname+'_day_'+id);
			if(target){
				switch(target.className){
					case 'cal':
						target.className = 'cal_highlighted';
						break;
					default:

				}
			}

		}
	
var embeddedWindowZIndexCounter = 999;
var embeddedWindowActiveList = new Array();
var embeddedWindowActiveListCount = 0;
function showEmbeddedWindow(divId,x_pos, y_pos, url){
var winDiv = document.getElementById(divId);
if(!winDiv){
var winDiv = document.createElement('DIV');
winDiv.id = divId;
document.body.insertBefore(winDiv,document.body.firstChild);
winDiv.style.top = y_pos;
winDiv.style.left = x_pos;
winDiv.style.position = 'absolute';
winDiv.style.zIndex = embeddedWindowZIndexCounter++;
}
else{
winDiv.style.display = 'block';
winDiv.style.zIndex = embeddedWindowZIndexCounter++;
}
if(!embeddedWindowActiveList[divId]){
embeddedWindowActiveList[divId] = true;
embeddedWindowActiveListCount++;
}
var selections = document.getElementsByTagName('SELECT');
for(var i=0;i<selections.length;i++){
selections[i].style.visibility = 'hidden';
}
loadUrl2Div(url,divId);
}
function hideEmbeddedWindow(divId){
var selections = document.getElementsByTagName('SELECT');
if(embeddedWindowActiveListCount < 2){
for(var i=0;i<selections.length;i++){
selections[i].style.visibility = 'visible';
}
}
var winDiv = document.getElementById(divId);
if(winDiv){
embeddedWindowActiveList[divId] = false;
embeddedWindowActiveListCount--;
winDiv.parentNode.removeChild(winDiv);
}
}

	

		var ie4=document.all;
		var ns6=document.getElementById&&!document.all;

		var loadUrl2Div_timeout_ms = 200;
		var loadUrl2Div_Data = new Array();


		function loadUrl2Div_Structure(){
			this.url = '';

			this.js_on_load_code = null;
			this.timeout = 0;
			this.end_mark = null;
			this.js_is_blocked=false;
			this.max_timeout = 100;
			this.my_iframe_name = '';
			this.checkFrameOnLoadTimeOut = null;
		}


		function loadUrl2Div(url,div_id,js_on_load_code, max_timeout, end_mark){

			if(typeof loadUrl2Div_Data[div_id] == 'undefined'){

				loadUrl2Div_Data[div_id]=new loadUrl2Div_Structure();
			}
			var data_element=loadUrl2Div_Data[div_id];

			if(data_element.js_is_blocked)
				return false;
			else
				data_element.js_is_blocked = true;
			data_element.url = url;

			var my_div = document.getElementById(div_id);

			var my_iframe_name = 'dummy_iframe_will_be_overridden_'+div_id+'_'+String(Math.random());
			my_iframe_name = my_iframe_name.replace('.','__');
			data_element.my_iframe_name = my_iframe_name;

			if(typeof my_div != 'undefined'
			&& my_div != null){

				if(typeof js_on_load_code != 'undefined'){
					data_element.js_on_load_code=js_on_load_code;
				}
				else{
					data_element.js_on_load_code=null;
				}

				if(typeof max_timeout != 'undefined'){
					data_element.max_timeout = max_timeout;
					data_element.timeout = 0;
				}

				if(typeof end_mark != 'undefined'){
					data_element.end_mark = end_mark;
				}
				else{
					data_element.end_mark = null;
				}

				my_div.innerHTML = null;
				my_div.innerHTML = '<'+'iframe src="'+url+'" Scrolling=No FrameBorder=0 name="'+data_element.my_iframe_name+'" style="width:0;height:0"></iframe>';

				data_element.checkFrameOnLoadTimeOut = window.setTimeout("checkFrameOnLoad(\'"+div_id+"\')",loadUrl2Div_timeout_ms);
			}
			return false;
		}


		function checkFrameOnLoad(div_id){
			var data_element=loadUrl2Div_Data[div_id];

			data_element.timeout++;
			if( data_element.timeout > data_element.max_timeout ){
				data_element.js_is_blocked = false;
				try{
					window.clearTimeout(data_element.checkFrameOnLoadTimeOut);
				} catch (e){}
				var tmp_iframe = document.getElementsByName(data_element.my_iframe_name)[0];
				if(tmp_iframe){
					tmp_iframe.parentNode.removeChild(tmp_iframe);
				}
				return false;
			}

			try {
				my_div = document.getElementById(div_id);

				my_loc=String(frames[data_element.my_iframe_name].location).split('/');

				my_url=String(data_element.url).split('/');
				if(typeof my_div == 'object'){
					if(my_div
					  && typeof frames[data_element.my_iframe_name] != 'undefined'
					  && typeof frames[data_element.my_iframe_name].document != 'undefined'
					  && typeof frames[data_element.my_iframe_name].document.body != 'undefined'
					  && my_url[my_url.length-1] == my_loc[my_loc.length-1]){
						if( data_element.end_mark != null ){

							if( frames[data_element.my_iframe_name].document.body.innerHTML.search(data_element.end_mark) == -1 ){
								try{ window.clearTimeout(data_element.checkFrameOnLoadTimeOut); } catch (e){}
								data_element.checkFrameOnLoadTimeOut = window.setTimeout("checkFrameOnLoad(\'"+div_id+"\')",loadUrl2Div_timeout_ms);
							}
							else {
								data_element.js_is_blocked = false;
								my_div.innerHTML = frames[data_element.my_iframe_name].document.body.innerHTML;
								if(data_element.js_on_load_code != null){
									window.setTimeout("eval(loadUrl2Div_Data[\'"+div_id+"\'].js_on_load_code)",loadUrl2Div_timeout_ms);
								}
							}
						}
						else{
							data_element.js_is_blocked = false;
							my_div.innerHTML = frames[data_element.my_iframe_name].document.body.innerHTML;
							if(data_element.js_on_load_code != null)
								window.setTimeout("eval(loadUrl2Div_Data[\'"+div_id+"\'].js_on_load_code)",loadUrl2Div_timeout_ms);
						}
					}
					else{

						try{ window.clearTimeout(data_element.checkFrameOnLoadTimeOut); } catch (e){}
						data_element.checkFrameOnLoadTimeOut = window.setTimeout("checkFrameOnLoad(\'"+div_id+"\')",loadUrl2Div_timeout_ms);
					}
				}
			}
			catch(e) {

				try{ window.clearTimeout(data_element.checkFrameOnLoadTimeOut); } catch (e){}
				data_element.checkFrameOnLoadTimeOut = window.setTimeout("checkFrameOnLoad(\'"+div_id+"\')",loadUrl2Div_timeout_ms);
			}
		}
	


	

	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');
		js_layer_iframe_helper_container.style.display = 'none';
		if( !document.getElementById(currentLayer)
		||  !document.getElementById(currentLayer).style ) 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;
		}



		layer.style.width = 'auto';
		layer.style.height = 'auto';

		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;
		layer.style.top=layer_y;

		var js_layer_iframe_helper = document.getElementById('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';
	}


	

	


		var jsSetTimeout_max_iterator = 0;

		function jsSetTimeOut(max_iterator,sec_interval,generic_button_name,generic_button_value){
			if(max_iterator>0 && max_iterator<jsSetTimeout_max_iterator)
				return;
			else{
				jsSetTimeout_max_iterator++;
				refresh_setInterval(sec_interval,generic_button_name,generic_button_value);
			}
		}
	

	

		function refresh_setInterval(sec_interval,generic_button_name,generic_button_value,interval_fieldname){


			interval_field=eval('document.myForm.'+interval_fieldname);
			if(interval_field)
				interval=interval_field.value*1000;
			else
				interval=sec_interval*1000;

			if(interval==0)
				return false;


			refresh_myInterval = window.setInterval("refresh_dummy_function()",1);
			window.clearInterval(refresh_myInterval);


			if(interval>0){
				if(document.myForm){
					generic_button=eval('document.myForm.'+generic_button_name);
					my_value=generic_button_value;
					if(generic_button)
						refresh_myInterval = window.setInterval("refresh_refreshCurrentFormSettingGenericButton(generic_button,my_value)",interval);
					else
						refresh_myInterval = window.setInterval("refresh_refreshCurrentForm()",interval);
				}
			else
				refresh_myInterval = window.setInterval("refresh_refreshCurrentWindow()",interval);
			}

		}

		function refresh_dummy_function(){}

		function refresh_refreshCurrentWindow(){
			location.reload();

		}

		function refresh_refreshCurrentForm(){
			document.myForm.submit();
		}

		function refresh_refreshCurrentFormSettingGenericButton(generic_button,generic_button_value){
			generic_button.value=generic_button_value;
			document.myForm.submit();
		}

	

	
		function engineOnLoadFunctions(){
			if (document.loading_image)
				document.loading_image.src= framework__image_root_app_design+'/loading_size_empty.gif';
			getRegisteredOnLoadFunction();

			doEventActionInitActionsByValue();
			document_is_loaded=true;
		}
	

	

	function isLeapYear (Year)
	{
		if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) return (true);
		else return (false);
	}

	function getDaysInMonth(month,year)
	{
		if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)
			days=31;
		else if (month==4 || month==6 || month==9 || month==11)
			days=30;
		else if (month==2)
		{
			if (isLeapYear(year))
				days=29;
			else
				days=28;
		}
		return (days);
	}



	function assembleDateFromFields(s,show_radio)
	{
		fieldname = 'document.myForm.'+s;



		if(eval(fieldname+'_year_time__i.type') == 'select-one')
		{
			year_index = eval(fieldname+'_year_time__i.selectedIndex');
			year = eval(fieldname+'_year_time__i.options['+year_index+'].value');
		}
		else
			year = eval(fieldname+'_year_time__i.value');


		if(eval(fieldname+'_month_time__i.type') == 'select-one')
		{
			month_index = eval(fieldname+'_month_time__i.selectedIndex');
			month = eval(fieldname+'_month_time__i.options['+month_index+'].value') - 1;
		}
		else
			month = eval(fieldname+'_month_time__i.value');


		day_number = getDaysInMonth(month+1,year);

		if (eval(fieldname+'_day_time__i.type') == 'select-one')
		{
			day_index = eval(fieldname+'_day_time__i.selectedIndex');
			day = eval(fieldname+'_day_time__i.options['+day_index+'].value');
			if(day > day_number){
				day_index=day_index-(day-day_number);
				select_new_ind = eval(fieldname+'_day_time__i.options['+day_index+']');
				select_new_ind.selected=true;
				day=day_number;
			}
		}
		else
		{
			day = eval(fieldname+'_day_time__i.value');
			if(day > day_number)
				day=day_number;
		}

		if (eval(fieldname+'_hour_time__i.type') == 'select-one')
		{
			hour_index = eval(fieldname+'_hour_time__i.selectedIndex');
			if (month <= 2 || month >= 10)
				hour = eval(fieldname+'_hour_time__i.options['+hour_index+'].value') - 1;
			else
				hour = eval(fieldname+'_hour_time__i.options['+hour_index+'].value') - 2;
			}
		else
		{
			if (month <= 2 || month >= 10) hour = eval(fieldname+'_hour_time__i.value') - 1;
				else hour = eval(fieldname+'_hour_time__i.value') - 2;
		}


		if (eval(fieldname+'_minute_time__i.type') == 'select-one')
		{
			minute_index = eval(fieldname+'_minute_time__i.selectedIndex');
			minute = eval(fieldname+'_minute_time__i.options['+minute_index+'].value');
			}
		else
		{
			minute = eval(fieldname+'_minute_time__i.value');
		}



		if (eval(fieldname+'_second_time__i.type') == 'select-one')
		{
			second_index = eval(fieldname+'_second_time__i.selectedIndex');
			second = eval(fieldname+'_second_time__i.options['+second_index+'].value');
			}
		else
		{
			second = eval(fieldname+'_second_time__i.value');
		}


		if (eval(fieldname+'_millisecond_time__i.type') == 'select-one')
		{
			second_index = eval(fieldname+'_millisecond_time__i.selectedIndex');
			second = eval(fieldname+'_millisecond_time__i.options['+second_index+'].value');
			}
		else
		{
			millisecond = eval(fieldname+'_millisecond_time__i.value');
			}



		my_date = new Date(year,month,day);
		my_day  = my_date.getDay();
		if(eval(fieldname+'_day_of_week_time__i')){
			day_of_week_field = eval(fieldname+'_day_of_week_time__i');

			day_of_week_field.selectedIndex = (my_day==0)? 6:my_day-1;
		}
		else{

			if(document.layers){

				day_of_week=framework__day_of_week_list.slice(my_day,my_day+1);
				week_day_field=eval('document.'+s+'_day_of_week_time__i');
				if(week_day_field){
					dummy_elem=eval('document.'+s+'_relative_day_of_week_time__i');
					dummy_elem=eval('document.'+s+'_relative_day_of_week_time__i');
					dummy_elem.visibility='hide';
					week_day_field.pageX=dummy_elem.pageX;
					week_day_field.pageY=dummy_elem.pageY;
					week_day_field.document.open();
					week_day_field.document.clear();

					week_day_field.document.write('<P>'+day_of_week+'</P>');
					week_day_field.document.close();
				}
			}
			else{
				week_day_field=eval(document.getElementById(s+'_relative_day_of_week_time__i'));
				if(week_day_field){

					day_of_week=framework__day_of_week_list.slice(my_day,my_day+1);
					if(week_day_field.firstChild)
						week_day_field.removeChild(week_day_field.firstChild);

					week_day_field.appendChild(document.createTextNode(day_of_week));
				}
			}
		}

		field = eval(fieldname);

		field.value = Date.UTC(year, month, day, hour, minute, second, millisecond);
		if(show_radio==1)
			set_calendar();
	}

	function setDateFromWeekDay(s,show_radio){
		fieldname = 'document.myForm.'+s;
		if(eval(fieldname+'_year_time__i.type') == 'select-one')
		{
			year_index = eval(fieldname+'_year_time__i.selectedIndex');
			year = eval(fieldname+'_year_time__i.options['+year_index+'].value');
		}
		else
			year = eval(fieldname+'_year_time__i.value');


		if(eval(fieldname+'_month_time__i.type') == 'select-one')
		{
			month_index = eval(fieldname+'_month_time__i.selectedIndex');
			month = eval(fieldname+'_month_time__i.options['+month_index+'].value') - 1;
		}
		else
			month = eval(fieldname+'_month_time__i.value');


		day_number = getDaysInMonth(month+1,year);

		if (eval(fieldname+'_day_time__i.type') == 'select-one')
		{
			day_index = eval(fieldname+'_day_time__i.selectedIndex');
			day = eval(fieldname+'_day_time__i.options['+day_index+'].value');
		}
		else
			day = eval(fieldname+'_day_time__i.value');
		if (eval(fieldname+'_hour_time__i.type') == 'select-one')
		{
			hour_index = eval(fieldname+'_hour_time__i.selectedIndex');
			if (month <= 2 || month >= 10) hour = eval(fieldname+'_hour_time__i.options['+hour_index+'].value') - 1;
				else hour = eval(fieldname+'_hour_time__i.options['+hour_index+'].value') - 2;
			}
		else
		{
			if (month <= 2 || month >= 10) hour = eval(fieldname+'_hour_time__i.value') - 1;
				else hour = eval(fieldname+'_hour_time__i.value') - 2;
		}


		if (eval(fieldname+'_minute_time__i.type') == 'select-one')
		{
			minute_index = eval(fieldname+'_minute_time__i.selectedIndex');
			minute = eval(fieldname+'_minute_time__i.options['+minute_index+'].value');
			}
		else
		{
			minute = eval(fieldname+'_minute_time__i.value');
		}



		if (eval(fieldname+'_second_time__i.type') == 'select-one')
		{
			second_index = eval(fieldname+'_second_time__i.selectedIndex');
			second = eval(fieldname+'_second_time__i.options['+second_index+'].value');
			}
		else
		{
			second = eval(fieldname+'_second_time__i.value');
		}


		if (eval(fieldname+'_millisecond_time__i.type') == 'select-one')
		{
			second_index = eval(fieldname+'_millisecond_time__i.selectedIndex');
			second = eval(fieldname+'_millisecond_time__i.options['+second_index+'].value');
			}
		else
		{
			millisecond = eval(fieldname+'_millisecond_time__i.value');
			}


		my_date = new Date(year,month,day);
		my_day  = my_date.getDay();
		my_day  = (my_day==0)? 7:my_day;

		new_day_index = eval(fieldname+'_day_of_week_time__i.selectedIndex');
		new_day       = eval(fieldname+'_day_of_week_time__i.options['+new_day_index+'].value');
		new_day = (new_day==1)? 7:new_day-1;

		if(day-(my_day-new_day)<=0){
			month--;
			if(month==-1){
				month=11;
				year--;
			}

			new_day_number = getDaysInMonth(month+1,year);
			day = new_day_number+(day-(my_day-new_day));
		}
		else{

			if(day-(my_day-new_day)>day_number){
				month++;
				if(month==12){
					month=0;
					year++;
				}

				day = (day-(my_day-new_day))-day_number;
			}
			else{
				day = day-(my_day-new_day);
			}
		}


		if(day<10)
			day = eval('0'+day);

		if(month<10)
			month = eval('0'+month);



		day_field = eval(fieldname+'_day_time__i');
		if (day_field.type == 'select-one')
		{
			day_field.selectedIndex = day-1;
		}
		else
		{
			day_field.value = day-1;
		}
		month_field = eval(fieldname+'_month_time__i');
		if (month_field.type == 'select-one')
		{
			month_field.selectedIndex = month;
		}
		else
		{
			month_field.value = month;
		}
		year_field = eval(fieldname+'_year_time__i');
		if (year_field.type == 'select-one')
		{

			for(i=0;i<year_field.options.length;i++){
				if(year_field.options[i].value==year){
					year_field.selectedIndex = i;
					break;
				}
			}
		}
		else
		{
			year_field.value = year;
		}
		field = eval(fieldname);
		field.value = Date.UTC(year, month, day, hour, minute, second, millisecond);
		if(show_radio==1)
			set_calendar();
	}



	

	function myFormSubmit(
		generic_action,
		dont_submit_form,
		submit_form_without_reload,
		response_div_id){

		if(generic_action){
			writeValue2hiddenField('myForm','button_generic',generic_action);
		}

		if(submit_form_without_reload){

			for(var i = 0;i<document.getElementsByName('myForm').length;i++){
				if(document.getElementsByName('myForm')[i].tagName.toUpperCase() == 'FORM'){
					var my_form = document.getElementsByName('myForm')[i];
					break;
				}

			}

			if(response_div_id)
				var my_div = document.getElementById(response_div_id);
			else{
				response_div_id = 'DUMMYDIVWILLBEDROPED';
				var my_div = document.createElement('div');
				my_div.style.visibility = 'hidden';
				my_div.style.position = 'absolute';
				my_div.setAttribute('id',response_div_id);
				document.body.appendChild(my_div);

			}

			var div_content = '<IFRAME name="'+response_div_id+'_IFRAME"></IFRAME>';
			my_div.innerHTML = div_content;
			var orig_target = my_form.getAttribute('target');
			my_form.setAttribute('target',response_div_id+'_IFRAME');
			my_form.submit();
			my_form.setAttribute('target',orig_target);
		}
		else{
			if (document.loading_image)
				document.loading_image.src=framework__image_root_app_design+'/loading_sending.gif';

			if(!dont_submit_form && form_submit_status==0){

				form_submit_status=1;

				getRegisteredOnSubmitFunction();


				document.myForm.submit();

			}
		}

	}

	function disableElementsAfterSubmitEvent(){
		if(typeof Event != 'undefined'){
			window.captureEvents(Event.SUBMIT);
			window.onSubmit = disableElementsAfterSubmitEvent();
		}
		disableAllFormElements();
	}
	

	

		function jsSetPercentageOfProgressBar(fieldname, percentage){

			for(counter=1;counter<=percentage;counter++){
				document.images[fieldname+"_progress"+counter].src= framework__image_root_app_design+'/progressBar/progress_bar_color.gif';
			}

			for(counter=percentage+1;counter<=100;counter++){
				document.images[fieldname+"_progress"+counter].src= framework__image_root_app_design+'/progressBar/progress_bar_background.gif';
			}
		}

	

	

	function imageSize2FormFields(picname, width_field, height_field, override)
	{
		var l = picname.length;
		for (i=0; i<document.images.length; i++)
		{

			thisSrc = document.images[i].src;
			thisLen = document.images[i].src.length;

			qm = document.images[i].src.indexOf("?",0);
			if ( qm != -1 )
			{
				thisSrc = thisSrc.substring(1,qm);
				thisLen = thisSrc.length;
				thisPicName = thisSrc.substring(thisLen-l,thisLen);
			}
			else
				thisPicName = thisSrc.substring(thisLen-l,thisLen);


			if ( thisPicName != picname ) continue;

			if ( thisLen > l )
			{
				prevChar = thisSrc.substring(thisLen-l-1,thisLen-l);
				if ( prevChar != '/' && prevChar != '\\' ) continue;
			}



			if ( width_field != "" )
			{
				width = eval("document.myForm."+width_field);
				if ( width.value == "" || width.value == "0" || override == 'y' )
					width.value = document.images[i].width;
			}
			else
				document.write("leer!");

			if ( height_field != "" )
			{
				height = eval("document.myForm."+height_field);
				if ( height.value == "" || height.value == "0" || override == 'y' )
					height.value = document.images[i].height;
			}
		}
	}

function getElement(e){
var x=null; if (typeof(e) == 'object') 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); return (x);
}
function SwapImage(e,s){
var x=getElement(e);
if (x&&x.src){
x.src=s;
}
}
function SwapImageById(e,s){
var x=getElementById(e);
if (x&&x.src){
x.src=s;
}
}


		
	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

		


	onloadAddRegisterFunction("if (typeof(preloadExecuteQueue) == 'function') preloadExecuteQueue();");


	
	var graphicalSelection_globalFieldnameList = new Array();
	var graphicalSelection_allowCloseOpenSelections = true;
	var graphicalSelection_tdPaddingLeft = 3;
	var graphicalSelection_adjustContainerScroll = true;


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

	function graphicalSelection(fieldname,selection_mode,display_columns){
		this.fieldname = fieldname;
		this.last_mouseover_option = null;
		this.selected_option = null;

		this.select_one_state = 0;
		this.options = new Array();
		this.offset_height = null;
		this.on_change_script = null;

		if(selection_mode){
			this.selection_mode = selection_mode;
		}
		else{
			this.selection_mode = 'multi_select';
		}

		this.display_columns = display_columns;
	}

	function graphicalSelection_registerFieldname(fieldname,selection_mode,display_columns){
		graphicalSelection_globalFieldnameList[fieldname] = new graphicalSelection(fieldname, selection_mode,display_columns);
	}

	function graphicalSelection_actionInitSpecific(fieldname){
		switch(graphicalSelection_globalFieldnameList[fieldname].selection_mode){
			case 'select_one':
				var select_one_container_div = document.getElementById('graphicalSelectionContainer$selectOneMainTableContainerDiv$'+fieldname);
				var main_table = document.getElementById('graphicalSelectionContainer$'+fieldname);
				var container_div = document.getElementById('graphicalSelectionContainer$selectOneContainerDiv$'+fieldname);


				select_one_container_div.style.visibility = 'hidden';
				main_table.style.visibility = 'hidden';
				container_div.style.visibility = 'hidden';
				container_div.style.display = 'block';



				window.setTimeout("graphicalSelection_setWidth('"+fieldname+"')",200);
			break;
			default:

		}
	}


	function graphicalSelection_closeOpenSelections(){
		if(!graphicalSelection_allowCloseOpenSelections){
			graphicalSelection_allowCloseOpenSelections = true;
			return;
		}
		for( var fieldname in graphicalSelection_globalFieldnameList ){
			if( graphicalSelection_globalFieldnameList[fieldname].select_one_state == 1 ){
				graphicalSelection_closeSelectOne(fieldname);
			}
		}
	}


	function graphicalSelection_setWidth(fieldname){
		var gs = graphicalSelection_globalFieldnameList[fieldname];

		var select_one_container_div = document.getElementById('graphicalSelectionContainer$selectOneMainTableContainerDiv$'+fieldname);
		var main_table = document.getElementById('graphicalSelectionContainer$'+fieldname);
		var container_div = document.getElementById('graphicalSelectionContainer$selectOneContainerDiv$'+fieldname);
		var select_one_table = document.getElementById('graphicalSelectionContainer$selectOne$'+fieldname);
		var container_cell = document.getElementById('graphicalSelectionContainer$selectOneContainerCell$'+fieldname);
		var container_table = document.getElementById('graphicalSelectionContainer$selectOneContainerTable$'+fieldname);
		var iframe = document.getElementById('graphicalSelectionContainer$selectOneIframe$'+fieldname);


		var table_width = 0;
		var select_one_table_width = 0;
		var first_tr = getNextChild(main_table,'tr');
		var td_list = first_tr.childNodes;


		container_div.style.width = '2000px';
		if( gs.display_columns != null ){
			var display_columns_list = gs.display_columns.split(',');
			var display_columns_set = new Array();
			for( var i in display_columns_list ){
				col_index = display_columns_list[i];
				display_columns_set[col_index] = true;
			}
		}



		var last_td_index = graphicalSelection_getLastTDDomIndex(td_list);

		var col_index = 0;
		for( var i=0; i < td_list.length;i++ ){
			if( typeof td_list[i].tagName == 'undefined' || td_list[i].tagName.toUpperCase() != 'TD' ) continue;
			col_index++;
			var td_width = parseInt(td_list[i].offsetWidth)+graphicalSelection_tdPaddingLeft;
			select_one_table_width += td_width;
			if( gs.display_columns == null
			||  display_columns_set[col_index] ){
				table_width += td_width;
			}
		}
		table_width += 27;


		container_div.style.width = table_width;
		container_table.style.width = table_width;
		main_table.style.width = select_one_table_width;


		graphicalSelection_globalFieldnameList[fieldname].offset_height = parseInt(main_table.offsetHeight);
		graphicalSelection_globalFieldnameList[fieldname].select_one_state = 1;
		graphicalSelection_closeSelectOne(fieldname);


		select_one_container_div.style.visibility = 'visible';
		main_table.style.visibility = 'visible';
		container_div.style.visibility = 'visible';

	}


	function graphicalSelection_correctTDListWidthForMozilla(fieldname){

		if( !document.all ){

			var main_table = document.getElementById('graphicalSelectionContainer$'+fieldname);
			var first_tr = getNextChild(main_table,'tr');
			var td_list = first_tr.childNodes;

			var last_td_dom_index = graphicalSelection_getLastTDDomIndex(td_list);


			var td_list_width_map = graphicalSelection_buildTDListWidthMap(td_list);
			var td_sum_width = graphicalSelection_calcTDListWidthSum(td_list);

			var main_table_width = main_table.offsetWidth;
			td_list[last_td_dom_index].style.width = td_list[last_td_dom_index].offsetWidth;


			var td_sum_width_new = graphicalSelection_calcTDListWidthSum(td_list);

			if( td_sum_width_new > td_sum_width ){
				var endless_loop_counter = 50;
				while( endless_loop_counter-- > 0 ){
					td_list[last_td_dom_index].style.width = parseInt(td_list[last_td_dom_index].style.width)+1;
					if( graphicalSelection_calcTDListWidthSum(td_list) == td_sum_width ) break;
				}
			}
			else if( td_sum_width_new < td_sum_width ){
				var endless_loop_counter = 50;
				while( endless_loop_counter-- > 0 ){
					td_list[last_td_dom_index].style.width = parseInt(td_list[last_td_dom_index].style.width)-1;
					if( graphicalSelection_calcTDListWidthSum(td_list) == td_sum_width ) break;
				}
			}

			var no_width_change = true;
			var endless_loop_counter = 10;
			while( no_width_change ){
				if( endless_loop_counter-- == 0 )break;
				td_list[last_td_dom_index].style.width = parseInt(td_list[last_td_dom_index].style.width)+1;
				if( graphicalSelection_calcTDListWidthSum(td_list) != td_sum_width ) break;
			}
			td_list[last_td_dom_index].style.width = parseInt(td_list[last_td_dom_index].style.width)-1;
		}
	}


	function graphicalSelection_calcTDListWidthSum(td_list){
		var td_sum_width = 0;
		var is_last_td = true;
		for( var i=td_list.length-1; i >= 0;i-- ){
			if( typeof td_list[i].tagName != 'undefined' && td_list[i].tagName.toUpperCase() == 'TD' ){
				if( is_last_td ){
					is_last_td = false;
					continue;
				}
				else{
					var curr_width = parseInt(td_list[i].offsetWidth);
					td_sum_width += curr_width;
				}
			}
		}
		return td_sum_width;
	}

	function graphicalSelection_getLastTDDomIndex(td_list){
		for( var i=td_list.length-1; i >= 0;i-- ){
			if( typeof td_list[i].tagName != 'undefined' && td_list[i].tagName.toUpperCase() == 'TD' ){
				return i;
			}
		}
	}

	function graphicalSelection_buildTDListWidthMap(td_list){
		var td_list_width_map = new Array();
		var is_last_td = true;
		for( var i=td_list.length-1; i >= 0;i-- ){
			if( typeof td_list[i].tagName != 'undefined' && td_list[i].tagName.toUpperCase() == 'TD' ){
				if( is_last_td ){
					is_last_td = false;
					continue;
				}
				else{
					var curr_width = parseInt(td_list[i].offsetWidth);
					td_list_width_map['td_'+i] = curr_width;
				}
			}
		}
		return td_list_width_map;
	}


	function graphicalSelection_actionSelectSpecific(fieldname){
		switch(graphicalSelection_globalFieldnameList[fieldname].selection_mode){
			case 'select_one':
				graphicalSelection_closeSelectOne(fieldname);
			break;
			default:

		}
	}


	function graphicalSelection_closeSelectOne(fieldname){
		graphicalSelection_allowCloseOpenSelections = false;

		var main_table = document.getElementById('graphicalSelectionContainer$'+fieldname);



		if(graphicalSelection_globalFieldnameList[fieldname].select_one_state == 0) return false;

		var my_field = document.forms['myForm'].elements[fieldname];
		var selected_row = document.getElementById('graphicalSelection_'+fieldname+'$'+my_field.value);



		var gs = graphicalSelection_globalFieldnameList[fieldname];

		if(selected_row){

			var td_width_list = new Array();

			var original_children = selected_row.childNodes;

			var real_td_count = 0;
			for( var i = 0; i < original_children.length; i++ ){
				if( original_children[i].tagName && original_children[i].tagName.toLowerCase() == 'td' ){
					td_width_list[i] = parseInt(original_children[i].offsetWidth);
					real_td_count++;
				}
			}
		}

		var select_one_container_div = document.getElementById('graphicalSelectionContainer$selectOneMainTableContainerDiv$'+fieldname);
		select_one_container_div.style.display = 'none';



		if(selected_row){
			var selected_row_clone = selected_row.cloneNode(true);
			selected_row_clone.id = 'graphicalSelection$selectOneRow$'+fieldname;


			var clone_children = selected_row_clone.childNodes;
			var last_td = null;
			var is_first_td = true;
			var current_td_counter = 0;
			if( gs.display_columns != null ){
				var display_columns_list = gs.display_columns.split(',');
				var dummy_td_index = real_td_count;
				var last_td_index = 0;
				var display_columns_set = new Array();
				for( var i in display_columns_list ){
					var col_index = display_columns_list[i];
					display_columns_set[col_index] = true;
					last_td_index = (last_td_index<col_index)? col_index : last_td_index;
				}
			}
			else{
				var dummy_td_index = real_td_count;
				var last_td_index = real_td_count-1;
			}

			for( var i = 0; i < clone_children.length; i++ ){
				if( td_width_list[i] != null ){

					current_td_counter++;
					switch(current_td_counter){
						case last_td_index:

							clone_children[i].style.width = parseInt(td_width_list[i])+graphicalSelection_tdPaddingLeft;
							clone_children[i].style.paddingLeft = graphicalSelection_tdPaddingLeft;
							break;
						case dummy_td_index:

							clone_children[i].parentNode.removeChild(clone_children[i]);
							break;
						default:
							if( gs.display_columns == null || display_columns_set[current_td_counter] ){
								clone_children[i].style.width = parseInt(td_width_list[i]);
								clone_children[i].style.paddingLeft = graphicalSelection_tdPaddingLeft;
							}
							else{

								clone_children[i].parentNode.removeChild(clone_children[i--]);
							}
					}
				}
			}


			for( var i = clone_children.length-1; i >= 0 ; i-- ){
				if( clone_children[i].tagName
				&&  clone_children[i].name
				&&  clone_children[i].tagName.toLowerCase() == 'a'
				&&  beginsWith(clone_children[i].name,'graphicalSelectionAnchor$') ){
					clone_children[i].parentNode.removeChild(clone_children[i]);
				}
			}
		}


		var iframe = document.getElementById('graphicalSelectionContainer$selectOneIframe$'+fieldname);
		if( iframe ) iframe.style.display = 'none';


		main_table.style.display = 'none';


		if(selected_row){
			var select_one_table = document.getElementById('graphicalSelectionContainer$selectOne$'+fieldname);
			var select_one_row = document.getElementById('graphicalSelection$selectOneRow$'+fieldname);
			if( select_one_row ){
				select_one_row.parentNode.replaceChild(selected_row_clone,select_one_row);
			}
			else{
				if(select_one_table.firstChild){
					select_one_table.firstChild.appendChild(selected_row_clone);
				}
				else{
					select_one_table.appendChild(selected_row_clone);
				}
			}

			select_one_table.style.display = 'block';
		}

		gs.select_one_state = 0;

	}


	function graphicalSelection_openSelectOne(fieldname){

		graphicalSelection_allowCloseOpenSelections = false;


		if(graphicalSelection_globalFieldnameList[fieldname].select_one_state == 1) return false;

		var select_one_container_div = document.getElementById('graphicalSelectionContainer$selectOneMainTableContainerDiv$'+fieldname);
		select_one_container_div.style.display = 'block';

		var body_height = document.body.offsetHeight;


		var select_one_table = document.getElementById('graphicalSelectionContainer$selectOne$'+fieldname);
		var container_table = document.getElementById('graphicalSelectionContainer$selectOneContainerTable$'+fieldname);


		var main_table = document.getElementById('graphicalSelectionContainer$'+fieldname);
		main_table.style.display = 'block';
		graphicalSelection_globalFieldnameList[fieldname].select_one_state = 1;



		var table_offset_top = calculateAbsoluteTop(main_table,document.body,'source_element');
		if(table_offset_top + graphicalSelection_globalFieldnameList[fieldname].offset_height > body_height){
			var new_height = body_height-table_offset_top-20;
			if( new_height > 0 ){
				select_one_container_div.style.height = new_height;
			}
		}
		else{
			select_one_container_div.style.height = 'auto';
		}


		if( graphicalSelection_adjustContainerScroll ){
			graphicalSelection_adjustContainerScroll = false;

			graphicalSelection_correctTDListWidthForMozilla(fieldname);

			var first_tr = getNextChild(main_table,'tr');
			var selected_value = getValueOfElement(fieldname);
			var selected_index = -1;
			var tr_list = first_tr.parentNode.childNodes;
			var option_found = false;
			for( var i=0; i<tr_list.length; i++ ){
				if( tr_list[i]
				&&  tr_list[i].tagName
				&&  tr_list[i].tagName.toUpperCase() == 'TR'
				&&  tr_list[i].id != null ){
					selected_index++;
					var split = tr_list[i].id.split('$');
					var option_value = split[split.length-1]
					if( option_value == selected_value ){
						option_found = true;
						break;
					}
				}
			}
			if( option_found ){
				select_one_container_div.scrollTop = selected_index*15;
			}
		}


		var iframe = document.getElementById('graphicalSelectionContainer$selectOneIframe$'+fieldname);
		iframe.style.width = main_table.offsetWidth;
		iframe.style.height = select_one_container_div.offsetHeight
		iframe.style.display = 'block';


	}



	function graphicalSelection_highlightOption(fieldname,value){


		if(typeof graphicalSelection_globalFieldnameList[fieldname] == 'undefined')
			graphicalSelection_globalFieldnameList[fieldname] = new graphicalSelection(fieldname);

		var gs = graphicalSelection_globalFieldnameList[fieldname];

		var my_field = eval('document.myForm.'+fieldname);
		if( graphicalSelection_globalFieldnameList[fieldname].last_mouseover_option != null
		&&  my_field.value != graphicalSelection_globalFieldnameList[fieldname].last_mouseover_option ){
			var lastOption = document.getElementById('graphicalSelection_'+fieldname+'$'+graphicalSelection_globalFieldnameList[fieldname].last_mouseover_option );

			switchElementClass(lastOption,'graphical_selection_row_highlighted','',true);
		}


		var row_id = 'graphicalSelection_'+fieldname+'$'+value;
		var my_option = document.getElementById(row_id);


		graphicalSelection_globalFieldnameList[fieldname].last_mouseover_option = value;


		switchElementClass(my_option,'','graphical_selection_row_highlighted',true);

	}


	function graphicalSelection_unHighlightOption(fieldname,value){

		var my_field = eval('document.myForm.'+fieldname);
		var row_id = 'graphicalSelection_'+fieldname+'$'+value;
		var my_option = document.getElementById(row_id);
		if(my_field.value == value){
			switchElementClass(my_option,'graphical_selection_row_highlighted','',true);
		}
		else{
			switchElementClass(my_option,'graphical_selection_row_highlighted','',true);
		}
	}



	function graphicalSelection_selectOption(fieldname,value){

		graphicalSelection_allowCloseOpenSelections = false;


		if( graphicalSelection_globalFieldnameList[fieldname].select_one_state == 0
		 && graphicalSelection_globalFieldnameList[fieldname].selection_mode != 'multi_select' ){
			graphicalSelection_openSelectOne(fieldname);
			return;
		}

		var gs = graphicalSelection_globalFieldnameList[fieldname];

		var my_field = eval('document.myForm.'+fieldname);
		my_field.value = value;


		if( graphicalSelection_globalFieldnameList[fieldname].selected_option ){
			var row_id = 'graphicalSelection_'+fieldname+'$'+graphicalSelection_globalFieldnameList[fieldname].selected_option;
			var last_option = document.getElementById(row_id);
			switchElementClass(last_option,'graphical_selection_row_selected','',true);
		}

		var row_id = 'graphicalSelection_'+fieldname+'$'+value;
		var my_option = document.getElementById(row_id);


		if( graphicalSelection_globalFieldnameList[fieldname].selected_option != value ){
			graphicalSelection_globalFieldnameList[fieldname].selected_option = value;
		}


		switchElementClass(my_option,'','graphical_selection_row_selected',true);
		graphicalSelection_actionSelectSpecific(fieldname);


		if( gs.on_change_script ){
			eval( gs.on_change_script );
		}
	}

	function graphicalSelection_getOptionIndexByValue(fieldname,value){
		for(var i=0;i<graphicalSelection_globalFieldnameList[fieldname].options.length;i++){
			if(graphicalSelection_globalFieldnameList[fieldname].options[i] == value)
				return i;
		}
	}

	function graphicalSelection_registerOnChangeScript(fieldname,script){
		var gs = graphicalSelection_globalFieldnameList[fieldname];
		gs.on_change_script = script;
	}

	function graphicalSelection_initSelectedOption(fieldname,value){

		var my_option = document.getElementById('graphicalSelection_'+fieldname+'$'+value);

		if(typeof graphicalSelection_globalFieldnameList[fieldname] == 'undefined')
			graphicalSelection_globalFieldnameList[fieldname] = new Array();

		if(my_option == null){
			graphicalSelection_globalFieldnameList[fieldname].selected_option = null;
		}
		else{

			switchElementClass(my_option,'','graphical_selection_row_selected',true);
			graphicalSelection_globalFieldnameList[fieldname].selected_option = value;
		}
		graphicalSelection_globalFieldnameList[fieldname].last_mouseover_option = null;

		graphicalSelection_actionInitSpecific(fieldname);
	}

	function graphicalSelection_handleControlButtonClick(fieldname){
		graphicalSelection_allowCloseOpenSelections = false;
		if( graphicalSelection_globalFieldnameList[fieldname].select_one_state == 0 ){
			graphicalSelection_openSelectOne(fieldname);
		}
		else{
			graphicalSelection_closeSelectOne(fieldname);
		}
	}

	function graphicalSelection_externalSelect(fieldname,value){
		graphicalSelection_openSelectOne(fieldname);
		graphicalSelection_selectOption(fieldname,value);
	}

	

	

	var GraphicalTreeCheckboxList_TreeIdList = new Array();
	var GraphicalTreeCheckboxList_depthInitCounter = new Array();
	var GraphicalTreeCheckboxList_imagesAlreadyLoaded = false;

	var GraphicalTreeCheckboxList_imgClose = framework__image_root_app_design+'/tableTreeCheckboxes/close.gif';
	var GraphicalTreeCheckboxList_imgOpen = framework__image_root_app_design+'/tableTreeCheckboxes/open.gif';

	var GraphicalTreeCheckboxList_checkbox_status0;
	var GraphicalTreeCheckboxList_checkbox_status1;
	var GraphicalTreeCheckboxList_checkbox_status2;


	GraphicalTreeCheckboxList_use_second_checkbox = false;
	GraphicalTreeCheckboxList_second_checkbox_fieldname = null;
	GraphicalTreeCheckboxList_second_checkbox_status0 = null;
	GraphicalTreeCheckboxList_second_checkbox_status1 = null;
	GraphicalTreeCheckboxList_second_checkbox_status2 = null;


	function GraphicalTreeCheckboxList_loadImages(){
		if(GraphicalTreeCheckboxList_imagesAlreadyLoaded) return;
		var imgLoader = new Image();
		imgLoader.src = GraphicalTreeCheckboxList_imgClose;
		var imgLoader2 = new Image();
		imgLoader2.src = GraphicalTreeCheckboxList_imgOpen;
		GraphicalTreeCheckboxList_imagesAlreadyLoaded = true;
	}


	function GraphicalTreeCheckboxList_AddTree(id){
		GraphicalTreeCheckboxList_loadImages();

		GraphicalTreeCheckboxList_TreeIdList[id] = new Array();
		GraphicalTreeCheckboxList_TreeIdList[id]['root'] = new GraphicalTreeCheckboxList_TreeItem('root','root',0,0,null,0);
		GraphicalTreeCheckboxList_TreeIdList[id]['root'].childrenIdList = new Array();
		GraphicalTreeCheckboxList_depthInitCounter[id] = new Array();
	}


	function GraphicalTreeCheckboxList_initTree(tree_id, my_id){
		var item = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_id);
		for(var id=0;id<item.childrenIdList.length;id++){

			var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,item.childrenIdList[id]);
			if(c.id != c.parentId){
				GraphicalTreeCheckboxList_addTreeItem(tree_id,c.id);
			}

		}
		GraphicalTreeCheckboxList_depthInitCounter[tree_id][item.id] = true;
	}


	function GraphicalTreeCheckboxList_TreeItem(id,parent_id,status,value,text,depth){
		this.id = id;
		this.parentId = parent_id;
		this.childrenIdList = new Array();
		this.status = status;
		this.graphicalGif = new Image();
		this.value = value;
		this.second_value = null;
		this.div = null;
		this.imgSrc = null;
		this.text = text;
		this.depth = depth;
	}


	function GraphicalTreeCheckboxList_getTreeItemPositionById(id,list){
		for(var i=0; i<list.length;i++){
			if(list[i] == id)
				return i;
		}
		return -1;
	}


	function GraphicalTreeCheckboxList_getTreeItemById(tree_id, id){
		return GraphicalTreeCheckboxList_TreeIdList[tree_id][id];
	}

	function GraphicalTreeCheckboxList_initTreeItem(tree_id, id,parent,value, status,text,depth){



		if(id != parent){
			var parent_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, parent)

			parent_item.childrenIdList = parent_item.childrenIdList.concat(id);
			var my_item = new GraphicalTreeCheckboxList_TreeItem(id,parent,status,value,text,parent_item.depth+1);
		}
		else{
			GraphicalTreeCheckboxList_TreeIdList[tree_id]['root'].childrenIdList = GraphicalTreeCheckboxList_TreeIdList[tree_id]['root'].childrenIdList.concat(id);
			var my_item = new GraphicalTreeCheckboxList_TreeItem(id,parent,status,value,text,depth);
		}


		if(GraphicalTreeCheckboxList_use_second_checkbox){
			my_item.second_value = 0;
			if(value != 0){

				var second_field = eval('document.myForm.'+GraphicalTreeCheckboxList_second_checkbox_fieldname);


				var list = second_field.value.split(',');
				for(var i=0;i<list.length;i++){
					if(list[i] == id){
						my_item.second_value = 1;
						second_checkbox_img_src = GraphicalTreeCheckboxList_second_checkbox_status1;
						break;
					}

				}
			}
		}


		GraphicalTreeCheckboxList_TreeIdList[tree_id][id] = my_item;
	}


	function GraphicalTreeCheckboxList_addTreeItem(tree_id,id){

		var rootDiv = document.getElementById('GraphicalTreeCheckboxList_mainDiv_'+tree_id);

		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);

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



		if(my_item.id == my_item.parentId){

			var parentDiv = rootDiv;

			newDiv.style.visibility = 'visible';
			newDiv.style.position = 'relative';
			newDiv.style.overflow='visible';
		}
		else{
			var parent_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, my_item.parentId)

			var parentDiv = parent_item.div;

			if(parent_item.status == 0){
				newDiv.style.visibility = 'hidden';
				newDiv.style.position = 'absolute';
				newDiv.style.overflow='hidden';
			}
			else{
				newDiv.style.visibility = 'visible';
				newDiv.style.position = 'relative';
				newDiv.style.overflow='visible';
			}

			newDiv.style.left = '20px';


			if(GraphicalTreeCheckboxList_getTreeItemPositionById(id,parent_item.childrenIdList) == 0)
				newDiv.style.marginTop = '4px';


			if(GraphicalTreeCheckboxList_getTreeItemPositionById(id,parent_item.childrenIdList) == parent_item.childrenIdList.length-1)
				newDiv.style.marginBottom = '2px';
		}

		if(my_item.status == 0){
			img_src = GraphicalTreeCheckboxList_imgClose;
		}
		else{
			img_src = GraphicalTreeCheckboxList_imgOpen;
			GraphicalTreeCheckboxList_depthInitCounter[tree_id][id] = true;
		}

		newDiv.style.height= '20px';

		checkbox_img_src = eval('GraphicalTreeCheckboxList_checkbox_status'+my_item.value);


		if(GraphicalTreeCheckboxList_use_second_checkbox){


			if(my_item.value == 0){
				second_checkbox_img_src = GraphicalTreeCheckboxList_second_checkbox_status2;
				my_item.second_value = 0;
			}
			else{
				second_checkbox_img_src = eval('GraphicalTreeCheckboxList_second_checkbox_status'+my_item.second_value);
			}

			if(my_item.childrenIdList.length == 0){
				newDiv.innerHTML =  '<a href="#" onClick="GraphicalTreeCheckboxList_handleCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:20px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+checkbox_img_src
									+' name="checkbox__'+tree_id+'__'+id+'">'
									+'</a>'
									+'<a href="#" onClick="GraphicalTreeCheckboxList_handleSecondCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:5px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+second_checkbox_img_src
									+' name="second_checkbox__'+tree_id+'__'+id+'">'
									+'</a>'
									+my_item.text;
			}
			else{
				newDiv.innerHTML = '<IMG onLoad="" border="0px" height="15px" width="15px" src='+img_src+' name="img__'+tree_id+'__'+id
									+'" onClick="GraphicalTreeCheckboxList_handleClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<a href="#" onClick="GraphicalTreeCheckboxList_handleCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:5px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+checkbox_img_src
									+' name="checkbox__'+tree_id+'__'+id+'">'
									+'</a>'
									+'<a href="#" onClick="GraphicalTreeCheckboxList_handleSecondCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:5px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+second_checkbox_img_src
									+' name="second_checkbox__'+tree_id+'__'+id+'">'
									+'</a>'
									+my_item.text;
			}

		}
		else{
			if(my_item.childrenIdList.length == 0){
				newDiv.innerHTML =  '<a href="#" onClick="GraphicalTreeCheckboxList_handleCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:20px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+checkbox_img_src
									+' name="checkbox__'+tree_id+'__'+id+'">'
									+my_item.text
									+'</a>';
			}
			else{
				newDiv.innerHTML = '<IMG onLoad="" border="0px" height="15px" width="15px" src='+img_src+' name="img__'+tree_id+'__'+id
									+'" onClick="GraphicalTreeCheckboxList_handleClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<a href="#" onClick="GraphicalTreeCheckboxList_handleCheckboxClick(\''+tree_id+'\',\''+id+'\'); return false;">'
									+'<IMG style="margin-left:5px;margin-right:5px" onLoad="" border="0px" height="15px" width="15px" src='+checkbox_img_src
									+' name="checkbox__'+tree_id+'__'+id+'">'
									+my_item.text
									+'</a>';
			}
		}

		my_item.div = newDiv;

		parentDiv.appendChild(newDiv);

		if(my_item.status == 1){
			for(var i=0;i<my_item.childrenIdList.length;i++){
				GraphicalTreeCheckboxList_addTreeItem(tree_id,my_item.childrenIdList[i]);
			}
		}
	}

	function GraphicalTreeCheckboxList_handleClick(tree_id,id){

		var clicked_img = document.images['img__'+tree_id+'__'+id];

		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);


		if(my_item.status == 0){

			my_item.status = 1;

			var my_src = GraphicalTreeCheckboxList_imgOpen;
			GraphicalTreeCheckboxList_showChildren(tree_id,id);
		}
		else{

			my_item.status = 0;

			var my_src = GraphicalTreeCheckboxList_imgClose;
			GraphicalTreeCheckboxList_hideChildren(tree_id,id);
		}

		clicked_img.src = my_src;

	}

	if(!document.all){
		function GraphicalTreeCheckboxList_showChildren(tree_id,id){

			var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);

			my_item.div.style.height = null

			GraphicalTreeCheckboxList_initTree(tree_id,id);

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);

				if(c.status == 1)
					GraphicalTreeCheckboxList_showChildren(tree_id,c.id);
			}
		}


		function GraphicalTreeCheckboxList_hideChildren(tree_id,id){
			var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				if(c.div && c.div.parentNode){
					c.div.parentNode.removeChild(c.div);
					GraphicalTreeCheckboxList_hideChildren(tree_id,c.id);
				}
			}
		}
	}
	else{
		function GraphicalTreeCheckboxList_showChildren(tree_id,id){

			var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
			my_item.div.style.overflow='visible';

			if(typeof GraphicalTreeCheckboxList_depthInitCounter[tree_id][id] == 'undefined'){
				GraphicalTreeCheckboxList_initTree(tree_id,id);
			}


			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				c.div.style.visibility = 'visible';
				c.div.style.position = 'relative';
				if(c.status == 1)
					GraphicalTreeCheckboxList_showChildren(tree_id,c.id);
			}

		}


		function GraphicalTreeCheckboxList_hideChildren(tree_id,id){
			var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
			my_item.div.style.overflow='hidden';

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				if(c.div != null){
					c.div.style.visibility = 'hidden';
					GraphicalTreeCheckboxList_hideChildren(tree_id,c.id);
				}
			}
		}
	}


	function GraphicalTreeCheckboxList_handleSecondCheckboxClick(tree_id, id){
		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
		var my_img = document.images['second_checkbox__'+tree_id+'__'+my_item.id];
		if(my_item.value != 0){
			if(my_item.second_value == 1){
				my_item.second_value = 0;
				my_img.src = GraphicalTreeCheckboxList_second_checkbox_status0;
			}
			else{
				my_item.second_value = 1;
				my_img.src = GraphicalTreeCheckboxList_second_checkbox_status1;
			}
		}
	}


	function GraphicalTreeCheckboxList_handleCheckboxClick(tree_id, id){
		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
		var old_value = my_item.value;

		switch(my_item.value){
			case 0:
				my_item.value = 1;
				var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
				if(my_img)
					my_img.src = GraphicalTreeCheckboxList_checkbox_status1;


				if(GraphicalTreeCheckboxList_use_second_checkbox){
					var second_img = document.images['second_checkbox__'+tree_id+'__'+my_item.id];
					my_item.second_value = 0;
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status0;
				}


				for(var i=0;i<my_item.childrenIdList.length;i++){
					var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
					GraphicalTreeCheckboxList_handleCheckboxClick_children(tree_id, c.id, 1);
				}
			break;
			case 1:
				my_item.value = 0;
				var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
				if(my_img)
					my_img.src = GraphicalTreeCheckboxList_checkbox_status0;


				if(GraphicalTreeCheckboxList_use_second_checkbox){
					var second_img = document.images['second_checkbox__'+tree_id+'__'+my_item.id];
					my_item.second_value = 0;
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status2;
				}


				for(var i=0;i<my_item.childrenIdList.length;i++){
					var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
					GraphicalTreeCheckboxList_handleCheckboxClick_children(tree_id, c.id, 0);
				}
			break;

			default:
				my_item.value = 1;
				var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
				if(my_img)
					my_img.src = GraphicalTreeCheckboxList_checkbox_status1;


				if(GraphicalTreeCheckboxList_use_second_checkbox){
					var second_img = document.images['second_checkbox__'+tree_id+'__'+my_item.id];
					if(my_item.second_value == 0)
						second_img.src = GraphicalTreeCheckboxList_second_checkbox_status0;
					else
						second_img.src = GraphicalTreeCheckboxList_second_checkbox_status1;
				}


				for(var i=0;i<my_item.childrenIdList.length;i++){
					var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
					GraphicalTreeCheckboxList_handleCheckboxClick_children(tree_id, c.id, 1);
				}
		}


		if(my_item.parentId != my_item.id){
			GraphicalTreeCheckboxList_handleCheckboxClick_parents(tree_id, my_item.parentId, old_value);
		}
	}

	function GraphicalTreeCheckboxList_handleCheckboxClick_children(tree_id, id, value){
		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
		my_item.value = value;
		var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];


		if(GraphicalTreeCheckboxList_use_second_checkbox){
			var second_img = document.images['second_checkbox__'+tree_id+'__'+id];
			if(value == 0){
				my_item.second_value = 0;
				if(second_img)
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status2;
			}
			else if(second_img){
				if(my_item.second_value == 0)
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status0;
				else
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status1;
			}
		}


		if(my_img)
			my_img.src = eval('GraphicalTreeCheckboxList_checkbox_status'+value);
		for(var i=0;i<my_item.childrenIdList.length;i++){
			var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
			GraphicalTreeCheckboxList_handleCheckboxClick_children(tree_id, c.id, value);
		}
	}

	function GraphicalTreeCheckboxList_handleCheckboxClick_parents(tree_id, id, value){

		var my_item = GraphicalTreeCheckboxList_getTreeItemById(tree_id, id);
		var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
		var old_value = my_item.value;


		var last_value = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[0]).value;
		var is_homogen = true;
		for(var i=0;i<my_item.childrenIdList.length;i++){
			var c = GraphicalTreeCheckboxList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
			if(c.value != last_value){
				var is_homogen = false;
				break;
			}
			last_value = c.value;
		}

		if(is_homogen){
			my_item.value = last_value;
			var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
			if(my_img)
				my_img.src = eval('GraphicalTreeCheckboxList_checkbox_status'+last_value);
		}
		else{
			my_item.value = 2;
			var my_img = document.images['checkbox__'+tree_id+'__'+my_item.id];
			if(my_img)
				my_img.src = GraphicalTreeCheckboxList_checkbox_status2;
		}

		if(my_item.parentId != my_item.id && old_value != my_item.value){
			GraphicalTreeCheckboxList_handleCheckboxClick_parents(tree_id, my_item.parentId, old_value)
		}


		if(GraphicalTreeCheckboxList_use_second_checkbox){
			var second_img = document.images['second_checkbox__'+tree_id+'__'+id];
			if(my_item.value == 0){
				my_item.second_value = 0;
				if(second_img)
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status2;
			}
			else{
				if(my_item.second_value == 0)
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status0;
				else
					second_img.src = GraphicalTreeCheckboxList_second_checkbox_status1;
			}
		}

	}


	function GraphicalTreeCheckboxList_writeSecondCheckboxValues(tree_id){

		var my_list = new Array();
		var second_field = eval('document.myForm.'+GraphicalTreeCheckboxList_second_checkbox_fieldname);

		if(!second_field) return false;
		for(var i in GraphicalTreeCheckboxList_TreeIdList[tree_id]){
			if(GraphicalTreeCheckboxList_TreeIdList[tree_id][i].second_value == 1){
				my_list = my_list.concat(i);
			}
		}
		second_field.value = my_list.join(',');
	}


	function GraphicalTreeCheckboxList_writeValues(tree_id,parent){

		var field = eval('document.myForm.'+tree_id);

		for(var i=0; i<GraphicalTreeCheckboxList_TreeIdList[tree_id][parent].childrenIdList.length;i++){
			var item = GraphicalTreeCheckboxList_getTreeItemById(tree_id,GraphicalTreeCheckboxList_TreeIdList[tree_id][parent].childrenIdList[i]);
			if(item.value == 1){
				if(field.value == '')
					field.value = item.id;
				else
					field.value = (field.value.split(',').concat(item.id)).join(',');
			}
			else{
				GraphicalTreeCheckboxList_writeValues(tree_id,item.id);
			}
		}
	}


	function GraphicalTreeCheckboxList_storeOpenedNodes(tree_id){

		var my_list = new Array();
		var open_nodes_field = eval('document.myForm.'+tree_id+'_open_nodes');

		if(!open_nodes_field) return false;
		for(var i in GraphicalTreeCheckboxList_TreeIdList[tree_id]){
			if(GraphicalTreeCheckboxList_TreeIdList[tree_id][i].status == 1){
				my_list = my_list.concat(i);
			}
		}
		open_nodes_field.value = my_list.join(',');
	}


	
var threeStateCheckbox_graphicList = new Array();
function threeStateCheckbox_registerCheckboxGraphic(fieldname, id, graphic, hidden_field){
graphic.onload = function(){};
if(!threeStateCheckbox_graphicList[fieldname]){
threeStateCheckbox_graphicList[fieldname] = new Array();
}
threeStateCheckbox_graphicList[fieldname][id] = graphic;
threeStateCheckbox_graphicList[fieldname]['__hidden_field'] = hidden_field;
}
function threeStateCheckbox_getCheckboxGraphic(fieldname, id){
return threeStateCheckbox_graphicList[fieldname][id];
}
function handleThreeStateCheckboxClick(formname,fieldname,id){
if(threeStateCheckbox_graphicList[fieldname]
&& threeStateCheckbox_graphicList[fieldname]['__hidden_field']){
var field = threeStateCheckbox_graphicList[fieldname]['__hidden_field'];
}
else{
var field = document.forms[formname].elements[fieldname];
threeStateCheckbox_graphicList[fieldname]['__hidden_field'] = field;
}
if(field){
var fieldvalue = field.value;
}
else{
return;
}
if(field.value==id)
return;
else{
field.value = id;
for(var i in threeStateCheckbox_graphicList[fieldname]){
if(i == id){
var sign = true;
}
else{
var sign = false;
}
var img_src = graphicalCheckbox_getCheckboxPathByValue(threeStateCheckbox_graphicList[fieldname][i].src,sign);
threeStateCheckbox_graphicList[fieldname][i].setAttribute('src',img_src);
}
}
}
	

	var TreeList_imgClose = framework__image_root_app_design+'/TreeList/close.gif';
	var TreeList_imgOpen = framework__image_root_app_design+'/TreeList/open.gif';
	var TreeList_empty = framework__image_root+'/empty1x1.gif';
	var TreeList_imagesAlreadyLoaded = false;

	var TreeList_TreeIdList = new Array();
	var TreeList_AddedTreeIdList = new Array();
	var TreeList_depthInitCounter = new Array();


	function TreeList_loadImages(){
		if(TreeList_imagesAlreadyLoaded) return;
		var imgLoader = new Image();
		imgLoader.src = TreeList_imgClose;
		var imgLoader2 = new Image();
		imgLoader2.src = TreeList_imgOpen;
		TreeList_imagesAlreadyLoaded = true;
	}


	function TreeList_AddTree(id){
		TreeList_loadImages();

		TreeList_TreeIdList[id] = new Array();
		TreeList_TreeIdList[id]['root'] = new TreeList_TreeItem('root','root',0,null,null,0);
		TreeList_TreeIdList[id]['root'].childrenIdList = new Array();
		TreeList_depthInitCounter[id] = new Array();
	}


	function TreeList_initTree(tree_id, my_id){
		var item = TreeList_getTreeItemById(tree_id,my_id);
		for(var id=0;id<item.childrenIdList.length;id++){

			var c = TreeList_getTreeItemById(tree_id,item.childrenIdList[id]);
			if(c.id != c.parentId){
				TreeList_addTreeItem(tree_id,c.id);
			}

		}
		TreeList_depthInitCounter[tree_id][item.id] = true;
	}


	function TreeList_TreeItem(id,parent_id,status,text,on_click,depth){
		this.id 			= id;
		this.parentId 		= parent_id;
		this.status			= status;
		this.childrenIdList = new Array();
		this.div 			= null;
		this.text 			= text;
		this.on_click 		= on_click;
		this.depth 			= depth;
	}


	function TreeList_getTreeItemPositionById(id,list){
		for(var i=0; i<list.length;i++){
			if(list[i] == id)
				return i;
		}
		return -1;
	}


	function TreeList_getTreeItemById(tree_id, id){
		return TreeList_TreeIdList[tree_id][id];
	}

	function TreeList_initTreeItem(tree_id, id,parent,status,text,on_click,depth){


		if(id != parent){
			var parent_item = TreeList_getTreeItemById(tree_id, parent);

			parent_item.childrenIdList = parent_item.childrenIdList.concat(id);
			var my_item = new TreeList_TreeItem(id,parent,status,text,on_click,parent_item.depth+1);
		}
		else{
			TreeList_TreeIdList[tree_id]['root'].childrenIdList = TreeList_TreeIdList[tree_id]['root'].childrenIdList.concat(id);
			var my_item = new TreeList_TreeItem(id,parent,status,text,on_click,depth);
		}


		TreeList_TreeIdList[tree_id][id] = my_item;
	}


	function TreeList_addTreeItem(tree_id,id){


		if( !TreeList_AddedTreeIdList[tree_id] ){
			TreeList_AddedTreeIdList[tree_id] = new Array();
			TreeList_AddedTreeIdList[tree_id][id] = true;
		}
		else{
			if( !TreeList_AddedTreeIdList[tree_id][id] ){
				TreeList_AddedTreeIdList[tree_id][id] = true;
			}else{
				return;
			}
		}

		var rootDiv = document.getElementById('TreeList_mainDiv_'+tree_id);

		var my_item = TreeList_getTreeItemById(tree_id, id);

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



		if(my_item.id == my_item.parentId){

			var parentDiv = rootDiv;

			newDiv.style.visibility = 'visible';
			newDiv.style.position = 'relative';
			newDiv.style.overflow='visible';
		}
		else{
			var parent_item = TreeList_getTreeItemById(tree_id, my_item.parentId)

			var parentDiv = parent_item.div;

			if(parent_item.status == 0){
				newDiv.style.visibility = 'hidden';
				newDiv.style.position = 'absolute';
				newDiv.style.overflow='hidden';
			}
			else{
				newDiv.style.visibility = 'visible';
				newDiv.style.position = 'relative';
				newDiv.style.overflow='visible';
			}

			newDiv.style.left = '20px';


			if(TreeList_getTreeItemPositionById(id,parent_item.childrenIdList) == 0)
				newDiv.style.marginTop = '2px';


			if(TreeList_getTreeItemPositionById(id,parent_item.childrenIdList) == parent_item.childrenIdList.length-1)
				newDiv.style.marginBottom = '2px';
		}


		if(my_item.childrenIdList.length == 0)
			img_src = TreeList_empty;
		else if(my_item.status == 0){
				img_src = TreeList_imgClose;
				}
			else{
				img_src = TreeList_imgOpen;
				TreeList_depthInitCounter[tree_id][id] = true;
			}

		newDiv.style.height= '20px';

		if(my_item.childrenIdList.length == 0){
		}
		else{
		}

		newDiv.innerHTML = '<IMG onLoad="" border="0px" height="9px" width="9px" align="bottom" '
							+'src='+img_src+' name="img__'+tree_id+'__'+id
							+'" onClick="TreeList_handleClick(\''+tree_id+'\',\''+id+'\'); return false;">'
							+'<a href="#" onClick="'
							+my_item.on_click
							+';return false;">'
							+'&nbsp;'
							+my_item.text
							+'</a>';

		my_item.div = newDiv;

		parentDiv.appendChild(newDiv);

		if(my_item.status == 1){
			for(var i=0;i<my_item.childrenIdList.length;i++){
				TreeList_addTreeItem(tree_id,my_item.childrenIdList[i]);
			}
		}
	}

	function TreeList_handleClick(tree_id,id){

		var clicked_img = document.images['img__'+tree_id+'__'+id];

		var my_item = TreeList_getTreeItemById(tree_id, id);


		if(my_item.status == 0){

			my_item.status = 1;

			var my_src = TreeList_imgOpen;
			TreeList_showChildren(tree_id,id);
		}
		else{

			my_item.status = 0;

			var my_src = TreeList_imgClose;
			TreeList_hideChildren(tree_id,id);
		}

		clicked_img.src = my_src;

	}

	if(!document.all){
		function TreeList_showChildren(tree_id,id){

			var my_item = TreeList_getTreeItemById(tree_id, id);

			my_item.div.style.height = null

			TreeList_initTree(tree_id,id);

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = TreeList_getTreeItemById(tree_id,my_item.childrenIdList[i]);

				if(c.status == 1)
					TreeList_showChildren(tree_id,c.id);
			}
		}


		function TreeList_hideChildren(tree_id,id){
			var my_item = TreeList_getTreeItemById(tree_id, id);

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = TreeList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				if(c.div && c.div.parentNode){
					c.div.parentNode.removeChild(c.div);
					TreeList_hideChildren(tree_id,c.id);
				}
			}
		}
	}
	else{
		function TreeList_showChildren(tree_id,id){

			var my_item = TreeList_getTreeItemById(tree_id, id);
			my_item.div.style.overflow='visible';

			if(typeof TreeList_depthInitCounter[tree_id][id] == 'undefined'){
				TreeList_initTree(tree_id,id);
			}


			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = TreeList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				c.div.style.visibility = 'visible';
				c.div.style.position = 'relative';
				if(c.status == 1)
					TreeList_showChildren(tree_id,c.id);
			}

		}


		function TreeList_hideChildren(tree_id,id){
			var my_item = TreeList_getTreeItemById(tree_id, id);
			my_item.div.style.overflow='hidden';

			for(var i=0;i<my_item.childrenIdList.length;i++){
				var c = TreeList_getTreeItemById(tree_id,my_item.childrenIdList[i]);
				if(c.div != null){
					c.div.style.visibility = 'hidden';
					TreeList_hideChildren(tree_id,c.id);
				}
			}
		}
	}


	function TreeList_storeOpenedNodes(tree_id){
		var my_list = new Array();
		var open_nodes_field = eval('document.myForm.'+tree_id+'_open_nodes');

		if(!open_nodes_field) return false;
		for(var i in TreeList_TreeIdList[tree_id]){
			if(TreeList_TreeIdList[tree_id][i].status == 1){
				my_list = my_list.concat(i);
			}
		}
		open_nodes_field.value = my_list.join(',');
	}


	

	

	var ie4=document.all;
	var ns6=document.getElementById&&!document.all;

	var overlay_obj_status_fieldname;

	var dragapproved=false;

	var allMoveableObjects = new Array();

	var drag_element_name;
	var div_element;
	var title_div_element;
	var move_element;
	var suffix;
	var obj_name;
	var fieldname;
	var action2do;


	var moveable_object_width_min = 100;
	var moveable_object_width_max = 300;
	var moveable_object_height_min = 100;
	var moveable_object_height_max = 500;
	var moveable_object_with_text_width_min = 50;
	var moveable_object_with_text_width_max = 300;
	var moveable_object_with_text_height_min = 50;
	var moveable_object_with_text_height_max = 500;

	var moveable_object_with_text_contentEditable = 'true';

	var moveable_object_zoom_factor = 1;


	var moveable_object_border_gif = framework__spacergif;


	moveable_object_with_text_reg_counter = parseInt(Math.random()*1000000000);


	var moveable_object_border = 3;

	var moveable_reference_line_width = 7;

	var moveable_dragbox_height = 20;

	var moveable_object_border_color = '#666666'

	moveable_object_title_color = '#888888';


	var moveable_object_border_color_active = '#886666'

	var moveable_object_title_color_active = '#CC8888';


	var moveable_object_with_text_border_color = 'transparent';


	var moveable_object_current_active_element;


	var moved_line_index = null;


	var init_x = 100;
	var init_y = 100;
	var loop_x = 100;
	var loop_y = 100;
	var init_width = 200;
	var init_height = 100;
	var init_z = 2;

	var overlay_max_l = 0;
	var overlay_max_r = 1200;
	var overlay_max_t = 0;
	var overlay_max_b = 1600;

	var use_values_form_field = true;

	var root_element = null;

	function moveableObject_move_drag_object(e){

		if(dragapproved){

			obj_name = suffix.split('$')[1];

			max_x = overlay_max_r - parseInt(div_element.offsetWidth);

			max_y = overlay_max_b - parseInt(div_element.offsetHeight);


			curr_width	=	ie4? tempdw+event.clientX-offsetx : tempdw + e.clientX - offsetx;

			curr_height	= ie4? tempdh+event.clientY-offsety : tempdh + e.clientY - offsety;

			curr_x = ie4? parseInt(tempx+event.clientX-offsetx) : parseInt(tempx+e.clientX - offsetx)
			curr_y = ie4? parseInt(tempy+event.clientY-offsety) : parseInt(tempy+e.clientY - offsety)
			curr_h = ie4? tempy+event.clientY-offsety+div_element.offsetHeight : tempy + e.clientY - offsety + div_element.offsetHeight
			curr_w = ie4? tempx+event.clientX-offsetx+div_element.offsetWidth : tempx + e.clientX - offsetx + div_element.offsetWidth


			var curr_obj = getObjectPropertiesByObjid(obj_name);
			switch(action2do){
				case 'drag':
					var new_left = ie4? tempx+event.clientX-offsetx : tempx+e.clientX-offsetx;
					var new_top	= ie4? tempy+event.clientY-offsety : tempy+e.clientY-offsety;

					new_left = parseInt(parseInt(new_left) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;
					new_top = parseInt(parseInt(new_top) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;

					var is_out_of_bound_x = false;
					var is_out_of_bound_y = false;



					if(parseInt(new_top)+parseInt(div_element.offsetHeight) >= overlay_max_b){
						is_out_of_bound_y = true;

						if(curr_obj.movable_y){
							crossobj.style.top  	= overlay_max_b - parseInt(div_element.offsetHeight);
						}
					}

					if(parseInt(new_top) <= overlay_max_t){
						is_out_of_bound_y = true;

						if(curr_obj.movable_y){
							crossobj.style.top  	= overlay_max_t;
						}
					}

					if(parseInt(new_left)+parseInt(div_element.offsetWidth) >= overlay_max_r){
						is_out_of_bound_x = true;

						if(curr_obj.movable_x){
							crossobj.style.left 	= overlay_max_r - parseInt(div_element.offsetWidth);
						}
					}

					if(parseInt(new_left) <= overlay_max_l){
						is_out_of_bound_x = true;

						if(curr_obj.movable_x){
							crossobj.style.left 	= overlay_max_l;
						}
					}




					if(curr_obj.movable_x && ! is_out_of_bound_x){
						crossobj.style.left 	= new_left;
					}

					if(curr_obj.movable_y && ! is_out_of_bound_y){
						crossobj.style.top  	= new_top;
					}




					div_element.style.top	= crossobj.style.top;
					div_element.style.left	= crossobj.style.left;

					break;

				case 'dimxr':
					var width_min = getObjectPropertiesByObjid(obj_name).width_min;
					var width_max = getObjectPropertiesByObjid(obj_name).width_max;

					var new_width = curr_width - dim_xr_element.offsetWidth;
					new_width = parseInt(parseInt(new_width) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;


					if(  parseInt(new_width) <= parseInt(width_min)
					  || parseInt(new_width) >= parseInt(width_max)

					  || parseInt(div_element.style.left)+parseInt(new_width) >= overlay_max_r
					){
						return false;
					}
					else{

							if(curr_obj.type == 'table_with_text')
								title_div_element.style.width = new_width;

							div_element.style.width	= new_width;
							r = document.getElementById('iframe_'+obj_name);
							if(r)
								r.width = div_element.style.width;
							crossobj.style.width = div_element.style.width;
						}
					break;

				case 'dimxl':
					var width_min = getObjectPropertiesByObjid(obj_name).width_min;
					var width_max = getObjectPropertiesByObjid(obj_name).width_max;

					var new_width = div_element.offsetWidth + parseInt(div_element.style.left) - curr_x;
					new_width = parseInt(parseInt(new_width) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;
					curr_x = parseInt(parseInt(curr_x) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;


					if(  parseInt(new_width) <= parseInt(width_min)
					  || parseInt(new_width) >= parseInt(width_max)

					  || parseInt(new_width) - parseInt(div_element.offsetWidth) >= parseInt(div_element.style.left)
					){
						return false;
					}
					else{

							if(curr_obj.type == 'table_with_text')
								title_div_element.style.width = new_width;

							div_element.style.left	= parseInt(div_element.style.left) + parseInt(div_element.style.width) - parseInt(new_width);
							div_element.style.width	= new_width;

							r = document.getElementById('iframe_'+obj_name);
							if(r)
								r.width = div_element.style.width;
							crossobj.style.width = div_element.style.width;
							crossobj.style.left = curr_x;
						}
					break;

				case 'dimyb':
					var height_min = getObjectPropertiesByObjid(obj_name).height_min;
					var height_max = getObjectPropertiesByObjid(obj_name).height_max;

					var new_height = curr_height - dim_yb_element.offsetHeight;
					new_height = parseInt(parseInt(new_height) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;


					if(	 parseInt(new_height) <= parseInt(height_min)
					  || parseInt(new_height) >= parseInt(height_max)

					  || parseInt(div_element.style.top)+parseInt(new_height) >= overlay_max_b
					){
						return false;
					}
					else{

						if(curr_obj.type == 'table_with_text')
							title_div_element.style.height = new_height;

						div_element.style.height = new_height;
						r = document.getElementById('iframe_'+obj_name);
						if(r)
							r.height = parseInt(div_element.style.height)-20;
					}
					break;

				case 'dimyt':
					var height_min = getObjectPropertiesByObjid(obj_name).height_min;
					var height_max = getObjectPropertiesByObjid(obj_name).height_max;

					var new_height = div_element.offsetHeight + parseInt(div_element.style.top) - curr_y;
					new_height = parseInt(parseInt(new_height) / moveable_object_zoom_factor ) * moveable_object_zoom_factor;


					if(	 parseInt(new_height) <= parseInt(height_min)
					  || parseInt(new_height) >= parseInt(height_max)

					  || parseInt(new_height) - parseInt(div_element.offsetHeight) >= parseInt(div_element.style.top)
					){
						return false;
					}
					else{

						if(curr_obj.type == 'table_with_text')
							title_div_element.style.height = new_height;

						div_element.style.top	= parseInt(div_element.style.top) + parseInt(div_element.style.height) - parseInt(new_height);
						div_element.style.height = new_height;

						crossobj.style.top = curr_y;

						r = document.getElementById('iframe_'+obj_name);
						if(r)
							r.height = parseInt(div_element.style.height)-20;
					}
					break;
				default:
					return false;
			}
			moveableObject_set_div_dims(fieldname,suffix)
			return false;
		}
	}


	function moveableObject_init_move_drag_object(e){

		var firedobj=ie4? event.srcElement : e.target

		curr_id=firedobj.id.split('$');

		switch(curr_id[0]){
			case 'dragbar':
				action2do='drag';

				fieldname=curr_id[1];

				obj_name = curr_id[2];
				suffix = fieldname+'$'+curr_id[2];
				break;

			case 'dimxl':

				fieldname=curr_id[1];

				obj_name = curr_id[2];
				suffix = fieldname+'$'+curr_id[2];
				action2do = 'dimxl';
				break;

			case 'dimxr':

				fieldname=curr_id[1];

				obj_name = curr_id[2];
				suffix = fieldname+'$'+curr_id[2];
				action2do = 'dimxr';
				break;

			case 'dimyt':

				fieldname = curr_id[1];

				obj_name = curr_id[2];
				suffix = fieldname+'$'+curr_id[2];
				action2do = 'dimyt';
				break;

			case 'dimyb':

				fieldname=curr_id[1];

				obj_name = curr_id[2];
				suffix = fieldname+'$'+curr_id[2];
				action2do = 'dimyb';
				break;
			default:
				dragapproved=false;
				suffix = 'nothing';
				fieldname = null;
				action2do = 'nothing';

				return true;
		}


		if(action2do != 'nothing'){

			drag_element_name 	= 'dragbar$'+suffix;

			dim_xr_element_name	= 'dim_x_r$'+suffix;

			dim_xl_element_name	= 'dim_x_l$'+suffix;

			dim_yt_element_name	= 'dim_y_t$'+suffix;

			dim_yb_element_name	= 'dim_y_b$'+suffix;



			//rootelem=document.getElementById('mother_of_all'+fieldname);

			div_element=document.getElementById('div$'+suffix);

			title_div_element = document.getElementById('title_div$'+suffix);

			dim_xl_element=document.getElementById(dim_xl_element_name);

			dim_xr_element=document.getElementById(dim_xr_element_name);

			dim_yt_element=document.getElementById(dim_yt_element_name);

			dim_yb_element=document.getElementById(dim_yb_element_name);

			crossobj=document.getElementById('move_div$'+suffix);


			var topelement=ns6? "HTML" : "BODY"
			while (firedobj.tagName!=topelement
			&&firedobj.id!=drag_element_name
			&&firedobj.id!=dim_xl_element_name
			&&firedobj.id!=dim_xr_element_name
			&&firedobj.id!=dim_yt_element_name
			&&firedobj.id!=dim_yb_element_name){
				firedobj=ns6? firedobj.parentNode : firedobj.parentElement;
			}


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

			tempx=parseInt(crossobj.style.left);
			tempy=parseInt(crossobj.style.top);

			if(dim_xl_element != null)
				tempdxl=parseInt(dim_xl_element.style.left);

			if(dim_xr_element != null)
				tempdxr=parseInt(dim_xr_element.style.left);

			if(dim_yt_element != null)
				tempdyt=parseInt(dim_yt_element.style.top);

			if(dim_yb_element != null)
				tempdyb=parseInt(dim_yb_element.style.top)

			tempdw=parseInt(div_element.offsetWidth);
			tempdh=parseInt(div_element.offsetHeight);

			dragapproved=true;
			document.onmousemove=moveableObject_move_drag_object;
		}


		var obj = getObjectPropertiesByObjid(obj_name);
		if(obj && obj.type){
			switch(obj.type){
				case 'table_with_text':

					var title_div = document.getElementById('title_div$'+prefix+'$'+obj_name);
					title_div.focus();

				case 'table_with_iframe':
					moveableObject_setActiveState(prefix,obj,true);
				default:
			}
		}

	}

	function moveableObject_terminate_drop(e){
		dragapproved=false;
		return false;
	}

	function moveableObject_validate_drag_status(e){

		mouse_x = ie4? event.clientX : e.clientX
		mouse_y = ie4? event.clientY	: e.clientY
		curr_x = parseInt(mouse_x) - overlay_max_l + parseInt(document.body.scrollLeft)
		curr_y = parseInt(mouse_y) - overlay_max_t + parseInt(document.body.scrollTop)


		obj_name = suffix.split('$')[1];

		switch(action2do){
			case 'drag':

				if(curr_x<0){
					crossobj.style.left=0
					div_element.style.left=0
				}
				else if(curr_x > overlay_max_r){
						crossobj.style.left = overlay_max_r - parseInt(div_element.offsetWidth)
						div_element.style.left = overlay_max_r - parseInt(div_element.offsetWidth)
					 }
					 else if(curr_x-2>parseInt(crossobj.style.left)+parseInt(crossobj.offsetWidth)
						  || curr_x+2<parseInt(crossobj.style.left)){
								crossobj.style.left=curr_x
								div_element.style.left=curr_x
							}
				if(curr_y<0){
					crossobj.style.top=0
					div_element.style.top=0
				}
				else if(curr_y > overlay_max_b){
						crossobj.style.top = overlay_max_b - parseInt(div_element.offsetHeight)
						div_element.style.top = overlay_max_b - parseInt(div_element.offsetHeight)
					 }
					 else if(curr_y-2>parseInt(crossobj.style.top)+parseInt(crossobj.offsetHeight)
						  || curr_y+2<parseInt(crossobj.style.top)){
								crossobj.style.top=curr_y
								div_element.style.top=curr_y
							}
				break;

			case 'dimxl':

			case 'dimxr':
				var width_min = getObjectPropertiesByObjid(obj_name).width_min;
				var width_max = getObjectPropertiesByObjid(obj_name).width_max;

				if(curr_x<parseInt(div_element.style.left)+width_min){
					div_element.style.width=width_min;
				}


				if(curr_x > parseInt(div_element.style.left)+width_max){
					if(curr_x < overlay_max_r)
						div_element.style.width=width_max;
				}
				else

				if(curr_x > overlay_max_r){
					div_element.style.width = overlay_max_r - parseInt(div_element.style.left)
				}
				else if(curr_x+2 < parseInt(div_element.style.left)+parseInt(div_element.offsetWidth)+parseInt(dim_xr_element.offsetWidth)
						|| curr_x-2 > parseInt(div_element.style.left)+parseInt(div_element.offsetWidth)+parseInt(dim_xr_element.offsetWidth) ){
						div_element.style.width=Math.max(curr_x-parseInt(div_element.style.left),width_min)
					}
				break;

			case 'dimyt':

			case 'dimyb':
				var height_min = getObjectPropertiesByObjid(obj_name).height_min;
				var height_max = getObjectPropertiesByObjid(obj_name).height_max;

				if(curr_y > overlay_max_b){
					div_element.style.height = overlay_max_b - parseInt(div_element.style.top);
				}

				else if(curr_y + 2 < parseInt(div_element.style.top)+parseInt(div_element.offsetHeight)+parseInt(dim_xr_element.offsetHeight)
						|| curr_y - 2 > parseInt(div_element.style.top)+parseInt(div_element.offsetHeight)+parseInt(dim_xr_element.offsetHeight) ){
						div_element.style.height=Math.max(curr_y-parseInt(div_element.style.top),height_min)
					}
				break;
			default:
				return false;
		}


		if(parseInt(div_element.offsetHeight) > overlay_max_b){
			while(parseInt(div_element.offsetHeight) > overlay_max_b){
				div_element.style.width=parseInt(div_element.style.width)+parseInt(moveable_object_border)
			}
			crossobj.style.top=0;
			div_element.style.top=0;
		}

		if(parseInt(div_element.offsetWidth)+parseInt(div_element.style.left) > overlay_max_r){
			crossobj.style.left = overlay_max_r - parseInt(div_element.offsetWidth)
			div_element.style.left = overlay_max_r - parseInt(div_element.offsetWidth)
		}
		if(parseInt(div_element.offsetHeight)+parseInt(div_element.style.top) > overlay_max_b){
			crossobj.style.top = overlay_max_b - parseInt(div_element.offsetHeight)
			div_element.style.top = overlay_max_b - parseInt(div_element.offsetHeight)
		}

		moveableObject_set_div_dims(fieldname,suffix);
		//moveableObject_write_value(suffix);
		return false;
	}


	function moveableObject_reset_div_positions(){

		if(div_element_tmp.style.top =='')
			window.setTimeout("moveableObject_reset_div_positions()",500);

		while(parseInt(div_element_tmp.style.top) + parseInt(div_element_tmp.offsetHeight) > overlay_max_b){
			div_element_tmp.style.top=0
			crossobj.style.top=0
			div_element_tmp.style.width=parseInt(div_element_tmp.style.width)+parseInt(moveable_object_border);
		}

		if(parseInt(div_element_tmp.style.left) + parseInt(div_element_tmp.offsetWidth) > overlay_max_r){
			div_element_tmp.style.left=0
			crossobj.style.left=0
		}

		if(title_div_element_tmp != null){
			title_div_element_tmp.style.top = div_element_tmp.style.top;
			title_div_element_tmp.style.left = div_element_tmp.style.left;
		}

	}

	function moveableObject_set_div_dims(fieldname,suff){

		var suffix_tmp = suff;


		var obj_name_tmp = suff.split('$')[1];


		div_element_tmp = document.getElementById('div$'+suff);

		title_div_element_tmp = document.getElementById('title_div$'+suff);
		var iframe_element_tmp = document.getElementById('iframe_$'+suff);


		var crossobj_tmp = document.getElementById('move_div$'+suff);
		var crossgif_tmp = document.getElementById('dragbar$'+suff);

		moveableObject_reset_div_positions();




		if(document.getElementById('dimxl$'+suff) != null){

			var dim_xl_element_tmp=document.getElementById('dim_x_l$'+suff);
			var dim_xl_gif=document.getElementById('dimxl$'+suff);
			dim_xl_gif.height = parseInt(div_element_tmp.offsetHeight) + moveable_object_border;
			dim_xl_element_tmp.style.height = parseInt(div_element_tmp.offsetHeight) + moveable_object_border;
			dim_xl_element_tmp.style.left = parseInt(div_element_tmp.style.left) - moveable_object_border;
			dim_xl_element_tmp.style.top = parseInt(div_element_tmp.style.top);
		}


		if(document.getElementById('dimxr$'+suff) != null){

			var dim_xr_element_tmp=document.getElementById('dim_x_r$'+suff);
			var dim_xr_gif=document.getElementById('dimxr$'+suff);
			dim_xr_gif.height=parseInt(div_element_tmp.offsetHeight) + moveable_object_border;
			dim_xr_element_tmp.style.height=parseInt(div_element_tmp.offsetHeight) + moveable_object_border;
			dim_xr_element_tmp.style.left=parseInt(div_element_tmp.offsetWidth) + parseInt(div_element_tmp.style.left);
			dim_xr_element_tmp.style.top=parseInt(div_element_tmp.style.top) - moveable_object_border;
		}



		if(document.getElementById('dimyt$'+suff) != null){

			var dim_yt_element_tmp=document.getElementById('dim_y_t$'+suff);
			var dim_yt_gif=document.getElementById('dimyt$'+suff)
			dim_yt_gif.width=div_element_tmp.offsetWidth + moveable_object_border;
			dim_yt_element_tmp.style.width=parseInt(dim_yt_gif.width) + parseInt(moveable_object_border);
			dim_yt_element_tmp.style.left=parseInt(div_element_tmp.style.left) - moveable_object_border;
			dim_yt_element_tmp.style.top=parseInt(div_element_tmp.style.top) - moveable_object_border;
		}


		if(document.getElementById('dimyb$'+suff) != null){

			var dim_yb_element_tmp=document.getElementById('dim_y_b$'+suff);
			var dim_yb_gif=document.getElementById('dimyb$'+suff)
			dim_yb_gif.width=div_element_tmp.offsetWidth + moveable_object_border;
			dim_yb_element_tmp.style.width=parseInt(div_element_tmp.offsetWidth) + parseInt(moveable_object_border);
			dim_yb_element_tmp.style.left=div_element_tmp.style.left;
			dim_yb_element_tmp.style.top=parseInt(div_element_tmp.offsetHeight) + parseInt(div_element_tmp.style.top);
		}

		crossgif_tmp.width = div_element_tmp.offsetWidth;
		crossobj_tmp.style.width = div_element_tmp.offsetWidth;


		if(title_div_element_tmp != null){
			switch(getObjectPropertiesByObjid(obj_name_tmp).type){
				case 'reference_line_y':
					crossgif_tmp.height = Math.max(moveable_dragbox_height,div_element_tmp.offsetHeight);
					crossobj_tmp.style.height = Math.max(moveable_dragbox_height,div_element_tmp.offsetHeight);
					break;
				case 'table_with_text':
					crossgif_tmp.height = div_element_tmp.offsetHeight;
					crossobj_tmp.style.height = div_element_tmp.offsetHeight;

					break;
				default:
					crossgif_tmp.height = Math.min(moveable_dragbox_height,div_element_tmp.offsetHeight);
					crossobj_tmp.style.height = Math.min(moveable_dragbox_height,div_element_tmp.offsetHeight);
			}
		}
		else{
			crossgif_tmp.height = div_element_tmp.offsetHeight;
			crossobj_tmp.style.height = div_element_tmp.offsetHeight;
		}

		var r = document.getElementById('iframe_'+obj_name_tmp);
		if(r){
			r.width = div_element_tmp.offsetWidth;
			r.height = parseInt(div_element_tmp.offsetHeight)-20;
		}

		if(dragapproved)
			updateObjectProperties(div_element_tmp,obj_name_tmp);
	}

	function updateObjectProperties(div_element,obj_name){

		var curr_obj = getObjectPropertiesByObjid(obj_name);


		if(curr_obj.type.substr(0,5) == 'table'){

			curr_obj.width = parseInt(div_element.offsetWidth)+parseInt(2*moveable_object_border);
			curr_obj.height = parseInt(div_element.offsetHeight)+parseInt(2*moveable_object_border);

			curr_obj.x_pos = parseInt(div_element.style.left)-moveable_object_border;
			curr_obj.y_pos = parseInt(div_element.style.top)-moveable_object_border;
		}
		else{

			curr_obj.width = parseInt(div_element.offsetWidth);
			curr_obj.height = parseInt(div_element.offsetHeight);

			curr_obj.x_pos = parseInt(div_element.style.left);
			curr_obj.y_pos = parseInt(div_element.style.top);
		}


		handleMovingForObjectReferences(curr_obj);
	}

	function moveableObject_setTimout2root_div(fieldname){
		dummy_element_tmp=document.getElementById('overlay_dummy_element'+fieldname);
		//rootelem=document.getElementById('mother_of_all'+fieldname);
		if(ns6){
			window.setTimeout("moveableObject_set_root_div()",500);
		}
		else
			moveableObject_set_root_div()
	}

	function moveableObject_set_root_div(){
		rootelem.style.left=dummy_element_tmp.offsetLeft
		rootelem.style.top=dummy_element_tmp.offsetTop
		dummy_element_tmp.style.width=rootelem.offsetWidth;
		dummy_element_tmp.style.height=rootelem.offsetHeight;
		if(ns6)
			rootelem.style.top=parseInt(dummy_element_tmp.offsetTop)+10
		else
			rootelem.style.top=dummy_element_tmp.offsetTop

alert(dummy_element_tmp.id);
		rootelem.style.visibility='visible';
	}

	function remove_object_from_form_field(obj_key){
		var obj_status_field=eval('document.myForm.'+overlay_obj_status_fieldname);
		var curr_values=obj_status_field.value;
		var objlist = curr_values.split(';');

		obj_status_field.value='';

		for(var i=0;i<objlist.length;i++){
			var curr_obj_name = objlist[i].split(',')[0];
			if(curr_obj_name != obj_key){
				if(obj_status_field.value == '')
					obj_status_field.value += objlist[i];
				else
					obj_status_field.value += ';'+objlist[i];
			}
		}
	}

	function moveableObject_set_values_in_form_field(obj_key,x,y,z,w,h,directed,is_fix){


			var curr_obj = getObjectPropertiesByObjid(obj_key);


			var obj_status_field = eval('document.myForm.'+overlay_obj_status_fieldname);
			if(obj_status_field.value == '')
				obj_status_field.value += obj_key+','+curr_obj.type+','+x+','+y+','+z+','+w+','+h+','+directed+','+is_fix+','+curr_obj.text_content;
			else
				obj_status_field.value += ';'+obj_key+','+curr_obj.type+','+x+','+y+','+z+','+w+','+h+','+directed+','+is_fix+','+curr_obj.text_content;
	}

	function get_all_objects2store(){

		var obj_status_field=eval('document.myForm.'+overlay_obj_status_fieldname);
		obj_status_field.value = '';
		for(var i in allMoveableObjects){
			var curr_obj = allMoveableObjects[i];
			if(curr_obj.type.substr(0,5) == 'table'){

				moveableObject_write_object_dimensions_in_form_field(curr_obj,false);

				for(var j=0;j<curr_obj.reference_list.length;j++){

					if(curr_obj.reference_list[j].start == curr_obj) continue;
					for(var k=0;k<curr_obj.reference_list[j].line_list.length;k++){
						moveableObject_write_object_dimensions_in_form_field(curr_obj.reference_list[j].line_list[k],true);
					}
				}
			}
		}
	}

	function moveableObject_write_object_dimensions_in_form_field(obj,is_line){

		var obj_status_field=eval('document.myForm.'+overlay_obj_status_fieldname);

		var x = parseInt(parseInt(obj.x_pos + moveable_object_border)/moveable_object_zoom_factor);
		var y = parseInt(parseInt(obj.y_pos + moveable_object_border)/moveable_object_zoom_factor);

		var w = parseInt(parseInt(obj.width - 2*moveable_object_border)/moveable_object_zoom_factor);
		var h = parseInt(parseInt(obj.height - 2*moveable_object_border)/moveable_object_zoom_factor);

		switch(obj.type){
			case 'table_with_text':
				var title_div = document.getElementById('title_div$'+prefix+'$'+obj.objid);
				if(title_div.innerHTML != null){
					var text_content = (title_div.innerHTML.replace(/,/g,'&#44')).replace(/;/g,'&#59');
				}
				else{
					var text_content = '';
				}
			break;
			default:
				var text_content = '';
		}

		if(!is_line){
			obj_status_field.value += obj.objid+','+obj.type+','+x+','+y+','+obj.z_pos+','+w+','+h+','+null+','+null+','+text_content+';';
		}
		else{
			if(obj.type == 'vertical')
				obj_status_field.value += obj.objid+','+obj.type+','+obj.x_pos+','+obj.y_pos+','+obj.z_pos+','+moveable_reference_line_width+','+obj.dim+','+obj.is_directed2start+','+obj.is_fix+','+text_content+';';
			else
				obj_status_field.value += obj.objid+','+obj.type+','+obj.x_pos+','+obj.y_pos+','+obj.z_pos+','+obj.dim+','+moveable_reference_line_width+','+obj.is_directed2start+','+obj.is_fix+','+text_content+';';
		}
	}

	function moveableObject_write_value(suffix){

		var obj_status_field=eval('document.myForm.'+overlay_obj_status_fieldname);

		s=0;
		var curr_values=obj_status_field.value;
		var all_obj = curr_values.split(';');
		var objlist = new Array();
		for(var i=0;i<all_obj.length;i++){
			tmp_obj_name_len=all_obj[i].indexOf(',');
			tmp_obj_name=all_obj[i].substr(0,tmp_obj_name_len);
			objlist[tmp_obj_name]=all_obj[i].split(',');
		}
		obj_status_field.value='';
		var my_counter=0;
		for(var obj in objlist){
			if(obj != suffix.substr(suffix.length-obj.length,obj.length)){
				if(my_counter == 0)
					obj_status_field.value=objlist[obj].join(',');
				else
					obj_status_field.value=obj_status_field.value+';'+objlist[obj].join(',');
			}
			else if(typeof obj_name != 'undefined'){

				var curr_obj = getObjectPropertiesByObjid(obj_name);


				if(curr_obj.type.substr(0,5) == 'table'){
					var directed = null;
					var is_fix = null;
				}
				else{

					var tmp = obj_key.split('|');
					var ref_name = tmp[0]+'|'+tmp[1];
					var my_reference = getObjectPropertiesByObjid(ref_name);
					var line_index = tmp[2];
					var my_line = my_reference.line_list[line_index];
					var directed = my_line.is_directed2start;
					var is_fix = my_line.is_fix;
				}


				if(objlist[obj][4]!='auto')
					my_prop=obj+','+curr_obj.type+','+parseInt(div_element.style.left)+','+parseInt(div_element.style.top)+','+parseInt(div_element.style.zIndex)+','+parseInt(div_element.offsetWidth)+','+parseInt(div_element.offsetHeight)+','+directed+','+is_fix
				else
					my_prop=obj+','+curr_obj.type+','+parseInt(div_element.style.left)+','+parseInt(div_element.style.top)+','+parseInt(div_element.style.zIndex)+',auto,'+parseInt(div_element.offsetHeight)+','+directed+','+is_fix


				if(objlist[obj][5]!='auto')
					my_prop=obj+','+curr_obj.type+','+parseInt(div_element.style.left)+','+parseInt(div_element.style.top)+','+parseInt(div_element.style.zIndex)+','+parseInt(div_element.offsetWidth)+','+parseInt(div_element.offsetHeight)+','+directed+','+is_fix
				else
					my_prop=obj+','+curr_obj.type+','+parseInt(div_element.style.left)+','+parseInt(div_element.style.top)+','+parseInt(div_element.style.zIndex)+','+parseInt(div_element.offsetWidth)+',auto'+','+directed+','+is_fix

				if(my_counter == 0)
					obj_status_field.value=my_prop;
				else
					obj_status_field.value=obj_status_field.value+';'+my_prop;
			}
			my_counter++;
		}
	}

	function moveableObject_init_clipping(fieldname){
		if(ns6){
			window.captureEvents(Event.MOUSEDOWN);
			window.captureEvents(Event.MOUSEUP);
			window.captureEvents(Event.MOUSEMOVE);
		}

		document.onmousedown = moveableObject_init_move_drag_object;
		document.onmouseup = moveableObject_terminate_drop;

		overlay_obj_status_fieldname=fieldname+'_obj_status';
	}

	function set_clipping_special(suffix){
		my_div=document.getElementById('div$'+suffix);
		my_move=document.getElementById('move_div$'+suffix);
		my_div.style.width=parseInt(my_move.offsetWidth)-2;
		my_div.style.height=parseInt(my_move.offsetHeight)-2;
	}

	function getNextCorner(x,y,x0,y0,x1,y1,x2,y2,x3,y3){
		var ret_value = 0;
		var tmp_min_distance = Math.sqrt(Math.pow(x-x0,2)+Math.pow(y-y0,2));

		if( tmp_min_distance > Math.sqrt(Math.pow(x-x1,2)+Math.pow(y-y1,2)) ){
			ret_value = 1;
			tmp_min_distance = Math.sqrt(Math.pow(x-x1,2)+Math.pow(y-y1,2));
		}

		if( tmp_min_distance > Math.sqrt(Math.pow(x-x2,2)+Math.pow(y-y2,2)) ){
			ret_value = 2;
			tmp_min_distance = Math.sqrt(Math.pow(x-x2,2)+Math.pow(y-y2,2));
		}

		if( tmp_min_distance > Math.sqrt(Math.pow(x-x3,2)+Math.pow(y-y3,2)) ){
			ret_value = 3;
			tmp_min_distance = Math.sqrt(Math.pow(x-x3,2)+Math.pow(y-y3,2));
		}
		return ret_value;
	}


	function obj2Rectangle(obj,use_true_dimensions){
		var rect = new rectangle(obj.objid);

		rect.x0 = obj.x_pos;
		rect.y0 = obj.y_pos;

		rect.y1 = rect.y0;

		rect.x2 = rect.x0;

		if(use_true_dimensions){
			rect.x1 = obj.x_pos + obj.width;
			rect.y2 = obj.y_pos + obj.height;
		}
		else{
			rect.x1 = obj.x_pos + obj.width - moveable_reference_line_width;
			rect.y2 = obj.y_pos + obj.height - moveable_reference_line_width;
		}

		rect.x3 = rect.x1;
		rect.y3 = rect.y2;

		return rect;
	}

	function reduceOverlapedLines(prev_line,reduce_line){
		var new_line = new line();

		new_line.type = reduce_line.type;
		new_line.is_fix = prev_line.is_fix || reduce_line.is_fix;

		if(prev_line.is_directed2start){
			var start_point_x = prev_line.x_pos;
			var start_point_y = prev_line.y_pos;
		}
		else if(prev_line.type == 'vertical'){
				var start_point_x = prev_line.x_pos;
				var start_point_y = prev_line.y_pos + prev_line.dim;
			}
			else{
				var start_point_x = prev_line.x_pos + prev_line.dim;
				var start_point_y = prev_line.y_pos;
			}

		if(!reduce_line.is_directed2start){
			var end_point_x = reduce_line.x_pos;
			var end_point_y = reduce_line.y_pos;
		}
		else if(reduce_line.type == 'vertical'){
				var end_point_x = reduce_line.x_pos;
				var end_point_y = reduce_line.y_pos + reduce_line.dim;
			}
			else{
				var end_point_x = reduce_line.x_pos + reduce_line.dim;
				var end_point_y = reduce_line.y_pos;
			}


		if(prev_line.type == 'vertical'){
			new_line.x_pos = start_point_x;
			new_line.y_pos = Math.min(start_point_y,end_point_y);
			new_line.is_directed2start = (start_point_y < end_point_y);
			new_line.dim = Math.abs(start_point_y - end_point_y);
		}
		else{
			new_line.y_pos = start_point_y;
			new_line.x_pos = Math.min(start_point_x,end_point_x);
			new_line.is_directed2start = (start_point_x < end_point_x);
			new_line.dim = Math.abs(start_point_x - end_point_x);
		}

		return new_line;
	}


	function showLineGifs(ref,line,index){
		var img1 = document.getElementById('gif_start_line$'+prefix+'$'+line.objid);
		var img2 = document.getElementById('dragbar$'+prefix+'$'+line.objid);
		var img3 = document.getElementById('gif_end_line$'+prefix+'$'+line.objid);


		img1.setAttribute('height',7);
		img1.setAttribute('width',7);
		img1.src = framework__spacergif;
		img3.setAttribute('height',7);
		img3.setAttribute('width',7);
		img3.src = framework__spacergif;


		switch(index){

			case 0:

				if(ref.line_list.length > 1){
					if(line.is_directed2start){
						if(line.type == 'vertical'){
							img1.setAttribute('height',15);
							img1.src = img_path+ref.gif_1n;
							if(ref.line_list[index + 1].is_directed2start)
								img3.src = img_path+ref.gif_e4;
							else
								img3.src = img_path+ref.gif_e3;

						}
						else{
							img1.setAttribute('width',15);
							img1.src = img_path+ref.gif_1w;
							if(ref.line_list[index + 1].is_directed2start)
								img3.src = img_path+ref.gif_e2;
							else
								img3.src = img_path+ref.gif_e3;
						}

					}
					else{
						if(line.type == 'vertical'){
							img3.setAttribute('height',15);
							img3.src = img_path+ref.gif_1s;
							if(ref.line_list[index + 1].is_directed2start)
								img1.src = img_path+ref.gif_e1;
							else
								img1.src = img_path+ref.gif_e2;
						}
						else{
							img3.setAttribute('width',15);
							img3.src = img_path+ref.gif_1e;
							if(ref.line_list[index + 1].is_directed2start)
								img1.src = img_path+ref.gif_e1;
							else
								img1.src = img_path+ref.gif_e4;
						}
					}

					var mid_dim = 22;
				}
				else{
					if(line.is_directed2start){
						if(line.type == 'vertical'){
							img1.setAttribute('height',15);
							img1.src = img_path+ref.gif_1n;

							img3.setAttribute('height',13);
							img3.src = img_path+ref.gif_ns;
						}
						else{
							img1.setAttribute('width',15);
							img1.src = img_path+ref.gif_1w;

							img3.setAttribute('width',13);
							img3.src = img_path+ref.gif_ne;
						}
					}
					else{
						if(line.type == 'vertical'){
							img3.setAttribute('height',15);
							img3.src = img_path+ref.gif_1s;

							img1.setAttribute('height',13);
							img1.src = img_path+ref.gif_nn;
						}
						else{
							img3.setAttribute('width',15);
							img3.src = img_path+ref.gif_1e;

							img1.setAttribute('width',13);
							img1.src = img_path+ref.gif_nw;
						}
					}

					var mid_dim = 28;
				}
				break;

			case ref.line_list.length - 1:
				if(line.is_directed2start){
					if(line.type == 'vertical'){
						img3.setAttribute('height',13);
						img3.src = img_path+ref.gif_ns;
						if(ref.line_list[index - 1].is_directed2start)
							img1.src = img_path+ref.gif_e2;
						else
							img1.src = img_path+ref.gif_e1;
					}
					else{
						img3.setAttribute('width',13);
						img3.src = img_path+ref.gif_ne;
						if(ref.line_list[index - 1].is_directed2start)
							img1.src = img_path+ref.gif_e4;
						else
							img1.src = img_path+ref.gif_e1;
					}
				}
				else{
					if(line.type == 'vertical'){
						img1.setAttribute('height',13);
						img1.src = img_path+ref.gif_nn;
						if(ref.line_list[index - 1].is_directed2start)
							img3.src = img_path+ref.gif_e3;
						else
							img3.src = img_path+ref.gif_e4;
					}
					else{
						img1.setAttribute('width',13);
						img1.src = img_path+ref.gif_nw;
						if(ref.line_list[index - 1].is_directed2start)
							img3.src = img_path+ref.gif_e3;
						else
							img3.src = img_path+ref.gif_e2;
					}
				}


				var mid_dim = 20;
				break;
			default:
				if(line.is_directed2start){
					if(line.type == 'vertical'){
						if(ref.line_list[index + 1].is_directed2start)
							img3.src = img_path+ref.gif_e4;
						else
							img3.src = img_path+ref.gif_e3;
						if(ref.line_list[index - 1].is_directed2start)
							img1.src = img_path+ref.gif_e2;
						else
							img1.src = img_path+ref.gif_e1;
					}
					else{
						if(ref.line_list[index + 1].is_directed2start)
							img3.src = img_path+ref.gif_e2;
						else
							img3.src = img_path+ref.gif_e3;
						if(ref.line_list[index - 1].is_directed2start)
							img1.src = img_path+ref.gif_e4;
						else
							img1.src = img_path+ref.gif_e1;
					}
				}
				else{
					if(line.type == 'vertical'){
						if(ref.line_list[index + 1].is_directed2start)
							img1.src = img_path+ref.gif_e1;
						else
							img1.src = img_path+ref.gif_e2;
						if(ref.line_list[index - 1].is_directed2start)
							img3.src = img_path+ref.gif_e3;
						else
							img3.src = img_path+ref.gif_e4;
					}
					else{
						if(ref.line_list[index + 1].is_directed2start)
							img1.src = img_path+ref.gif_e1;
						else
							img1.src = img_path+ref.gif_e4;
						if(ref.line_list[index - 1].is_directed2start)
							img3.src = img_path+ref.gif_e3;
						else
							img3.src = img_path+ref.gif_e2;
					}
				}

				var mid_dim = 14;
		}


		if(line.type == 'vertical'){
			img2.src = img_path+ref.gif_v;
			img2.setAttribute('height',Math.max(line.dim-mid_dim,0));
		}
		else{
			img2.src = img_path+ref.gif_h;
			img2.setAttribute('width',Math.max(line.dim-mid_dim,0));
		}

	}

	function removeElementFromList(list,element,is_associative_array){

		var list_copy = cloneArray(list,true);
		list = new Array();

		if(is_associative_array){
			for(var o in list_copy){
				if(list_copy[o] != element){
					list[o] = list_copy[o];
				}
			}
		}
		else{
			var i = 0;
			for(var o = 0;o < list_copy.length; o++){
				if(list_copy[o] != element){
					list[i++] = list_copy[o];
				}
			}
		}
		return list;
	}

	function validateReferenceLines(ref,ref_lines){

		if(ref_lines.length == 0) return ref_lines;

		var start_obj = ref.start;
		var end_obj = ref.end;

		var new_line_list = new Array();


		for(var i=1;i<ref_lines.length;i++){
			var reduce_line = ref_lines[i];
			var prev_line = ref_lines[i-1];
			var new_line = new line();
			var new_line_list_tmp = new Array();

			if(reduce_line.type != prev_line.type) continue;

			if( (reduce_line.type == 'horizontal' && reduce_line.y_pos == prev_line.y_pos)
				|| (reduce_line.type == 'vertical' && reduce_line.x_pos == prev_line.x_pos) ){

				new_line = reduceOverlapedLines(prev_line,reduce_line);
				for(var j=0;j<ref_lines.length;j++){
					if(ref_lines[j] == reduce_line) continue;
					if(ref_lines[j] == prev_line)
						new_line_list_tmp = new_line_list_tmp.concat(new_line);
					else
						new_line_list_tmp = new_line_list_tmp.concat(ref_lines[j]);
				}
				if(moved_line_index != null && moved_line_index >= i) moved_line_index --;
				ref_lines = new_line_list_tmp;
				i--;
			}
		}

		var first_line = cloneLine(ref_lines[0]);
		var last_line = cloneLine(ref_lines[ref_lines.length-1]);
		var rect1 = obj2Rectangle(start_obj,true);
		var rect2 = obj2Rectangle(end_obj,true);


		if(first_line.is_directed2start){

			if(first_line.type == 'vertical'){
				if(first_line.y_pos < rect1.y2){
					var tmp_dim = rect1.y2 - first_line.y_pos;
					first_line.dim -= tmp_dim;
					first_line.y_pos = rect1.y2;
				}
			}
			else{
				if(first_line.x_pos < rect1.x1){
					var tmp_dim = rect1.x1 - first_line.x_pos;
					first_line.dim -= tmp_dim;
					first_line.x_pos = rect1.x1;
				}
			}
		}
		else{
			if(first_line.type == 'vertical'){
				if(first_line.y_pos + first_line.dim > rect1.y0){
					var tmp_dim = first_line.y_pos + first_line.dim - rect1.y0;
					first_line.dim -= tmp_dim;
				}
			}

			else{
				if(first_line.x_pos + first_line.dim > rect1.x0){
					var tmp_dim = first_line.x_pos + first_line.dim - rect1.x0;
					first_line.dim -= tmp_dim;
				}
			}
		}


		if(ref_lines.length == 1){

			if(!first_line.is_directed2start){

				if(first_line.type == 'vertical'){
					if(first_line.y_pos < rect2.y2){
						var tmp_dim = rect2.y2 - first_line.y_pos;
						first_line.dim -= tmp_dim;
						first_line.y_pos = rect2.y2;
					}
				}
				else{
					if(first_line.x_pos < rect2.x1){
						var tmp_dim = rect2.x1 - first_line.x_pos;
						first_line.dim -= tmp_dim;
						first_line.x_pos = rect2.x1;
					}
				}
			}
			else{
				if(first_line.type == 'vertical'){
					if(first_line.y_pos + first_line.dim > rect2.y0){
						var tmp_dim = first_line.y_pos + first_line.dim - rect2.y0;
						first_line.dim -= tmp_dim;
					}
				}

				else{
					if(first_line.x_pos + first_line.dim > rect2.x0){
						var tmp_dim = first_line.x_pos + first_line.dim - rect2.x0;
						first_line.dim -= tmp_dim;
					}
				}
			}
		}
		else{

			if(!last_line.is_directed2start){

				if(last_line.type == 'vertical'){
					if(last_line.y_pos < rect2.y2){
						var tmp_dim = rect2.y2 - last_line.y_pos;
						last_line.dim -= tmp_dim;
						last_line.y_pos = rect2.y2;
					}
				}
				else{
					if(last_line.x_pos < rect2.x1){
						var tmp_dim = rect2.x1 - last_line.x_pos;
						last_line.dim -= tmp_dim;
						last_line.x_pos = rect2.x1;
					}
				}
			}
			else{
				if(last_line.type == 'vertical'){
					if(last_line.y_pos + last_line.dim > rect2.y0){
						var tmp_dim = last_line.y_pos + last_line.dim - rect2.y0;
						last_line.dim -= tmp_dim;
					}
				}

				else{
					if(last_line.x_pos + last_line.dim > rect2.x0){
						var tmp_dim = last_line.x_pos + last_line.dim - rect2.x0;
						last_line.dim -= tmp_dim;
					}
				}
			}
		}



		first_line.dim = Math.max(0,first_line.dim);
		last_line.dim = Math.max(0,last_line.dim);


		var my_line = new line();
		for(var i=0;i<ref_lines.length;i++){
			switch(i){
				case 0:
					my_line = cloneLine(first_line);
					break;
				case ref_lines.length-1:
					my_line = cloneLine(last_line);
					break;
				default:
					my_line = cloneLine(ref_lines[i]);
			}
			if(my_line.dim > 0)
				new_line_list = new_line_list.concat(my_line);
			else{
				if(moved_line_index != null && moved_line_index >= i)
					moved_line_index --;
			}
		}

		return new_line_list;
	}



	function isPointInRectangle(point,obj){
		var rect = obj2Rectangle(obj,true);
		if(point.x0 > rect.x0 && point.x0 < rect.x1 && point.y0 > rect.y0 && point.y0 < rect.y2){
			return true;
		}
		else{
			return false;
		}
	}


	function computePathLines(obj1,obj2,line_list,first_line_type){
		var ret_lines = new Array();


		if(obj2.type == 'vertical'
			|| obj2.type == 'horizontal' ){
			var rect2 = new rectangle(-1);
			rect2.is_pointual = true;
			if(obj2.is_directed2start){
				rect2.x0 = obj2.x_pos;
				rect2.y0 = obj2.y_pos;
			}
			else{
				if(obj2.type == 'vertical'){
					rect2.x0 = obj2.x_pos;
					rect2.y0 = obj2.y_pos + obj2.dim - moveable_reference_line_width;
				}
				else{
					rect2.x0 = obj2.x_pos + obj2.dim - moveable_reference_line_width;
					rect2.y0 = obj2.y_pos;
				}
			}
			rect2.x1 = rect2.x0;
			rect2.y1 = rect2.y0;
			rect2.x2 = rect2.x0;
			rect2.y2 = rect2.y0;
			rect2.x3 = rect2.x0;
			rect2.y3 = rect2.y0;
		}
		else
			var rect2 = obj2Rectangle(obj2,false);


		if(obj1.type == 'vertical'
			|| obj1.type == 'horizontal' ){
			var rect1 = new rectangle(-1);
			rect1.is_pointual = true;
			if(!obj1.is_directed2start){
				rect1.x0 = obj1.x_pos;
				rect1.y0 = obj1.y_pos;
			}
			else{
				if(obj1.type == 'vertical'){
					rect1.x0 = obj1.x_pos;
					rect1.y0 = obj1.y_pos + obj1.dim - moveable_reference_line_width;
				}
				else{
					rect1.x0 = obj1.x_pos + obj1.dim - moveable_reference_line_width;
					rect1.y0 = obj1.y_pos;
				}
			}
			rect1.x1 = rect1.x0;
			rect1.y1 = rect1.y0;
			rect1.x2 = rect1.x0;
			rect1.y2 = rect1.y0;
			rect1.x3 = rect1.x0;
			rect1.y3 = rect1.y0;
		}
		else
			var rect1 = obj2Rectangle(obj1,false);


		if(!rect2.is_pointual && !rect1.is_pointual && line_list != null && line_list.length == 1){

			var rect1 = obj2Rectangle(obj1,true);
			var rect2 = obj2Rectangle(obj2,true);

			var my_line = new line();
			if(line_list[0].type == 'vertical'){

				if(line_list[0].x_pos > rect1.x0 && line_list[0].x_pos > rect2.x0 && line_list[0].x_pos < rect1.x1 && line_list[0].x_pos < rect2.x1){
					my_line.objid 	= line_list[0].objid;
					my_line.type	= line_list[0].type;
					my_line.x_pos 	= line_list[0].x_pos;
					my_line.is_directed2start = line_list[0].is_directed2start;
					my_line.is_fix 	= false;
					my_line.y_pos = Math.min(rect1.y2,rect2.y2);
					my_line.dim = Math.max(rect1.y0,rect2.y0) - my_line.y_pos;

					return ret_lines.concat(my_line);
				}
			}
			else{

				if(line_list[0].y_pos > rect1.y0 && line_list[0].y_pos > rect2.y0 && line_list[0].y_pos < rect1.y2 && line_list[0].y_pos < rect2.y2){
					my_line.objid 	= line_list[0].objid;
					my_line.type	= line_list[0].type;
					my_line.y_pos 	= line_list[0].y_pos;
					my_line.is_directed2start = line_list[0].is_directed2start;
					my_line.is_fix 	= false;
					my_line.x_pos = Math.min(rect1.x1,rect2.x1);
					my_line.dim = Math.max(rect1.x0,rect2.x0) - my_line.x_pos;

					return ret_lines.concat(my_line);
				}
			}
		}



		if( (rect1.is_pointual && !rect2.is_pointual && isPointInRectangle(rect1,obj2))
		||  (rect2.is_pointual && !rect1.is_pointual && isPointInRectangle(rect2,obj1)))
			return ret_lines;






		if(rect1.x0 >= rect2.x0 && rect1.x0 <= rect2.x1){

			if( (rect1.y0 <= rect2.y2 && rect1.y0 >= rect2.y0)
			||  (rect1.y2 <= rect2.y2 && rect1.y2 >= rect2.y0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'vertical';
			line1.x_pos = rect1.x0;

			line1.dim = Math.min(Math.abs(rect1.y0-rect2.y2),Math.abs(rect1.y2-rect2.y0));

			line1.dim += ( (rect1.y0 < rect2.y0 && rect2.is_pointual) || (rect1.y0 > rect2.y0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.y_pos = Math.min(rect1.y2,rect2.y2);
			line1.is_directed2start = (rect2.y2 > rect1.y2);
			ret_lines[0] = line1;
			return ret_lines;
		}
		if(rect2.x0 >= rect1.x0 && rect2.x0 <= rect1.x1){

			if( (rect2.y0 <= rect1.y2 && rect2.y0 >= rect1.y0)
			||  (rect2.y2 <= rect1.y2 && rect2.y2 >= rect1.y0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'vertical';
			line1.x_pos = rect2.x0;

			line1.dim = Math.min(Math.abs(rect2.y0-rect1.y2),Math.abs(rect2.y2-rect1.y0));

			line1.dim += ( (rect1.y0 < rect2.y0 && rect2.is_pointual) || (rect1.y0 > rect2.y0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.y_pos = Math.min(rect2.y2,rect1.y2);
			line1.is_directed2start = (rect2.y2 > rect1.y2);
			ret_lines[0] = line1;
			return ret_lines;
		}


		if(rect1.x1 >= rect2.x0 && rect1.x1 <= rect2.x1){

			if( (rect1.y0 <= rect2.y2 && rect1.y0 >= rect2.y0)
			||  (rect1.y2 <= rect2.y2 && rect1.y2 >= rect2.y0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'vertical';



			line1.dim = Math.min(Math.abs(rect1.y0-rect2.y2),Math.abs(rect1.y2-rect2.y0));

			line1.dim += ( (rect1.y0 < rect2.y0 && rect2.is_pointual) || (rect1.y0 > rect2.y0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.y_pos = Math.min(rect1.y2,rect2.y2);
			line1.is_directed2start = (rect2.y2 > rect1.y2);
			ret_lines[0] = line1;
			return ret_lines;
		}
		if(rect2.x1 >= rect1.x0 && rect2.x1 <= rect1.x1){

			if( (rect1.y0 <= rect2.y2 && rect1.y0 >= rect2.y0)
			||  (rect1.y2 <= rect2.y2 && rect1.y2 >= rect2.y0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'vertical';



			line1.dim = Math.min(Math.abs(rect2.y0-rect1.y2),Math.abs(rect2.y2-rect1.y0));

			line1.dim += ( (rect1.y0 < rect2.y0 && rect2.is_pointual) || (rect1.y0 > rect2.y0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.y_pos = Math.min(rect2.y2,rect1.y2);
			line1.is_directed2start = (rect2.y2 > rect1.y2);
			ret_lines[0] = line1;
			return ret_lines;
		}





		if(rect1.y0 >= rect2.y0 && rect1.y0 <= rect2.y2){

			if( (rect1.x0 <= rect2.x1 && rect1.x0 >= rect2.x0)
			||  (rect1.x1 <= rect2.x1 && rect1.x1 >= rect2.x0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'horizontal';
			line1.y_pos = rect1.y0;

			line1.dim = Math.min(Math.abs(rect1.x0-rect2.x1),Math.abs(rect1.x1-rect2.x0));

			line1.dim += ( (rect1.x0 < rect2.x0 && rect2.is_pointual) || (rect1.x0 > rect2.x0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.x_pos = Math.min(rect1.x1,rect2.x1);
			line1.is_directed2start = (rect2.x1 > rect1.x1);
			ret_lines[0] = line1;
			return ret_lines;
		}
		if(rect2.y0 >= rect1.y0 && rect2.y0 <= rect1.y2){

			if( (rect1.x0 <= rect2.x1 && rect1.x0 >= rect2.x0)
			||  (rect1.x1 <= rect2.x1 && rect1.x1 >= rect2.x0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'horizontal';
			line1.y_pos = rect2.y0;

			line1.dim = Math.min(Math.abs(rect2.x0-rect1.x1),Math.abs(rect2.x1-rect1.x0));

			line1.dim += ( (rect1.x0 < rect2.x0 && rect2.is_pointual) || (rect1.x0 > rect2.x0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.x_pos = Math.min(rect2.x1,rect1.x1);
			line1.is_directed2start = (rect2.x1 > rect1.x1);
			ret_lines[0] = line1;
			return ret_lines;
		}

		if(rect1.y2 >= rect2.y0 && rect1.y2 <= rect2.y2){

			if( (rect1.x0 <= rect2.x1 && rect1.x0 >= rect2.x0)
			||  (rect1.x1 <= rect2.x1 && rect1.x1 >= rect2.x0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'horizontal';



			line1.dim = Math.min(Math.abs(rect1.x0-rect2.x1),Math.abs(rect1.x1-rect2.x0));

			line1.dim += ( (rect1.x0 < rect2.x0 && rect2.is_pointual) || (rect1.x0 > rect2.x0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.x_pos = Math.min(rect1.x1,rect2.x1);
			line1.is_directed2start = (rect2.x1 > rect1.x1);
			ret_lines[0] = line1;
			return ret_lines;
		}
		if(rect2.y2 >= rect1.y0 && rect2.y2 <= rect1.y2){

			if( (rect1.x0 <= rect2.x1 && rect1.x0 >= rect2.x0)
			||  (rect1.x1 <= rect2.x1 && rect1.x1 >= rect2.x0) )
				return ret_lines;

			var line1 = new line();
			line1.type = 'horizontal';



			line1.dim = Math.min(Math.abs(rect2.x0-rect1.x1),Math.abs(rect2.x1-rect1.x0));

			line1.dim += ( (rect1.x0 < rect2.x0 && rect2.is_pointual) || (rect1.x0 > rect2.x0 && rect1.is_pointual) )? moveable_reference_line_width : 0
			line1.x_pos = Math.min(rect2.x1,rect1.x1);
			line1.is_directed2start = (rect2.x1 > rect1.x1);
			ret_lines[0] = line1;
			return ret_lines;
		}






		if(rect1.is_pointual){

			if(first_line_type == 'vertical'){
				var line1 = new line();
				line1.type = 'vertical';

				if(rect1.y0 < rect2.y0){
					line1.x_pos = rect1.x0;
					line1.dim = rect2.y0 - rect1.y0 + moveable_reference_line_width;
					line1.y_pos = rect1.y0;
					line1.is_directed2start = true;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.y_pos = rect2.y0;

				}
				else{
					line1.x_pos = rect1.x0;
					line1.dim = rect1.y0 - rect2.y2 + moveable_reference_line_width;
					line1.y_pos = rect2.y2;
					line1.is_directed2start = false;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.y_pos = rect2.y2;
				}

				if(rect1.x0 < rect2.x0){
					line2.type = 'horizontal';
					line2.x_pos = rect1.x0;
					line2.dim = rect2.x0 - rect1.x0;
					line2.is_directed2start = true;
					ret_lines[1] = line2;
				}
				else{
					line2.type = 'horizontal';
					line2.x_pos = rect2.x1;
					line2.dim = rect1.x0 - rect2.x1;
					line2.is_directed2start = false;
					ret_lines[1] = line2;
				}
			}
			else{
				var line1 = new line();
				line1.type = 'horizontal';

				if(rect1.x0 < rect2.x0){
					line1.x_pos = rect1.x0;
					line1.dim = rect2.x0 - rect1.x0 + moveable_reference_line_width;
					line1.y_pos = rect1.y0;
					line1.is_directed2start = true;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.x_pos = rect2.x0;
				}
				else{
					line1.x_pos = rect2.x1;
					line1.dim = rect1.x0 - rect2.x1 + moveable_reference_line_width;
					line1.y_pos = rect1.y0;
					line1.is_directed2start = false;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.x_pos = rect2.x1;
				}

				if(rect1.y0 < rect2.y0){
					line2.type = 'vertical';
					line2.y_pos = rect1.y0;
					line2.dim = rect2.y0 - rect1.y0;
					line2.is_directed2start = true;
					ret_lines[1] = line2;
				}
				else{
					line2.type = 'vertical';
					line2.y_pos = rect2.y2;
					line2.dim = rect1.y0 - rect2.y2;
					line2.is_directed2start = false;
					ret_lines[1] = line2;
				}
			}

			if(rect2.is_pointual) line2.dim += moveable_object_border;
		}
		else if(rect2.is_pointual){

			if(first_line_type == 'vertical'){
				var line1 = new line();
				line1.type = 'vertical';

				if(rect2.y0 < rect1.y0){
					line1.dim = rect1.y0 - rect2.y0;
					line1.is_directed2start = false;
					ret_lines[0] = line1;
					line1.y_pos = rect2.y0;
					var line2 = new line();
					line2.y_pos = rect2.y0;
				}
				else{
					line1.x_pos = rect2.x0;
					line1.dim = rect2.y0 - rect1.y2;
					line1.y_pos = rect1.y2;
					line1.is_directed2start = true;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.y_pos = rect2.y2;
				}

				if(rect2.x0 < rect1.x0){
					line1.x_pos = rect1.x0;
					line2.type = 'horizontal';
					line2.x_pos = rect2.x0;
					line2.dim = rect1.x0 - rect2.x0 + moveable_reference_line_width;
					line2.is_directed2start = false;
					ret_lines[1] = line2;
				}
				else{
					line1.x_pos = rect1.x1;
					line2.type = 'horizontal';
					line2.x_pos = rect1.x1;
					line2.dim = rect2.x0 - rect1.x1 + moveable_reference_line_width;
					line2.is_directed2start = true;
					ret_lines[1] = line2;
				}
			}
			else{
				var line1 = new line();
				line1.type = 'horizontal';

				if(rect2.x0 < rect1.x0){
					line1.x_pos = rect2.x0;
					line1.dim = rect1.x0 - rect2.x0;
					line1.is_directed2start = false;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.x_pos = line1.x_pos;
				}
				else{
					line1.x_pos = rect1.x1;
					line1.dim = rect2.x0 - rect1.x1;
					line1.y_pos = rect1.y0;
					line1.is_directed2start = true;
					ret_lines[0] = line1;

					var line2 = new line();
					line2.x_pos = rect2.x0;
				}

				if(rect2.y0 < rect1.y0){
					line1.y_pos = rect1.y0;
					line2.type = 'vertical';
					line2.y_pos = rect2.y0;
					line2.dim = rect1.y0 - rect2.y0 + moveable_reference_line_width;
					line2.is_directed2start = false;
					ret_lines[1] = line2;
				}
				else{
					line1.y_pos = rect1.y2;
					line2.type = 'vertical';
					line2.y_pos = rect1.y2;
					line2.dim = rect2.y0 - rect1.y2 + moveable_reference_line_width;
					line2.is_directed2start = true;
					ret_lines[1] = line2;
				}
			}

			if(rect1.is_pointual) line1.dim += moveable_object_border;
		}


		else{



			var tmp_min_distance = 99999;
			for(var i = 0; i<4 ;i++){
				var tmp_corner = getNextCorner(eval('rect1.x'+i),eval('rect1.y'+i),rect2.x0,rect2.y0,rect2.x1,rect2.y1,rect2.x2,rect2.y2,rect2.x3,rect2.y3);
				var tmp_distance = Math.sqrt(Math.pow(eval('rect1.x'+i) - eval('rect2.x'+tmp_corner),2)+Math.pow(eval('rect1.y'+i) - eval('rect2.y'+tmp_corner),2))
				if(tmp_distance < tmp_min_distance){
					tmp_min_distance = tmp_distance;
					var start_corner_x = eval('rect1.x'+i);
					var start_corner_y = eval('rect1.y'+i);
					var end_corner_x = eval('rect2.x'+tmp_corner);
					var end_corner_y = eval('rect2.y'+tmp_corner);
				}
			}


			if( Math.abs(end_corner_y - start_corner_y) >  Math.abs(end_corner_x - start_corner_x) ){
				var line_mid = parseInt(Math.abs(end_corner_y-start_corner_y)/2);

				if(Math.abs(end_corner_y-start_corner_y)%2 == 0)
					var line_mid2 = line_mid;
				else
					var line_mid2 = line_mid+1;


				var line1 = new line();
				line1.type = 'vertical';
				line1.y_pos = Math.min(end_corner_y+line_mid,start_corner_y);

				line1.dim = line_mid2;
				line1.x_pos = start_corner_x;
				line1.is_directed2start = (end_corner_y > start_corner_y);
				ret_lines[0] = line1;


				var line2 = new line();
				line2.type = 'horizontal';
				line2.y_pos = (end_corner_y<start_corner_y)? start_corner_y-line_mid2 :  start_corner_y+line_mid2;

				line2.dim = Math.abs(start_corner_x - end_corner_x) + moveable_reference_line_width;
				line2.x_pos = Math.min(start_corner_x,end_corner_x);
				line2.is_directed2start = (end_corner_x > start_corner_x);
				ret_lines[1] = line2;


				var line3 = new line();
				line3.type = 'vertical';
				line3.y_pos = Math.min(end_corner_y,start_corner_y+line_mid2);

				line3.dim = line_mid2;
				line3.x_pos = end_corner_x;
				line3.is_directed2start = (end_corner_y > start_corner_y);
				ret_lines[2] = line3;


			}
			else{
				var line_mid = parseInt(Math.abs(end_corner_x-start_corner_x)/2);

				if(Math.abs(end_corner_x-start_corner_x)%2 == 0)
					var line_mid2 = line_mid;
				else
					var line_mid2 = line_mid+1;

				var line1 = new line();
				line1.type = 'horizontal';
				line1.y_pos = start_corner_y;

				line1.dim = line_mid2;
				line1.x_pos = Math.min(end_corner_x+line_mid,start_corner_x);
				line1.is_directed2start = (end_corner_x > start_corner_x);
				ret_lines[0] = line1;


				var line2 = new line();
				line2.type = 'vertical';
				line2.y_pos = Math.min(end_corner_y,start_corner_y);

				line2.dim = Math.abs(start_corner_y - end_corner_y) + moveable_reference_line_width;
				line2.x_pos = Math.min(start_corner_x+line_mid,end_corner_x+line_mid);
				line2.is_directed2start = (end_corner_y > start_corner_y);
				ret_lines[1] = line2;


				var line3 = new line();
				line3.type = 'horizontal';
				line3.y_pos = end_corner_y;

				line3.dim = line_mid2;
				line3.x_pos = Math.min(line2.x_pos,end_corner_x);
				line3.is_directed2start = (end_corner_x > start_corner_x);
				ret_lines[2] = line3;
			}

		}

		return ret_lines;
	}

	function createReferenceLine(prefix,reference_line){
		allMoveableObjects['line$'+reference_line.objid] = new moveableObject();

		switch(reference_line.type){
			case 'horizontal':
				create(allMoveableObjects['line$'+reference_line.objid],prefix,reference_line.objid,'reference_line_x',
					reference_line.dim,reference_line.dim,moveable_reference_line_width,moveable_reference_line_width,reference_line.dim,
					moveable_reference_line_width,reference_line.x_pos,reference_line.y_pos,5,null,null,null,null,reference_line.is_directed2start,reference_line.is_fix);
				break;
			case 'vertical':
				create(allMoveableObjects['line$'+reference_line.objid],prefix,reference_line.objid,'reference_line_y',
					moveable_reference_line_width,moveable_reference_line_width,reference_line.dim,reference_line.dim,
					moveable_reference_line_width,reference_line.dim,reference_line.x_pos,reference_line.y_pos,5,
					null,null,null,null,reference_line.is_directed2start,reference_line.is_fix);

				break;
			default:
		}

		reference_line.div1  = document.getElementById('move_div$'+prefix+'$'+reference_line.objid);
		reference_line.img1  = document.getElementById('dragbar$'+prefix+'$'+reference_line.objid);
		reference_line.div2  = document.getElementById('div$'+prefix+'$'+reference_line.objid);

	}

	function updateReferenceLine(prefix,old_line,new_line,new_line_list){


		var div1  = document.getElementById('move_div$'+prefix+'$'+old_line.objid);
		var img1  = document.getElementById('dragbar$'+prefix+'$'+old_line.objid);
		var div2  = document.getElementById('div$'+prefix+'$'+old_line.objid);

		new_line.div1 = old_line.div1;
		new_line.img1 = old_line.img1;
		new_line.div2 = old_line.div2;

		div1.style.left = new_line.x_pos;
		div1.style.top 	= new_line.y_pos;
		div2.style.left = new_line.x_pos;
		div2.style.top 	= new_line.y_pos;

		if(new_line.type == 'vertical'){
			div1.style.height = new_line.dim;
			div1.style.width = moveable_reference_line_width;
			div1.style.cursor = 'w-resize';

			img1.width = moveable_reference_line_width;
			img1.height = new_line.dim;

			div2.style.height = new_line.dim;
			div2.style.width = moveable_reference_line_width;
		}
		else{
			div1.style.width = new_line.dim;
			div1.style.height = moveable_reference_line_width;
			div1.style.cursor = 's-resize';

			img1.height = moveable_reference_line_width;
			img1.width = new_line.dim;

			div2.style.width = new_line.dim;
			div2.style.height = moveable_reference_line_width;
		}
	}

	function setLinesOfReference(ref_obj,new_line_list){

		for(var i = new_line_list.length-1; i>=0 ; i--){

			new_line_list[i].objid = ref_obj.objid+'|'+i;
			new_line_list[i].div1.setAttribute('id','move_div$'+prefix+'$'+new_line_list[i].objid);
			new_line_list[i].div2.setAttribute('id','div$'+prefix+'$'+new_line_list[i].objid);
			new_line_list[i].img1.setAttribute('id','dragbar$'+prefix+'$'+new_line_list[i].objid);

			var this_object = getObjectPropertiesByObjid(new_line_list[i].objid);
			if(new_line_list[i].type == 'vertical'){

				this_object.movable_x = true;
				this_object.movable_y = false;
				this_object.type = 'reference_line_y';
			}
			else{

				this_object.movable_x = false;
				this_object.movable_y = true;
				this_object.type = 'reference_line_x';
			}
		}
		ref_obj.line_list = new_line_list;


		for(var j = 0;j<new_line_list.length; j++)
			showLineGifs(ref_obj,new_line_list[j],j);

	}

	function drawReferenceLines(ref_obj,new_line_list){

		var j;
		for(j=0 ; j < new_line_list.length ; j++){
			var new_line = new_line_list[j];
			if(ref_obj.line_list.length <= j){
				new_line.objid = ref_obj.objid+'|'+j;
				createReferenceLine(prefix,new_line);
			}
			else{
				var old_line = ref_obj.line_list[j];

				if(old_line.type 	!= new_line.type
					|| old_line.x_pos 	!= new_line.x_pos
					|| old_line.y_pos 	!= new_line.y_pos
					|| old_line.dim		!= new_line.dim){
					updateReferenceLine(prefix,old_line,new_line,new_line_list);
				}
				else{
					new_line.div1 = old_line.div1;
					new_line.img1 = old_line.img1;
					new_line.div2 = old_line.div2;
				}
			}
		}



		for(var k=j;k<ref_obj.line_list.length;k++){
			moveableObject_drop(prefix,ref_obj.line_list[k].objid);
		}

		if(moved_line_index != null){

			suffix = prefix +'$'+ ref_obj.objid+'|'+moved_line_index;

			obj_name = ref_obj.objid+'|'+moved_line_index;

			div_element = document.getElementById('div$'+suffix);
		}

		setLinesOfReference(ref_obj,new_line_list);
	}

	function checkPointInRectangle(rect,x,y){
		if(rect.x0 < x && rect.x1 > x && y > rect.y0 && y < rect.y2)
			return true;
		else
			return false;
	}


	function checkObjectsOverlayed(obj1,obj2){
		var rect1 = obj2Rectangle(obj1,false);
		var rect2 = obj2Rectangle(obj2,false);

		if( checkPointInRectangle(rect1,rect2.x0,rect2.y0)
		||  checkPointInRectangle(rect1,rect2.x1,rect2.y1)
		||  checkPointInRectangle(rect1,rect2.x2,rect2.y2)
		||  checkPointInRectangle(rect1,rect2.x3,rect2.y3)
		||  checkPointInRectangle(rect2,rect1.x0,rect1.y0)
		||  checkPointInRectangle(rect2,rect1.x1,rect1.y1)
		||  checkPointInRectangle(rect2,rect1.x2,rect1.y2)
		||  checkPointInRectangle(rect2,rect1.x3,rect1.y3) )
			return true;
		else
			return false;
	}

	function checkLineInstersectsObject(obj,line){
		var rect = obj2Rectangle(obj,false);

		var x1 = line.x_pos;
		var y1 = line.y_pos;

		if(line.type == 'vertical'){
			var x2 = line.x_pos;
			var y2 = line.y_pos + line.dim;

			if(rect.x0 < x1 && rect.x1 > x1 && y1 < rect.y0 && y2 > rect.y0)
				return true;


			if(rect.x0 < x1 && rect.x1 > x1 && y1 < rect.y2 && y2 > rect.y3)
				return true;
		}
		else{
			var x2 = line.x_pos + line.dim;
			var y2 = line.y_pos;


			if(rect.x0 > x1 && rect.x0 < x2 && y1 < rect.y2 && y2 > rect.y0)
				return true;


			if(rect.x1 > x1 && rect.x1 < x2 && y1 < rect.y2 && y2 > rect.y0)
				return true;
		}

		return false;

	}

	function handleMovingForObjectReferences(obj){



		if(obj.type == 'reference_line_y'
		|| obj.type == 'reference_line_x'){
			var tmp = obj.objid.split('|');

			var new_line_list = new Array();


			var curr_ref = allReferences['ref$'+tmp[0]+'|'+tmp[1]];

			var start_obj = curr_ref.start;

			var end_obj = curr_ref.end;

			var orig_line_list = cloneLineList(curr_ref.line_list);
			var curr_line_index = tmp[2];
			var curr_line = orig_line_list[curr_line_index];
			curr_line.x_pos = obj.x_pos;
			curr_line.y_pos = obj.y_pos;



			if(checkLineInstersectsObject(start_obj,curr_line)){
				var new_line_list_tmp = new Array;
				for(var i=tmp[2];i<orig_line_list.length;i++){
					new_line_list_tmp = new_line_list_tmp.concat(orig_line_list[i]);
				}


				curr_line_index = 0;

				orig_line_list = new_line_list_tmp;
			}


			if(checkLineInstersectsObject(end_obj,curr_line)){
				var new_line_list_tmp = new Array;
				for(var i=0;i<=tmp[2];i++){
					new_line_list_tmp = new_line_list_tmp.concat(orig_line_list[i]);
				}

				orig_line_list = new_line_list_tmp;
			}


			curr_line.is_fix = true;



			var fixed_line_start = null;

			var fixed_line_end = null;

			var tmp_line_list_start = new Array();
			var tmp_line_list_end = new Array();

			var my_fix_lines = new Array();

			for(var i=0;i<orig_line_list.length;i++){
				if(curr_line_index == i){
					curr_line_fix_index = my_fix_lines.length;
				}
				if(orig_line_list[i].is_fix)
					my_fix_lines = my_fix_lines.concat(orig_line_list[i]);
			}

			if(my_fix_lines.length > 1){
				fixed_line_start = 	my_fix_lines[curr_line_fix_index-1]
				if(my_fix_lines.length > curr_line_fix_index)
					fixed_line_end = 	my_fix_lines[curr_line_fix_index+1]
			}


			if(fixed_line_start != null){
				for(var j=0;j<curr_line_index;j++){
					new_line_list = new_line_list.concat(orig_line_list[j]);
					if(fixed_line_start == orig_line_list[j]) break;
				}
				var my_path2start = computePathLines(fixed_line_start,curr_line,orig_line_list,fixed_line_start.type);
				new_line_list = new_line_list.concat(my_path2start);
			}
			else{

				var my_path2start = computePathLines(start_obj,curr_line,orig_line_list,curr_line.type);
				new_line_list = new_line_list.concat(my_path2start);
			}

			var tmp_ln = new_line_list.length;
			new_line_list = new_line_list.concat(curr_line);



			if(fixed_line_end != null){
				var my_path2end = computePathLines(curr_line,fixed_line_end,orig_line_list,reverseLineType(curr_line.type));
				new_line_list = new_line_list.concat(my_path2end);
				var is_after_fixed_end_line = false;
				for(var j=curr_line_index;j<orig_line_list.length;j++){
					if(orig_line_list[j] == fixed_line_end)
						is_after_fixed_end_line = true;
					if(is_after_fixed_end_line)
						new_line_list = new_line_list.concat(orig_line_list[j]);
				}
			}
			else{

				var my_path2end = computePathLines(curr_line,end_obj,orig_line_list,reverseLineType(curr_line.type));

				new_line_list = new_line_list.concat(my_path2end);
			}


			moved_line_index = tmp_ln;
			new_line_list = validateReferenceLines(curr_ref,new_line_list);

			drawReferenceLines(curr_ref,new_line_list);


			if(curr_ref.line_list.length > 0){
				curr_ref.line_list[0].is_fix = false;
				curr_ref.line_list[curr_ref.line_list.length-1].is_fix = false;
			}

		}

		else{
			for(var i=0;i<obj.reference_list.length;i++){

				var curr_ref = obj.reference_list[i];

				var new_line_list = new Array();


				var first_fix_line = null;
				var last_fix_line	= null;
				var first_fix_line_index = -1;
				var last_fix_line_index	= -1;


				var orig_line_list = cloneLineList(curr_ref.line_list);


				if(checkObjectsOverlayed(curr_ref.start,curr_ref.end)){

					drawReferenceLines(curr_ref,new_line_list);

				}




				if(obj == curr_ref.start){
					for(var k=0;k<orig_line_list.length;k++){
						var curr_line = orig_line_list[k]
						if(checkLineInstersectsObject(obj,curr_line)){
							var new_line_list_tmp = new Array;
							for(var i=k;i<orig_line_list.length;i++){
								new_line_list_tmp = new_line_list_tmp.concat(orig_line_list[i]);
							}

							orig_line_list = new_line_list_tmp;
							break;
						}
					}
				}
				else{

					for(var k=0;k<orig_line_list.length;k++){
						var curr_line = orig_line_list[k]
						if(checkLineInstersectsObject(obj,curr_line)){
							var new_line_list_tmp = new Array;
							for(var i=0;i<=k;i++){
								new_line_list_tmp = new_line_list_tmp.concat(orig_line_list[i]);
							}

							orig_line_list = new_line_list_tmp;
							break;
						}
					}
				}

				for(var j=0; j <orig_line_list.length; j++){
					if(orig_line_list[j].is_fix){
						if(first_fix_line_index == -1){
							first_fix_line = orig_line_list[j];
							first_fix_line_index = j;
						}

						last_fix_line = orig_line_list[j];
						last_fix_line_index = j;
					}
				}


				if(first_fix_line_index != -1){

					new_line_list = new_line_list.concat(computePathLines(curr_ref.start,first_fix_line,orig_line_list,first_fix_line.type));


					for(var j = first_fix_line_index; j <= last_fix_line_index; j++)
						new_line_list = new_line_list.concat(orig_line_list[j]);



					new_line_list = new_line_list.concat(computePathLines(last_fix_line,curr_ref.end,orig_line_list,reverseLineType(last_fix_line.type)));

				}
				else

					new_line_list = computePathLines(curr_ref.start,curr_ref.end,orig_line_list,null);


				moved_line_index = null;
				new_line_list = validateReferenceLines(curr_ref,new_line_list);


				drawReferenceLines(curr_ref,new_line_list);

				if(curr_ref.line_list.length > 0){
					curr_ref.line_list[0].is_fix = false;
					curr_ref.line_list[curr_ref.line_list.length-1].is_fix = false;
				}
			}
		}
	}

	function reverseLineType(type){
		if(type == 'vertical')
			return 'horizontal';
		else
			return 'vertical';
	}

	function getObjectPropertiesByObjid(objid){
		try{
			if(typeof allMoveableObjects['obj$'+objid] != 'undefined')
				return allMoveableObjects['obj$'+objid];

			if(typeof allMoveableObjects['line$'+objid] != 'undefined')
				return allMoveableObjects['line$'+objid];

			if(typeof allReferences != 'undefined' && typeof allReferences['ref$'+objid] != 'undefined')
				return allReferences['ref$'+objid];
		}
		catch(e)
		{
			alert(e.message);
			return null;
		}
	}


	function registerReference(prefix,reference,start_id,end_id){
		if(getObjectPropertiesByObjid(start_id) && getObjectPropertiesByObjid(end_id)){

			my_start = getObjectPropertiesByObjid(start_id);
			my_end = getObjectPropertiesByObjid(end_id);

			reference.start = my_start;
			reference.end = my_end;

			my_start.reference_list = my_start.reference_list.concat(reference);
			my_end.reference_list =my_end.reference_list.concat(reference);
		}



		if(typeof referenceStoredPath[reference.objid] != 'undefined' && referenceStoredPath[reference.objid] != null){
			var my_line_list = validateReferenceLines(reference,cloneLineList(referenceStoredPath[reference.objid]));
			referenceStoredPath[reference.objid] = null;
		}
		else
			var my_line_list = validateReferenceLines(reference,computePathLines(my_start,my_end,null,null),null,null);

		for(var j=0; j< my_line_list.length; j++){
			my_line_list[j].objid = reference.objid+'|'+j
			reference.line_list = reference.line_list.concat(my_line_list[j]);
		}

		prefix = prefix;
		for(var i = 0; i < reference.line_list.length; i++){
			createReferenceLine(prefix,reference.line_list[i]);
		}
		setLinesOfReference(reference,reference.line_list);
	}

	function cloneLineList(list){
		var my_list = new Array();
		for(var i=0;i<list.length;i++){
			my_list = my_list.concat(cloneLine(list[i]));
		}
		return my_list;
	}

	function cloneLine(l){
		var my_line = new line();

		my_line.objid 				= l.objid;
		my_line.type				= l.type;
		my_line.x_pos 				= l.x_pos;
		my_line.y_pos 				= l.y_pos;
		my_line.dim 				= l.dim;
		my_line.is_directed2start 	= l.is_directed2start;
		my_line.is_fix 				= l.is_fix;

		return my_line;
	}

	function cloneArray(list,is_assossiative){
		var new_list = new Array();
		if(!is_assossiative){
			for(var l=0;l<list.length;l++){
				new_list[l] = list[l];
			}
		}
		else{
			for(var l in list){
				new_list[l] = list[l];
			}
		}

		return new_list;
	}


	function line(objid){
		this.objid = objid;
		this.type	= null;
		this.x_pos = 0;
		this.y_pos = 0;
		this.z_pos = 5;
		this.dim = 0;
		this.is_directed2start = true;
		this.is_fix = false;
	}

	function rectangle(objid){
		this.objid = 0;
		this.x0 = 0;
		this.y0 = 0;
		this.x1 = 0;
		this.y1 = 0;
		this.x2 = 0;
		this.y2 = 0;
		this.x3 = 0;
		this.y3 = 0;
		this.is_pointual=false;
	}

	function reference(objid){
		this.objid 	= objid;
		this.start 	= null;
		this.end  	= null;


		this.gif_e1 = 'reference/e1.gif'+framework__image_url_extension;
		this.gif_e2 = 'reference/e2.gif'+framework__image_url_extension;
		this.gif_e3 = 'reference/e3.gif'+framework__image_url_extension;
		this.gif_e4 = 'reference/e4.gif'+framework__image_url_extension;
		this.gif_h = 'reference/h.gif'+framework__image_url_extension;
		this.gif_v = 'reference/v.gif'+framework__image_url_extension;
		this.gif_ne = 'reference/ne.gif'+framework__image_url_extension;
		this.gif_nn = 'reference/nn.gif'+framework__image_url_extension;
		this.gif_ns = 'reference/ns.gif'+framework__image_url_extension;
		this.gif_nw = 'reference/nw.gif'+framework__image_url_extension;
		this.gif_1e = 'reference/1e.gif'+framework__image_url_extension;
		this.gif_1n = 'reference/1n.gif'+framework__image_url_extension;
		this.gif_1s = 'reference/1s.gif'+framework__image_url_extension;
		this.gif_1w = 'reference/1w.gif'+framework__image_url_extension;

		this.line_list	= new Array();
	}

	function lightReference(objid){
		this.objid 	= objid;
		this.start 	= null;
		this.end  	= null;


		this.gif_e1 = 'lightReference/e1.gif'+framework__image_url_extension;
		this.gif_e2 = 'lightReference/e2.gif'+framework__image_url_extension;
		this.gif_e3 = 'lightReference/e3.gif'+framework__image_url_extension;
		this.gif_e4 = 'lightReference/e4.gif'+framework__image_url_extension;
		this.gif_h = 'lightReference/h.gif'+framework__image_url_extension;
		this.gif_v = 'lightReference/v.gif'+framework__image_url_extension;
		this.gif_ne = 'lightReference/ne.gif'+framework__image_url_extension;
		this.gif_nn = 'lightReference/nn.gif'+framework__image_url_extension;
		this.gif_ns = 'lightReference/ns.gif'+framework__image_url_extension;
		this.gif_nw = 'lightReference/nw.gif'+framework__image_url_extension;
		this.gif_1e = 'lightReference/1e.gif'+framework__image_url_extension;
		this.gif_1n = 'lightReference/1n.gif'+framework__image_url_extension;
		this.gif_1s = 'lightReference/1s.gif'+framework__image_url_extension;
		this.gif_1w = 'lightReference/1w.gif'+framework__image_url_extension;

		this.line_list	= new Array();
	}



	function moveableObject(){
		this.objid = -1;
		this.type = null;
		this.resizable_width = false;
		this.resizable_height = false;
		this.movable_x = false;
		this.movable_y = false;
		this.width_min = 0;
		this.width_max = 0;
		this.height_min = 0;
		this.height_max = 0;
		this.width = 0;
		this.height = 0;
		this.x_pos = 0;
		this.y_pos = 0;
		this.z_pos = 0;
		this.title = null;
		this.iframe_src = null;
		this.text_content = '';
		this.image_src = null;
		this.active	= false;
		this.reference_list = new Array();
	}

	function moveableObject_setActiveState(prefix,obj,state){

		if(state && moveable_object_current_active_element != null)
			moveableObject_setActiveState(prefix,moveable_object_current_active_element,false)


		moveable_object_current_active_element = obj;

		obj.active = state;
		var title_div = document.getElementById('title_div$'+prefix+'$'+obj.objid);
		var border_r = document.getElementById('dim_x_r$'+prefix+'$'+obj.objid);
		var border_l = document.getElementById('dim_x_l$'+prefix+'$'+obj.objid);
		var border_t = document.getElementById('dim_y_t$'+prefix+'$'+obj.objid);
		var border_b = document.getElementById('dim_y_b$'+prefix+'$'+obj.objid);

		if(state){

			switch(obj.type){
				case 'table_with_text':
					border_r.style.backgroundColor = moveable_object_title_color_active;
					border_l.style.backgroundColor = moveable_object_title_color_active;
					border_t.style.backgroundColor = moveable_object_title_color_active;
					border_b.style.backgroundColor = moveable_object_title_color_active;
					if(title_div != null)
						title_div.style.backgroundColor = moveable_object_with_text_border_color;
					break;
				default:
					border_r.style.backgroundColor = moveable_object_border_color_active;
					border_l.style.backgroundColor = moveable_object_border_color_active;
					border_t.style.backgroundColor = moveable_object_border_color_active;
					border_b.style.backgroundColor = moveable_object_border_color_active;
					if(title_div != null)
						title_div.style.backgroundColor = moveable_object_title_color_active;
			}

		}
		else{

			switch(obj.type){
				case 'table_with_text':
					border_r.style.backgroundColor = moveable_object_with_text_border_color;
					border_l.style.backgroundColor = moveable_object_with_text_border_color;
					border_t.style.backgroundColor = moveable_object_with_text_border_color;
					border_b.style.backgroundColor = moveable_object_with_text_border_color;
					if(title_div != null)
						title_div.style.backgroundColor = moveable_object_with_text_border_color;
					break;
				default:
					border_r.style.backgroundColor = moveable_object_border_color;
					border_l.style.backgroundColor = moveable_object_border_color;
					border_t.style.backgroundColor = moveable_object_border_color;
					border_b.style.backgroundColor = moveable_object_border_color;
					if(title_div != null)
						title_div.style.backgroundColor = moveable_object_title_color;
			}

		}

		if(state) DIAGRAM_API_onElementSelect(obj.objid);

	}


	properties = function(obj,objid,type,width_min,width_max,height_min,height_max,width,height,x_pos,y_pos,z_pos,title,
										iframe_src,text_content,image_src){
		obj.objid = objid;
		obj.type = type;
		obj.text_content = '';

		switch(type){

			case 'table_with_iframe':
				obj.resizable_width = true;
				obj.resizable_height = true;
				obj.movable_x = true;
				obj.movable_y = true;
				obj.iframe_src = null;
			break;

			case 'table_with_text':
				obj.resizable_width = true;
				obj.resizable_height = true;
				obj.movable_x = true;
				obj.movable_y = true;
				obj.text_content = text_content;
			break;

			case 'table_with_image':
				obj.resizable_width = true;
				obj.resizable_height = true;
				obj.movable_x = true;
				obj.movable_y = true;
				obj.image_src = image_src;
			break;

			case 'reference_line_x':
				obj.movable_y = true;
			break;

			case 'reference_line_y':
				obj.movable_x = true;
			break;
			default:

		}
		obj.width_min = width_min;
		obj.width_max = width_max;
		obj.height_min = height_min;
		obj.height_max = height_max;
		if(type.substr(0,5) == 'table'){

			obj.width = parseInt(width) + parseInt(2*moveable_object_border);
			obj.height = parseInt(height) +parseInt(2*moveable_object_border);
			obj.x_pos = x_pos-moveable_object_border;
			obj.y_pos = y_pos-moveable_object_border;
		}
		else{

			obj.width = width;
			obj.height = height;
			obj.x_pos = x_pos;
			obj.y_pos = y_pos;
		}
		obj.z_pos= z_pos;
	}



	create = function(obj,prefix,objid,type,width_min,width_max,height_min,height_max,width,height,x_pos,y_pos,z_pos,title,
										iframe_src,text_content,image_src,directed,is_fix, additional_attributes){

		this.properties(obj,objid,type,width_min,width_max,height_min,height_max,width,height,x_pos,y_pos,z_pos,title,iframe_src,text_content,image_src);


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

		root_element.appendChild(div1);

		div1.setAttribute('id','move_div$'+prefix+'$'+objid);


		switch(type){

			case 'table_with_iframe':

			case 'table_with_text':

			case 'table_with_image':
				div1.style.cursor = 'pointer';
				div1.style.cursor = 'hand';
			break;

			case 'reference_line_x':
				div1.style.cursor = 's-resize';
			break;

			case 'reference_line_y':
				div1.style.cursor = 'w-resize';
			break;
			default:

				alert('Object type "'+type+'" not supported!');
		}

		div1.style.position = 'absolute';
		div1.style.width = parseInt(width);
		div1.style.height = parseInt(height);
		div1.style.left = parseInt(x_pos);
		div1.style.top = parseInt(y_pos);
		div1.style.zIndex = parseInt(z_pos)+1;



		if(type.substr(0,9) == 'reference'){
			var img1 = document.createElement('IMG');

			div1.appendChild(img1);

			img1.setAttribute('id','gif_start_line$'+prefix+'$'+objid);
			img1.setAttribute('src',framework__spacergif);
			img1.setAttribute('border','0');
			img1.setAttribute('width',parseInt(width));
			img1.setAttribute('height',parseInt(height));
			img1.setAttribute('galleryimg','no');
		}


		var img2 = document.createElement('IMG');

		div1.appendChild(img2);

		img2.setAttribute('id','dragbar$'+prefix+'$'+objid);
		img2.setAttribute('src',framework__spacergif);
		img2.setAttribute('border','0');
		img2.setAttribute('width',parseInt(width));
		img2.setAttribute('height',parseInt(height));
		img2.setAttribute('galleryimg','no');


		if(type.substr(0,9) == 'reference'){
			var img3 = document.createElement('IMG');

			div1.appendChild(img3);

			img3.setAttribute('id','gif_end_line$'+prefix+'$'+objid);
			img3.setAttribute('src',framework__spacergif);
			img3.setAttribute('border','0');
			img3.setAttribute('width',parseInt(width));
			img3.setAttribute('height',parseInt(height));
			img3.setAttribute('galleryimg','no');
		}


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

		div2.setAttribute('id','div$'+prefix+'$'+objid);

		div2.style.position = 'absolute';
		div2.style.width = parseInt(width);
		div2.style.height = parseInt(height);
		div2.style.left = parseInt(x_pos);
		div2.style.top = parseInt(y_pos);
		div2.style.zIndex = parseInt(z_pos);


		root_element.appendChild(div2);

		//div2.setAttribute('style','cursor:pointer;cursor:hand;position:absolute;width:'+width+';height:'+height+';left:'+x_pos+';top:'+y_pos+';z-index:'+z_pos);

		switch(type){

			case 'table_with_iframe':

				content_height = height - 20;
				img2.setAttribute('height',20);
				div1.style.height = 20;

				var div_content = '	<DIV style="width:auto;height:20;background-color:"'+moveable_object_title_color+' id=title_div$'+prefix+'$'+objid+'>'+title+'</DIV>'
									+'<iframe src="'+iframe_src+'" width='+width+' height='+content_height+' frameborder="0" id="iframe_'+objid+'" name="iframe_'+objid+'"></iframe>'
			div2.style.backgroundColor = '#888888';
			break;

			case 'table_with_text':
				if(text_content == null) text_content='';
				var div_content = '  <DIV contentEditable="'+moveable_object_with_text_contentEditable+'" style="width:'+width+' ;height:'+height+';'+additional_attributes+'" id="title_div$'+prefix+'$'+objid+'">'+text_content+'</DIV>';
			break;

			case 'table_with_image':
				var div_content = '	<DIV style="width:auto;height:20;background-color:"'+moveable_object_title_color+' id=title_div$'+prefix+'$'+objid+'>'+title+'</DIV>'
									+'<DIV style="width:'+width+' ;height:'+content_height+'" id="content_'+objid+'"><IMG src="'+image_src+'" galleryimg="no"></DIV>'
				div2.style.backgroundColor = '#888888';
				div2.style.backgroundColor = '#888888';
			break;

			case 'reference_line_x':
				var div_content = '<IMG src="'+framework__spacergif+'" height='+height+' galleryimg="no">';
				div2.style.backgroundColor = 'transparent';
			break;

			case 'reference_line_y':
				var div_content = '<IMG src="'+framework__spacergif+'" width='+width+' galleryimg="no">';
				div2.style.backgroundColor = 'transparent';
			break;
			default:
				var div_content = null;

		}

		div2.innerHTML = div_content;




		if(obj.resizable_width){
			var div3 = document.createElement('DIV');

			root_element.appendChild(div3);

			div3.setAttribute('id','dim_x_r$'+prefix+'$'+objid);


			div3.style.cursor = 'e-resize';
			div3.style.position = 'absolute';
			div3.style.width = parseInt(moveable_object_border);
			div3.style.height = parseInt(height) + parseInt(moveable_object_border);
			div3.style.left = parseInt(x_pos)+parseInt(div2.offsetWidth);
			div3.style.top = parseInt(y_pos)- parseInt(moveable_object_border);
			div3.style.zIndex = parseInt(z_pos)+2;
			div3.style.visibility = 'visible';
			div3.style.backgroundColor = moveable_object_border_color;


			var img3 = document.createElement('IMG');

			div3.appendChild(img3);

			img3.setAttribute('id','dimxr$'+prefix+'$'+objid);
			img3.setAttribute('src',moveable_object_border_gif);
			img3.setAttribute('border','0');
			img3.setAttribute('width',parseInt(moveable_object_border));
			img3.setAttribute('height',parseInt(height)+parseInt(moveable_object_border));
			img3.setAttribute('galleryimg','no');



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

			root_element.appendChild(div5);

			div5.setAttribute('id','dim_x_l$'+prefix+'$'+objid);


			div5.style.cursor = 'e-resize';
			div5.style.position = 'absolute';
			div5.style.width = parseInt(moveable_object_border);
			div5.style.height = parseInt(height)+parseInt(moveable_object_border);
			div5.style.left = parseInt(x_pos)-parseInt(moveable_object_border);
			div5.style.top = parseInt(y_pos);
			div5.style.zIndex = parseInt(z_pos)+2;
			div5.style.visibility = 'visible';
			div5.style.backgroundColor = moveable_object_border_color;


			var img5 = document.createElement('IMG');

			div5.appendChild(img5);

			img5.setAttribute('id','dimxl$'+prefix+'$'+objid);
			img5.setAttribute('src',moveable_object_border_gif);
			img5.setAttribute('border','0');
			img5.setAttribute('width',parseInt(moveable_object_border));
			img5.setAttribute('height',parseInt(height)+parseInt(moveable_object_border));
			img5.setAttribute('galleryimg','no');
		}



		if(obj.resizable_height){
			var div4 = document.createElement('DIV');

			root_element.appendChild(div4);

			div4.setAttribute('id','dim_y_b$'+prefix+'$'+objid);


			div4.style.cursor = 's-resize';
			div4.style.position = 'absolute';
			div4.style.width = parseInt(width) + parseInt(moveable_object_border);
			div4.style.height = parseInt(moveable_object_border);
			div4.style.left = parseInt(x_pos);
			div4.style.top = parseInt(y_pos)+parseInt(div2.offsetHeight);
			div4.style.zIndex = parseInt(z_pos)+2;
			div4.style.visibility = 'visible'
			div4.style.backgroundColor = moveable_object_border_color;

			var img4 = document.createElement('IMG');

			div4.appendChild(img4);

			img4.setAttribute('id','dimyb$'+prefix+'$'+objid);
			img4.setAttribute('src',moveable_object_border_gif);
			img4.setAttribute('border','0');
			img4.setAttribute('width',parseInt(width) + parseInt(moveable_object_border));
			img4.setAttribute('height',parseInt(moveable_object_border));
			img4.setAttribute('galleryimg','no');



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

			root_element.appendChild(div6);

			div6.setAttribute('id','dim_y_t$'+prefix+'$'+objid);


			div6.style.cursor = 's-resize';
			div6.style.position = 'absolute';
			div6.style.width = parseInt(width) + parseInt(moveable_object_border);
			div6.style.height = parseInt(moveable_object_border);
			div6.style.left = parseInt(x_pos)-parseInt(moveable_object_border);
			div6.style.top = parseInt(y_pos)-parseInt(moveable_object_border);
			div6.style.zIndex = parseInt(z_pos)+2;
			div6.style.visibility = 'visible';
			div6.style.backgroundColor = moveable_object_border_color;

			var img6 = document.createElement('IMG');

			div6.appendChild(img6);

			img6.setAttribute('id','dimyt$'+prefix+'$'+objid);
			img6.setAttribute('src',moveable_object_border_gif);
			img6.setAttribute('border','0');
			img6.setAttribute('width',parseInt(width) + parseInt(moveable_object_border));
			img6.setAttribute('height',parseInt(moveable_object_border));
			img6.setAttribute('galleryimg','no');
		}


		if(use_values_form_field)
			moveableObject_set_values_in_form_field(objid,x_pos,y_pos,z_pos,width,height,directed,is_fix);


		var suffix_tmp = prefix+'$'+objid;
	}


	moveableObject_drop = function(prefix,objid){

		var div1 = document.getElementById('move_div$'+prefix+'$'+objid);

		root_element.removeChild(div1);
		var div2 = document.getElementById('div$'+prefix+'$'+objid);
		root_element.removeChild(div2);

		var div3 = document.getElementById('dim_x_l$'+prefix+'$'+objid);
		if(div3 != null)
			root_element.removeChild(div3);

		var div4 = document.getElementById('dim_x_r$'+prefix+'$'+objid);
		if(div4 != null)
			root_element.removeChild(div4);

		var div5 = document.getElementById('dim_y_t$'+prefix+'$'+objid);
		if(div5 != null)
			root_element.removeChild(div5);

		var div6 = document.getElementById('dim_y_b$'+prefix+'$'+objid);
		if(div6 != null)
			root_element.removeChild(div6);

	}





	function DIAGRAM_API_setObjectTitle(prefix,obj_key,title,alt_text){
		var title_div = document.getElementById('title_div$'+prefix+'$'+obj_key);
		var title_gif = document.getElementById('dragbar$'+prefix+'$'+obj_key);
		title_div.innerHTML = title;
		title_gif.setAttribute("alt",alt_text);
	}


	function DIAGRAM_API_dropTableObject(prefix,object_list){
		for(var i=0;i<object_list.length;i++){
			if(typeof object_list[i] == 'undefined') continue;

			if(object_list[i].reference_list){
				for(var j=0;j<object_list[i].reference_list.length;j++){

					for(var k=0;k<object_list[i].reference_list[j].line_list.length;k++){
						moveableObject_drop(prefix,object_list[i].reference_list[j].line_list[k].objid);
					}

					if(object_list[i].reference_list[j].start == object_list[i]){
						var ref_obj = object_list[i].reference_list[j].end;
					}
					else{
						var ref_obj = object_list[i].reference_list[j].start;
					}

					ref_obj.reference_list = removeElementFromList(ref_obj.reference_list,object_list[i].reference_list[j],false);

					DIAGRAM_API_dropReferenceObjects(prefix,object_list[i].reference_list[j].start.objid,object_list[i].reference_list[j].end.objid);
				}
			}

			moveableObject_drop(prefix,object_list[i].objid);


			allMoveableObjects = removeElementFromList(allMoveableObjects,object_list[i],true);

		}

		moveable_object_current_active_element = null;

	}


	function DIAGRAM_API_dropTableObjectByObjid(prefix,objid){
		moveableObject_drop(prefix,objid);


		allMoveableObjects = removeElementFromList(allMoveableObjects,getObjectPropertiesByObjid(objid),true);
	}


	function getUniqueTableId(){

		var now = new Date();
		return 'diagram_table'+Date.parse(now);
	}

	function DIAGRAM_API_addTextObjectxxxxxxxxxxxxxx(suffix,obj_key,x_pos,y_pos,z_pos,width,height,additional_attributes){


			DIAGRAM_API_resetInitTablePositions();
			if(x_pos == null){
				var curr_x_pos = loop_x;
				var curr_y_pos = loop_y;
				var z_pos = init_z;
				var width = init_width;
				var height = init_height;
			}
			else{
				var curr_x_pos = x_pos;
				var curr_y_pos = y_pos;
				var z_pos = z_pos;
				var width = width;
				var height = height;
			}


			allMoveableObjects['obj$'+obj_key] = new moveableObject();


			var body_on_load = '';
			if(additional_attributes != null){
				var my_attrs_list = additional_attributes.split(';');
				for(var i=0;i<my_attrs_list.length && my_attrs_list[i] != '';i++){
					var attrs = my_attrs_list[i].split(':');
					var attribute_name = attrs[0];
					var attribute_value = attrs[1].replace('#','%23');
					switch(attribute_name){
						case 'background-color':
							body_on_load = 'DIAGRAM_API_setTableBackgroundColor%28%27'+attribute_value+'%27%29';
						break;
						default:
					}
				}
			}
			return false;
			create(allMoveableObjects['obj$'+obj_key],prefix,obj_key,'table_with_iframe',
						moveable_object_width_min,moveable_object_width_max,moveable_object_height_min,moveable_object_height_max,width,height,curr_x_pos,curr_y_pos,z_pos,'',
						framework__reverse_template_root_app+'/DevTool/main.ipm?devtool=metaDiagramTextTable&table_name='+obj_key+'&body_on_load='+body_on_load);

			loop_x = init_x;
			loop_y = init_y;
	}


	function DIAGRAM_API_addTableObject(suffix,object_list,x_pos,y_pos,z_pos,width,height,additional_attributes){

		var my_list = object_list.split(',');
		for(var i=0;i<my_list.length;i++){
			var obj_key = my_list[i];

			if(obj_key == -1) continue;


			if(typeof allMoveableObjects['obj$'+obj_key] != 'undefined'){
				alert(obj_key+' Diese Tabelle ist bereits im Diagramm vorhanden! ');
				continue;
			}


			DIAGRAM_API_resetInitTablePositions();
			if(x_pos == null){
				var curr_x_pos = loop_x;
				var curr_y_pos = loop_y;
				var z_pos = init_z;
				var width = init_width;
				var height = init_height;
			}
			else{
				var curr_x_pos = x_pos;
				var curr_y_pos = y_pos;
				var z_pos = z_pos;
				var width = width;
				var height = height;
			}


			allMoveableObjects['obj$'+obj_key] = new moveableObject();


			var body_on_load = '';
			if(additional_attributes != null){
				var my_attrs_list = additional_attributes.split(';');
				for(var i=0;i<my_attrs_list.length && my_attrs_list[i] != '';i++){
					var attrs = my_attrs_list[i].split(':');
					var attribute_name = attrs[0];
					var attribute_value = attrs[1].replace('#','%23');
					switch(attribute_name){
						case 'background-color':
							body_on_load = 'DIAGRAM_API_setTableBackgroundColor%28%27'+attribute_value+'%27%29';
						break;
						default:
					}
				}
			}
			create(allMoveableObjects['obj$'+obj_key],prefix,obj_key,'table_with_iframe',
						moveable_object_width_min,moveable_object_width_max,moveable_object_height_min,moveable_object_height_max,width,height,curr_x_pos,curr_y_pos,z_pos,'',
						framework__reverse_template_root_app+'/DevTool/main.ipm?devtool=metaTableStatePage4Diagram&table_name='+obj_key+'&body_on_load='+body_on_load);

		}

		loop_x = init_x;
		loop_y = init_y;

	}

	function DIAGRAM_API_resetInitTablePositions(){
		if( (init_x + init_width <= overlay_max_r - 50) && (init_y + init_height <= overlay_max_b - 50) ){
			loop_x += 50;
			loop_y += 50;
		}
		else{
			loop_x = init_x;
			loop_y = init_y;
		}
	}



	function DIAGRAM_API_dropReferenceObjects(prefix,start_key,end_key){

		allReferences['ref$'+start_key+'|'+end_key] = null;
	}



	function DIAGRAM_API_addReferenceObjects(prefix,start_key,end_key,reference_type){


		if( !allMoveableObjects['obj$'+start_key] || !allMoveableObjects['obj$'+end_key]
		|| allReferences['ref$'+start_key+'|'+end_key] )
			return false;

		switch(reference_type){
			case 'light_reference':
				allReferences['ref$'+start_key+'|'+end_key] = new lightReference(start_key+'|'+end_key);
				break;
			case 'reference':
				allReferences['ref$'+start_key+'|'+end_key] = new reference(start_key+'|'+end_key);
				break;
			default:
				allReferences['ref$'+start_key+'|'+end_key] = new reference(start_key+'|'+end_key);
		}
		registerReference(prefix,allReferences['ref$'+start_key+'|'+end_key],start_key,end_key);
	}

	var diagramPrintWindow;

	function DIAGRAM_API_printDiagram(diagram_name){
		var diagramPrintWindow = window.open(framework__reverse_template_root_app+"/showNewEmptyWindow.ipm?diagram_name="+diagram_name,"diagramPrintWindow","width=1400,height=800,left=0,top=0,menubar=yes,toolbar=yes");

	}


	function DIAGRAM_API_openAddTableWindow(action){
		var diagramPopupWindow = window.open(framework__reverse_template_root_app+"/DevTool/main.ipm?devtool=metaTableDiagramPopUps&popup_action="+action,"diagramPopupWindow","width=800,height=400,left=100,top=100");
	}

	function DIAGRAM_API_addTextObjectFromPopup(prefix,content_fieldname,color_fieldname,weight_fieldname){
		var my_list = new Array();


		var my_field = eval('document.myForm.'+color_fieldname);
		var my_index = my_field.selectedIndex;
		var color = my_field.options[my_index].value;


		var my_field = eval('document.myForm.'+weight_fieldname);
		var my_index = my_field.selectedIndex;
		var weight = my_field.options[my_index].value;


		var content = eval('document.myForm.'+content_fieldname+'.value');

		opener.DIAGRAM_API_addTextObject(prefix,color,weight,content);

		window.close();

	}

	function DIAGRAM_API_getTextObjectUniqueId(){
		moveable_object_with_text_reg_counter++;
		return 'moveable_text_object'+moveable_object_with_text_reg_counter;
	}

	function DIAGRAM_API_addTextObject(prefix,color,weight,content,x_pos,y_pos,z_pos,width,height,additional_attributes,obj_key){


		DIAGRAM_API_resetInitTablePositions();
		if(x_pos == null){
			var curr_x_pos = loop_x;
			var curr_y_pos = loop_y;
			var z_pos = init_z;
			var width = moveable_object_with_text_width_min;
			var height = moveable_object_with_text_height_min;
		}
		else{
			var curr_x_pos = x_pos;
			var curr_y_pos = y_pos;
			var z_pos = z_pos;
		}


		if(obj_key == null){
			obj_key = DIAGRAM_API_getTextObjectUniqueId();
		}


		allMoveableObjects['obj$'+obj_key] = new moveableObject();



		create(allMoveableObjects['obj$'+obj_key],prefix,obj_key,'table_with_text',
					moveable_object_with_text_width_min,moveable_object_with_text_width_max,moveable_object_with_text_height_min,
					moveable_object_with_text_height_max,width,height,curr_x_pos,curr_y_pos,z_pos,
					'','',content,null,null,null,'color:'+color+'" class="'+weight+'" ');

		DIAGRAM_API_setTextObjectAttributes(prefix,obj_key,color,weight);

	}

	function DIAGRAM_API_setTextObjectAttributes(prefix,obj_key,color,weight){


		var my_div = document.getElementById('dim_x_l$'+prefix+'$'+obj_key);
		my_div.style.backgroundColor = moveable_object_with_text_border_color;

		var my_div = document.getElementById('dim_x_r$'+prefix+'$'+obj_key);
		my_div.style.backgroundColor = moveable_object_with_text_border_color;

		var my_div = document.getElementById('dim_y_t$'+prefix+'$'+obj_key);
		my_div.style.backgroundColor = moveable_object_with_text_border_color;

		var my_div = document.getElementById('dim_y_b$'+prefix+'$'+obj_key);
		my_div.style.backgroundColor = moveable_object_with_text_border_color;


	}



	function DIAGRAM_API_addTableObjectFromPopup(prefix,fieldname){
		var my_field = document.getElementsByName(fieldname+'_swap_right__i')[0];
		var my_list = new Array();
		for(var i=0;i<my_field.options.length;i++){
			my_list = my_list.concat(my_field.options[i].value);
		}
		if(my_list.length > 0)
			opener.DIAGRAM_API_addTableObject(prefix,my_list.join(','));

		window.close();
	}

	function DIAGRAM_API_setTableBackgroundColor(bgcolor,my_document){
		if(my_document == null)
			var iframe_body = document.getElementsByTagName('body')[0];
		else
			var iframe_body = my_document.getElementsByTagName('body')[0];
		iframe_body.style.backgroundColor=bgcolor;
	}

	function DIAGRAM_API_getTableBackgroundColor(my_document){
		if(my_document == null)
			var iframe_body = document.getElementsByTagName('body')[0];
		else
			var iframe_body = my_document.getElementsByTagName('body')[0];
		return iframe_body.style.backgroundColor;
	}


	function DIAGRAM_API_changeTableBackgroundColor(selection,prefix,object_list){

		var bgcolor_index = selection.selectedIndex;

		var bgcolor = selection.options[bgcolor_index].style.backgroundColor;

		for(var i=0;i<object_list.length;i++){
			if(typeof object_list[i] == 'undefined') continue;
			var my_iframe = frames['iframe_'+object_list[i].objid];
			if(my_iframe)
				DIAGRAM_API_setTableBackgroundColor(bgcolor,my_iframe.document);
		}
	}

	function DIAGRAM_API_getAdditionalAttributes2Store(add_attrs_fieldname){

		var obj_status_field=eval('document.myForm.'+add_attrs_fieldname);
		obj_status_field.value = '';
		for(var i in allMoveableObjects){
			var curr_obj = allMoveableObjects[i];
			switch(curr_obj.type){
				case 'table_with_iframe':

					var my_iframe = frames['iframe_'+curr_obj.objid];
					if(my_iframe){
						var iframe_body = my_iframe.document.getElementsByTagName('body')[0];
						obj_status_field.value += curr_obj.objid+','+','+'background-color:'+iframe_body.style.backgroundColor+';';
					}
					break;
				case 'table_with_text':
					var title_div = document.getElementById('title_div$'+prefix+'$'+curr_obj.objid);
					if(title_div){
						obj_status_field.value += curr_obj.objid+','+title_div.className+',color:'+title_div.style.color+';';
					}
					break;
				default:
			}
		}
		get_all_objects2store();
	}

	function DIAGRAM_API_onElementSelect(obj_key){
		var selection = document.getElementsByName('moveableElementColor')[0];

		if(!selection) return false;

		var curr_obj = getObjectPropertiesByObjid(obj_name);

		switch(curr_obj.type){
			case 'table_with_iframe':
				var my_iframe = frames['iframe_'+obj_key];
				var curr_color = DIAGRAM_API_getTableBackgroundColor(my_iframe.document).toLowerCase();
			break;
			case 'table_with_text':

			break;
			default:
		}


		for(var i=0;i<selection.options.length;i++){
			if(selection.options[i].value.toLowerCase() == curr_color){
				selection.options[i].selected= true;
				return false;
			}
		}
	}


	function ImageShapeMaker_API_init(fieldname,min_height,min_width){


		prefix = fieldname;



		root_element = document.getElementById('imageShapeMaker_'+fieldname);

		rootelem = root_element;

		var img_root_element = document.getElementById('imageShapeMaker_'+fieldname+'_img');

		root_element.style.width = img_root_element.offsetWidth;
		root_element.style.height= img_root_element.offsetHeight;


		overlay_max_r = root_element.offsetWidth - moveable_object_border;
		overlay_max_b = root_element.offsetHeight - moveable_object_border;


		moveable_object_with_text_width_min = min_width;
		moveable_object_with_text_width_max = overlay_max_r;
		moveable_object_with_text_height_min = min_height;
		moveable_object_with_text_height_max = overlay_max_b;

		moveable_object_border_gif = my_img_path+'/snippet/black-white-anim.gif';

		moveable_object_border_color_active = 'red';

		moveable_object_border_color = 'transparent'

		moveable_object_title_color_active = 'transparent';

		moveable_object_title_color = 'transparent';

		moveable_object_with_text_contentEditable = 'false';

		moveableObject_init_clipping(fieldname);

		overlay_obj_status_fieldname = fieldname;
	}

	function ImageShapeMaker_API_setText(fieldname,object, text){

		var curr_obj = getObjectPropertiesByObjid(object);

		//curr_obj.text_content = text;

		title_div = document.getElementById('title_div$'+fieldname+'$'+object);

		if(title_div)
			title_div.innerHTML = text;
	}


	

	




		function showOnlineHelp(url_params) {
			openJsWindowWithFocus(framework__reverse_template_root_app+'/content/drawOnlineHelp.ipm?dummy'+url_params,
									'online_help',
									'width=400,height=450,menubar=no,toolbar=no,resizable=yes,scrollbars=yes');
		}


	

	


	var registerFieldEventAction_tr_list_with_prefix_list = new Array();
	var registerFieldEventAction_field_list_with_prefix_list = new Array();
	var registerFieldEventAction_field_list_status_list = new Array();

	var registerFieldEventAction_destination_field_list_index = new Array();
	var fieldAction_initEventActionList = new Array();


	function clearRegisteredEventActions(){
		fieldAction_eventActions = new Array();
	}


	function registerFieldEventAction(source_fieldname,
									  event,
									  input_type_key,
									  destination_fieldname,
									  destination_input_type,
									  action,
									  event_value,
									  action_value,
									  is_check_true,
									  is_initialized) {

		if(typeof fieldAction_eventActions[source_fieldname] == 'undefined')
			fieldAction_eventActions[source_fieldname] = new Array();

		if(typeof fieldAction_eventActions[source_fieldname][event] == 'undefined')
			fieldAction_eventActions[source_fieldname][event] = new Array();


		for(var i=0; i<fieldAction_eventActions[source_fieldname][event].length; i++){
			var obj = fieldAction_eventActions[source_fieldname][event][i];
			if(obj.source_fieldname == source_fieldname
			&& obj.event == event
			&& obj.input_type_key == input_type_key
			&& obj.destination_fieldname == destination_fieldname
			&& obj.destination_input_type == destination_input_type
			&& obj.action == action
			&& obj.event_value == event_value
			&& obj.action_value == action_value
			&& obj.is_check_true == is_check_true){

				obj.is_initialized=false;
				return;
			}
		}

		var newObj = new fieldAction_eventObject(source_fieldname,
												 event,
												 input_type_key,
												 destination_fieldname,
												 destination_input_type,
												 action,
												 event_value,
												 action_value,
												 is_check_true,
												 is_initialized)
		fieldAction_eventActions[source_fieldname][event].push( newObj );
		if( destination_fieldname ){
			if(!registerFieldEventAction_destination_field_list_index[destination_fieldname]){
				registerFieldEventAction_destination_field_list_index[destination_fieldname] = new Array();
			}
			registerFieldEventAction_destination_field_list_index[destination_fieldname].push(newObj);
		}
	}


	function discardFieldEventActionBySourceFieldName(source_fieldname) {
		fieldAction_eventActions[source_fieldname] = new Array();
	}

	function discardFieldEventActionBySourceFieldNameWithEvent(source_fieldname,event) {
		if(!fieldAction_eventActions[source_fieldname]){
			fieldAction_eventActions[source_fieldname] = new Array();
		}
		fieldAction_eventActions[source_fieldname][event] = new Array();
	}

	function discardFieldEventActionByDestinationFieldName(destination_fieldname) {
		if(!registerFieldEventAction_destination_field_list_index[destination_fieldname]) return;
		for( var i in registerFieldEventAction_destination_field_list_index[destination_fieldname] ){
			var my_obj = registerFieldEventAction_destination_field_list_index[destination_fieldname][i];
			discardFieldEventAction(my_obj.source_fieldname,my_obj.event,my_obj.destination_fieldname,my_obj.action);
		}
	}


	function discardFieldEventAction(source_fieldname,event,destination_fieldname, action) {
		if(action || destination_fieldname){
			var newArray = new Array();
			for(var i=0; i<fieldAction_eventActions[fieldname][event].length; i++){
				var my_obj = fieldAction_eventActions[fieldname][event][i];
				if( ( !destination_fieldname || destination_fieldname != my_obj.destination_fieldname ) && ( !action || action != my_obj.action ) ){
					newArray.push(my_obj);
				}
			}
			if(!fieldAction_eventActions[source_fieldname]){
				fieldAction_eventActions[source_fieldname] = new Array();
			}
			fieldAction_eventActions[source_fieldname][event] = newArray;
		}
		else if(event){
			discardFieldEventActionBySourceFieldNameWithEvent(source_fieldname,event);
		}
		else{
			discardFieldEventActionBySourceFieldName(source_fieldname);
		}
	}

	function doFieldAction_getValueOfElement(fieldname){
		if( doFieldAction_cache[fieldname] == null
		||  doFieldAction_cache[fieldname]['visibility_status'] == null
		||  doFieldAction_cache[fieldname]['visibility_status'] ){
			return getValueOfElement(fieldname);
		}
		else{
			return doFieldAction_cache[fieldname]['field_value'];
		}

	}


	function checkFieldEventActionCondition(my_obj, fieldvalue){
		if( beginsWith(my_obj.event_value, 'javascript:') ){
			var js_code = my_obj.event_value.replace('javascript:','');
			var js_code = js_code.replace('%fieldvalue%',fieldvalue);
			try{
				return ( eval(js_code) == my_obj.is_check_true);
			}
			catch(e){
				developerAlert('checkFieldEventActionCondition:\n'+js_code+'\n\n'+e.message);
			}
		}
		else if( ( (fieldvalue == my_obj.event_value && my_obj.is_check_true)
			  || (fieldvalue != my_obj.event_value && !my_obj.is_check_true) ) ){
			return true;
		 }
		 return false;
	}


	function doEventActionInitActionsByValue(){



		fieldAction_doSortOrderActionsByHierarchy();


		for(var i in fieldAction_initEventActionList){
			var my_obj = fieldAction_initEventActionList[i];

			if(my_obj.is_initialized) continue;

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(my_obj.source_fieldname,'myForm');
				if( checkFieldEventActionCondition(my_obj, fieldvalue) ){

					doFieldPreAction(my_obj);
				 }
			}

			else{
				if( doEventActionCheckInitActions(my_obj.source_fieldname,my_obj.input_type_key,my_obj.event) ){
					doFieldPreAction(my_obj);
				}
			}
		}


		for(var i in fieldAction_initEventActionList){
			var my_obj = fieldAction_initEventActionList[i];


			if(my_obj.is_initialized) continue;

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(my_obj.source_fieldname,'myForm');
				if( checkFieldEventActionCondition(my_obj, fieldvalue) ){

					doFieldAction(my_obj);
				 }
			}

			else{
				if( doEventActionCheckInitActions(my_obj.source_fieldname,my_obj.input_type_key,my_obj.event) ){
					doFieldAction(my_obj);
				}
			}
		}


		for(var i in fieldAction_initEventActionList){
			var my_obj = fieldAction_initEventActionList[i];

			if(my_obj.is_initialized) continue;

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(my_obj.source_fieldname,'myForm');
				if( checkFieldEventActionCondition(my_obj, fieldvalue) ){

					doFieldPostAction(my_obj);
					my_obj.is_initialized=true;
				 }
			}

			else{
				if( doEventActionCheckInitActions(my_obj.source_fieldname,my_obj.input_type_key,my_obj.event) ){
					doFieldPostAction(my_obj);
					my_obj.is_initialized=true;
				}
			}
		}

	}


	function fieldAction_eventObject(source_fieldname,
									  event,
									  input_type_key,
									  destination_fieldname,
									  destination_input_type,
									  action,
									  event_value,
									  action_value,
									  is_check_true,
									  is_initialized){

		this.source_fieldname 		= source_fieldname;
		this.event 					= event;
		this.input_type_key 		= input_type_key;
		this.destination_fieldname 	= destination_fieldname;
		this.destination_input_type = destination_input_type;
		this.action					= action;
		this.event_value			= event_value;
		this.action_value			= action_value;
		this.is_check_true			= is_check_true;

		this.is_initialized			= (is_initialized)? true : false;

		this.debug = function(){
									var ret = 'source_fieldname: '+this.source_fieldname+'\n';
									ret += 'event: '+this.event+'\n';
									ret += 'input_type_key: '+this.input_type_key+'\n';
									ret += 'destination_fieldname: '+this.destination_fieldname+'\n';
									ret += 'destination_input_type: '+this.destination_input_type+'\n';
									ret += 'action: '+this.action+'\n';
									ret += 'event_value: '+this.event_value+'\n';
									ret += 'action_value: '+this.action_value+'\n';
									ret += 'is_check_true: '+this.is_check_true+'\n';
									ret += 'is_initialized: '+this.is_initialized+'\n';
									return ret;
								};
	}



	function handleFieldEvent(fieldname,input_type_key,event,form_name) {
		if(!form_name){
			form_name = 'myForm';
		}


		if ( typeof fieldAction_eventActions[fieldname] == "undefined" ||
		     typeof fieldAction_eventActions[fieldname][event] == "undefined") return;




		for(var i=0; i<fieldAction_eventActions[fieldname][event].length; i++){
			my_obj = fieldAction_eventActions[fieldname][event][i];

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(fieldname,form_name);
				if( !checkFieldEventActionCondition(my_obj, fieldvalue) ){
				 	 continue;
				 }
			}

			doFieldPreAction(my_obj);
		}


		for(var i=0; i<fieldAction_eventActions[fieldname][event].length; i++){
			my_obj = fieldAction_eventActions[fieldname][event][i];

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(fieldname,form_name);
				if( !checkFieldEventActionCondition(my_obj, fieldvalue) ){
				 	 continue;
				 }
			}

			doFieldAction(my_obj);
		}


		for(var i=0; i<fieldAction_eventActions[fieldname][event].length; i++){
			my_obj = fieldAction_eventActions[fieldname][event][i];

			if(my_obj.event_value && my_obj.event_value != ''){
				var fieldvalue = doFieldAction_getValueOfElement(fieldname,form_name);
				if( !checkFieldEventActionCondition(my_obj, fieldvalue) ){
				 	 continue;
				 }
			}

			doFieldPostAction(my_obj);
		}
	}




	function handleFieldEvent_checkbox(fieldname) {
		var elem = document.getElementsByName(fieldname)[0];


		if ( elem.type == 'checkbox' ) {
			if ( elem.checked )
				handleFieldEvent(fieldname,'checkbox','checked');
			else
				handleFieldEvent(fieldname,'checkbox','unchecked');

		} else {
			if ( elem.value == 1 )
				handleFieldEvent(fieldname,'checkbox','checked');
			else
				handleFieldEvent(fieldname,'checkbox','unchecked');
		}
	}







	function doEventActionInitActions() {

		for (var o in fieldAction_eventActions){
			for (var e in fieldAction_eventActions[o]){
				var my_obj_list = fieldAction_eventActions[o][e];

				for(var i=0; i<my_obj_list.length; i++){
					if( !my_obj_list[i].is_initialized
					&&  doEventActionCheckInitActions(o,my_obj_list[i].input_type_key,e) ){
						doFieldAction(my_obj_list[i]);
						my_obj_list[i].is_initialized=true;
					}
				}
			}
		}
	}








	function doEventActionCheckInitActions(fieldname,input_type_key,event) {

		var elem = document.getElementsByName(fieldname)[0];

		if(!elem) return false;

		switch(input_type_key){

			case 'checkbox':

				if ( elem.type == 'checkbox' ) {
					if ( event == 'checked' )
						return elem.checked;
					else
						return !elem.checked;

				} else {
					if ( event == 'checked' )
						return elem.value == 1;
					else
						return elem.value != 1;
				}
			break;
			default:
		}
	}





	function doFieldAction_disable(fieldname, destination_input_type){

		switch (destination_input_type) {

			case "swap":
				var elem_right = eval('document.myForm.'+fieldname+'_swap_right__i');
				var elem_left  = eval('document.myForm.'+fieldname+'_swap_left__i');
				var swap_img = document.images['swap_selection_img_'+fieldname];
				if ( elem_right ) {

					for (var i=0; i<elem_right.length-1; i++)
						elem_right.options[i].selected=false;

					elem_right.disabled=true;

				}
				if ( elem_left ) {

					for (var i=0; i<elem_left.length-1; i++)
						elem_left.options[i].selected=false;

					elem_left.disabled=true;
				}
				if( swap_img ) {
					if ( !endsWith(swap_img.src,'_disabled') ){
						swap_img.src = swap_img.src.substr(0,swap_img.src.length - 4) + '_disabled.gif';
					}
					else{}
				}
				break;

			case "selection":
			case "select":
				var elem = document.getElementsByName(fieldname)[0];
				var sel_desc = document.getElementById('selection_description_div_' + fieldname);

				if ( sel_desc ) sel_desc.style.visibility = 'hidden';


				if ( elem ) {

					for (var i=0; i<elem.length-1; i++)
						elem.options[i].selected=false;

					elem.disabled=true;
				}
				break;

			case "datetime":

				subfields = new Array("day_time","month_time","year_time","day_of_week_time","hour_time","minute_time","second_time","millisecond_time");


				for (var i=0; i<subfields.length; i++) {
					var elem_this = eval('document.myForm.'+fieldname+'_'+subfields[i]+'__i');
					if ( elem_this ) elem_this.disabled=true;
				}


				if(document.myForm.page){
					var page = document.myForm.page.value;
					var radiobox_list =document.getElementsByName('i__calendar_radio_list_page'+page);
					if( radiobox_list ){
						for(var i = 0; i<radiobox_list.length;i++){
							if(radiobox_list[i].value == fieldname){
								//radiobox_list[i].checked = false;
								radiobox_list[i].disabled = true;
								break;
							}
						}
					}
				}
				break;

			case "checkbox":
				var elem_list = document.getElementsByName(fieldname);
				if ( elem_list ) {
					if ( elem_list[0].type == 'checkbox' ) {
						for (var i=0; i<elem_list.length; i++) {
							elem_list[i].disabled=true;
						}
					} else {
						var elem = document.getElementsByName(fieldname)[0];
						var parent = elem.parentNode;
						doFieldAction_cache[fieldname] = new Array();
						var cloned = parent.cloneNode(true);

						var my_src = document.images[fieldname].src;

						var children = parent.childNodes;
						var text = '';
						var input = document.getElementsByName(fieldname)[0].cloneNode(true);
						for(var c=0;c<children.length;c++){
							if(children[c].nodeName.toUpperCase() == 'A'){
								text = children[c].innerHTML;
							}
							else if(children[c].nodeName.toUpperCase() == 'INPUT'){
								text = children[c].innerHTML;
							}

							else if( children[c].nodeType == 3 ){
								text += children[c].data;
							}
						}
						parent.parentNode.replaceChild(cloned,parent);
						doFieldAction_cache[fieldname]['enabled'] = parent;
						cloned.innerHTML = text;
						cloned.appendChild(input);
						if(document.images[fieldname]){
							document.images[fieldname].src = my_src.replace('checked','selected');
						}
					}
				}
				break;

			case "radio":
				var elem_list = document.getElementsByName(fieldname);
				if ( elem_list ) {
					if ( elem_list[0].type == 'radio' ) {
						for (var i=0; i<elem_list.length; i++) {
							elem_list[i].disabled=true;
						}
					} else {
						var elem = document.getElementsByName(fieldname)[0];
						doFieldAction_cache[fieldname] = new Array();

						var my_src = document.images[fieldname].src;
						var input = document.getElementsByName(fieldname)[0].cloneNode(true);

						var children = elem.parentNode.childNodes;
						var text = '';
						for(var c=0;c<children.length;c++){
							if(children[c].nodeName.toUpperCase() == 'A'){
								text = children[c].innerHTML;
							}
							else if(children[c].nodeName.toUpperCase() == 'INPUT'){
								text = children[c].innerHTML;
							}

							else if( children[c].nodeType == 3 ){
								text += children[c].data;
							}
						}
						parent.parentNode.replaceChild(cloned,parent);
						doFieldAction_cache[fieldname]['enabled'] = parent;
						cloned.innerHTML = text;
						cloned.appendChild(input);
						if(document.images[fieldname]){
							document.images[fieldname].src = my_src.replace('checked','selected');
						}
					}
				}
				break;

			case "text":
				var elem_list = document.getElementsByName(fieldname);
				if(elem_list.length == 1){
					elem_list[0].disabled=true;
				}
				break;
			default:
				alert("unsupported destination_input_type=<" + destination_input_type + "> in doFieldAction, called for field=<" + fieldname + ">");
		}
	}




	function doFieldAction_enable(fieldname, destination_input_type){
		switch (destination_input_type) {

			case "swap":
				var elem_right = eval('document.myForm.'+fieldname+'_swap_right__i');
				var elem_left  = eval('document.myForm.'+fieldname+'_swap_left__i');
				var swap_img = document.images['swap_selection_img_'+fieldname];
				if ( elem_right ) elem_right.disabled=false;
				if ( elem_left  ) elem_left.disabled=false;
				if( swap_img ) {
					if ( endsWith(swap_img.src,'_disabled.gif') )
						swap_img.src = swap_img.src.substr(0,swap_img.src.length - 13) +'.gif';
					else{}
				}
				break;


			case "selection":
			case "select":
				var elem = document.getElementsByName(fieldname)[0];
				var sel_desc = document.getElementById('selection_description_div_' + fieldname);

				if ( sel_desc ) sel_desc.style.visibility = 'visible';
				if ( elem ) {
					elem.disabled=false;
				}
				break;


			case "datetime":

				subfields = new Array("day_time","month_time","year_time","day_of_week_time","hour_time","minute_time","second_time","millisecond_time");

				for (var i=0; i<subfields.length; i++) {
					var elem_this = eval('document.myForm.'+fieldname+'_'+subfields[i]+'__i');
					if ( elem_this ) elem_this.disabled=false;
				}

				if(document.myForm.page){
					var page = document.myForm.page.value;
					var radiobox_list =document.getElementsByName('i__calendar_radio_list_page'+page);
					if( radiobox_list ){
						for(var i = 0; i<radiobox_list.length;i++){
							if(radiobox_list[i].value == fieldname){
								radiobox_list[i].disabled = false;
								break;
							}
						}
					}
				}
				break;

			case "checkbox":
				var elem_list = document.getElementsByName(fieldname);
				if ( elem_list ) {
					if ( elem_list[0].type == 'checkbox' ) {
						for (var i=0; i<elem_list.length; i++) {
							elem_list[i].disabled=false;
						}
					} else {
						if(typeof doFieldAction_cache[fieldname] != 'undefined'
						&& typeof doFieldAction_cache[fieldname]['enabled'] != 'undefined'){
							var elem = document.getElementsByName(fieldname)[0];

							doFieldAction_cache[fieldname]['disabled'] = elem.parentNode.cloneNode(true);

							elem.parentNode.parentNode.replaceChild(doFieldAction_cache[fieldname]['enabled'],elem.parentNode);
						}
					}
				}
				break;

			case "radio":
				var elem_list = document.getElementsByName(fieldname);
				if ( elem_list ) {
					if ( elem_list[0].type == 'radio' ) {
						for (var i=0; i<elem_list.length; i++) {
							elem_list[i].disabled=false;
						}
					} else {
						if(typeof doFieldAction_cache[fieldname] != 'undefined'
						&& typeof doFieldAction_cache[fieldname]['enabled'] != 'undefined'){
							var elem = document.getElementsByName(fieldname)[0];

							doFieldAction_cache[fieldname]['disabled'] = elem.parentNode.cloneNode(true);

							elem.parentNode.parentNode.replaceChild(doFieldAction_cache[fieldname]['enabled'],elem.parentNode);
						}
					}
				}
				break;

			case "text":
				var elem_list = document.getElementsByName(fieldname);
				if(elem_list.length == 1){
					elem_list[0].disabled=false;
				}
				break;
			default:
				alert("unsupported destination_input_type=<" + destination_input_type + "> in doFieldAction, called for field=<" + fieldname + ">");
		}
	}



	function doFieldAction_hide_field_list_with_prefix(prefix){
		if(!registerFieldEventAction_field_list_with_prefix_list[prefix]){
			registerFieldEventAction_field_list_with_prefix_list[prefix] = new Array();
			registerFieldEventAction_field_list_status_list[prefix] = new Array();
			var td_list = document.getElementsByTagName('TD');
			for(var i in td_list){
				var td = td_list[i];
				if(td.id && beginsWith(td.id,'fF$'+prefix)){
					registerFieldEventAction_field_list_with_prefix_list[prefix].push(td);
				}
			}
			var tr_list = document.getElementsByTagName('TR');
			for(var i in tr_list){
				var tr = tr_list[i];
				if(tr.id && beginsWith(tr.id,'dFF$'+prefix)){
					registerFieldEventAction_field_list_with_prefix_list[prefix].push(tr);
				}
			}
		}
		for(var i in registerFieldEventAction_field_list_with_prefix_list[prefix]){
			var elem = registerFieldEventAction_field_list_with_prefix_list[prefix][i];

			if(typeof registerFieldEventAction_field_list_status_list[prefix][i] == 'undefined'
			|| registerFieldEventAction_field_list_status_list[prefix][i] == 1){



				switch(elem.tagName.toUpperCase()){
					case 'TR':
						var parent_tr = elem;
						break;
					case 'TD':

						var parent_tr = elem.parentNode;
						while(parent_tr.tagName.toUpperCase() != 'TR'){
							parent_tr = parent_tr.parentNode;
						}
						break;
					default:

				}
				doFieldAction_hideSimpleBlockElement(null, parent_tr);
				registerFieldEventAction_field_list_status_list[prefix][i] = 0;
			}
		}
	}


	function doFieldAction_show_field_list_with_prefix(prefix){
		if(!registerFieldEventAction_field_list_with_prefix_list[prefix]){
			registerFieldEventAction_field_list_with_prefix_list[prefix] = new Array();
			registerFieldEventAction_field_list_status_list[prefix] = new Array();
			var td_list = document.getElementsByTagName('TD');
			for(var i in td_list){
				var td = td_list[i];
				if(td.id && beginsWith(td.id,'fF$'+prefix)){
					registerFieldEventAction_field_list_with_prefix_list[prefix].push(td);
				}
			}
			var tr_list = document.getElementsByTagName('TR');
			for(var i in tr_list){
				var tr = tr_list[i];
				if(tr.id && beginsWith(tr.id,'dFF$'+prefix)){
					registerFieldEventAction_field_list_with_prefix_list[prefix].push(tr);
				}
			}
		}
		for(var i in registerFieldEventAction_field_list_with_prefix_list[prefix]){
			var elem = registerFieldEventAction_field_list_with_prefix_list[prefix][i];
			if(typeof registerFieldEventAction_field_list_status_list[prefix][i] == 'undefined'
			|| registerFieldEventAction_field_list_status_list[prefix][i] == 0){

				switch(elem.tagName.toUpperCase()){
					case 'TR':
						var parent_tr = elem;
						break;
					case 'TD':

						var parent_tr = elem.parentNode;
						while(parent_tr.tagName.toUpperCase() != 'TR'){
							parent_tr = parent_tr.parentNode;
						}
						break;
					default:

				}

				doFieldAction_showSimpleBlockElement(null, parent_tr);
				registerFieldEventAction_field_list_status_list[prefix][i] = 1;
			}
		}
	}




	function doFieldAction_hide(fieldname, destination_input_type, action_value){

		switch(destination_input_type){
			case 'simple_block_element':
				doFieldAction_hideSimpleBlockElement(fieldname);
				break;
			case 'tr_list_with_prefix':
				if(!registerFieldEventAction_tr_list_with_prefix_list[fieldname]){
					registerFieldEventAction_tr_list_with_prefix_list[fieldname] = new Array();
					var tr_list = document.getElementsByTagName('TR');
					for(var i in tr_list){
						var tr = tr_list[i];
						if(tr.id && beginsWith(tr.id,fieldname)){
							registerFieldEventAction_tr_list_with_prefix_list[fieldname].push(tr.id);
						}
					}
				}
				for(var i in registerFieldEventAction_tr_list_with_prefix_list[fieldname]){
					if(action_value == 'escape_first_tr' && i == 0) continue;
					doFieldAction_hideSimpleBlockElement(registerFieldEventAction_tr_list_with_prefix_list[fieldname][i]);
				}
				break;
			case 'table_col':
				var table = document.getElementById(fieldname);
				var col_pos = action_value;
				var tr_list_parent = table.firstChild;
				var tr_cnt = 1;
				while(!tr_list_parent.tagName || tr_list_parent.tagName.toUpperCase() != 'TBODY'){
					tr_list_parent = table.childNodes[tr_cnt++];
				}
				var tr_list = tr_list_parent.childNodes;
				for(var i = 0;i < tr_list.length; i++){
					if(!tr_list[i].tagName || tr_list[i].tagName.toUpperCase() != 'TR') continue;

					var td_list = tr_list[i].childNodes;
					var td_cnt = -1;

					for(var j=0;j<tr_list.length;j++){
						if( td_list[j].tagName && td_list[j].tagName.toUpperCase() == 'TD' ) td_cnt++;
						if(col_pos == td_cnt){
							td_list[j].style.display = 'none';
							break;
						}
					}
				}
				break;
			default:

				if( (typeof registerFieldEventAction_field_list_status_list[fieldname] == 'undefined' )
				 || registerFieldEventAction_field_list_status_list[fieldname] ==  1 ){
					 registerFieldEventAction_field_list_status_list[fieldname] =  0;
				}
				else{

					return;
				}


				var label_td = document.getElementById('fF$'+fieldname);
				var data_td = getNextSibling(label_td,'td');

				var spacer_td = getNextSibling(data_td,'td');


				if(document.forms['myForm'].elements[fieldname]){
					var field_value = getValueOfElement(fieldname);
				}
				else{
					var field_value = '';
				}



				doFieldAction_cache[fieldname] = new Array();

				if(label_td){
					doFieldAction_cache[fieldname]['label_td'] = label_td;
				}
				if(data_td){
					doFieldAction_cache[fieldname]['data_td'] = data_td;
				}


				if(spacer_td && (!spacer_td.id || spacer_td.id== '') ){
					doFieldAction_cache[fieldname]['spacer_td'] = spacer_td;
				}


				doFieldAction_cache[fieldname]['visibility_status'] = false;
				doFieldAction_cache[fieldname]['field_value'] = field_value;


				var my_form = document.forms['myForm'];



				var tmp = document.getElementById('fFh$'+fieldname);
				if(!tmp){
					tmp = document.createElement('INPUT');
					tmp.setAttribute('type','hidden');
					tmp.setAttribute('id','fFh$'+fieldname);
					tmp.setAttribute('name',fieldname);
				}
				tmp.setAttribute('value',field_value);
				my_form.appendChild(tmp);

				if(label_td){
					var empty_label_td = label_td.cloneNode(false);
					label_td.parentNode.replaceChild(empty_label_td,label_td);
				}
				if(data_td){
					var empty_data_td = data_td.cloneNode(false);
					data_td.parentNode.replaceChild(empty_data_td,data_td);
				}

				if(spacer_td && (!spacer_td.id || spacer_td.id== '') ){
					var empty_spacer_td = spacer_td.cloneNode(false);
					spacer_td.parentNode.replaceChild(empty_spacer_td,spacer_td);
				}
		}
	}



	function doFieldAction_show(fieldname, destination_input_type, action_value){
		switch(destination_input_type){
			case 'simple_block_element':
				doFieldAction_showSimpleBlockElement(fieldname);
				break;
			case 'tr_list_with_prefix':
				if(!registerFieldEventAction_tr_list_with_prefix_list[fieldname]){
					registerFieldEventAction_tr_list_with_prefix_list[fieldname] = new Array();
					var tr_list = document.getElementsByTagName('TR');
					for(var i in tr_list){
						var tr = tr_list[i];
						if(tr.id && beginsWith(tr.id,fieldname)){
							registerFieldEventAction_tr_list_with_prefix_list[fieldname].push(tr.id);
						}
					}
				}

				for(var i in registerFieldEventAction_tr_list_with_prefix_list[fieldname]){
					if(action_value == 'escape_first_tr' && i == 0) continue;
					doFieldAction_showSimpleBlockElement(registerFieldEventAction_tr_list_with_prefix_list[fieldname][i]);
				}
				break;
			case 'table_col':
				var table = document.getElementById(fieldname);
				var col_pos = action_value;
				var tr_list_parent = table.firstChild;
				var tr_cnt = 1;
				while(!tr_list_parent.tagName || tr_list_parent.tagName.toUpperCase() != 'TBODY'){
					tr_list_parent = table.childNodes[tr_cnt++];
				}
				var tr_list = tr_list_parent.childNodes;
				for(var i = 0;i < tr_list.length; i++){
					if(!tr_list[i].tagName || tr_list[i].tagName.toUpperCase() != 'TR') continue;

					var td_list = tr_list[i].childNodes;
					var td_cnt = -1;

					for(var j=0;j<tr_list.length;j++){
						if( td_list[j].tagName && td_list[j].tagName.toUpperCase() == 'TD' ) td_cnt++;
						if(col_pos == td_cnt){
							td_list[j].style.display = 'block';
							break;
						}
					}
				}
				break;
			default:

				if( (typeof registerFieldEventAction_field_list_status_list[fieldname] == 'undefined' )
				 || registerFieldEventAction_field_list_status_list[fieldname] ==  0 ){
					 registerFieldEventAction_field_list_status_list[fieldname] =  1;
				}
				else{

					return;
				}


				var tmp = document.getElementById('fFh$'+fieldname);

				if( !tmp ) return false;

				tmp.parentNode.removeChild(tmp);


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

				var data_td = getNextSibling(label_td,'td');

				var spacer_td = getNextSibling(data_td,'td');

				if(label_td){
					label_td.parentNode.replaceChild(doFieldAction_cache[fieldname]['label_td'],label_td);
				}
				if(data_td){
					data_td.parentNode.replaceChild(doFieldAction_cache[fieldname]['data_td'],data_td);
				}
				if(spacer_td && (!spacer_td.id || spacer_td.id== '') ){
					spacer_td.parentNode.replaceChild(doFieldAction_cache[fieldname]['spacer_td'],spacer_td);
				}
				doFieldAction_cache[fieldname]['visibility_status'] = true;

		}

	}



	function doFieldAction_check(fieldname, destination_input_type, fieldvalue){
		if(!fieldvalue){
			fieldvalue = 1;
		}


		var field = document.getElementsByName(fieldname);
		if(field[0]
		&& ( field[0].type == 'checkbox' || field[0].type == 'radio') ){
			for(var i=0;i<field.length;i++){
				if(field[i].value == fieldvalue){
					field[i].checked = true;
					return;
				}
			}
		}
		else{

			switch( destination_input_type ){
				case 'checkbox':
					setCheckboxValue('myForm',fieldname,fieldvalue);
					break;
				case 'radio':
					radioCheckItem(fieldname,fieldvalue);
					break;
				default:
					setCheckboxValue('myForm',fieldname,fieldvalue);
			}
		}
	}


	function doFieldAction_uncheck(fieldname, destination_input_type,fieldvalue){
		if(!fieldvalue){
			fieldvalue = 1;
		}

		var field = document.getElementsByName(fieldname);
		if(field[0]
		&& ( field[0].type == 'checkbox' || field[0].type == 'radio') ){
			for(var i=0;i<field.length;i++){
				if(field[i].value == fieldvalue){
					field[i].checked = false;
					return;
				}
			}
		}
		else{

			switch( destination_input_type ){
				case 'checkbox':
					setCheckboxValue('myForm',fieldname,fieldvalue);
					break;
				case 'radio':
					radioCheckItem(fieldname,fieldvalue);
					break;
				default:
					setCheckboxValue('myForm',fieldname,fieldvalue);
			}
		}
	}




	function doFieldAction_reloadFieldFunction(source_fieldname, destination_fieldname, action_value){

		if( action_value != '' ){
			var field_function = action_value;
		}
		else{
			var field_function = destination_fieldname;
		}


		dpmAPI_loadFieldFunction(field_function,
								  false,
								  null,
								  false,
								  source_fieldname+','+destination_fieldname,
								  null,
								  'classic');
	}


	function doFieldPreAction(my_obj) {
		var fieldname = my_obj.destination_fieldname;
		var source_fieldname = my_obj.source_fieldname;
		var action = my_obj.action;
		var destination_input_type = my_obj.destination_input_type;
		var action_value = my_obj.action_value;

		switch (action) {


			default:

		}
	}

	function doFieldPostAction(my_obj) {
		var fieldname = my_obj.destination_fieldname;
		var source_fieldname = my_obj.source_fieldname;
		var action = my_obj.action;
		var destination_input_type = my_obj.destination_input_type;
		var action_value = my_obj.action_value;

		switch (action) {

			case 'switch_class':
				doFieldPostAction_switchClass(fieldname,action_value);
				break;
			default:

		}
	}


	function doFieldAction(my_obj) {
		var fieldname = my_obj.destination_fieldname;
		var source_fieldname = my_obj.source_fieldname;
		var source_input_type = my_obj.input_type_key;
		var action = my_obj.action;
		var destination_input_type = my_obj.destination_input_type;
		var action_value = my_obj.action_value;
		var event = my_obj.event;
		var event_value = my_obj.event_value;

		switch (action) {

			case 'disable':
				doFieldAction_disable(fieldname, destination_input_type);
				break;

			case 'enable':
				doFieldAction_enable(fieldname, destination_input_type);
				break;

			case 'hide':
				doFieldAction_hide(fieldname, destination_input_type, action_value)
				break;

			case 'show':
				doFieldAction_show(fieldname, destination_input_type, action_value)
				break;

			case 'hide_tr_list':
			case 'hide_field_list_with_prefix':
				if(action_value && action_value != ''){
					doFieldAction_hide_field_list_with_prefix(action_value);
				}
				else{
					doFieldAction_hide_field_list_with_prefix(fieldname);
				}
				break;

			case 'show_tr_list':
			case 'show_field_list_with_prefix':
				if(action_value && action_value != ''){
					doFieldAction_show_field_list_with_prefix(action_value);
				}
				else{
					doFieldAction_show_field_list_with_prefix(fieldname);
				}
				break;

			case 'check':
				doFieldAction_check(fieldname, destination_input_type, action_value);
				break;

			case 'uncheck':
				doFieldAction_uncheck(fieldname, destination_input_type, action_value);
				break;

			case 'reload_field_function':
				doFieldAction_reloadFieldFunction(source_fieldname, fieldname, action_value);
				break;

			case 'submit':
				doFieldAction_submit(action_value);
				break;

			case 'loadBlock':
				doFieldAction_loadBlock(action_value);
				break;

			case 'switch_class':

				var registred_class_name_list = new Array();
				var items = fieldAction_eventActions[source_fieldname][event];
				for(var i=0;i<items.length;i++){
					if(action == 'switch_class'){
						registred_class_name_list = registred_class_name_list.concat(items[i].action_value);
					}
				}

				doFieldAction_switchClass(fieldname,registred_class_name_list);
				break;

			case 'custom':
				try{
					eval(action_value+'(source_fieldname,source_input_type,fieldname,destination_input_type,event,event_value)');
				}
				catch(e){
					developerAlert('doFieldAction Custom:\n'+action_value+'\n\n'+e.message);
				}
				break;

			case 'do_engine_action':
				doFieldAction_doEngineAction(action_value);
				break;
			default:
		}

	}



	function doFieldAction_submit(action_value){
		if(!action_value){
			action_value = 'reshow';
		}
		myFormSubmit(action_value);
	}



	function doFieldAction_hideSimpleBlockElement(fieldname, elem){
		if(!elem) elem = document.getElementById(fieldname);
		if(!elem) return false;

		elem.style.display = 'none';
		if(isNs){
			switch(elem.tagName.toUpperCase()){
				case 'TR':
					specificFieldAction_hideTR(elem);
					break;
				default:
			}
		}
	}



	function doFieldAction_showSimpleBlockElement(fieldname, elem){

		if(!elem) elem = document.getElementById(fieldname);
		if(!elem) return false;

		if(isNs && elem.tagName.toUpperCase() == 'TR'){
			var styles = elem.getAttribute('style');
			var newStyle = null;

			if(styles != null){
				var styleList = styles.split(';');
				for(var i = 0;i<styleList.length;i++){
					if(styleList[i].toUpperCase().substr(0,7) == 'DISPLAY'){
						continue;
					}
					newStyle = (newStyle==null)? styleList[i] : newStyle+';'+styleList[i];
				}
			}

			elem.setAttribute('style',newStyle);
		}
		else{
			elem.style.display = 'block';
		}
	}


	function doFieldAction_switchClass(fieldname, registred_class_name_list){
		var elem = document.getElementById(fieldname);
		var current_class_name = elem.className;
		if(current_class_name){
			var current_class_name_list = current_class_name.split(' ');

			var new_class_name_list = new Array();
			main_loop:
			for(var i=0;i<current_class_name_list.length;i++){
				var tmp_class_name = current_class_name_list[i];
				for(var j=0;j<registred_class_name_list.length;j++){
					if(registred_class_name_list[j] == tmp_class_name){
						continue main_loop;
					}
				}
				new_class_name_list = new_class_name_list.concat(tmp_class_name);

			}
			elem.className = new_class_name_list.join(' ');
		}
	}



	function doFieldPostAction_switchClass(fieldname, class_name){
		var elem = document.getElementById(fieldname);
		var current_class_name = elem.className;
		if(current_class_name){
			elem.className = current_class_name+' '+class_name;
		}
		else{
			elem.className = class_name;
		}
	}



	function specificFieldAction_hideTR(elem){

		return;
		var elem_parent = elem.parentNode;
		if ( elem_parent.tagName.toUpperCase() != 'TABLE' ){
			elem_parent = elem_parent.parentNode;
		}
		var elem_parent_clone = elem_parent.cloneNode(true);
		elem_parent.parentNode.replaceChild(elem_parent_clone,elem_parent);
	}



	function doFieldAction_doEngineAction(engine_action){
		dpmAPI_sendEnginePostData('dummy',null,'dpmAPI_dummy_callbackFunction',null,null,true,null,engine_action);
	}





	function doFieldAction_loadBlock(blockId){
		var url = dataloader_app_url+'/'+engine_key+'/main.ipm';
		if( document.getElementsByName('taid').length == 1 ){
			var taid = document.getElementsByName('taid')[0].value
		}
		else{
			var taid = -1;
		}

		var additionalPostParams = '';
		additionalPostParams += '&'+engine_key+'_dataloader_mode=block';
		additionalPostParams += '&'+engine_key+'_dataloader_block='+blockId;
		additionalPostParams += '&taid='+taid;
		var params = new Array();
		params.push(blockId);

		dpmAPI_showLoadingGif('block$'+blockId);
		dpm_doPostRequest('myForm', url, additionalPostParams, 'doFieldAction_loadBlock_callbackFunction',params);
	}

	function doFieldAction_loadBlock_callbackFunction(request,params){
		var blockId = params[0];
		var blockDiv = document.getElementById('block$'+blockId);

		var responseText = request.getResponseText();
		if(blockDiv){
			blockDiv.innerHTML = responseText;
			var js_div = document.getElementById('DL_JS_CONTENT_DIV');

			var onload_registered_functions = new Array();

			var js_code = request.getJavaScriptCode()
			try{
				if(js_code != ''){
					eval(js_code);
					getRegisteredOnLoadFunction();
					doEventActionInitActionsByValue();
				}
			}
			catch(e){
				developerAlert('doFieldAction_loadBlock_callbackFunction:\n'+js_code+'\n\n'+e.message);
			}
		}

		dpmAPI_hideLoadingGif();
	}


	function fieldAction_getTargetElementByAction(obj){
		switch (obj.destination_input_type) {
			case 'tr_list_with_prefix':
				var tr_list = document.getElementsByTagName('TR');
				for(var i in tr_list){
					var tr = tr_list[i];
					if(tr.id && beginsWith(tr.id,obj.destination_fieldname)){
						return tr;
					}
				}

				return null;
			case 'table_col':
			case 'simple_block_element':
				return document.getElementById(obj.destination_fieldname);
				break;
			default:

				var elem = document.getElementById('dFF$'+obj.destination_fieldname);
				if( elem ){
					return elem;
				}

				var label_td = document.getElementById('fF$'+obj.destination_fieldname);
				if( label_td ){
					var data_td = getNextSibling(label_td,'td');
					return data_td;
				}

				var elem_list = document.getElementsByName(obj.destination_fieldname);
				if( elem_list.length >  0 ){
					return elem_list[0];
				}
				return null;
		}
	}

	function fieldAction_sortOrderItemSort(obj1, obj2){
		if( obj1.hierarchical_order > obj2.hierarchical_order ){
			return 1;
		}
		if( obj1.hierarchical_order == obj2.hierarchical_order
		&&  obj1.sort_order > obj2.sort_order ){
			return 1;
		}
		return -1;
	}

	function fieldAction_sortOrderItem(obj,elem,sort_order,hierarchical_order){
		this.obj = obj;
		this.elem = elem;
		this.sort_order = sort_order;
		this.hierarchical_order = hierarchical_order;
	}

	function fieldAction_checkItemHierarchy(item,elem,item_list){
		var last_item = document.body;
		var parent = elem.parentNode;
		if( parent == last_item ) return;

		for(var i in item_list){
			var ea = item_list[i];

			if( ea.elem == parent) {
				ea.hierarchical_order++;
			}
		}

		fieldAction_checkItemHierarchy(item,parent,item_list)
	}





	function fieldAction_doSortOrderActionsByHierarchy(){

		var cntr = 0;
		var item_list = new Array();
		for(var fieldname in fieldAction_eventActions){
			for(var event in fieldAction_eventActions[fieldname]){
				for(var i=0; i<fieldAction_eventActions[fieldname][event].length; i++){
					var my_obj = fieldAction_eventActions[fieldname][event][i];
					var elem = fieldAction_getTargetElementByAction(my_obj);
					item_list.push(new fieldAction_sortOrderItem(my_obj,elem,cntr++,0,0));
				}
			}
		}

		for(var i in item_list){
			var item = item_list[i];
			if( !item.elem ) continue;
			fieldAction_checkItemHierarchy(item,item.elem,item_list);
		}

		item_list.sort(fieldAction_sortOrderItemSort);

		fieldAction_initEventActionList = new Array();
		for(var i in item_list){
			var item = item_list[i];
			fieldAction_initEventActionList.push(item.obj);
		}

	}


	

	

		var dataLoader_cache = new Array();


		var engine_key = 'no_key';
		var engine_identifier_name = 'no_key';
		var instance_key = 'no_key';



		function dataLoader_loadSelectionData(master_fieldname,slave_fieldname,slave_has_first_option,dataloader_function_name,optional_parameters){


			var tmpDiv = document.createElement('DIV');
			var tmpDivId = String(Math.random()).replace('.','_');
			var taid = document.myForm.taid.value;
			var mode = document.myForm.mode.value;

			tmpDiv.setAttribute('id',tmpDivId);
			tmpDiv.style.visibility = 'hidden';

			document.body.appendChild(tmpDiv);

			var master_field = document.getElementsByName(master_fieldname)[0];
			var slave_field = document.getElementsByName(slave_fieldname)[0];

			var master_selected_index = master_field.selectedIndex;

			var master_value = master_field.options[master_selected_index].value;


			if( typeof dataLoader_cache[master_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname][slave_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname][master_value] == 'undefined' ){

				var dataLoaderUrl = framework__reverse_template_root_app+'/'+engine_key+'/main.ipm?'
									+engine_identifier_name+'='+instance_key
									+'&mode='+mode
									+'&taid='+taid
									+'&'+engine_key+'_dataloader_mode=selection_master_slave'
									+'&'+engine_key+'_dataloader_function='+dataloader_function_name
									+'&'+engine_key+'_dataloader_fieldname='+master_fieldname
									+'&'+engine_key+'_dataloader_value='+master_value
									+'&'+optional_parameters;

				var first_option = slave_field.options[0].text;
				slave_field.options[0].text = framework__ml_ifl__selection_dataloader_loading;

				slave_field.disabled = true;

				if(slave_has_first_option)
					loadUrl2Div(dataLoaderUrl,tmpDivId,'dataLoader_makeSelectionOptionsFromData("'+master_fieldname+'","'+slave_fieldname+'","'+master_value+'","'+tmpDivId+'",'+slave_has_first_option+',"'+first_option+'")');
				else
					loadUrl2Div(dataLoaderUrl,tmpDivId,'dataLoader_makeSelectionOptionsFromData("'+master_fieldname+'","'+slave_fieldname+'","'+master_value+'","'+tmpDivId+'",'+slave_has_first_option+')');

			}
			else{
				var data = dataLoader_cache[master_fieldname][slave_fieldname][master_value];
				dataLoader_makeSelectionOptionsFromCache(master_fieldname,slave_fieldname,data,slave_has_first_option);
			}
		}



		function dataLoader_makeSelectionOptionsFromData(master_fieldname,slave_fieldname,master_value,data_div_id,slave_has_first_option,first_option){



			var data_div = document.getElementById(data_div_id);
			var loaded_data = data_div.innerHTML;

			var tmp1 = loaded_data.split(String.fromCharCode(7)+'DL_BEGIN'+String.fromCharCode(7));
			if(tmp1.length == 2){
				var tmp2 = tmp1[1].split(String.fromCharCode(7)+'DL_END'+String.fromCharCode(7));
				if(tmp1.length == 2){
					loaded_data = tmp2[0];
				}
				else{
					alert('DATA INCOMPLETE: '+loaded_data);
				}
			}
			else{
				alert('DATA INCOMPLETE: '+loaded_data);
			}


			if(beginsWith(loaded_data,'')
			&& endsWith(loaded_data,'')){

				loaded_data = remove(loaded_data,'',1);

				loaded_data = loaded_data.substr(0,loaded_data.length-1);


				dataLoader_cache[master_fieldname][slave_fieldname][master_value] = loaded_data;
				dataLoader_makeSelectionOptionsFromCache(master_fieldname,slave_fieldname,loaded_data,slave_has_first_option);
				var slave_field = document.getElementsByName(slave_fieldname)[0];
				slave_field.disabled = false;
				if(slave_has_first_option)
					slave_field.options[0].text = first_option;

			}
			else{
				alert('DATA IS NOT COMPLETE : '+loaded_data);
			}


			document.body.removeChild(data_div);
		}

		function dataLoader_makeSelectionOptionsFromCache(master_fieldname,slave_fieldname,data,slave_has_first_option){
			var slave_field = document.getElementsByName(slave_fieldname)[0];
			if(slave_has_first_option){
				slave_field.length = 1;
				var incr = 1;
			}
			else{
				slave_field.length = 0;
				var incr = 0;
			}


			var data_rows = data.split(String.fromCharCode(7));
			for(var i = 0; i<data_rows.length;i++){

				var index = i+incr;
				var curr_columns = data_rows[i].split(String.fromCharCode(1));
				if(!curr_columns[0]) continue;
				slave_field.length++;
				slave_field.options[index].text = curr_columns[1];
				slave_field.options[index].value = curr_columns[0];
			}
		}




		function dataLoader_loadFieldFunctionData(master_fieldname,slave_fieldname,field_function){


			var my_current_td = document.getElementById('fF$'+slave_fieldname);


			my_current_td.id = 'fF_tmp$'+slave_fieldname;


			var tmpDiv = document.createElement('DIV');
			var tmpDivId = String(Math.random()).replace('.','_');
			var taid = document.myForm.taid.value;
			var mode = document.myForm.mode.value;

			tmpDiv.setAttribute('id',tmpDivId);
			tmpDiv.style.visibility = 'hidden';

			document.body.appendChild(tmpDiv);

			var master_field = document.getElementsByName(master_fieldname)[0];
			var slave_field = document.getElementsByName(slave_fieldname)[0];

			switch(master_field.type){
				case 'select-one':
					var master_selected_index = master_field.selectedIndex;
					var master_value = master_field.options[master_selected_index].value;
					break;
				default:
					var master_value = master_field.value;
			}


			master_value = master_value.replace('#','%23');
			master_value = master_value.replace('&','%26');



			if( typeof dataLoader_cache[master_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname][slave_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname][master_value] == 'undefined' ){
				if( !field_function ) field_function = slave_fieldname;
				var dataLoaderUrl = framework__reverse_template_root_app+'/'+engine_key+'/main.ipm?'
									+''+engine_identifier_name+'='+instance_key
									+'&mode='+mode
									+'&taid='+taid

									+'&page='+document.myForm.page.value
									+'&object_id='+document.myForm.object_id.value
									+'&'+engine_key+'_dataloader_mode=field_function'
									+'&'+engine_key+'_dataloader_field_function='+field_function
									+'&'+engine_key+'_dataloader_slave_fieldname='+slave_fieldname
									+'&'+engine_key+'_dataloader_fieldname='+master_fieldname
									+'&'+engine_key+'_dataloader_value='+master_value;

				if(slave_field){
					switch(slave_field.type){
						case 'select-one':
							var first_option = slave_field.options[0].text;
							slave_field.options[0].text = framework__ml_ifl__selection_dataloader_loading;
							slave_field.disabled = true;
							break;
						default:

					}
				}


				loadUrl2Div(dataLoaderUrl,tmpDivId,'dataLoader_makeFieldFunctionFromDataCache("'+master_fieldname+'","'+slave_fieldname+'","'+master_value+'","'+tmpDivId+'")');

			}
			else{
				dataLoader_makeFieldFunctionFromData(master_fieldname,slave_fieldname,master_value);
			}
		}

		function dataLoader_makeFieldFunctionFromDataCache(master_fieldname,slave_fieldname,master_value,data_div_id){


			var data_div = document.getElementById(data_div_id);

			var original_data = data_div.innerHTML;
			var loaded_data = original_data;

			var tmp1 = loaded_data.split(String.fromCharCode(7)+'DL_BEGIN'+String.fromCharCode(7));
			if(tmp1.length == 2){
				var tmp2 = tmp1[1].split(String.fromCharCode(7)+'DL_END'+String.fromCharCode(7));
				if(tmp1.length == 2){
					loaded_data = tmp2[0];
				}
				else{
					alert('DATA INCOMPLETE: '+loaded_data);
				}
			}
			else{
				alert('DATA INCOMPLETE: '+loaded_data);
			}


			if( typeof dataLoader_cache[master_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname] == 'undefined' ){
				dataLoader_cache[master_fieldname][slave_fieldname] = new Array();
			}
			if( typeof dataLoader_cache[master_fieldname][slave_fieldname][master_value] == 'undefined' ){
				dataLoader_cache[master_fieldname][slave_fieldname][master_value] = new Array();
			}



			try{
				clearRegisteredOnLoadFunction();
				var js_code = original_data.split('DL_JS_CODE_BEGIN')[1];
				js_code = js_code.split('DL_JS_CODE_END')[0];
				eval(js_code);
			}
			catch(e){
				developerAlert(e);
			}



			var new_label_td = document.getElementById('fF$'+slave_fieldname);
			var new_data_td = getNextSibling(new_label_td,'td');


			dataLoader_cache[master_fieldname][slave_fieldname][master_value]['label_td'] = new_label_td.cloneNode(true);
			dataLoader_cache[master_fieldname][slave_fieldname][master_value]['data_td'] = new_data_td.cloneNode(true);
			dataLoader_cache[master_fieldname][slave_fieldname][master_value]['js_code'] = js_code;

			data_div.parentNode.removeChild(data_div);

			dataLoader_makeFieldFunctionFromData(master_fieldname,slave_fieldname,master_value);

		}

		function dataLoader_makeFieldFunctionFromData(master_fieldname,slave_fieldname,master_value){

			var label_td = document.getElementById('fF_tmp$'+slave_fieldname);

			if( !label_td ) return false;

			var data_td = getNextSibling(label_td,'td');


			label_td.parentNode.replaceChild(dataLoader_cache[master_fieldname][slave_fieldname][master_value]['label_td'].cloneNode(true),label_td);
			data_td.parentNode.replaceChild(dataLoader_cache[master_fieldname][slave_fieldname][master_value]['data_td'].cloneNode(true),data_td);


			if(dataLoader_cache[master_fieldname][slave_fieldname][master_value]['js_code']){
				eval(dataLoader_cache[master_fieldname][slave_fieldname][master_value]['js_code']);
			}
		}




		function dataLoader_reloadFieldFunction(field_function,form_field_list,ignore_page_elements){

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

			if( label_td != null
			&& 	label_td.tagName.toUpperCase() == 'TD' ){

				label_td.id = 'fF_tmp$'+field_function;
				var field_function_mode = 'classic';
				var my_tr_list = null;
			}
			else{

				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+'$') ){
						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);

					}
				}
			}


			var taid = document.myForm.taid.value;
			var mode = document.myForm.mode.value;


			var dataLoaderUrl = framework__reverse_template_root_app+'/'+engine_key+'/main.ipm?'
								+''+engine_identifier_name+'='+instance_key
								+'&mode='+mode
								+'&taid='+taid

								+'&object_id='+document.myForm.object_id.value
								+'&'+engine_key+'_dataloader_mode=field_function'
								+'&'+engine_key+'_dataloader_fieldname='+field_function
								+'&'+engine_key+'_dataloader_value='
								+'&'+engine_key+'_dataloader_field_function='+field_function;

			if(ignore_page_elements){
				dataLoaderUrl += '&'+engine_key+'_dataloader_ignore_page_elements='+1;
			}

			var submit_whole_form = true;
			if( form_field_list != null ){
				var field_list = form_field_list.split(',');
				for( var i=0;i<field_list.length;i++ ){
					submit_whole_form = false;

					var my_field = document.getElementsByName(field_list[i])[0];

					switch(my_field.type){
						case 'select-one':
							var my_field_selected_index = my_field.selectedIndex;
							var my_field_value = my_field.options[my_field_selected_index].value;
							break;
						default:
							var my_field_value = my_field.value;
					}


					my_field_value = my_field_value.replace('#','%23');
					my_field_value = my_field_value.replace('&','%26');

					dataLoaderUrl += '&'+field_list[i]+'='+my_field_value;
				}
			}


			var tmp_div = document.createElement("DIV");
			var my_id = 'TMP_DIV_WILL_BE_DROPPED';
			tmp_div.setAttribute('id',my_id);
			tmp_div.style.visibility='hidden';
			document.body.style.overflow = 'hidden';

			document.body.appendChild(tmp_div);

			var iframe_url = framework__reverse_template_root_app+'/'+engine_key+'/main.ipm';

			if( submit_whole_form ){

				var url_params = '';
				var tmp_form = document.createElement("FORM");
				tmp_form.action = iframe_url;
				tmp_form.method = "POST";

				var taid = document.myForm.taid.value;
				taid = taid.replace( "'","\'");
				url_params = url_params.replace( "'","\'");

				tmp_form.innerHTML='<INPUT type="hidden" name="'+engine_key+'_dataloader_mode" value="field_function">'
									+'<INPUT type="hidden" name="'+engine_key+'_dataloader_field_function" value="'+field_function+'">'
									+'<INPUT type="hidden" name="'+engine_key+'_dataloader_fieldname" value="'+field_function+'">'
									+'<INPUT type="hidden" name="'+engine_key+'_dataloader_value" value="">';


				if(ignore_page_elements){
					tmp_form.innerHTML += '<INPUT type="hidden" name="'+engine_key+'_dataloader_ignore_page_elements" value="1">';
				}


				var tmp_iframe = document.createElement("DIV");
				tmp_iframe.style.visibility = 'hidden';

				tmp_div.appendChild(tmp_iframe);

				tmp_iframe.innerHTML = '<iframe src="'+iframe_url+'" Scrolling=No FrameBorder=0 name="TMP_FRAME_WILL_BE_DROPPED" style="width:0;height:0"></iframe>'

				tmp_form.setAttribute('target','TMP_FRAME_WILL_BE_DROPPED');



				document.body.appendChild(tmp_form);

				tmp_form.innerHTML += document.myForm.innerHTML;


				tmp_form.submit();



				tmp_form.parentNode.removeChild(tmp_form);

				var dataloader_div = new loadUrl2Div_Structure();
				loadUrl2Div_Data[my_id] = dataloader_div;

				dataloader_div.max_timeout = 10;
				dataloader_div.end_mark = String.fromCharCode(7)+'DL_END'+String.fromCharCode(7);
				dataloader_div.url = iframe_url;
				dataloader_div.my_iframe_name = 'TMP_FRAME_WILL_BE_DROPPED';
				dataloader_div.js_on_load_code = 'dataLoader_setFieldFunctionData("'+field_function+'","'+my_id+'","'+field_function_mode+'","'+my_tr_list_id.join(',')+'")';
				dataloader_div.checkFrameOnLoadTimeOut = setTimeout("checkFrameOnLoad('"+my_id+"')",100);



			}
			else{

				loadUrl2Div(dataLoaderUrl,my_id,'dataLoader_setFieldFunctionData("'+field_function+'","'+my_id+'","'+field_function_mode+'","'+my_tr_list_id.join(',')+'")');
			}


		}

		function dataLoader_setFieldFunctionData(field_function,data_div_id,field_function_mode,my_tr_list){


			var tmp_div = document.getElementById(data_div_id);
			var original_data = tmp_div.innerHTML;
			var loaded_data = original_data;

			var data_body;


			var tmp1 = loaded_data.split(String.fromCharCode(7)+'DL_BEGIN'+String.fromCharCode(7));
			if (tmp1.length == 2){
				var tmp2 = tmp1[1].split(String.fromCharCode(7)+'DL_END'+String.fromCharCode(7));
				if(tmp2.length == 2){
					var data_body = tmp2[0];
				}
				else {

					alert('DATA INCOMPLETE(1): '+loaded_data);

					return false;
				}
			}
			else {
				alert('DATA INCOMPLETE(2): '+loaded_data);

				return false;
			}

			if(field_function_mode == 'dynamic'){

				var my_id_list = my_tr_list.split(',');
				for(var i=1;i<my_id_list.length;i++){
					var o = document.getElementById(my_id_list[i]);
					if( o )
					o.parentNode.removeChild(o);
				}

				var new_tr_list = new Array();

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

			}


			var last_old_item = document.getElementById(my_id_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);
				}
				p.removeChild(last_old_item);
			}

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


			try{

				clearRegisteredOnLoadFunction();
				var js_code = original_data.split('DL_JS_CODE_BEGIN')[1];
				js_code = js_code.split('DL_JS_CODE_END')[0];
				getRegisteredOnLoadFunction();
			}
			catch(e){
				developerAlert(e);
			}


			tmp_div.parentNode.removeChild(tmp_div);

		}

		function dataLoader_getElementById(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 = dataLoader_getElementById(id_prefix,c[i]);
					if(ret != null) return ret;
				}
			}
			return null;
		}
	


	

		function addBookmark(title,url) {
			if (window.sidebar){
				window.sidebar.addPanel(title, url,"");
			}
			else if( document.all ){
				window.external.AddFavorite( url, title);
			}
			else{
				return true;
			}
		}

	

	

		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;
					}
				}
			}

		}


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


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

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

		dpm_request.prototype.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;
			}

		};



		dpm_request.prototype.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;
			}

		};


		dpm_request.prototype.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;
			}

		};

		dpm_request.prototype.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;
			}
		}


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


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

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

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



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


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



		dpm_request.prototype.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);
									}


									if (typeof onCompleteHandlerFunction == 'function')
										onCompleteHandlerFunction(request,params);
									else
										eval(onCompleteHandlerFunction+'(request,params)');

								}
								catch(e){

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

					}

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


		dpm_request.prototype.open = function (method, url) {
			this.httpRequest.open(method, url, false);
		};

		dpm_request.prototype.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");
				}
			}
		};


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

		dpm_request.prototype.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_requestPool[dpm_requestPoolSize] = new dpm_request();
				request = dpm_requestPool[dpm_requestPoolSize];
				dpm_requestPoolSize++;
			}
			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){


			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( 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(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);
		}


		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 = '/iconparc_static/pics/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 getElementsByTagName(str, tag_name){
var lower_tag_name = tag_name.toLowerCase();
var lower_tag_start = '<'+lower_tag_name;
var upper_tag_start = '<'+tag_name.toUpperCase();
var lower_tag_end = '<'+'/'+lower_tag_name;
var upper_tag_end = '<'+'/'+tag_name.toUpperCase();
str = str.replace(upper_tag_start,lower_tag_start);
while(str != str.replace(upper_tag_start,lower_tag_start)){
str = str.replace(upper_tag_start,lower_tag_start);
}
while(str != str.replace(upper_tag_end,lower_tag_end)){
str = str.replace(upper_tag_end,lower_tag_end);
}
var tmp1 = str.split(lower_tag_start);
var ret = new Array();
for(var i=1;i<tmp1.length;i++){
var tmp2 = tmp1[i].split(lower_tag_end)[0];
var start = tmp2.indexOf('>')+1;
ret = ret.concat(tmp2.substr(start));
}
return ret;
}
function dpmAPI_dataSheet_reloadRow(fieldname, sub_object, subitem_id, action, form_name){
dpmHelper_doDataSheetRequest(fieldname, sub_object, subitem_id, action, form_name, 'dpmAPI_dataSheet_reloadTable_callbackFunction','datasheet_table');
}
function dpmAPI_dataSheet_reloadTable(fieldname, sub_object, subitem_id, action, form_name){
dpmHelper_doDataSheetRequest(fieldname, sub_object, subitem_id, action, form_name, 'dpmAPI_dataSheet_reloadTable_callbackFunction','datasheet_table');
}
function dpmAPI_dataSheet_addRow_callbackFunction(request,params){
var fieldname = params[0];
var sub_object = params[1];
var subitem_id = params[2];
try{
var responseText = request.getResponseText();
document.body.innerHTML += '<table style="display: none" id="__tmp_table__">'+responseText+'</table>';
var tmp_table = document.body.lastChild;
var row_list = tmp_table.firstChild.childNodes;
for(var i=0; i<row_list.length; i++){
if(row_list[i].tagName.toLowerCase() == 'tr'){
var new_row = row_list[i].parentNode.removeChild(row_list[i]);
}
}
tmp_table.parentNode.removeChild(tmp_table);
if(!subitem_id || subitem_id == ''){
var pos = 0;
}
else{
var row = document.getElementById('dFF$'+sub_object+'$'+subitem_id);
var pos = dpmHelper_getRowPosition(row);
}
var parent_div = document.getElementById('sub_data_sheet_container$'+sub_object);
dpmHelper_insertRowAtPosition(parent_div.firstChild, new_row, pos);
clearRegisteredOnLoadFunction();
var js_code = request.getJavaScriptCode();
if(js_code && js_code != ''){
eval(js_code);
getRegisteredOnLoadFunction();
doEventActionInitActionsByValue();
}
}
catch(e){
developerAlert(e.message);
developerAlert(js_code);
}
dpmAPI_hideLoadingGif();
}
function dpmAPI_dataSheet_reloadRow_callbackFunction(request,params){
var fieldname = params[0];
var sub_object = params[1];
var subitem_id = params[2];
try{
var row = document.getElementById('dFF$'+sub_object+'$'+subitem_id);
var responseText = request.getResponseText();
var td_list = getElementsByTagName(responseText,'td');
var old_td_list = row.childNodes;
var td_cnt = 0;
for(var i=0;i<old_td_list.length;i++){
if(old_td_list[i].tagName.toLowerCase() == 'td'){
old_td_list[i].innerHTML = td_list[td_cnt++];
}
}
clearRegisteredOnLoadFunction();
var js_code = request.getJavaScriptCode();
if(js_code && js_code != ''){
eval(js_code);
getRegisteredOnLoadFunction();
doEventActionInitActionsByValue();
}
}
catch(e){
developerAlert(e.message);
developerAlert(js_code);
}
dpmAPI_hideLoadingGif();
}
function dpmAPI_dataSheet_reloadTable_callbackFunction(request,params){
var fieldname = params[0];
var sub_object = params[1];
var subitem_id = params[2];
try{
var container = document.getElementById('sub_data_sheet_container$'+sub_object);
var responseText = request.getResponseText();
if(responseText){
container.innerHTML = responseText;
}
clearRegisteredOnLoadFunction();
var js_code = request.getJavaScriptCode();
if(js_code && js_code != ''){
eval(js_code);
getRegisteredOnLoadFunction();
doEventActionInitActionsByValue();
}
}
catch(e){
developerAlert(e.message);
developerAlert(js_code);
}
dpmAPI_hideLoadingGif();
}
function dmpHelper_dataSheet_focusOnRowFirstElement(item){
if( item.tagName.toLowerCase() == 'input' && item.type.toLowerCase() == 'text' ){
item.focus();
return true;
}
var children = item.childNodes();
for(var i = 0; i<children.length; i++){
if(dmpHelper_dataSheet_focusOnRowFirstElement(children[i])) return true;
}
}
function dmpHelper_prepareRequestAdditionalParams(fieldname, sub_object, subitem_id, action, dataloader_mode){
var additional_post_params = engine_key+'_dataloader_fieldname='+fieldname;
additional_post_params += '&'+engine_key+'_dataloader_subitem='+subitem_id;
additional_post_params += '&'+engine_key+'_dataloader_sub_object='+sub_object;
additional_post_params += '&'+engine_key+'_dataloader_mode='+dataloader_mode;
if(action){
additional_post_params += '&'+engine_key+'_dataloader_use_generic_action=y';
additional_post_params += '&button_'+action+'='+action;
}
return additional_post_params;
}
function dpmHelper_doDataSheetRequest(fieldname, sub_object, subitem_id, action, form_name, callback_function, dataloader_mode){
if(!form_name){
form_name = 'myForm';
}
var url = dataloader_app_url+'/'+engine_key+'/main.ipm';
var additional_post_params = dmpHelper_prepareRequestAdditionalParams(fieldname, sub_object, subitem_id, action, dataloader_mode);
var params = new Array();
params.push(fieldname);
params.push(sub_object);
params.push(subitem_id);
if(subitem_id){
dpmAPI_showLoadingGif('dFF$'+sub_object+'$'+subitem_id);
}
else{
dpmAPI_showLoadingGif('sub_data_sheet_container$'+sub_object);
}
dpm_doPostRequest(form_name, url, additional_post_params, callback_function,params);
}
function dpmHelper_getRowPosition(row){
var cnt = 0;
var row_list = row.parentNode.childNodes;
for(var i=0; i<row_list.length; i++){
if(row_list[i].tagName.toLowerCase() == 'tr'){
if(row_list[i] == row) return cnt;
cnt++;
}
}
return -1;
}
function dpmHelper_insertRowAtPosition(parent, row, pos){
var cnt = 0;
var row_list = parent.childNodes;
for(var i=0; i<row_list.length; i++){
if(row_list[i].tagName.toLowerCase() == 'tr'){
if(cnt == pos){
row_list[i].parentNode.insertBefore(row, row_list[i]);
}
cnt++;
}
}
row.parentNode.appendChild(row);
}

	

	var formDisabledElements = new Array();

	function disableFormElement(elem){

		if(formDisabledElements[elem]){
			return false;
		}
		else{
			formDisabledElements[elem] = true;
			return true;
		}
	}

	
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_timeoutValue = 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){
		autoCompletion_activeCompletionList[fieldname] = new autoCompletionInstance(fieldname,ac_engine_key,ac_instance_key,ac_engine_identifier_name);
		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){
		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;
		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);
					ac.timeout = window.setTimeout("dpmAPI_handleAutoCompletionFieldInput('"+fieldname+"','"+auto_completion_key+"','"+form_name+"',false,'"+additional_post_params+"')",autoCompletion_timeoutValue);
					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.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();
										};

		data_div.innerHTML = data;


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


		insertIframeAvoidingElementsOverload(data_div,9);

		ac.setHighlightedRow(0);
		ac.setActive(true);

		autoCompletion_highlightRow(fieldname,1);

	}

	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);
		}
	}

	

	

	var disable_page_grayout_element_list = new Array();
	var disable_page_message_map = new Array();

	function showDisablePageOverlay(message_id,correction_top,correction_left){

		var docBody = document.getElementsByTagName("body").item(0);
		docBody.insertBefore(document.getElementById(message_id).parentNode.removeChild(document.getElementById(message_id)),docBody.firstChild);

		if( message_id && document.getElementById(message_id) ){

			if( !window.innerWidth ){
				var width  = parseInt(docBody.offsetWidth)  + parseInt(docBody.scrollLeft);
				var height = parseInt(docBody.offsetHeight) + 2*parseInt(docBody.scrollTop);
			}
			else{
				var width  = parseInt(window.innerWidth)  + parseInt(window.pageXOffset);
				var height = parseInt(window.innerHeight) + 2*parseInt(window.pageYOffset);
			}
			var message_container = document.getElementById(message_id);
			disable_page_message_map[message_id] = message_container;
			message_container.style.display = 'block';

			var container_left 	= parseInt(width)/2 - parseInt(message_container.offsetWidth)/2;
			if( correction_left ) container_left += correction_left;
			var container_top 	= parseInt(height)/2 - parseInt(message_container.offsetHeight)/2;
			if( correction_top ) container_top += correction_top;
			message_container.style.left = container_left+'px';
			message_container.style.top  = container_top+'px';
		}


		var gray_out_div = document.createElement('div');

		var body_height = parseInt(docBody.offsetHeight)+parseInt(docBody.scrollTop);

		gray_out_div.className = 'disable_page_background_div';

		docBody.insertBefore(gray_out_div,docBody.firstChild);
		var gray_out_iframe = document.createElement('iframe');
		gray_out_iframe.className = 'disable_page_background_iframe';
		gray_out_div.appendChild(gray_out_iframe);
		disable_page_grayout_element_list.push(gray_out_div);

	}

	function hideDisablePageOverlay(){

		for(var i in disable_page_message_map){
			disable_page_message_map[i].style.display = 'none';
		}

		var elem = null;
		while( ( elem = disable_page_grayout_element_list.pop() ) ){
			if( elem ){
				elem.parentNode.removeChild(elem);
			}
		}
	}


	

	
	

		var comparator_item_list = new Array();
		var comparator_top_level_item_list = new Array();
		var comparator_diff_column_list = new Array();
		var tool_form_name = 'myForm';





		function comparator_registerDiffColumnList(table_name, id, column_list){
			comparator_diff_column_list[table_name+'$'+id] = column_list;
		}

		function comparator_resultItem(table_name, parent_table_name, id, parent_id, level){
			this.table_name = table_name;
			this.parent_table_name = parent_table_name;
			this.id = id;
			this.parent_id = parent_id;
			this.children = new Array();
			this.level = level;
		}

		function comparator_getResultItem(table_name, id){
			return comparator_item_list[table_name+'$'+id];
		}

		function comparator_registerResultItem(table_name, parent_table_name, id, parent_id, level){
			var item = new comparator_resultItem(table_name, parent_table_name, id, parent_id, level);
			comparator_item_list[table_name+'$'+id] = item;
			if(level == 0){
				comparator_top_level_item_list[table_name+'$'+id] = item;
			}

			if(!comparator_item_list[parent_table_name+'$'+parent_id]){
				comparator_item_list[parent_table_name+'$'+parent_id] = new comparator_resultItem(parent_table_name, parent_table_name, parent_id, parent_id, level-1);
			}
			comparator_item_list[parent_table_name+'$'+parent_id].children.push(item);
		}



		function comparator_getItemSubTableList(table_name, id){
			var table_list = new Array();
			var result_item = comparator_getResultItem(table_name, id);
			if(!result_item) return table_list;
			for(var i in result_item.children){
				var child_item = result_item.children[i];

				table_list[child_item.table_name] = 1;
			}
			return table_list;
		}


		function comparator_handleResultSubTable(table_name, id, class_name){

			var table_list = new Array();
			var result_item = comparator_getResultItem(table_name, id);
			if(!result_item) return;
			for(var i in result_item.children){
				var child_item = result_item.children[i];

				table_list[child_item.table_name] = 1;
				var child_row = document.getElementById('comparator_item_row$'+child_item.table_name+'$'+child_item.id);
				if(child_row){
					child_row.className = class_name;

					var diff_checkbox_value = getValueOfElement('comparator_difference_control$table$'+child_item.table_name+'$item$'+child_item.id, tool_form_name);
					switch(diff_checkbox_value){
						case '0':
							break;
						case '1':
							var counter = 1;
							var item;
							while( (item = document.getElementById('comparator_copy_item_difference$table$'+child_item.table_name+'$item$'+child_item.id+'$'+(counter++))) ){
								item.className = class_name;
							}
							break;
						default:
					}
				}
				if(class_name == 'hidden'){
					comparator_handleResultSubTable(child_item.table_name, child_item.id, class_name);
				}
				else{
					var checkbox_value = getValueOfElement('comparator_tree_control$table$'+child_item.table_name+'$item$'+child_item.id, tool_form_name);
					if(checkbox_value == 1){
						comparator_handleResultSubTable(child_item.table_name, child_item.id, class_name);
					}
				}
			}

			for(var child_table in table_list){
				var table_name_row = document.getElementById('comparator_table_name_row$'+table_name+'$'+id+'$'+child_table);
				if(table_name_row){
					table_name_row.className = class_name;
				}
				var column_name_row = document.getElementById('comparator_column_name_row$'+table_name+'$'+id+'$'+child_table);
				if(column_name_row){
					column_name_row.className = class_name;
				}
			}

		}


		function comparator_handleControlCheckboxClick(table_name, id, checkbox_value){
			if(!checkbox_value){
				var checkbox_value = getValueOfElement('comparator_tree_control$table$'+table_name+'$item$'+id, tool_form_name);
			}

			if(checkbox_value == 1){
				comparator_handleResultSubTable(table_name, id, 'visible');
			}
			else{
				comparator_handleResultSubTable(table_name, id, 'hidden');
			}
		}



		function comparator_handleDifferenceControlCheckboxClick(table_name, id, checkbox_value){
			if(!checkbox_value){
				var checkbox_value = getValueOfElement('comparator_difference_control$table$'+table_name+'$item$'+id, tool_form_name);
			}
			var counter = 1;
			var item;
			while( (item = document.getElementById('comparator_copy_item_difference$table$'+table_name+'$item$'+id+'$'+(counter++))) ){
				if(checkbox_value == 1){
					item.className = 'visible';
				}
				else{
					item.className = 'hidden';
				}
			}
		}

		function comparator_handleCheckboxClick(table_name, id){

			dpmAPI_showLoadingGif('comparator_children_row__'+table_name+'__'+id);
			window.setTimeout("comparator_handleCheckboxClick_delayed('"+table_name+"','"+id+"')",10);
		}


		function comparator_handleCheckboxClick_delayed(table_name, id){


			var checkbox_value = getValueOfElement('comparator_copy_item$table$'+table_name+'$item$'+id, tool_form_name);
			comparator_setCheckboxValue(table_name, id, checkbox_value);


			dpmAPI_hideLoadingGif();
		}


		function comparator_setCheckboxValue(table_name, id, value){
			var fieldname = 'comparator_copy_item$table$'+table_name+'$item$'+id;
			if(threeStateCheckbox_graphicList[fieldname]){
				handleThreeStateCheckboxClick(tool_form_name,fieldname,value);
			}

			var curr_item = comparator_getResultItem(table_name, id);
			if(curr_item && curr_item.children){
				for(var c in curr_item.children){
					if(curr_item.children[c] != curr_item){
						comparator_setCheckboxValue(curr_item.children[c].table_name, curr_item.children[c].id, value);
					}

					var current_item_id = 'comparator_copy_item$table$'+curr_item.children[c].table_name+'$parent$'+id;
					if(threeStateCheckbox_graphicList[current_item_id]){
						handleThreeStateCheckboxClick(tool_form_name, current_item_id, value);
					}
				}
			}

			var diff_item_id = 'comparator_copy_item$table$'+table_name+'$update$'+id+'|__all';
			if(threeStateCheckbox_graphicList[diff_item_id]){
				handleThreeStateCheckboxClick(tool_form_name,diff_item_id,value);
				comparator_handleDifferenceCheckboxClick(table_name, id);
			}

		}

		function comparator_propagateParentState(table_name,parent_table_name,parent_id){

			//if(document.getElementById('comparator_children_row__'+parent_table_name+'__'+parent_id)){

				dpmAPI_showLoadingGif('comparator_control_checkbox__'+table_name+'__'+parent_id);
				window.setTimeout("comparator_propagateParentState_delayed('"+table_name+"','"+parent_table_name+"','"+parent_id+"')",10);
			//}
		}


		function comparator_getChildren(table_name,parent_table_name,parent_id){
			if(parent_table_name == ''){

				return comparator_top_level_item_list;
			}
			else{
				var parent_item = comparator_getResultItem(parent_table_name, parent_id);
				return (parent_item && parent_item.children)? parent_item.children : null;
			}
		}

		function comparator_propagateParentState_delayed(table_name,parent_table_name,parent_id){
			var checkbox_value = getValueOfElement('comparator_copy_item$table$'+table_name+'$parent$'+parent_id,tool_form_name);
			var children = comparator_getChildren(table_name,parent_table_name,parent_id);

			if(children){
				for(var c in children){
					if( children[c].id != children[c].parent_id
					&&  children[c].table_name == table_name ){
						comparator_setCheckboxValue(children[c].table_name, children[c].id, checkbox_value)
					}
				}
			}


			dpmAPI_hideLoadingGif();
		}


		function comparator_handleDifferenceCheckboxClick(table_name, id){

			var column_list = comparator_diff_column_list[table_name+'$'+id];
			var prefix = 'comparator_copy_item$table$'+table_name+'$update$'+id;
			var item_id = 'comparator_copy_item$table$'+table_name+'$update$'+id+'|__all';
			var checkbox_value = getValueOfElement(item_id);
			var col_list = column_list.split(',');
			for(var i in col_list){
				handleThreeStateCheckboxClick(tool_form_name,prefix+'|'+col_list[i],checkbox_value)
			}
		}


		function comparator_expandAll(table_name,parent_table_name,parent_id){
			dpmAPI_showLoadingGif('comparator_expand_all_checkbox__'+table_name+'__'+parent_id);
			comparator_handleAllActions(table_name,parent_table_name,parent_id, 1);
		}

		function comparator_closeAll(table_name,parent_table_name,parent_id){
			dpmAPI_showLoadingGif('comparator_close_all_checkbox__'+table_name+'__'+parent_id);
			comparator_handleAllActions(table_name,parent_table_name,parent_id, 0);
		}

		function comparator_handleAllActions(table_name,parent_table_name,parent_id, action_value){
			window.setTimeout("comparator_handleAllActions_delayed('"+table_name+"','"+parent_table_name+"','"+parent_id+"','"+action_value+"')",10);
		}

		function comparator_handleAllActions_delayed(table_name,parent_table_name,parent_id, action_value){
			var children = comparator_getChildren(table_name,parent_table_name,parent_id);

			if(children){
				for(var c in children){
					if(children[c].id != children[c].parent_id
					&& children[c].table_name == table_name){

						var fieldname = 'comparator_tree_control$table$'+children[c].table_name+'$item$'+children[c].id;
						if(action_value == 0){
							var checkbox_state = false;
						}
						else{
							var checkbox_state = true;
						}

						if(graphicalCheckbox_getCheckboxGraphic(fieldname)){
							setValueOfElement(fieldname, action_value, tool_form_name);
							checkboxCheckItem(checkbox_state,fieldname);
							comparator_handleControlCheckboxClick(children[c].table_name, children[c].id, action_value);
						}

						var diff_fieldname = 'comparator_difference_control$table$'+children[c].table_name+'$item$'+children[c].id;
						if(graphicalCheckbox_getCheckboxGraphic(diff_fieldname)){
							setValueOfElement(diff_fieldname, action_value, tool_form_name);
							checkboxCheckItem(checkbox_state,diff_fieldname);
							comparator_handleDifferenceControlCheckboxClick(children[c].table_name, children[c].id, action_value);
						}

						var sub_table_list = comparator_getItemSubTableList(children[c].table_name, children[c].id)
						for(var t in sub_table_list){
							comparator_handleAllActions(t,children[c].table_name,children[c].id, action_value);
						}
					}
				}
			}
			dpmAPI_hideLoadingGif();
		}




	


	var IP_blockElement = {

		blockElementList : new Array(),
		timeoutList : new Array(),
		defaultHideDelay : 600,


		getBlockElementItem : function(id){
			if( !IP_blockElement.blockElementList[id] ){
				IP_blockElement.blockElementList[id] = new IP_blockElement.blockElementItem(id);
			}
			return IP_blockElement.blockElementList[id];
		},

		registerFocusState : function(id,state,hide_delay){
			var item = IP_blockElement.getBlockElementItem(id);
			if( !item ) return;
			if( hide_delay ) item.hide_delay = hide_delay;
			item.focus_state = state;
			item.handleBlockStateChange();
		},

		registerMouseoverState : function(id,state,hide_delay){
			var item = IP_blockElement.getBlockElementItem(id);
			if( !item ) return;
			if( hide_delay ) item.hide_delay = hide_delay;
			item.mouseover_state = state;
			item.handleBlockStateChange();
		},

		hideBlockDelayed : function(id){
			var item = IP_blockElement.getBlockElementItem(id);
			if( item && !item.isActive() && item.block_element ){
				item.block_element.style.visibility = 'hidden';
				item.visible_state = false;
			}
		},


		blockElementItem : function(id){
			this.id = id;
			this.focus_state = false;
			this.mouseover_state = false;
			this.visible_state = false;
			this.hide_delay = IP_blockElement.defaultHideDelay;
			this.block_element = document.getElementById(id);
		}
	}



	IP_blockElement.blockElementItem.prototype.isActive = function(){
		return this.focus_state || this.mouseover_state;
	}

	IP_blockElement.blockElementItem.prototype.isVisible = function(){
		return this.visible_state;
	}

	IP_blockElement.blockElementItem.prototype.hideBlock = function(){
		if( !this.isActive() ){
			var js_code = 'IP_blockElement.hideBlockDelayed(\''+this.id+'\')'
			if( IP_blockElement.timeoutList[this.id] ){ try{ IP_blockElement.timeoutList[this.id].clearTimeout(); }catch(e){} }
			IP_blockElement.timeoutList[this.id] = window.setTimeout(js_code,this.hide_delay);
		}
	}

	IP_blockElement.blockElementItem.prototype.showBlock = function(){
		if( this.block_element ){
			if( IP_blockElement.timeoutList[this.id] ){ try{ IP_blockElement.timeoutList[this.id].clearTimeout(); }catch(e){} }
			this.block_element.style.visibility = 'visible';
			this.visible_state = true;
		}
	}

	IP_blockElement.blockElementItem.prototype.handleBlockStateChange = function(){
		if( this.isActive() && !this.isVisible() ){
			this.showBlock();
		}
		else if( !this.isActive() && this.isVisible() ){
			this.hideBlock();
		}
	}


	

	

function reloadNavigation() {
	window.onerror=null;
	if (parent && parent.frame_navigation)
		parent.frame_navigation.location.reload();
	return false;
}
	

	

	function fireForm(f)
	{
		f.form.submit();
	}

	function fireApplet(f, applet_frame, applet_template)
	{
		top.frames[applet_frame].document.applets[0].resetTree(applet_template+f.options[f.selectedIndex].value);
	}
	
var hide_delay = 200;
var active_page_element = null;
function showPageElementVisibility(field_id){
try{
window.clearTimeout(hidePageElementVisibility_delayname);
}catch(e){}
if(active_page_element != null && active_page_element != field_id){
hidePageElementVisibility(active_page_element);
}
document.getElementById(field_id).style.display = 'block';
active_page_element = field_id;
}
function hidePageElementVisibility(field_id){
document.getElementById(field_id).style.display = 'none';
}
function hidePageElementVisibility_delayed(field_id){
hidePageElementVisibility_delayname = window.setTimeout("hidePageElementVisibility('"+field_id+"')",hide_delay);
}

	


	var IP_dragAndDrop = {

		dragAndDropList : new Array(),
		dragAndDropActiveElement : null,
		dragAndDropInitialized : false,

		dragAndDropIDRegistry : 0,
		dragAndDropInitializedIframeList : new Array(),


		getDragAndDropItem : function(id){
			if( !IP_dragAndDrop.dragAndDropList[id] ){
				IP_dragAndDrop.dragAndDropList[id] = new IP_dragAndDrop.dragAndDropItem(id);
			}
			return IP_dragAndDrop.dragAndDropList[id];
		},

		initDragAndDrop : function(){
			if( IP_dragAndDrop.dragAndDropInitialized ) return;
			if( !IP_mouseEvent.mouseEventInitialized ) IP_mouseEvent.initMouseEvent();
			IP_dragAndDrop.dragAndDropInitialized = true;
		},

		createDragAndDropItem : function(controller_id,container_id,id,parent_id){
			if( !id ){
				id = 'IP_dragAndDropItem_'+(IP_dragAndDrop.dragAndDropIDRegistry++);
			}
			if( parent_id ){
				var parent_formatted = '\''+parent_id+'\'';
			}
			else{
				var parent_formatted = 'null';
			}
			onloadAddRegisterFunction('IP_dragAndDrop.addDragAndDropItem(\''+id+'\',\''+controller_id+'\',\''+container_id+'\','+parent_formatted+')');
		},

		addDragAndDropItem : function(id,controller_id,container_id,parent_id){
			var item = new IP_dragAndDrop.dragAndDropItem(id,controller_id,controller_id,parent_id);
			IP_dragAndDrop.dragAndDropList[id] = item;
			item.initItem()
		},

		handleMouseup : function(e){
			for( var i in IP_dragAndDrop.dragAndDropList ){
				var item = IP_dragAndDrop.getDragAndDropItem(i);
				item.handleMouseup(e);
			}
		},

		handleMousemove : function(e){
			if( IP_dragAndDrop.dragAndDropActiveElement ){
				IP_dragAndDrop.dragAndDropActiveElement.handleMousemove(e);
			}
		},



		dragAndDropItem : function(id,controller_id,container_id,parent_id){


			if( IP_dragAndDrop.dragAndDropList[id] ){
				developerAlert('Drag&Drop Object with ID "'+id+'" already exists!');
				this.is_valid = false;
				return;
			}

			this.id = id;
			this.controller = document.getElementById(controller_id);
			this.container = document.getElementById(container_id);
			this.drag_active = false;
			this.is_valid = true;

			this.container_init_x = 0;
			this.container_init_y = 0;
			this.mouse_init_x = 0;
			this.mouse_init_y = 0;
			this.rel_x = 0;
			this.rel_y = 0;

			this.move_interval_delay = 10;
			this.move_interval_obj = null;

			var item = this;

			if( !this.controller ){
				developerAlert('Drag&Drop Controler Object with ID "'+this.controller_id+'" is not valid!');
				this.is_valid = false;
			}
			else{
				this.controller.onselectstart = function(e){return false};
				this.controller.onmousedown = function(e){stopEventBubbling(e);cancelEvent(e);item.handleMousedown(e);};
				this.controller.style.cursor = 'move';
			}
			if( !this.container ){
				developerAlert('Drag&Drop Container Object with ID "'+this.container_id+'" is not valid!');
				this.is_valid = false;
			}
			else{
				this.container.style.position = 'absolute';
			}

			if( parent_id ){
				this.parent = document.getElementById(parent_id);
			}
			else{
				this.parent = document.body;
			}
			if( this.container.parentNode != this.parent ){
				this.parent.appendChild(this.container.parentNode.removeChild(this.container));
			}

		}
	}



	IP_dragAndDrop.dragAndDropItem.prototype.initItem = function(){
		if( !this.is_valid ) return;
		if( !IP_dragAndDrop.dragAndDropInitialized ){
			IP_dragAndDrop.initDragAndDrop();
			registerBrowserEvent(document,'mouseup',function(e){IP_dragAndDrop.handleMouseup(e);});
		}
		var item = this;
	}

	IP_dragAndDrop.dragAndDropItem.prototype.handleMousedown = function(e){
		var item = this;
		IP_dragAndDrop.dragAndDropActiveElement = this;
		this.drag_active = true;
		this.container_init_x = this.container.offsetLeft;
		this.container_init_y = this.container.offsetTop;
		this.mouse_init_x = IP_mouseEvent.mouse_x;
		this.mouse_init_y = IP_mouseEvent.mouse_y;
		this.rel_x = parseInt(this.container_init_x)-parseInt(this.mouse_init_x);
		this.rel_y = parseInt(this.container_init_y)-parseInt(this.mouse_init_y);

		this.move_interval_obj = window.setInterval(function(){item.handleMousemove(e);},this.move_interval_delay);

	}

	IP_dragAndDrop.dragAndDropItem.prototype.handleMouseup = function(e){
		IP_dragAndDrop.dragAndDropActiveElement = null;
		this.drag_active = false;
		if( this.move_interval_obj ) window.clearInterval( this.move_interval_obj );
	}

	IP_dragAndDrop.dragAndDropItem.prototype.handleMousemove = function(e){

		if( !this.drag_active ){
			this.handleMouseup(e);
			return;
		}
		var x = parseInt(IP_mouseEvent.mouse_x)+parseInt(this.rel_x);
		this.container.style.left = (parseInt(IP_mouseEvent.mouse_x)+parseInt(this.rel_x))+'px';
		this.container.style.top = (parseInt(IP_mouseEvent.mouse_y)+parseInt(this.rel_y))+'px';
	}

	

	

	var IP_mouseEvent = {

		mouseEventInitialized : false,
		mouse_x : 0,
		mouse_y : 0,
		mouse_target : null,


		initMouseEvent : function(){
			if( IP_mouseEvent.mouseEventInitialized ) return;
			registerBrowserEvent(document,'mousemove',IP_mouseEvent.handleMousemove);
			IP_mouseEvent.mouseEventInitialized = true;
		},

		handleMousemove : function(e){
			if (IE)
			{
				IP_mouseEvent.mouse_x = window.event.clientX + document.body.scrollLeft;
				IP_mouseEvent.mouse_y = window.event.clientY + document.body.scrollTop;
				IP_mouseEvent.mouse_target = window.event.srcElement;
			}
			else{
				IP_mouseEvent.mouse_x = e.pageX;
				IP_mouseEvent.mouse_y = e.pageY;
				IP_mouseEvent.mouse_target = e.target;
			}
		}


	}




	
